785834757 8 meses atrás
pai
commit
0ec3bf2c45
22 arquivos alterados com 291 adições e 54 exclusões
  1. 26 0
      commons/src/main/java/com/jzg/commons/entity/agreement/vo/PtlAgreementUndwrtRulesAttrQueryVo.java
  2. 6 0
      commons/src/main/java/com/jzg/commons/entity/dto/RulesAttParam.java
  3. 3 0
      commons/src/main/java/com/jzg/commons/entity/po/PtlAgreementUndwrtRulesAttr.java
  4. 37 0
      commons/src/main/java/com/jzg/commons/entity/po/PtlNewCarJudgeRules.java
  5. 3 0
      commons/src/main/java/com/jzg/commons/entity/scheme/vo/PtlAgreementInsCompanyVo.java
  6. 9 23
      commons/src/main/java/com/jzg/commons/entity/vo/RuleAttrMappingVo.java
  7. 10 0
      tenant/costsorrule/src/main/java/com/jzg/costsorrule/service/impl/RuleServiceImpl.java
  8. 16 16
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/api/entity/Request/PremiumRequest.java
  9. 11 3
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/aspect/QuoteVerificationAspect.java
  10. 6 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrdersController.java
  11. 0 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java
  12. 7 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersService.java
  13. 8 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
  14. 16 0
      tenant/organization/src/main/java/com/jzg/organization/action/service/ChangeBsAccountHandler.java
  15. 8 0
      tenant/organization/src/main/java/com/jzg/organization/action/service/SupplementaryOrderHandler.java
  16. 9 0
      tenant/organization/src/main/java/com/jzg/organization/client/QuoteClient.java
  17. 7 0
      tenant/organization/src/main/java/com/jzg/organization/controller/PtlNewAgreementController.java
  18. 11 0
      tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementUndwrtRulesAttrService.java
  19. 1 1
      tenant/organization/src/main/java/com/jzg/organization/service/PtlSchemeService.java
  20. 1 2
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementDispatchServiceImpl.java
  21. 88 4
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementUndwrtRulesAttrServiceImpl.java
  22. 8 4
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlSchemeServiceImpl.java

+ 26 - 0
commons/src/main/java/com/jzg/commons/entity/agreement/vo/PtlAgreementUndwrtRulesAttrQueryVo.java

@@ -0,0 +1,26 @@
+package com.jzg.commons.entity.agreement.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author quchen
+ * @date 2025/3/17 11:12
+ */
+
+@Data
+public class PtlAgreementUndwrtRulesAttrQueryVo {
+
+    @Schema(description = "应用范围")
+    private String scopeApplication;
+
+    @Schema(description = "分组")
+    private List<String> attrGroup;
+
+    @Schema(description = "保险公司")
+    private String companyId;
+}

+ 6 - 0
commons/src/main/java/com/jzg/commons/entity/dto/RulesAttParam.java

@@ -10,4 +10,10 @@ public class RulesAttParam {
 
     @Schema(description = "属性名称")
     private String attrName;
+
+    @Schema(description = "保司id")
+    private String companyId;
+
+    @Schema(description = "应用范围")
+    private String scopeApplication;
 }

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/po/PtlAgreementUndwrtRulesAttr.java

@@ -40,6 +40,9 @@ public class PtlAgreementUndwrtRulesAttr extends BaseModel {
     @TableField(value = "attr_group")
     private String attrGroup;
 
+    @TableField(value = "scope_application")
+    private String scopeApplication;
+
     @TableField(value = "sort")
     private Integer sort;
 

+ 37 - 0
commons/src/main/java/com/jzg/commons/entity/po/PtlNewCarJudgeRules.java

@@ -0,0 +1,37 @@
+package com.jzg.commons.entity.po;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jzg.commons.core.base.BaseModel;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+
+/**
+ * @author: JZG 协议费用管理
+ */
+
+@Data
+@TableName("ptl_new_car_judge_rules")
+public class PtlNewCarJudgeRules{
+
+    @TableId(type = IdType.ASSIGN_ID)
+    private String id;
+
+    private String companyId;
+
+    private String vehicleType;
+
+    private String unitTypeCode;
+
+    private String unitTypeValue;
+
+    private String isEffective;
+
+    private Date saveDate;
+
+}

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/scheme/vo/PtlAgreementInsCompanyVo.java

@@ -30,6 +30,9 @@ public class PtlAgreementInsCompanyVo extends EsmInsCompany implements Serializa
     @Schema(description = "调度id")
     private String dispatchId;
 
+    @Schema(description = "调度协议id")
+    private String dispatchAgreementId;
+
     @Schema(description = "协议信息")
     private List<PtlAgreement> agreement;
 

+ 9 - 23
commons/src/main/java/com/jzg/commons/entity/vo/RuleAttrMappingVo.java

@@ -6,6 +6,7 @@ import com.jzg.commons.constants.quote.enums.quote.VehicleUseCode;
 import com.jzg.commons.entity.orders.po.*;
 import com.jzg.commons.util.StringUtils;
 import lombok.Data;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -27,6 +28,7 @@ public class RuleAttrMappingVo {
 
     private String value;
 
+
     public RuleAttrMappingVo(String attrCode, String value) {
         this.attrCode = attrCode;
         this.value = value;
@@ -35,7 +37,7 @@ public class RuleAttrMappingVo {
     public static List<RuleAttrMappingVo> getRuleAttrMappingVoList(InsOrdersOther insOrdersOther,
                                                                    InsOrdersCarInfo insOrdersCarInfo, List<InsOrdersRisk> riskList,
                                                                    List<InsOrdersCarUserInfo> insOrdersCarUserInfos, List<InsOrdersKind> kindList,
-                                                                   InsOrdersCosts insOrdersCosts, InsOrdersAccidentalDriving insOrdersAccidentalDriving) {
+                                                                   InsOrdersCosts insOrdersCosts, InsOrdersAccidentalDriving insOrdersAccidentalDriving,Boolean isNewCar) {
         List<RuleAttrMappingVo> ruleAttrMappingVoList = new ArrayList<>();
         //车牌号
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("LicenseNo", insOrdersCarInfo.getLicenseNo()));
@@ -53,13 +55,13 @@ public class RuleAttrMappingVo {
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarTypeCode", insOrdersCarInfo.getCarTypeCode()));
         //核定载质量
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("AuthorizedLoadWeight", insOrdersCarInfo.getLimitLoad().toString()));
-//        //汽车排量
-//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("EngineCapacity", insOrdersCarInfo.getDisplacement()));
+        //汽车排量
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("EngineCapacity", insOrdersCarInfo.getDisplacement()));
         //整备质量
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("CurbWeight", insOrdersCarInfo.getCompleteKerbMass().toString()));
         //能源类型
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("NewEnergyMark", insOrdersCarInfo.getEnergyTypeCode()));
-//        //注册日期
+        //注册日期
 //        ruleAttrMappingVoList.add(new RuleAttrMappingVo("RegistrationDate", insOrdersCarInfo.getRegisterDate()));
         //是否过户
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("Transfer", String.valueOf(insOrdersCarInfo.getTransfer())));
@@ -313,29 +315,13 @@ public class RuleAttrMappingVo {
                     String.valueOf(insOrdersAccidentalDriving.getQuantity())));
         }
         //发证日期
