From 8708598a8e75c36dcdd446c634e11bbeaf48ddab Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期四, 07 八月 2025 10:38:50 +0800 Subject: [PATCH] 库存调整功能优化 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java | 61 ++++++++++++++++++++---------- 1 files changed, 41 insertions(+), 20 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 b74f20f..e7fc0bb 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 @@ -7,9 +7,7 @@ import com.vincent.rsf.server.common.config.SysStockProperties; import com.vincent.rsf.server.common.utils.DateUtils; import com.vincent.rsf.server.manager.entity.*; -import com.vincent.rsf.server.manager.enums.AsnExceStatus; -import com.vincent.rsf.server.manager.enums.POExceStatus; -import com.vincent.rsf.server.manager.enums.WarehouseAreasType; +import com.vincent.rsf.server.manager.enums.*; import com.vincent.rsf.server.manager.service.*; import com.vincent.rsf.server.manager.service.impl.WarehouseAreasItemServiceImpl; import com.vincent.rsf.server.system.constant.GlobalConfigCode; @@ -60,6 +58,10 @@ private WarehouseAreasItemServiceImpl warehouseAreasItemService; @Autowired private CompanysService companysService; + @Autowired + private TransferService transferService; + @Autowired + private OutStockService outStockService; /** * @author Ryan @@ -67,7 +69,6 @@ * @description: 鐩存帴缁勬墭寮�鍏充负true锛屽皢鏀惰揣鍗曠洿鎺ュ姞鍏ヤ复鏃跺簱瀛� * @version 1.0 */ -// @Scheduled(cron = "0 0/05 * * * ? ") @Scheduled(cron = "0/25 * * * * ?") @Transactional(rollbackFor = Exception.class) public synchronized void IgnoreReceipt() { @@ -78,15 +79,30 @@ if (!Boolean.parseBoolean(config.getVal())) { return; } - List<WkOrder> orders = asnOrderService.list(new LambdaQueryWrapper<WkOrder>().eq(WkOrder::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_UN_EXCE.val)); + //鑷姩鏀惰揣鍗� + 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) { - List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, order.getId())); + if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_TERANSFER.type)) { + 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()) { return; } List<WarehouseAreasItem> items = new ArrayList<>(); - for (AsnOrderItem item : orderItems) { + for (WkOrderItem item : orderItems) { WarehouseAreas one = warehouseAreasService.getOne(new LambdaQueryWrapper<WarehouseAreas>() .eq(WarehouseAreas::getType, WarehouseAreasType.WAREHOUSE_AREAS_TYPE_RECEIPT.type), false); Long areaId = Objects.isNull(one) ? null : one.getId(); @@ -105,9 +121,13 @@ throw new CoolException("鐗╂枡涓嶅瓨鍦紒锛�"); } //鏇存柊鏀惰揣鍖哄簱瀛� - extracted(one, item, order, matnr); + try { + updateReceipt(one, item, order, matnr); + } catch (Exception e) { + throw new CoolException(e.getMessage()); + } - if (!asnOrderItemService.update(new LambdaUpdateWrapper<AsnOrderItem>().set(AsnOrderItem::getQty, item.getAnfme()).eq(AsnOrderItem::getId, item.getId()))) { + if (!asnOrderItemService.update(new LambdaUpdateWrapper<WkOrderItem>().set(WkOrderItem::getQty, item.getAnfme()).eq(WkOrderItem::getId, item.getId()))) { throw new CoolException("鏀惰揣鍗曟槑缁嗗畬鎴愭暟閲忎慨鏀瑰け璐ワ紒锛�"); } } @@ -132,7 +152,8 @@ * @description: 鏀惰揣鍖哄簱瀛樻洿鏂� * @version 1.0 */ - private void extracted(WarehouseAreas areasItem, AsnOrderItem orderItem, WkOrder wkOrder, Matnr matnr) { + @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())); @@ -163,11 +184,11 @@ .setWeight(matnr.getWeight()) .setFieldsIndex(orderItem.getFieldsIndex()) .setShipperId(matnr.getShipperId()); - + LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new LambdaQueryWrapper<WarehouseAreasItem>() .eq(WarehouseAreasItem::getMatnrCode, orderItem.getMatnrCode()) .eq(!Cools.isEmpty(orderItem.getFieldsIndex()), WarehouseAreasItem::getFieldsIndex, orderItem.getFieldsIndex()) - .eq(WarehouseAreasItem::getAsnCode, orderItem.getAsnCode()) + .eq(WarehouseAreasItem::getAsnCode, orderItem.getOrderCode()) .eq(StringUtils.isNotBlank(orderItem.getSplrBatch()), WarehouseAreasItem::getSplrBatch, orderItem.getSplrBatch()); if (Objects.isNull(orderItem.getIsptResult())) { queryWrapper.isNull(WarehouseAreasItem::getIsptResult); @@ -231,9 +252,9 @@ if (!asnOrderService.save(order)) { throw new CoolException("ASN鍗曟嵁淇濆瓨澶辫触锛侊紒"); } - List<AsnOrderItem> orderItems = new ArrayList<>(); + List<WkOrderItem> orderItems = new ArrayList<>(); items.forEach(item -> { - AsnOrderItem orderItem = new AsnOrderItem(); + WkOrderItem orderItem = new WkOrderItem(); Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getCode, item.getMatnrCode())); if (Objects.isNull(matnr)) { throw new CoolException("鏁版嵁閿欒锛氬綋鍓嶇墿鏂欎笉瀛樺湪!!"); @@ -244,10 +265,10 @@ } // String barcode = code + matnr.getCode(); orderItem.setAnfme(item.getAnfme()) - .setAsnId(order.getId()) + .setOrderId(order.getId()) .setQty(item.getQty()) .setSplrName(item.getSplrName()) - .setAsnCode(code) + .setOrderCode(code) .setSplrCode(item.getSplrCode()) .setPoDetlId(item.getId()) .setPlatItemId(item.getPlatItemId()) @@ -284,13 +305,13 @@ @Scheduled(cron = "0 0/05 * * * ? ") @Transactional(rollbackFor = Exception.class) public void generateMatnrLabel() { - List<AsnOrderItem> list = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>() - .isNull(AsnOrderItem::getTrackCode) - .select(AsnOrderItem::getId)); + List<WkOrderItem> list = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>() + .isNull(WkOrderItem::getTrackCode) + .select(WkOrderItem::getId)); if (Objects.isNull(list) || list.isEmpty()) { return; } - List<AsnOrderItem> items = new ArrayList<>(); + List<WkOrderItem> items = new ArrayList<>(); list.forEach(item -> { String trackCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_LABEL_CODE, item); if (StringUtils.isBlank(trackCode)) { -- Gitblit v1.9.1