Procházet zdrojové kódy

Merge branch 'master' into wrq_dev

wangrq před 3 týdny
rodič
revize
23554b7b0e

+ 8 - 0
commons/src/main/java/com/jzg/commons/entity/dto/PtlAgreementCostParam.java

@@ -4,9 +4,11 @@ package com.jzg.commons.entity.dto;
 import com.jzg.commons.core.base.PageRequest;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 import java.util.List;
 
+@EqualsAndHashCode(callSuper = true)
 @Data
 @Schema(description = "协议费用管理参数")
 public class PtlAgreementCostParam extends PageRequest {
@@ -21,9 +23,15 @@ public class PtlAgreementCostParam extends PageRequest {
     @Schema(description = "输入代码,名称,简称查找")
     private String agreement;
 
+    @Schema(description = "输入代码,名称,简称查找,支持多选")
+    private String[] agreementIds;
+
     @Schema(description = "险种id")
     private String productId;
 
+    @Schema(description = "险种id(支持多选)")
+    private String[] productIds;
+
     @Schema(description = "承保规则")
     private String rulesName;
 

+ 5 - 6
commons/src/main/java/com/jzg/commons/entity/vo/CostExternalTypeVo.java

@@ -10,15 +10,14 @@ import java.math.BigDecimal;
 @Schema(description = "补录协议费用管理列表VO")
 public class CostExternalTypeVo {
 
-    private String costType;
+    private String costType="0.0";
 
-    private BigDecimal inlet;
+    private BigDecimal inlet=BigDecimal.ZERO;
 
-    private BigDecimal export;
+    private BigDecimal export=BigDecimal.ZERO;
 
-    private BigDecimal addThrow;
-
-    private BigDecimal keepPointRatio;
+    private BigDecimal addThrow=BigDecimal.ZERO;
 
+    private BigDecimal keepPointRatio=BigDecimal.ZERO;
 
 }

+ 10 - 0
tenant/organization/src/main/java/com/jzg/organization/service/PtlAreaLicenseService.java

@@ -44,4 +44,14 @@ public interface PtlAreaLicenseService extends IService<PtlAreaLicense> {
      */
     String convertAreaNumber2License(Map<String,PtlAreaLicense> areaLicenseMap , String areaNumbers);
 
+    /**
+     * 将地区编码转换为对应的车牌号
+     *
+     * @param areaNumbers 地区编码,支持多个拼接,例如1401,1402,1403
+     * @return String 地区车牌号,例如晋A,晋B,晋C
+     * @author lipf
+     * @date 2026/5/21 9:53
+     */
+    String convertAreaNumber2License(String areaNumbers);
+
 }

+ 43 - 47
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementUndwrtRulesServiceImpl.java

@@ -1,6 +1,7 @@
 package com.jzg.organization.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -55,6 +56,8 @@ public class PtlAgreementUndwrtRulesServiceImpl extends ServiceImpl<PtlAgreement
 
     @Autowired
     private PtlAgreementService ptlAgreementService;
+    @Autowired
+    private PtlAreaLicenseService ptlAreaLicenseService;
 
     /**
      * 协议规则列表
@@ -515,51 +518,6 @@ public class PtlAgreementUndwrtRulesServiceImpl extends ServiceImpl<PtlAgreement
     }
 
 
-
-    public AgreementRulesVo rulesCCC(String ruleId) {
-        PtlAgreementUndwrtRules rules = baseMapper.selectById(ruleId);
-        if (rules == null) {
-            log.info("承保规则不存在, ruleId={}", ruleId);
-            return null;
-        }
-        PtlAgreement agreement = ptlAgreementService.getById(rules.getAgreementId());//协议id
-        AgreementRulesVo rulesVo = new AgreementRulesVo();
-        BeanUtils.copyProperties(rules, rulesVo);
-
-        // 获取费用因子属性(公共逻辑,仅查询一次)
-        List<PtlAgreementUndwrtRulesAttr> attrList = agreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
-        Map<String, PtlAgreementUndwrtRulesAttr> attrMap = attrList.stream()
-                .filter(attr -> "all".equals(attr.getCompanyIds()) || attr.getCompanyIds().equals(agreement.getCompanyId()))
-                .collect(Collectors.toMap(PtlAgreementUndwrtRulesAttr::getAttrCode, attr -> attr));
-
-        // 确定需要处理的规则ID列表
-        List<String> ruleIds;
-        if (rules.getParentId() != null && !rules.getParentId().isEmpty()) {
-            ruleIds = baseMapper.queryListByParentId(rules.getParentId()).stream()
-                    .map(AgreementRulesVo::getId).collect(Collectors.toList());
-        } else {
-            ruleIds = List.of(ruleId);
-        }
-
-        // 统一组装 groups
-        List<RulesGroupParam> groups = new ArrayList<>();
-        for (String id : ruleIds) {
-            List<PtlAgreementUndwrtRulesAttrLink> linkList = agreementUndwrtRulesAttrLinkService.queryLinkList(id);
-            List<PtlAgreementUndwrtRulesAttr> enrichedAttrs = enrichAttrLinks(linkList, attrMap);
-            RulesGroupParam group = new RulesGroupParam();
-            group.setRulesAttrList(linkList);
-            group.setCostsAttrLinks(enrichedAttrs);
-            groups.add(group);
-        }
-        rulesVo.setRulesGroups(groups);
-        // 单条模式向后兼容,同时设置 costsAttrLinks
-        if (ruleIds.size() == 1) {
-            rulesVo.setCostsAttrLinks(groups.get(0).getCostsAttrLinks());
-        }
-        return rulesVo;
-    }
-
-
     @Override
     @Transactional(rollbackFor = Exception.class)
     public AgreementRulesVo rulesCopy(String agreementId, String ruleId) {
@@ -744,7 +702,10 @@ public class PtlAgreementUndwrtRulesServiceImpl extends ServiceImpl<PtlAgreement
             if ("radio".equals(ptlAgreementUndwrtRulesAttr.getAttrType())) {
                 desc.append(radioIdentifying(ptlAgreementUndwrtRulesAttr, linkList.get(i))).append(",");
             }
-            if ("checkbox".equals(ptlAgreementUndwrtRulesAttr.getAttrType()) || "select".equals(ptlAgreementUndwrtRulesAttr.getAttrType())) {
+            if ("select".equals(ptlAgreementUndwrtRulesAttr.getAttrType())) {
+                desc.append(selectIdentifying(ptlAgreementUndwrtRulesAttr, linkList.get(i)));
+            }
+            if ("checkbox".equals(ptlAgreementUndwrtRulesAttr.getAttrType())) {
                 desc.append(checkBoxIdentifying(ptlAgreementUndwrtRulesAttr,linkList.get(i)));
             }
             if ("inputTag".equals(ptlAgreementUndwrtRulesAttr.getAttrType())) {
@@ -763,6 +724,36 @@ public class PtlAgreementUndwrtRulesServiceImpl extends ServiceImpl<PtlAgreement
         return ptlAgreementUndwrtRulesAttr.getAttrName() + "为" + ptlAgreementUndwrtRulesDictLabal.getName();
     }
 
+    private String selectIdentifying(PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr, PtlAgreementUndwrtRulesAttrLink ptlAgreementProductCostsAttrLink) {
+        StringBuilder returnMsg = new StringBuilder();
+        returnMsg.append(ptlAgreementUndwrtRulesAttr.getAttrName()).append("为");
+        // 兼容 min 逗号分隔存储,保证 minArray 有值
+        if (ptlAgreementProductCostsAttrLink.getMinArray() == null) {
+            String minStr = ptlAgreementProductCostsAttrLink.getMin();
+            if (minStr != null && !minStr.isEmpty()) {
+                ptlAgreementProductCostsAttrLink.setMinArray(minStr.split(","));
+            }
+        }
+        // 优先取 link 上的字典标签列表(JSONArray -> List),为空时回退到属性自带字典
+        List<PtlAgreementUndwrtRulesDictLabal> dictLabalList = new ArrayList<>();
+        if (ptlAgreementProductCostsAttrLink.getDictLabal() != null && !ptlAgreementProductCostsAttrLink.getDictLabal().isEmpty()) {
+            dictLabalList = ptlAgreementProductCostsAttrLink.getDictLabal().toJavaList(PtlAgreementUndwrtRulesDictLabal.class);
+        } else if (ptlAgreementUndwrtRulesAttr.getDictLabal() != null) {
+            dictLabalList = ptlAgreementUndwrtRulesAttr.getDictLabal();
+        }
+        // 用字典标签的 code 匹配 minArray 中的每一项
+        if (ptlAgreementProductCostsAttrLink.getMinArray() != null) {
+            for (String item : ptlAgreementProductCostsAttrLink.getMinArray()) {
+                PtlAgreementUndwrtRulesDictLabal ptlAgreementUndwrtRulesDictLabal = dictLabalList.stream()
+                        .filter(x -> x.getCode() != null && x.getCode().equals(item)).findAny().orElse(null);
+                if (ptlAgreementUndwrtRulesDictLabal != null) {
+                    returnMsg.append(ptlAgreementUndwrtRulesDictLabal.getName()).append(",");
+                }
+            }
+        }
+        return returnMsg.toString();
+    }
+
     private String checkBoxIdentifying(PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr, PtlAgreementUndwrtRulesAttrLink linkList) {
         StringBuilder returnMsg = new StringBuilder();
         returnMsg.append(ptlAgreementUndwrtRulesAttr.getAttrName()).append("为");
@@ -774,15 +765,20 @@ public class PtlAgreementUndwrtRulesServiceImpl extends ServiceImpl<PtlAgreement
             }
         }
         if (linkList.getMinArray() != null) {
+            StringBuilder licenseInfo = new StringBuilder();
             for(int i=0;i<linkList.getMinArray().length;i++) {
                 int finalI = i;
                 if(ptlAgreementUndwrtRulesAttr.getAttrCode().equals("LicenseNo") || ptlAgreementUndwrtRulesAttr.getAttrCode().equals("LicenseArea")) {
-                    returnMsg.append(linkList.getMinArray()[i]).append(",");
+                    licenseInfo.append(linkList.getMinArray()[i]).append(",");
                 }else {
                     PtlAgreementUndwrtRulesDictLabal ptlAgreementUndwrtRulesDictLabal = ptlAgreementUndwrtRulesAttr.getDictLabal().stream().filter(x -> x.getCode().equals(linkList.getMinArray()[finalI])).findAny().get();
                     returnMsg.append(ptlAgreementUndwrtRulesDictLabal.getName()).append(",");
                 }
             }
+            if(StrUtil.isNotEmpty(licenseInfo.toString())){
+                String licenseName = ptlAreaLicenseService.convertAreaNumber2License(licenseInfo.toString());
+                returnMsg.append(licenseName).append(",");
+            }
         }
         return returnMsg.toString();
     }

+ 14 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAreaLicenseServiceImpl.java

@@ -97,4 +97,18 @@ public class PtlAreaLicenseServiceImpl extends ServiceImpl<PtlAreaLicenseMapper,
         log.info("地区编码[{}]转换后的车牌编码是[{}]",areaNumbers,collect);
         return collect;
     }
+
+    /**
+     * 将地区编码转换为对应的车牌号
+     *
+     * @param areaNumbers 地区编码,支持多个拼接,例如1401,1402,1403
+     * @return String 地区车牌号,例如晋A,晋B,晋C
+     * @author lipf
+     * @date 2026/5/21 9:53
+     */
+    @Override
+    public String convertAreaNumber2License(String areaNumbers) {
+        Map<String, PtlAreaLicense> areaLicenseMap = this.queryAllAreaLicenseMap();
+        return this.convertAreaNumber2License(areaLicenseMap, areaNumbers);
+    }
 }

+ 10 - 7
tenant/organization/src/main/resources/mapper/PtlAgreementCostMapper.xml

@@ -420,14 +420,17 @@
                     #{partnerCompnayId}
                 </foreach>
             </if>
-            <if test="costParam.agreement != null and costParam.agreement != ''">
-                AND (pa.agreement_title  like concat('%',#{costParam.agreement},'%') or
-                pa.agreement_code  like concat('%',#{costParam.agreement},'%') or
-                pa.agreement_abbreviation  like concat('%',#{costParam.agreement},'%') or
-                pa.id = #{costParam.agreement})
+            <if test="costParam.agreementIds != null and costParam.agreementIds.length >0 ">
+                AND pa.id in
+                <foreach collection="costParam.agreementIds" item="agreementId" separator="," open="(" close=")">
+                    #{agreementId}
+                </foreach>
             </if>
-            <if test="costParam.productId != null and costParam.productId != ''">
-                AND pc.product_id = #{costParam.productId}
+            <if test="costParam.productIds != null and costParam.productIds.length > 0 ">
+                AND pc.product_id in
+                <foreach collection="costParam.productIds" item="productId" separator="," open="(" close=")">
+                        #{productId}
+                </foreach>
             </if>
             <if test="costParam.agreementId != null and costParam.agreementId != ''">
                 AND pc.ptl_agreement_id = #{costParam.agreementId}