Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

Qchen 1 месяц назад
Родитель
Сommit
9d551607bf
37 измененных файлов с 479 добавлено и 317 удалено
  1. 2 2
      commons/src/main/java/com/jzg/commons/entity/dto/FeeAuditParam.java
  2. 0 3
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersPolicy.java
  3. 4 0
      commons/src/main/java/com/jzg/commons/entity/orders/vo/FeeAuditVo.java
  4. 218 207
      commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteEchoVo.java
  5. 6 1
      commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteResultsVo.java
  6. 10 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsFeeCalculateRequest.java
  7. 4 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersAdd.java
  8. 5 1
      commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersEnd.java
  9. 4 0
      commons/src/main/java/com/jzg/commons/entity/scheme/vo/SchemeRuleFilterVo.java
  10. 57 0
      commons/src/main/java/com/jzg/commons/entity/vo/InsFeeOrdersVo.java
  11. 1 1
      commons/src/main/java/com/jzg/commons/entity/vo/RuleAttrMappingVo.java
  12. 2 5
      consoleStatistics/src/main/java/com/jzg/console/service/impl/ReportFeeAuditSummaryServiceImpl.java
  13. 3 0
      tenant/costsorrule/src/main/java/com/jzg/costsorrule/controller/RuleController.java
  14. 6 1
      tenant/costsorrule/src/main/java/com/jzg/costsorrule/service/impl/RuleServiceImpl.java
  15. 7 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/client/OrgClient.java
  16. 5 4
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/component/HengBangCrawlerRequestComponent.java
  17. 3 0
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/service/Impl/HengBangCrawlerRequestImpl.java
  18. 7 7
      tenant/insurance/quotation-huanong/src/main/java/com/jzg/quotation/huanong/crawler/constant/enums/JiaYiXianProduct.java
  19. 0 1
      tenant/insurance/quotation-huanong/src/main/java/com/jzg/quotation/huanong/crawler/entity/request/HuaNongCrawlerQuotedPriceRequestRequest.java
  20. 7 5
      tenant/insurance/quotation-renbaonew/src/main/java/com/jzg/quotation/renbaonew/crawler/service/impl/RenBaoNewCrawlerRequestImpl.java
  21. 0 9
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/FactorMatch.java
  22. 2 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/OrderOperationLogAspect.java
  23. 4 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/aspect/QuoteVerificationAspect.java
  24. 1 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java
  25. 1 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersMapper.java
  26. 2 2
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersService.java
  27. 2 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeAuditServiceImpl.java
  28. 46 45
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
  29. 3 3
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsFeeAuditMapper.xml
  30. 11 6
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml
  31. 6 0
      tenant/organization/src/main/java/com/jzg/organization/controller/PtlAreaLicenseController.java
  32. 3 3
      tenant/organization/src/main/java/com/jzg/organization/controller/SchemeController.java
  33. 1 1
      tenant/organization/src/main/java/com/jzg/organization/mapper/ReceivableMapper.java
  34. 2 3
      tenant/organization/src/main/java/com/jzg/organization/service/PtlSchemeService.java
  35. 42 1
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlSchemeServiceImpl.java
  36. 1 1
      tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java
  37. 1 1
      tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

+ 2 - 2
commons/src/main/java/com/jzg/commons/entity/dto/FeeAuditParam.java

