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); } } // 存在库存查询记录,更新可用库存数