-//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("DateofIssuance", carInfo.getIssueDate()));
+//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("DateofIssuance", insOrdersCarInfo.getIssueDate()));
         //车长
 //        ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleLength", carInfo.getCarLength()));
         //特种车判断
-        // ruleAttrMappingVoList.add(new RuleAttrMappingVo("SpecialVehicle", Objects.nonNull(carInfo.getImportFlag()) && carInfo.getImportFlag().equals("特种车类") ? "1" : "0"));
+//         ruleAttrMappingVoList.add(new RuleAttrMappingVo("SpecialVehicle", Objects.nonNull(carInfo.getImportFlag()) && carInfo.getImportFlag().equals("特种车类") ? "1" : "0"));
         //是否新车
-        //使用注册日期算出自然月 然后判断是否是新旧车
-//        boolean isNoLicenseFlag = false;
-//        if (carJudgeRule != null) {
-//            if (carJudgeRule.getUnitTypeCode().equals("天")) {
-//                long days = ChronoUnit.DAYS.between(registrationDate, currentDate);
-//                if (days < Integer.parseInt(carJudgeRule.getUnitTypeValue())) {
-//                    isNoLicenseFlag = true;
-//                }
-//            }
-//            if (carJudgeRule.getUnitTypeCode().equals("月")) {
-//                long months = ChronoUnit.MONTHS.between(registrationDate, currentDate);
-//                if (months < Integer.parseInt(carJudgeRule.getUnitTypeValue())) {
-//                    isNoLicenseFlag = true;
-//                }
-//            }
-//        }
-//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NewAndOldCars", isNoLicenseFlag ? "1" : "0"));
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NewAndOldCars", isNewCar ? "1" : "0"));
         return ruleAttrMappingVoList;
     }
 

+ 10 - 0
tenant/costsorrule/src/main/java/com/jzg/costsorrule/service/impl/RuleServiceImpl.java

@@ -6,10 +6,12 @@ import com.jzg.commons.entity.agreement.dispatch.dto.PtlAgreementDispatchRulesAt
 import com.jzg.commons.entity.agreement.dispatch.vo.ValidateDispatchRuleVo;
 import com.jzg.commons.entity.po.PtlAgreementUndwrtRulesAttr;
 import com.jzg.commons.entity.scheme.po.PtlSchemeRulesAttrLink;
+import com.jzg.costsorrule.client.QuoteClient;
 import com.jzg.costsorrule.constants.AttrTypeConstant;
 import com.jzg.costsorrule.constants.OperatorConstant;
 import com.jzg.costsorrule.model.RuleAttrLinkVo;
 import com.jzg.costsorrule.service.RuleService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
