Răsfoiți Sursa

合同重新发起与变更 允许删除或添加新产品

yzc 1 an în urmă
părinte
comite
5a410eb9e7

+ 12 - 6
hx-sale/src/main/java/com/fjhx/sale/flow/ContractFlow.java

@@ -202,32 +202,38 @@ public class ContractFlow extends FlowDelegate {
 
         // 保存合同产品
         if (CollectionUtils.isNotEmpty(contractProductList)) {
+            //先删除被删除的产品
+            contractProductService.editLinked(contractProductList, ContractProduct::getContractId, contractId);
+
             for (ContractProduct c : contractProductList) {
-                Assert.notEmpty(c.getId(), "合同明细id不能为空");
                 c.setContractId(contractId);
                 ObsFileUtil.editFile(c.getFileList(), c.getId());
             }
-            contractProductService.updateBatchById(contractProductList);
+            contractProductService.saveOrUpdateBatch(contractProductList);
         }
 
         // 保存收费项目
         List<ContractProject> contractProjectList = contract.getContractProjectList();
         if (CollectionUtils.isNotEmpty(contractProjectList)) {
+            //先删除被删除的产品
+            contractProjectService.editLinked(contractProjectList, ContractProject::getContractId, contractId);
+
             for (ContractProject c : contractProjectList) {
-                Assert.notEmpty(c.getId(), "收费项目明细id不能为空");
                 c.setContractId(contractId);
             }
-            contractProjectService.updateBatchById(contractProjectList);
+            contractProjectService.saveOrUpdateBatch(contractProjectList);
         }
 
         // 保存自定义出货
         List<ContractShipment> contractShipmentList = contract.getContractShipmentList();
         if (CollectionUtils.isNotEmpty(contractShipmentList)) {
+            //先删除被删除的产品
+            contractShipmentService.editLinked(contractShipmentList, ContractShipment::getContractId, contractId);
+
             for (ContractShipment c : contractShipmentList) {
-                Assert.notEmpty(c.getId(), "自定义出货明细id不能为空");
                 c.setContractId(contractId);
             }
-            contractShipmentService.updateBatchById(contractShipmentList);
+            contractShipmentService.saveOrUpdateBatch(contractShipmentList);
         }
 
         // 交接单附件列表

+ 12 - 9
hx-sale/src/main/java/com/fjhx/sale/flow/ContractUpdateFlow.java

@@ -72,21 +72,24 @@ public class ContractUpdateFlow extends FlowDelegate {
 
             Map<Long, ContractProduct> contractProductMap = contractProductList
                     .stream()
-                    .peek(item -> {
-                        if (item.getId() == null) {
-                            throw new ServiceException("合同产品id不能为空");
-                        }
-                    })
+//                    .peek(item -> {
+//                        if (item.getId() == null) {
+//                            throw new ServiceException("合同产品id不能为空");
+//                        }
+//                    })
+                    .filter(item -> ObjectUtil.isNotEmpty(item.getId()))
                     .collect(Collectors.toMap(BaseIdPo::getId, Function.identity()));
 
 
             for (ContractProduct item : list) {
                 ContractProduct contractProduct = contractProductMap.get(item.getId());
-                if (contractProduct == null) {
-                    throw new ServiceException("产品id为" + item.getId() + "未上传");
+//                if (contractProduct == null) {
+//                    throw new ServiceException("产品id为" + item.getId() + "未上传");
+//                }
+                if (ObjectUtil.isNotEmpty(contractProduct)) {
+                    BigDecimal expendQuantity = item.getExpendQuantity().subtract(item.getQuantity().subtract(contractProduct.getQuantity()));
+                    contractProduct.setExpendQuantity(expendQuantity);
                 }
-                BigDecimal expendQuantity = item.getExpendQuantity().subtract(item.getQuantity().subtract(contractProduct.getQuantity()));
-                contractProduct.setExpendQuantity(expendQuantity);
             }
 
         }