|
@@ -266,50 +266,106 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
|
|
|
List<FabricPoOrderOut> fabricPoOrderOutList = fabricLossMapper.getMoOrderInToOther(code);
|
|
|
// 委外入库仓库库存
|
|
|
List<FabricPoOrderOut> poOrderStockList = fabricLossMapper.getMoStockList(code);
|
|
|
+ // 获取入库的物料id列表
|
|
|
+ List<String> invIdList = new ArrayList<>();
|
|
|
+ for (FabricOMOrder omOrder : fabricOMOrderList){
|
|
|
+ List<FabricMoOrderRK> rkList = omOrder.getFabricMoOrderRKList();
|
|
|
+ if (oConvertUtils.listIsEmpty(rkList)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ for (FabricMoOrderRK rkItem : rkList){
|
|
|
+ invIdList.add(rkItem.getInvId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 销售出库的物料
|
|
|
+ List<FabricPoOrderOut> poSaleOutList = fabricLossMapper.getOmInSaleOutList(invIdList);
|
|
|
+ fabricPoOrderOutList.addAll(poSaleOutList);
|
|
|
+ fabricPoOrderOutList.addAll(poOrderStockList);
|
|
|
+ // 形态转换物料替换成形态转换前的,并吧转换前物料,数量设置
|
|
|
+ List<FabricPoOrderOut> tmpOutList = new ArrayList<>();
|
|
|
+ for (FabricPoOrderOut outItem : fabricPoOrderOutList){
|
|
|
+ List<Map<String, Object>> assemVouchList = fabricAssemVouchList.stream().filter(e->
|
|
|
+ oConvertUtils.getString(e.get("cInvCode2")).equals(outItem.getCInvCode()) &&
|
|
|
+ oConvertUtils.getString(e.get("cColor2")).equals(outItem.getCColor()) &&
|
|
|
+ outItem.getCBatch().equalsIgnoreCase(oConvertUtils.getString(e.get("cAVBatch2")))).collect(Collectors.toList());
|
|
|
+ if (assemVouchList.size() == 0){
|
|
|
+ tmpOutList.add(outItem);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ Double outSum = outItem.getIQuantity();
|
|
|
+ for (int i=0; i<assemVouchList.size(); i++){
|
|
|
+ Map<String, Object> assemVouchItem = assemVouchList.get(i);
|
|
|
+ String invCode = oConvertUtils.getString(assemVouchItem.get("cInvCode"));
|
|
|
+ String cColor = oConvertUtils.getString(assemVouchItem.get("cColor"));
|
|
|
+ String cAVBatch = oConvertUtils.getString(assemVouchItem.get("cAVBatch"));
|
|
|
+ Double iQuantity = oConvertUtils.getDouble(assemVouchItem.get("iAVQuantity").toString(), 0);
|
|
|
+ Double curOutSum = Math.min(outSum, iQuantity);
|
|
|
+ if (i == assemVouchList.size() -1){
|
|
|
+ curOutSum = outSum;
|
|
|
+ }
|
|
|
+ outSum-=curOutSum;
|
|
|
+ FabricPoOrderOut curItem = JSON.parseObject(JSON.toJSONString(outItem),FabricPoOrderOut.class);
|
|
|
+ curItem.setIQuantity(curOutSum);
|
|
|
+ curItem.setCInvCode(invCode);
|
|
|
+ curItem.setCColor(cColor);
|
|
|
+ curItem.setCBatch(cAVBatch);
|
|
|
+ tmpOutList.add(curItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ fabricPoOrderOutList = tmpOutList;
|
|
|
// 采购订单设置分配数量、委外供应商、余纱、采购损耗
|
|
|
for (FabricOMOrder omOrder : fabricOMOrderList){
|
|
|
// 委外入库的批次,及单价(单价=(单价*数量)加/数量
|
|
|
-
|
|
|
- if (omOrder.getFabricMoOrderRKList() == null){
|
|
|
+ List<FabricMoOrderRK> rkList = omOrder.getFabricMoOrderRKList();
|
|
|
+ if (oConvertUtils.listIsEmpty(rkList)){
|
|
|
continue;
|
|
|
}
|
|
|
List<String> inBatchList = new ArrayList<>();
|
|
|
Double dSum=0.0,dMoney=0.0,dPrice=0.0;
|
|
|
- for (FabricMoOrderRK rkItem : omOrder.getFabricMoOrderRKList()){
|
|
|
- inBatchList.add(rkItem.getCBatch().toLowerCase());
|
|
|
+ for (FabricMoOrderRK rkItem : rkList){
|
|
|
+ if (!inBatchList.contains(rkItem.getCBatch().toLowerCase())) {
|
|
|
+ inBatchList.add(rkItem.getCBatch().toLowerCase());
|
|
|
+ }
|
|
|
dSum = DoubleOperation.add(dSum,omOrder.getIQuantityIn());
|
|
|
dMoney = DoubleOperation.add(dMoney, DoubleOperation.mul(rkItem.getIQuantityIn(),rkItem.getIPrice()));
|
|
|
}
|
|
|
if (dSum>0){
|
|
|
dPrice = DoubleOperation.div(dMoney,dSum,4);
|
|
|
}
|
|
|
- // 获取委外形态转换物料
|
|
|
- List<Map<String, Object>> tmpAssemVouchList = fabricAssemVouchList.stream().filter(e->
|
|
|
- oConvertUtils.getString(e.get("cInvCode")).equals(omOrder.getCInvCode()) &&
|
|
|
- oConvertUtils.getString(e.get("cColor")).equals(omOrder.getCColor()) &&
|
|
|
- inBatchList.contains(oConvertUtils.getString(e.get("cBatch")).toLowerCase())).collect(Collectors.toList());
|
|
|
|
|
|
- // 未形态转换物料
|
|
|
- List<FabricPoOrderOut> tmpOmOutList1 = fabricPoOrderOutList.stream().filter(e->
|
|
|
+ List<FabricPoOrderOut> tmpOmOutList = fabricPoOrderOutList.stream().filter(e->
|
|
|
e.getCInvCode().equals(omOrder.getCInvCode()) &&
|
|
|
e.getCColor().equals(omOrder.getCColor()) &&
|
|
|
- inBatchList.contains(oConvertUtils.getString(e.getCBatch()).toLowerCase())).collect(Collectors.toList());
|
|
|
-
|
|
|
+ inBatchList.contains(oConvertUtils.getString(e.getCBatch()).toLowerCase()) &&
|
|
|
+ e.getIQuantity()!=0).collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<FabricPoOrderOut> tmpOmOutList1 = new ArrayList<>();
|
|
|
+ // 出库数量大于入库数量,设置成入库数量
|
|
|
+ for (String cBatch : inBatchList){
|
|
|
+ Double inSum = rkList.stream().filter(e->e.getCBatch().equalsIgnoreCase(cBatch)).mapToDouble(FabricMoOrderRK::getIQuantityIn).sum();
|
|
|
+ for (FabricPoOrderOut item : tmpOmOutList){
|
|
|
+ if (item.getCInvCode().equalsIgnoreCase(omOrder.getCInvCode()) &&
|
|
|
+ item.getCColor().equalsIgnoreCase(omOrder.getCColor()) &&
|
|
|
+ item.getCBatch().equalsIgnoreCase(cBatch)){
|
|
|
+ Double curSum = Math.min(inSum,item.getIQuantity());
|
|
|
+ inSum-= curSum;
|
|
|
+ item.setIQuantity(DoubleOperation.getScale(curSum,4));
|
|
|
+ tmpOmOutList1.add(item);
|
|
|
+ if (inSum<=0){
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- // 形态转换物料
|
|
|
- List<FabricPoOrderOut> tmpOmOutList2 = fabricPoOrderOutList.stream().filter(out->{
|
|
|
- return tmpAssemVouchList.stream().filter(e ->
|
|
|
- oConvertUtils.getString(e.get("cInvCode2")).equals(omOrder.getCInvCode()) &&
|
|
|
- oConvertUtils.getString(e.get("cColor2")).equals(omOrder.getCColor()) &&
|
|
|
- inBatchList.contains(oConvertUtils.getString(e.get("cAVBatch2")).toLowerCase())
|
|
|
- ).count() > 0;
|
|
|
- }).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- tmpOmOutList1.addAll(tmpOmOutList2);
|
|
|
|
|
|
|
|
|
for (FabricPoOrderOut item : tmpOmOutList1){
|
|
|
String cCode = item.getCCode();
|
|
|
+ if (oConvertUtils.isEmpty(cCode)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
int index1 = cCode.indexOf("SY");
|
|
|
if (index1 == -1) {
|
|
|
continue;
|
|
@@ -322,6 +378,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
|
|
|
item.setIMoney(DoubleOperation.mul(dPrice, item.getIQuantity()));
|
|
|
|
|
|
}
|
|
|
+ /*
|
|
|
// 设置仓库库存
|
|
|
List<FabricPoOrderOut> findPoOrderStockList = poOrderStockList.stream().filter(e->
|
|
|
omOrder.getCInvCode().equals(e.getCInvCode()) &&
|
|
@@ -332,7 +389,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
|
|
|
item.setIMoney(DoubleOperation.mul(dPrice, item.getIQuantity()));
|
|
|
|
|
|
}
|
|
|
- tmpOmOutList1.addAll(findPoOrderStockList);
|
|
|
+ tmpOmOutList1.addAll(findPoOrderStockList);*/
|
|
|
|
|
|
omOrder.setFabricPoOrderOutList(tmpOmOutList1);
|
|
|
}
|
|
@@ -876,7 +933,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
|
|
|
groupCkList.add(ckItem);
|
|
|
}
|
|
|
}
|
|
|
- omOrder.setFabricMoOrderCKList(groupCkList.stream().filter(e->e.getIQuantityOut()>0).collect(Collectors.toList()));
|
|
|
+ omOrder.setFabricMoOrderCKList(groupCkList.stream().filter(e->e.getIQuantityOut()!=0).collect(Collectors.toList()));
|
|
|
|
|
|
List<FabricMoOrderRK> rkList = omOrder.getFabricMoOrderRKList();
|
|
|
List<FabricMoOrderRK> groupRkList = new ArrayList<>();
|
|
@@ -896,7 +953,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
|
|
|
groupRkList.add(rkItem);
|
|
|
}
|
|
|
}
|
|
|
- omOrder.setFabricMoOrderRKList(groupRkList.stream().filter(e->e.getIQuantityIn()>0).collect(Collectors.toList()));
|
|
|
+ omOrder.setFabricMoOrderRKList(groupRkList.stream().filter(e->e.getIQuantityIn()!=0).collect(Collectors.toList()));
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -940,13 +997,13 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
|
|
|
if (findInOutList.size() == 0){
|
|
|
continue;
|
|
|
}*/
|
|
|
- List<FabricMoOrderRK> findInList = moInList.stream().filter(e->e.getMODetailsID().equals(detailId)&&e.getInvId().equalsIgnoreCase(item.getInvId())).collect(Collectors.toList());
|
|
|
+ List<FabricMoOrderRK> findInList = moInList.stream().filter(e->e.getMODetailsID().equals(detailId.toString())&&e.getInvId().equalsIgnoreCase(item.getInvId())).collect(Collectors.toList());
|
|
|
if (findInList.size() == 0){
|
|
|
continue;
|
|
|
}
|
|
|
Double iProcessFee = findInList.get(0).getIProcessFee();
|
|
|
Double iQuantityIn = findInList.get(0).getIQuantityIn();
|
|
|
- Double iTotalIn = moInList.stream().filter(e->e.getMODetailsID().equals(detailId)).mapToDouble(FabricMoOrderRK::getIQuantityIn).sum();
|
|
|
+ Double iTotalIn = moInList.stream().filter(e->e.getMODetailsID().equals(detailId.toString())).mapToDouble(FabricMoOrderRK::getIQuantityIn).sum();
|
|
|
Double iOutTotalMoney = 0.0;// 出库材料费用
|
|
|
|
|
|
for (FabricMoOrderCK ckItem : outList){
|