@@ -21,6 +23,9 @@ import java.util.stream.Collectors;
 @Service
 public class RuleServiceImpl implements RuleService {
 
+//    @Autowired
+//    QuoteClient quoteClient;
+
     /**
      * 预处理数据
      * @param attrMap
@@ -295,6 +300,11 @@ public class RuleServiceImpl implements RuleService {
                 traverseJsonArray((JSONArray) value,attrMap);
             }
         }
+
+        // 处理需要计算的
+        // 新旧车
+
+
     }
 
     /**

+ 16 - 16
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/api/entity/Request/PremiumRequest.java

@@ -351,7 +351,7 @@ public class PremiumRequest {
             }
 
             //第三者责任险
-            if (k.getKindCode().equals(KindCode.B.getCode())) {
+            if (k.getPlatformKindCode().equals(KindCode.B.getCode())) {
                 if (isEnergy) {
                     prptitemkind.setKindCode(InsurKindGuoRen.B_N.getCode());
                     prptitemkind.setKindName(InsurKindGuoRen.B_N.getDesc());
@@ -368,7 +368,7 @@ public class PremiumRequest {
                 prptitemkind.setUnitAmount("0");
             }
             //乘客责任险
-            if (k.getKindCode().equals(KindCode.D4.getCode())) {
+            if (k.getPlatformKindCode().equals(KindCode.D4.getCode())) {
                 if (isEnergy) {
                     prptitemkind.setKindCode(InsurKindGuoRen.D4_N.getCode());
                     prptitemkind.setKindName(InsurKindGuoRen.D4_N.getDesc());
@@ -387,7 +387,7 @@ public class PremiumRequest {
 
             }
             //机动车损失险
-            if (k.getKindCode().equals(KindCode.A.getCode())) {
+            if (k.getPlatformKindCode().equals(KindCode.A.getCode())) {
                 if (isEnergy) {
                     prptitemkind.setKindCode(InsurKindGuoRen.A_N.getCode());
                     prptitemkind.setKindName(InsurKindGuoRen.A_N.getDesc());
@@ -407,7 +407,7 @@ public class PremiumRequest {
 
             }
             //司机责任险
-            if (k.getKindCode().equals(KindCode.D3.getCode())) {
+            if (k.getPlatformKindCode().equals(KindCode.D3.getCode())) {
                 if (isEnergy) {
                     prptitemkind.setKindCode(InsurKindGuoRen.D3_N.getCode());
                     prptitemkind.setKindName(InsurKindGuoRen.D3_N.getDesc());
@@ -425,7 +425,7 @@ public class PremiumRequest {
                 prptitemkind.setAmount(StringUtils.toString(k.getAmount()));
             }
             //附加绝对免赔率特约条款(车损)
-            if (k.getKindCode().equals(KindCode.MJ1.getCode())) {
+            if (k.getPlatformKindCode().equals(KindCode.MJ1.getCode())) {
                 prptitemkind.setKindCode(InsurKindGuoRen.MJ1.getCode());
                 prptitemkind.setKindName(InsurKindGuoRen.MJ1.getDesc());
                 prptitemkind.setItemKindNo(InsurKindGuoRen.MJ1.getItemKindNo());
@@ -437,7 +437,7 @@ public class PremiumRequest {
 
             }
             //绝对免赔率特约险(三者)
-            if (k.getKindCode().equals(KindCode.MJ2.getCode())) {
+            if (k.getPlatformKindCode().equals(KindCode.MJ2.getCode())) {
                 prptitemkind.setKindCode(InsurKindGuoRen.MJ2.getCode());
                 prptitemkind.setKindName(InsurKindGuoRen.MJ2.getDesc());
                 prptitemkind.setItemKindNo(InsurKindGuoRen.MJ2.getItemKindNo());
@@ -448,7 +448,7 @@ public class PremiumRequest {
                 prptitemkind.setAmount(StringUtils.toString(k.getAmount()));
             }
             //绝对免赔率特约险(司机)
-            if (k.getKindCode().equals(KindCode.MJ3.getCode())) {
+            if (k.getPlatformKindCode().equals(KindCode.MJ3.getCode())) {
                 prptitemkind.setKindCode(InsurKindGuoRen.MJ3.getCode());
                 prptitemkind.setKindName(InsurKindGuoRen.MJ3.getDesc());
                 prptitemkind.setItemKindNo(InsurKindGuoRen.MJ3.getItemKindNo());
@@ -460,7 +460,7 @@ public class PremiumRequest {
                 prptitemkind.setAmount(StringUtils.toString(k.getAmount()));
             }
             //绝对免赔率特约险(乘客)
-            if (k.getKindCode().equals(KindCode.MJ4.getCode())) {
+            if (k.getPlatformKindCode().equals(KindCode.MJ4.getCode())) {
                 prptitemkind.setKindCode(InsurKindGuoRen.MJ4.getCode());
                 prptitemkind.setKindName(InsurKindGuoRen.MJ4.getDesc());
                 prptitemkind.setItemKindNo(InsurKindGuoRen.MJ4.getItemKindNo());
@@ -472,7 +472,7 @@ public class PremiumRequest {
                 prptitemkind.setAmount(BigDecimal.valueOf(StringUtils.toDouble(k.getUnitAmount())).multiply(passengerNum).toString());
             }
             //车身划痕险
-            if (k.getKindCode().equals(KindCode.L.getCode())) {
+            if (k.getPlatformKindCode().equals(KindCode.L.getCode())) {
                 prptitemkind.setKindCode(InsurKindGuoRen.L.getCode());
                 prptitemkind.setKindName(InsurKindGuoRen.L.getDesc());
                 prptitemkind.setItemKindNo(InsurKindGuoRen.L.getItemKindNo());
@@ -482,7 +482,7 @@ public class PremiumRequest {
                 prptitemkind.setUnitAmount(StringUtils.toString(k.getUnitAmount()));
             }
             //附加法定节假日限额翻倍险
-            if (k.getKindCode().equals(KindCode.BD.getCode())) {
+            if (k.getPlatformKindCode().equals(KindCode.BD.getCode())) {
                 prptitemkind.setKindCode(InsurKindGuoRen.BD.getCode());
                 prptitemkind.setKindName(InsurKindGuoRen.BD.getDesc());
                 prptitemkind.setItemKindNo(InsurKindGuoRen.BD.getItemKindNo());
@@ -494,7 +494,7 @@ public class PremiumRequest {
 
             }
             //医保外  三者
-            if (k.getKindCode().equals(KindCode.SY_FJ_YBW1.getCode())) {
+            if (k.getPlatformKindCode().equals(KindCode.SY_FJ_YBW1.getCode())) {
                 prptitemkind.setKindCode(InsurKindGuoRen.SY_FJ_YBW1.getCode());
                 prptitemkind.setKindName(InsurKindGuoRen.SY_FJ_YBW1.getDesc());
                 prptitemkind.setItemKindNo(InsurKindGuoRen.SY_FJ_YBW1.getItemKindNo());
@@ -515,7 +515,7 @@ public class PremiumRequest {
                 prptitemkind.setAmount(BigDecimal.valueOf(StringUtils.toDouble(k.getUnitAmount())).multiply(passengerNum).toString());
             }
             //医保外  司机
-            if (k.getKindCode().equals(KindCode.SY_FJ_YBW3.getCode())) {
+            if (k.getPlatformKindCode().equals(KindCode.SY_FJ_YBW3.getCode())) {
                 prptitemkind.setKindCode(InsurKindGuoRen.SY_FJ_YBW3.getCode());
                 prptitemkind.setKindName(InsurKindGuoRen.SY_FJ_YBW3.getDesc());
                 prptitemkind.setItemKindNo(InsurKindGuoRen.SY_FJ_YBW3.getItemKindNo());
@@ -526,7 +526,7 @@ public class PremiumRequest {
                 prptitemkind.setQuantity("1");
             }
 
-            if (k.getKindCode().equals(KindCode.TY1.getCode())) {
+            if (k.getPlatformKindCode().equals(KindCode.TY1.getCode())) {
                 if (isEnergy) {
                     prptitemkind.setKindCode(InsurKindGuoRen.TY1_N.getCode());
                     prptitemkind.setKindName(InsurKindGuoRen.TY1_N.getDesc());
@@ -543,7 +543,7 @@ public class PremiumRequest {
                 prptitemkind.setQuantity(String.valueOf(k.getServiceTimes()));
             }
 
-            if (k.getKindCode().equals(KindCode.TY2.getCode())) {
+            if (k.getPlatformKindCode().equals(KindCode.TY2.getCode())) {
                 if (isEnergy) {
                     prptitemkind.setKindCode(InsurKindGuoRen.TY2_N.getCode());
                     prptitemkind.setKindName(InsurKindGuoRen.TY2_N.getDesc());
@@ -560,7 +560,7 @@ public class PremiumRequest {
                 prptitemkind.setQuantity(String.valueOf(k.getServiceTimes()));
             }
 
-            if (k.getKindCode().equals(KindCode.TY3.getCode())) {
+            if (k.getPlatformKindCode().equals(KindCode.TY3.getCode())) {
                 if (isEnergy) {
                     prptitemkind.setKindCode(InsurKindGuoRen.TY3_N.getCode());
                     prptitemkind.setKindName(InsurKindGuoRen.TY3_N.getDesc());
@@ -577,7 +577,7 @@ public class PremiumRequest {
                 prptitemkind.setQuantity(String.valueOf(k.getServiceTimes()));
             }
 
-            if (k.getKindCode().equals(KindCode.TY4.getCode())) {
+            if (k.getPlatformKindCode().equals(KindCode.TY4.getCode())) {
                 if (isEnergy) {
                     prptitemkind.setKindCode(InsurKindGuoRen.TY4_N.getCode());
                     prptitemkind.setKindName(InsurKindGuoRen.TY4_N.getDesc());

+ 11 - 3
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/aspect/QuoteVerificationAspect.java

@@ -72,6 +72,7 @@ public class QuoteVerificationAspect {
 
     private final BaseController baseController;
 
+
     @Autowired
     private RedissonClient redissonClient;
 
@@ -156,7 +157,8 @@ public class QuoteVerificationAspect {
                 //按优先级进行排序
                 agreementProductCosts.sort(Comparator.comparingInt(CostsListVo::getPriorityLevel));
                 //遍历费用因子l
-                        String costId = verificationCosts(agreementProductCosts, logs, insOrdersOther, insOrdersCarInfo, insOrdersRisks, insOrdersCarUserInfos, kindList, insOrdersCosts, insOrdersAccidentalDriving);
+                String costId = verificationCosts(agreementProductCosts, logs, insOrdersOther, insOrdersCarInfo, insOrdersRisks,
+                        insOrdersCarUserInfos, kindList, insOrdersCosts, insOrdersAccidentalDriving, insOrders);
                 if (costId != null) {
                     // 根据匹配到的协议、费用 开始计算入口费用
                     InsFeeOrders insFeeOrders = calcCosts(agreementInfoVo,costId, insOrders,insOrdersCosts);
@@ -174,12 +176,18 @@ public class QuoteVerificationAspect {
                                      InsOrdersOther insOrdersOther, InsOrdersCarInfo insOrdersCarInfo,
                                      List<InsOrdersRisk> riskList, List<InsOrdersCarUserInfo> insOrdersCarUserInfos,
                                      List<InsOrdersKind> kindList, InsOrdersCosts insOrdersCosts,
-                                     InsOrdersAccidentalDriving insOrdersAccidentalDriving) {
+                                     InsOrdersAccidentalDriving insOrdersAccidentalDriving, InsOrders insOrders) {
         //获取所有费用属性
         List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = orgClient.list().getData();
+        HttpResult comparenew = orgClient.compareNewCar(insOrdersCarInfo.getRegisterDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")), insOrders.getCompanyId(), insOrdersCarInfo.getVehicleUseCode());
+        boolean isNewCar = false;
+        if(comparenew.getCode()== 200) {
+            // 新旧车判断
+             isNewCar = comparenew.getData().equals("true") ? true : false;
+        }
         //获取所有费用属性关联
         List<RuleAttrMappingVo> ruleAttrMappingVoList = RuleAttrMappingVo.getRuleAttrMappingVoList(insOrdersOther,insOrdersCarInfo,
-                riskList, insOrdersCarUserInfos, kindList, insOrdersCosts, insOrdersAccidentalDriving);
+                riskList, insOrdersCarUserInfos, kindList, insOrdersCosts, insOrdersAccidentalDriving, isNewCar);
 
         for (int i = 0; i < agreementProductCosts.size(); i++) {
             //判断是否匹配

+ 6 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrdersController.java

@@ -165,6 +165,12 @@ public class InsOrdersController extends BaseController {
         return insOrdersService.changePerson(orderNo,name,phone) ? HttpResult.ok("更改对接人成功") : HttpResult.error("更改对接人失败");
     }
 
+    @GetMapping("/changeSupplementOrder")
+    @Operation(summary = "报价失败更改订单为补录订单")
+    public HttpResult changeSupplementOrder(String orderNo){
+        return HttpResult.ok(insOrdersService.changeSupplementOrder(orderNo));
+    }
+
 
     @GetMapping("/comparePrice")
     @Operation(summary = "比价")

+ 0 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java

@@ -218,7 +218,6 @@ public class UnifyOrderManager {
         String companyName = CompanyConstants.getCompanyNameByCode(esmInsCompanyHttpResult.getData().getCompanyCode());
 
 
-        //先默认第一个协议
         HttpResult<List<PtlAgreement>> byCompanyId = orgClient.getByCompanyId(esmInsCompanyHttpResult.getData()
                 .getId(),systemCode, baseController.getToken(), systemCode);
         if (byCompanyId.getData().isEmpty()) {

+ 7 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersService.java

@@ -156,6 +156,13 @@ public interface InsOrdersService extends IService<InsOrders> {
      */
     boolean changePerson(String orderNo,String name,String phone);
 
+    /**
+     * 更改补录订单
+     * @param orderNo
+     * @return
+     */
+    boolean changeSupplementOrder(String orderNo);
+
     List<InsOrdersVo> comparePrice(String quoteNo);
 
 }

