FengChaoYu il y a 4 jours
Parent
commit
fa0042d0b8

+ 44 - 25
mall-server-api/src/main/java/com/gree/mall/manager/logic/contract/ContractTemplateLogic.java

@@ -31,10 +31,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -152,9 +149,23 @@ public class ContractTemplateLogic {
                     .list();
 
             if (CollectionUtil.isNotEmpty(signItems)) {
+                final List<WebsitContractSignRecord> signRecords = websitContractSignRecordService.lambdaQuery()
+                        .select(WebsitContractSignRecord::getId)
+                        .in(WebsitContractSignRecord::getId, signItems.stream()
+                                .map(WebsitContractSignItem::getWebsitContractSignRecordId)
+                                .collect(Collectors.toList()))
+                        .in(WebsitContractSignRecord::getStatus, SignContractStatusEnum.WAIT.getKey(), SignContractStatusEnum.OK.getKey())
+                        .list();
+                final Set<String> recordSet = signRecords.stream().map(WebsitContractSignRecord::getId).collect(Collectors.toSet());
                 List<WebsitContractSignItem> signItemList = new ArrayList<>();
                 List<WebsitContractSignField> signFieldList = new ArrayList<>();
                 for (WebsitContractSignItem signItem : signItems) {
+                    if (CollectionUtil.isEmpty(recordSet)) {
+                        continue;
+                    }
+                    if (!recordSet.contains(signItem.getWebsitContractSignRecordId())) {
+                        continue;
+                    }
                     WebsitContractSignItem contractSignItem = new WebsitContractSignItem();
                     contractSignItem.setId(IdWorker.getIdStr())
                             .setWebsitContractSignRecordId(signItem.getWebsitContractSignRecordId())
@@ -175,31 +186,39 @@ public class ContractTemplateLogic {
                             .setPartyASignFiled(contractTemplate.getPartyASignFiled());
                     signItemList.add(contractSignItem);
                 }
-                // 遍历网点合同签约明细找出填充字段配置
-                for (WebsitContractSignItem contractSignItem : signItemList) {
-                    final List<ContractTemplateField> templateFieldList = contractTemplateFieldService.lambdaQuery()
-                            .eq(ContractTemplateField::getContractTemplateId, contractSignItem.getContractTemplateId())
-                            .list();
-                    for (ContractTemplateField templateField : templateFieldList) {
-                        WebsitContractSignField field = new WebsitContractSignField();
-                        field.setWebsitContractSignRecordId(contractSignItem.getWebsitContractSignRecordId())
-                                .setWebsitContractSignItemId(contractSignItem.getId())
-                                .setFieldType(templateField.getFieldType())
-                                .setFieldName(templateField.getFieldName())
-                                .setFieldValue(templateField.getFieldValue());
-                        signFieldList.add(field);
+                if (CollectionUtil.isNotEmpty(signItemList)) {
+                    // 遍历网点合同签约明细找出填充字段配置
+                    for (WebsitContractSignItem contractSignItem : signItemList) {
+                        final List<ContractTemplateField> templateFieldList = contractTemplateFieldService.lambdaQuery()
+                                .eq(ContractTemplateField::getContractTemplateId, contractSignItem.getContractTemplateId())
+                                .list();
+                        for (ContractTemplateField templateField : templateFieldList) {
+                            WebsitContractSignField field = new WebsitContractSignField();
+                            field.setWebsitContractSignRecordId(contractSignItem.getWebsitContractSignRecordId())
+                                    .setWebsitContractSignItemId(contractSignItem.getId())
+                                    .setFieldType(templateField.getFieldType())
+                                    .setFieldName(templateField.getFieldName())
+                                    .setFieldValue(templateField.getFieldValue());
+                            signFieldList.add(field);
+                        }
                     }
                 }
 
-                websitContractSignItemService.saveBatch(signItemList);
-                websitContractSignFieldService.saveBatch(signFieldList);
+                if (CollectionUtil.isNotEmpty(signItemList)) {
+                    websitContractSignItemService.saveBatch(signItemList);
+
+                    websitContractSignRecordService.lambdaUpdate()
+                            .set(WebsitContractSignRecord::getStatus, SignContractStatusEnum.WAIT_SIGN.getKey())
+                            .in(WebsitContractSignRecord::getId, signItems.stream()
+                                    .map(WebsitContractSignItem::getWebsitContractSignRecordId)
+                                    .collect(Collectors.toList()))
+                            .in(WebsitContractSignRecord::getStatus, SignContractStatusEnum.WAIT.getKey(), SignContractStatusEnum.OK.getKey())
+                            .update();
+                }
+                if (CollectionUtil.isNotEmpty(signFieldList)) {
+                    websitContractSignFieldService.saveBatch(signFieldList);
+                }
 
-                websitContractSignRecordService.lambdaUpdate()
-                        .set(WebsitContractSignRecord::getStatus, SignContractStatusEnum.WAIT_SIGN.getKey())
-                        .in(WebsitContractSignRecord::getId, signItems.stream()
-                                .map(WebsitContractSignItem::getWebsitContractSignRecordId)
-                                .collect(Collectors.toList()))
-                        .update();
             }
         }
     }