|
@@ -683,20 +683,8 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
|
|
|
//fabricCostInvoiceList.addAll(getInCost(ret.getFabricPoOrderList(), omOrderList));
|
|
|
// 转出成本
|
|
|
//List<FabricCostInvoice> outCostList = getOutCost(ret.getCCode(), ret.getFabricPoOrderList(), ret.getFabricOMOrderList1(), ret.getFabricOMOrderList2());
|
|
|
- List<FabricCostInvoice> inoutCostList = getInOutCost(ret.getCCode(), ret.getFabricPoOrderList(), ret.getFabricOMOrderList1(), ret.getFabricOMOrderList2());
|
|
|
- // 设置修改的工厂
|
|
|
- if (editData != null){
|
|
|
- List<FabricCostInvoice> editCostList = editData.getFabricCostInvoiceList();
|
|
|
- if (oConvertUtils.listIsNotEmpty(editCostList)){
|
|
|
- for (FabricCostInvoice item : inoutCostList){
|
|
|
- Optional<FabricCostInvoice> findOpt = editCostList.stream().filter(e->e.getCVCName().equalsIgnoreCase(item.getCVCName()) &&
|
|
|
- "转出成本".equalsIgnoreCase(e.getCBusType())).findFirst();
|
|
|
- if (findOpt.isPresent()){
|
|
|
- item.setCVenAbbName(findOpt.get().getCVenAbbName());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ List<FabricCostInvoice> inoutCostList = getInOutCost(ret.getCCode(), ret.getFabricPoOrderList(), ret.getFabricOMOrderList1(), ret.getFabricOMOrderList2(), editData);
|
|
|
+
|
|
|
fabricCostInvoiceList.addAll(inoutCostList);
|
|
|
|
|
|
ret.setFabricCostInvoiceList(fabricCostInvoiceList);
|
|
@@ -1475,9 +1463,11 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
|
|
|
* @param poOrderList - 订单列表
|
|
|
* @param omOrderListGn - 国内委外订单
|
|
|
* @param omOrderListGw - 国外委外订单
|
|
|
+ * @param editData - 修改计划,用于取保存的转入成本
|
|
|
* @return
|
|
|
*/
|
|
|
- private List<FabricCostInvoice> getInOutCost(String code, List<FabricPoOrder> poOrderList, List<FabricOMOrder> omOrderListGn, List<FabricOMOrder> omOrderListGw){
|
|
|
+ private List<FabricCostInvoice> getInOutCost(String code, List<FabricPoOrder> poOrderList, List<FabricOMOrder> omOrderListGn,
|
|
|
+ List<FabricOMOrder> omOrderListGw, FabricLoss editData){
|
|
|
// 采购出入库去掉末尾两行:来源余纱、其他入库纱
|
|
|
List<FabricPoOrder> poOrderListReal = poOrderList.stream().filter(e->!e.getCPOID().equals("来源余料") &&
|
|
|
!e.getCPOID().equals("其他入库")).collect(Collectors.toList());
|
|
@@ -1485,6 +1475,25 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
|
|
|
List<FabricOMOrder> allOmOrderList = new ArrayList<>();
|
|
|
allOmOrderList.addAll(omOrderListGn);
|
|
|
allOmOrderList.addAll(omOrderListGw);
|
|
|
+ // 保存的转入成本
|
|
|
+ List<FabricCostInvoiceDetail> saveCostInvoiceDetailList = new ArrayList<>();
|
|
|
+ // 保存的修改工厂
|
|
|
+ List<FabricCostInvoice> saveCostInvoiceList = new ArrayList<>();
|
|
|
+ if (editData != null){
|
|
|
+ List<FabricCostInvoice> costInvoiceList = editData.getFabricCostInvoiceList();
|
|
|
+ if (oConvertUtils.listIsNotEmpty(costInvoiceList)) {
|
|
|
+ for (FabricCostInvoice costInvoice : costInvoiceList) {
|
|
|
+ if ("转入成本".equalsIgnoreCase(costInvoice.getCBusType()) && oConvertUtils.listIsNotEmpty(costInvoice.getCostInvoiceDetailList())){
|
|
|
+ saveCostInvoiceDetailList.addAll(costInvoice.getCostInvoiceDetailList());
|
|
|
+ }
|
|
|
+ if ("转出成本".equalsIgnoreCase(costInvoice.getCBusType())){
|
|
|
+ saveCostInvoiceList.add(costInvoice);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
// 合并所有采购入库的物料批次。借用FabricPoOrderIn类
|
|
|
List<FabricPoOrderIn> allInList = new ArrayList<>();
|
|
|
for (FabricPoOrder item : poOrderListReal){
|
|
@@ -1559,55 +1568,50 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
|
|
|
List<FabricCostInvoiceDetail> costInvoiceDetailList = new ArrayList<>();
|
|
|
|
|
|
for (FabricMoOrderCK itemOut : allOutList){
|
|
|
- if (itemOut.getIQuantityOut()>0 && itemOut.getIPrice() != null &&
|
|
|
- DoubleOperation.mul(itemOut.getIQuantityOut(),itemOut.getIPrice(), 2)!=0) {
|
|
|
- FabricCostInvoice fabricCostInvoice = new FabricCostInvoice();
|
|
|
- fabricCostInvoice.setCVCName(itemOut.getCVCName());
|
|
|
- fabricCostInvoice.setCVenAbbName(itemOut.getCPlanCode() + " " + itemOut.getCVenAbbName());
|
|
|
- fabricCostInvoice.setCBusType("转入成本");
|
|
|
- fabricCostInvoice.setIMoney(DoubleOperation.mul(itemOut.getIQuantityOut(), itemOut.getIPrice(), 2));
|
|
|
- costInvoiceList.add(fabricCostInvoice);
|
|
|
- FabricCostInvoiceDetail costInvoiceDetail = FabricCostInvoiceDetail.get(fabricCostInvoice, itemOut);
|
|
|
- Optional<FabricCostInvoiceDetail> findOpt = costInvoiceDetailList.stream().filter(e->e.getId().equalsIgnoreCase(costInvoiceDetail.getId())).findFirst();
|
|
|
- if (findOpt.isPresent()){
|
|
|
+ if (itemOut.getIQuantityOut()>0 &&
|
|
|
+ itemOut.getIQuantityOut()!=0) {
|
|
|
+ FabricCostInvoiceDetail costInvoiceDetail = FabricCostInvoiceDetail.get(itemOut,"转入成本");
|
|
|
+ Optional<FabricCostInvoiceDetail> findOpt = costInvoiceDetailList.stream().filter(e -> e.getId().equalsIgnoreCase(costInvoiceDetail.getId())).findFirst();
|
|
|
+ if (findOpt.isPresent()) {
|
|
|
FabricCostInvoiceDetail findItem = findOpt.get();
|
|
|
- findItem.setIMoney(DoubleOperation.add(findItem.getIMoney(),costInvoiceDetail.getIMoney()));
|
|
|
+ findItem.setIMoney(DoubleOperation.add(findItem.getIMoney(), costInvoiceDetail.getIMoney()));
|
|
|
findItem.setIQuantity(DoubleOperation.add(findItem.getIQuantity(), costInvoiceDetail.getIQuantity()));
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
costInvoiceDetailList.add(costInvoiceDetail);
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
- // 分组
|
|
|
- List<FabricCostInvoice> costInvoiceListGroup = new ArrayList<>();
|
|
|
- for (FabricCostInvoice fabricCostInvoice : costInvoiceList){
|
|
|
- Optional<FabricCostInvoice> findOpt = costInvoiceListGroup.stream().filter(e->
|
|
|
- e.getId().equalsIgnoreCase(fabricCostInvoice.getId())).findFirst();
|
|
|
+ // 设置保存的单价
|
|
|
+ for (FabricCostInvoiceDetail invoiceDetail : costInvoiceDetailList){
|
|
|
+ if (invoiceDetail.getBManual()){
|
|
|
+ Optional<FabricCostInvoiceDetail> findOpt = saveCostInvoiceDetailList.stream().filter(e->e.getNPId().equalsIgnoreCase(invoiceDetail.getNPId())).findFirst();
|
|
|
+ if (findOpt.isPresent()){
|
|
|
+ FabricCostInvoiceDetail findItem = findOpt.get();
|
|
|
+ invoiceDetail.setIPrice(DoubleOperation.getScale(findItem.getIPrice(),4));
|
|
|
+ invoiceDetail.setIMoney(DoubleOperation.mul(invoiceDetail.getIPrice(), invoiceDetail.getIQuantity(), 2));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 生成父类
|
|
|
+ for (FabricCostInvoiceDetail invoiceDetail : costInvoiceDetailList){
|
|
|
+ Optional<FabricCostInvoice> findOpt = costInvoiceList.stream().filter(e->e.getId().equalsIgnoreCase(invoiceDetail.getParentId())).findFirst();
|
|
|
if (findOpt.isPresent()){
|
|
|
- FabricCostInvoice find = findOpt.get();
|
|
|
- find.setIMoney(DoubleOperation.getScale(DoubleOperation.add(find.getIMoney(),fabricCostInvoice.getIMoney()),2));
|
|
|
+ FabricCostInvoice findItem = findOpt.get();
|
|
|
+ findItem.setIMoney(DoubleOperation.add(findItem.getIMoney(), invoiceDetail.getIMoney()));
|
|
|
}else{
|
|
|
- costInvoiceListGroup.add(fabricCostInvoice);
|
|
|
- List<FabricCostInvoiceDetail> findList = costInvoiceDetailList.stream().filter(e->e.getCParentId().equalsIgnoreCase(fabricCostInvoice.getId())).collect(Collectors.toList());
|
|
|
- fabricCostInvoice.setCostInvoiceDetailList(findList);
|
|
|
+ FabricCostInvoice item = FabricCostInvoice.getByDetail(invoiceDetail);
|
|
|
+ costInvoiceList.add(item);
|
|
|
+ item.setCostInvoiceDetailList(costInvoiceDetailList.stream().filter(e->e.getParentId().equalsIgnoreCase(item.getId())).collect(Collectors.toList()));
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
// 转出成本,设置详情
|
|
|
- costInvoiceList = new ArrayList<>();
|
|
|
costInvoiceDetailList = new ArrayList<>();
|
|
|
for (FabricPoOrderIn itemIn : allInList){
|
|
|
if (itemIn.getIQuantity()>0 &&
|
|
|
DoubleOperation.mul(itemIn.getIQuantity(),itemIn.getIPrice(), 2)!=0) {
|
|
|
- FabricCostInvoice fabricCostInvoice = new FabricCostInvoice();
|
|
|
- fabricCostInvoice.setCVCName(itemIn.getCInvName());
|
|
|
- fabricCostInvoice.setCVenAbbName("");
|
|
|
- fabricCostInvoice.setCBusType("转出成本");
|
|
|
- fabricCostInvoice.setIMoney(DoubleOperation.getScale(itemIn.getIQuantity() * itemIn.getIPrice() * -1, 2));
|
|
|
- costInvoiceList.add(fabricCostInvoice);
|
|
|
- FabricCostInvoiceDetail costInvoiceDetail = FabricCostInvoiceDetail.get(fabricCostInvoice, itemIn);
|
|
|
+ FabricCostInvoiceDetail costInvoiceDetail = FabricCostInvoiceDetail.get(itemIn,"转出成本");
|
|
|
Optional<FabricCostInvoiceDetail> findOpt = costInvoiceDetailList.stream().filter(e->e.getId().equalsIgnoreCase(costInvoiceDetail.getId())).findFirst();
|
|
|
if (findOpt.isPresent()){
|
|
|
FabricCostInvoiceDetail findItem = findOpt.get();
|
|
@@ -1618,23 +1622,26 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- // 分组
|
|
|
-
|
|
|
- for (FabricCostInvoice fabricCostInvoice : costInvoiceList){
|
|
|
- Optional<FabricCostInvoice> findOpt = costInvoiceListGroup.stream().filter(e->
|
|
|
- e.getId().equalsIgnoreCase(fabricCostInvoice.getId())).findFirst();
|
|
|
+ // 生成父类
|
|
|
+ for (FabricCostInvoiceDetail invoiceDetail : costInvoiceDetailList){
|
|
|
+ Optional<FabricCostInvoice> findOpt = costInvoiceList.stream().filter(e->e.getId().equalsIgnoreCase(invoiceDetail.getParentId())).findFirst();
|
|
|
if (findOpt.isPresent()){
|
|
|
- FabricCostInvoice find = findOpt.get();
|
|
|
- find.setIMoney(DoubleOperation.getScale(DoubleOperation.add(find.getIMoney(),fabricCostInvoice.getIMoney()),2));
|
|
|
+ FabricCostInvoice findItem = findOpt.get();
|
|
|
+ findItem.setIMoney(DoubleOperation.sub(findItem.getIMoney(), invoiceDetail.getIMoney()));
|
|
|
}else{
|
|
|
- costInvoiceListGroup.add(fabricCostInvoice);
|
|
|
- List<FabricCostInvoiceDetail> findList = costInvoiceDetailList.stream().filter(e->e.getCParentId().equalsIgnoreCase(fabricCostInvoice.getId())).collect(Collectors.toList());
|
|
|
- fabricCostInvoice.setCostInvoiceDetailList(findList);
|
|
|
+ FabricCostInvoice item = FabricCostInvoice.getByDetail(invoiceDetail);
|
|
|
+ item.setIMoney(DoubleOperation.mul(item.getIMoney(),-1.0,2));
|
|
|
+ costInvoiceList.add(item);
|
|
|
+ item.setCostInvoiceDetailList(costInvoiceDetailList.stream().filter(e->e.getParentId().equalsIgnoreCase(item.getId())).collect(Collectors.toList()));
|
|
|
+ // 设置保存的工厂
|
|
|
+ Optional<FabricCostInvoice> findSaveOpt = saveCostInvoiceList.stream().filter(e->e.getCVCName().equalsIgnoreCase(item.getCVCName()) ).findFirst();
|
|
|
+ if (findSaveOpt.isPresent()){
|
|
|
+ item.setCVenAbbName(findSaveOpt.get().getCVenAbbName());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- return costInvoiceListGroup;
|
|
|
+ return costInvoiceList;
|
|
|
|
|
|
}
|
|
|
}
|