+ 8 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java

@@ -1193,6 +1193,14 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         return false;
     }
 
+    @Override
+    public boolean changeSupplementOrder(String orderNo){
+        InsOrders byId = baseMapper.selectById(Long.parseLong(orderNo));
+        byId.setEntryStatus(3);
+        baseMapper.updateById(byId);
+        return true;
+    }
+
     @Override
     public List<InsOrdersVo> comparePrice(String quoteNo){
         List<InsOrdersVo> ordersVos = baseMapper.queryNewQuoteListByQuoteNo(quoteNo);

+ 16 - 0
tenant/organization/src/main/java/com/jzg/organization/action/service/ChangeBsAccountHandler.java

@@ -1,9 +1,14 @@
 package com.jzg.organization.action.service;
 
+import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.action.base.ActionHandler;
 import com.jzg.commons.entity.action.enums.ActionEnum;
+import com.jzg.commons.entity.orders.po.InsOrders;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
+import com.jzg.commons.entity.quote.vo.orders.InsOrdersVo;
 import com.jzg.commons.exception.SystemException;
+import com.jzg.organization.client.QuoteClient;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 /**
@@ -12,6 +17,10 @@ import org.springframework.stereotype.Component;
 
 @Component
 public class ChangeBsAccountHandler implements ActionHandler {
+
+    @Autowired
+    QuoteClient quoteClient;
+
     @Override
     public ActionEnum getActionEnum() {
         return ActionEnum.CHANGE_BS_ACCOUNT;
@@ -19,8 +28,15 @@ public class ChangeBsAccountHandler implements ActionHandler {
 
     @Override
     public QuoteVo execute(String orderNo, QuoteVo quoteVo, Object param) {
+
+        HttpResult ordersResult = quoteClient.getOrdersById(orderNo);
+        if(ordersResult.getCode() != 200){
+            throw new SystemException(ordersResult.getMsg());
+        }
+
         // 传入的值为String
         String message = param.toString();
+
         return quoteVo;
         // 直接抛出错误提示的异常
 //        throw new SystemException(message);

+ 8 - 0
tenant/organization/src/main/java/com/jzg/organization/action/service/SupplementaryOrderHandler.java

@@ -1,8 +1,11 @@
 package com.jzg.organization.action.service;
 
+import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.action.base.ActionHandler;
 import com.jzg.commons.entity.action.enums.ActionEnum;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
+import com.jzg.organization.client.QuoteClient;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 /**
@@ -11,6 +14,10 @@ import org.springframework.stereotype.Component;
 
 @Component
 public class SupplementaryOrderHandler implements ActionHandler {
+
+    @Autowired
+    QuoteClient quoteClient;
+
     @Override
     public ActionEnum getActionEnum() {
         return ActionEnum.SUPPLEMENTARY_ORDER;
@@ -18,6 +25,7 @@ public class SupplementaryOrderHandler implements ActionHandler {
 
     @Override
     public QuoteVo execute(String orderNo, QuoteVo quoteVo, Object param) {
+        HttpResult httpResult = quoteClient.changeSupplementOrder(orderNo);
         return quoteVo;
     }
 }

+ 9 - 0
tenant/organization/src/main/java/com/jzg/organization/client/QuoteClient.java

@@ -41,6 +41,15 @@ public interface QuoteClient {
     public HttpResult changePerson(@RequestParam("orderNo") String orderNo, @RequestParam("name") String name,@RequestParam("phone") String phone);
 
 
+    /**
+     * 订单更改为补录
+     * @param orderNo
+     * @return
+     */
+    @GetMapping(value = "/supplementOrder/changeSupplementOrder")
+    public HttpResult changeSupplementOrder(@RequestParam("orderNo") String orderNo);
+
+
 
 
 }

