From e4a07f1e583360ff20ba5bc02662e6dd79f0256c 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, 4 Dec 2024 14:30:24 +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=85=A5=E5=BA=93=E5=8D=95=20=E4=BF=AE=E6=94=B9=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E5=A7=94=E5=A4=96=E5=8D=95=E5=85=A5=E5=BA=93service?= =?UTF-8?q?=E6=96=B9=E6=B3=95=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WarehouseStorageOrderServiceImpl.java | 48 +++++++++++-------- 1 file changed, 28 insertions(+), 20 deletions(-) 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 25ac4673..051d2177 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 @@ -480,51 +480,60 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS @Override public int updateOutsourceStorageSave(WarehouseStorageOrder warehouseStorageOrder) { String loginName = ShiroUtils.getLoginName(); - //假设全部入库 - warehouseStorageOrder.setWarehouseStorageStatus("4"); + warehouseStorageOrder.setUpdateBy(loginName); warehouseStorageOrder.setUpdateTime(DateUtils.getNowDate()); //记录一下入库时间 warehouseStorageOrder.setStorageTime(DateUtils.getNowDate()); - List warehouseStorageOrderDetailList = warehouseStorageOrder.getWarehouseStorageOrderDetailList(); - if (StringUtils.isEmpty(warehouseStorageOrderDetailList)){ - log.warn("入库单详情数据为空:{}",warehouseStorageOrderDetailList); + List storageOrderDetailList = warehouseStorageOrder.getWarehouseStorageOrderDetailList(); + if (StringUtils.isEmpty(storageOrderDetailList)){ throw new BusinessException("入库单详情数据为空"); } //入库数 Integer storageNum = 0; // 检查storageNum是否含有null值 - boolean hasThisStorageNumNull = warehouseStorageOrderDetailList.stream() + boolean hasThisStorageNumNull = storageOrderDetailList.stream() .anyMatch(item -> item.getStorageNum() == null); if (hasThisStorageNumNull) { throw new BusinessException("存在入库数为空,请检查!"); } // 计算各个字段的总和 - storageNum = warehouseStorageOrderDetailList.stream() + storageNum = storageOrderDetailList.stream() .mapToInt(WarehouseStorageOrderDetail::getStorageNum) .sum(); + for (WarehouseStorageOrderDetail detail: storageOrderDetailList) { + int detailStorageNum = detail.getHasStorageNum() + detail.getStorageNum(); + if(detailStorageNum > detail.getQualityQualifiedNum()){ + throw new BusinessException("物料" +detail.getMaterialNo()+ "总入库数大于品质合格数"); + } + } + //插入主表入库数量 - warehouseStorageOrder.setStorageNum(storageNum); + int orderStorageNum = warehouseStorageOrder.getStorageNum(); + orderStorageNum = orderStorageNum + storageNum; + warehouseStorageOrder.setStorageNum(orderStorageNum); - for (WarehouseStorageOrderDetail warehouseStorageOrderDetail : warehouseStorageOrderDetailList) { + for (WarehouseStorageOrderDetail storageOrderDetail : storageOrderDetailList) { //更新入库单详情的数据 - warehouseStorageOrderDetail.setUpdateBy(loginName); - warehouseStorageOrderDetail.setUpdateTime(DateUtils.getNowDate()); + storageOrderDetail.setUpdateBy(loginName); + storageOrderDetail.setUpdateTime(DateUtils.getNowDate()); //更新已入库数 - warehouseStorageOrderDetail.setHasStorageNum(warehouseStorageOrderDetail.getStorageNum()); - int updateWarehouseStorageOrderDetailResult = storageOrderDetailMapper.updateWarehouseStorageOrderDetail(warehouseStorageOrderDetail); + int detailStorageNum = storageOrderDetail.getHasStorageNum() + storageOrderDetail.getStorageNum(); + storageOrderDetail.setHasStorageNum(detailStorageNum); + int updateWarehouseStorageOrderDetailResult = storageOrderDetailMapper.updateWarehouseStorageOrderDetail(storageOrderDetail); if (updateWarehouseStorageOrderDetailResult <= 0){ throw new BusinessException("更新仓库入库单详情失败,未影响任何行"); } + //更新委外入库单详情,(只更新子表,详情页面需要展示,主表直接使用入库单,不存在 OutsourceStorageDetail tempOut = new OutsourceStorageDetail(); - tempOut.setWarehouseStorageCode(warehouseStorageOrderDetail.getWarehouseStorageCode()); - tempOut.setMaterialNo(warehouseStorageOrderDetail.getMaterialNo()); + tempOut.setWarehouseStorageCode(storageOrderDetail.getWarehouseStorageCode()); + tempOut.setMaterialNo(storageOrderDetail.getMaterialNo()); List outStorageDetails = outsourceStorageDetailMapper.selectOutsourceStorageDetailList(tempOut); OutsourceStorageDetail updateDetail = outStorageDetails.get(0); - updateDetail.setTakenMaterial(new BigDecimal(warehouseStorageOrderDetail.getHasStorageNum())); + updateDetail.setTakenMaterial(new BigDecimal(storageOrderDetail.getHasStorageNum()));//入库单详情已领料数已更新 updateDetail.setUpdateBy(loginName); updateDetail.setUpdateTime(DateUtils.getNowDate()); int outUpdateResult = outsourceStorageDetailMapper.updateOutsourceStorageDetail(updateDetail); @@ -532,12 +541,11 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS throw new BusinessException("更新委外入库单详情失败!"); } - WarehouseStorageOrderDetail storageOrderDetail = storageOrderDetailMapper.selectWarehouseStorageOrderDetailById(warehouseStorageOrderDetail.getWarehouseStorageDetailId()); - int inventoryInquiryResult = createWarehouseInventoryInquiry(storageOrderDetail); + WarehouseStorageOrderDetail updateStorageOrderDetail = storageOrderDetailMapper.selectWarehouseStorageOrderDetailById(storageOrderDetail.getWarehouseStorageDetailId()); + int inventoryInquiryResult = createWarehouseInventoryInquiry(updateStorageOrderDetail); if (inventoryInquiryResult <= 0){ throw new BusinessException("更新/新增库存查询失败,未影响任何行"); } - } //更新入库单的数据 @@ -740,7 +748,7 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS if(StringUtils.isNotEmpty(damageChildren)){ for (WarehouseInventoryReportDamageChild damageChild:damageChildren) { BigDecimal scrapNum = damageChild.getActualScrapQuantity(); - scrapSum = scrapSum.add(scrapSum); + scrapSum = scrapSum.add(scrapNum); } } // 存在库存查询记录,更新可用库存数