FengChaoYu vor 6 Monaten
Ursprung
Commit
f8bd876721

+ 43 - 8
mall-server-api/src/main/java/com/gree/mall/manager/logic/contract/WebsitContractSignLogic.java

@@ -119,6 +119,7 @@ public class WebsitContractSignLogic {
                 .eq(WebsitContractSignItem::getWebsitContractSignRecordId, record.getId())
                 .eq(WebsitContractSignItem::getContractType, ContractTypeEnum.MAIN.getKey())
                 .one();
+
         AdminWebsit websit = adminWebsitService.getById(record.getWebsitId());
 
         // 未企业认证
@@ -136,14 +137,24 @@ public class WebsitContractSignLogic {
         // 避免前端调用过快,法大大还没更新状态
         Thread.sleep(1000);
 
-        if (!bean.isJump() && item.getCompanySignStatus().equals(IsYesNoEnum.NO.getKey())) {
+        final List<WebsitContractSignItem> signItems = websitContractSignItemService.lambdaQuery()
+                .eq(WebsitContractSignItem::getWebsitContractSignRecordId, record.getId())
+                .list();
+
+        long companySign = signItems.stream()
+                .filter(v -> v.getNeedCompanySign().equals(IsYesNoEnum.YES.getKey()) && v.getCompanySignStatus().equals(IsYesNoEnum.NO.getKey()))
+                .count();
+        if (!bean.isJump() && companySign > 0) {
             // 签约企业签约跳
             this.companySignMethod(websit, item, bean, returnUrl);
         }
 
+        long managerSign = signItems.stream()
+                .filter(v -> v.getNeedManagerSign().equals(IsYesNoEnum.YES.getKey()) && v.getManagerSignStatus().equals(IsYesNoEnum.NO.getKey()))
+                .count();
         if (!bean.isJump()
-                && item.getNeedManagerSign().equals(IsYesNoEnum.YES.getKey())
-                && item.getManagerSignStatus().equals(IsYesNoEnum.NO.getKey())) {
+                && companySign == 0
+                && managerSign > 0) {
             // 签约负责人签约跳
             this.managerSignMethod(websit, item, bean, returnUrl);
         }
@@ -155,12 +166,11 @@ public class WebsitContractSignLogic {
             } else if (websit.getFadadaCustomerRealStatus().equals(IsYesNoEnum.NO.getKey())) {
                 bean.setJump(true);
                 bean.setUrl(websit.getFadadaCustomerAuthUrl());
-            } else if (item.getCompanySignStatus().equals(IsYesNoEnum.NO.getKey())) {
+            } else if (companySign > 0) {
                 // 签约企业签约跳
                 bean.setJump(true);
                 bean.setUrl(item.getCompanySignUrl());
-            } else if (item.getNeedManagerSign().equals(IsYesNoEnum.YES.getKey())
-                    && item.getManagerSignStatus().equals(IsYesNoEnum.NO.getKey())) {
+            } else if (managerSign > 0) {
                 // 签约负责人签约跳
                 bean.setJump(true);
                 bean.setUrl(item.getManagerSignUrl());
@@ -191,7 +201,7 @@ public class WebsitContractSignLogic {
         // 第一步 查询可签网点电子合同
         List<WebsitContractSignItem> websitFiles = websitContractSignItemService.lambdaQuery()
                 .eq(WebsitContractSignItem::getWebsitContractSignRecordId, item.getWebsitContractSignRecordId())
-//                .eq(WebsitContractSignItem::getNeedCompanySign, IsYesNoEnum.YES.getKey())
+                .eq(WebsitContractSignItem::getNeedCompanySign, IsYesNoEnum.YES.getKey())
                 .isNotNull(WebsitContractSignItem::getFadadaTemplateId)
                 .list();
 
@@ -212,8 +222,9 @@ public class WebsitContractSignLogic {
                 Auth4FDDUtil.generateContract(websitFile.getFadadaTemplateId(), generateContractId,
                         websitFile.getContractName(), null, null, fddParams);
             } else {
+                String urlWw = ossUtil.getUrlWw(ossUtil.replaceLongKeyUrl(websitFile.getContractTemplatePdf()));
                 Auth4FDDUtil.uploadContract(generateContractId, websitFile.getContractName(),
-                        null, websitFile.getContractTemplatePdf());
+                        null, urlWw);
             }
 
             JSONObject jsonObject = new JSONObject();
@@ -458,6 +469,30 @@ public class WebsitContractSignLogic {
                     .update();
             item.setCompanySignStatus(IsYesNoEnum.YES.getKey());
         }
+
+        // 检查是否更新为待审核状态
+        final List<WebsitContractSignItem> signItems = websitContractSignItemService.lambdaQuery()
+                .eq(WebsitContractSignItem::getWebsitContractSignRecordId, item.getWebsitContractSignRecordId())
+                .list();
+
+        final long managerCount = signItems.stream()
+                .filter(v -> v.getNeedManagerSign().equals(IsYesNoEnum.YES.getKey()) && v.getManagerSignStatus().equals(IsYesNoEnum.NO.getKey()))
+                .count();
+        if (managerCount == 0) {
+            // 无需法人签,直接把记录改为待审核
+            websitContractSignItemService.lambdaUpdate()
+                    .set(WebsitContractSignItem::getContractStatus, SignContractStatusEnum.WAIT.getKey())
+                    .eq(WebsitContractSignItem::getWebsitContractSignRecordId, item.getWebsitContractSignRecordId())
+                    .update();
+            websitContractSignRecordService.lambdaUpdate()
+                    .set(WebsitContractSignRecord::getFadadaWebsitId, websit.getFadadaWebsitId())
+                    .set(WebsitContractSignRecord::getFadadaWebsitNo, websit.getFadadaWebsitNo())
+                    .set(WebsitContractSignRecord::getFadadaCustomerId, websit.getFadadaCustomerId())
+                    .set(WebsitContractSignRecord::getFadadaCustomerNo, websit.getFadadaCustomerNo())
+                    .set(WebsitContractSignRecord::getStatus, SignContractStatusEnum.WAIT.getKey())
+                    .eq(WebsitContractSignRecord::getId, item.getWebsitContractSignRecordId())
+                    .update();
+        }
     }
 
     private void managerSignMethod(AdminWebsit websit, WebsitContractSignItem item, AuthBean bean, String returnUrl) {

+ 32 - 6
mall-server-api/src/main/java/com/gree/mall/manager/logic/fadada/FDDNotifyLogic.java

@@ -327,7 +327,10 @@ public class FDDNotifyLogic {
                         .list();
 
                 // 判断公章签约
-                if (websitFile.getCompanySignStatus().equals(IsYesNoEnum.NO.getKey())) {
+                final long companySign = websitFiles.stream()
+                        .filter(v -> v.getNeedCompanySign().equals(IsYesNoEnum.YES.getKey()) && v.getCompanySignStatus().equals(IsYesNoEnum.NO.getKey()))
+                        .count();
+                if (companySign > 0) {
                     // 遍历查询签章状态
                     boolean sign = false;
                     for (WebsitContractSignItem file : websitFiles) {
@@ -347,6 +350,7 @@ public class FDDNotifyLogic {
                                 log.error("查询公章签署状态: " + result + result_desc);
                                 return;
                             }
+                            file.setCompanySignStatus(IsYesNoEnum.YES.getKey());
                         }
                     }
 
@@ -356,15 +360,37 @@ public class FDDNotifyLogic {
                                 .eq(WebsitContractSignItem::getWebsitContractSignRecordId, record.getId())
                                 .update();
                     }
-                    // 公章签约流程后判断是否还需要负责人签,不需要就继续执行
-                    if (websitFile.getNeedManagerSign().equals(IsYesNoEnum.YES.getKey())) {
+                    // 公章签约流程后判断是否还需要负责人签,不需要就继续执行下去
+                    final long count = websitFiles.stream()
+                            .filter(v -> v.getNeedManagerSign().equals(IsYesNoEnum.YES.getKey()) && v.getManagerSignStatus().equals(IsYesNoEnum.NO.getKey()))
+                            .count();
+                    if (count > 0) {
+                        return;
+                    }
+                    final long allOK = websitFiles.stream()
+                            .filter(v -> v.getNeedCompanySign().equals(IsYesNoEnum.YES.getKey()) && v.getCompanySignStatus().equals(IsYesNoEnum.NO.getKey()))
+                            .count();
+                    if (allOK == 0) {
+                        // 无需法人签,直接把记录改为待审核
+                        websitContractSignItemService.lambdaUpdate()
+                                .set(WebsitContractSignItem::getContractStatus, SignContractStatusEnum.WAIT.getKey())
+                                .eq(WebsitContractSignItem::getWebsitContractSignRecordId, record.getId())
+                                .update();
+                        record.setFadadaWebsitId(websit.getFadadaWebsitId())
+                                .setFadadaWebsitNo(websit.getFadadaWebsitNo())
+                                .setFadadaCustomerId(websit.getFadadaCustomerId())
+                                .setFadadaCustomerNo(websit.getFadadaCustomerNo())
+                                .setStatus(SignContractStatusEnum.WAIT.getKey())
+                                .updateById();
                         return;
                     }
                 }
 
-                // 判断负责人签约
-                if (websitFile.getNeedManagerSign().equals(IsYesNoEnum.YES.getKey())
-                        && websitFile.getManagerSignStatus().equals(IsYesNoEnum.NO.getKey())) {
+                // 判断法人签约
+                final long managerSign = websitFiles.stream()
+                        .filter(v -> v.getNeedManagerSign().equals(IsYesNoEnum.YES.getKey()) && v.getManagerSignStatus().equals(IsYesNoEnum.NO.getKey()))
+                        .count();
+                if (managerSign > 0) {
                     boolean sign = false;
                     for (WebsitContractSignItem file : websitFiles) {
                         if (file.getNeedManagerSign().equals(IsYesNoEnum.YES.getKey())) {