From 82065a03737fa1370eb9f4f01ab5332933baf08a Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期四, 05 三月 2026 09:23:37 +0800
Subject: [PATCH] 云仓WMS+RCS+自动入库临时方法配置
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java | 275 +++++++++++++++++++++++++-----------------------------
1 files changed, 126 insertions(+), 149 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
index 9eaaa0e..de355f0 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
@@ -69,156 +69,133 @@
@Autowired
private FieldsItemService fieldsItemService;
-// /**
-// * @author Ryan
-// * @date 2025/5/9
-// * @description: 鐩存帴缁勬墭寮�鍏充负true锛屽皢鏀惰揣鍗曠洿鎺ュ姞鍏ヤ复鏃跺簱瀛�
-// * @version 1.0
-// */
-// @Scheduled(cron = "0/25 * * * * ?")
-// @Transactional(rollbackFor = Exception.class)
-// public synchronized void IgnoreReceipt() {
-// Config config = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.DIRECT_WAIT_PAKIN));
-// if (Objects.isNull(config)) {
-// return;
-// }
-// if (!Boolean.parseBoolean(config.getVal())) {
-// return;
-// }
-// //鑷姩鏀惰揣鍗�
-// List<WkOrder> orders = asnOrderService.list(new LambdaQueryWrapper<WkOrder>()
-// .eq(WkOrder::getType, OrderType.ORDER_IN.type)
-// .eq(WkOrder::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_UN_EXCE.val));
-// if (!orders.isEmpty()) {
-// for (WkOrder order : orders) {
-// if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_TERANSFER.type)) {
-// WkOrder one = outStockService.getOne(new LambdaQueryWrapper<WkOrder>()
-// .eq(WkOrder::getPoCode, order.getPoCode())
-// .eq(WkOrder::getWkType, OrderWorkType.ORDER_WORK_TYPE_STOCK_TERANSFER.type));
-// if (Objects.isNull(one)) {
-// throw new CoolException("鏁版嵁閿欒");
-// }
-// if (!one.getExceStatus().equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val)) {
-// continue;
-// }
-// }
-//
-// List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, order.getId()));
-// if (orderItems.isEmpty()) {
-// return;
-// }
-// // 鏀惰揣鍖哄凡鍋滅敤锛氫笉鍐嶅啓鍏ユ敹璐у尯锛屼粎鏇存柊鍗曟嵁鐘舵�佷笌鏁伴噺
-//// List<WarehouseAreas> receiptAreas = warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>()
-//// .eq(WarehouseAreas::getType, WarehouseAreasType.WAREHOUSE_AREAS_TYPE_RECEIPT.type));
-//// WarehouseAreas receiptArea = receiptAreas.isEmpty() ? null : receiptAreas.get(0);
-//// List<WarehouseAreasItem> items = new ArrayList<>();
-// for (WkOrderItem item : orderItems) {
-//// Long areaId = receiptArea == null ? null : receiptArea.getId();
-//// String areaName = receiptArea == null ? null : receiptArea.getName();
-//// WarehouseAreasItem param = new WarehouseAreasItem();
-//// BeanUtils.copyProperties(item, param);
-//// param.setAsnCode(order.getCode()).setAsnId(order.getId());
-//// if (areaId != null) {
-//// param.setAreaId(areaId).setAreaName(areaName);
-//// }
-//// items.add(param);
-//// Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getId, item.getMatnrId()));
-//// if (Objects.isNull(matnr)) {
-//// throw new CoolException("鐗╂枡涓嶅瓨鍦紒锛�");
-//// }
-//// if (receiptArea != null) {
-//// try {
-//// updateReceipt(receiptArea, item, order, matnr);
-//// } catch (Exception e) {
-//// throw new CoolException(e.getMessage());
-//// }
-//// }
-// if (!asnOrderItemService.update(new LambdaUpdateWrapper<WkOrderItem>().set(WkOrderItem::getQty, item.getAnfme()).eq(WkOrderItem::getId, item.getId()))) {
-// throw new CoolException("鏀惰揣鍗曟槑缁嗗畬鎴愭暟閲忎慨鏀瑰け璐ワ紒锛�");
-// }
-// }
-//// if (!warehouseAreasItemService.saveBatch(items)) {
-//// throw new CoolException("鏀惰揣鍗曚繚瀛樿嚦鏀惰揣鍖烘墽琛屽け璐ワ紒锛�");
-//// }
-//
-// if (!asnOrderService.update(new LambdaUpdateWrapper<WkOrder>()
-// .set(WkOrder::getQty, order.getAnfme())
-// .set(WkOrder::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_RECEIPT_DONE.val)
-// .eq(WkOrder::getId, order.getId()))) {
-// throw new CoolException("鏀惰揣鍗曠姸鎬佷慨鏀瑰け璐ワ紒锛�");
-// }
-// }
-// }
-// }
-
-
- /** 鏀惰揣鍖哄凡鍋滅敤锛屾柟娉曟暣浣撴敞閲�
- * @author Ryan
- * @date 2025/5/12
- * @description: 鏀惰揣鍖哄簱瀛樻洿鏂�
+ /**
+ * 鑷姩鏀惰揣锛氫粎褰� DirectWaitPakin 閰嶇疆涓� true 鏃舵墽琛岋紝灏嗘湭鎵ц鍏ュ簱鍗曠洿鎺ユ敹璐у苟鍐欏叆鏀惰揣鍖猴紝鏇存柊鍗曟嵁鐘舵�佷负鏀惰揣瀹屾垚銆�
+ * 涓嶅奖鍝嶄簯浠揥MS鍏ュ簱鎺ュ彛锛�8.3 鍚屾鍗曪級涓庣粍鎵樻祦绋嬶紱鍏抽棴鏃朵笉鍋氫换浣曟搷浣溿��
*/
-// @Transactional(rollbackFor = Exception.class)
-// public void updateReceipt(WarehouseAreas areasItem, WkOrderItem orderItem, WkOrder wkOrder, Matnr matnr) throws Exception {
-// Companys companys = new Companys();
-// if (StringUtils.isNoneBlank(orderItem.getSplrCode())) {
-// companys = companysService.getOne(new LambdaQueryWrapper<Companys>().eq(Companys::getCode, orderItem.getSplrCode()));
-// }
-// WarehouseAreasItem item = new WarehouseAreasItem();
-// item.setTrackCode(orderItem.getBarcode())
-// .setAreaName(areasItem.getName())
-// .setAreaId(areasItem.getId())
-// .setAsnItemId(orderItem.getId())
-// .setAsnCode(wkOrder.getCode())
-// .setAsnId(wkOrder.getId())
-// .setProdTime(orderItem.getProdTime())
-// .setPlatItemId(orderItem.getPlatItemId())
-// .setPlatOrderCode(orderItem.getPlatOrderCode())
-// .setPlatWorkCode(orderItem.getPlatWorkCode())
-// .setProjectCode(orderItem.getProjectCode())
-// .setSplrId(companys.getId())
-// .setUnit(orderItem.getStockUnit())
-// .setStockUnit(orderItem.getStockUnit())
-// .setMatnrCode(matnr.getCode())
-// .setAnfme(orderItem.getAnfme())
-// .setMatnrId(matnr.getId())
-// .setIsptResult(orderItem.getIsptResult())
-// .setMaktx(matnr.getName())
-// .setSplrBatch(orderItem.getSplrBatch())
-// .setWeight(matnr.getWeight())
-// .setFieldsIndex(orderItem.getFieldsIndex())
-// .setShipperId(matnr.getShipperId());
-// List<WarehouseAreasItem> warehousList = StringUtils.isNotBlank(orderItem.getFieldsIndex())
-// ? warehouseAreasItemService.list(new LambdaQueryWrapper<WarehouseAreasItem>().eq(WarehouseAreasItem::getFieldsIndex, orderItem.getFieldsIndex()))
-// : Collections.emptyList();
-// WarehouseAreasItem warehousItem = warehousList.isEmpty() ? null : warehousList.get(0);
-// if (!Objects.isNull(warehousItem)) {
-// List<FieldsItem> fieldsList = fieldsItemService.list(new LambdaQueryWrapper<FieldsItem>()
-// .eq(FieldsItem::getUuid, orderItem.getFieldsIndex()).last("LIMIT 1"));
-// FieldsItem fieldsItem = fieldsList.isEmpty() ? null : fieldsList.get(0);
-// if (!Objects.isNull(fieldsItem)) {
-// throw new CoolException("绁ㄥ彿锛�" + fieldsItem.getValue() + "宸插湪鏀惰揣鍖猴紝涓嶅彲鎺ㄩ�佺浉褰撶エ鍙锋暟鎹�傝鑱旂郴绠$悊鍛橈紒锛�" );
-// }
-// }
-// LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new LambdaQueryWrapper<WarehouseAreasItem>()
-// .eq(WarehouseAreasItem::getMatnrCode, orderItem.getMatnrCode())
-// .eq(!Cools.isEmpty(orderItem.getFieldsIndex()), WarehouseAreasItem::getFieldsIndex, orderItem.getFieldsIndex())
-// .eq(WarehouseAreasItem::getAsnCode, orderItem.getOrderCode())
-// .eq(StringUtils.isNotBlank(orderItem.getSplrBatch()), WarehouseAreasItem::getSplrBatch, orderItem.getSplrBatch());
-// if (Objects.isNull(orderItem.getIsptResult())) {
-// queryWrapper.isNull(WarehouseAreasItem::getIsptResult);
-// } else {
-// queryWrapper.eq(WarehouseAreasItem::getIsptResult, orderItem.getIsptResult());
-// }
-// List<WarehouseAreasItem> serviceList = warehouseAreasItemService.list(queryWrapper);
-// WarehouseAreasItem serviceOne = serviceList.isEmpty() ? null : serviceList.get(0);
-// if (!Objects.isNull(serviceOne)) {
-// item.setId(serviceOne.getId());
-// item.setAnfme(orderItem.getAnfme());
-// }
-// if (!warehouseAreasItemService.saveOrUpdate(item)) {
-// throw new CoolException("鏀惰揣澶辫触锛侊紒");
-// }
-// }
+ @Scheduled(cron = "0/25 * * * * ?")
+ @Transactional(rollbackFor = Exception.class)
+ public synchronized void IgnoreReceipt() {
+ Config config = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.DIRECT_WAIT_PAKIN));
+ if (Objects.isNull(config) || !Boolean.parseBoolean(config.getVal())) {
+ return;
+ }
+ List<WkOrder> orders = asnOrderService.list(new LambdaQueryWrapper<WkOrder>()
+ .eq(WkOrder::getType, OrderType.ORDER_IN.type)
+ .eq(WkOrder::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_UN_EXCE.val));
+ if (orders.isEmpty()) {
+ return;
+ }
+ WarehouseAreas receiptArea = warehouseAreasService.getOne(new LambdaQueryWrapper<WarehouseAreas>()
+ .eq(WarehouseAreas::getType, WarehouseAreasType.WAREHOUSE_AREAS_TYPE_RECEIPT.type), false);
+ for (WkOrder order : orders) {
+ if (OrderWorkType.ORDER_WORK_TYPE_OTHER_TERANSFER.type.equals(order.getWkType())) {
+ WkOrder one = outStockService.getOne(new LambdaQueryWrapper<WkOrder>()
+ .eq(WkOrder::getPoId, order.getPoId())
+ .eq(WkOrder::getWkType, OrderWorkType.ORDER_WORK_TYPE_STOCK_TERANSFER.type));
+ if (Objects.isNull(one)) {
+ throw new CoolException("鏁版嵁閿欒");
+ }
+ if (!one.getExceStatus().equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val)) {
+ continue;
+ }
+ }
+ List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, order.getId()));
+ if (orderItems.isEmpty()) {
+ continue;
+ }
+ for (WkOrderItem item : orderItems) {
+ if (receiptArea != null) {
+ Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getId, item.getMatnrId()));
+ if (Objects.isNull(matnr)) {
+ throw new CoolException("鐗╂枡涓嶅瓨鍦紒锛�");
+ }
+ try {
+ updateReceipt(receiptArea, item, order, matnr);
+ } catch (Exception e) {
+ throw new CoolException(e.getMessage());
+ }
+ }
+ if (!asnOrderItemService.update(new LambdaUpdateWrapper<WkOrderItem>().set(WkOrderItem::getQty, item.getAnfme()).eq(WkOrderItem::getId, item.getId()))) {
+ throw new CoolException("鏀惰揣鍗曟槑缁嗗畬鎴愭暟閲忎慨鏀瑰け璐ワ紒锛�");
+ }
+ }
+ if (!asnOrderService.update(new LambdaUpdateWrapper<WkOrder>()
+ .set(WkOrder::getQty, order.getAnfme())
+ .set(WkOrder::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_RECEIPT_DONE.val)
+ .eq(WkOrder::getId, order.getId()))) {
+ throw new CoolException("鏀惰揣鍗曠姸鎬佷慨鏀瑰け璐ワ紒锛�");
+ }
+ }
+ }
+
+ /**
+ * 鏀惰揣鍖哄簱瀛樻洿鏂帮紙浠� DirectWaitPakin 鍚敤鏃剁敱 IgnoreReceipt 璋冪敤锛�
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void updateReceipt(WarehouseAreas areasItem, WkOrderItem orderItem, WkOrder wkOrder, Matnr matnr) throws Exception {
+ Companys companys = new Companys();
+ if (StringUtils.isNoneBlank(orderItem.getSplrCode())) {
+ companys = companysService.getOne(new LambdaQueryWrapper<Companys>().eq(Companys::getCode, orderItem.getSplrCode()));
+ }
+ if (Objects.isNull(companys)) {
+ companys = new Companys();
+ }
+ WarehouseAreasItem item = new WarehouseAreasItem();
+ item.setTrackCode(orderItem.getBarcode())
+ .setAreaName(areasItem.getName())
+ .setAreaId(areasItem.getId())
+ .setAsnItemId(orderItem.getId())
+ .setAsnCode(wkOrder.getCode())
+ .setAsnId(wkOrder.getId())
+ .setProdTime(orderItem.getProdTime())
+ .setPlatItemId(orderItem.getPlatItemId())
+ .setPlatOrderCode(orderItem.getPlatOrderCode())
+ .setPlatWorkCode(orderItem.getPlatWorkCode())
+ .setProjectCode(orderItem.getProjectCode())
+ .setSplrId(companys.getId())
+ .setUnit(orderItem.getStockUnit())
+ .setStockUnit(orderItem.getStockUnit())
+ .setMatnrCode(matnr.getCode())
+ .setAnfme(orderItem.getAnfme())
+ .setMatnrId(matnr.getId())
+ .setIsptResult(orderItem.getIsptResult())
+ .setMaktx(matnr.getName())
+ .setSplrBatch(orderItem.getSplrBatch())
+ .setWeight(matnr.getWeight())
+ .setFieldsIndex(orderItem.getFieldsIndex())
+ .setShipperId(matnr.getShipperId());
+ if (StringUtils.isNotBlank(orderItem.getFieldsIndex())) {
+ List<WarehouseAreasItem> warehousList = warehouseAreasItemService.list(new LambdaQueryWrapper<WarehouseAreasItem>().eq(WarehouseAreasItem::getFieldsIndex, orderItem.getFieldsIndex()));
+ WarehouseAreasItem warehousItem = warehousList.isEmpty() ? null : warehousList.get(0);
+ if (Objects.nonNull(warehousItem)) {
+ List<FieldsItem> fieldsList = fieldsItemService.list(new LambdaQueryWrapper<FieldsItem>().eq(FieldsItem::getUuid, orderItem.getFieldsIndex()).last("LIMIT 1"));
+ FieldsItem fieldsItem = fieldsList.isEmpty() ? null : fieldsList.get(0);
+ if (Objects.nonNull(fieldsItem)) {
+ throw new CoolException("绁ㄥ彿锛�" + fieldsItem.getValue() + "宸插湪鏀惰揣鍖猴紝涓嶅彲鎺ㄩ�佺浉褰撶エ鍙锋暟鎹�傝鑱旂郴绠$悊鍛橈紒锛�");
+ }
+ }
+ }
+ LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new LambdaQueryWrapper<WarehouseAreasItem>()
+ .eq(WarehouseAreasItem::getMatnrCode, orderItem.getMatnrCode())
+ .eq(!Cools.isEmpty(orderItem.getFieldsIndex()), WarehouseAreasItem::getFieldsIndex, orderItem.getFieldsIndex())
+ .eq(WarehouseAreasItem::getAsnCode, orderItem.getOrderCode())
+ .eq(StringUtils.isNotBlank(orderItem.getSplrBatch()), WarehouseAreasItem::getSplrBatch, orderItem.getSplrBatch());
+ if (Objects.isNull(orderItem.getIsptResult())) {
+ queryWrapper.isNull(WarehouseAreasItem::getIsptResult);
+ } else {
+ queryWrapper.eq(WarehouseAreasItem::getIsptResult, orderItem.getIsptResult());
+ }
+ WarehouseAreasItem serviceOne = warehouseAreasItemService.getOne(queryWrapper);
+ if (Objects.nonNull(serviceOne)) {
+ item.setId(serviceOne.getId());
+ Double anfme = Math.round((item.getAnfme() + serviceOne.getAnfme()) * 10000) / 10000.0;
+ item.setAnfme(anfme);
+ }
+ if (!warehouseAreasItemService.saveOrUpdate(item)) {
+ throw new CoolException("鏀惰揣澶辫触锛侊紒");
+ }
+ }
/**
--
Gitblit v1.9.1