Преглед на файлове

协议分页查询及录入协议增加险种限制

haoyu преди 2 години
родител
ревизия
0aaedc0b6d

+ 13 - 0
sql/Online.sql

@@ -94,3 +94,16 @@ CREATE TABLE `ins_order_set_user_his`  (
                                            `remark` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',
                                            PRIMARY KEY (`id`) USING BTREE
 ) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '子订单转发收回记录表' ROW_FORMAT = DYNAMIC;
+
+
+--  add  by  hy  2024-04-19 添加协议授权表
+DROP TABLE IF EXISTS `ptl_agreement_dept_history`;
+CREATE TABLE `ptl_agreement_dept_history`  (
+                                               `agreement_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '协议ID',
+                                               `dept_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '部门ID',
+                                               `batch` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '批次'
+) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
+
+--  add by hy   2024-04-19 添加协议表产品类型字段
+ALTER TABLE ptl_agreement ADD COLUMN products_code VARCHAR(30) COMMENT '产品类型';
+

+ 8 - 0
src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementDto.java

@@ -34,4 +34,12 @@ public class PtlAgreementDto implements Serializable {
     @ApiModelProperty("是否分配")
     private String isAllocation;
 
+    @ApiModelProperty("产品类型")
+    private String productsCode;
+
+    @ApiModelProperty("产品类型数组")
+    private String[] productsCodes;
+
+
+
 }

+ 3 - 0
src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementSaveDto.java

@@ -68,6 +68,9 @@ public class PtlAgreementSaveDto implements Serializable {
     @ApiModelProperty("承保描述")
     private String underwritingDescription;
 
+    @ApiModelProperty("产品类型")
+    private String productsCode;
+
     @ApiModelProperty("审核方式")
     private Integer auditType;
 }

+ 6 - 0
src/main/java/com/ydtech/modules/protocol/entity/po/PtlAgreement.java

@@ -166,6 +166,12 @@ public class PtlAgreement implements Serializable {
     @TableField(value = "audit_status")
     private Integer auditStatus;
 
+    /**
+     * 产品类型
+     */
+    @TableField(value = "products_code")
+    private String productsCode;
+
     /**
      * 序号
      */

+ 110 - 11
src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java

@@ -41,10 +41,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 
@@ -82,6 +79,9 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
 
     private final PtlAgreementAttributionHistoryService ptlAgreementAttributionHistoryService;
 
+    @Autowired
+    private  PtlAgreementDeptHistoryService ptlAgreementDeptHistoryService;
+
 
     public PtlAgreementServiceImpl(PtlAgreementProductCostsService ptlAgreementProductCostsService,
                                    PtlAgreementAttributionService ptlAgreementAttributionService, PtlAgreementDeptService ptlAgreementDeptService,
@@ -110,6 +110,16 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         LocalDate localDate = LocalDate.now();
         List<PtlAgreementInsCompanyDto> agreementCompany = baseMapper.getAgreementCompany(localDate, deptId);
 
+        for (PtlAgreementInsCompanyDto ptlAgreementInsCompanyDto : agreementCompany) {
+            List<PtlAgreementDto> agreement = ptlAgreementInsCompanyDto.getAgreement();
+            for (PtlAgreementDto ptlAgreementDto : agreement) {
+                if (ptlAgreementDto.getProductsCode() != null && !ptlAgreementDto.getProductsCode().equals("")) {
+                    String[] split = ptlAgreementDto.getProductsCode().split(",");
+                    ptlAgreementDto.setProductsCodes(split);
+                }
+            }
+        }
+
         List<String> agreementIdList = agreementCompany.stream()
                 .flatMap(x -> x.getAgreement().stream().map(PtlAgreementDto::getId))
                 .collect(Collectors.toList());
@@ -149,6 +159,7 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
 
         EsmInsCompany esmInsCompany = proxyObject.verifyLogin(ptlAgreement, agreementSaveDto, attribution);
 //        ptlAgreement.setId(IdGenerate.nextId());
+        ptlAgreement.setProductsCode(agreementSaveDto.getProductsCode());
         ptlAgreement.setCreator(userName);
         ptlAgreement.setCreateTime(LocalDateTime.now());
         save(ptlAgreement);
@@ -157,7 +168,11 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         // 添加 历史记录表
         //生成批次号
         String batchNo = IdGenerate.nextId();
-        PtlAgreementHistory ptlAgreementHistory = new PtlAgreementHistory(batchNo,userName, HistoryStatusConstants.HISTORY_TYPE_ADD, ptlAgreement);
+        //添加授权部门历史信息
+        List<String> dept = agreement.getDept();
+        List<PtlAgreementDeptHistory> ptlAgreementDeptList = PtlAgreementDeptHistory.toPtlAgreementDeptHistoryList(ptlAgreement.getId(), dept, batchNo);
+        ptlAgreementDeptHistoryService.saveBatch(ptlAgreementDeptList);
+        PtlAgreementHistory ptlAgreementHistory = new PtlAgreementHistory(batchNo, userName, HistoryStatusConstants.HISTORY_TYPE_ADD, ptlAgreement);
         ptlAgreementHistory.setStartDate(ptlAgreement.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
         ptlAgreementHistory.setEndDate(ptlAgreement.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
         ptlAgreementHistory.setAgreementId(ptlAgreement.getId());
@@ -343,13 +358,64 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
                 .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getValidStatus()), PtlAgreement::getValidStatus, ptlAgreementPageVo.getValidStatus())
                 // 供应商类型
                 .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getCompaniesType()), PtlAgreement::getCompaniesType, ptlAgreementPageVo.getCompaniesType())
