From 7c2f30520c4adf1cdbd544d2c7e6181dd0e69968 Mon Sep 17 00:00:00 2001 From: suncz Date: Fri, 31 Oct 2025 13:42:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=99=E5=8D=95=E2=80=9C=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E8=80=83=E8=99=91=E7=AE=A1=E7=BA=BF=E5=8F=B7=E2=80=9D=EF=BC=8C?= =?UTF-8?q?=E5=BF=BD=E7=95=A5=E7=AE=A1=E7=BA=BF=E5=8F=B7=E7=9A=84=E5=90=8C?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=90=8C=E6=A0=B7=E5=BF=BD=E7=95=A5=E5=8D=95?= =?UTF-8?q?=E5=85=83=E5=8F=B7=EF=BC=9B=E4=BF=AE=E5=A4=8D=E6=AF=8F=E4=B8=AA?= =?UTF-8?q?=E9=98=B6=E6=AE=B5=E7=9A=84=E6=80=BB=E6=95=B0=E9=87=8F=EF=BC=88?= =?UTF-8?q?=E4=BB=B6=EF=BC=89=E7=BB=9F=E8=AE=A1=E6=96=99=E5=8D=95=E5=90=88?= =?UTF-8?q?=E5=B9=B6=E9=A1=B9=E7=9A=84=E6=95=B0=E9=87=8F=E9=94=99=E8=AF=AF?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../constant/MaterialOrderItemConsts.java | 2 +- .../admin/MaterialOrderController.java | 2 +- .../java/com/vverp/entity/MaterialOrder.java | 2 +- .../vverp/service/MaterialOrderService.java | 46 +++++++++++++------ .../template/materialOrder/addFile.html | 4 +- 5 files changed, 38 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/vverp/constant/MaterialOrderItemConsts.java b/src/main/java/com/vverp/constant/MaterialOrderItemConsts.java index a916ed8..cbe59dc 100644 --- a/src/main/java/com/vverp/constant/MaterialOrderItemConsts.java +++ b/src/main/java/com/vverp/constant/MaterialOrderItemConsts.java @@ -4,7 +4,7 @@ import org.apache.commons.lang3.BooleanUtils; public class MaterialOrderItemConsts { - // 根据当前阶段的是否考虑管线号、隔热代号,返回之前阶段的管线号 + // 根据当前阶段的是否考虑单元号、管线号、隔热代号,返回之前阶段的管线号 public static String getPrevStageLineAccount(Boolean ignoreLineAccount, String prevStageLineAccount) { return BooleanUtils.isTrue(ignoreLineAccount) ? "-" : prevStageLineAccount; } diff --git a/src/main/java/com/vverp/controller/admin/MaterialOrderController.java b/src/main/java/com/vverp/controller/admin/MaterialOrderController.java index 4036c16..8da7516 100644 --- a/src/main/java/com/vverp/controller/admin/MaterialOrderController.java +++ b/src/main/java/com/vverp/controller/admin/MaterialOrderController.java @@ -481,7 +481,7 @@ public class MaterialOrderController extends BaseController { return RespData.error("阶段不能为空"); } if (ignoreLineAccount == null) { - return RespData.error("是否考虑管线号隔热代号不能为空"); + return RespData.error("是否考虑单元号、管线号、隔热代号不能为空"); } } //获得文件名 diff --git a/src/main/java/com/vverp/entity/MaterialOrder.java b/src/main/java/com/vverp/entity/MaterialOrder.java index 2299a9e..686e85c 100644 --- a/src/main/java/com/vverp/entity/MaterialOrder.java +++ b/src/main/java/com/vverp/entity/MaterialOrder.java @@ -131,7 +131,7 @@ public class MaterialOrder extends OrderBase{ /** 是否创建订货单 */ private Boolean hasPurchaseOrder; - /** 匹配忽略管线号、隔热代号 */ + /** 匹配忽略单元号、管线号、隔热代号 */ private Boolean ignoreLineAccount; public String getName() { diff --git a/src/main/java/com/vverp/service/MaterialOrderService.java b/src/main/java/com/vverp/service/MaterialOrderService.java index 53c2ed5..64f8d2b 100644 --- a/src/main/java/com/vverp/service/MaterialOrderService.java +++ b/src/main/java/com/vverp/service/MaterialOrderService.java @@ -674,18 +674,25 @@ public class MaterialOrderService extends BaseOrderService +"_"+materialOrderItem.getMemo()+"_"+materialOrderItem.getSize() +"_"+materialOrderItem.getSpecialRequest()+"_"+ MaterialOrderItemConsts.getPrevStageLineAccount(ignoreLineAccount, materialOrderItem.getInsulationCode()) +"_"+ MaterialOrderItemConsts.getPrevStageLineAccount(ignoreLineAccount, materialOrderItem.getLineAccount()) +"_"+materialOrderItem.getAreaAccount() - +"_"+materialOrderItem.getSiteAccount()+"_"+materialOrderItem.getUnitAccount() + +"_"+materialOrderItem.getSiteAccount()+"_"+ MaterialOrderItemConsts.getPrevStageLineAccount(ignoreLineAccount, materialOrderItem.getUnitAccount()) +"_"+materialOrderItem.getProductCode()+"_"+materialOrderItem.getPurchaseCode() +"_"+materialOrderItem.getMakeCode()+"_"+materialOrderItem.getMaterialType() +"_"+materialOrderItem.getEndFace()+"_"+materialOrderItem.getPressureLevel(); if (!countMap.containsKey(str)){ - countMap.put(str,materialOrderItem.getCount().compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : materialOrderItem.getCount()); + countMap.put(str,materialOrderItem.getCount()); }else { BigDecimal count = countMap.get(str); - count = count.add(materialOrderItem.getCount().compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : materialOrderItem.getCount()); + count = count.add(materialOrderItem.getCount()); countMap.put(str,count); } } + // 每一个阶段遍历countMap并替换负数值为 0 + for (Map.Entry entry : countMap.entrySet()) { + BigDecimal value = entry.getValue(); + if (value.compareTo(BigDecimal.ZERO) < 0) { // 如果小于 0 , 替换为 0 + entry.setValue(BigDecimal.ZERO); + } + } } } materialOrder.setStage(stage.getId().intValue()); @@ -826,7 +833,7 @@ public class MaterialOrderService extends BaseOrderService Integer ind = Integer.valueOf(ExcelUtil2.getCellValue(row.getCell(0))); String name = ExcelUtil2.getCellValue(row.getCell(1)); String areaAccount = ExcelUtil2.getCellValue(row.getCell(2)); - String unitAccount = ExcelUtil2.getCellValue(row.getCell(3)); + String unitAccount = BooleanUtils.isTrue(ignoreLineAccount) ? "-" : ExcelUtil2.getCellValue(row.getCell(3)); String siteAccount = ExcelUtil2.getCellValue(row.getCell(4)); String lineAccount = BooleanUtils.isTrue(ignoreLineAccount) ? "-" : ExcelUtil2.getCellValue(row.getCell(5)); String codeType = ExcelUtil2.getCellValue(row.getCell(6)); @@ -1093,9 +1100,9 @@ public class MaterialOrderService extends BaseOrderService // } item.setTotalWeight(totalWeight == null ? (product.getgWeight()==null?BigDecimal.ZERO:product.getgWeight()).multiply(count) : totalWeight); orderCount = orderCount.add(count); -// if(negativeCount.compareTo(BigDecimal.ZERO)<0){//后续阶段数量意外减少,采购数量为负数 -// orderCount = orderCount.add(negativeCount); -// } + if(negativeCount.compareTo(BigDecimal.ZERO)<0){//后续阶段数量意外减少,采购数量为负数 + orderCount = orderCount.add(negativeCount); + } item.setSupplierIds(new ArrayList<>()); for (Integer key : valueMap.keySet()) { @@ -1156,6 +1163,13 @@ public class MaterialOrderService extends BaseOrderService } } } + // 料单项合并后,当采购数量为负数时,不计入总数量 + for (Map.Entry entry : ignoreLineAccountMergeItemMap.entrySet()) { + MaterialOrderItem item = entry.getValue(); + if (item.getCount().compareTo(BigDecimal.ZERO) < 0) { // 如果小于 0 + orderCount = orderCount.subtract(item.getCount()); + } + } materialOrder.setTotalCount(orderCount); materialOrder.setTotalWeight(orderWeight); update(materialOrder); @@ -1244,20 +1258,26 @@ public class MaterialOrderService extends BaseOrderService +"_"+prevItem.getMemo()+"_"+prevItem.getSize() +"_"+prevItem.getSpecialRequest()+"_"+ MaterialOrderItemConsts.getPrevStageLineAccount(materialOrder.getIgnoreLineAccount(), prevItem.getInsulationCode()) +"_"+ MaterialOrderItemConsts.getPrevStageLineAccount(materialOrder.getIgnoreLineAccount(), prevItem.getLineAccount()) +"_"+prevItem.getAreaAccount() - +"_"+prevItem.getSiteAccount()+"_"+prevItem.getUnitAccount() + +"_"+prevItem.getSiteAccount()+"_"+ MaterialOrderItemConsts.getPrevStageLineAccount(materialOrder.getIgnoreLineAccount(), prevItem.getUnitAccount()) +"_"+prevItem.getProductCode()+"_"+prevItem.getPurchaseCode() +"_"+prevItem.getMakeCode()+"_"+prevItem.getMaterialType() +"_"+prevItem.getEndFace()+"_"+prevItem.getPressureLevel(); - // 如果 prevItem.getCount()的值 小于0,则返回 BigDecimal.ZERO, 大于或等于0,返回 prevItem.getCount()本身。 if (!prevMap.containsKey(str)){ - prevMap.put(str,prevItem.getCount().compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : prevItem.getCount()); + prevMap.put(str,prevItem.getCount()); prevMapM.put(str,prevItem); }else { - BigDecimal prevCount = prevMap.get(str).add(prevItem.getCount().compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : prevItem.getCount()); + BigDecimal prevCount = prevMap.get(str).add(prevItem.getCount()); prevMap.put(str,prevCount); prevMapM.put(str,prevItem); } } + // 每一个阶段遍历prevMap并替换负数值为 0 + for (Map.Entry entry : prevMap.entrySet()) { + BigDecimal value = entry.getValue(); + if (value.compareTo(BigDecimal.ZERO) < 0) { // 如果小于 0 , 替换为 0 + entry.setValue(BigDecimal.ZERO); + } + } } //获取当前阶段 List itemList = materialOrderItemService.findByVersionNum(materialOrder.getVersionNum(), materialOrder.getId()); @@ -1275,7 +1295,7 @@ public class MaterialOrderService extends BaseOrderService +"_"+item.getMemo()+"_"+item.getSize() +"_"+item.getSpecialRequest()+"_"+ MaterialOrderItemConsts.getPrevStageLineAccount(materialOrder.getIgnoreLineAccount(), item.getInsulationCode()) +"_"+ MaterialOrderItemConsts.getPrevStageLineAccount(materialOrder.getIgnoreLineAccount(), item.getLineAccount()) +"_"+item.getAreaAccount() - +"_"+item.getSiteAccount()+"_"+item.getUnitAccount() + +"_"+item.getSiteAccount()+"_"+ MaterialOrderItemConsts.getPrevStageLineAccount(materialOrder.getIgnoreLineAccount(), item.getUnitAccount()) +"_"+item.getProductCode()+"_"+item.getPurchaseCode() +"_"+item.getMakeCode()+"_"+item.getMaterialType() +"_"+item.getEndFace()+"_"+item.getPressureLevel(); @@ -1369,7 +1389,7 @@ public class MaterialOrderService extends BaseOrderService materialOrderItem.setProductId(entry.getValue().getProductId()); materialOrderItem.setName(entry.getValue().getName()); materialOrderItem.setAreaAccount(entry.getValue().getAreaAccount()); - materialOrderItem.setUnitAccount(entry.getValue().getUnitAccount()); + materialOrderItem.setUnitAccount(MaterialOrderItemConsts.getPrevStageLineAccount(materialOrder.getIgnoreLineAccount(), entry.getValue().getUnitAccount())); materialOrderItem.setSiteAccount(entry.getValue().getSiteAccount()); materialOrderItem.setLineAccount(MaterialOrderItemConsts.getPrevStageLineAccount(materialOrder.getIgnoreLineAccount(), entry.getValue().getLineAccount())); materialOrderItem.setCodeType(entry.getValue().getCodeType()); diff --git a/src/main/webapp/WEB-INF/template/materialOrder/addFile.html b/src/main/webapp/WEB-INF/template/materialOrder/addFile.html index ea91b01..a1d7426 100644 --- a/src/main/webapp/WEB-INF/template/materialOrder/addFile.html +++ b/src/main/webapp/WEB-INF/template/materialOrder/addFile.html @@ -83,7 +83,7 @@
- +