diff --git a/src/main/java/com/vverp/service/MaterialOrderService.java b/src/main/java/com/vverp/service/MaterialOrderService.java index 63b3a7c..87f880b 100644 --- a/src/main/java/com/vverp/service/MaterialOrderService.java +++ b/src/main/java/com/vverp/service/MaterialOrderService.java @@ -1010,6 +1010,7 @@ public class MaterialOrderService extends BaseOrderService nowCount = new BigDecimal(ExcelUtil2.getCellValue(row.getCell(13))); } BigDecimal count = BigDecimal.ZERO; + BigDecimal negativeCount = BigDecimal.ZERO; if (firstStage) { if (ExcelUtil2.getCellValue(row.getCell(13)).equals("")){ // throw new RuntimeException("本次采购量不能为空"); @@ -1056,27 +1057,36 @@ public class MaterialOrderService extends BaseOrderService // map.put("preCount",useCount); // map.put("errorMessage","当前阶段较以往阶段采购数量减少"); // specialList.add(map); + negativeCount = count; count = BigDecimal.ZERO; } } item.setNeedCount(needCount); - if (stockMap.containsKey(materialOrder.getProgressId()+"_"+item.getProductCode())){ - ProgressStock stockProduct = stockMap.get(materialOrder.getProgressId()+"_"+item.getProductCode()); - if (stockProduct.getStockCount().compareTo(count)>=0){ - item.setCount(BigDecimal.ZERO); - item.setUseStockCount(count); - stockProduct.setStockCount(stockProduct.getStockCount().subtract(count)); - }else { - item.setCount(count.subtract(stockProduct.getStockCount())); - item.setUseStockCount(stockProduct.getStockCount()); - stockProduct.setStockCount(BigDecimal.ZERO); - } - stockMap.put(materialOrder.getProgressId()+"_"+item.getProductCode(),stockProduct); - }else { - item.setCount(count); - } + item.setCount(count.add(negativeCount)); + //后续添加虚拟仓库时使用下列代码,目前绑定在库存管理错误 +// if (stockMap.containsKey(materialOrder.getProgressId()+"_"+item.getProductCode())){ +// ProgressStock stockProduct = stockMap.get(materialOrder.getProgressId()+"_"+item.getProductCode()); +// if (stockProduct.getStockCount().compareTo(count)>=0){ +//// item.setCount(BigDecimal.ZERO); +// item.setCount(negativeCount); +// item.setUseStockCount(count); +// stockProduct.setStockCount(stockProduct.getStockCount().subtract(count)); +// count=BigDecimal.ZERO; +// }else { +// item.setCount(count.subtract(stockProduct.getStockCount())); +// item.setUseStockCount(stockProduct.getStockCount()); +// stockProduct.setStockCount(BigDecimal.ZERO); +// count=count.subtract(stockProduct.getStockCount()); +// } +// stockMap.put(materialOrder.getProgressId()+"_"+item.getProductCode(),stockProduct); +// }else { +// item.setCount(count); +// } 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); + } item.setSupplierIds(new ArrayList<>()); for (Integer key : valueMap.keySet()) { @@ -1188,7 +1198,7 @@ public class MaterialOrderService extends BaseOrderService MaterialOrder materialOrder = find(materialOrderId); //获取以前阶段 Map prevMap = new HashMap<>(); - Map LongMap = new HashMap<>(); + Map prevMapM = new HashMap<>(); List prevMaterialOrderList = findByStageNum(materialOrder.getPreTitle(), materialOrder.getStageNum(), materialOrder.getProgressId()); for (MaterialOrder prevMaterialOrder : prevMaterialOrderList) { List prevItemList = materialOrderItemService.findByVersionNum(prevMaterialOrder.getVersionNum(), prevMaterialOrder.getId()); @@ -1197,18 +1207,22 @@ public class MaterialOrderService extends BaseOrderService +"_"+prevItem.getLineAccount()+"_"+prevItem.getProductCode(); if (!prevMap.containsKey(str)){ prevMap.put(str,prevItem.getCount()); + prevMapM.put(str,prevItem); }else { BigDecimal prevCount = prevMap.get(str).add(prevItem.getCount()); prevMap.put(str,prevCount); + prevMapM.put(str,prevItem); } - LongMap.put(str,prevItem.getLongDescription()); } } //获取当前阶段 List itemList = materialOrderItemService.findByVersionNum(materialOrder.getVersionNum(), materialOrder.getId()); + int ind=0; for (MaterialOrderItem item : itemList){ String str = item.getName()+"_"+item.getUnitAccount()+"_"+item.getSiteAccount() +"_"+item.getLineAccount()+"_"+item.getProductCode(); + if (ind 0){ @@ -1239,6 +1253,7 @@ public class MaterialOrderService extends BaseOrderService specialList.add(map); } prevMap.remove(str); + prevMapM.remove(str); } else { map = new HashMap<>(); map.put("ind",item.getInd()); @@ -1254,20 +1269,82 @@ public class MaterialOrderService extends BaseOrderService specialList.add(map); } } - for (Map.Entry entry : prevMap.entrySet()) { +// for (Map.Entry entry : prevMap.entrySet()) { +// map = new HashMap<>(); +// map.put("ind",' '); +// map.put("name",entry.getKey().split("_")[0]); +// map.put("unit",entry.getKey().split("_")[1]); +// map.put("site",entry.getKey().split("_")[2]); +// map.put("line",entry.getKey().split("_")[3]); +// map.put("code",entry.getKey().split("_")[4]); +// map.put("longDescription",LongMap.get(entry.getKey())); +// map.put("needCount",' '); +// map.put("preCount",entry.getValue()); +// map.put("errorMessage","以往阶段已采购,当前阶段没有采购"); +// specialList.add(map); +// } + for (Map.Entry entry : prevMapM.entrySet()) { + System.out.println(materialOrder); + MaterialOrderItem materialOrderItem = new MaterialOrderItem(); + materialOrderItem.setMaterialOrder(materialOrder); + ind=ind+1; + materialOrderItem.setInd(ind); + materialOrderItem.setBigProductTypeId(entry.getValue().getBigProductTypeId()); + materialOrderItem.setBigProductType(entry.getValue().getBigProductType()); + materialOrderItem.setBigProductDes(entry.getValue().getBigProductDes()); + materialOrderItem.setSmallTypeId(entry.getValue().getSmallTypeId()); + materialOrderItem.setSmallProductType(entry.getValue().getSmallProductType()); + materialOrderItem.setSmallProductDes(entry.getValue().getSmallProductDes()); + materialOrderItem.setProductId(entry.getValue().getProductId()); + materialOrderItem.setName(entry.getValue().getName()); + materialOrderItem.setAreaAccount(entry.getValue().getAreaAccount()); + materialOrderItem.setUnitAccount(entry.getValue().getUnitAccount()); + materialOrderItem.setSiteAccount(entry.getValue().getSiteAccount()); + materialOrderItem.setLineAccount(entry.getValue().getLineAccount()); + materialOrderItem.setCodeType(entry.getValue().getCodeType()); + materialOrderItem.setProductCode(entry.getValue().getProductCode()); + materialOrderItem.setShortDescription(entry.getValue().getShortDescription()); + materialOrderItem.setLongDescription(entry.getValue().getLongDescription()); + materialOrderItem.setgWeight(entry.getValue().getgWeight()); + materialOrderItem.setUnit(entry.getValue().getUnit()); + materialOrderItem.setDiameterL(entry.getValue().getDiameterL()); + materialOrderItem.setDiameterS(entry.getValue().getDiameterS()); + materialOrderItem.setWallThicknessL(entry.getValue().getWallThicknessL()); + materialOrderItem.setWallThicknessS(entry.getValue().getWallThicknessS()); + materialOrderItem.setSize(entry.getValue().getSize()); + materialOrderItem.setPressureLevel(entry.getValue().getPressureLevel()); + materialOrderItem.setEndFace(entry.getValue().getEndFace()); + materialOrderItem.setMaterial(entry.getValue().getMaterial()); + materialOrderItem.setInsulationCode(entry.getValue().getInsulationCode()); + materialOrderItem.setSpecialRequest(entry.getValue().getSpecialRequest()); + materialOrderItem.setMaterialType(entry.getValue().getMaterialType()); + materialOrderItem.setMakeCode(entry.getValue().getMakeCode()); + materialOrderItem.setMakeName(entry.getValue().getMakeName()); + materialOrderItem.setMemo(entry.getValue().getMemo()); + materialOrderItem.setJacketSpec(entry.getValue().getJacketSpec()); + materialOrderItem.setVersionNum(materialOrder.getVersionNum()); + materialOrderItem.setCount(BigDecimal.ZERO.subtract(prevMap.get(entry.getKey()))); + materialOrderItem.setNeedCount(BigDecimal.ZERO); + materialOrderItem.setUseStockCount(BigDecimal.ZERO); + materialOrderItem.setTotalWeight(BigDecimal.ZERO); + materialOrderItemService.save(materialOrderItem); + + materialOrder.setTotalCount(materialOrder.getTotalCount().subtract(prevMap.get(entry.getKey()))); + map = new HashMap<>(); map.put("ind",' '); - map.put("name",entry.getKey().split("_")[0]); - map.put("unit",entry.getKey().split("_")[1]); - map.put("site",entry.getKey().split("_")[2]); - map.put("line",entry.getKey().split("_")[3]); - map.put("code",entry.getKey().split("_")[4]); - map.put("longDescription",LongMap.get(entry.getKey())); + map.put("name",entry.getValue().getName()); + map.put("unit",entry.getValue().getUnitAccount()); + map.put("site",entry.getValue().getSiteAccount()); + map.put("line",entry.getValue().getLineAccount()); + map.put("code",entry.getValue().getProductCode()); + map.put("longDescription",entry.getValue().getLongDescription()); map.put("needCount",' '); - map.put("preCount",entry.getValue()); + map.put("preCount",prevMap.get(entry.getKey())); map.put("errorMessage","以往阶段已采购,当前阶段没有采购"); specialList.add(map); } + update(materialOrder); } @@ -3971,22 +4048,23 @@ public class MaterialOrderService extends BaseOrderService for(ProgressStock product : progressStockService.findAll()){ productMap.put(product.getProgressId()+"_"+product.getProduct().getCode(),product); } - for(Long id : ids){ - MaterialOrder materialOrder = find(id); - List materialOrderItemList = materialOrderItemService.findByVersionNum(materialOrder.getVersionNum(),materialOrder.getId()); - for (MaterialOrderItem item : materialOrderItemList){ - if (item.getUseStockCount() != null && item.getUseStockCount().compareTo(BigDecimal.ZERO)>0){ - ProgressStock product = productMap.getOrDefault(item.getMaterialOrder().getProgressId()+"_"+item.getProductCode(),null); - if (product != null){ - product.setStockCount(product.getStockCount().add(item.getUseStockCount())); - productMap.put(item.getMaterialOrder().getProgressId()+"_"+item.getProductCode(),product); - } - } - } - } delete(ids); - for (String key : productMap.keySet()){ - progressStockService.update(productMap.get(key)); - } + //后续添加虚拟仓库时使用下列代码,目前绑定在库存管理错误 +// for(Long id : ids){ +// MaterialOrder materialOrder = find(id); +// List materialOrderItemList = materialOrderItemService.findByVersionNum(materialOrder.getVersionNum(),materialOrder.getId()); +// for (MaterialOrderItem item : materialOrderItemList){ +// if (item.getUseStockCount() != null && item.getUseStockCount().compareTo(BigDecimal.ZERO)>0){ +// ProgressStock product = productMap.getOrDefault(item.getMaterialOrder().getProgressId()+"_"+item.getProductCode(),null); +// if (product != null){ +// product.setStockCount(product.getStockCount().add(item.getUseStockCount())); +// productMap.put(item.getMaterialOrder().getProgressId()+"_"+item.getProductCode(),product); +// } +// } +// } +// } +// for (String key : productMap.keySet()){ +// progressStockService.update(productMap.get(key)); +// } } }