From 43a8037b60150b65651c03fd654621d37075d051 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 16 四月 2025 18:00:26 +0800
Subject: [PATCH] Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop
---
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 434 ++++++++++++++++++++++++++++++++----------------------
1 files changed, 258 insertions(+), 176 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
index 6df867e..198b8f1 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -1,21 +1,28 @@
package com.vincent.rsf.server.api.service.impl;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.api.controller.params.*;
import com.vincent.rsf.server.api.entity.dto.*;
+import com.vincent.rsf.server.api.entity.enums.OrderType;
import com.vincent.rsf.server.api.entity.enums.OrderWorkType;
import com.vincent.rsf.server.api.service.MobileService;
import com.vincent.rsf.server.common.config.ConfigProperties;
import com.vincent.rsf.server.common.enums.WarehouseAreaType;
import com.vincent.rsf.server.common.security.JwtSubject;
import com.vincent.rsf.server.common.utils.CommonUtil;
+import com.vincent.rsf.server.common.utils.FieldsUtils;
import com.vincent.rsf.server.common.utils.JwtUtil;
import com.vincent.rsf.server.manager.controller.params.IsptItemsParams;
import com.vincent.rsf.server.manager.controller.params.WaitPakinParam;
import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.enums.AsnExceStatus;
+import com.vincent.rsf.server.manager.enums.PakinIOStatus;
+import com.vincent.rsf.server.manager.enums.QlyIsptStatus;
import com.vincent.rsf.server.manager.mapper.*;
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.system.constant.CodeRes;
@@ -25,23 +32,19 @@
import com.vincent.rsf.server.system.entity.*;
import com.vincent.rsf.server.system.mapper.FieldsMapper;
import com.vincent.rsf.server.system.mapper.TenantMapper;
-import com.vincent.rsf.server.system.mapper.UserMapper;
import com.vincent.rsf.server.system.service.FieldsItemService;
-import com.vincent.rsf.server.system.service.FieldsService;
import com.vincent.rsf.server.system.service.UserLoginService;
+import com.vincent.rsf.server.system.service.UserService;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
-import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -62,7 +65,7 @@
@Autowired
private TenantMapper tenantService;
@Autowired
- private UserMapper userService;
+ private UserService userService;
@Autowired
private UserLoginService userLoginService;
@Autowired
@@ -81,6 +84,8 @@
private QlyIsptItemService qlyIsptItemService;
@Resource
private StockItemMapper stockItemMapper;
+ @Autowired
+ private LocItemService locItemService;
@Resource
private PurchaseItemMapper purchaseItemMapper;
@Resource
@@ -143,7 +148,7 @@
if (user.getStatus() != 1) {
return R.parse(CodeRes.USER_10002);
}
- if (!user.getPassword().equals(param.getPassword())) {
+ if (!userService.comparePassword(user.getPassword(), param.getPassword())) {
return R.parse(CodeRes.USER_10003);
}
@@ -183,28 +188,32 @@
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public R receiptToWarehouse(ReceiptParams params) {
- if (params.getReceipts().isEmpty()) {
+ public R receiptToWarehouse(Map<String, Object> params) {
+ if (Objects.isNull(params)) {
+ throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ ReceiptParams receiptParam = JSONObject.parseObject(JSONObject.toJSONString(params), ReceiptParams.class);
+ if (receiptParam.getReceipts().isEmpty()) {
throw new CoolException("鏀惰揣鏄庣粏涓嶈兘涓虹┖锛侊紒");
}
- if (Objects.isNull(params.getWhAreaId())) {
+ if (Objects.isNull(receiptParam.getWhAreaId())) {
throw new CoolException("搴撳尯鏍囪瘑涓嶈兘涓虹┖锛侊紒");
}
WarehouseAreas areasItem = warehouseAreasService.getOne(new LambdaQueryWrapper<WarehouseAreas>()
- .eq(WarehouseAreas::getId, params.getWhAreaId()));
+ .eq(WarehouseAreas::getId, receiptParam.getWhAreaId()));
if (Objects.isNull(areasItem)) {
throw new CoolException("鏁版嵁閿欒锛氬綋鍓嶅簱鍖轰笉瀛樺湪锛侊紒");
}
- //鑾峰彇宸插惎鐢ㄧ殑鍔ㄦ�佹墿灞曞瓧
- List<Fields> fields = fieldsMapper.selectList(new LambdaQueryWrapper<Fields>()
- .eq(Fields::getFlagEnable, 1)
- .eq(Fields::getStatus, 1));
- List<ReceiptDetlsDto> receipts = params.getReceipts();
+ List<ReceiptDetlsDto> receipts = receiptParam.getReceipts();
List<WarehouseAreasItem> allOrders = new ArrayList<>();
- double receiptQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getReceiptQty).sum();
+ Double receiptQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getReceiptQty).sum();
+
+ if (Objects.isNull(receiptQty) || receiptQty.compareTo(0.00) <= 0) {
+ throw new CoolException("鏀惰揣鏁伴噺涓嶈兘灏忎簬鎴栫瓑浜庨浂锛侊紒");
+ }
String asnCode = receipts.stream().findFirst().get().getAsnCode();
@@ -213,13 +222,17 @@
if (Objects.isNull(asnOrder)) {
throw new CoolException("鏁版嵁閿欒锛氫富鍗曚笉瀛樺湪锛侊紒");
}
- asnOrder.setQty(receiptQty);
+ //TODO /**鏀惰揣鏁伴噺绱姞锛�1. 浼氬嚭瓒呮敹鎯呭喌 2. 浼氭湁鏀惰揣涓嶈冻鎯呭喌*/
+ Double rcptedQty = asnOrder.getQty() + receiptQty;
+ asnOrder.setQty(rcptedQty).setExceStatus(Short.parseShort(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val));
if (!asnOrderMapper.updateById(asnOrder)) {
throw new CoolException("宸叉敹璐ф暟閲忎慨鏀瑰け璐ワ紒锛�");
}
-
- receipts.forEach(dto -> {
+ List<Map<String, Object>> receipts1 = (List<Map<String, Object>>) params.get("receipts");
+ for (Map<String, Object> rcpt : receipts1) {
+ if (Objects.isNull(rcpt)) {continue;}
+ ReceiptDetlsDto dto = JSONObject.parseObject(JSONObject.toJSONString(rcpt), ReceiptDetlsDto.class);
Matnr matnr = matnrMapper.selectById(dto.getMatnrId());
if (Objects.isNull(matnr)) {
throw new CoolException("鏁版嵁閿欒锛氬綋鍓嶇墿鏂欎笉瀛樺湪锛侊紒");
@@ -227,10 +240,9 @@
if (Objects.isNull(dto.getReceiptQty())) {
throw new CoolException("鏀惰揣鏁版嵁涓嶈兘涓虹┖锛侊紒");
}
- if (dto.getReceiptQty().compareTo(dto.getAnfme()) > 0) {
- throw new CoolException("鏀惰揣鏁伴噺涓嶈兘澶т簬閲囪喘鏁伴噺锛侊紒");
- }
-
+// if (dto.getReceiptQty().compareTo(dto.getAnfme()) > 0) {
+// throw new CoolException("鏀惰揣鏁伴噺涓嶈兘澶т簬閲囪喘鏁伴噺锛侊紒");
+// }
AsnOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>()
.eq(AsnOrderItem::getAsnCode, asnCode)
.eq(AsnOrderItem::getMatnrId, dto.getMatnrId()));
@@ -238,10 +250,28 @@
throw new CoolException("閫氱煡鍗曟槑缁嗕笉瀛樺湪锛侊紒");
}
if (Objects.isNull(dto.getReceiptQty()) || Double.compare(dto.getReceiptQty(), 0.0) == 0) {
- throw new CoolException("鏀惰揣鏁伴噺涓嶈兘涓洪浂锛侊紒");
+ throw new CoolException("鐗╂枡:" + dto.getMaktx() + "鏀惰揣鏁伴噺涓嶈兘涓洪浂锛侊紒");
}
- orderItem.setQty(dto.getReceiptQty())
+ Double itemRcptQty = dto.getReceiptQty() + orderItem.getQty();
+ orderItem.setQty(itemRcptQty)
+ .setSplrBatch(dto.getSplrBatch())
+ .setStockUnit(dto.getStockUnit())
.setProdTime(dto.getProdTime());
+
+ if (!Objects.isNull(rcpt)) {
+ try {
+ if (Objects.isNull(rcpt.get("fieldsindex")) || StringUtils.isBlank(rcpt.get("fieldsindex").toString())) {
+ //鑾峰彇16浣島uid
+ String uuid16 = CommonUtil.randomUUID16();
+ rcpt.put("index", uuid16);
+ orderItem.setFieldsIndex(uuid16);
+ }
+ //淇濆瓨鎴栨洿鏂版墿灞曞瓧娈�
+ FieldsUtils.updateFieldsValue(rcpt);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
if (asnOrderItemMapper.updateById(orderItem) < 1) {
throw new CoolException("閫氱煡鍗曟槑缁嗘暟閲忎慨鏀瑰け璐ワ紒锛�");
@@ -253,112 +283,47 @@
// if (Objects.isNull(dto.getProdTime())) {
// format = dateFormat.format(dto.getProdTime());
// }
- item.setBarcode(dto.getBarcode())
+ item.setTrackCode(dto.getBarcode())
.setAreaName(areasItem.getName())
.setAreaId(areasItem.getId())
+ .setAsnItemId(orderItem.getId())
+ .setAsnCode(asnOrder.getCode())
+ .setAsnId(asnOrder.getId())
.setProdTime(dto.getProdTime())
.setWeight(dto.getWeigth())
.setStockUnit(dto.getStockUnit())
.setBatch(SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_RECEIPT_BATCH, dto))
.setAnfme(dto.getReceiptQty())
- .setSplrBtch(dto.getSplrBatch())
+ .setSplrBatch(dto.getSplrBatch())
.setMatnrCode(matnr.getCode())
.setMatnrId(matnr.getId())
- .setMatnrName(matnr.getName())
+ .setMaktx(matnr.getName())
//搴撳瓨鍗曚綅涓烘渶灏忓崟浣�
.setUnit(dto.getStockUnit())
.setStockUnit(dto.getStockUnit())
.setWeight(matnr.getWeight())
+ .setFieldsIndex(orderItem.getFieldsIndex())
.setShipperId(matnr.getShipperId());
- //TODO 渚涘簲鍟嗘爣璇嗘湭璁剧疆锛屾爣璇嗙敱PO鍗曚緵搴斿晢缂栫爜杞崲
+ //TODO 渚涘簲鍟嗘爣璇嗘湭璁剧疆锛屾爣璇嗙敱PO鍗曚緵搴斿晢缂栫爜杞崲
- if (!Objects.isNull(fields)) {
- if (!Objects.isNull(dto.getExtendFields())) {
- //鑾峰彇16浣島uid
- String uuid16 = CommonUtil.randomUUID16();
- Map<String, Object> extendFields = dto.getExtendFields();
- //瀛楁闆嗗悎鐢虫槑
- List<FieldsItem> fieldsItems = new ArrayList<>();
- extendFields.keySet().forEach(key -> {
- fields.forEach(obj -> {
- //鍒ゆ柇key鍊间笌fields琛ㄥ瓧娈垫槸鍚︾浉鍚�
- if (obj.getFields().equals(key)) {
- FieldsItem fieldsItem = new FieldsItem();
- fieldsItem.setMatnrId(matnr.getId()).setFieldsId(obj.getId())
- .setShiperId(matnr.getShipperId())
- .setValue(extendFields.get(key).toString())
- .setUuid(uuid16);
- fieldsItems.add(fieldsItem);
- //鍞竴鏍囪瘑鍏ュ簱
- item.setFieldsIndex(uuid16);
- }
- });
- });
- if (!fieldsItemService.saveBatch(fieldsItems)) {
- throw new CoolException("鎵╁睍瀛楁淇濆瓨澶辫触锛侊紒");
- }
- }
- }
allOrders.add(item);
- });
+ }
if (!warehouseAreasItemService.saveBatch(allOrders)) {
throw new CoolException("鏀惰揣澶辫触锛侊紒");
}
-
- //鑾峰彇閲囪喘鏁伴噺
- double purQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getPurQty).sum();
-
- BigDecimal subtract = BigDecimal.valueOf(receiptQty).subtract(BigDecimal.valueOf(purQty));
- //鍒ゆ柇宸叉敹璐ф暟閲忔槸鍚﹀皬浜庣瓑浜庨噰璐暟閲�
- if (subtract.compareTo(new BigDecimal("0.0")) <= 0) {
- asnOrder.setRleStatus(Short.valueOf("1"));
- //鏃ュ織琛ㄦ搷浣�
- operateOrderLogs(asnOrder);
- }
-
- return R.ok("鎿嶄綔鎴愬姛");
+// //鑾峰彇閲囪喘鏁伴噺
+// double purQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getPurQty).sum();
+//
+// BigDecimal subtract = BigDecimal.valueOf(receiptQty).subtract(BigDecimal.valueOf(purQty));
+// //鍒ゆ柇宸叉敹璐ф暟閲忔槸鍚﹀皬浜庣瓑浜庨噰璐暟閲�
+// if (subtract.compareTo(new BigDecimal("0.0")) <= 0) {
+// asnOrder.setRleStatus(Short.valueOf("1"));
+// //鏃ュ織琛ㄦ搷浣�
+// operateOrderLogs(asnOrder);
+// }
+ return R.ok(asnOrder);
}
-
- /**
- * @author Ryan
- * @description 鍒犻櫎鍘熶富鍗曞強鏄庣粏锛屽姞鍏ュ巻鍙叉。
- * @param
- * @return
- * @time 2025/3/19 19:53
- */
- private void operateOrderLogs(AsnOrder asnOrder) {
- if (!asnOrderMapper.removeById(asnOrder.getId())) {
- throw new CoolException("鍘熷崟鎹垹闄ゅけ璐ワ紒锛�");
- }
-
- AsnOrderLog orderLog = new AsnOrderLog();
- BeanUtils.copyProperties(asnOrder, orderLog);
- orderLog.setAsnId(asnOrder.getId());
-
- if (!asnOrderLogService.save(orderLog)) {
- throw new CoolException("涓诲崟鍘嗗彶妗f坊鍔犲け璐ワ紒锛�");
- }
-
- List<AsnOrderItemLog> logs = new ArrayList<>();
- List<AsnOrderItem> items = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, asnOrder.getId()));
- items.forEach(item -> {
- AsnOrderItemLog itemLog = new AsnOrderItemLog();
- BeanUtils.copyProperties(item, itemLog);
- itemLog.setAsnItemId(itemLog.getId())
- .setAsnId(item.getAsnId());
- logs.add(itemLog);
- });
-
- if (!asnOrderItemLogService.saveBatch(logs)) {
- throw new CoolException("閫氱煡鍗曟槑缁嗗巻鍙叉。淇濆瓨澶辫触锛侊紒");
- }
-
- if (asnOrderItemMapper.delete(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, asnOrder.getId())) < 1) {
- throw new CoolException("鍘熷崟鎹槑缁嗗垹闄ゅけ璐ワ紒锛�");
- }
- }
-
/**
* @author Ryan
@@ -403,7 +368,8 @@
*/
@Override
public R getReceiptAreas() {
- return R.ok(warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getType, WarehouseAreaType.WAREHOUSE_AREA_RECEIPT.type)));
+ List<WarehouseAreas> areas = warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getType, WarehouseAreaType.WAREHOUSE_AREA_RECEIPT.type));
+ return R.ok(areas);
}
/**
@@ -418,23 +384,42 @@
return fieldsMapper.selectList(new LambdaQueryWrapper<Fields>().eq(Fields::getFlagEnable, 1).eq(Fields::getStatus, 1));
}
+ /**
+ * @author Ryan
+ * @description 鑾峰彇缁勭洏鏄庣粏
+ * @param
+ * @return
+ * @time 2025/4/7 16:58
+ */
@Override
public R getDeltByCode(String code) {
- return R.ok(asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getTrackCode, code)));
+ //TODO 鍚庣画闇�鏍规嵁绛栫暐閰嶇疆锛岃幏鍙栫粍鎷栨暟鎹�傚锛氭贩瑁咃紝鎸夋壒娆℃贩瑁呯瓑
+ LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new QueryWrapper<WarehouseAreasItem>()
+ .select("SUM(anfme) as anfme, track_code, asn_code, id, splr_batch, ispt_result, plat_item_id, batch, qty, work_qty, matnr_code, matnr_id, maktx").lambda()
+ .eq(WarehouseAreasItem::getTrackCode, code)
+ .groupBy(WarehouseAreasItem::getSplrBatch, WarehouseAreasItem::getAsnId, WarehouseAreasItem::getAreaId, WarehouseAreasItem::getMatnrId);
+ return R.ok(warehouseAreasItemService.getOne(queryWrapper));
+ }
+
+ /**
+ * @param
+ * @param userId
+ * @return
+ * @author Ryan
+ * @description PDA缁勬嫋
+ * @time 2025/3/29 14:26
+ */
+ @Override
+ public WaitPakin mergeItems(WaitPakinParam waitPakin, Long userId) {
+ return waitPakinService.mergeItems(waitPakin, userId);
}
/**
* @author Ryan
- * @description PDA缁勬嫋
- * @param
+ * @description 瑙g粦
+ * @param param
* @return
- * @time 2025/3/29 14:26
*/
- @Override
- public WaitPakin mergeItems(WaitPakinParam waitPakin) {
- return waitPakinService.mergeItems(waitPakin);
- }
-
@Override
public WaitPakin unBind(WaitPakinParam param) {
return waitPakinService.unBind(param);
@@ -516,36 +501,39 @@
if (Objects.isNull(params.getIsptCode())) {
throw new CoolException("璐ㄦ鍗曚笉鑳戒负绌�");
}
- if (Objects.isNull(params.getMatnrCode())) {
- throw new CoolException("鐗╂枡缂栫爜涓嶈兘涓虹┖锛�");
- }
- QlyInspect inspect = qlyInspectMapper.selectOne(new LambdaQueryWrapper<QlyInspect>().eq(QlyInspect::getCode, params.getIsptCode()));
+ List<Short> asList = Arrays.asList(QlyIsptStatus.QLY_ISPT_STAS_DONE.val, QlyIsptStatus.QLY_ISPT_STAS_CLOSE.val);
+ QlyInspect inspect = qlyInspectMapper.selectOne(new LambdaQueryWrapper<QlyInspect>()
+ .notIn(QlyInspect::getIsptStatus, asList)
+ .eq(QlyInspect::getCode, params.getIsptCode()));
if (Objects.isNull(inspect)) {
throw new CoolException("璐ㄦ鍗曟嵁涓嶅瓨鍦紒!");
}
- QlyIsptItem isptItem = qlyIsptItemService.getOne(new LambdaQueryWrapper<QlyIsptItem>()
- .eq(QlyIsptItem::getMatnrCode, params.getMatnrCode())
+ List<QlyIsptItem> isptItems = qlyIsptItemService.list(new LambdaQueryWrapper<QlyIsptItem>()
+ .eq(StringUtils.isNotBlank(params.getMatnrCode()), QlyIsptItem::getMatnrCode, StringUtils.isNotBlank(params.getMatnrCode()) ? params.getMatnrCode() : null)
.eq(QlyIsptItem::getIspectId, inspect.getId()));
- if (Objects.isNull(isptItem)) {
+ if (Objects.isNull(isptItems)) {
throw new CoolException("璐ㄦ鍗曟槑缁嗕笉瀛樺湪锛侊紒");
}
-
- CheckObjDto objDto = new CheckObjDto();
- objDto.setIsptCode(inspect.getCode())
- .setAsnCode(inspect.getAsnCode())
- .setId(isptItem.getId())
- .setMatnrCode(isptItem.getMatnrCode())
- .setMaktx(isptItem.getMaktx())
- .setDisQty(isptItem.getDisQty())
- .setDlyQty(isptItem.getDlyQty())
- .setRcptQty(isptItem.getRcptQty())
- .setIsptResult(isptItem.getIsptResult())
- .setSplrBatch(isptItem.getSplrBatch())
- .setSplrName(isptItem.getSplrName())
- .setPicPath(isptItem.getPicPath())
- .setMemo(isptItem.getMemo())
- .setSafeQty(isptItem.getSafeQty());
- return R.ok(objDto);
+ List<CheckObjDto> dtos = new ArrayList<>();
+ isptItems.forEach(isptItem -> {
+ CheckObjDto objDto = new CheckObjDto();
+ objDto.setIsptCode(inspect.getCode())
+ .setAsnCode(inspect.getAsnCode())
+ .setId(isptItem.getId())
+ .setMatnrCode(isptItem.getMatnrCode())
+ .setMaktx(isptItem.getMaktx())
+ .setDisQty(isptItem.getDisQty())
+ .setDlyQty(isptItem.getDlyQty())
+ .setRcptQty(isptItem.getRcptQty())
+ .setIsptResult(isptItem.getIsptResult())
+ .setSplrBatch(isptItem.getSplrBatch())
+ .setSplrName(isptItem.getSplrName())
+ .setPicPath(isptItem.getPicPath())
+ .setMemo(isptItem.getMemo())
+ .setSafeQty(isptItem.getSafeQty());
+ dtos.add(objDto);
+ });
+ return R.ok(dtos);
}
/**
@@ -554,14 +542,12 @@
* @return
*/
@Override
- public R checkUpdate(QlyIsptItem params) {
- if (Objects.isNull(params.getId())) {
+ public R checkUpdate(List<QlyIsptItem> params) {
+ if (Objects.isNull(params) || params.isEmpty()) {
throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
IsptItemsParams itemsParams = new IsptItemsParams();
- List<QlyIsptItem> items = new ArrayList<>();
- items.add(params);
- itemsParams.setIsptItem(items).setType("0");
+ itemsParams.setIsptItem(params).setType("0");
if (qlyIsptItemService.batchUpdate(itemsParams)) {
return R.ok();
} else {
@@ -599,28 +585,27 @@
if (!waitPakins.isEmpty()) {
throw new CoolException("鎷栫洏宸蹭娇鐢�!!");
}
- List<AsnOrderItem> orderItems = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>()
+ AsnOrderItem orderItems = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>()
.eq(AsnOrderItem::getAsnId, asnOrders.getId())
.eq(AsnOrderItem::getMatnrCode, params.getMatnrCode()));
- if (orderItems.isEmpty()) {
- throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�");
+ if (Objects.isNull(orderItems)) {
+ return R.ok(null);
}
- List<AsnOrderItem> stocks = new ArrayList<>();
- orderItems.forEach(item -> {
- item.setBarcode(params.getBarcode());
- stocks.add(item);
- });
- return R.ok(stocks);
+ orderItems.setBarcode(params.getBarcode());
+
+ return R.ok(orderItems);
}
/**
* 浜哄伐涓婃灦鍏ュ簱
+ *
* @param params
+ * @param loginUserId
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public R publicToStock(PublicToStockParams params) {
+ public R publicToStock(PublicToStockParams params, Long loginUserId) {
if (Objects.isNull(params.getLocCode()) || StringUtils.isBlank(params.getLocCode())) {
throw new CoolException("搴撲綅涓嶈兘涓虹┖锛侊紒");
}
@@ -628,34 +613,63 @@
throw new CoolException("鍗曟嵁鏄庣粏涓嶈兘涓虹┖锛侊紒");
}
Long OrderId = params.getItemList().stream().findFirst().get().getAsnId();
- AsnOrder order = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getId, OrderId));
+ /**鑾峰彇骞冲簱璁㈠崟*/
+ AsnOrder order = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>()
+ .eq(AsnOrder::getId, OrderId)
+ .eq(AsnOrder::getType, OrderType.ORDER_PLAT_IN.type));
if (Objects.isNull(order)) {
throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
}
Stock stock = new Stock();
- stock.setAsnId(OrderId).setAsnCode(order.getCode());
- if (!Objects.isNull(order.getPoCode()) && StringUtils.isNotBlank(order.getPoCode())) {
- Purchase purchase = purchaseService.getOne(new LambdaQueryWrapper<Purchase>().eq(Purchase::getCode, order.getPoCode()));
- stock.setPlatOrderNo(purchase.getPlatCode()).setPlatToken(purchase.getPlatId());
- }
+// if (!Objects.isNull(order.getPoCode()) && StringUtils.isNotBlank(order.getPoCode())) {
+// Purchase purchase = purchaseService.getOne(new LambdaQueryWrapper<Purchase>().eq(Purchase::getCode, order.getPoCode()));
+// if (!Objects.isNull(purchase)) {
+// stock.setPlatOrderNo(purchase.getPlatCode()).setPlatToken(purchase.getPlatId());
+// }
+// }
String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_STOCK_CODE, null);
if (StringUtils.isBlank(ruleCode)) {
throw new CoolException("褰撳墠涓氬姟锛�" + SerialRuleCode.SYS_STOCK_CODE + "锛岀紪鐮佽鍒欎笉瀛樺湪锛侊紒");
}
+ List<AsnOrderItem> itemList = params.getItemList();
+ double sum = itemList.stream().mapToDouble(AsnOrderItem::getAnfme).sum();
+ stock.setAnfme(sum)
+ .setSourceId(order.getId())
+ .setType(order.getType())
+ .setWkType(Short.parseShort(order.getWkType()));
if (!stockService.save(stock)) {
throw new CoolException("搴撳瓨淇濆瓨澶辫触锛侊紒");
}
- Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getBarcode, params.getLocCode()));
+ //TODO 骞冲簱涓婃灦绛栫暐闂锛� 1 骞冲簱搴撲綅鏄崟鐙璁★紝杩樻槸涓庝骇搴撲竴璧风敤绫诲瀷鍖哄垎
+ Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, params.getLocCode()));
if (Objects.isNull(loc)) {
throw new CoolException("搴撲綅涓嶅瓨鍦紒锛�");
}
+ //locItemSerivce
+ List<LocItem> locItems = new ArrayList<>();
+ itemList.forEach(asnOrderItem -> {
+ LocItem item = new LocItem();
+ BeanUtils.copyProperties(asnOrderItem, item);
+ item.setId(loc.getId())
+ .setOrderId(order.getId())
+ .setOrderItemId(asnOrderItem.getId())
+ .setWkType(Short.parseShort(order.getWkType()))
+ .setType(order.getType());
+ locItems.add(item);
+ });
+ if (!locItemService.saveBatch(locItems)) {
+ throw new CoolException("搴撲綅鏄庣粏鏇存柊澶辫触锛侊紒");
+ }
+
List<StockItem> stockItems = new ArrayList<>();
- params.getItemList().forEach(orderItem -> {
+ itemList.forEach(orderItem -> {
StockItem stockItem = new StockItem();
BeanUtils.copyProperties(orderItem, stockItem);
- stockItem.setAsnItemId(orderItem.getId())
+ stockItem.setSourceItemId(orderItem.getId())
.setBarcode(orderItem.getBarcode())
- .setLocId(loc.getId())
+ .setStockCode(stock.getCode())
+ .setUpdateBy(loginUserId)
+ .setCreateBy(loginUserId)
.setId(null)
.setStockId(stock.getId());
stockItems.add(stockItem);
@@ -682,7 +696,7 @@
throw new CoolException("鎷栫洏浠诲姟涓嶅瓨鍦紒锛�");
}
List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId()));
- if (!taskItems.isEmpty()) {
+ if (taskItems.isEmpty()) {
throw new CoolException("鎷栫洏浠诲姟鏄庣粏涓嶅瓨鍦紒锛�");
}
TaskQueueDto queueDto = new TaskQueueDto();
@@ -740,6 +754,73 @@
return R.ok();
}
+ @Override
+ public R completeOrder(Long id, Long loginUserId) {
+ return asnOrderMapper.completeOrder(id, loginUserId);
+ }
+
+ /**
+ * @author Ryan
+ * @description 閫氳繃瀹瑰櫒鑾峰彇缁勬嫋鐗╂枡
+ * @param
+ * @return
+ * @time 2025/4/9 16:57
+ */
+ @Override
+ public R getItemByContainer(Map<String, Object> params) {
+ //鑾峰彇缁勬嫋鏈敓鎴愪换鍔$殑缁勬嫋妗�
+ List<Short> asList = Arrays.asList(Short.valueOf(PakinIOStatus.PAKIN_IO_STATUS_DONE.val), Short.valueOf(PakinIOStatus.PAKIN_IO_STATUS_DONE.val));
+ Short flagDefect = 0;
+ if (!Objects.isNull(params.get("type")) && params.get("type").equals("defective")) {
+ flagDefect = 1;
+ }
+ WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
+ .eq(WaitPakin::getBarcode, params.get("barcode").toString())
+ .eq(WaitPakin::getFlagDefect, flagDefect)
+ .in(WaitPakin::getIoStatus, asList));
+ if (Objects.isNull(waitPakin)) {
+ return R.ok(new ArrayList<>());
+ }
+ List<WaitPakinItem> pakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>()
+ .eq(WaitPakinItem::getPakinId, waitPakin.getId()));
+ if (pakinItems.isEmpty()) {
+ return R.ok(new ArrayList<>());
+ }
+ if (!Objects.isNull(params.get("type")) && params.get("type").equals("defective")) {
+ return R.ok(pakinItems);
+ } else {
+ List<String> list = pakinItems.stream().map(WaitPakinItem::getTrackCode).collect(Collectors.toList());
+ LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new QueryWrapper<WarehouseAreasItem>()
+ .select("SUM(anfme) as anfme, track_code, asn_code, id, splr_batch, ispt_result, plat_item_id, batch, qty, work_qty, matnr_code, matnr_id, maktx")
+ .lambda()
+ .in(WarehouseAreasItem::getTrackCode, list)
+ .groupBy(WarehouseAreasItem::getSplrBatch,
+ WarehouseAreasItem::getTrackCode);
+ List<WarehouseAreasItem> warehouseAreasItems = warehouseAreasItemService.list(queryWrapper);
+ for (int i = 0; i < warehouseAreasItems.size(); i++) {
+ for (WaitPakinItem pakinItem : pakinItems) {
+ if (warehouseAreasItems.get(i).getTrackCode().equals(pakinItem.getTrackCode())) {
+ warehouseAreasItems.get(i).setAnfme(pakinItem.getAnfme());
+ }
+ }
+ }
+ return R.ok(warehouseAreasItems);
+ }
+ }
+
+ /**
+ * @author Ryan
+ * @description 涓嶈壇鏍囩
+ * @param
+ * @return
+ * @time 2025/4/12 08:12
+ */
+ @Override
+ public R defectProducts(String trackCode) {
+ AsnOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getTrackCode, trackCode));
+ return R.ok(orderItem);
+ }
+
/**
* 鑾峰彇ReceiptDetlsDtos
*/
@@ -750,6 +831,7 @@
detlsDto.setAsnCode(asnOrderItem.getAsnCode())
.setMaktx(asnOrderItem.getMaktx())
+ .setFieldsIndex(asnOrderItem.getFieldsIndex())
.setBarcode(asnOrderItem.getTrackCode())
.setQty(asnOrderItem.getQty())
.setPoCode(asnOrderItem.getPoCode())
@@ -772,14 +854,15 @@
detlsDto.setInspect(inspect.getStatus$());
}
//鑾峰彇褰撳墠搴撳瓨淇℃伅
- StockItem stockItem = stockItemMapper.selectOne(new LambdaQueryWrapper<StockItem>()
- .eq(StockItem::getAsnItemId, asnOrderItem.getId())
- .eq(StockItem::getMatnrId, asnOrderItem.getMatnrId()));
+ LocItem stockItem = locItemService.getOne(new LambdaQueryWrapper<LocItem>()
+ .eq(LocItem::getOrderItemId, asnOrderItem.getId())
+ .eq(LocItem::getBatch, asnOrderItem.getBatch())
+ .eq(LocItem::getMatnrId, asnOrderItem.getMatnrId()));
//SET 褰撳墠搴撳瓨鏁伴噺
if (Objects.isNull(stockItem)) {
detlsDto.setStockQty(0.0);
} else {
- detlsDto.setStockQty(stockItem.getQty() + stockItem.getWorkQty());
+ detlsDto.setStockQty(stockItem.getAnfme() + stockItem.getWorkQty());
}
if (!Objects.isNull(asnOrderItem.getPoDetlId())) {
@@ -790,7 +873,6 @@
detlsDto.setPlatformId(purchaseItem.getPlatItemId());
}
}
-
detlsDtos.add(detlsDto);
});
--
Gitblit v1.9.1