以往阶段已采购,当前阶段没有采购,采购数量为负数,在当前阶段新增该条目

This commit is contained in:
suncz
2024-05-31 10:33:48 +08:00
parent 8ce789d64b
commit 0fff58c990

View File

@@ -1010,6 +1010,7 @@ public class MaterialOrderService extends BaseOrderService<MaterialOrder, Long>
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<MaterialOrder, Long>
// 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, Long>
MaterialOrder materialOrder = find(materialOrderId);
//获取以前阶段
Map<String,BigDecimal> prevMap = new HashMap<>();
Map<String,String> LongMap = new HashMap<>();
Map<String,MaterialOrderItem> prevMapM = new HashMap<>();
List<MaterialOrder> prevMaterialOrderList = findByStageNum(materialOrder.getPreTitle(), materialOrder.getStageNum(), materialOrder.getProgressId());
for (MaterialOrder prevMaterialOrder : prevMaterialOrderList) {
List<MaterialOrderItem> prevItemList = materialOrderItemService.findByVersionNum(prevMaterialOrder.getVersionNum(), prevMaterialOrder.getId());
@@ -1197,18 +1207,22 @@ public class MaterialOrderService extends BaseOrderService<MaterialOrder, Long>
+"_"+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<MaterialOrderItem> 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<item.getInd())
ind=item.getInd();
if (prevMap.containsKey(str)){
BigDecimal prevCount = prevMap.get(str);
if (prevCount.compareTo(item.getNeedCount()) > 0){
@@ -1239,6 +1253,7 @@ public class MaterialOrderService extends BaseOrderService<MaterialOrder, Long>
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<MaterialOrder, Long>
specialList.add(map);
}
}
for (Map.Entry<String,BigDecimal> entry : prevMap.entrySet()) {
// for (Map.Entry<String,BigDecimal> 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<String,MaterialOrderItem> 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<MaterialOrder, Long>
for(ProgressStock product : progressStockService.findAll()){
productMap.put(product.getProgressId()+"_"+product.getProduct().getCode(),product);
}
for(Long id : ids){
MaterialOrder materialOrder = find(id);
List<MaterialOrderItem> 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<MaterialOrderItem> 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));
// }
}
}