+                // 协议类型
+                .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getAgreementType()), PtlAgreement::getAgreementType, ptlAgreementPageVo.getAgreementType())
+                // 录入人
+                .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getCreator()), PtlAgreement::getCreator, ptlAgreementPageVo.getCreator())
+                // 修改人
+                .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getModifiedBy()), PtlAgreement::getModifiedBy, ptlAgreementPageVo.getModifiedBy())
                 // 合作公司
                 .in(!StringUtils.isEmpty(ptlAgreementPageVo.getPartnerCompaniesId()) && !lowerId.isEmpty(), PtlAgreement::getPartnerCompaniesId, lowerId)
                 // 录入时间
-                .between(!ObjectUtils.isEmpty(ptlAgreementPageVo.getStartDate()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getEndDate()), PtlAgreement::getCreateTime, ptlAgreementPageVo.getStartDate(), ptlAgreementPageVo.getEndDate());
-        Page<PtlAgreement> ptlAgreementPage = new Page<>(pageNum, pageSize);
-        Page<PtlAgreement> agreementPage = page(ptlAgreementPage, wrapper);
-        PageResult<PtlAgreement> ptlAgreementPageResult = new PageResult<>(pageNum, pageSize, (int) agreementPage.getTotal(), agreementPage.getRecords());
+                .between(!ObjectUtils.isEmpty(ptlAgreementPageVo.getStartDate()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getEndDate()), PtlAgreement::getCreateTime, ptlAgreementPageVo.getStartDate(), ptlAgreementPageVo.getEndDate())
+                // 修改时间
+                .between(!ObjectUtils.isEmpty(ptlAgreementPageVo.getUpdateStarTime()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getUpdateEndTime()), PtlAgreement::getUpdateTime, ptlAgreementPageVo.getUpdateStarTime(), ptlAgreementPageVo.getUpdateEndTime())
+                // 协议起期
+                .ge(!ObjectUtils.isEmpty(ptlAgreementPageVo.getAgreementStartDate()), PtlAgreement::getStartDate, ptlAgreementPageVo.getAgreementStartDate())
+                // 协议止期
+                .le(!ObjectUtils.isEmpty(ptlAgreementPageVo.getAgreementEndDate()), PtlAgreement::getEndDate, ptlAgreementPageVo.getAgreementEndDate());
+
+//        Page<PtlAgreement> ptlAgreementPage = new Page<>(pageNum, pageSize);
+        List<PtlAgreement> records = list(wrapper);
+//        Page<PtlAgreement> agreementPage = page(ptlAgreementPage, wrapper);
+//        List<PtlAgreement> records = agreementPage.getRecords();
+        if (ptlAgreementPageVo.getAreaCode() != null && !"".equals(ptlAgreementPageVo.getAreaCode()) && ptlAgreementPageVo.getLevel() != null) {
+            String area = ptlAgreementPageVo.getAreaCode();
+            String prefix = null;
+            Integer sign = 0;
+            switch (ptlAgreementPageVo.getLevel()) {
+                case "1": { // 省级查询逻辑
+                    sign = 7;
+                    prefix = area.substring(0, 2);
+                    break;
+                }
+                case "2": {  // 市级查询逻辑
+                    sign = 9;
+                    prefix = area.substring(0, 4);
+                    break;
+                }
+                case "3": {  // 区县级查询逻辑
+                    sign = 11;
+                    prefix = area.substring(0, 6);
+                    break;
+                }
+            }
+
+            if (records.size() != 0) {
+                List<PtlAgreement> ptlAgreements = new ArrayList<>();
+                for (PtlAgreement record : records) {
+                    String substring = record.getPartnerCompaniesId().substring(5, sign);
+                    if (substring.equals(prefix)) {
+                        ptlAgreements.add(record);
+                    }
+                }
+                records.clear();
+                records.addAll(ptlAgreements);
+            }
+        }
+        List<PtlAgreement> paginate = paginate(records, pageNum, pageSize);
+
+        PageResult<PtlAgreement> ptlAgreementPageResult = new PageResult<>(pageNum, pageSize, records.size(), paginate);
         return HttpResult.ok(ptlAgreementPageResult);
     }
 
@@ -416,7 +482,16 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         // 添加 历史记录表
         //生成批次号
         String batchNo = IdGenerate.nextId();
