From 0e41fcadbd568db4cab2635e1ddc8947f4d89c27 Mon Sep 17 00:00:00 2001 From: chenfang Date: Fri, 22 Dec 2023 09:44:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=85=B7=E7=B1=BB=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/win/module/wms/util/JobUtils.java | 75 ++++++++++++++++++- 1 file changed, 72 insertions(+), 3 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java index fb65904b..0c3e523e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/util/JobUtils.java @@ -9,6 +9,8 @@ import com.win.module.wms.controller.rule.vo.RuleRespVO; import com.win.module.wms.dal.dataobject.balance.BalanceDO; import com.win.module.wms.dal.dataobject.bom.BomDO; import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; +import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanDetailDO; +import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanMainDO; import com.win.module.wms.dal.dataobject.documentsetting.DocumentsettingDO; import com.win.module.wms.dal.dataobject.expectout.ExpectoutDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; @@ -16,6 +18,8 @@ import com.win.module.wms.dal.dataobject.location.LocationDO; import com.win.module.wms.dal.dataobject.supplier.SupplierDO; import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; import com.win.module.wms.dal.mysql.balance.BalanceMapper; +import com.win.module.wms.dal.mysql.deliverPlan.DeliverPlanDetailMapper; +import com.win.module.wms.dal.mysql.deliverPlan.DeliverPlanMainMapper; import com.win.module.wms.dal.mysql.expectout.ExpectoutMapper; import com.win.module.wms.dal.mysql.location.LocationMapper; import com.win.module.wms.service.balance.BalanceService; @@ -80,7 +84,11 @@ public class JobUtils { @Resource private TransactiontypeService transactiontypeService; + @Resource + private DeliverPlanMainMapper deliverPlanMainMapper; + @Resource + private DeliverPlanDetailMapper deliverPlanDetailMapper; /** * 解析JSON串,返回两个对象的集合 * @@ -182,6 +190,67 @@ public class JobUtils { return result; } + + /** + * 更新发货计划的已发货数量 + * + * @param pnumber + * @param pitemCode + * @param pshippedQty + */ + public void updatePlanDeliveShippedQty(String pnumber, String pitemCode, BigDecimal pshippedQty) { + QueryWrapper mainDOQueryWrapper = new QueryWrapper<>(); + DeliverPlanDetailDO deliverPlanDetailDO; + mainDOQueryWrapper.eq("number", pnumber); + mainDOQueryWrapper.eq("status", "6"); + DeliverPlanMainDO deliverPlanMainDO = deliverPlanMainMapper.selectOne(mainDOQueryWrapper); + if (deliverPlanMainDO != null) { + QueryWrapper detailDOQueryWrapper = new QueryWrapper<>(); + detailDOQueryWrapper.eq("number", pnumber); + detailDOQueryWrapper.eq("item_code", pitemCode); + detailDOQueryWrapper.eq("available", "TRUE"); + deliverPlanDetailDO = deliverPlanDetailMapper.selectOne(detailDOQueryWrapper); + BigDecimal shippedQty = deliverPlanDetailDO.getShippedQty(); +// 如果已发货数量=计划数量,更新计划明细状态为(开放 => 关闭) + deliverPlanDetailDO.setShippedQty(shippedQty.add(pshippedQty)); + if (deliverPlanDetailDO.getPlanQty() == deliverPlanDetailDO.getShippedQty()) { + deliverPlanDetailDO.setAvailable("FALSE"); + } +// 如果全部明细状态为(关闭),更新计划状态为(已接受 => 完成) + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("master_id", deliverPlanMainDO.getId()); + List deliverPlanDetailDOS = deliverPlanDetailMapper.selectList(queryWrapper); + int size = deliverPlanDetailDOS.size(); + int count = 0; + for (DeliverPlanDetailDO planDetailDO : deliverPlanDetailDOS) { + if ("FALSE".equals(planDetailDO.getAvailable())) { + count++; + } + } + if (count == size) { + deliverPlanMainDO.setStatus("7"); + deliverPlanMainMapper.updateById(deliverPlanMainDO); + } + } + ifDetailAllFinish(deliverPlanMainDO); + } + + //判断如果主表下子表状态全为FALSE 则修改计划状态为完成 + private void ifDetailAllFinish(DeliverPlanMainDO deliverPlanMainDO) { + QueryWrapper detailDOQueryWrapper = new QueryWrapper<>(); + detailDOQueryWrapper.eq("master_id", deliverPlanMainDO.getId()); + List deliverPlanDetailDOS = deliverPlanDetailMapper.selectList(detailDOQueryWrapper); + Integer count = 0; + for (DeliverPlanDetailDO deliverPlanDetailDO : deliverPlanDetailDOS) { + if ("TRUE".equals(deliverPlanDetailDO.getAvailable())) { + count++; + } + } + if (count <= 0) { + deliverPlanMainDO.setStatus("7"); + } + } + /** * 校验物料有效,状态正确 * @@ -788,15 +857,15 @@ public class JobUtils { } // 根据下架策略 作为查询库存余额分组 // 发料包装类型——按 包装 - if (jsonObjectOffShelf.get("IssueStorageType") != null && jsonObjectOffShelf.get("IssueStorageType").equals("1")) { + if (jsonObjectOffShelf.get("IssueStorageType") != null && jsonObjectOffShelf.get("IssueStorageType").equals("PACKAGE")) { queryWrapper.groupBy("packing_number"); } // 发料包装类型——按 容器 - if (jsonObjectOffShelf.get("IssueStorageType") != null && jsonObjectOffShelf.get("IssueStorageType").equals("2")) { + if (jsonObjectOffShelf.get("IssueStorageType") != null && jsonObjectOffShelf.get("IssueStorageType").equals("CONTAINER")) { queryWrapper.groupBy("container_number"); } // 发料包装类型——按 单件 - if (jsonObjectOffShelf.get("IssueStorageType") != null && jsonObjectOffShelf.get("IssueStorageType").equals("3")) { + if (jsonObjectOffShelf.get("IssueStorageType") != null && jsonObjectOffShelf.get("IssueStorageType").equals("SINGLE")) { queryWrapper.groupBy("item_code", "batch", "qty","inventory_status", "warehouse_code", "area_code", "location_group_code", "location_code", "expire_date", "produce_date", "arrive_date"); } // 根据批次策略 作为查询库存余额排序