Sfoglia il codice sorgente

在已选网点列表,增加显示网点的合同签约状态

FengChaoYu 5 mesi fa
parent
commit
b0dda790ae

+ 3 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/contract/ContractWebsitBean.java

@@ -22,4 +22,7 @@ public class ContractWebsitBean extends ContractWebsit {
 
     @ApiModelProperty(value = "网点名称")
     private String name;
+
+    @ApiModelProperty(value = "签约状态")
+    private String signStatus;
 }

+ 7 - 2
mall-server-api/src/main/java/com/gree/mall/manager/commonmapper/WebsitMapper.java

@@ -1,6 +1,7 @@
 package com.gree.mall.manager.commonmapper;
 
 import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
+import com.gree.mall.manager.plus.entity.WebsitContractSignRecord;
 import com.gree.mall.manager.plus.entity.WebsitZone;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -10,7 +11,11 @@ import java.util.List;
 @Mapper
 public interface WebsitMapper {
     @InterceptorIgnore(tenantLine = "1", blockAttack = "1", illegalSql = "1")
-    List<WebsitZone> queryWebsitIds(@Param("adminUserId")String adminUserId);
+    List<WebsitZone> queryWebsitIds(@Param("adminUserId") String adminUserId);
+
+    @InterceptorIgnore(tenantLine = "1", blockAttack = "1", illegalSql = "1")
+    List<String> queryWebsitNumbers(@Param("adminUserId") String adminUserId);
+
     @InterceptorIgnore(tenantLine = "1", blockAttack = "1", illegalSql = "1")
-    List<String> queryWebsitNumbers(@Param("adminUserId")String adminUserId);
+    List<WebsitContractSignRecord> querySignStatus(@Param("contractTemplateId") String contractTemplateId, @Param("subWebsitIds") List<String> subWebsitIds);
 }

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

@@ -10,15 +10,15 @@ import com.gree.mall.manager.bean.contract.ContractTemplateBean;
 import com.gree.mall.manager.bean.contract.ContractTemplateVO;
 import com.gree.mall.manager.bean.contract.ContractWebsitBean;
 import com.gree.mall.manager.commonmapper.CommonMapper;
+import com.gree.mall.manager.commonmapper.WebsitMapper;
 import com.gree.mall.manager.enums.ContractTypeEnum;
+import com.gree.mall.manager.enums.base.BaseEnum;
 import com.gree.mall.manager.enums.contract.FieldTypeEnum;
+import com.gree.mall.manager.enums.contract.SignContractStatusEnum;
 import com.gree.mall.manager.enums.material.StateEnum;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.logic.common.CommonLogic;
-import com.gree.mall.manager.plus.entity.ContractTemplate;
-import com.gree.mall.manager.plus.entity.ContractTemplateBak;
-import com.gree.mall.manager.plus.entity.ContractTemplateField;
-import com.gree.mall.manager.plus.entity.ContractWebsit;
+import com.gree.mall.manager.plus.entity.*;
 import com.gree.mall.manager.plus.service.AdminWebsitService;
 import com.gree.mall.manager.plus.service.ContractTemplateFieldService;
 import com.gree.mall.manager.plus.service.ContractTemplateService;
@@ -34,9 +34,8 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-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;
 
 @Slf4j
@@ -50,6 +49,7 @@ public class ContractTemplateLogic {
     private final ContractTemplateFieldService contractTemplateFieldService;
     private final AdminWebsitService adminWebsitService;
     private final OSSUtil ossUtil;
+    private final WebsitMapper websitMapper;
 
     public IPage<ContractTemplateVO> list(ZfireParamBean zfireParamBean) {
         AdminUserCom adminUser = commonLogic.getAdminUser();
@@ -66,6 +66,26 @@ public class ContractTemplateLogic {
         List<ContractWebsitBean> websitBeanList = commonMapper.contractWebsitList(contractTemplateId);
         bean.setItems(websitBeanList);
 
+        if (CollectionUtil.isNotEmpty(bean.getItems()) && template.getContractType().equals(ContractTypeEnum.MAIN.getKey())) {
+            final List<String> subWebsitIds = bean.getItems().stream().map(ContractWebsitBean::getSubWebsitId).collect(Collectors.toList());
+            List<WebsitContractSignRecord> recordList = websitMapper.querySignStatus(contractTemplateId, subWebsitIds);
+            // 签约记录为空new空list
+            if (CollectionUtil.isEmpty(recordList)) {
+                recordList = new ArrayList<>();
+            }
+            final Map<String, WebsitContractSignRecord> recordMap = recordList.stream().collect(Collectors.toMap(WebsitContractSignRecord::getWebsitId, Function.identity()));
+            for (ContractWebsitBean item : bean.getItems()) {
+                if (!recordMap.containsKey(item.getSubWebsitId())) {
+                    item.setSignStatus(SignContractStatusEnum.WAIT_SIGN.getRemark());
+                    continue;
+                }
+                final WebsitContractSignRecord record = recordMap.get(item.getSubWebsitId());
+
+                String status = BaseEnum.keyToValueOpt(SignContractStatusEnum.class, record.getStatus()).orElse(SignContractStatusEnum.WAIT_SIGN.getRemark());
+                item.setSignStatus(status);
+            }
+        }
+
         final List<ContractTemplateField> fields = contractTemplateFieldService.lambdaQuery()
                 .eq(ContractTemplateField::getContractTemplateId, contractTemplateId)
                 .list();
@@ -151,7 +171,8 @@ public class ContractTemplateLogic {
         contractWebsitService.lambdaUpdate()
                 .eq(ContractWebsit::getContractTemplateId, contractTemplate.getContractTemplateId())
                 .remove();
-        if (CollectionUtil.isNotEmpty(contractTemplate.getItems())) {
+        if (contractTemplate.getContractType().equals(ContractTypeEnum.MAIN.getKey())
+                && CollectionUtil.isNotEmpty(contractTemplate.getItems())) {
             contractWebsitService.saveBatch(contractTemplate.getItems().stream()
                     .peek(v -> v.setContractTemplateId(byId.getContractTemplateId())
                             .setCompanyWechatId(byId.getCompanyWechatId())

+ 27 - 0
mall-server-api/src/main/resources/mapper/WebsitMapper.xml

@@ -15,6 +15,33 @@
                 right join websit_zone wz on wz.admin_zone_id =auz.admin_zone_id
         where auz.admin_user_id = #{adminUserId}
     </select>
+    <select id="querySignStatus" resultType="com.gree.mall.manager.plus.entity.WebsitContractSignRecord">
+        SELECT
+            id, status, websit_id, create_time, sign_over_time
+        FROM
+            websit_contract_sign_record
+        WHERE
+            id IN (
+                SELECT
+                    MAX(c.id) AS id
+                FROM
+                   contract_template a
+                       JOIN websit_contract_sign_item b ON a.contract_template_id = b.contract_template_id
+                       JOIN websit_contract_sign_record c ON b.websit_contract_sign_record_id = c.id
+                WHERE
+                    a.contract_type = 'MAIN'
+                    AND a.contract_template_id = #{contractTemplateId}
+                    <if test="subWebsitIds != null and subWebsitIds.size > 0">
+                        AND c.websit_id IN
+                        <foreach item="item" index="index" collection="subWebsitIds" open="(" separator="," close=")">
+                            #{item}
+                        </foreach>
+                    </if>
+                GROUP BY
+                   c.contract_template_id, c.parent_id, c.websit_id
+                )
+        ORDER BY id DESC, create_time DESC
+    </select>
 
 
 </mapper>