+ 7 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/PtlNewAgreementController.java

@@ -2,6 +2,7 @@ package com.jzg.organization.controller;
 
 
 import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.agreement.vo.PtlAgreementUndwrtRulesAttrQueryVo;
 import com.jzg.commons.entity.dto.RulesAttParam;
 import com.jzg.commons.entity.po.PtlAgreementUndwrtRulesAttr;
 import com.jzg.organization.service.PtlAgreementUndwrtRulesAttrService;
@@ -32,6 +33,12 @@ public class PtlNewAgreementController {
         return HttpResult.ok(undwrtRulesAttrList);
     }
 
+    @Operation(summary = "协议承保规则属性列表")
+    @PostMapping("/attr/listByParam")
+    public HttpResult<List<PtlAgreementUndwrtRulesAttr>> list(@RequestBody PtlAgreementUndwrtRulesAttrQueryVo ptlAgreementUndwrtRulesAttrQueryVo) {
+        List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList(ptlAgreementUndwrtRulesAttrQueryVo);
+        return HttpResult.ok(undwrtRulesAttrList);
+    }
 
 
     @Operation(summary = "协议承保规则分组属性列表")

+ 11 - 0
tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementUndwrtRulesAttrService.java

@@ -1,6 +1,7 @@
 package com.jzg.organization.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.agreement.vo.PtlAgreementUndwrtRulesAttrQueryVo;
 import com.jzg.commons.entity.dto.RulesAttParam;
 import com.jzg.commons.entity.po.PtlAgreementUndwrtRulesAttr;
 
