瀏覽代碼

no message

FengChaoYu 6 月之前
父節點
當前提交
59e3bf0cb9

+ 2 - 2
mall-server-api/src/main/java/com/gree/mall/manager/bean/contract/ContractTemplateVO.java

@@ -14,8 +14,8 @@ import java.util.Date;
 @ZfireField(tbName = "a")
 public class ContractTemplateVO {
 
-    @ZfireField(hide = true)
-    @ApiModelProperty(value = "合同模版id")
+    @ZfireField(isShow = false)
+    @ApiModelProperty(value = "合同模版编号")
     private String contractTemplateId;
 
 //    @ApiModelProperty(value = "商户id")

+ 2 - 0
mall-server-api/src/main/java/com/gree/mall/manager/commonmapper/CommonMapper.java

@@ -727,4 +727,6 @@ public interface CommonMapper {
     List<ContractTemplate> queryNeedContract(@Param("companyId") String companyWechatId,
                                        @Param("websitId") String websitId,
                                        @Param("onDate") Date onDate);
+
+    List<String> selectMainContractIdByValidDate(@Param("companyId") String companyWechatId, @Param("onDate") Date validDate);
 }

+ 1 - 1
mall-server-api/src/main/java/com/gree/mall/manager/logic/contract/CompanyCaAuthLogic.java

@@ -59,7 +59,7 @@ public class CompanyCaAuthLogic {
         CompanyCaAuth caAuth = companyCaAuthService.lambdaQuery()
                 .eq(CompanyCaAuth::getWebsitId, companyCaAuth.getWebsitId())
                 .one();
-        if (Objects.isNull(caAuth)) {
+        if (Objects.nonNull(caAuth)) {
             throw new RemoteServiceException("网点已存在");
         }
 

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

@@ -1,5 +1,6 @@
 package com.gree.mall.manager.logic.contract;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
@@ -76,15 +77,19 @@ public class ContractTemplateLogic {
         if (adminUser.getType().equals(2)) {
             throw new RemoteServiceException("平台账号禁止操作");
         }
+        contractTemplate.setCompanyWechatId(adminUser.getCompanyWechatId())
+                .setCompanyWechatName(adminUser.getCompanyName());
+
         this.validRequireParams(contractTemplate);
+        // 检查二级网点的主合同有没有
+        this.checkMainDate(contractTemplate);
+
         String urlWw = ossUtil.getUrlWw(ossUtil.replaceLongKeyUrl(contractTemplate.getContractTemplatePdf()));
         String templateId = IdWorker.getIdStr();
 
         Auth4FDDUtil.uploadTemplate(templateId, null, urlWw);
 
-        contractTemplate.setCompanyWechatId(adminUser.getCompanyWechatId())
-                .setCompanyWechatName(adminUser.getCompanyName())
-                .setFadadaTemplateId(templateId)
+        contractTemplate.setFadadaTemplateId(templateId)
                 .setContractTemplateName(contractTemplate.getContractTemplateName().trim())
                 .setStatus(StateEnum.ON.getKey())
                 .insert();
@@ -102,6 +107,7 @@ public class ContractTemplateLogic {
     @Transactional
     public void update(ContractTemplateBean contractTemplate) {
         this.validRequireParams(contractTemplate);
+        this.checkMainDate(contractTemplate);
         ContractTemplate byId = contractTemplateService.getById(contractTemplate.getContractTemplateId());
         if (!byId.getContractTemplatePdf().equals(contractTemplate.getContractTemplatePdf())) {
             String urlWw = ossUtil.getUrlWw(ossUtil.replaceLongKeyUrl(contractTemplate.getContractTemplatePdf()));
@@ -141,6 +147,19 @@ public class ContractTemplateLogic {
     }
 
     public void updateStatus(String contractTemplateId, StateEnum status) {
+        ContractTemplateBean bean = new ContractTemplateBean();
+        ContractTemplate template = contractTemplateService.lambdaQuery()
+                .eq(ContractTemplate::getContractTemplateId, contractTemplateId)
+                .one();
+        BeanUtils.copyProperties(template, bean);
+        final List<ContractWebsit> websitList = contractWebsitService.lambdaQuery()
+                .eq(ContractWebsit::getContractTemplateId, template.getContractTemplateId())
+                .list();
+
+        final List<ContractWebsitBean> websitBeanList = BeanUtil.copyToList(websitList, ContractWebsitBean.class);
+        bean.setItems(websitBeanList);
+
+        this.checkMainDate(bean);
         ContractTemplate contractTemplate = new ContractTemplate();
         contractTemplate.setStatus(status.getKey())
                 .setContractTemplateId(contractTemplateId)
@@ -168,6 +187,10 @@ public class ContractTemplateLogic {
                 && Objects.isNull(contractTemplate.getExpireDate())) {
             throw new RemoteServiceException("主合同类型失效日期不能为空");
         }
+        if (ContractTypeEnum.MAIN.getKey().equals(contractTemplate.getContractType())
+                && contractTemplate.getValidDate().after(contractTemplate.getExpireDate())) {
+            throw new RemoteServiceException("生效日期不能大于失效日期");
+        }
         if (StringUtils.isBlank(contractTemplate.getContractTemplateId())) {
             Integer count = contractTemplateService.lambdaQuery()
                     .eq(ContractTemplate::getContractTemplateName, contractTemplate.getContractTemplateName().trim())
@@ -180,4 +203,29 @@ public class ContractTemplateLogic {
             throw new RemoteServiceException("合同模板不能为空");
         }
     }
+
+    private void checkMainDate(ContractTemplateBean contractTemplate) {
+        if (!contractTemplate.getContractType().equals(ContractTypeEnum.MAIN.getKey())) {
+            return;
+        }
+        if (CollectionUtil.isEmpty(contractTemplate.getItems())) {
+            return;
+        }
+        List<String> ids = commonMapper.selectMainContractIdByValidDate(contractTemplate.getCompanyWechatId(), contractTemplate.getValidDate());
+        if (StringUtils.isNotBlank(contractTemplate.getContractTemplateId())
+                && CollectionUtil.isNotEmpty(ids)) {
+            ids.remove(contractTemplate.getContractTemplateId());
+        }
+        if (CollectionUtil.isNotEmpty(ids)) {
+            for (ContractWebsitBean item : contractTemplate.getItems()) {
+                final Integer count = contractWebsitService.lambdaQuery()
+                        .in(ContractWebsit::getContractTemplateId, ids)
+                        .in(ContractWebsit::getSubWebsitId, item.getSubWebsitId())
+                        .count();
+                if (count > 0) {
+                    throw new RemoteServiceException(item.getSubWebsitId() + "的生效日期在" + String.join(",", ids) + "其他主合同的有效期内,请检查");
+                }
+            }
+        }
+    }
 }

+ 12 - 0
mall-server-api/src/main/resources/mapper/CommonMapper.xml

@@ -1501,4 +1501,16 @@
         ORDER BY
             create_time
     </select>
+
+    <select id="selectMainContractIdByValidDate" resultType="java.lang.String">
+        SELECT
+            contract_template_id
+        FROM
+            `contract_template`
+        WHERE
+            company_wechat_id = #{companyId}
+            AND contract_type = 'MAIN'
+            AND `status` = 'ON'
+            AND #{onDate} BETWEEN valid_date AND expire_date
+    </select>
 </mapper>