@@ -102,11 +102,11 @@ public class FeeAuditParam extends PageRequest {
 
     @Schema(description = "审核时间开始")
     @JsonFormat(pattern = "yyyy-MM-dd")
-    private LocalDateTime auditTimeStart;
+    private LocalDate auditTimeBegin;
 
     @Schema(description = "审核时间结束")
     @JsonFormat(pattern = "yyyy-MM-dd")
-    private LocalDateTime auditTimeEnd;
+    private LocalDate auditTimeEnd;
 
     @Schema(description = "审核人")
     private String auditUser;

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

@@ -4,9 +4,6 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.jzg.commons.core.base.BaseModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
-import org.springframework.data.annotation.Id;
-
-import java.io.Serializable;
 
 @Data
 @Schema(description = "保险订单保单信息")

+ 4 - 0
commons/src/main/java/com/jzg/commons/entity/orders/vo/FeeAuditVo.java

@@ -128,6 +128,10 @@ public class FeeAuditVo extends BaseModel {
     @Schema(description = "审核人")
     private String auditUser;
 
+    @ExcelProperty("审核人名称")
+    @Schema(description = "审核人名称")
+    private String auditUserName;
+
     @ExcelProperty("驳回原因")
     @Schema(description = "驳回原因")
     private String refuse;

+ 218 - 207
commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteEchoVo.java

@@ -21,6 +21,7 @@ import com.jzg.commons.entity.quote.vo.orders.InsOrdersVo;
 import com.jzg.commons.entity.rights.vo.InsOrderRightsInfoVo;
 import com.jzg.commons.entity.scheme.vo.PtlAgreementInsCompanyVo;
 import com.jzg.commons.entity.vo.InsFeeOrdersVo;
+import com.jzg.commons.entity.vo.InsOrdersOtherInfoVo;
 import com.jzg.commons.entity.vo.PtlAgreementCostRatioVo;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
@@ -51,71 +52,179 @@ public class QuoteEchoVo extends QuoteVo {
     private static final long serialVersionUID = 1928126868229420046L;
 
     /**
-     * OrderBase追加属性
+     * 订单数据库查询数据转 QuoteVo对象
+     * @param insOrdersVo
      */
-    @Data
-    private static class OrderBaseVo extends OrderBase{
-        @Serial
-        private static final long serialVersionUID = -9184896455541993138L;
+    public QuoteEchoVo(InsOrdersVo insOrdersVo){
+        if(Objects.isNull(this.getOrder())){
+            this.setOrder(new OrderBaseVo());
+        }
+        this.setOrdersNo(insOrdersVo.getId());
+        this.getOrder().setAgreementId(insOrdersVo.getInsOrders().getAgreementId());
+        this.getOrder().setAgreementName(insOrdersVo.getAgreementName());
+        this.getOrder().setAgreementOwnership(insOrdersVo.getAgreementOwnership());
+        this.getOrder().setAgreementType(insOrdersVo.getAgreementType());
+        this.getOrder().setOrdersNo(insOrdersVo.getId());
+        this.getOrder().setQuoteNo(insOrdersVo.getQuoteNo());
+        this.getOrder().setInsuranceCompanyCode(insOrdersVo.getCompanyId());
+        this.getOrder().setCompanyName(insOrdersVo.getCompanyName());
+        this.getOrder().setProductId(insOrdersVo.getProductId());
+        this.getOrder().setProductsName(insOrdersVo.getProductName());
+        this.getOrder().setOrderStatus(insOrdersVo.getInsOrders().getOrderStatus());
+        this.getOrder().setCreateBy(insOrdersVo.getCreateBy());
+        this.getOrder().setCreateTime(insOrdersVo.getCreateTime());
+        this.getOrder().setQuoteTime(insOrdersVo.getCreateTime());
+        this.getOrder().setSigningTime(insOrdersVo.getSigningTime());
+        this.getOrder().setPayTime(insOrdersVo.getPayTime());
+        this.getOrder().setOrderType(insOrdersVo.getOrderType());
+        this.getOrder().setEntryStatus(insOrdersVo.getEntryStatus());
+        this.getOrder().setDockingPerson (insOrdersVo.getDockingPerson());
+        this.getOrder().setDockingPersonPhone(insOrdersVo.getDockingPersonPhone());
+        if (Objects.nonNull(insOrdersVo.getSpecialInfoVo())) {
+            this.setCiSpecialInfoVo(insOrdersVo.getSpecialInfoVo().stream().filter(companyClauseVo -> companyClauseVo.getRiskCode().equals("0507")).collect(Collectors.toList()));
+            this.setBiSpecialInfoVo(insOrdersVo.getSpecialInfoVo().stream().filter(companyClauseVo -> companyClauseVo.getRiskCode().equals("0510")).collect(Collectors.toList()));
+        }
+        Salesman salesman = new Salesman();
+        if (!Objects.isNull(insOrdersVo.getSalesmanInfo())){
+            salesman.setName(insOrdersVo.getSalesmanInfo().getName());
+            salesman.setDeptName(insOrdersVo.getSalesmanInfo().getDeptName());
+            salesman.setTypeAttr(insOrdersVo.getSalesmanInfo().getTypeAttr());
+            salesman.setDeptId(insOrdersVo.getSalesmanInfo().getDeptId());
+            salesman.setMobile(insOrdersVo.getSalesmanInfo().getMobile());
+            salesman.setSystemCode(insOrdersVo.getSalesmanInfo().getSystemCode());
+            salesman.setSystemName(insOrdersVo.getSalesmanInfo().getSystemName());
+            salesman.setSystemShortName(insOrdersVo.getSalesmanInfo().getSystemShortName());
+            salesman.setRealQuoteUserManagerId(insOrdersVo.getSalesmanInfo().getRealQuoteUserManagerId());
+            salesman.setRealQuoteUserManagerUseName(insOrdersVo.getSalesmanInfo().getRealQuoteUserManagerUseName());
+        }
+        this.setSalesmanInfo(salesman);
+        this.setErrorMessage(insOrdersVo.getErrorMessage());
 
-        private Integer entryStatus;
+        //车辆信息处理
+        this.setCarInfoVo(insOrdersVo.getCarInfoVo());
+        if (Objects.nonNull(insOrdersVo.getCarInfoVo())) {
+            if (Objects.nonNull(insOrdersVo.getCarInfoVo().getRegisterDate()) && insOrdersVo.getCarInfoVo().getRegisterDate().contains(" ")) {
+                insOrdersVo.getCarInfoVo().setRegisterDate(insOrdersVo.getCarInfoVo().getRegisterDate().substring(0, insOrdersVo.getCarInfoVo().getRegisterDate().indexOf(" ")));
+            }
+            if (Objects.nonNull(insOrdersVo.getCarInfoVo().getIssueDate()) && insOrdersVo.getCarInfoVo().getIssueDate().contains(" ")) {
+                insOrdersVo.getCarInfoVo().setIssueDate(insOrdersVo.getCarInfoVo().getIssueDate().substring(0, insOrdersVo.getCarInfoVo().getIssueDate().indexOf(" ")));
+            }
+            if (Objects.nonNull(insOrdersVo.getCarInfoVo().getTransferDate()) && insOrdersVo.getCarInfoVo().getTransferDate().contains(" ")) {
+                insOrdersVo.getCarInfoVo().setTransferDate(insOrdersVo.getCarInfoVo().getTransferDate().substring(0, insOrdersVo.getCarInfoVo().getTransferDate().indexOf(" ")));
+            }
+        }
 
-        private String orderStatus;
-        private String companyName;
-        private String productsName;
+        // 批改信息处理
+        if(Objects.nonNull(insOrdersVo.getInsOrderAdjust())) {
+            InsOrderAdjustVo insOrderAdjustVo = new InsOrderAdjustVo();
+            BeanUtils.copyProperties(insOrdersVo.getInsOrderAdjust(), insOrderAdjustVo);
+            insOrderAdjustVo.setAdjustInfoList(insOrdersVo.getInsOrderAdjust().getAdjustInfoList());
+            this.insOrderAdjustVo = insOrderAdjustVo;
+        }
 
-        private String dockingPerson;
-        private String dockingPersonPhone;
+        //人员处理
+        this.setOwnersInfo(insOrdersVo.getOwnersInfo());
+        this.setPolicyHolderInfo(insOrdersVo.getPolicyHolderInfo());
+        this.setInsuredPersonInfo(insOrdersVo.getInsuredPersonInfo());
 
-        /**
-         * 方案ID
-         */
-        private String schemeId;
+        //险种处理
+        insOrdersVo.getInsOrdersRiskList().forEach(item->{
+            if(item.getRiskCode().equals(RiskCode.TRAFFIC.getCode())){
+                RiskInfoVo riskInfoVo = new RiskInfoVo();
+                riskInfoVo.setRiskCode(RiskCode.TRAFFIC.getCode());
+                // modify by lipf, 提高代码的健壮性 2026年6月2日18:57:09
+                riskInfoVo.setStartDate(item.getStartDate() != null ? item.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")): "");
+                riskInfoVo.setEndDate(item.getEndDate() != null ?  item.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")):"");
+                riskInfoVo.setInstantFlag(item.getStartDate() != null && (item.getStartDate().getHour() != 0 || item.getStartDate().getMinute() != 0 || item.getStartDate().getSecond() != 0));
+                this.setCiRiskInfoVo(riskInfoVo);
+            }
+            if(item.getRiskCode().equals(RiskCode.BUSINESS.getCode())){
+                RiskInfoVo riskInfoVo = new RiskInfoVo();
+                riskInfoVo.setRiskCode(RiskCode.BUSINESS.getCode());
+                riskInfoVo.setStartDate(item.getStartDate() !=null ? item.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")):"");
+                riskInfoVo.setEndDate(item.getEndDate() != null ? item.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")):"");
+                riskInfoVo.setInstantFlag(item.getStartDate() != null && (item.getStartDate().getHour() != 0 || item.getStartDate().getMinute() != 0 || item.getStartDate().getSecond() != 0));
+                this.setBiRiskInfoVo(riskInfoVo);
+            }
+        });
+        // 添加交强险种信息
+        if(ProductsType.isContainDj(insOrdersVo.getProductId())){
+            KindInfoVo jqKindInfoVo = new KindInfoVo();
+            jqKindInfoVo.setKindCode("J1");
+            jqKindInfoVo.setKindName("机动车交通事故责任强制保险");
+            if(Objects.nonNull(insOrdersVo.getInsOrdersCosts().getJqPremium())) {
+                jqKindInfoVo.setPremium(insOrdersVo.getInsOrdersCosts().getJqPremium().toString());
+            }
+            jqKindInfoVo.setAmount("200000");
+            jqKindInfoVo.setServiceTimes("200000");
+            jqKindInfoVo.setUnitAmount("200000");
+            insOrdersVo.getKindInfoVo().add(0,jqKindInfoVo);
+        }
+        // 移除交强
+//        insOrdersVo.getKindInfoVo().removeIf(item -> "J1".equals(item.getKindCode()));
 
-        /**
-         * 协议id
-         */
-        private String agreementId;
-        private String agreementName;
-        private String agreementType;
+        this.setKindInfoVo(insOrdersVo.getKindInfoVo());
+        this.setAccidentalDrivings(insOrdersVo.getAccidentalDrivings());
+        this.setVehicleAndVesselTaxVo(insOrdersVo.getVehicleAndVesselTaxVo());
 
-        /**
-         * 协议归属
-         */
-        private String agreementOwnership;
+        //费用处理
+        this.costs = new OrdersCostsVo();
+        if(insOrdersVo.getInsOrdersCosts() != null){
+            this.costs.setCiPremium(insOrdersVo.getInsOrdersCosts().getJqPremium());
+            this.costs.setBiPremium(insOrdersVo.getInsOrdersCosts().getSyPremium());
+            this.costs.setNiPremium(insOrdersVo.getInsOrdersCosts().getJyPremium());
+            this.costs.setVvTax(insOrdersVo.getInsOrdersCosts().getTaxPremium());
+            this.costs.setSumPremium(insOrdersVo.getInsOrdersCosts().getSumPremium());
+            this.costs.setCiRatio(insOrdersVo.getInsOrdersCosts().getJqRatio());
+            this.costs.setBiRatio(insOrdersVo.getInsOrdersCosts().getSyRatio());
+            this.costs.setTotalAmount(insOrdersVo.getInsOrdersCosts().getTotalAmount());
+        }
 
-        private String createBy;
+        //保单号信息
+        this.policy = new OrdersPolicyVo();
+        if(insOrdersVo.getInsOrdersPolicy() != null){
+            this.policy.setCiApplyNumber(insOrdersVo.getInsOrdersPolicy().getJqApplyNo());
+            this.policy.setCiPolicyNumber(insOrdersVo.getInsOrdersPolicy().getJqPolicyNo());
+            this.policy.setBiApplyNumber(insOrdersVo.getInsOrdersPolicy().getSyApplyNo());
+            this.policy.setBiPolicyNumber(insOrdersVo.getInsOrdersPolicy().getSyPolicyNo());
+            this.policy.setNiApplyNumber(insOrdersVo.getInsOrdersPolicy().getJyApplyNo());
+            this.policy.setNiPolicyNumber(insOrdersVo.getInsOrdersPolicy().getJyPolicyNo());
+        }
+        if(insOrdersVo.getInsOrdersPdfUrl() != null){
+            this.policy.setCiPolicyUrl(insOrdersVo.getInsOrdersPdfUrl().getJqUrl());
+            this.policy.setBiPolicyUrl(insOrdersVo.getInsOrdersPdfUrl().getSyUrl());
+            this.policy.setNiPolicyUrl(insOrdersVo.getInsOrdersPdfUrl().getJyUrl());
+            this.policy.setCiPolicySignUrl(insOrdersVo.getInsOrdersPdfUrl().getJqSignUrl());
+        }
 
-        /**
-         * 这个方法不能删除, 在前端有用agreementName字段
-         */
-        public String getAgreementTypeName(){
-            if(StrUtil.isEmpty(this.agreementType)){
-                return StrUtil.EMPTY;
-            }
-            // 1、平台协议-平台结算 2、私有协议-自行结算 3、网销协议-自行结算
-            if("1".equals(this.agreementType)){
-                return "平台协议";
-            }else if("2".equals(this.agreementType)){
-                return "私有协议";
-            }else if("3".equals(this.agreementType)) {
-                return  "网销协议";
-            }else{
-                return this.agreementType;
-            }
+        //评分信息
+        this.scoreVo = new QuoteResultsVo.ScoreVo();
+        if (Objects.nonNull(insOrdersVo.getInsOrdersOtherInfo())) {
+            InsOrdersOtherInfoVo otherInfo = insOrdersVo.getInsOrdersOtherInfo();
+            this.scoreVo.setScore(otherInfo.getScore() == null ? null : otherInfo.getScore());
+            this.scoreVo.setLossRation(otherInfo.getLossRation() == null ? null : otherInfo.getLossRation().toString());
+            this.scoreVo.setJqLossRation(otherInfo.getJqLossRation() == null ? null : otherInfo.getJqLossRation().toString());
+            this.scoreVo.setSyLossRation(otherInfo.getSyLossRation() == null ? null : otherInfo.getSyLossRation().toString());
+            this.scoreVo.setCiClaims(Byte.toString(otherInfo.getJqClaims()));
+            this.scoreVo.setBiClaims(Byte.toString(otherInfo.getSyClaims()));
+            this.scoreVo.setJqRenewal(otherInfo.getJqRenewal());
+            this.scoreVo.setSyRenewal(otherInfo.getSyRenewal());
+            this.scoreVo.setIsDjq(Byte.toString(otherInfo.getIsDjq()));
+            this.scoreVo.setTotalAdjustRate(otherInfo.getTotalAdjustRate() == null ? null : otherInfo.getTotalAdjustRate().toString());
+            this.scoreVo.setJqAdjustRate(otherInfo.getJqAdjustRate() == null ? null : otherInfo.getJqAdjustRate().toString());
+            this.scoreVo.setSyAdjustRate(otherInfo.getSyAdjustRate() == null ? null : otherInfo.getSyAdjustRate().toString());
+            this.scoreVo.setScoreJson(otherInfo.getScoreJson());
         }
 
-        /**
-         * 保司id
-         */
-        private String insuranceCompanyCode;
-        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-        private LocalDateTime createTime;
-        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-        private LocalDateTime quoteTime;
-        private String signingTime;
-        private String payTime;
-        private String orderType;
+        // 未匹配费用原因
+        if(Objects.nonNull(insOrdersVo.getInsOrdersOtherInfo())) {
+            this.setFeeNoDescription(insOrdersVo.getInsOrdersOtherInfo().getFeeNoDescription());
+        }
+
+        //驾意险存储
+        List<AccidentalDrivingVo> accidentalDrivings = insOrdersVo.getAccidentalDrivings();
+
+        this.setAccidentalDrivings(accidentalDrivings);
     }
 
     private OrderBaseVo order;
@@ -353,170 +462,72 @@ public class QuoteEchoVo extends QuoteVo {
     }
 
     /**
-     * 订单数据库查询数据转 QuoteVo对象
-     * @param insOrdersVo
+     * OrderBase追加属性
      */
-    public QuoteEchoVo(InsOrdersVo insOrdersVo){
-        if(Objects.isNull(this.getOrder())){
-            this.setOrder(new OrderBaseVo());
-        }
-        this.setOrdersNo(insOrdersVo.getId());
-        this.getOrder().setAgreementId(insOrdersVo.getInsOrders().getAgreementId());
-        this.getOrder().setAgreementName(insOrdersVo.getAgreementName());
-        this.getOrder().setAgreementOwnership(insOrdersVo.getAgreementOwnership());
-        this.getOrder().setAgreementType(insOrdersVo.getAgreementType());
-        this.getOrder().setOrdersNo(insOrdersVo.getId());
-        this.getOrder().setQuoteNo(insOrdersVo.getQuoteNo());
-        this.getOrder().setInsuranceCompanyCode(insOrdersVo.getCompanyId());
-        this.getOrder().setCompanyName(insOrdersVo.getCompanyName());
-        this.getOrder().setProductId(insOrdersVo.getProductId());
-        this.getOrder().setProductsName(insOrdersVo.getProductName());
-        this.getOrder().setOrderStatus(insOrdersVo.getInsOrders().getOrderStatus());
-        this.getOrder().setCreateBy(insOrdersVo.getCreateBy());
-        this.getOrder().setCreateTime(insOrdersVo.getCreateTime());
-        this.getOrder().setQuoteTime(insOrdersVo.getCreateTime());
-        this.getOrder().setSigningTime(insOrdersVo.getPayTime());
-        this.getOrder().setOrderType(insOrdersVo.getOrderType());
-        this.getOrder().setEntryStatus(insOrdersVo.getEntryStatus());
-        this.getOrder().setDockingPerson (insOrdersVo.getDockingPerson());
-        this.getOrder().setDockingPersonPhone(insOrdersVo.getDockingPersonPhone());
-        if (Objects.nonNull(insOrdersVo.getSpecialInfoVo())) {
-            this.setCiSpecialInfoVo(insOrdersVo.getSpecialInfoVo().stream().filter(companyClauseVo -> companyClauseVo.getRiskCode().equals("0507")).collect(Collectors.toList()));
-            this.setBiSpecialInfoVo(insOrdersVo.getSpecialInfoVo().stream().filter(companyClauseVo -> companyClauseVo.getRiskCode().equals("0510")).collect(Collectors.toList()));
-        }
-        Salesman salesman = new Salesman();
-        if (!Objects.isNull(insOrdersVo.getSalesmanInfo())){
-            salesman.setName(insOrdersVo.getSalesmanInfo().getName());
-            salesman.setDeptName(insOrdersVo.getSalesmanInfo().getDeptName());
-            salesman.setTypeAttr(insOrdersVo.getSalesmanInfo().getTypeAttr());
-            salesman.setDeptId(insOrdersVo.getSalesmanInfo().getDeptId());
-            salesman.setMobile(insOrdersVo.getSalesmanInfo().getMobile());
-            salesman.setSystemCode(insOrdersVo.getSalesmanInfo().getSystemCode());
-            salesman.setSystemName(insOrdersVo.getSalesmanInfo().getSystemName());
-            salesman.setSystemShortName(insOrdersVo.getSalesmanInfo().getSystemShortName());
-            salesman.setRealQuoteUserManagerId(insOrdersVo.getSalesmanInfo().getRealQuoteUserManagerId());
-            salesman.setRealQuoteUserManagerUseName(insOrdersVo.getSalesmanInfo().getRealQuoteUserManagerUseName());
-        }
-        this.setSalesmanInfo(salesman);
-        this.setErrorMessage(insOrdersVo.getErrorMessage());
-
-        //车辆信息处理
-        this.setCarInfoVo(insOrdersVo.getCarInfoVo());
-        if (Objects.nonNull(insOrdersVo.getCarInfoVo())) {
-            if (Objects.nonNull(insOrdersVo.getCarInfoVo().getRegisterDate()) && insOrdersVo.getCarInfoVo().getRegisterDate().contains(" ")) {
-                insOrdersVo.getCarInfoVo().setRegisterDate(insOrdersVo.getCarInfoVo().getRegisterDate().substring(0, insOrdersVo.getCarInfoVo().getRegisterDate().indexOf(" ")));
-            }
-            if (Objects.nonNull(insOrdersVo.getCarInfoVo().getIssueDate()) && insOrdersVo.getCarInfoVo().getIssueDate().contains(" ")) {
-                insOrdersVo.getCarInfoVo().setIssueDate(insOrdersVo.getCarInfoVo().getIssueDate().substring(0, insOrdersVo.getCarInfoVo().getIssueDate().indexOf(" ")));
-            }
-            if (Objects.nonNull(insOrdersVo.getCarInfoVo().getTransferDate()) && insOrdersVo.getCarInfoVo().getTransferDate().contains(" ")) {
-                insOrdersVo.getCarInfoVo().setTransferDate(insOrdersVo.getCarInfoVo().getTransferDate().substring(0, insOrdersVo.getCarInfoVo().getTransferDate().indexOf(" ")));
-            }
-        }
+    @Data
+    private static class OrderBaseVo extends OrderBase{
+        @Serial
+        private static final long serialVersionUID = -9184896455541993138L;
 
-        // 批改信息处理
-        if(Objects.nonNull(insOrdersVo.getInsOrderAdjust())) {
-            InsOrderAdjustVo insOrderAdjustVo = new InsOrderAdjustVo();
-            BeanUtils.copyProperties(insOrdersVo.getInsOrderAdjust(), insOrderAdjustVo);
-            insOrderAdjustVo.setAdjustInfoList(insOrdersVo.getInsOrderAdjust().getAdjustInfoList());
-            this.insOrderAdjustVo = insOrderAdjustVo;
-        }
+        private Integer entryStatus;
 
-        //人员处理
-        this.setOwnersInfo(insOrdersVo.getOwnersInfo());
-        this.setPolicyHolderInfo(insOrdersVo.getPolicyHolderInfo());
-        this.setInsuredPersonInfo(insOrdersVo.getInsuredPersonInfo());
+        private String orderStatus;
+        private String companyName;
+        private String productsName;
 
-        //险种处理
-        insOrdersVo.getInsOrdersRiskList().forEach(item->{
-            if(item.getRiskCode().equals(RiskCode.TRAFFIC.getCode())){
-                RiskInfoVo riskInfoVo = new RiskInfoVo();
-                riskInfoVo.setRiskCode(RiskCode.TRAFFIC.getCode());
-                // modify by lipf, 提高代码的健壮性 2026年6月2日18:57:09
-                riskInfoVo.setStartDate(item.getStartDate() != null ? item.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")): "");
-                riskInfoVo.setEndDate(item.getEndDate() != null ?  item.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")):"");
-                riskInfoVo.setInstantFlag(item.getStartDate() != null ? item.getStartDate().getHour() != 0 || item.getStartDate().getMinute() != 0 || item.getStartDate().getSecond() != 0: false);
-                this.setCiRiskInfoVo(riskInfoVo);
-            }
-            if(item.getRiskCode().equals(RiskCode.BUSINESS.getCode())){
-                RiskInfoVo riskInfoVo = new RiskInfoVo();
-                riskInfoVo.setRiskCode(RiskCode.BUSINESS.getCode());
-                riskInfoVo.setStartDate(item.getStartDate() !=null ? item.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")):"");
-                riskInfoVo.setEndDate(item.getEndDate() != null ? item.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")):"");
-                riskInfoVo.setInstantFlag(item.getStartDate() != null && (item.getStartDate().getHour() != 0 || item.getStartDate().getMinute() != 0 || item.getStartDate().getSecond() != 0));
-                this.setBiRiskInfoVo(riskInfoVo);
-            }
-        });
-        // 添加交强险种信息
-        if(ProductsType.isContainDj(insOrdersVo.getProductId())){
-            KindInfoVo jqKindInfoVo = new KindInfoVo();
-            jqKindInfoVo.setKindCode("J1");
-            jqKindInfoVo.setKindName("机动车交通事故责任强制保险");
-            if(Objects.nonNull(insOrdersVo.getInsOrdersCosts().getJqPremium())) {
-                jqKindInfoVo.setPremium(insOrdersVo.getInsOrdersCosts().getJqPremium().toString());
-            }
-            jqKindInfoVo.setAmount("200000");
-            jqKindInfoVo.setServiceTimes("200000");
-            jqKindInfoVo.setUnitAmount("200000");
-            insOrdersVo.getKindInfoVo().add(0,jqKindInfoVo);
-        }
-        // 移除交强
-//        insOrdersVo.getKindInfoVo().removeIf(item -> "J1".equals(item.getKindCode()));
+        private String dockingPerson;
+        private String dockingPersonPhone;
 
-        this.setKindInfoVo(insOrdersVo.getKindInfoVo());
-        this.setAccidentalDrivings(insOrdersVo.getAccidentalDrivings());
-        this.setVehicleAndVesselTaxVo(insOrdersVo.getVehicleAndVesselTaxVo());
+        /**
+         * 方案ID
+         */
+        private String schemeId;
 
-        //费用处理
-        this.costs = new OrdersCostsVo();
-        if(insOrdersVo.getInsOrdersCosts() != null){
-            this.costs.setCiPremium(insOrdersVo.getInsOrdersCosts().getJqPremium());
-            this.costs.setBiPremium(insOrdersVo.getInsOrdersCosts().getSyPremium());
-            this.costs.setNiPremium(insOrdersVo.getInsOrdersCosts().getJyPremium());
-            this.costs.setVvTax(insOrdersVo.getInsOrdersCosts().getTaxPremium());
-            this.costs.setSumPremium(insOrdersVo.getInsOrdersCosts().getSumPremium());
-            this.costs.setCiRatio(insOrdersVo.getInsOrdersCosts().getJqRatio());
-            this.costs.setBiRatio(insOrdersVo.getInsOrdersCosts().getSyRatio());
-            this.costs.setTotalAmount(insOrdersVo.getInsOrdersCosts().getTotalAmount());
-        }
+        /**
+         * 协议id
+         */
+        private String agreementId;
+        private String agreementName;
+        private String agreementType;
 
-        //保单号信息
-        this.policy = new OrdersPolicyVo();
-        if(insOrdersVo.getInsOrdersPolicy() != null){
-            this.policy.setCiApplyNumber(insOrdersVo.getInsOrdersPolicy().getJqApplyNo());
-            this.policy.setCiPolicyNumber(insOrdersVo.getInsOrdersPolicy().getJqPolicyNo());
-            this.policy.setBiApplyNumber(insOrdersVo.getInsOrdersPolicy().getSyApplyNo());
-            this.policy.setBiPolicyNumber(insOrdersVo.getInsOrdersPolicy().getSyPolicyNo());
-            this.policy.setNiApplyNumber(insOrdersVo.getInsOrdersPolicy().getJyApplyNo());
-            this.policy.setNiPolicyNumber(insOrdersVo.getInsOrdersPolicy().getJyPolicyNo());
-        }
-        if(insOrdersVo.getInsOrdersPdfUrl() != null){
-            this.policy.setCiPolicyUrl(insOrdersVo.getInsOrdersPdfUrl().getJqUrl());
-            this.policy.setBiPolicyUrl(insOrdersVo.getInsOrdersPdfUrl().getSyUrl());
-            this.policy.setNiPolicyUrl(insOrdersVo.getInsOrdersPdfUrl().getJyUrl());
-            this.policy.setCiPolicySignUrl(insOrdersVo.getInsOrdersPdfUrl().getJqSignUrl());
-        }
+        /**
+         * 协议归属
+         */
+        private String agreementOwnership;
 
-        //评分信息
-        this.scoreVo = new QuoteResultsVo.ScoreVo();
-//        this.scoreVo.setScore(insOrdersVo.getInsOrdersOtherInfo().getScore());
-//        this.scoreVo.setJqScore(insOrdersVo.getInsOrdersOtherInfo().getJqScore());
-//        this.scoreVo.setSyScore(insOrdersVo.getInsOrdersOtherInfo().getSyScore());
-//        this.scoreVo.setTpColorScore(Objects.isNull(insOrdersVo.getInsOrdersOtherInfo().getTpColorScore()) ? null : insOrdersVo.getInsOrdersOtherInfo().getTpColorScore().toString());
-        this.scoreVo.setLossRation(Objects.isNull(insOrdersVo.getInsOrdersOtherInfo().getLossRation()) ? null : insOrdersVo.getInsOrdersOtherInfo().getLossRation().toString());
-        this.scoreVo.setJqLossRation(Objects.isNull(insOrdersVo.getInsOrdersOtherInfo().getJqLossRation()) ? null : insOrdersVo.getInsOrdersOtherInfo().getJqLossRation().toString());
-        this.scoreVo.setSyLossRation(Objects.isNull(insOrdersVo.getInsOrdersOtherInfo().getSyLossRation()) ? null : insOrdersVo.getInsOrdersOtherInfo().getSyLossRation().toString());
-        this.scoreVo.setScoreJson(insOrdersVo.getInsOrdersOtherInfo().getScoreJson());
+        private String createBy;
 
-        // 未匹配费用原因
-        if(Objects.nonNull(insOrdersVo.getInsOrdersOtherInfo())) {
-            this.setFeeNoDescription(insOrdersVo.getInsOrdersOtherInfo().getFeeNoDescription());
+        /**
+         * 这个方法不能删除, 在前端有用agreementName字段
+         */
+        public String getAgreementTypeName(){
+            if(StrUtil.isEmpty(this.agreementType)){
+                return StrUtil.EMPTY;
+            }
+            // 1、平台协议-平台结算 2、私有协议-自行结算 3、网销协议-自行结算
+            if("1".equals(this.agreementType)){
+                return "平台协议";
+            }else if("2".equals(this.agreementType)){
+                return "私有协议";
+            }else if("3".equals(this.agreementType)) {
+                return  "网销协议";
+            }else{
+                return this.agreementType;
+            }
         }
 
-        //驾意险存储
-        List<AccidentalDrivingVo> accidentalDrivings = insOrdersVo.getAccidentalDrivings();
-
-        this.setAccidentalDrivings(accidentalDrivings);
+        /**
+         * 保司id
+         */
+        private String insuranceCompanyCode;
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+        private LocalDateTime createTime;
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+        private LocalDateTime quoteTime;
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+        private LocalDateTime signingTime;
+        private String payTime;
+        private String orderType;
     }
 
 

+ 6 - 1
commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteResultsVo.java

@@ -168,6 +168,11 @@ public class QuoteResultsVo implements Serializable {
     @AllArgsConstructor
     @NoArgsConstructor
     public static class ScoreVo {
+
+        /**
+         * 总评分
+         */
+        private String score;
         /**
          * 总赔付率
          */
@@ -231,7 +236,7 @@ public class QuoteResultsVo implements Serializable {
     @Data
     @AllArgsConstructor
     @NoArgsConstructor
-    public static class CostsVo{
+    public static class CostsVo {
         /**
          * 交强险保费
          */

+ 10 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsFeeCalculateRequest.java

@@ -61,6 +61,16 @@ public class InsFeeCalculateRequest {
     @Schema(description = "驾意险出口比例(百分比)", example = "0")
     private BigDecimal jyExport;
 
+    // ── 留点比例(百分比)──
+    @Schema(description = "交强险留点比例(百分比)", example = "0")
+    private BigDecimal jqKeepPointRatio;
+
+    @Schema(description = "商业险留点比例(百分比)", example = "0")
+    private BigDecimal syKeepPointRatio;
+
+    @Schema(description = "驾意险留点比例(百分比)", example = "0")
+    private BigDecimal jyKeepPointRatio;
+
     // ── 出口留点比例(百分比)──
     @Schema(description = "交强险出口留点比例(百分比)", example = "0")
     private BigDecimal jqExportKeepPointRatio;

+ 4 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersAdd.java

@@ -8,6 +8,7 @@ import com.jzg.commons.entity.orders.po.InsOrdersExternalPolicy;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.vo.InsFeeOrdersVo;
 import com.jzg.commons.entity.vo.InsOrdersOtherInfoVo;
+import com.jzg.commons.entity.vo.PtlAgreementCostRatioVo;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -28,6 +29,9 @@ public class InsOrdersAdd extends QuoteVo {
     @Schema(description = "订单其他信息")
     private InsOrdersOtherInfoVo insOrdersOtherInfo;
 
+    @Schema(description = "费用比例信息")
+    private PtlAgreementCostRatioVo costRatio;
+
     @Schema(description = "费用信息")
     private InsOrdersExternalFee externalFee;
 

+ 5 - 1
commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersEnd.java

@@ -4,9 +4,10 @@ import com.jzg.commons.entity.dto.InsTaskImagesAdd;
 import com.jzg.commons.entity.orders.po.InsOrders;
 import com.jzg.commons.entity.orders.po.InsOrdersExternalFee;
 import com.jzg.commons.entity.orders.po.InsOrdersExternalPolicy;
+import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.vo.InsFeeOrdersVo;
 import com.jzg.commons.entity.vo.InsOrdersOtherInfoVo;
-import com.jzg.commons.entity.quote.vo.QuoteVo;
+import com.jzg.commons.entity.vo.PtlAgreementCostRatioVo;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -29,6 +30,9 @@ public class InsOrdersEnd extends QuoteVo {
     @Schema(description = "订单影像资料")
     private InsTaskImagesAdd imagesAdds;
 
+    @Schema(description = "费用比例信息")
+    private PtlAgreementCostRatioVo costRatio;
+
     @Schema(description = "订单费用")
     private InsFeeOrdersVo feeOrdersVo;
 

+ 4 - 0
commons/src/main/java/com/jzg/commons/entity/scheme/vo/SchemeRuleFilterVo.java

@@ -14,6 +14,10 @@ public class SchemeRuleFilterVo {
     @Schema(description = "产品id")
     private String productId;
 
+    // 获取方案需要添加保险公司id
+    @Schema(description = "保险公司")
+    private String companyId;
+
     @Valid
     @Schema(description =  "车辆信息")
     private CarInfoVo carInfo;

+ 57 - 0
commons/src/main/java/com/jzg/commons/entity/vo/InsFeeOrdersVo.java

@@ -111,6 +111,24 @@ public class InsFeeOrdersVo {
     @Schema(description = "驾意出口比例")
     private BigDecimal jyExportRatio;
 
+    @Schema(description = "交强险手续费比例")
+    private BigDecimal jqCommissionRatio;
+
+    @Schema(description = "商业险手续费比例")
+    private BigDecimal syCommissionRatio;
+
+    @Schema(description = "驾意险手续费比例")
+    private BigDecimal jyCommissionRatio;
+
+    @Schema(description = "交强险跟单费比例")
+    private BigDecimal jqFollowRatio;
+
+    @Schema(description = "商业险跟单费比例")
+    private BigDecimal syFollowRatio;
+
+    @Schema(description = "驾意险跟单费比例")
+    private BigDecimal jyFollowRatio;
+
     @Schema(description = "交强入口比例")
     private BigDecimal jqInletRatio;
 
@@ -129,6 +147,18 @@ public class InsFeeOrdersVo {
     @Schema(description = "驾意险留点费用")
     private String jyKeepPointPremium;
 
+    /**
+     * 新增出口留点比例
+     */
+    @Schema(description = "交强险出口留点比例")
+    private BigDecimal jqExportKeepPointRatio;
+
+    @Schema(description = "商业险出口留点比例")
+    private BigDecimal syExportKeepPointRatio;
+
+    @Schema(description = "驾意险出口留点比例")
+    private BigDecimal jyExportKeepPointRatio;
+
     @Schema(description = "交强出口费用")
     private String jqExportPremium;
 
@@ -199,6 +229,25 @@ public class InsFeeOrdersVo {
     @Schema(description = "出入口比例是否已手动修改 0-未修改 1-已修改")
     private Integer ratioModified;
 
+    @Schema(description = "交强险加投费费比例")
+    private BigDecimal jqAdditionalRatio;
+
+    @Schema(description = "商业险加投费费比例")
+    private BigDecimal syAdditionalRatio;
+
+    @Schema(description = "驾意险加投费费比例")
+    private BigDecimal jyAdditionalRatio;
+
+    @Schema(description = "交强险留点比例")
+    private BigDecimal jqKeepPointRatio;
+
+    @Schema(description = "商业险留点比例")
+    private BigDecimal syKeepPointRatio;
+
+    @Schema(description = "驾意险留点比例")
+    private BigDecimal jyKeepPointRatio;
+
+
     /**
      * 出口费用是否需要扣减1%
      */
@@ -241,6 +290,14 @@ public class InsFeeOrdersVo {
         this.syExportRatio = insFeeOrders.getSyExportRatio() != null ? insFeeOrders.getSyExportRatio() : new BigDecimal(0);
         this.jyExportRatio = insFeeOrders.getJyExportRatio() != null ? insFeeOrders.getJyExportRatio() : new BigDecimal(0);
 
+        this.jqCommissionRatio = insFeeOrders.getJqCommissionRatio() != null ? insFeeOrders.getJqCommissionRatio() : BigDecimal.ZERO;
+        this.syCommissionRatio = insFeeOrders.getSyCommissionRatio() != null ? insFeeOrders.getSyCommissionRatio() : BigDecimal.ZERO;
+        this.jyCommissionRatio = insFeeOrders.getJyCommissionRatio() != null ? insFeeOrders.getJyCommissionRatio() : BigDecimal.ZERO;
+
+        this.jqFollowRatio = insFeeOrders.getJqFollowRatio() != null ? insFeeOrders.getJqFollowRatio() : BigDecimal.ZERO;
+        this.syFollowRatio = insFeeOrders.getSyFollowRatio() != null ? insFeeOrders.getSyFollowRatio() : BigDecimal.ZERO;
+        this.jyFollowRatio = insFeeOrders.getJyFollowRatio() != null ? insFeeOrders.getJyFollowRatio() : BigDecimal.ZERO;
+
         this.jqKeepPointPremium = insFeeOrders.getJqKeepPointPremium() != null ? insFeeOrders.getJqKeepPointPremium().toString() : "0.00";
         this.syKeepPointPremium = insFeeOrders.getSyKeepPointPremium() != null ? insFeeOrders.getSyKeepPointPremium().toString() : "0.00";
         this.jyKeepPointPremium = insFeeOrders.getJyKeepPointPremium() != null ? insFeeOrders.getJyKeepPointPremium().toString() : "0.00";

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

@@ -327,7 +327,7 @@ public class RuleAttrMappingVo {
         // 车牌地区
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("LicenseArea", insOrdersCarInfo.getLicenseNo().substring(0, 1)));
         // 系数
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CoefficientFactor", getCoefficient(insOrdersCarInfo, insOrdersCosts).toString()));
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("Coefficient", getCoefficient(insOrdersCarInfo, insOrdersCosts).toString()));
         // 商业是否有费用
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("CiMessage", (insOrdersOther.getCiMessage() == null || "".equals(insOrdersOther.getCiMessage())) ? "0" : "1"));
 

+ 2 - 5
consoleStatistics/src/main/java/com/jzg/console/service/impl/ReportFeeAuditSummaryServiceImpl.java

@@ -16,9 +16,6 @@ import com.jzg.console.service.ReportFeeAuditSummaryService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.time.LocalTime;
-import java.util.Objects;
-
 /**
  * 费用审核汇总统计 Service 实现
  */
@@ -47,10 +44,10 @@ public class ReportFeeAuditSummaryServiceImpl implements ReportFeeAuditSummarySe
 
         // 转换时间:LocalDate -> LocalDateTime(开始日期的00:00:00,结束日期的23:59:59)
         if (param.getAuditTimeStart() != null) {
-            feeAuditParam.setAuditTimeStart(param.getAuditTimeStart().atStartOfDay());
+            feeAuditParam.setAuditTimeBegin(param.getAuditTimeStart());
         }
         if (param.getAuditTimeEnd() != null) {
-            feeAuditParam.setAuditTimeEnd(param.getAuditTimeEnd().atTime(LocalTime.MAX));
+            feeAuditParam.setAuditTimeEnd(param.getAuditTimeEnd());
         }
 
         // 调用远程服务获取审核列表

+ 3 - 0
tenant/costsorrule/src/main/java/com/jzg/costsorrule/controller/RuleController.java

@@ -106,6 +106,9 @@ public class RuleController extends BaseController {
         StringBuilder logs = new StringBuilder();
         for (Map.Entry<String, List<RuleAttrLinkVo>> entry : converMaps.entrySet()) {
             String key = entry.getKey();
+            if (key.contains("9617")) {
+                System.out.println(11);
+            }
             List<RuleAttrLinkVo> vos = entry.getValue();
             if(ruleService.verificationRule(attrMap,vos,rulesAttrs,logs)){
                 String[] keys = key.split("-");

+ 6 - 1
tenant/costsorrule/src/main/java/com/jzg/costsorrule/service/impl/RuleServiceImpl.java

@@ -117,7 +117,7 @@ public class RuleServiceImpl implements RuleService {
         } else if (rulesAttr.getAttrType().equals(AttrTypeConstant.SELECT.getCode())) {
             //截取车牌
             if (linkVo.getAttrCode().equals("LicenseNo")) {
-                value = value.substring(0, 2);
+                value = value.substring(0, 4);
             }
             return selectEqual(linkVo, value);
         } else if (rulesAttr.getAttrType().equals(AttrTypeConstant.RADIO.getCode())) {
@@ -228,6 +228,11 @@ public class RuleServiceImpl implements RuleService {
 //        }
         //判断如果value 是 boolean值 则将min进行转换为bool
         boolean minValue = Boolean.valueOf(linkVo.getMin());
+        if ("NewEnergyMark".equals(linkVo.getAttrCode())) {
+            if (linkVo.getMin().equals("5") || linkVo.getMin().equals("6")) {
+                minValue = linkVo.getMin().equals("5") ? false : true;
+            }
+        }
         boolean valueBool = Boolean.valueOf(value);
         return minValue == valueBool;
     }

+ 7 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/client/OrgClient.java

@@ -268,4 +268,11 @@ public interface OrgClient {
     @GetMapping("/userInfo/querySysUserByMobile")
     public HttpResult<SysUser> querySysUserByMobile(@RequestParam("mobile") String mobile);
 
+    /**
+     * 根据车牌号 转code
+     * @param licenseNo 晋A,晋B
+     * @return 1401,1402
+     */
+    @GetMapping("/plt/areaLicense/getAreaLicenseCode")
+    HttpResult<String> convertLicense2AreaNumber(@RequestParam("licenseNo") String licenseNo);
 }

+ 5 - 4
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/component/HengBangCrawlerRequestComponent.java

@@ -233,7 +233,7 @@ public class HengBangCrawlerRequestComponent {
         cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
         byte[] decrypted = cipher.doFinal(ciphertext);
 
-        return new String(decrypted, "UTF-8");
+        return new String(decrypted, StandardCharsets.UTF_8);
     }
 
     /**
@@ -333,9 +333,11 @@ public class HengBangCrawlerRequestComponent {
                         String time = extractDuplicateEndTime(detail);
                         if (time != null) {
                             String utcTime = DateUtil.toUtcDateTime(time);
+                            // 保司返回的终保时间直接作为起保时间会仍然重叠,统一调整为次日北京时间0点(已0点则不变)
+                            utcTime = DateUtil.getNextDayMidnightUtc(utcTime);
                             // 根据重复投保类型分别设置起保时间:交强险只改 begintimeCi,商业险只改 begintimeBi
                             // 注意:商业险错误信息不含"商业险平台返回",故通过"交强险平台返回"反推
-                            if (detail.contains("交强险平台提示")) {
+                            if (detail.contains("交强险平台返回")) {
                                 calculationRequest.setBegintimeCi(utcTime);
                             } else {
                                 calculationRequest.setBegintimeBi(utcTime);
@@ -421,8 +423,7 @@ public class HengBangCrawlerRequestComponent {
         try {
             encryptPlyappno = HengBangAESUtil.encryptStr(plyappno);
             System.out.println("encryptPlyappno1 ===========" + encryptPlyappno);
-            encryptPlyappno = new StringBuilder(RequestConstant.ENCRYPTPRE).append(encryptPlyappno)
-                    .toString();
+            encryptPlyappno = RequestConstant.ENCRYPTPRE + encryptPlyappno;
             System.out.println("encryptPlyappno2 ===========" + encryptPlyappno);
         } catch (Exception e) {
             throw new SystemException(e.getMessage());

+ 3 - 0
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/service/Impl/HengBangCrawlerRequestImpl.java

@@ -191,6 +191,9 @@ public class HengBangCrawlerRequestImpl implements HengBangCrawlerRequest {
                 break;
             }
             String utcTime = DateUtil.toUtcDateTime(time);
+            // 保司返回的begintimeCi/begintimeBi实质是老保单终保时间,直接作为起保时间会仍然重叠;
+            // 统一调整为次日北京时间0点(已0点则不变),避免继续判定为重复投保
+            utcTime = DateUtil.getNextDayMidnightUtc(utcTime);
 
             // 根据重复投保类型分别设置起保时间:交强险只改 begintimeCi,商业险只改 begintimeBi
             // 注意:商业险错误信息不含"商业险平台返回",故通过"交强险平台返回"反推

+ 7 - 7
tenant/insurance/quotation-huanong/src/main/java/com/jzg/quotation/huanong/crawler/constant/enums/JiaYiXianProduct.java

@@ -45,17 +45,17 @@ public enum JiaYiXianProduct {
             new CoverageConfig("F27048-6", "附加救护车车费保险条款", "0095", "救护车费用", 0.1, "10", "2000", "0.2万元/座", true)
     )),
     ANXIANG_50("091","2782", "好运连连(50)", true, Arrays.asList(
-            new CoverageConfig("Z27096-1", "交通出行团体意外伤害保险C款条款", "0955", "必选责任:意外伤害身故保险责任", 0.06, "30000", "3.0万元/座", " ", false),
-            new CoverageConfig("Z27096-2", "交通出行团体意外伤害保险C款条款", "0956", "可选责任:意外伤害伤残保险责任", 0.04, "30000", "3.0万元/座", " ", false),
-            new CoverageConfig("F27002", "附加团体意外伤害医疗保险条款", "0008", "意外伤害医疗保险责任", 0.24, "1000", "0.1万元/座", "每次事故免赔300后80%比例赔付", false),
+            new CoverageConfig("Z27096-1", "交通出行团体意外伤害保险C款条款", "0955", "必选责任:意外伤害身故保险责任", 0.1302, "20000", "2.0万元/座", " ", false),
+            new CoverageConfig("Z27096-2", "交通出行团体意外伤害保险C款条款", "0956", "可选责任:意外伤害伤残保险责任", 0.0868, "20000", "2.0万元/座", " ", false),
+            new CoverageConfig("F27002", "附加团体意外伤害医疗保险条款", "0008", "意外伤害医疗保险责任", 0.3, "1000", "0.1万元/座", "每次事故免赔300后80%比例赔付", false),
             new CoverageConfig("F27001", "附加团体意外伤害住院津贴保险条款", "0032", "意外伤害住院津贴保险责任", 0.2, "10", "0.001万元/座", "10元/天/座", true)
 
     )),
     ANXIANG_240("092","2782", "好运连连(240)", true, Arrays.asList(
-            new CoverageConfig("Z27096-1", "交通出行团体意外伤害保险C款条款", "0955", "必选责任:意外伤害身故保险责任", 0.06, "30000", "3.0万元/座", " ", false),
-            new CoverageConfig("Z27096-2", "交通出行团体意外伤害保险C款条款", "0956", "可选责任:意外伤害伤残保险责任", 0.04, "30000", "3.0万元/座", " ", false),
-            new CoverageConfig("F27002", "附加团体意外伤害医疗保险条款", "0008", "意外伤害医疗保险责任", 0.24, "1000", "0.1万元/座", "每次事故免赔300后80%比例赔付", false),
-            new CoverageConfig("F27001", "附加团体意外伤害住院津贴保险条款", "0032", "意外伤害住院津贴保险责任", 0.2, "10", "0.001万元/座", "10元/天/座", true),
+            new CoverageConfig("Z27096-1", "交通出行团体意外伤害保险C款条款", "0955", "必选责任:意外伤害身故保险责任", 0.15, "80000", "8.0万元/座", " ", false),
+            new CoverageConfig("Z27096-2", "交通出行团体意外伤害保险C款条款", "0956", "可选责任:意外伤害伤残保险责任", 0.1, "80000", "8.0万元/座", " ", false),
+            new CoverageConfig("F27002", "附加团体意外伤害医疗保险条款", "0008", "意外伤害医疗保险责任", 0.3, "5000", "0.1万元/座", "每次事故免赔300后80%比例赔付", false),
+            new CoverageConfig("F27001", "附加团体意外伤害住院津贴保险条款", "0032", "意外伤害住院津贴保险责任", 0.2, "50", "0.005万元/座", "50元/天/座", true),
             new CoverageConfig("F27047-5", "附加辅助金保险条款", "0094", "家庭辅助金", 0.015, "20000", "2.0万元/座", "", true),
             new CoverageConfig("F27048-6", "附加救护车车费保险条款", "0095", "救护车费用", 0.2, "2000", "0.2万元/座", "", true)
 

+ 0 - 1
tenant/insurance/quotation-huanong/src/main/java/com/jzg/quotation/huanong/crawler/entity/request/HuaNongCrawlerQuotedPriceRequestRequest.java

@@ -1858,7 +1858,6 @@ public class HuaNongCrawlerQuotedPriceRequestRequest implements HuaNongHeadReque
                 unitAmountDTO.setValue(unitAmount);
                 coverage.setListUnitAmount(List.of(unitAmountDTO));
                 coverage.setTerm("一年");
-                coverage.setAllAmount("0");
                 coverage.setDeductible(0);
                 coverage.setEachDamageLimitAmount(0);
                 coverage.setSeatCount("0");

+ 7 - 5
tenant/insurance/quotation-renbaonew/src/main/java/com/jzg/quotation/renbaonew/crawler/service/impl/RenBaoNewCrawlerRequestImpl.java

@@ -201,9 +201,11 @@ public class RenBaoNewCrawlerRequestImpl implements RenBaoNewCrawlerRequest {
                     response.getData().getReInsureItems().forEach(item ->{
                         // 1. 获取 coverageItemList 数组
                         Object coverageObj = item.get("coverageItemList");
-                        // 强转为 List<Map<String,Object>>(里面每一项是 {"coverageCode":"xxx"})
-                        List<Map<String, Object>> coverageList = (List<Map<String, Object>>) coverageObj;
-                        lastYeseRisks.addAll(coverageList);
+                        if(coverageObj != null){
+                            // 强转为 List<Map<String,Object>>(里面每一项是 {"coverageCode":"xxx"})
+                            List<Map<String, Object>> coverageList = (List<Map<String, Object>>) coverageObj;
+                            lastYeseRisks.addAll(coverageList);
+                        }
                         if(item.get("billDate") != null){
                             String expireDate =item.get("expireDate")+"";
                             biDateArr[0] = expireDate != null && expireDate.length()>10 ? expireDate.substring(0,10):"";
@@ -215,7 +217,7 @@ public class RenBaoNewCrawlerRequestImpl implements RenBaoNewCrawlerRequest {
                 // 上一年险别属于商业险重复投保,需要拦截并重新请求
                 java.time.LocalDate startDate = java.time.LocalDate.parse(biDateArr[0]);
                 java.time.LocalDate startDate1 = startDate.plusDays(1);
-                java.time.LocalDate endDate = startDate.plusDays(364);
+                java.time.LocalDate endDate = startDate.plusDays(365);
                 request.getPrpCmain().put("endDate", endDate.toString());
                 request.getPrpCmain().put("endHour", "24");
                 request.getPrpCmain().put("endMinute", "00");
@@ -373,7 +375,7 @@ public class RenBaoNewCrawlerRequestImpl implements RenBaoNewCrawlerRequest {
             return false;
         }
         List<Map<String, Object>> reInsureItems = response.getData().getReInsureItems();
-        return reInsureItems != null && !reInsureItems.isEmpty();
+        return reInsureItems != null && !reInsureItems.isEmpty() && reInsureItems.get(0).get("coverageItemList") != null;
     }
 
     /**

+ 0 - 9
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/FactorMatch.java

@@ -109,15 +109,6 @@ public class FactorMatch {
                 if (CollUtil.isNotEmpty(undwrtRulesDictList) && ptlAgreementProductCostsAttrLink != null) {
                     String minStr = ptlAgreementProductCostsAttrLink.getMin();
                     if (minStr != null && !minStr.isEmpty()) {
-                        // 拆出 rule 里所有 code
-                        Set<String> ruleCodes = Arrays.stream(minStr.split(","))
-                                .map(String::trim).filter(s -> !s.isEmpty()).collect(Collectors.toSet());
-                        // 在全量 dict 里找 code 匹配的 label
-                        for (PtlAgreementUndwrtRulesDictLabal label : undwrtRulesDictList) {
-                            if (ruleCodes.contains(label.getCode())) {
-                                codeToNameMap.put(label.getCode(), label.getName());
-                            }
-                        }
                         // 如果还是空的(rule 里 code 在 dict 都不存在),fallback 用 attrMeta 的 dictId 再查一遍
                         if (codeToNameMap.isEmpty() && ptlAgreementUndwrtRulesAttr != null && ptlAgreementUndwrtRulesAttr.getDictId() != null) {
                             Integer dictId = ptlAgreementUndwrtRulesAttr.getDictId();

+ 2 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/OrderOperationLogAspect.java

@@ -99,7 +99,8 @@ public class OrderOperationLogAspect {
                 InsOrders mainOrders = orderService.getMainOrders(
                         quoteVo.getOrder().getInsuranceCompanyCode(),
                         quoteVo.getCarInfoVo().getLicenseNo(),
-                        quoteVo.getCarInfoVo().getVinNo());
+                        quoteVo.getCarInfoVo().getVinNo(),
+                        quoteVo.getProductId());
                 boolean isExistsMainOrder = false;
                 if (Objects.nonNull(mainOrders))
                 {

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

@@ -130,6 +130,10 @@ public class QuoteVerificationAspect {
             log.info("过滤的费用列表:{}",JSONObject.toJSONString(agreementProductCosts));
             if (CollUtil.isNotEmpty(agreementProductCosts)) {
                 //遍历费用因子
+                HttpResult<String> convertLicense2AreaNumber = orgClient.convertLicense2AreaNumber(insOrdersCarInfo.getLicenseNo().substring(0, 2));
+                if(convertLicense2AreaNumber.isSuccess()){
+                    insOrdersCarInfo.setLicenseNo(convertLicense2AreaNumber.getData());//车牌转code
+                }
                 String costId = verificationCosts(agreementProductCosts, logs, insOrdersOther, insOrdersCarInfo, insOrdersRisks,
                         insOrdersCarUserInfos, kindList, insOrdersCosts, insOrdersAccidentalDriving, insOrders);
                 if (costId != null) {

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

@@ -295,7 +295,7 @@ public class UnifyOrderManager {
                 .getApiType(), sysQuoteConfigService, sysQuoteRedisService, platformClient, baseController);
 
         // 生成主订单及子订单  返回子订单id
-        String ordersNo = insOrdersService.generateOrders(quoteVo, companyName,systemCode);
+        String ordersNo = insOrdersService.generateOrders(quoteVo, companyName,systemCode, quoteVo.getProductId());
 
         // 添加车辆没有的参数: 车辆明细、
         QuoteInfoParameterFilling.setParameterSettings(quoteVo, esmInsCompanyHttpResult.getData().getCompanyCode());

+ 1 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersMapper.java

@@ -67,7 +67,7 @@ public interface InsOrdersMapper extends BaseMapper<InsOrders> {
      * @param vinNo
      * @return
      */
-    InsOrders getBaseOrders(String companyId, String licenseNo, String vinNo);
+    InsOrders getBaseOrders(String companyId, String licenseNo, String vinNo, String productId);
 
     /**
      * 获取最新报价的订单信息

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

@@ -66,7 +66,7 @@ public interface InsOrdersService extends IService<InsOrders> {
      * @param systemCode 租户代码
      * @return String
      */
-    String generateOrders(QuoteVo quoteVo, String companyName, String systemCode);
+    String generateOrders(QuoteVo quoteVo, String companyName, String systemCode,String productId);
 
 
     /**
@@ -77,7 +77,7 @@ public interface InsOrdersService extends IService<InsOrders> {
      * @param vinNo
      * @return
      */
-    InsOrders getMainOrders(String companyId, String licenseNo, String vinNo);
+    InsOrders getMainOrders(String companyId, String licenseNo, String vinNo, String productId);
 
     /**
      * 设置人员地址

+ 2 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeAuditServiceImpl.java

@@ -180,7 +180,7 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
 //            feeAuditVo.setPartnerCompanySimplyName(allCompanyHierarchyPaths.get(Objects.toString(feeAuditVo.getPartnerCompanyId(),"")));
             feeAuditVo.setPartnerCompanySimplyName(feeAuditVo.getPartnerCompanyName());
             // auditUser 非空时,判断是名称还是手机号
-            feeAuditVo.setAuditUser(userInfoService.getUserNameByMobile(feeAuditVo.getAuditUser()));
+            feeAuditVo.setAuditUserName(userInfoService.getUserNameByMobile(feeAuditVo.getAuditUser()));
             feeAuditVo.setCreateBy(userInfoService.getUserNameByMobile(feeAuditVo.getCreateBy()));
 
             // 循环每条数据,查询 ins_fee_orders 并计算权益金额
@@ -569,6 +569,7 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
             JSONObject requestData = new JSONObject();
             requestData.put("orderNo",orderNos);
             HttpResult httpResult = orgClient.addReceivable(requestData);
+            log.info("httpResult=[{}]", JSONUtil.toJsonStr(httpResult));
             AssertionUtils.isFail(httpResult.getCode() == 500,"应收出错");
             this.dealDistribution(feeOrders,userAccount);
         }else{

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

@@ -315,7 +315,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     /**
      * 单个险种费用计算
      */
-    private static void calcInsuranceType(InsFeeOrders o, BigDecimal premium, PtlAgreementCostTypeVo ct, BigDecimal commissionRatio, BigDecimal followRatio, BigDecimal taxFactor, String type) {
+    private static void calcInsuranceType(InsFeeOrders o, BigDecimal premium, PtlAgreementCostTypeVo ct, BigDecimal commissionRatio, BigDecimal followRatio, BigDecimal taxFactor,BigDecimal KeepPointRatio, String type) {
         if (ct == null || premium == null) {
             if ("jq".equals(type)) {
                 o.setJqReceivablePremium(BigDecimal.ZERO);
@@ -340,8 +340,6 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         BigDecimal receivable = taxable.multiply(commissionRatio.add(followRatio)).setScale(5, RoundingMode.HALF_EVEN);
         receivable = receivable.setScale(5, RoundingMode.HALF_EVEN); // 与旧代码保持一致:二次setScale
         BigDecimal follow = receivable.subtract(commission);
-        BigDecimal keepRate = BigDecimalUtil.subtract(BigDecimalUtil.add(BigDecimalUtil.divide(inlet, taxFactor), addThrow), export).setScale(5, RoundingMode.HALF_EVEN);
-        BigDecimal keepAmt = BigDecimalUtil.subtract(BigDecimalUtil.add(receivable, addAmt), payable).setScale(5, RoundingMode.HALF_EVEN);
 
         switch (type) {
             case "jq":
@@ -350,8 +348,8 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                 o.setJqCommissionPremium(commission);
                 o.setJqFollowPremium(follow);
                 o.setJqAdditionalPremium(addAmt);
-                o.setJqKeepPointRatio(keepRate);
-                o.setJqKeepPointPremium(keepAmt);
+                o.setJqKeepPointRatio(KeepPointRatio);
+                o.setJqKeepPointPremium(premium.multiply(KeepPointRatio).setScale(5, RoundingMode.HALF_EVEN).divide(new BigDecimal(100), 5, RoundingMode.HALF_EVEN));
                 break;
             case "sy":
                 o.setSyReceivablePremium(receivable);
@@ -359,8 +357,8 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                 o.setSyCommissionPremium(commission);
                 o.setSyFollowPremium(follow);
                 o.setSyAdditionalPremium(addAmt);
-                o.setSyKeepPointRatio(keepRate);
-                o.setSyKeepPointPremium(keepAmt);
+                o.setSyKeepPointRatio(KeepPointRatio);
+                o.setSyKeepPointPremium(premium.multiply(KeepPointRatio).setScale(5, RoundingMode.HALF_EVEN).divide(new BigDecimal(100), 5, RoundingMode.HALF_EVEN));
                 break;
             case "jy":
                 o.setJyReceivablePremium(receivable);
@@ -368,8 +366,8 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                 o.setJyCommissionPremium(commission);
                 o.setJyFollowPremium(follow);
                 o.setJyAdditionalPremium(addAmt);
-                o.setJyKeepPointRatio(keepRate);
-                o.setJyKeepPointPremium(keepAmt);
+                o.setJyKeepPointRatio(KeepPointRatio);
+                o.setJyKeepPointPremium(premium.multiply(KeepPointRatio).setScale(5, RoundingMode.HALF_EVEN).divide(new BigDecimal(100), 5, RoundingMode.HALF_EVEN));
                 break;
         }
     }
@@ -408,6 +406,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrders.setOrderStatus(InsOrderStatusEnum.QUOTE_ING.getCode());
             insOrders.setEntryStatus(3);
             insOrders.setSystemCode(ordersAdd.getSystemCode());
+            insOrders.setPayTime(insOrders.getSigningTime());
             // 插入订单信息,如果插入失败,则返回错误信息
             int insertResult = insOrdersMapper.insert(insOrders);
             if (insertResult <= 0) {
@@ -455,7 +454,10 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrdersPolicyService.save(policy);
 
             //  保存订单费用
-            updateOrSaveFeeOrder(ordersAdd.getFeeOrdersVo(), quoteNo, ordersAdd.getSystemCode());
+            InsFeeOrdersVo feeOrdersVo = ordersAdd.getFeeOrdersVo();
+            PtlAgreementCostRatioVo costRatio = ordersAdd.getCostRatio();
+            BeanCopyUtil.deepCopy(costRatio, feeOrdersVo.getClass());
+            updateOrSaveFeeOrder(feeOrdersVo, quoteNo, ordersAdd.getSystemCode());
 
             // 保险种类信息
             List<KindInfoVo> kindInfoVo = ordersAdd.getKindInfoVo();
@@ -503,7 +505,6 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             ordersPolicy.setJyPolicyNo(ordersExternalPolicy.getNoPolicy());
             insOrdersPolicyService.updateByOrderNo(ordersPolicy);
 
-
             // 发送订单状态变更消息
             this.orderStatusMessage(insOrders, insOrdersCarInfo, insOrdersCosts, baseController.getToken(), MessageCodeEnum.TEMPLATE_9);
             if (nullOrders) {
@@ -681,8 +682,10 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             policy.setOrderNo(quoteNo);
             insOrdersPolicyService.updateById(policy);
 
-
             //更新订单费用
+            InsFeeOrdersVo feeOrdersVo = ordersEnd.getFeeOrdersVo();
+            PtlAgreementCostRatioVo costRatio = ordersEnd.getCostRatio();
+            BeanCopyUtil.deepCopy(costRatio, feeOrdersVo.getClass());
             updateOrSaveFeeOrder(ordersEnd.getFeeOrdersVo(), quoteNo, ordersEnd.getSystemCode());
 
             // 税费信息
@@ -1039,8 +1042,8 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     }
 
     @Override
-    public InsOrders getMainOrders(String companyId, String licenseNo, String vinNo) {
-        return baseMapper.getBaseOrders(companyId, licenseNo, vinNo);
+    public InsOrders getMainOrders(String companyId, String licenseNo, String vinNo,String productId) {
+        return baseMapper.getBaseOrders(companyId, licenseNo, vinNo, productId);
     }
 
 
@@ -1637,12 +1640,12 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
      */
     @Override
     @Transactional
-    public String generateOrders(QuoteVo quoteVo, String companyName, String systemCode) {
+    public String generateOrders(QuoteVo quoteVo, String companyName, String systemCode,String productId) {
         // 生成订单的条件
         // 1个保险公司只有一个主订单   不区分险种
         // 唯一性的判定标准:保险公司编号+ 车牌号 + 车架号
         log.info("生成一个主订单和多个子订单:systemCode=[{}], quoteVo=[{}],companyName=[{}]", systemCode, JSONUtil.toJsonStr(quoteVo), companyName);
-        InsOrders mainOrders = this.getMainOrders(quoteVo.getOrder().getInsuranceCompanyCode(), quoteVo.getCarInfoVo().getLicenseNo(), quoteVo.getCarInfoVo().getVinNo());
+        InsOrders mainOrders = this.getMainOrders(quoteVo.getOrder().getInsuranceCompanyCode(), quoteVo.getCarInfoVo().getLicenseNo(), quoteVo.getCarInfoVo().getVinNo(), productId);
         boolean isExistsMainOrder = Objects.nonNull(mainOrders);
         String mainOrderNo;
         // 如果订单号为0 则生成主订单
@@ -1854,16 +1857,16 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrdersVo = selectById(Long.parseLong(ordersNo));
         }
         HttpResult<List<SysArea>> sysAreasResult;
-        try{
+        try {
             sysAreasResult = orgClient.queryAllParent(insOrdersVo.getOwnersInfo().getCountyCode());
-            if(sysAreasResult.getCode() == 200) {
+            if (sysAreasResult.getCode() == 200) {
                 List<SysArea> sysAreas = sysAreasResult.getData();
                 insOrdersVo.getOwnersInfo().setProvince(sysAreas.get(3).getAreaCname());
                 insOrdersVo.getOwnersInfo().setCity(sysAreas.get(2).getAreaCname());
                 insOrdersVo.getOwnersInfo().setCounty(sysAreas.get(1).getAreaCname());
             }
             HttpResult<List<SysArea>> sysPoliCyAreasResult = orgClient.queryAllParent(insOrdersVo.getPolicyHolderInfo().getCountyCode());
-            if(sysPoliCyAreasResult.getCode() == 200) {
+            if (sysPoliCyAreasResult.getCode() == 200) {
                 List<SysArea> sysAreas = sysAreasResult.getData();
                 insOrdersVo.getPolicyHolderInfo().setProvince(sysAreas.get(3).getAreaCname());
                 insOrdersVo.getPolicyHolderInfo().setCity(sysAreas.get(2).getAreaCname());
@@ -1871,19 +1874,17 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             }
 
             HttpResult<List<SysArea>> sysInsuredAreasResult = orgClient.queryAllParent(insOrdersVo.getInsuredPersonInfo().getCountyCode());
-            if(sysInsuredAreasResult.getCode() == 200) {
+            if (sysInsuredAreasResult.getCode() == 200) {
                 List<SysArea> sysAreas = sysAreasResult.getData();
                 insOrdersVo.getInsuredPersonInfo().setProvince(sysAreas.get(3).getAreaCname());
                 insOrdersVo.getInsuredPersonInfo().setCity(sysAreas.get(2).getAreaCname());
                 insOrdersVo.getInsuredPersonInfo().setCounty(sysAreas.get(1).getAreaCname());
             }
-        }catch (Exception e){
+        } catch (Exception e) {
             log.info("处理地址异常");
         }
 
 
-
-
         log.info("根据orderNo=[{}]查询到的订单明细[{}]", ordersNo, JSONUtil.toJsonStr(insOrdersVo));
         AssertionUtils.isFail(Objects.isNull(insOrdersVo), "订单不存在");
         QuoteEchoVo resultVo = new QuoteEchoVo(insOrdersVo);
@@ -2125,9 +2126,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         BigDecimal syExport = this.calExportByIsRecordByLeader(request.isIsrecordByLeader(), nvl(request.getSyExport()));
         BigDecimal jyExport = this.calExportByIsRecordByLeader(request.isIsrecordByLeader(), nvl(request.getJyExport()));
 
-        BigDecimal jqEKP = nvl(request.getJqExportKeepPointRatio());
-        BigDecimal syEKP = nvl(request.getSyExportKeepPointRatio());
-        BigDecimal jyEKP = nvl(request.getJyExportKeepPointRatio());
+        BigDecimal jqEKP = nvl(request.getJqKeepPointRatio());
+        BigDecimal syEKP = nvl(request.getSyKeepPointRatio());
+        BigDecimal jyEKP = nvl(request.getJyKeepPointRatio());
 
         // 1. 查询协议(同时获取入口手续费比例 + 税率因子,一次查询)
         PtlAgreement ptlAgreement = orgClient.getByAgreementId(agreementId);
@@ -2185,9 +2186,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         feeOrders.setJyFollowRatio(jyFollow);
 
         // 6. 各险种费用计算(应收/应付/手续费/跟单费/加投费/留点)
-        calcInsuranceType(feeOrders, jqPremium, jqCostType, jqRatio, jqFollow, taxFactor, "jq");
-        calcInsuranceType(feeOrders, syPremium, syCostType, syRatio, syFollow, taxFactor, "sy");
-        calcInsuranceType(feeOrders, jyPremium, jyCostType, jyRatio, jyFollow, taxFactor, "jy");
+        calcInsuranceType(feeOrders, jqPremium, jqCostType, jqRatio, jqFollow, taxFactor,request.getJqKeepPointRatio(), "jq");
+        calcInsuranceType(feeOrders, syPremium, syCostType, syRatio, syFollow, taxFactor,request.getSyKeepPointRatio(),"sy");
+        calcInsuranceType(feeOrders, jyPremium, jyCostType, jyRatio, jyFollow, taxFactor,request.getJyKeepPointRatio(), "jy");
 
         // 7. 计算分销费用(返回分销精度差值)—— 须在 saveRatio 之前,因为 export 需要减分销比例
         BigDecimal distributionDiff = calcDistributionFee(sumPremium, feeOrders, request.getMobile());
@@ -2206,11 +2207,11 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         feeOrders.setJqAdditionalRatio(div100(jqAddThrow));
         feeOrders.setSyAdditionalRatio(div100(syAddThrow));
         feeOrders.setJyAdditionalRatio(div100(jyAddThrow));
-        feeOrders.setJqKeepPointRatio(nvl(feeOrders.getJqKeepPointRatio()));
-        feeOrders.setSyKeepPointRatio(nvl(feeOrders.getSyKeepPointRatio()));
-        feeOrders.setJyKeepPointRatio(nvl(feeOrders.getJyKeepPointRatio()));
+        feeOrders.setJqKeepPointRatio(div100(nvl(feeOrders.getJqKeepPointRatio())));
+        feeOrders.setSyKeepPointRatio(div100(nvl(feeOrders.getSyKeepPointRatio())));
+        feeOrders.setJyKeepPointRatio(div100(nvl(feeOrders.getJyKeepPointRatio())));
 
-        // 出口比例 = 入口比例 +加投比例 - 分销比例 -出口留点比例
+        // 出口比例 = 入口比例 +加投比例 - 分销比例 -留点比例
         BigDecimal firstDist = nvl(feeOrders.getFirstDistributionRatio());
         BigDecimal secondDist = nvl(feeOrders.getSecondDistributionRatio());
         BigDecimal thirdDist = nvl(feeOrders.getThirdDistributionRatio());
@@ -2218,9 +2219,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         feeOrders.setSyExportRatio(syInlet.compareTo(BigDecimal.ZERO) > 0 ? div100(syInlet).add(div100(request.getSyAddThrow())).subtract(div100(firstDist)).subtract(div100(secondDist)).subtract(div100(thirdDist)).subtract(div100(syEKP)) : BigDecimal.ZERO);
         feeOrders.setJyExportRatio(jyInlet.compareTo(BigDecimal.ZERO) > 0 ? div100(jyInlet).add(div100(request.getJyAddThrow())).subtract(div100(firstDist)).subtract(div100(secondDist)).subtract(div100(thirdDist)).subtract(div100(jyEKP)) : BigDecimal.ZERO);
 
-        feeOrders.setJqExportKeepPointRatio(div100(jqEKP));
-        feeOrders.setSyExportKeepPointRatio(div100(syEKP));
-        feeOrders.setJyExportKeepPointRatio(div100(jyEKP));
+        feeOrders.setJqExportKeepPointRatio(div100(request.getJqExportKeepPointRatio()!=null? request.getJqExportKeepPointRatio() : new BigDecimal(0)));
+        feeOrders.setSyExportKeepPointRatio(div100(request.getSyExportKeepPointRatio()!=null? request.getSyExportKeepPointRatio() : new BigDecimal(0)));
+        feeOrders.setJyExportKeepPointRatio(div100(request.getJyExportKeepPointRatio()!=null? request.getJyExportKeepPointRatio() : new BigDecimal(0)));
 
         // 7.2 保费为0 → 出口相关字段归零(对齐旧 saveRatio)
         if (jqPremium.compareTo(BigDecimal.ZERO) == 0) {
@@ -2259,13 +2260,13 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         BigDecimal jyEOrigin = feeOrders.getJyExportRatio().multiply(jyPremium);
         BigDecimal jyE = jyEOrigin.setScale(2, RoundingMode.DOWN);
         feeOrders.setJyExportPremium(jyE);
-
-        BigDecimal jqK = feeOrders.getJqExportKeepPointRatio().multiply(jqPremium);
-        feeOrders.setJqExportKeepPointPremium(jqK);
-        BigDecimal syK = feeOrders.getSyExportKeepPointRatio().multiply(syPremium);
-        feeOrders.setSyExportKeepPointPremium(syK);
-        BigDecimal jyK = feeOrders.getJyExportKeepPointRatio().multiply(jyPremium);
-        feeOrders.setJyExportKeepPointPremium(jyK);
+        //  出口留点费用
+        BigDecimal jqEK = feeOrders.getJqExportKeepPointRatio().multiply(jqPremium);
+        feeOrders.setJqExportKeepPointPremium(jqEK);
+        BigDecimal syEK = feeOrders.getSyExportKeepPointRatio().multiply(syPremium);
+        feeOrders.setSyExportKeepPointPremium(syEK);
+        BigDecimal jyEK = feeOrders.getJyExportKeepPointRatio().multiply(jyPremium);
+        feeOrders.setJyExportKeepPointPremium(jyEK);
 
         // 截断差值 = 出口精度损失 + 分销差值
         List<BigDecimal> diffs = new ArrayList<>();
@@ -2275,9 +2276,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         diffs.add(distributionDiff);
         feeOrders.setTotalExportDiffAmount(BigDecimalUtil.add(diffs));
 
-        feeOrders.setAvailableAmount(jqE.add(syE).add(jyE).subtract(jqK).subtract(syK).subtract(jyK).setScale(2, RoundingMode.HALF_UP));
+        feeOrders.setAvailableAmount(jqE.add(syE).add(jyE).subtract(jyEK).subtract(syEK).subtract(jyEK).setScale(2, RoundingMode.HALF_UP));
         feeOrders.setTotalExportPremium(jqE.add(syE).add(jyE));
-        feeOrders.setTotalExportKeepPointPremium(jqK.add(syK).add(jyK));
+        feeOrders.setTotalExportKeepPointPremium(jyEK.add(syEK).add(jyEK));
 
         // 10. 构建比例VO
         PtlAgreementCostRatioVo costRatio = new PtlAgreementCostRatioVo(feeOrders);

+ 3 - 3
tenant/insurance/quotation-summary/src/main/resources/mapper/InsFeeAuditMapper.xml

@@ -213,11 +213,11 @@
             <if test="param.niPolicyNumber != null and param.niPolicyNumber != ''">
                 and ioep.no_policy = #{param.niPolicyNumber}
             </if>
-            <if test="param.auditTimeStart != null and param.auditTimeEnd != null">
-                and DATE_FORMAT(ifa.audit_time, '%Y-%m-%d') between #{param.auditTimeStart} AND #{param.auditTimeEnd}
+            <if test="param.auditTimeBegin != null and param.auditTimeEnd != null">
+                and DATE_FORMAT(ifa.audit_time, '%Y-%m-%d') between #{param.auditTimeBegin} AND #{param.auditTimeEnd}
             </if>
             <if test="param.auditUser != null and param.auditUser != ''">
-                and ifa.audit_user = #{param.auditUser}
+                and ifa.audit_user like concat('%',#{param.auditUser},'%')
             </if>
             <if test="param.auditStatus != null and param.auditStatus != ''">
                 and ifa.audit_status = #{param.auditStatus}

+ 11 - 6
tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml

@@ -134,6 +134,7 @@
         <result property="isDjq" column="is_djq" jdbcType="VARCHAR"/>
         <result property="jqAdjustRate" column="jq_adjust_rate" jdbcType="VARCHAR"/>
         <result property="syAdjustRate" column="sy_adjust_rate" jdbcType="VARCHAR"/>
+        <result property="totalAdjustRate" column="total_adjust_rate" jdbcType="VARCHAR"/>
         <result property="signingTime" column="signing_time" jdbcType="VARCHAR"/>
         <result property="companyName" column="company_name" jdbcType="VARCHAR"/>
         <result property="jqPremium" column="jq_premium" jdbcType="VARCHAR"/>
@@ -377,7 +378,10 @@
         from sys_upload_files
         <where>
             and is_delete = 0
-            and id in (${concatenated_string})
+            and id in
+            <foreach collection="concatenated_string.split(',')" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
         </where>
     </select>
 
@@ -765,6 +769,7 @@
         ot.is_djq,
         ot.jq_adjust_rate,
         ot.sy_adjust_rate,
+        ot.total_adjust_rate,
         ot.tp_color_score,
         o.signing_time,
         o.company_name,
@@ -934,7 +939,7 @@
         ) x WHERE x.rn = 1
         ) ioa1 ON io.id = ioa1.order_no
         <where>
-            and io.is_delete = 0 and io.parent_id != '0' and sujis.type_attr NOT IN (1,2,3,4,5)
+            and io.is_delete = 0 and io.parent_id != '0' and sujis.type_attr NOT IN (1,2,3,4)
             <if test="insOrdersParam.jzgInfoId != null and insOrdersParam.jzgInfoId != ''">
                 and io.real_quote_user_id in (select bbb.mobile from sys_user bbb where bbb.id in ( select ss.user_id
                 from sys_user_jzg_info ss where 1 =1 and (ss.leader_id = #{insOrdersParam.jzgInfoId} or ss.id
@@ -1123,7 +1128,7 @@
         ) x WHERE x.rn = 1
         ) ioa1 ON io.id = ioa1.order_no
         <where>
-            and io.is_delete = 0 and sujis.type_attr NOT IN (1,2,3,4,5)
+            and io.is_delete = 0 and sujis.type_attr NOT IN (1,2,3,4)
             <if test="insOrdersParam.orderNo != null and insOrdersParam.orderNo != ''">
                 AND io.id = #{insOrdersParam.orderNo}
             </if>
@@ -1331,7 +1336,7 @@
         ) x WHERE x.rn = 1
         ) ioa1 ON io.id = ioa1.order_no
         <where>
-            and io.is_delete = 0 and io.parent_id != '0' and sujis.type_attr NOT IN (1,2,3,4,5)
+            and io.is_delete = 0 and io.parent_id != '0' and sujis.type_attr NOT IN (1,2,3,4)
             <if test="insOrdersParam.jzgInfoId != null and insOrdersParam.jzgInfoId != ''">
                 and io.real_quote_user_id in (select bbb.mobile from sys_user bbb where bbb.id in ( select ss.user_id
                 from sys_user_jzg_info ss where 1 =1 and (ss.leader_id = #{insOrdersParam.jzgInfoId} or ss.id
@@ -1544,7 +1549,7 @@
             ) x WHERE x.rn = 1
             ) ioa1 ON io.id = ioa1.order_no
             <where>
-                and io.is_delete = 0 and io.parent_id != '0' and sujis.type_attr NOT IN (1,2,3,4,5)
+                and io.is_delete = 0 and io.parent_id != '0' and sujis.type_attr NOT IN (1,2,3,4)
                 <if test="insOrdersParam.jzgInfoId != null and insOrdersParam.jzgInfoId != ''">
                     and io.real_quote_user_id in (select bbb.mobile from sys_user bbb where bbb.id in ( select ss.user_id
                     from sys_user_jzg_info ss where 1 =1 and (ss.leader_id = #{insOrdersParam.jzgInfoId} or ss.id
@@ -1746,9 +1751,9 @@
         <where>
             and o.is_delete = 0
             and o.parent_id = 0
-            AND o.company_id = #{companyId}
             AND c.license_no = #{licenseNo}
             AND c.vin_no = #{vinNo}
+            AND o.product_id = #{productId}
         </where>
     </select>
 

+ 6 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/PtlAreaLicenseController.java

@@ -28,5 +28,11 @@ public class PtlAreaLicenseController {
         return HttpResult.ok(ptlAreaLicenses);
     }
 
+    @GetMapping("/getAreaLicenseCode")
+    HttpResult<String> convertLicense2AreaNumber(@RequestParam(required = false) String licenseNo) {
+        String licenseCode = ptlAreaLicenseService.convertLicense2AreaNumber(licenseNo);
+        return HttpResult.ok("成功",licenseCode);
+    }
+
 
 }

+ 3 - 3
tenant/organization/src/main/java/com/jzg/organization/controller/SchemeController.java

@@ -106,9 +106,9 @@ public class SchemeController {
     }
 
     @Operation(summary = "获取方案结果")
-    @GetMapping("/getSchemeResult")
-    public HttpResult getSchemeResult(String companyId,String productId,String seatCount,String energyType,String vehicleType,String carnature){
-         SchemeResultVo schemeResultVo = ptlSchemeService.getSchemeResult(companyId,productId,seatCount,energyType,vehicleType,carnature);
+    @PostMapping("/getSchemeResult")
+    public HttpResult getSchemeResult(@RequestBody SchemeRuleFilterVo schemeRuleFilterVo){
+         SchemeResultVo schemeResultVo = ptlSchemeService.getSchemeResult(schemeRuleFilterVo);
         return HttpResult.ok(schemeResultVo);
     }
 

+ 1 - 1
tenant/organization/src/main/java/com/jzg/organization/mapper/ReceivableMapper.java

@@ -36,7 +36,7 @@ public interface ReceivableMapper extends BaseMapper<InsPlyIncome> {
     /**
      * 获取为审核的订单列表
      */
-    List<InsPlyIncome> getUnauditedOrderList(List<String> orderNo, String orderStatus, String auditStatus, String systemCode);
+    List<InsPlyIncome> getUnauditedOrderList(List<String> orderNo, String auditStatus, String systemCode);
 
     /**
      * 获取应收订单的保司

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

@@ -76,11 +76,10 @@ public interface PtlSchemeService extends IService<PtlScheme> {
 
     /**
      * 获取方案结果
-     * @param companyId
-     * @param productId
+     * @param schemeRuleFilterVo
      * @return
      */
-    public SchemeResultVo getSchemeResult(String companyId,String productId,String seatCount,String energyType,String vehicleType,String carnature);
+    public SchemeResultVo getSchemeResult(SchemeRuleFilterVo schemeRuleFilterVo);
 
     List<InsBusinessInsuranceVo> getBusinessInsuranceListByKindType(String kindCode);
 

+ 42 - 1
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlSchemeServiceImpl.java

@@ -109,6 +109,9 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
     @Autowired
     jyxSettingMapper jyxSettingMapper;
 
+    @Autowired
+    PtlAreaLicenseService ptlAreaLicenseService;
+
     /**
      * 添加方案
      *
@@ -594,6 +597,7 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
         ValidateSchemeRuleVo validateSchemeRuleVo = new ValidateSchemeRuleVo();
         validateSchemeRuleVo.builderQuoteVo(schemeRuleFilterVo, redissonClient);
         validateSchemeRuleVo.setAttrLinks(ptlSchemeRulesAttrLinks);
+        validateSchemeRuleVo.getQuoteVo().getCarInfoVo().setLicenseNo(ptlAreaLicenseService.convertLicense2AreaNumber(validateSchemeRuleVo.getQuoteVo().getCarInfoVo().getLicenseNo().substring(0, 2)));
         HttpResult<List<String>> esmInsCompanyHttpResult = costsRuleClient.validateSchemeRule(validateSchemeRuleVo);
         List<String> insSchemeIds = esmInsCompanyHttpResult.getData();
         if (CollUtil.isEmpty(insSchemeIds)) {
@@ -650,6 +654,25 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
         } catch (Exception e) {
             log.warn("批量查询协议调度异常", e);
         }
+
+        // 车牌 LicenseNo 处理成code
+        dispatchRuleVos.getDispatchAttrVos().forEach(dispatchAttrVo -> {
+            log.info("[调度] dispatchId={}, companyId={}", dispatchAttrVo.getDispatchId(), dispatchAttrVo.getCompanyId());
+            List<ValidateDispatchRuleVo.Section> sections = dispatchAttrVo.getSections();
+            if (sections != null) {
+                sections.forEach(section -> {
+                    String sec = section.getSection();
+                    List<PtlAgreementDispatchRulesAttrLink> attrLinks = section.getAttrLinks();
+                    if (attrLinks != null) {
+                        attrLinks.forEach(attrLink -> {
+                            if ("LicenseNo".equals(attrLink.getAttrCode()) && attrLink.getMin().substring(0, 1).matches("[\\u4e00-\\u9fa5]")) {
+                                attrLink.setMin(ptlAreaLicenseService.convertLicense2AreaNumber(attrLink.getMin()));
+                            }
+                        });
+                    }
+                });
+            }
+        });
 //
         // 3. 校验调度数据
         HttpResult httpResult = costsRuleClient.validateDispatchRule(dispatchRuleVos);
@@ -739,7 +762,15 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
 
 
     @Override
-    public SchemeResultVo getSchemeResult(String companyId, String productId, String seatCount,String energyType,String vehicleType,String carnature) {
+    public SchemeResultVo getSchemeResult(SchemeRuleFilterVo schemeRuleFilterVo) {
+
+        String companyId = schemeRuleFilterVo.getCompanyId();
+        String productId = schemeRuleFilterVo.getProductId();
+        String seatCount = schemeRuleFilterVo.getCarInfo().getSeatCount();
+        String vehicleType = schemeRuleFilterVo.getCarInfo().getCarKindCode();
+        String energyType = schemeRuleFilterVo.getCarInfo().getEnergyTypeCode();
+        String carnature = schemeRuleFilterVo.getCarInfo().getCarNatureCode();
+
         log.info("根据保司Id和产品id查询协议信息。 companyId=[{}],productId=[{}]", companyId, productId);
         List<SchemeResultVo.SchemeVo> schemeInsuranceInfo = ptlSchemeMapper.getSchemeInsuranceInfo(companyId, productId);
         List<SchemeResultVo.SchemeVo> schemeDrivingInfo = ptlSchemeMapper.getSchemeDrivingInfo(companyId, productId);
@@ -776,6 +807,16 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
                         && scheme.getCarnature().contains(carnature))
                 .collect(Collectors.toList());
 
+        // 再次过滤方案  根据方案的规则条件
+        List<String> schemeIds = newSchemeList.stream().map(SchemeResultVo.SchemeVo::getId).collect(Collectors.toList());
+        List<PtlSchemeRulesAttrLink> ptlSchemeRulesAttrLinks = ptlSchemeRulesAttrLinkMapper.selectList(new LambdaQueryWrapper<PtlSchemeRulesAttrLink>().in(PtlSchemeRulesAttrLink::getSchemeId, schemeIds));
+        ValidateSchemeRuleVo validateSchemeRuleVo = new ValidateSchemeRuleVo();
+        validateSchemeRuleVo.builderQuoteVo(schemeRuleFilterVo, redissonClient);
+        validateSchemeRuleVo.setAttrLinks(ptlSchemeRulesAttrLinks);
+        validateSchemeRuleVo.getQuoteVo().getCarInfoVo().setLicenseNo(ptlAreaLicenseService.convertLicense2AreaNumber(validateSchemeRuleVo.getQuoteVo().getCarInfoVo().getLicenseNo().substring(0, 2)));
+        HttpResult<List<String>> esmInsCompanyHttpResult = costsRuleClient.validateSchemeRule(validateSchemeRuleVo);
+        List<String> insSchemeIds = esmInsCompanyHttpResult.getData();
+        newSchemeList.removeIf(x -> !insSchemeIds.contains(x.getId()));
         schemeInsuranceInfo = newSchemeList;
 
         // 创建一个 Map,Key: info.id, Value: List<Driving>

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

@@ -187,7 +187,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      */
     @Override
     public List<InsPlyIncome> getUnauditOrderList(List<String> orderNo, String orderStatus, String auditStatus, String systemCode) {
-        return baseMapper.getUnauditedOrderList(orderNo, orderStatus, auditStatus, systemCode);
+        return baseMapper.getUnauditedOrderList(orderNo, auditStatus, systemCode);
     }
 
     /**

+ 1 - 1
tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

@@ -195,7 +195,7 @@
                     #{id}
                 </foreach>
             </if>
-            AND io.order_status = #{orderStatus}
+            AND io.order_status in (5,0)
             <if test="auditStatus != null and auditStatus != ''">
                 AND ifa.audit_status = #{auditStatus}
             </if>