From f1262a06dbb2ff679ef686eafdedff352d25e52e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=99=93=E8=BF=AA?= <2596750866@qq.com> Date: Wed, 8 Jan 2025 17:30:01 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=20=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86=20?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E5=8D=95=20=E4=BF=AE=E6=94=B9=E5=87=BA?= =?UTF-8?q?=E5=BA=93=E5=8D=95=E5=88=97=E8=A1=A8=E9=A1=B5=E9=9D=A2=EF=BC=8C?= =?UTF-8?q?=E9=80=80=E6=8D=A2=E8=B4=A7=E5=87=BA=E5=BA=93=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E6=9D=A1=E4=BB=B6=E6=96=B0=E5=A2=9E=E9=83=A8?= =?UTF-8?q?=E5=88=86=E5=87=BA=E5=BA=93=EF=BC=9B=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E9=80=80=E6=8D=A2=E8=B4=A7-=E5=87=BA?= =?UTF-8?q?=E5=BA=93service=E6=96=B9=E6=B3=95=E5=92=8C=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E6=9F=A5=E8=AF=A2service=E6=96=B9=E6=B3=95?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=E9=80=80=E6=8D=A2=E8=B4=A7=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E5=A4=84=E7=90=86=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/WarehouseOutOrderServiceImpl.java | 123 +++++++++++------- .../warehouseOutOrder/warehouseOutOrder.html | 2 +- 2 files changed, 75 insertions(+), 50 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseOutOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseOutOrderServiceImpl.java index e792e818..09b33ad0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseOutOrderServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseOutOrderServiceImpl.java @@ -579,70 +579,86 @@ public class WarehouseOutOrderServiceImpl implements IWarehouseOutOrderService public int updateRefundsExchangesOutWarehouse(WarehouseOutOrder warehouseOutOrder) { String loginName = ShiroUtils.getLoginName(); - + WarehouseOutOrder oldOutOrder = warehouseOutOrderMapper.selectWarehouseOutOrderByCode(warehouseOutOrder.getOutOrderCode()); List warehouseOutOrderDetailList = warehouseOutOrder.getWarehouseOutOrderDetailList(); - if (StringUtils.isEmpty(warehouseOutOrderDetailList)){ - throw new BusinessException("出库失败,出库单物料详情为空!"); + if (CollectionUtils.isEmpty(warehouseOutOrderDetailList)){ + throw new BusinessException("出库单详情数据为空"); + } + // 检查outOrderSum是否含有null值 + List filtList = warehouseOutOrderDetailList.stream() + .filter(item ->item.getActualOutOrderSum() != null).collect(Collectors.toList()); + if (filtList.size()==0) { + throw new BusinessException("实际出库数不能全为空,请检查!"); } + // 检查总出库数是否超出申请数 + for (WarehouseOutOrderDetail detail: filtList) { + int hasOutNum = Optional.ofNullable(detail.getHasOutOrderSum()).orElse(0); + int allOutNum = hasOutNum + detail.getActualOutOrderSum(); + int applyNum = Optional.ofNullable(detail.getApplyOutOrderSum()).orElse(0); + if(allOutNum > applyNum){ + throw new BusinessException("物料"+detail.getMaterialNo()+"总出库数超出申请出库数,请检查!"); + } + } + int updateRows = 0; - for (WarehouseOutOrderDetail warehouseOutOrderDetail : warehouseOutOrderDetailList) { - warehouseOutOrderDetail.setUpdateBy(loginName); - warehouseOutOrderDetail.setUpdateTime(DateUtils.getNowDate()); + for (WarehouseOutOrderDetail detail : filtList) { + detail.setUpdateBy(loginName); + detail.setUpdateTime(DateUtils.getNowDate()); + detail.setRemark(warehouseOutOrder.getRemark()); //设置已出库数 - warehouseOutOrderDetail.setHasOutOrderSum(warehouseOutOrderDetail.getActualOutOrderSum()); - //设置仓库员 - warehouseOutOrderDetail.setWarehouseName(loginName); - //更新数据库记录 - updateRows += outOrderDetailMapper.updateWarehouseOutOrderDetail(warehouseOutOrderDetail); - if (updateRows <= 0) { + int hasOutNum = Optional.ofNullable(detail.getHasOutOrderSum()).orElse(0); + hasOutNum = hasOutNum + detail.getActualOutOrderSum(); + detail.setHasOutOrderSum(hasOutNum); + detail.setWarehouseName(loginName); + updateRows += outOrderDetailMapper.updateWarehouseOutOrderDetail(detail); + if (updateRows <= 0){ throw new BusinessException("更新出库单详情数据失败"); } + //更新库存查询记录,新增库存历史 + String materialNo = detail.getMaterialNo(); + WarehouseInventoryInquiry inventoryInquiry = inventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo); + if(inventoryInquiry == null){ + throw new BusinessException("更新库存查询数据失败!该物料不存在库存数据"); + } + int inquiryUpdateResult = updateWarehouseInventoryInquiry(oldOutOrder,detail,inventoryInquiry); + if (inquiryUpdateResult <= 0){ + throw new BusinessException("更新库存查询数据失败"); + } } - warehouseOutOrder.setUpdateBy(loginName); - warehouseOutOrder.setUpdateTime(DateUtils.getNowDate()); - //表明已出库 - warehouseOutOrder.setWarehouseOutStatus("7"); - //设置出库时间 - warehouseOutOrder.setOutOrderTime(DateUtils.getNowDate()); - //设置仓库员 - warehouseOutOrder.setWarehouseName(loginName); //计算出库单主表的出库数 - Integer outOrderSum = 0; - - // 检查outOrderSum是否含有null值 - boolean hasOutOrderSumNull = warehouseOutOrderDetailList.stream() - .anyMatch(item -> item.getActualOutOrderSum() == null); - - if (hasOutOrderSumNull) { - throw new BusinessException("存在实际出库数为空,请检查!"); - } - - // 检查库存是否超出 - boolean hasOutOrderSumOver = warehouseOutOrderDetailList.stream() - .anyMatch(item -> item.getActualOutOrderSum() > item.getApplyOutOrderSum()); - - if (hasOutOrderSumOver) { - throw new BusinessException("存在实际出库数大于申请出库数,请检查!"); - } + Integer outOrderSum = oldOutOrder.getOutOrderSum() != null ? oldOutOrder.getOutOrderSum() : 0; // 计算各个字段的总和 - outOrderSum = warehouseOutOrderDetailList.stream() + Integer detailOutOrderSum = filtList.stream() .mapToInt(WarehouseOutOrderDetail::getActualOutOrderSum) .sum(); + outOrderSum = outOrderSum + detailOutOrderSum; //设置出库单主表的出库数 - warehouseOutOrder.setOutOrderSum(outOrderSum); + oldOutOrder.setOutOrderSum(outOrderSum); - QualityRefundsExchanges tempExchanges = new QualityRefundsExchanges(); - tempExchanges.setOutStorageCode(warehouseOutOrder.getOutOrderCode()); - List tempExchangesList = refundsExchangesMapper.selectQualityRefundsExchangesList(tempExchanges); - QualityRefundsExchanges refundsExchanges = tempExchangesList.get(0); - refundsExchanges.setQualityWarehouseStatus("4"); - refundsExchanges.setUpdateBy(ShiroUtils.getLoginName()); + /** 更新关联退换货单状态*/ + QualityRefundsExchanges refundsExchanges = refundsExchangesMapper.selectQualityRefundsExchangesByCode(oldOutOrder.getRelatedOrderCode()); + if(refundsExchanges == null){ + throw new BusinessException("关联退换货单为空,请检查"); + } + if(outOrderSum == oldOutOrder.getEnterpriseSum()){ + oldOutOrder.setWarehouseOutStatus("6");//全部出库 + refundsExchanges.setQualityWarehouseStatus("4");//全部出库 + }else if(outOrderSum < oldOutOrder.getEnterpriseSum()){ + oldOutOrder.setWarehouseOutStatus("5");//部分出库 + refundsExchanges.setQualityWarehouseStatus("3");//部分出库 + } + refundsExchanges.setUpdateBy(loginName); refundsExchanges.setUpdateTime(DateUtils.getNowDate()); - int updateRefundResult = refundsExchangesMapper.updateQualityRefundsExchanges(refundsExchanges); - if(updateRefundResult<=0){ - throw new BusinessException("更新关联退换货订单仓库状态失败!"); + int updateResult = refundsExchangesMapper.updateQualityRefundsExchanges(refundsExchanges); + if(updateResult<=0){ + throw new BusinessException("更新退换货单失败!"); } - return warehouseOutOrderMapper.updateWarehouseOutOrder(warehouseOutOrder); + + oldOutOrder.setUpdateBy(loginName); + oldOutOrder.setUpdateTime(DateUtils.getNowDate()); + oldOutOrder.setOutOrderTime(DateUtils.getNowDate()); + oldOutOrder.setWarehouseName(loginName); + return warehouseOutOrderMapper.updateWarehouseOutOrder(oldOutOrder); } /* @@ -1573,6 +1589,15 @@ public class WarehouseOutOrderServiceImpl implements IWarehouseOutOrderService if (insertDetailResult <= 0){ throw new BusinessException("新增库存履历失败!"); } + }else if ("4".equals(oldWarehouseOutOrder.getWarehouseOrderType())){ //退换货单 + WarehouseInventoryInquiryDetail inquiryDetail = createInquiryDetail(materialNo,outOrderCode,outOrderDetail.getActualOutOrderSum()); + inquiryDetail.setInquiryWarehouseType("15");//公司退货出库 + inquiryDetail.setInquiryOrderType("15");//退换货单 + inquiryDetail.setInquiryBusinessType("3");//退换货 + int insertDetailResult = inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail); + if (insertDetailResult <= 0){ + throw new BusinessException("新增库存履历失败!"); + } } return inquiryUpdateResult; } diff --git a/ruoyi-admin/src/main/resources/templates/warehouse/warehouseOutOrder/warehouseOutOrder.html b/ruoyi-admin/src/main/resources/templates/warehouse/warehouseOutOrder/warehouseOutOrder.html index 3cb6a162..291a77cd 100644 --- a/ruoyi-admin/src/main/resources/templates/warehouse/warehouseOutOrder/warehouseOutOrder.html +++ b/ruoyi-admin/src/main/resources/templates/warehouse/warehouseOutOrder/warehouseOutOrder.html @@ -245,7 +245,7 @@ } /*退换货-出库*/ - if (row.warehouseOutStatus == 4 && row.warehouseOrderType == 4 && row.warehouseOutType == 4){ + if ((row.warehouseOutStatus == 4 || row.warehouseOutStatus == 5) && row.warehouseOrderType == 4 && row.warehouseOutType == 4){ actions.push('出库 '); }