-        PtlAgreementHistory ptlAgreementHistory = new PtlAgreementHistory(batchNo,userName, HistoryStatusConstants.HISTORY_TYPE_ADD, byAgreementId.getData().getAgreement());
+        List<PtlAgreementDept> dept = byAgreementId.getData().getDept();
+        ArrayList<PtlAgreementDeptHistory> histories = new ArrayList<>();
+        for (PtlAgreementDept ptlAgreementDept : dept) {
+            PtlAgreementDeptHistory deptHistory = new PtlAgreementDeptHistory();
+            deptHistory.setAgreementId(ptlAgreementDept.getAgreementId());
+            deptHistory.setDeptId(ptlAgreementDept.getDeptId());
+            deptHistory.setBatch(batchNo);
+        }
+        ptlAgreementDeptHistoryService.saveBatch(histories);
+        PtlAgreementHistory ptlAgreementHistory = new PtlAgreementHistory(batchNo, userName, HistoryStatusConstants.HISTORY_TYPE_ADD, byAgreementId.getData().getAgreement());
         ptlAgreementHistory.setStartDate(byAgreementId.getData().getAgreement().getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
         ptlAgreementHistory.setEndDate(byAgreementId.getData().getAgreement().getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
         ptlAgreementHistory.setAgreementId(ptlAgreementHistory.getId());
@@ -445,6 +520,7 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
 
         EsmInsCompany esmInsCompany = proxyObject.verifyLogin(ptlAgreement, agreementSaveDto, attribution);
 
+        ptlAgreement.setProductsCode(agreementSaveDto.getProductsCode());
         ptlAgreement.setModifiedBy(userName);
         ptlAgreement.setUpdateTime(LocalDateTime.now());
         HttpResult<PtlAgreementQueryVo> byAgreementId = this.getByAgreementId(agreementId);
@@ -459,7 +535,11 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         // 添加 历史记录表
         //生成批次号
         String batchNo = IdGenerate.nextId();
-        PtlAgreementHistory ptlAgreementHistory = new PtlAgreementHistory(batchNo,userName, HistoryStatusConstants.HISTORY_TYPE_ADD, ptlAgreement);
+        //添加授权部门历史信息
+        List<String> dept = agreement.getDept();
+        List<PtlAgreementDeptHistory> ptlAgreementDeptList = PtlAgreementDeptHistory.toPtlAgreementDeptHistoryList(ptlAgreement.getId(), dept, batchNo);
+        ptlAgreementDeptHistoryService.saveBatch(ptlAgreementDeptList);
+        PtlAgreementHistory ptlAgreementHistory = new PtlAgreementHistory(batchNo, userName, HistoryStatusConstants.HISTORY_TYPE_ADD, ptlAgreement);
         ptlAgreementHistory.setStartDate(ptlAgreement.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
         ptlAgreementHistory.setEndDate(ptlAgreement.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
         ptlAgreementHistory.setAgreementId(ptlAgreement.getId());
@@ -638,4 +718,23 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         return ptlAgreements;
     }
 
+    /**
+     * 手动对 QuUserNum 列表进行分页
+     *
+     * @param ptlAgreements 原始 QuUserNum 数据列表
+     * @param pageNum       期望获取的页码(从 1 开始)
+     * @param pageSize      每页包含的 QuUserNum 数量
+     * @return 对应页码的 QuUserNum 子列表,若输入参数无效则返回空列表
+     */
+    public List<PtlAgreement> paginate(List<PtlAgreement> ptlAgreements, int pageNum, int pageSize) {
+        if (ptlAgreements == null || ptlAgreements.isEmpty() || pageNum < 1 || pageSize < 1) {
+            return Collections.emptyList();
+        }
+
+        int startIndex = (pageNum - 1) * pageSize;
+        int endIndex = Math.min(startIndex + pageSize, ptlAgreements.size());
+
+        return ptlAgreements.subList(startIndex, endIndex);
+    }
+
 }

+ 2 - 1
src/main/resources/mapper/modules/protocol/PtlAgreementMapper.xml

@@ -51,6 +51,7 @@
             <result property="agreementName" column="agreement_name"/>
             <result property="underwritingDescription" column="underwriting_description"/>
             <result property="apiType" column="api_type"/>
+            <result property="productsCode" column="products_code"/>
         </collection>
 
     </resultMap>
@@ -67,7 +68,7 @@
     </sql>
 
     <select id="getAgreementCompany" resultMap="AgreementCompanyResultMap">
-        select eic.*, pa.id as agreement_id, pa.agreement_name, paa.api_type, pa.underwriting_description
+        select eic.*, pa.id as agreement_id, pa.agreement_name,pa.products_code, paa.api_type, pa.underwriting_description
         from esm_ins_company as eic
                  left join ptl_agreement as pa on pa.insurance_company_id = eic.id
                  left join ptl_agreement_attribution as paa on paa.id = pa.id