以往阶段已采购,当前阶段没有采购,采购数量为负数,在当前阶段新增该条目
This commit is contained in:
@@ -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));
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user