diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java index deb9168c..4339fff5 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java @@ -695,7 +695,12 @@ public class WarehouseStorageOrderController extends BaseController @ResponseBody public AjaxResult storageReturnOrderSave(@RequestBody WarehouseStorageOrder warehouseStorageOrder) { - return toAjax(warehouseStorageOrderService.updateReturnOrder(warehouseStorageOrder)); + String storageOrderType = warehouseStorageOrder.getWarehouseOrderType(); + if(storageOrderType.equals("6")){//生产退料单 + return toAjax(warehouseStorageOrderService.updateReturnOrder(warehouseStorageOrder)); + }else {//其他退料单 + return toAjax(warehouseStorageOrderService.updateBaseReturnOrder(warehouseStorageOrder)); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseStorageOrderService.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseStorageOrderService.java index 50a31198..8b914156 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseStorageOrderService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseStorageOrderService.java @@ -103,7 +103,7 @@ public interface IWarehouseStorageOrderService * */ int temporaryOutsourceSave(WarehouseStorageOrder warehouseStorageOrder); - @Transactional(rollbackFor = Exception.class) + int updateOutsourceStorageSave(WarehouseStorageOrder warehouseStorageOrder); /** @@ -145,4 +145,7 @@ public interface IWarehouseStorageOrderService List selectStorageOrderListByCodes(String[] ids); int updateReturnOrder(WarehouseStorageOrder warehouseStorageOrder); + + //入库-员工退料单 + int updateBaseReturnOrder(WarehouseStorageOrder warehouseStorageOrder); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java index 71f88b1d..2ac28d4e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java @@ -126,6 +126,15 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS @Autowired private MakeReturnOrderDetailMapper returnOrderDetailMapper; + @Autowired + private BaseReturnOrderMapper baseReturnOrderMapper; + + @Autowired + private BaseReturnOrderDetailMapper baseReturnOrderDetailMapper; + + @Autowired + private OutsourceRequisitionMapper outsourceRequisitionMapper; + @Autowired private SysMakeorderPickDetailMapper makeorderPickDetailMapper; @@ -1467,7 +1476,7 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS return warehouseStorageOrderMapper.selectStorageOrderListByCodes(ids); } - //入库-退料单 + //入库-生产退料单 @Transactional(rollbackFor = Exception.class) @Override public int updateReturnOrder(WarehouseStorageOrder warehouseStorageOrder) { @@ -1574,6 +1583,110 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS } + //入库-员工退料单 + @Transactional(rollbackFor = Exception.class) + @Override + public int updateBaseReturnOrder(WarehouseStorageOrder warehouseStorageOrder) { + String loginName = ShiroUtils.getLoginName(); + String storageCode = warehouseStorageOrder.getWarehouseStorageCode(); + String relatedOrderCode = warehouseStorageOrder.getRelatedOrderCode(); + WarehouseStorageOrder oldStorageOrder = warehouseStorageOrderMapper.selectStorageOrderByCode(storageCode); + + List warehouseStorageOrderDetailList = warehouseStorageOrder.getWarehouseStorageOrderDetailList(); + if (StringUtils.isEmpty(warehouseStorageOrderDetailList)){ + log.warn("入库单详情数据为空:{}",warehouseStorageOrderDetailList); + throw new BusinessException("入库单详情数据为空"); + } + + //插入主表入库数量 + int orderStorageNum = Optional.ofNullable(oldStorageOrder.getStorageNum()) + .orElse(0); + int storageSum = warehouseStorageOrderDetailList.stream() + .mapToInt(WarehouseStorageOrderDetail::getStorageNum) + .sum(); + storageSum = storageSum + orderStorageNum; + warehouseStorageOrder.setStorageNum(storageSum); + warehouseStorageOrder.setWarehouseStorageStatus("3");//部分入库 + //品质合格数和总入库数相等,全部入库 + int qualifiedNum = oldStorageOrder.getQualityQualifiedNum(); + if(storageSum == qualifiedNum){ + warehouseStorageOrder.setWarehouseStorageStatus("4");//全部入库 + } + for (WarehouseStorageOrderDetail storageOrderDetail : warehouseStorageOrderDetailList) { + //更新入库单详情的数据 + storageOrderDetail.setUpdateBy(loginName); + storageOrderDetail.setUpdateTime(DateUtils.getNowDate()); + //更新已入库数 + int hasStorageNum = Optional.ofNullable(storageOrderDetail.getHasStorageNum()) + .orElse(0); + hasStorageNum = hasStorageNum + storageOrderDetail.getStorageNum(); + storageOrderDetail.setHasStorageNum(hasStorageNum); + int updateWarehouseStorageOrderDetailResult = storageOrderDetailMapper.updateWarehouseStorageOrderDetail(storageOrderDetail); + if (updateWarehouseStorageOrderDetailResult <= 0){ + throw new BusinessException("更新仓库入库单详情失败,未影响任何行"); + } + + WarehouseStorageOrderDetail updatedStorageDetail = storageOrderDetailMapper.selectWarehouseStorageOrderDetailById(storageOrderDetail.getWarehouseStorageDetailId()); + + //更新库存查询 + int inquiryUpdateResult = updateReturnInventoryInquiry(updatedStorageDetail); + if (inquiryUpdateResult <= 0){ + throw new BusinessException("更新库存查询数据失败"); + } + + /*更新退料单详情已退料数*/ + BaseReturnOrderDetail tempReturnDetail = new BaseReturnOrderDetail(); + tempReturnDetail.setBaseReturnOrderCode(relatedOrderCode); + tempReturnDetail.setMaterialNo(storageOrderDetail.getMaterialNo()); + BaseReturnOrderDetail returnOrderDetail = baseReturnOrderDetailMapper.selectBaseReturnOrderDetailList(tempReturnDetail).get(0); + int actualReturnNum = Optional.ofNullable(returnOrderDetail.getHasReturnNum()).orElse(0); + actualReturnNum = actualReturnNum + storageOrderDetail.getStorageNum(); + returnOrderDetail.setHasReturnNum(actualReturnNum); + returnOrderDetail.setUpdateBy(loginName); + returnOrderDetail.setUpdateTime(DateUtils.getNowDate()); + int returnDeUpdateResult = baseReturnOrderDetailMapper.updateBaseReturnOrderDetail(returnOrderDetail); + if (returnDeUpdateResult <= 0){ + throw new BusinessException("更新退料单详情数据失败"); + } + } + //更新退料单的数据 + BaseReturnOrder baseReturnOrder = baseReturnOrderMapper.selectBaseReturnOrderByCode(relatedOrderCode); + //入库数 + int returnStorageNum = Optional.ofNullable(baseReturnOrder.getStorageNum()) + .orElse(0); + returnStorageNum = returnStorageNum + storageSum; + baseReturnOrder.setStorageNum(returnStorageNum); + + int returnQualifiedNum = Optional.ofNullable(baseReturnOrder.getQualifiedNum()) + .orElse(0); + int returnUnQualifiedNum = Optional.ofNullable(baseReturnOrder.getUnqualifiedNum()) + .orElse(0); + int qualityNum = returnQualifiedNum + returnUnQualifiedNum; + /*退料状态*/ + if(returnStorageNum < returnQualifiedNum){ + baseReturnOrder.setReturnStatus("1");//部分退料 + }else if(qualityNum < baseReturnOrder.getReturnSum()){//未品质完 + baseReturnOrder.setReturnStatus("1");//部分退料 + }else if(qualityNum == baseReturnOrder.getReturnSum() && returnStorageNum == returnQualifiedNum){ + baseReturnOrder.setReturnStatus("2");//全部退料 + } + baseReturnOrder.setUpdateBy(ShiroUtils.getLoginName()); + baseReturnOrder.setUpdateTime(DateUtils.getNowDate()); + int updateReturnOrderResult = baseReturnOrderMapper.updateBaseReturnOrder(baseReturnOrder); + if (updateReturnOrderResult <= 0){ + throw new BusinessException("更新退料单数据失败"); + } + //更新入库单的数据 + warehouseStorageOrder.setStorageTime(DateUtils.getNowDate()); + warehouseStorageOrder.setWarehouseEmployee(loginName); + warehouseStorageOrder.setUpdateBy(loginName); + warehouseStorageOrder.setUpdateTime(DateUtils.getNowDate()); + int updateResult = warehouseStorageOrderMapper.updateWarehouseStorageOrder(warehouseStorageOrder); + if (updateResult <= 0){ + throw new BusinessException("更新入库单数据失败,未影响任何行"); + } + return updateResult; + } /* * 更新退料单库存查询*/ public int updateReturnInventoryInquiry(WarehouseStorageOrderDetail storageOrderDetail){ @@ -1620,6 +1733,48 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS if(insertResult <=0){ throw new BusinessException("新增库存查询履历失败"); } + }else if(returnOrderType.equals("4")||returnOrderType.equals("7")){//委外退料 + BaseReturnOrder baseReturnOrder = baseReturnOrderMapper.selectBaseReturnOrderByCode(returnOrderCode); + String pickNo = baseReturnOrder.getPickNo(); + + /*获取领料单占用共享、固定库存数*/ + if(pickNo.startsWith("WWLL")){ + OutsourceRequisitionDetail tempOutPick = new OutsourceRequisitionDetail(); + tempOutPick.setOutsourceRequisitionNo(pickNo); + tempOutPick.setMaterialNo(storageOrderDetail.getMaterialNo()); + tempOutPick.setLevel(1); + List pickDetails = outsourceRequisitionMapper.selectOutsourceRequisitionDetailList(tempOutPick); + sharedNum = Optional.ofNullable(pickDetails.get(0).getSharedStockNum()) + .orElse(0); + }else if(pickNo.startsWith("YGLL")){ + + } + /*获取该领料单关联所有退料单详情实际总退料数,以便计算归还固定和共享库存数*/ + BaseReturnOrderDetail tempReturnDetail = new BaseReturnOrderDetail(); + tempReturnDetail.setPickNo(pickNo); + tempReturnDetail.setMaterialNo(materialNo); + List returnOrderDetails = baseReturnOrderDetailMapper.selectBaseReturnOrderDetailList(tempReturnDetail); + //总已入库数 + allStorage = returnOrderDetails.stream().mapToInt(item -> item.getHasReturnNum()).sum(); + + /*新增库存查询历史*/ + WarehouseInventoryInquiryDetail inquiryDetail = createMakeInOrderInquiryDetail(storageOrderDetail); + if(pickNo.startsWith("WWLL")){ + inquiryDetail.setInquiryBusinessType("2");//委外 + inquiryDetail.setInquiryOrderType("8");//订单类型-委外退料 + inquiryDetail.setInquiryWarehouseType("8");//入库类型-委外退料 + }else if(pickNo.startsWith("YGLL")){ + inquiryDetail.setInquiryBusinessType("7");//员工服务 + inquiryDetail.setInquiryOrderType("9");//订单类型-员工退料 + inquiryDetail.setInquiryWarehouseType("9");//入库类型-员工退料 + } + inquiryDetail.setIncreaseDecreaseNum(storageNum); + inquiryDetail.setCreateBy(loginName); + inquiryDetail.setCreateTime(DateUtils.getNowDate()); + int insertResult = inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail); + if(insertResult <=0){ + throw new BusinessException("新增库存查询履历失败"); + } } if(allStorage >= sharedNum){//总已入库数 >= 占用共享库存数,全部返还为固定 fixedReturnNum = storageNum; @@ -1640,14 +1795,18 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS .orElse(0); int sharedAvaliableNum = Optional.ofNullable(inquiry.getSharedAvailableStockNum()) .orElse(0); + int useNum = Optional.ofNullable(inquiry.getUseNum()) + .orElse(0); availableNum = availableNum + storageNum; fixedAvailableNum = fixedAvailableNum + fixedReturnNum; sharedAvaliableNum = sharedAvaliableNum + sharedReturnNum; + useNum = useNum - storageNum; inquiry.setAvailableStockNum(availableNum); inquiry.setFixedAvailableStockNum(fixedAvailableNum); inquiry.setSharedAvailableStockNum(sharedAvaliableNum); + inquiry.setUseNum(useNum); inquiry.setUpdateBy(ShiroUtils.getLoginName()); inquiry.setUpdateTime(DateUtils.getNowDate()); diff --git a/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageReturnOrder.html b/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageReturnOrder.html index ba9e07c3..953817eb 100644 --- a/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageReturnOrder.html +++ b/ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageReturnOrder.html @@ -9,6 +9,7 @@
+