@@ -13,8 +14,18 @@ public interface PtlAgreementUndwrtRulesAttrService extends IService<PtlAgreemen
      * 协议承保规则属性列表
      * @return
      */
+    List<PtlAgreementUndwrtRulesAttr> getUndwrtRulesAttrList(PtlAgreementUndwrtRulesAttrQueryVo ptlAgreementUndwrtRulesAttrQueryVo);
+
     List<PtlAgreementUndwrtRulesAttr> getUndwrtRulesAttrList();
 
+    /**
+     * 根据保司查找规则
+     * @return
+     */
+    List<PtlAgreementUndwrtRulesAttr> getUndwrtRulesAttrList(String companyId);
+
+    List<PtlAgreementUndwrtRulesAttr> getUndwrtRulesAttrListByScope(String scope);
+
     Map<String, List<PtlAgreementUndwrtRulesAttr>> attrGroup(RulesAttParam param);
 
     PtlAgreementUndwrtRulesAttr getUndwrtRuleAttrByAttrCode(String attrCode);

+ 1 - 1
tenant/organization/src/main/java/com/jzg/organization/service/PtlSchemeService.java

@@ -61,7 +61,7 @@ public interface PtlSchemeService extends IService<PtlScheme> {
      * @param schemeId
      * @return
      */
-    public List<PtlAgreementUndwrtRulesAttr> rulesGet(String schemeId);
+    public List<PtlAgreementUndwrtRulesAttr> rulesGet(String companyId, String schemeId);
 
     /**
      * 保司列表

+ 1 - 2
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementDispatchServiceImpl.java

@@ -242,8 +242,7 @@ public class PtlAgreementDispatchServiceImpl extends ServiceImpl<PtlAgreementDis
         List<PtlAgreementDispatchVo.DispatchVo> dispatchVos = new ArrayList<>();
 
         if (!dispatchIds.isEmpty()) {
-            List<PtlAgreementDispatchAction> ptlAgreementDispatchActions = actionMapper.selectList(new LambdaQueryWrapper<PtlAgreementDispatchAction>()
-                    .in(PtlAgreementDispatchAction::getDispatchId, dispatchIds));
+            List<PtlAgreementDispatchAction> ptlAgreementDispatchActions = actionMapper.getActions(dispatchIds);
 
             // 进行分组
             Map<String, List<PtlAgreementDispatchAction>> groupedByDispatchId = ptlAgreementDispatchActions.stream()

+ 88 - 4
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementUndwrtRulesAttrServiceImpl.java

@@ -3,6 +3,7 @@ package com.jzg.organization.service.impl;
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.entity.agreement.vo.PtlAgreementUndwrtRulesAttrQueryVo;
 import com.jzg.commons.entity.dto.RulesAttParam;
 import com.jzg.commons.entity.po.PtlAgreementUndwrtRulesAttr;
 import com.jzg.commons.entity.po.PtlAgreementUndwrtRulesAttrLink;
@@ -19,10 +20,8 @@ import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+
+import java.util.*;
 import java.util.stream.Collectors;
 
 import static com.jzg.commons.constants.RedisKeyConstants.DICT_REDIS_KEY;
@@ -39,9 +38,88 @@ public class PtlAgreementUndwrtRulesAttrServiceImpl extends ServiceImpl<PtlAgree
 
     @Autowired
     RedissonClient redissonClient;
+    private PtlAgreementUndwrtRulesAttrQueryVo ptlAgreementUndwrtRulesAttrQueryVo;
 
     @Override
     public List<PtlAgreementUndwrtRulesAttr> getUndwrtRulesAttrList() {
+        this.ptlAgreementUndwrtRulesAttrQueryVo = ptlAgreementUndwrtRulesAttrQueryVo;
+        try {
+
+
+            // 获取属性列表
+            List<PtlAgreementUndwrtRulesAttr> list = this.list();
+            if (CollectionUtils.isEmpty(list)) {
+                return Collections.emptyList();
+            }
+            // 获取字典列表
+            List<PtlAgreementUndwrtRulesDictLabal> undwrtRulesDictList = ptlAgreementUndwrtRulesDictService.getUndwrtRulesDictList();
+            Map<Integer, List<PtlAgreementUndwrtRulesDictLabal>> dictMap = undwrtRulesDictList.stream()
+                    .collect(Collectors.groupingBy(PtlAgreementUndwrtRulesDictLabal::getDictId));
+            initializeAttributes(list, dictMap);
+            return list;
+        } catch (Exception e) {
+            // 处理异常
+            throw new RuntimeException("Error occurred while processing getUndwrtRulesAttrList", e);
+        }
+    }
+
+    @Override
+    public List<PtlAgreementUndwrtRulesAttr> getUndwrtRulesAttrList(String companyId) {
+        this.ptlAgreementUndwrtRulesAttrQueryVo = ptlAgreementUndwrtRulesAttrQueryVo;
+        try {
+
+
+            // 获取属性列表
+            List<PtlAgreementUndwrtRulesAttr> list = this.list();
+            if (CollectionUtils.isEmpty(list)) {
+                return Collections.emptyList();
+            }
+            // 获取字典列表
+            List<PtlAgreementUndwrtRulesDictLabal> undwrtRulesDictList = ptlAgreementUndwrtRulesDictService.getUndwrtRulesDictList();
+            Map<Integer, List<PtlAgreementUndwrtRulesDictLabal>> dictMap = undwrtRulesDictList.stream()
+                    .collect(Collectors.groupingBy(PtlAgreementUndwrtRulesDictLabal::getDictId));
+            initializeAttributes(list, dictMap);
+            return list;
+        } catch (Exception e) {
+            // 处理异常
+            throw new RuntimeException("Error occurred while processing getUndwrtRulesAttrList", e);
+        }
+    }
+
+    @Override
+    public List<PtlAgreementUndwrtRulesAttr> getUndwrtRulesAttrList(PtlAgreementUndwrtRulesAttrQueryVo ptlAgreementUndwrtRulesAttrQueryVo) {
+        this.ptlAgreementUndwrtRulesAttrQueryVo = ptlAgreementUndwrtRulesAttrQueryVo;
+        try {
+
+            LambdaQueryWrapper<PtlAgreementUndwrtRulesAttr> ptlAgreementUndwrtRulesAttrLambdaQueryWrapper = new LambdaQueryWrapper<>();
+
+            if(Objects.nonNull(ptlAgreementUndwrtRulesAttrQueryVo.getScopeApplication()) && !ptlAgreementUndwrtRulesAttrQueryVo.equals("")){
+                ptlAgreementUndwrtRulesAttrLambdaQueryWrapper.like(PtlAgreementUndwrtRulesAttr::getScopeApplication,ptlAgreementUndwrtRulesAttrQueryVo.getScopeApplication());
+            }
+            if(Objects.nonNull(ptlAgreementUndwrtRulesAttrQueryVo.getCompanyId()) && !ptlAgreementUndwrtRulesAttrQueryVo.equals("")){
+                ptlAgreementUndwrtRulesAttrLambdaQueryWrapper.eq(PtlAgreementUndwrtRulesAttr::getCompanyIds,"all")
+                        .or()
+                        .like(PtlAgreementUndwrtRulesAttr::getCompanyIds,ptlAgreementUndwrtRulesAttrQueryVo.getCompanyId());
+            }
+            // 获取属性列表
+            List<PtlAgreementUndwrtRulesAttr> list = this.list(ptlAgreementUndwrtRulesAttrLambdaQueryWrapper);
+            if (CollectionUtils.isEmpty(list)) {
+                return Collections.emptyList();
+            }
+            // 获取字典列表
+            List<PtlAgreementUndwrtRulesDictLabal> undwrtRulesDictList = ptlAgreementUndwrtRulesDictService.getUndwrtRulesDictList();
+            Map<Integer, List<PtlAgreementUndwrtRulesDictLabal>> dictMap = undwrtRulesDictList.stream()
+                    .collect(Collectors.groupingBy(PtlAgreementUndwrtRulesDictLabal::getDictId));
+            initializeAttributes(list, dictMap);
+            return list;
+        } catch (Exception e) {
+            // 处理异常
+            throw new RuntimeException("Error occurred while processing getUndwrtRulesAttrList", e);
+        }
+    }
+
+    @Override
+    public List<PtlAgreementUndwrtRulesAttr> getUndwrtRulesAttrListByScope(String scope) {
         try {
 
             // 获取属性列表
@@ -75,6 +153,12 @@ public class PtlAgreementUndwrtRulesAttrServiceImpl extends ServiceImpl<PtlAgree
     public Map<String, List<PtlAgreementUndwrtRulesAttr>> attrGroup(RulesAttParam param) {
         try {
             LambdaQueryWrapper<PtlAgreementUndwrtRulesAttr> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+            lambdaQueryWrapper.like(StringUtils.isNotEmpty(param.getScopeApplication()), PtlAgreementUndwrtRulesAttr::getScopeApplication, param.getScopeApplication());
+            if(Objects.nonNull(param.getCompanyId())){
+                lambdaQueryWrapper.eq(PtlAgreementUndwrtRulesAttr::getCompanyIds, "all")
+                        .or()
+                        .eq(PtlAgreementUndwrtRulesAttr::getCompanyIds, param.getCompanyId());
+            }
             lambdaQueryWrapper.like(StringUtils.isNotEmpty(param.getAttrName()), PtlAgreementUndwrtRulesAttr::getAttrName, param.getAttrName());
             lambdaQueryWrapper.orderByAsc(PtlAgreementUndwrtRulesAttr::getSort);
             List<PtlAgreementUndwrtRulesAttr> list = this.list(lambdaQueryWrapper);

+ 8 - 4
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlSchemeServiceImpl.java

@@ -197,7 +197,7 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
         List<PtlSchemeRulesAttrLink> ptlSchemeRulesAttrLinks = ptlSchemeRulesAttrLinkMapper.selectList(new LambdaQueryWrapper<PtlSchemeRulesAttrLink>()
                 .eq(PtlSchemeRulesAttrLink::getSchemeId, ptlScheme.getId()));
 
-        List<PtlAgreementUndwrtRulesAttr> agreementRulesVo = rulesGet(ptlScheme.getId());
+        List<PtlAgreementUndwrtRulesAttr> agreementRulesVo = rulesGet(ptlScheme.getCompanyId(), ptlScheme.getId());
 
         //拼装返回数据
         PtlSchemeQueryVo vo = new PtlSchemeQueryVo(ptlScheme,ptlSchemeInfo,ptlSchemeInsurancesNew,ptlSchemeInsuranceDrivingIntentions,ptlSchemeRulesAttrLinks,agreementRulesVo);
@@ -251,7 +251,7 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
         List<PtlSchemeRulesAttrLink> ptlSchemeRulesAttrLinks = ptlSchemeRulesAttrLinkMapper.selectList(new LambdaQueryWrapper<PtlSchemeRulesAttrLink>()
                 .eq(PtlSchemeRulesAttrLink::getSchemeId, ptlScheme.getId()));
 
-        List<PtlAgreementUndwrtRulesAttr> agreementRulesVo = rulesGet(ptlScheme.getId());
+        List<PtlAgreementUndwrtRulesAttr> agreementRulesVo = rulesGet(ptlScheme.getCompanyId(), ptlScheme.getId());
 
         //拼装返回数据
         PtlSchemeQueryVo vo = new PtlSchemeQueryVo(ptlScheme,ptlSchemeInfos,schemes,ptlSchemeRulesAttrLinks,agreementRulesVo);
@@ -276,11 +276,11 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
     }
 
     @Override
-    public List<PtlAgreementUndwrtRulesAttr> rulesGet(String schemeId) {
+    public List<PtlAgreementUndwrtRulesAttr> rulesGet(String companyId, String schemeId) {
         List<PtlSchemeRulesAttrLink> linkList = ptlSchemeRulesAttrLinkMapper.selectList(new LambdaQueryWrapper<PtlSchemeRulesAttrLink>()
                 .eq(PtlSchemeRulesAttrLink::getSchemeId, schemeId));
         // 获取费用因子属性
-        List<PtlAgreementUndwrtRulesAttr> attrList = agreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
+        List<PtlAgreementUndwrtRulesAttr> attrList = agreementUndwrtRulesAttrService.getUndwrtRulesAttrList(companyId);
         Map<String, PtlAgreementUndwrtRulesAttr> attrMap = attrList.stream()
                 .collect(Collectors.toMap(PtlAgreementUndwrtRulesAttr::getAttrCode, attr -> attr));
         List<PtlAgreementUndwrtRulesAttr> newAttrList = new ArrayList<>();
@@ -431,6 +431,10 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
                     if(action1 != null){
                         //将调度字段设为1
                         company.setIsDispatch(1);
+                        // 如果等于置顶协议 则 设置调用协议id
+                        if(action1.getActionCode().equals("specify_agreement")){
+                            company.setDispatchAgreementId(action1.getActionJson().getString("agreementId"));
+                        }
                         company.setDispatchId(ptlAgreementDispatchVo.getDispatchId());
                     }
                 }