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

Merge remote-tracking branch 'origin/test' into test

Qchen 2 лет назад
Родитель
Сommit
e584af1c92
87 измененных файлов с 4517 добавлено и 77 удалено
  1. 6 0
      src/main/java/com/ydtech/config/SwaggerConfig.java
  2. 12 0
      src/main/java/com/ydtech/constants/enums/dict/insurance/EnergyType.java
  3. 18 0
      src/main/java/com/ydtech/modules/admin/dao/SysUserAccountHistoryMapper.java
  4. 18 0
      src/main/java/com/ydtech/modules/admin/dao/SysUserAccountMapper.java
  5. 18 0
      src/main/java/com/ydtech/modules/admin/dao/SysUserBankCardMapper.java
  6. 51 0
      src/main/java/com/ydtech/modules/admin/model/po/SysUserAccount.java
  7. 81 0
      src/main/java/com/ydtech/modules/admin/model/po/SysUserAccountHistory.java
  8. 50 0
      src/main/java/com/ydtech/modules/admin/model/po/SysUserBankCard.java
  9. 13 0
      src/main/java/com/ydtech/modules/admin/service/SysUserAccountHistoryService.java
  10. 13 0
      src/main/java/com/ydtech/modules/admin/service/SysUserAccountService.java
  11. 13 0
      src/main/java/com/ydtech/modules/admin/service/SysUserBankCardService.java
  12. 21 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserAccountHistoryServiceImpl.java
  13. 22 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserAccountServiceImpl.java
  14. 22 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserBankCardServiceImpl.java
  15. 0 1
      src/main/java/com/ydtech/modules/esm/service/EsmRetailService.java
  16. 341 0
      src/main/java/com/ydtech/modules/fee/dto/vo/RuleAttrMappingVo.java
  17. 66 0
      src/main/java/com/ydtech/modules/fee/service/FeeRuleSchemeNewService.java
  18. 698 0
      src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java
  19. 0 43
      src/main/java/com/ydtech/modules/ins/controller/InsPayApplyController.java
  20. 2 2
      src/main/java/com/ydtech/modules/ins/model/guoren/NonAutoInsResp.java
  21. 1 1
      src/main/java/com/ydtech/modules/ins/model/guoren/PremiumReq.java
  22. 6 0
      src/main/java/com/ydtech/modules/ins/model/vo/CarInfoVo.java
  23. 5 5
      src/main/java/com/ydtech/modules/ins/model/yc/ruote/Base.java
  24. 11 3
      src/main/java/com/ydtech/modules/ins/model/yc/ruote/CvrgListSY.java
  25. 2 1
      src/main/java/com/ydtech/modules/ins/model/yc/ruote/Ruote.java
  26. 9 0
      src/main/java/com/ydtech/modules/inv/controller/InvSourceController.java
  27. 20 0
      src/main/java/com/ydtech/modules/inv/model/po/InvSource.java
  28. 24 0
      src/main/java/com/ydtech/modules/inv/model/vo/InvSourceQueryVo.java
  29. 4 0
      src/main/java/com/ydtech/modules/inv/model/vo/ReceivableAndSettlementQueryVo.java
  30. 4 0
      src/main/java/com/ydtech/modules/inv/model/vo/ReceivableAndSettlementVo.java
  31. 13 6
      src/main/java/com/ydtech/modules/inv/service/impl/InvReceivableServiceImpl.java
  32. 16 1
      src/main/java/com/ydtech/modules/inv/service/impl/InvSourceServiceImpl.java
  33. 10 0
      src/main/java/com/ydtech/modules/order/aop/AuditVerification.java
  34. 65 0
      src/main/java/com/ydtech/modules/order/aop/aspect/AuditVerificationAspect.java
  35. 1 1
      src/main/java/com/ydtech/modules/order/entity/api/zhongmei/request/QuotedPriceRequest.java
  36. 0 2
      src/main/java/com/ydtech/modules/order/entity/vo/BaseQuoteInfoVo.java
  37. 4 6
      src/main/java/com/ydtech/modules/order/service/impl/DaJiaOrderServiceImpl.java
  38. 3 4
      src/main/java/com/ydtech/modules/order/service/impl/ZijinOrderApiServiceImpl.java
  39. 125 0
      src/main/java/com/ydtech/modules/protocols/controller/PtlNewAgreementController.java
  40. 19 0
      src/main/java/com/ydtech/modules/protocols/dao/InsFeeOrderNewMapper.java
  41. 19 0
      src/main/java/com/ydtech/modules/protocols/dao/PtlAgreementProductCostsAttrLinkMapper.java
  42. 19 0
      src/main/java/com/ydtech/modules/protocols/dao/PtlAgreementProductCostsExportMapper.java
  43. 19 0
      src/main/java/com/ydtech/modules/protocols/dao/PtlAgreementProductCostsNewMapper.java
  44. 19 0
      src/main/java/com/ydtech/modules/protocols/dao/PtlAgreementUndwrtRulesAttrLinkMapper.java
  45. 18 0
      src/main/java/com/ydtech/modules/protocols/dao/PtlAgreementUndwrtRulesAttrMapper.java
  46. 22 0
      src/main/java/com/ydtech/modules/protocols/dao/PtlAgreementUndwrtRulesDictLabalMapper.java
  47. 17 0
      src/main/java/com/ydtech/modules/protocols/dao/PtlAgreementUndwrtRulesDictMapper.java
  48. 19 0
      src/main/java/com/ydtech/modules/protocols/dao/PtlAgreementUndwrtRulesNewMapper.java
  49. 310 0
      src/main/java/com/ydtech/modules/protocols/entity/po/InsFeeOrderNew.java
  50. 59 0
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsAttrLink.java
  51. 161 0
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsExport.java
  52. 174 0
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsNew.java
  53. 66 0
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementUndwrtRulesAttr.java
  54. 58 0
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementUndwrtRulesAttrLink.java
  55. 41 0
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementUndwrtRulesDict.java
  56. 50 0
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementUndwrtRulesDictLabal.java
  57. 50 0
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementUndwrtRulesNew.java
  58. 140 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductCosts.java
  59. 167 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductCostsSave.java
  60. 9 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductQueryVo.java
  61. 40 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementUndwrtRules.java
  62. 9 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementUndwrtRulesQueryVo.java
  63. 41 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementUndwrtRulesSave.java
  64. 14 0
      src/main/java/com/ydtech/modules/protocols/service/InsFeeOrderNewService.java
  65. 15 0
      src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsAttrLinkService.java
  66. 20 0
      src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsExportService.java
  67. 60 0
      src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsNewService.java
  68. 14 0
      src/main/java/com/ydtech/modules/protocols/service/PtlAgreementUndwrtRulesAttrLinkService.java
  69. 40 0
      src/main/java/com/ydtech/modules/protocols/service/PtlAgreementUndwrtRulesAttrService.java
  70. 15 0
      src/main/java/com/ydtech/modules/protocols/service/PtlAgreementUndwrtRulesDictLabalService.java
  71. 22 0
      src/main/java/com/ydtech/modules/protocols/service/PtlAgreementUndwrtRulesDictService.java
  72. 45 0
      src/main/java/com/ydtech/modules/protocols/service/PtlAgreementUndwrtRulesNewService.java
  73. 22 0
      src/main/java/com/ydtech/modules/protocols/service/impl/InsFeeOrderNewServiceImpl.java
  74. 28 0
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsAttrLinkServiceImpl.java
  75. 36 0
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsExportServiceImpl.java
  76. 384 0
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewServiceImpl.java
  77. 21 0
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementUndwrtRulesAttrLinkServiceImpl.java
  78. 69 0
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementUndwrtRulesAttrServiceImpl.java
  79. 24 0
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementUndwrtRulesDictLabalServiceImpl.java
  80. 54 0
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementUndwrtRulesDictServiceImpl.java
  81. 222 0
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementUndwrtRulesNewServiceImpl.java
  82. 26 0
      src/main/resources/mapper/modules/admin/SysUserAccountHistoryMapper.xml
  83. 19 0
      src/main/resources/mapper/modules/admin/SysUserAccountMapper.xml
  84. 19 0
      src/main/resources/mapper/modules/admin/SysUserBankCardMapper.xml
  85. 5 0
      src/main/resources/mapper/modules/inv/InvReceivableMapper.xml
  86. 8 0
      src/main/resources/mapper/modules/inv/InvSourceMapper.xml
  87. 1 1
      src/main/resources/mapper/modules/order/InsOrdersMapper.xml

+ 6 - 0
src/main/java/com/ydtech/config/SwaggerConfig.java

@@ -80,6 +80,12 @@ public class SwaggerConfig {
         return buildDocket("protocol");
     }
 
+    @Bean(value = "protocolsApi")
+    @Order(value = 8)
+    public Docket protocolsApi() {
+        return buildDocket("protocols");
+    }
+
     @Bean(value = "demoApi")
     @Order(value = 9)
     public Docket baseDemoApi() {

+ 12 - 0
src/main/java/com/ydtech/constants/enums/dict/insurance/EnergyType.java

@@ -5,6 +5,9 @@ import com.ydtech.constants.enums.dict.IBaseEnum;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+
 /**
  * @description: 能源种类
  * @author: wenks
@@ -31,4 +34,13 @@ public enum EnergyType implements IBaseEnum {
     // 状态  0 启用  1 不启用
     private final Integer status;
 
+    // 新能源
+    private static final String[] ENERGY = new String[]{ET_1.getCode(), ET_2.getCode(), ET_3.getCode()};
+
+    // 新能源
+    public static boolean isNewEnergy(String code){
+        return Arrays.asList(ENERGY).contains(code);
+    }
+
+
 }

+ 18 - 0
src/main/java/com/ydtech/modules/admin/dao/SysUserAccountHistoryMapper.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.admin.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.admin.model.po.SysUserAccountHistory;
+
+/**
+* @author Administrator
+* @description 针对表【sys_user_account_history(用户账户表)】的数据库操作Mapper
+* @createDate 2024-03-05 11:47:38
+* @Entity generator.domain.SysUserAccountHistory
+*/
+public interface SysUserAccountHistoryMapper extends BaseMapper<SysUserAccountHistory> {
+
+}
+
+
+
+

+ 18 - 0
src/main/java/com/ydtech/modules/admin/dao/SysUserAccountMapper.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.admin.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.admin.model.po.SysUserAccount;
+
+/**
+* @author Administrator
+* @description 针对表【sys_user_account(用户账户表)】的数据库操作Mapper
+* @createDate 2024-03-05 11:47:38
+* @Entity generator.domain.SysUserAccount
+*/
+public interface SysUserAccountMapper extends BaseMapper<SysUserAccount> {
+
+}
+
+
+
+

+ 18 - 0
src/main/java/com/ydtech/modules/admin/dao/SysUserBankCardMapper.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.admin.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.admin.model.po.SysUserBankCard;
+
+/**
+* @author Administrator
+* @description 针对表【sys_user_bank_card(银行卡号)】的数据库操作Mapper
+* @createDate 2024-03-05 11:47:38
+* @Entity generator.domain.SysUserBankCard
+*/
+public interface SysUserBankCardMapper extends BaseMapper<SysUserBankCard> {
+
+}
+
+
+
+

+ 51 - 0
src/main/java/com/ydtech/modules/admin/model/po/SysUserAccount.java

@@ -0,0 +1,51 @@
+package com.ydtech.modules.admin.model.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 用户账户表
+ * @TableName sys_user_account
+ */
+@TableName(value ="sys_user_account")
+@Data
+public class SysUserAccount implements Serializable {
+    /**
+     * 用户id
+     */
+    @TableId(value = "user_id")
+    private String userId;
+
+    /**
+     * 手续费佣金
+     */
+    @TableField(value = "handling_fee")
+    private BigDecimal handlingFee;
+
+    /**
+     * 非跟单佣金
+     */
+    @TableField(value = "documentary")
+    private BigDecimal documentary;
+
+    /**
+     * 推广佣金
+     */
+    @TableField(value = "promotion")
+    private BigDecimal promotion;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private Date createTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 81 - 0
src/main/java/com/ydtech/modules/admin/model/po/SysUserAccountHistory.java

@@ -0,0 +1,81 @@
+package com.ydtech.modules.admin.model.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 用户账户表
+ * @TableName sys_user_account_history
+ */
+@TableName(value ="sys_user_account_history")
+@Data
+public class SysUserAccountHistory implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 金额
+     */
+    @TableField(value = "amount")
+    private BigDecimal amount;
+
+    /**
+     * 剩余金额
+     */
+    @TableField(value = "surplus_amount")
+    private BigDecimal surplusAmount;
+
+    /**
+     * 提现 / 收入 1 提现 2 收入
+     */
+    @TableField(value = "documentary")
+    private Integer documentary;
+
+    /**
+     * 金钱属性 1 手续费 2 非跟单 3 推广
+     */
+    @TableField(value = "property")
+    private Integer property;
+
+    /**
+     * 来源订单
+     */
+    @TableField(value = "suborder")
+    private String suborder;
+
+    /**
+     * 转出银行卡
+     */
+    @TableField(value = "from_bank_card")
+    private String fromBankCard;
+
+    /**
+     * 转入银行卡
+     */
+    @TableField(value = "to_bank_card")
+    private String toBankCard;
+
+    /**
+     * 提交人
+     */
+    @TableField(value = "user_id")
+    private String userId;
+
+    /**
+     * 提交时间
+     */
+    @TableField(value = "create_time")
+    private Date createTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 50 - 0
src/main/java/com/ydtech/modules/admin/model/po/SysUserBankCard.java

@@ -0,0 +1,50 @@
+package com.ydtech.modules.admin.model.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 银行卡号
+ * @TableName sys_user_bank_card
+ */
+@TableName(value ="sys_user_bank_card")
+@Data
+public class SysUserBankCard implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 银行卡号
+     */
+    @TableField(value = "bank_number")
+    private String bankNumber;
+
+    /**
+     * 开户行
+     */
+    @TableField(value = "bank_account")
+    private String bankAccount;
+
+    /**
+     * 提交人
+     */
+    @TableField(value = "user_id")
+    private String userId;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private Date createTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 13 - 0
src/main/java/com/ydtech/modules/admin/service/SysUserAccountHistoryService.java

@@ -0,0 +1,13 @@
+package com.ydtech.modules.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.admin.model.po.SysUserAccountHistory;
+
+/**
+* @author Administrator
+* @description 针对表【sys_user_account_history(用户账户表)】的数据库操作Service
+* @createDate 2024-03-05 11:47:38
+*/
+public interface SysUserAccountHistoryService extends IService<SysUserAccountHistory> {
+
+}

+ 13 - 0
src/main/java/com/ydtech/modules/admin/service/SysUserAccountService.java

@@ -0,0 +1,13 @@
+package com.ydtech.modules.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.admin.model.po.SysUserAccount;
+
+/**
+* @author Administrator
+* @description 针对表【sys_user_account(用户账户表)】的数据库操作Service
+* @createDate 2024-03-05 11:47:38
+*/
+public interface SysUserAccountService extends IService<SysUserAccount> {
+
+}

+ 13 - 0
src/main/java/com/ydtech/modules/admin/service/SysUserBankCardService.java

@@ -0,0 +1,13 @@
+package com.ydtech.modules.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.admin.model.po.SysUserBankCard;
+
+/**
+* @author Administrator
+* @description 针对表【sys_user_bank_card(银行卡号)】的数据库操作Service
+* @createDate 2024-03-05 11:47:38
+*/
+public interface SysUserBankCardService extends IService<SysUserBankCard> {
+
+}

+ 21 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysUserAccountHistoryServiceImpl.java

@@ -0,0 +1,21 @@
+package com.ydtech.modules.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.admin.dao.SysUserAccountHistoryMapper;
+import com.ydtech.modules.admin.model.po.SysUserAccountHistory;
+import com.ydtech.modules.admin.service.SysUserAccountHistoryService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author Administrator
+ * @description 针对表【sys_user_account_history(用户账户表)】的数据库操作Service实现
+ * @createDate 2024-03-05 11:52:30
+ */
+@Service
+public class SysUserAccountHistoryServiceImpl extends ServiceImpl<SysUserAccountHistoryMapper, SysUserAccountHistory> implements SysUserAccountHistoryService {
+
+}
+
+
+
+

+ 22 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysUserAccountServiceImpl.java

@@ -0,0 +1,22 @@
+package com.ydtech.modules.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.admin.dao.SysUserAccountMapper;
+import com.ydtech.modules.admin.model.po.SysUserAccount;
+import com.ydtech.modules.admin.service.SysUserAccountService;
+import org.springframework.stereotype.Service;
+
+/**
+* @author Administrator
+* @description 针对表【sys_user_account(用户账户表)】的数据库操作Service实现
+* @createDate 2024-03-05 11:52:30
+*/
+@Service
+public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper, SysUserAccount>
+    implements SysUserAccountService {
+
+}
+
+
+
+

+ 22 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysUserBankCardServiceImpl.java

@@ -0,0 +1,22 @@
+package com.ydtech.modules.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.admin.dao.SysUserBankCardMapper;
+import com.ydtech.modules.admin.model.po.SysUserBankCard;
+import com.ydtech.modules.admin.service.SysUserBankCardService;
+import org.springframework.stereotype.Service;
+
+/**
+* @author Administrator
+* @description 针对表【sys_user_bank_card(银行卡号)】的数据库操作Service实现
+* @createDate 2024-03-05 11:52:30
+*/
+@Service
+public class SysUserBankCardServiceImpl extends ServiceImpl<SysUserBankCardMapper, SysUserBankCard>
+    implements SysUserBankCardService {
+
+}
+
+
+
+

+ 0 - 1
src/main/java/com/ydtech/modules/esm/service/EsmRetailService.java

@@ -4,7 +4,6 @@ package com.ydtech.modules.esm.service;
 import com.ydtech.modules.esm.dao.EsmRetailDao;
 
 public interface EsmRetailService extends EsmRetailDao {
-
 }
 
 

+ 341 - 0
src/main/java/com/ydtech/modules/fee/dto/vo/RuleAttrMappingVo.java

@@ -0,0 +1,341 @@
+package com.ydtech.modules.fee.dto.vo;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.ydtech.constants.enums.InsurKind;
+import com.ydtech.modules.ins.model.vo.*;
+import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Pattern;
+
+/**
+*@author: tz
+*@description: 规则属性映射费用因子Vo
+*@create: 2024-2-28 08:35:57
+*/
+@Data
+public class RuleAttrMappingVo {
+    @ApiModelProperty(value = "因子属性Code")
+    private String attrCode;
+
+    @ApiModelProperty(value = "值")
+    private String value;
+
+    public RuleAttrMappingVo(String attrCode, String value) {
+        this.attrCode = attrCode;
+        this.value = value;
+    }
+
+    public static List<RuleAttrMappingVo> getRuleAttrMappingVoList(BaseQuoteInfoVo baseQuoteInfoVo, QuoteRespVo quoteRespVo) {
+        List<RuleAttrMappingVo> ruleAttrMappingVoList = new ArrayList<>();
+        CarInfoVo carInfo = baseQuoteInfoVo.getCarInfo();
+        //车牌号
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("LicenseNo", carInfo.getLicenseNo()));
+        //品牌型号
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("BrandandModel", carInfo.getCarBrand()));
+        //座位数
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NumberofSeats", carInfo.getSeatCount()));
+        //新车购置价
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NumberofSeats", carInfo.getPurchasePrice()));
+        //车辆用途
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleUsage", carInfo.getVehicleclass()));
+        //车辆种类
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleType", carInfo.getCimodelclass()));
+        //核定载质量
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("AuthorizedLoadWeight", carInfo.getLimitLoad()));
+        //整备质量
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CurbWeight", carInfo.getVehicleweight()));
+        //能源类型
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("EnergyType", carInfo.getEnergyType()));
+        //注册日期
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("RegistrationDate", carInfo.getRegisterDate()));
+        //是否过户
+//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("WhetherTransferred", carInfo.getTransferFlag()));
+        //是否新车
+//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("WhetherNewCar", carInfo.getNoLicenseFlag()));
+        //发证日期
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("DateofIssuance", carInfo.getIssueDate()));
+        //车长
+//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleLength", carInfo.getCarLength()));
+        //转续保
+//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("RenewalofInsurance", carInfo.getRenewalFlag()));
+
+        CustomerInfoVo ownerInfo = baseQuoteInfoVo.getOwnerInfo();
+        //车主 证件号码(前6位)
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersIDNumber", ownerInfo.getIdentifyNumber().substring(0, 6)));
+        //车主 年龄
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersAge", ownerInfo.getAge()));
+        //车主 性别
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersSex", ownerInfo.getGender()));
+        //车主 姓名
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnerName", ownerInfo.getName()));
+
+        CustomerInfoVo policyHolderInfo = baseQuoteInfoVo.getPolicyHolderInfo();
+        //投保人 证件号码(前6位)
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("PolicyholdersIDNumber", policyHolderInfo.getIdentifyNumber().substring(0, 6)));
+        //投保人 年龄
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("PolicyholdersAge", policyHolderInfo.getAge()));
+        //投保人 性别
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("PolicyholdersSex", policyHolderInfo.getGender()));
+
+        CustomerInfoVo insuredPersonInfo = baseQuoteInfoVo.getInsuredPersonInfo();
+        //被保人 证件号码(前6位)
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredIDNumber", insuredPersonInfo.getIdentifyNumber().substring(0, 6)));
+        //被保人 年龄
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredAge", insuredPersonInfo.getAge()));
+        //被保人 性别
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredSex", insuredPersonInfo.getGender()));
+
+        //险别信息
+        List<KindInfoVo> kindInfoVos = baseQuoteInfoVo.getKindList();
+        kindInfoVos.forEach(kindInfoVo -> {
+            //机动车损失险
+            if(InsurKind.A.equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("MotorVehicleDamageInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //第三者责任险
+            if(InsurKind.B.equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("ThirdPartyLiabilityInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //司机责任险
+            if(InsurKind.D3.equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("DriverLiabilityInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //乘客责任险
+            if(InsurKind.D4.equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("PassengerLiabilityInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //车身划痕险
+            if(InsurKind.L.equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarScratchInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //绝对免赔率特约险(车损)
+            if(InsurKind.MJ1.equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleDamageAbsoluteDeductibleSpecialInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //绝对免赔率特约险(三者)
+            if(InsurKind.MJ2.equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("ThirdAbsoluteDeductibleSpecialInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //绝对免赔率特约险(司机)
+            if(InsurKind.MJ3.equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("DriverAbsoluteDeductibleSpecialInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //绝对免赔率特约险(乘客)
+            if(InsurKind.MJ4.equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("PassengerAbsoluteDeductibleSpecialInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //附加医保-三者
+            if(InsurKind.SY_FJ_YBW1.equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("ThirdPartyAdditionalMedicalInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //附加医保-座位险(乘客)
+            if(InsurKind.SY_FJ_YBW2.equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("PassengerAdditionalMedicalInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //附加医保-座位险(司机)
+            if(InsurKind.SY_FJ_YBW3.equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("DriverAdditionalMedicalInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //法定节假日限额翻倍险
+            if(InsurKind.BD.equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("LegalHolidayLimitDoublingInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //道路救援服务特约条款
+            if(InsurKind.TY1.equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("RoadsideAssistanceServiceSpecialClause", String.valueOf(kindInfoVo.getServiceTimes())));
+            //车辆安全检测特约条款
+            if(InsurKind.TY2.equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleSafetyInspectionSpecialClause", String.valueOf(kindInfoVo.getServiceTimes())));
+            //代为驾驶服务特约条款
+            if(InsurKind.TY3.equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("SubstituteDrivingServiceSpecialClause", String.valueOf(kindInfoVo.getServiceTimes())));
+            //代为送检服务特约条款
+            if(InsurKind.TY4.equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("SubstituteInspectionServiceSpecialClause", String.valueOf(kindInfoVo.getServiceTimes())));
+        });
+        //交强保费
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CompulsoryTrafficAccidentLiabilityInsurancePremium", String.valueOf(quoteRespVo.getJqPremium())));
+        //车船税
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleandVesselTax", String.valueOf(quoteRespVo.getTaxAmount())));
+        //非车险
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NonMotorInsurance", String.valueOf(quoteRespVo.getJyPremium())));
+        //总折扣率
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("TotalDiscountRate", String.valueOf(quoteRespVo.getTotalAdjustRate())));
+        //交强折扣
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CompulsoryInsuranceDiscount", String.valueOf(quoteRespVo.getJqAdjustRate())));
+        //商业折扣
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CommercialDiscount", String.valueOf(quoteRespVo.getSyAdjustRate())));
+        //数值型总评分
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NumericalOverallRating", String.valueOf(quoteRespVo.getILogPreUdwMess())));
+        //交强评分
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CompulsoryInsuranceRating", String.valueOf(quoteRespVo.getJqScore())));
+        //商业评分
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CommercialRating", String.valueOf(quoteRespVo.getSyScore())));
+        //交强赔付率
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CompulsoryInsurancePayoutRate", String.valueOf(quoteRespVo.getJqLossRation())));
+        //商业赔付率
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CommercialPayoutRate", String.valueOf(quoteRespVo.getSyLossRation())));
+        //总赔付率
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("TotalPayoutRate", String.valueOf(quoteRespVo.getLossRation())));
+        //真假单交
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("AuthenticAndFakeOrdersExchange", quoteRespVo.getIszdj()));
+        //出险次数
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NumberOfClaims", quoteRespVo.getAccidentInfoStr()));
+        //太平的分区
+//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("PeacefulDistrict", quoteRespVo.getExtendInfo()));
+        return ruleAttrMappingVoList;
+    }
+
+
+    public static List<RuleAttrMappingVo> getRuleAttrMappingVoList(InsAreaCompany insAreaCompany,InsOrders insOrders) {
+        List<RuleAttrMappingVo> ruleAttrMappingVoList = new ArrayList<>();
+        CarInfoVo carInfo = insOrders.getCarinfo().toJavaObject(CarInfoVo.class);
+        //车牌号
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("LicenseNo", carInfo.getLicenseNo()));
+        //品牌型号
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("BrandandModel", carInfo.getCarBrand()));
+        //座位数
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("PassengerCarSeatingCapacity", carInfo.getSeatCount()));
+        //新车购置价
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("PurchasePriceofNewVehicle", carInfo.getPurchasePrice()));
+        //车辆用途
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleUsage", carInfo.getVehicleclass()));
+        //车辆种类
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleType", carInfo.getCimodelclass()));
+        //核定载质量
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("AuthorizedLoadWeight", carInfo.getLimitLoad()));
+        //整备质量
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CurbWeight", carInfo.getVehicleweight()));
+        //能源类型
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NewEnergy", carInfo.getEnergyType()));
+        //注册日期
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("RegistrationDate", carInfo.getRegisterDate()));
+        //是否过户
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("TransferVehicle", carInfo.isTransferFlag() ? "1" : "0"));
+        //是否新车
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NewAndOldCars", carInfo.isNoLicenseFlag() ? "1" : "0"));
+        //发证日期
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("DateofIssuance", carInfo.getIssueDate()));
+        //车长
+//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleLength", carInfo.getCarLength()));
+        //转续保
+//       ruleAttrMappingVoList.add(new RuleAttrMappingVo("RenewalofInsurance", carInfo.isTransferFlagBi() ? "1"));
+
+
+        CustomerInfoVo ownerInfo = insOrders.getOwnerinfo().toJavaObject(CustomerInfoVo.class);
+        //车主 证件号码(前6位)
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersIDNumber", ownerInfo.getIdentifyNumber().substring(0, 6)));
+        //车主 年龄
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersAge", ownerInfo.getAge()));
+        //车主 性别
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersSex", ownerInfo.getGender()));
+        //车主 姓名
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnerName", ownerInfo.getName()));
+
+        CustomerInfoVo policyHolderInfo = insOrders.getApplyinfo().toJavaObject(CustomerInfoVo.class);
+        //投保人 证件号码(前6位)
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("PolicyholdersIDNumber", policyHolderInfo.getIdentifyNumber().substring(0, 6)));
+        //投保人 年龄
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("PolicyholdersAge", policyHolderInfo.getAge()));
+        //投保人 性别
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("PolicyholdersSex", policyHolderInfo.getGender()));
+
+        CustomerInfoVo insuredPersonInfo = insOrders.getInsureinfo().toJavaObject(CustomerInfoVo.class);
+        //被保人 证件号码(前6位)
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredIDNumber", insuredPersonInfo.getIdentifyNumber().substring(0, 6)));
+        //被保人 年龄
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredAge", insuredPersonInfo.getAge()));
+        //被保人 性别
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredSex", insuredPersonInfo.getGender()));
+
+        List<KindInfoVo> kindInfoVos = insOrders.getKing().toJavaList(KindInfoVo.class);
+        //险别信息
+        kindInfoVos.forEach(kindInfoVo -> {
+            //机动车损失险
+            if(InsurKind.A.getCode().equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("MotorVehicleDamageInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //第三者责任险
+            if(InsurKind.B.getCode().equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("ThirdPartyLiabilityInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //司机责任险
+            if(InsurKind.D3.getCode().equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("DriverLiabilityInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //乘客责任险
+            if(InsurKind.D4.getCode().equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("PassengerLiabilityInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //车身划痕险
+            if(InsurKind.L.getCode().equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarScratchInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //绝对免赔率特约险(车损)
+            if(InsurKind.MJ1.getCode().equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleDamageAbsoluteDeductibleSpecialInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //绝对免赔率特约险(三者)
+            if(InsurKind.MJ2.getCode().equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("ThirdAbsoluteDeductibleSpecialInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //绝对免赔率特约险(司机)
+            if(InsurKind.MJ3.getCode().equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("DriverAbsoluteDeductibleSpecialInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //绝对免赔率特约险(乘客)
+            if(InsurKind.MJ4.getCode().equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("PassengerAbsoluteDeductibleSpecialInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //附加医保-三者
+            if(InsurKind.SY_FJ_YBW1.getCode().equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("ThirdPartyAdditionalMedicalInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //附加医保-座位险(乘客)
+            if(InsurKind.SY_FJ_YBW2.getCode().equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("PassengerAdditionalMedicalInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //附加医保-座位险(司机)
+            if(InsurKind.SY_FJ_YBW3.getCode().equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("DriverAdditionalMedicalInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //法定节假日限额翻倍险
+            if(InsurKind.BD.getCode().equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("LegalHolidayLimitDoublingInsurance", String.valueOf(kindInfoVo.getAmount())));
+            //道路救援服务特约条款
+            if(InsurKind.TY1.getCode().equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("RoadsideAssistanceServiceSpecialClause", String.valueOf(kindInfoVo.getServiceTimes())));
+            //车辆安全检测特约条款
+            if(InsurKind.TY2.getCode().equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleSafetyInspectionSpecialClause", String.valueOf(kindInfoVo.getServiceTimes())));
+            //代为驾驶服务特约条款
+            if(InsurKind.TY3.getCode().equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("SubstituteDrivingServiceSpecialClause", String.valueOf(kindInfoVo.getServiceTimes())));
+            //代为送检服务特约条款
+            if(InsurKind.TY4.getCode().equals(kindInfoVo.getKindCode()))
+                ruleAttrMappingVoList.add(new RuleAttrMappingVo("SubstituteInspectionServiceSpecialClause", String.valueOf(kindInfoVo.getServiceTimes())));
+        });
+
+        //交强保费
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CompulsoryTrafficAccidentLiabilityInsurancePremium", String.valueOf(insAreaCompany.getJqpremium())));
+        //车船税
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleandVesselTax", String.valueOf(insAreaCompany.getTaxamount())));
+        //非车险
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NonMotorInsurance", String.valueOf(insAreaCompany.getJypremium())));
+        //总折扣率
+//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("TotalDiscountRate", String.valueOf(insAreaCompany.())));
+        //交强折扣
+//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CompulsoryInsuranceDiscount", String.valueOf(quoteRespVo.getJqAdjustRate())));
+        //商业折扣
+//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CommercialDiscount", String.valueOf(quoteRespVo.getSyAdjustRate())));
+        //数值型总评分
+        Pattern pattern = Pattern.compile("[0-9]*");
+        if(pattern.matcher(insAreaCompany.getScore()).matches())
+        {
+            //数值型评分
+            ruleAttrMappingVoList.add(new RuleAttrMappingVo("NumericalOverallRating", String.valueOf(insAreaCompany.getScore())));
+        }else{
+            //字母型评分
+            ruleAttrMappingVoList.add(new RuleAttrMappingVo("CharacterBasedRating", String.valueOf(insAreaCompany.getScore())));
+        }
+        //交强评分
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CompulsoryInsuranceRating", String.valueOf(insAreaCompany.getJqScore())));
+        //商业评分
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CommercialRating", String.valueOf(insAreaCompany.getSyScore())));
+        //交强赔付率
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CompulsoryInsurancePayoutRate", String.valueOf(insAreaCompany.getJqLossRation())));
+        //商业赔付率
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CommercialPayoutRate", String.valueOf(insAreaCompany.getSyLossRation())));
+        //总赔付率
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("TotalPayoutRate", String.valueOf(insAreaCompany.getLossRation())));
+        //真假单交
+//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("AuthenticAndFakeOrdersExchange", insAreaCompany.getIszdj()));
+        //出险次数
+//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NumberOfClaims", insAreaCompany.getAccidentInfoStr()));
+        //太平的分区
+//        ruleAttrMappingVoList.add(new RuleAttrMappingVo("PeacefulDistrict", quoteRespVo.getExtendInfo()));
+        return ruleAttrMappingVoList;
+    }
+}

+ 66 - 0
src/main/java/com/ydtech/modules/fee/service/FeeRuleSchemeNewService.java

@@ -0,0 +1,66 @@
+package com.ydtech.modules.fee.service;
+
+
+import com.ydtech.modules.ins.model.vo.QuoteRespVo;
+import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
+import com.ydtech.modules.order.entity.vo.QueryOrderFeeResultVo;
+import com.ydtech.modules.order.entity.vo.QueryOrderFeeVo;
+
+import java.util.List;
+
+/**
+ * 该类中只要包含费用的一些相关接口
+ * 跟单费用的获取、跟单费用的拆分等
+ */
+public interface FeeRuleSchemeNewService {
+
+    /**
+     * 总处理费用匹配方法
+     * @param quoteInfoVo
+     * @param quoteRespVo
+     * @param agreementId
+     * @param businessNo
+     */
+//    public void dealFeeOrderInfo(BaseQuoteInfoVo quoteInfoVo, QuoteRespVo quoteRespVo, String agreementId,String businessNo);
+
+    /**
+     * 查询费用明细
+     * @param companyId
+     * @return
+     */
+    public QueryOrderFeeVo queryFeeOrderInfo(String companyId);
+
+    public List<QueryOrderFeeResultVo> convertOrderFeeVoData(QueryOrderFeeVo orderFeeVo);
+
+    /**
+     * 比较和更新总费用比例
+     * @param insOrderNo
+     * @param jqCostsProportionStr
+     * @param syCostsProportionStr
+     */
+    void compareAndUpdateFeeOrderInfo(String insOrderNo ,String jqCostsProportionStr,String syCostsProportionStr,String dealUser);
+
+
+    /**
+     * 查找匹配的费用因子
+     * @param insAreaCompany
+     * @param insOrders
+     */
+    void verificationCostFactor(InsAreaCompany insAreaCompany, InsOrders insOrders);
+
+    /**
+     * 查找匹配承保规则的因子
+     * @param insAreaCompany
+     * @param insOrders
+     */
+    void verificationRuleFactor(InsAreaCompany insAreaCompany, InsOrders insOrders);
+
+
+    /**
+     * 计算费用因子
+     * @param costsId
+     */
+    void calcCosts(String costsId,InsAreaCompany insAreaCOmpany);
+}

+ 698 - 0
src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java

@@ -0,0 +1,698 @@
+package com.ydtech.modules.fee.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ydtech.constants.enums.dict.insurance.EnergyType;
+import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.SysDept;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.service.SysDeptService;
+import com.ydtech.modules.admin.service.SysUserService;
+import com.ydtech.modules.esm.model.EsmRetail;
+import com.ydtech.modules.esm.service.EsmRetailService;
+import com.ydtech.modules.fee.dto.vo.RuleAttrMappingVo;
+import com.ydtech.modules.fee.service.FeeRuleSchemeNewService;
+import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.vo.*;
+import com.ydtech.modules.order.service.InsOrdersService;
+import com.ydtech.modules.protocol.service.*;
+import com.ydtech.modules.protocols.entity.po.*;
+import com.ydtech.modules.protocols.entity.vo.AgreementProductCosts;
+import com.ydtech.modules.protocols.service.*;
+import com.ydtech.utils.idgen.IdGenerate;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/**
+*@author: tz
+*@description: 费用接口中相关功能的实现类
+*@create: 2024-3-1 11:45:33
+*/
+@Service
+public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
+    @Resource
+    private InsOrdersService insOrdersService;
+
+    @Resource
+    private PtlAgreementProductCostsNewService ptlAgreementProductCostsNewService;
+
+    @Resource
+    private PtlAgreementUndwrtRulesAttrService ptlAgreementUndwrtRulesAttrService;
+
+    @Resource
+    private PtlAgreementProductCostsExportService ptlAgreementProductCostsExportService;
+
+    @Resource
+    private PtlAgreementProductCostsAttrLinkService ptlAgreementProductCostsAttrLinkService;
+
+    @Resource
+    private PtlAgreementUndwrtRulesNewService ptlAgreementUndwrtRulesNewService;
+    @Resource
+    private SysUserService sysUserService;
+
+    @Resource
+    private EsmRetailService esmRetailService;
+
+    @Resource
+    private InsFeeOrderNewService insFeeOrderNewService;
+
+
+    @Override
+    public QueryOrderFeeVo queryFeeOrderInfo(String companyId) {
+        return null;
+    }
+
+    @Override
+    public List<QueryOrderFeeResultVo> convertOrderFeeVoData(QueryOrderFeeVo orderFeeVo) {
+        return null;
+    }
+
+    @Override
+    public void compareAndUpdateFeeOrderInfo(String insOrderNo, String jqCostsProportionStr, String syCostsProportionStr, String dealUser) {
+
+    }
+
+    /**
+     * 校验费用因子
+     */
+    @Override
+    public void verificationCostFactor(InsAreaCompany insAreaCompany,InsOrders insOrders){
+
+        List<AgreementProductCosts> agreementProductCosts = ptlAgreementProductCostsNewService.costsGetList(insAreaCompany.getAgreementId(),insOrders.getProductid());
+        if(agreementProductCosts == null || agreementProductCosts.size() == 0){
+            throw new SystemException("协议费用因子为空");
+        }
+        //按优先级进行排序
+        Collections.sort(agreementProductCosts, Comparator.comparingInt(AgreementProductCosts::getPriorityLevel).reversed());
+        //遍历费用因子
+        String costsId = verificationCosts(agreementProductCosts, insAreaCompany,insOrders);
+        calcCosts(costsId,insAreaCompany);
+    }
+
+    /**
+     * 校验承保规则
+     * @param insAreaCompany
+     * @param insOrders
+     */
+    @Override
+    public void verificationRuleFactor(InsAreaCompany insAreaCompany, InsOrders insOrders) {
+
+
+        List<PtlAgreementUndwrtRulesNew> ptlAgreementUndwrtRules = ptlAgreementUndwrtRulesNewService.rulesList(insAreaCompany.getAgreementId());
+        verificationRules(ptlAgreementUndwrtRules, insAreaCompany,insOrders);
+    }
+
+    /**
+     * 计算费用
+     * @param costsId
+     * @param insAreaCompany
+     */
+    @Override
+    public void calcCosts(String costsId,InsAreaCompany insAreaCompany) {
+        //税比例 固定1.06
+        BigDecimal taxRadio = new BigDecimal("1.06");
+        //查找入口与出口费用比例
+        //入口配置
+        PtlAgreementProductCostsNew ptlAgreementProductCostsNew = ptlAgreementProductCostsNewService.getById(costsId);
+        //出口配置
+        PtlAgreementProductCostsExport ptlAgreementProductCostsExport = ptlAgreementProductCostsExportService.getOne(new LambdaQueryWrapper<PtlAgreementProductCostsExport>().eq(PtlAgreementProductCostsExport::getCostsId, costsId));
+        InsFeeOrderNew insFeeOrderNew = new InsFeeOrderNew();
+        insFeeOrderNew.setId(IdGenerate.nextId());
+        insFeeOrderNew.setAgreementId(ptlAgreementProductCostsNew.getAgreementId());
+        insFeeOrderNew.setInsOrderNo(insAreaCompany.getId());
+        insFeeOrderNew.setJqPremium(insAreaCompany.getJqpremium());
+        insFeeOrderNew.setSyPremium(insAreaCompany.getSypremium());
+        insFeeOrderNew.setNoPremium(insAreaCompany.getJypremium());
+        //不含税
+        insFeeOrderNew.setJqNoTaxPremium(insAreaCompany.getJqpremium().divide(taxRadio,2));
+        insFeeOrderNew.setSyNoTaxPremium(insAreaCompany.getSypremium().divide(taxRadio,2));
+        insFeeOrderNew.setNoNoTaxPremium(insAreaCompany.getJypremium().divide(taxRadio,2));
+        //计算入口费用
+
+        //交强险总费用比例 + 加投比例
+        insFeeOrderNew.setJqCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getJqCostsProportion()));
+        BigDecimal jqCostsProportion = new BigDecimal(ptlAgreementProductCostsNew.getJqCostsProportion());
+        jqCostsProportion = isContainNonCar(insAreaCompany) ?
+                jqCostsProportion.add(new BigDecimal(ptlAgreementProductCostsNew.getJqCostsProportionAddInvsestment())).divide(new BigDecimal("100")) :
+                jqCostsProportion.divide(new BigDecimal("100"));
+        insFeeOrderNew.setJqCostsPremiums(insFeeOrderNew.getJqNoTaxPremium().multiply(jqCostsProportion));
+
+        //商业险总费用比例 + 加投比例
+        insFeeOrderNew.setSyCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getSyCostsProportion()));
+        BigDecimal syCostsProportion = new BigDecimal(ptlAgreementProductCostsNew.getSyCostsProportion());
+        syCostsProportion = isContainNonCar(insAreaCompany) ?
+                syCostsProportion.add(new BigDecimal(ptlAgreementProductCostsNew.getSyCostsProportionAddInvsestment())).divide(new BigDecimal("100")) :
+                syCostsProportion.divide(new BigDecimal("100"));
+        insFeeOrderNew.setSyCostsPremiums(insFeeOrderNew.getSyNoTaxPremium().multiply(syCostsProportion));
+
+        //非车险总费用比例
+        insFeeOrderNew.setNoCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getNoCostsProportion()));
+        insFeeOrderNew.setNoCostsPremiums(insFeeOrderNew.getNoNoTaxPremium().multiply
+                (new BigDecimal(ptlAgreementProductCostsNew.getNoCostsProportion()).divide(new BigDecimal("100"))));
+
+
+
+        //交强监管费比例
+        insFeeOrderNew.setJqSuperviseCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getJqCarCostsProportion()));
+        insFeeOrderNew.setJqSuperviseCostsPremiums(insFeeOrderNew.getJqNoTaxPremium().multiply(
+                new BigDecimal(ptlAgreementProductCostsNew.getJqCarCostsProportion()).divide(new BigDecimal("100"))
+        ));
+
+        //商业监管费比例
+        insFeeOrderNew.setSySuperviseCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getSyCarCostsProportion()));
+        insFeeOrderNew.setSySuperviseCostsPremiums(insFeeOrderNew.getSyNoTaxPremium().multiply(
+                new BigDecimal(ptlAgreementProductCostsNew.getSyCarCostsProportion()).divide(new BigDecimal("100"))
+        ));
+
+        //非车监管费比例
+        insFeeOrderNew.setNoSuperviseCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getNoCarCostsProportion()));
+        insFeeOrderNew.setNoSuperviseCostsPremiums(insFeeOrderNew.getNoNoTaxPremium().multiply(
+                new BigDecimal(ptlAgreementProductCostsNew.getNoCarCostsProportion()).divide(new BigDecimal("100"))
+        ));
+
+
+        //交强其他费用比例
+        insFeeOrderNew.setJqOtherCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getJqCarOtherCostsProportion()));
+        insFeeOrderNew.setJqOtherCostsPremiums(insFeeOrderNew.getJqNoTaxPremium().multiply(
+                new BigDecimal(ptlAgreementProductCostsNew.getJqCarOtherCostsProportion()).divide(new BigDecimal("100"))
+        ));
+
+        //商业其他费用比例
+        insFeeOrderNew.setSyOtherCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getSyCarOtherCostsProportion()));
+        insFeeOrderNew.setSyOtherCostsPremiums(insFeeOrderNew.getSyNoTaxPremium().multiply(
+                new BigDecimal(ptlAgreementProductCostsNew.getSyCarOtherCostsProportion()).divide(new BigDecimal("100"))
+        ));
+
+        //非车其他费用比例
+        insFeeOrderNew.setNoOtherCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getNoCarOtherCostsProportion()));
+        insFeeOrderNew.setNoOtherCostsPremiums(insFeeOrderNew.getNoNoTaxPremium().multiply(
+                new BigDecimal(ptlAgreementProductCostsNew.getNoCarOtherCostsProportion()).divide(new BigDecimal("100"))
+        ));
+
+
+        //交强加投比例
+        insFeeOrderNew.setJqInvestmentCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getJqCostsProportionAddInvsestment()));
+        insFeeOrderNew.setJqInvestmentCostsPremiums(insFeeOrderNew.getJqNoTaxPremium().multiply(
+                new BigDecimal(ptlAgreementProductCostsNew.getJqCostsProportionAddInvsestment()).divide(new BigDecimal("100"))
+        ));
+
+        //商业加投比例
+        insFeeOrderNew.setSyInvestmentCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getSyCostsProportionAddInvsestment()));
+        insFeeOrderNew.setSyInvestmentCostsPremiums(insFeeOrderNew.getSyNoTaxPremium().multiply(
+                new BigDecimal(ptlAgreementProductCostsNew.getSyCostsProportionAddInvsestment()).divide(new BigDecimal("100"))
+        ));
+
+
+        //设置出口费用
+        //交强出口比例
+        insFeeOrderNew.setJqDeptProportionLevel1(new BigDecimal(ptlAgreementProductCostsExport.getJqExportRadioLevel1()));
+        insFeeOrderNew.setJqDeptPremiumsLevel1(
+                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel1()).divide(new BigDecimal("100"))
+        );
+
+        insFeeOrderNew.setJqDeptProportionLevel2(new BigDecimal(ptlAgreementProductCostsExport.getJqExportRadioLevel2()));
+        insFeeOrderNew.setJqDeptPremiumsLevel2(
+                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel2()).divide(new BigDecimal("100"))
+        );
+
+        insFeeOrderNew.setJqDeptProportionLevel3(new BigDecimal(ptlAgreementProductCostsExport.getJqExportRadioLevel3()));
+        insFeeOrderNew.setJqDeptPremiumsLevel3(
+                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel3()).divide(new BigDecimal("100"))
+        );
+
+        insFeeOrderNew.setJqDeptProportionLevel4(new BigDecimal(ptlAgreementProductCostsExport.getJqExportRadioLevel4()));
+        insFeeOrderNew.setJqDeptPremiumsLevel4(
+                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel4()).divide(new BigDecimal("100"))
+        );
+
+        insFeeOrderNew.setJqDeptProportionLevel5(new BigDecimal(ptlAgreementProductCostsExport.getJqExportRadioLevel5()));
+        insFeeOrderNew.setJqDeptPremiumsLevel5(
+                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel5()).divide(new BigDecimal("100"))
+        );
+
+        insFeeOrderNew.setJqExportInvestmentProportion(new BigDecimal(ptlAgreementProductCostsExport.getJqExportInvestmentRadio()));
+        insFeeOrderNew.setJqExportInvestmentPremiums(
+                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqExportInvestmentProportion()).divide(new BigDecimal("100"))
+        );
+
+        //商业出口比例
+        insFeeOrderNew.setSyDeptProportionLevel1(new BigDecimal(ptlAgreementProductCostsExport.getSyExportRadioLevel1()));
+        insFeeOrderNew.setSyDeptPremiumsLevel1(
+                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyDeptProportionLevel1()).divide(new BigDecimal("100"))
+        );
+
+        insFeeOrderNew.setSyDeptProportionLevel2(new BigDecimal(ptlAgreementProductCostsExport.getSyExportRadioLevel2()));
+        insFeeOrderNew.setSyDeptPremiumsLevel2(
+                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyDeptProportionLevel2()).divide(new BigDecimal("100"))
+        );
+
+        insFeeOrderNew.setSyDeptProportionLevel3(new BigDecimal(ptlAgreementProductCostsExport.getSyExportRadioLevel3()));
+        insFeeOrderNew.setSyDeptPremiumsLevel3(
+                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyDeptProportionLevel3()).divide(new BigDecimal("100"))
+        );
+
+
+        insFeeOrderNew.setSyDeptProportionLevel4(new BigDecimal(ptlAgreementProductCostsExport.getSyExportRadioLevel4()));
+        insFeeOrderNew.setSyDeptPremiumsLevel4(
+                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyDeptProportionLevel4()).divide(new BigDecimal("100"))
+        );
+
+        insFeeOrderNew.setSyDeptProportionLevel5(new BigDecimal(ptlAgreementProductCostsExport.getSyExportRadioLevel5()));
+        insFeeOrderNew.setSyDeptPremiumsLevel5(
+                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyDeptProportionLevel5()).divide(new BigDecimal("100"))
+        );
+
+        insFeeOrderNew.setSyExportInvestmentProportion(new BigDecimal(ptlAgreementProductCostsExport.getSyExportInvestmentRadio()));
+        insFeeOrderNew.setSyExportInvestmentPremiums(
+                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyExportInvestmentProportion()).divide(new BigDecimal("100"))
+        );
+
+
+        //非车出口比例
+        insFeeOrderNew.setNoDeptProportionLevel1(new BigDecimal(ptlAgreementProductCostsExport.getNoCarExportRadioLevel1()));
+        insFeeOrderNew.setNoDeptPremiumsLevel1(
+                insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoDeptProportionLevel1()).divide(new BigDecimal("100"))
+        );
+
+        insFeeOrderNew.setNoDeptProportionLevel2(new BigDecimal(ptlAgreementProductCostsExport.getNoCarExportRadioLevel2()));
+        insFeeOrderNew.setNoDeptPremiumsLevel2(
+                insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoDeptProportionLevel2()).divide(new BigDecimal("100"))
+        );
+
+        insFeeOrderNew.setNoDeptProportionLevel3(new BigDecimal(ptlAgreementProductCostsExport.getNoCarExportRadioLevel3()));
+        insFeeOrderNew.setNoDeptPremiumsLevel3(
+                insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoDeptProportionLevel3()).divide(new BigDecimal("100"))
+        );
+
+
+        insFeeOrderNew.setNoDeptProportionLevel4(new BigDecimal(ptlAgreementProductCostsExport.getNoCarExportRadioLevel4()));
+        insFeeOrderNew.setNoDeptPremiumsLevel4(
+                insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoDeptProportionLevel4()).divide(new BigDecimal("100"))
+        );
+
+        insFeeOrderNew.setNoDeptProportionLevel5(new BigDecimal(ptlAgreementProductCostsExport.getNoCarExportRadioLevel5()));
+        insFeeOrderNew.setNoDeptPremiumsLevel5(
+                insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoDeptProportionLevel5()).divide(new BigDecimal("100"))
+        );
+
+
+        //计算分销费用
+        InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
+        SysUser sysUser = sysUserService.findByUserId(insOrders.getUserid());
+        List<EsmRetail> esmRetailList = esmRetailService.selectList(" where t.deptid=? and t.status = '1' ",
+                new Object[]{sysUser.getDeptId()});
+
+        if (esmRetailList != null && !esmRetailList.isEmpty()) {
+            EsmRetail esmRetail = esmRetailList.get(0);
+            if (esmRetail != null) {
+                if(Integer.parseInt(esmRetail.getRetailtype()) >= 3){
+                    insFeeOrderNew.setFirstDetailProportion(new BigDecimal(esmRetail.getDisrate1()));
+                    insFeeOrderNew.setFirstDetailPremiums(insFeeOrderNew.getJqNoTaxPremium().multiply(new BigDecimal(esmRetail.getDisrate1())).divide(new BigDecimal("100")));
+                }
+                if(Integer.parseInt(esmRetail.getRetailtype()) >= 2){
+                    insFeeOrderNew.setSecondDetailProportion(new BigDecimal(esmRetail.getDisrate2()));
+                    insFeeOrderNew.setSecondDetailPremiums(insFeeOrderNew.getJqNoTaxPremium().multiply(new BigDecimal(esmRetail.getDisrate2())).divide(new BigDecimal("100")));
+                }
+                if(Integer.parseInt(esmRetail.getRetailtype()) >= 1){
+                    insFeeOrderNew.setThirdDetailProportion(new BigDecimal(esmRetail.getDisrate3()));
+                    insFeeOrderNew.setThirdDetailPremiums(insFeeOrderNew.getJqNoTaxPremium().multiply(new BigDecimal(esmRetail.getDisrate3())).divide(new BigDecimal("100")));
+                }
+            }
+        }
+
+        insFeeOrderNewService.saveOrUpdate(insFeeOrderNew);
+
+    }
+
+
+    /**
+     * 判断是否包含非车险
+     * @param insAreaCompany
+     * @return
+     */
+    private boolean isContainNonCar(InsAreaCompany insAreaCompany){
+        if(insAreaCompany.getCrossInsurance() != null && insAreaCompany.getJypremium().equals(BigDecimal.ZERO)){
+            return false;
+        }
+        return true;
+    }
+
+
+    /**
+     * 匹配费用因子
+     * @param agreementProductCosts
+     * @param insAreaCompany
+     * @param insOrders
+     * @return
+     */
+    private String verificationCosts(List<AgreementProductCosts> agreementProductCosts,InsAreaCompany insAreaCompany,InsOrders insOrders){
+        //匹配费用因子
+        //获取所有费用属性
+        List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
+        //获取所有费用属性关联
+        List<RuleAttrMappingVo> ruleAttrMappingVoList = RuleAttrMappingVo.getRuleAttrMappingVoList(insAreaCompany, insOrders);
+
+        List<AgreementProductCosts> filterAgreementProductCosts = new ArrayList<>();
+
+        boolean isNoCar = false;
+        //查找是否有强制非车因子
+        for(int i=0;i<agreementProductCosts.size();i++) {
+            PtlAgreementProductCostsAttrLink ptlAgreementProductCostsAttrLink =
+                    agreementProductCosts.get(i).getCostsAttrLinks().stream().filter(x -> x.getAttrCode().equals("IsNonMotorInsurance")).findFirst().orElse(null);
+
+            if(!Objects.isNull(ptlAgreementProductCostsAttrLink)){
+                if(ptlAgreementProductCostsAttrLink.getMin().equals("1")){
+                    //只走强制非车的费用因子
+                    AgreementProductCosts productCosts = agreementProductCosts.get(i);
+                    filterAgreementProductCosts.add(productCosts);
+                    isNoCar = true;
+                }
+
+            }
+        }
+        if(filterAgreementProductCosts.isEmpty()){
+            filterAgreementProductCosts = agreementProductCosts;
+        }
+        //是否强制走非车
+        if(isNoCar) {
+            if(judgementsIsNoCar(filterAgreementProductCosts.get(0).getCostsAttrLinks(),undwrtRulesAttrList,ruleAttrMappingVoList)){
+                return filterAgreementProductCosts.get(0).getId();
+            }
+        }else{
+            for (int i = 0; i < filterAgreementProductCosts.size(); i++) {
+                //判断是否匹配
+                if (judgements(filterAgreementProductCosts.get(i).getCostsAttrLinks(), undwrtRulesAttrList, ruleAttrMappingVoList)) {
+                    //返回 费用id   如果需要匹配非车的情况  将返回值返回list 后赛选
+                    return filterAgreementProductCosts.get(i).getId();
+                }
+            }
+        }
+        throw new SystemException("费用因子匹配失败");
+    }
+
+
+    private boolean verificationRules(List<PtlAgreementUndwrtRulesNew> ptlAgreementUndwrtRulesNews,InsAreaCompany insAreaCompany,InsOrders insOrders){
+        //匹配费用因子
+        //获取所有费用属性
+        List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
+        //获取所有费用属性关联
+        List<RuleAttrMappingVo> ruleAttrMappingVoList = RuleAttrMappingVo.getRuleAttrMappingVoList(insAreaCompany, insOrders);
+
+
+        for (int i = 0; i < ptlAgreementUndwrtRulesNews.size(); i++) {
+            //判断是否匹配
+            if (judgementsRules(ptlAgreementUndwrtRulesNews.get(i).getRulesAttrList(), undwrtRulesAttrList, ruleAttrMappingVoList)) {
+                //返回 费用id   如果需要匹配非车的情况  将返回值返回list 后赛选
+                return true;
+            }
+        }
+        throw new SystemException("承保规则校验失败");
+    }
+
+    /**
+     * 费用因子的对比
+     * @param ptlAgreementProductCostsAttrLinks    费用因子范围规则
+     * @param rulesAttrs            费用因子属性
+     * @param ruleAttrMappingVoList 表单提交的值
+     * @return
+     */
+    private boolean judgements(List<PtlAgreementProductCostsAttrLink> ptlAgreementProductCostsAttrLinks,
+                               List<PtlAgreementUndwrtRulesAttr> rulesAttrs, List<RuleAttrMappingVo> ruleAttrMappingVoList){
+        boolean useFlag = true;
+
+        for(int i=0;i<ptlAgreementProductCostsAttrLinks.size();i++){
+            int finalI = i;
+
+            //查找规则中的 传值属性
+            RuleAttrMappingVo ruleAttrMappingVo = ruleAttrMappingVoList.stream().filter(x -> x.getAttrCode().equals(ptlAgreementProductCostsAttrLinks.get(finalI).getAttrCode())).findFirst().orElse(null);
+            //如果查找不到 传值属性 直接费用对比失败
+            if(ruleAttrMappingVo == null)
+                return false;
+            //查找 费用因子规则
+            PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr = rulesAttrs.stream().filter(x -> x.getAttrCode().equals(ptlAgreementProductCostsAttrLinks.get(finalI).getAttrCode())).findFirst().get();
+            useFlag = attrEqual(ptlAgreementProductCostsAttrLinks.get(i), ptlAgreementUndwrtRulesAttr, ruleAttrMappingVo.getValue());
+            if(!useFlag)
+                return false;
+        }
+        return useFlag;
+    }
+
+
+    /**
+     * 承保规则因子的对比
+     * @param ptlAgreementUndwrtRulesAttrLinks
+     * @param rulesAttrs
+     * @param ruleAttrMappingVoList
+     * @return
+     */
+    private boolean judgementsRules(List<PtlAgreementUndwrtRulesAttrLink> ptlAgreementUndwrtRulesAttrLinks,
+                               List<PtlAgreementUndwrtRulesAttr> rulesAttrs, List<RuleAttrMappingVo> ruleAttrMappingVoList){
+        boolean useFlag = true;
+
+        for(int i=0;i<ptlAgreementUndwrtRulesAttrLinks.size();i++){
+            int finalI = i;
+
+            //查找规则中的 传值属性
+            RuleAttrMappingVo ruleAttrMappingVo = ruleAttrMappingVoList.stream().filter(x -> x.getAttrCode().equals(ptlAgreementUndwrtRulesAttrLinks.get(finalI).getAttrCode())).findFirst().orElse(null);
+            //如果查找不到 传值属性 直接费用对比失败
+            if(ruleAttrMappingVo == null)
+                continue;
+            //查找 费用因子规则
+            PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr = rulesAttrs.stream().filter(x -> x.getAttrCode().equals(ptlAgreementUndwrtRulesAttrLinks.get(finalI).getAttrCode())).findFirst().get();
+            useFlag = attrEqual(ptlAgreementUndwrtRulesAttrLinks.get(i), ptlAgreementUndwrtRulesAttr, ruleAttrMappingVo.getValue());
+            if(!useFlag)
+                return false;
+        }
+        return useFlag;
+    }
+
+    /**
+     * 费用因子的对比 强制非车险
+     * @param ptlAgreementProductCostsAttrLinks    费用因子范围规则
+     * @param rulesAttrs            费用因子属性
+     * @param ruleAttrMappingVoList 表单提交的值
+     * @return
+     */
+    private boolean judgementsIsNoCar(List<PtlAgreementProductCostsAttrLink> ptlAgreementProductCostsAttrLinks,
+                               List<PtlAgreementUndwrtRulesAttr> rulesAttrs, List<RuleAttrMappingVo> ruleAttrMappingVoList){
+        boolean useFlag = true;
+
+        for(int i=0;i<ptlAgreementProductCostsAttrLinks.size();i++){
+            int finalI = i;
+            //查找规则中的 传值属性
+            RuleAttrMappingVo ruleAttrMappingVo = ruleAttrMappingVoList.stream().filter(x -> x.getAttrCode().equals(ptlAgreementProductCostsAttrLinks.get(finalI).getAttrCode())).findFirst().orElse(null);
+            //如果是强制非车险
+            if(ptlAgreementProductCostsAttrLinks.get(i).getAttrCode().equals("IsNonMotorInsurance"))
+                continue;
+            //如果查找不到 传值属性 直接费用对比失败
+            if(ruleAttrMappingVo == null)
+                return false;
+            //查找 费用因子规则
+            PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr = rulesAttrs.stream().filter(x -> x.getAttrCode().equals(ptlAgreementProductCostsAttrLinks.get(finalI).getAttrCode())).findFirst().get();
+            useFlag = attrEqual(ptlAgreementProductCostsAttrLinks.get(i), ptlAgreementUndwrtRulesAttr, ruleAttrMappingVo.getValue());
+            if(!useFlag)
+                return false;
+        }
+        return useFlag;
+    }
+
+
+    /**
+     * 属性比较 返回 是否匹配
+     * @param ptlAgreementProductCostsAttrLink
+     * @param ptlAgreementUndwrtRulesAttr
+     * @param value
+     * @return
+     */
+    private boolean attrEqual(PtlAgreementProductCostsAttrLink ptlAgreementProductCostsAttrLink,PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr, String value){
+        if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("checkbox")){
+            return checkBoxEqual(ptlAgreementProductCostsAttrLink,value);
+        }else if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("inputNumber")){
+            return inputNumberEqual(ptlAgreementProductCostsAttrLink,value);
+        }else if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("input")){
+            return inputTextEqual(ptlAgreementProductCostsAttrLink,value);
+        }else if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("select")){
+            return selectEqual(ptlAgreementProductCostsAttrLink,value);
+        }else if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("radio")){
+            return radioEqual(ptlAgreementProductCostsAttrLink,value);
+        }
+        return false;
+    }
+
+    private boolean attrEqual(PtlAgreementUndwrtRulesAttrLink ptlAgreementUndwrtRulesAttrLink,PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr, String value){
+        if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("checkbox")){
+            return checkBoxEqual(ptlAgreementUndwrtRulesAttrLink,value);
+        }else if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("inputNumber")){
+            return inputNumberEqual(ptlAgreementUndwrtRulesAttrLink,value);
+        }else if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("input")){
+            return inputTextEqual(ptlAgreementUndwrtRulesAttrLink,value);
+        }else if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("select")){
+            return selectEqual(ptlAgreementUndwrtRulesAttrLink,value);
+        }else if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("radio")){
+            return radioEqual(ptlAgreementUndwrtRulesAttrLink,value);
+        }
+        return false;
+    }
+
+    /**
+     * 属性为多选判断
+     * @param ptlAgreementProductCostsAttrLink
+     * @param value
+     * @return
+     */
+    private boolean checkBoxEqual(PtlAgreementProductCostsAttrLink ptlAgreementProductCostsAttrLink, String value){
+        if(ptlAgreementProductCostsAttrLink.getMin().contains(value)){
+            return true;
+        }
+        return false;
+    }
+
+    private boolean checkBoxEqual(PtlAgreementUndwrtRulesAttrLink ptlAgreementUndwrtRulesAttrLink, String value){
+        if(ptlAgreementUndwrtRulesAttrLink.getMin().contains(value)){
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 属性为数值型判断
+     * @param ptlAgreementProductCostsAttrLink
+     * @param value
+     * @return
+     */
+    private boolean inputNumberEqual(PtlAgreementProductCostsAttrLink ptlAgreementProductCostsAttrLink, String value){
+        double v = Double.parseDouble(value);
+        //统一处理数值
+        if("1".equals(ptlAgreementProductCostsAttrLink.getOperator())){
+            if(Integer.parseInt(ptlAgreementProductCostsAttrLink.getMin()) <= v &&
+                    Double.parseDouble(ptlAgreementProductCostsAttrLink.getMax()) >= v){
+                return true;
+            }
+        }else if("2".equals(ptlAgreementProductCostsAttrLink.getOperator())){
+            if(Double.parseDouble(ptlAgreementProductCostsAttrLink.getMin()) > v){
+                return true;
+            }
+        }else if("3".equals(ptlAgreementProductCostsAttrLink.getOperator())){
+            if(Double.parseDouble(ptlAgreementProductCostsAttrLink.getMin()) >= v){
+                return true;
+            }
+        }else if("4".equals(ptlAgreementProductCostsAttrLink.getOperator())){
+            if(Double.parseDouble(ptlAgreementProductCostsAttrLink.getMax()) < v){
+                return true;
+            }
+        }else if("5".equals(ptlAgreementProductCostsAttrLink.getOperator())){
+            if(Double.parseDouble(ptlAgreementProductCostsAttrLink.getMax()) <= v){
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private boolean inputNumberEqual(PtlAgreementUndwrtRulesAttrLink ptlAgreementUndwrtRulesAttrLink, String value){
+        double v = Double.parseDouble(value);
+        //统一处理数值
+        if("1".equals(ptlAgreementUndwrtRulesAttrLink.getOperator())){
+            if(Integer.parseInt(ptlAgreementUndwrtRulesAttrLink.getMin()) <= v &&
+                    Double.parseDouble(ptlAgreementUndwrtRulesAttrLink.getMax()) >= v){
+                return false;
+            }
+        }else if("2".equals(ptlAgreementUndwrtRulesAttrLink.getOperator())){
+            if(Double.parseDouble(ptlAgreementUndwrtRulesAttrLink.getMin()) > v){
+                return false;
+            }
+        }else if("3".equals(ptlAgreementUndwrtRulesAttrLink.getOperator())){
+            if(Double.parseDouble(ptlAgreementUndwrtRulesAttrLink.getMin()) >= v){
+                return false;
+            }
+        }else if("4".equals(ptlAgreementUndwrtRulesAttrLink.getOperator())){
+            if(Double.parseDouble(ptlAgreementUndwrtRulesAttrLink.getMax()) < v){
+                return false;
+            }
+        }else if("5".equals(ptlAgreementUndwrtRulesAttrLink.getOperator())){
+            if(Double.parseDouble(ptlAgreementUndwrtRulesAttrLink.getMax()) <= v){
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * 属性为输入框判断
+     * @param ptlAgreementProductCostsAttrLink
+     * @param value
+     * @return
+     */
+    private boolean inputTextEqual(PtlAgreementProductCostsAttrLink ptlAgreementProductCostsAttrLink, String value){
+        //将值进行分割
+        String[] split = ptlAgreementProductCostsAttrLink.getMin().split(",");
+        AtomicBoolean returnBool = new AtomicBoolean(false);
+        Arrays.stream(split).forEach(x -> {
+            if(x.contains(value)){
+                returnBool.set(true);
+            }
+        });
+        return returnBool.get();
+    }
+
+    private boolean inputTextEqual(PtlAgreementUndwrtRulesAttrLink ptlAgreementUndwrtRulesAttrLink, String value){
+        //将值进行分割
+        String[] split = ptlAgreementUndwrtRulesAttrLink.getMin().split(",");
+        AtomicBoolean returnBool = new AtomicBoolean(true);
+        Arrays.stream(split).forEach(x -> {
+            if(x.contains(value)){
+                returnBool.set(false);
+            }
+        });
+        return returnBool.get();
+    }
+
+    /**
+     * 属性为下拉框判断
+     * @param ptlAgreementProductCostsAttrLink
+     * @param value
+     * @return
+     */
+    private boolean selectEqual(PtlAgreementProductCostsAttrLink ptlAgreementProductCostsAttrLink, String value){
+        if(ptlAgreementProductCostsAttrLink.getMin().contains(value)){
+            return true;
+        }
+        return false;
+    }
+
+    private boolean selectEqual(PtlAgreementUndwrtRulesAttrLink ptlAgreementUndwrtRulesAttrLink, String value){
+        if(ptlAgreementUndwrtRulesAttrLink.getMin().contains(value)){
+            return false;
+        }
+        return true;
+    }
+
+    private boolean radioEqual(PtlAgreementProductCostsAttrLink ptlAgreementProductCostsAttrLink, String value){
+        //新能源判断
+        if("NewEnergy".equals(ptlAgreementProductCostsAttrLink.getAttrCode())){
+            if(EnergyType.isNewEnergy(ptlAgreementProductCostsAttrLink.getMin())){
+                return true;
+            }
+        }else
+        if(ptlAgreementProductCostsAttrLink.getMin().contains(value)){
+            return true;
+        }
+        return false;
+    }
+
+    private boolean radioEqual(PtlAgreementUndwrtRulesAttrLink ptlAgreementUndwrtRulesAttrLink, String value){
+        //新能源判断
+        if("NewEnergy".equals(ptlAgreementUndwrtRulesAttrLink.getAttrCode())){
+            if(EnergyType.isNewEnergy(ptlAgreementUndwrtRulesAttrLink.getMin())){
+                return false;
+            }
+        }else
+        if(ptlAgreementUndwrtRulesAttrLink.getMin().contains(value)){
+            return false;
+        }
+        return true;
+    }
+}

+ 0 - 43
src/main/java/com/ydtech/modules/ins/controller/InsPayApplyController.java

@@ -818,49 +818,6 @@ public class InsPayApplyController extends BaseController {
 
         return map;
     }
-//    public Map queryPrice(TeamUserQryVO record, List<EsmUserAgent> list) {
-//        Map map = new HashMap();
-//        List<InsOrder> orderList = null;
-//        double sum = 0;
-//        int count = 0;
-//        if (list != null && list.size() > 0) {
-//            for (int i = 0; i < list.size(); i++) {
-//
-//                StringBuffer whereStrs = new StringBuffer();
-//                ArrayList<String> param = new ArrayList<String>();
-//                whereStrs = new StringBuffer();
-//                param = new ArrayList<String>();
-//                whereStrs.append(" where orderstatus=7 ");
-//                whereStrs.append(" and userid=? ");
-//                param.add(list.get(i).getId());
-//                if (!com.ydtech.utils.StringUtils.isNullOrEmpty(record.getStartdate()) && !com.ydtech.utils.StringUtils.isNullOrEmpty(record.getEnddate())) {
-//                    whereStrs.append("and exists (select 1 from esm_user_internal a where t.userid=a.id and DATE_FORMAT(a.intime,'%Y-%m-%d') >= date ? and DATE_FORMAT(a.intime,'%Y-%m-%d') <= date ?)");
-//                    param.add(record.getStartdate());
-//                    param.add(record.getEnddate());
-//                }
-//                orderList = insOrderService.selectList(whereStrs.toString(), param.toArray());
-//                if (orderList != null && orderList.size() > 0) {
-//                    count = count + 1;
-//                    for (int j = 0; j < orderList.size(); j++) {
-//                        double sumpremium = orderList.get(j).getSumpremium();
-//                        double taxamount = orderList.get(j).getTaxamount();
-//
-//                        if (sumpremium > 0) {
-//                            sum = sum + sumpremium - taxamount;
-//
-//                        }
-//
-//                    }
-//
-//                }
-//            }
-//        }
-//        map.put("OutSingle", count);
-//        map.put("sum", sum);
-//
-//
-//        return map;
-//    }
 
 
 }

+ 2 - 2
src/main/java/com/ydtech/modules/ins/model/guoren/NonAutoInsResp.java

@@ -541,12 +541,12 @@ public class NonAutoInsResp {
             @JSONField(name = "technologyInd")
             private String technologyInd;
 
-            @ApiModelProperty("购份数")
+            @ApiModelProperty("购份数")
             @JsonProperty(value = "policyNum")
             @JSONField(name = "policyNum")
             private String policyNum;
 
-            @ApiModelProperty("购份数")
+            @ApiModelProperty("购份数")
             @JsonProperty(value = "appnum")
             @JSONField(name = "appnum")
             private String appnum;

+ 1 - 1
src/main/java/com/ydtech/modules/ins/model/guoren/PremiumReq.java

@@ -314,7 +314,7 @@ public class PremiumReq {
             BigDecimal passengerNum = BigDecimal.valueOf(StringUtils.toInt(vinQ.getSeatCountBC()) - 1);
 
             boolean isEnergy = false;
-            if ("1,2,3,".contains(vinQ.getFuelType() + ",")) {//纯电动 燃料电池 插电式混合动力 归属为新能源产品
+            if (FuelType.getEnergy().contains(vinQ.getFuelType())) {
                 isEnergy = true;
             }
 

+ 6 - 0
src/main/java/com/ydtech/modules/ins/model/vo/CarInfoVo.java

@@ -1,5 +1,6 @@
 package com.ydtech.modules.ins.model.vo;
 
+import com.ydtech.constants.enums.dict.insurance.EnergyType;
 import com.ydtech.validation.annotation.CheckDateTime;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -170,5 +171,10 @@ public class CarInfoVo {
     @ApiModelProperty(value = "发动机功率")
     private String powerScale;
 
+    // 判断是否是新能源车
+    public boolean isNewEnergy() {
+        return EnergyType.isNewEnergy(energyType);
+    }
+
 
 }

+ 5 - 5
src/main/java/com/ydtech/modules/ins/model/yc/ruote/Base.java

@@ -371,7 +371,7 @@ public class Base {
         }
 
         if (null != biRiskInfo) {
-            CarInsDateDto bidd = base.buildInsDate(ciRiskInfo.getStartDate(), ciRiskInfo.getEndDate());
+            CarInsDateDto bidd = base.buildInsDate(biRiskInfo.getStartDate(), biRiskInfo.getEndDate());
             base.setTInsrncBgnTmSY(bidd.getStartDate());
             base.setTInsrncEndTmSY(bidd.getEndDate());
 
@@ -405,10 +405,11 @@ public class Base {
             cidd.setForthwith(true);
             cidd.setStartDate(startDate);
 
-            LocalDateTime sEndDateTime = DateTimeUtil.parseLocalDateTime(startDate, DateTimeUtil.DATETIME_PATTERN);
-            sEndDateTime = sEndDateTime.plusYears(1);
+            LocalDate sEndDateTime = LocalDate.now();
+            LocalDateTime localDateTime = sEndDateTime.atStartOfDay();
+            LocalDateTime localDateTime1 = localDateTime.plusYears(1).plusDays(1);
 
-            cidd.setEndDate(DateTimeUtil.format(sEndDateTime, "yyyy-MM-dd HH:mm:ss"));
+            cidd.setEndDate(DateTimeUtil.format(localDateTime1, "yyyy-MM-dd HH:mm:ss"));
 
         } else {
             cidd.setStartDate(startDate);
@@ -423,5 +424,4 @@ public class Base {
 
     }
 
-
 }

+ 11 - 3
src/main/java/com/ydtech/modules/ins/model/yc/ruote/CvrgListSY.java

@@ -69,7 +69,15 @@ public class CvrgListSY {
     }
 
 
-    public static CvrgListSY buildCvrgListSY(List<KindInfoVo> kindList, Vhl vhl) {
+    /**
+     * 组装商业险列表
+     *
+     * @param kindList  商业险险种
+     * @param vhl       永诚车型
+     * @param newEnergy 是否是新能源
+     * @return 永诚险种列表
+     */
+    public static CvrgListSY buildCvrgListSY(List<KindInfoVo> kindList, Vhl vhl, boolean newEnergy) {
         //乘客
         String passenger = StringUtils.toString(StringUtils.toInt(vhl.getNSeatNum()) - 1);
 
@@ -81,7 +89,7 @@ public class CvrgListSY {
         kindList.forEach(a -> {
             CvrgListSY.CvrgSY bean = new CvrgListSY.CvrgSY();
             String txt4 = (StringUtils.toDouble(a.getDeductibleRate(), 0) / 100) + "";
-            if ("32773002,32773003,32773004,".contains(vhl.getFuelType())) {
+            if (newEnergy) {
                 //新能源产品险别拼装(商业)
                 //第三者责任险
                 if (a.getKindCode().equals(InsurKind.B.getCode())) {
@@ -184,7 +192,7 @@ public class CvrgListSY {
 //                bean.setCResvTxt4(a.getDeductibleRate());
             }
 
-            if ("32773002,32773003,32773004,".contains(vhl.getFuelType())) {
+            if (newEnergy) {
                 //新能源产品险别拼装(商业)
                 if (InsurKind.TY1.getCode().equals(a.getKindCode())) {
                     bean.setCCvrgNo("030235");

+ 2 - 1
src/main/java/com/ydtech/modules/ins/model/yc/ruote/Ruote.java

@@ -222,7 +222,8 @@ public class Ruote {
          * 商业险险别
          * 代码:cvrgListSY/CvrgSY
          */
-        CvrgListSY cvrgListSY = CvrgListSY.buildCvrgListSY(yaQuoteInfoVo.getKindList(), vhl);
+
+        CvrgListSY cvrgListSY = CvrgListSY.buildCvrgListSY(yaQuoteInfoVo.getKindList(), vhl, carInfo.isNewEnergy());
         condition.setCvrgListSY(cvrgListSY);
 
         /**

+ 9 - 0
src/main/java/com/ydtech/modules/inv/controller/InvSourceController.java

@@ -1,6 +1,10 @@
 package com.ydtech.modules.inv.controller;
 
+import cn.hutool.core.date.DateTime;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.inv.model.po.InvSource;
 import com.ydtech.modules.inv.service.InvReceivableService;
 import com.ydtech.modules.inv.service.InvSourceService;
 import io.swagger.annotations.Api;
@@ -11,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.Arrays;
+import java.util.Date;
 
 /**
  * @author jianlong
@@ -53,10 +58,14 @@ public class InvSourceController {
 
     @GetMapping("excel")
     public HttpResult readExcel(@RequestParam("file") String file ) {
+
         String[] pathSegments = file.split("/");
         int index = findIndex(pathSegments,"upload");
         String[] subarray = Arrays.copyOfRange(pathSegments, index+1, pathSegments.length);
         String filename = concatenateWithSlash(subarray);
+
+
+
         HttpResult httpResult = invSourceService.readExcel(filename);
         invReceivableService.syncStatus();
         return httpResult;

+ 20 - 0
src/main/java/com/ydtech/modules/inv/model/po/InvSource.java

@@ -1,5 +1,6 @@
 package com.ydtech.modules.inv.model.po;
 
+import cn.hutool.core.date.DateTime;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.write.style.HeadFontStyle;
@@ -342,6 +343,23 @@ public class InvSource implements Serializable {
     @ExcelProperty("保司结算状态")
     private String insuranceClearingState;
 
+    /**
+     * 导入日期
+     */
+    @TableField(value = "revenue_time")
+    @ApiModelProperty("导入日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelProperty("导入日期")
+    private String revenueTime;
+
+    /**
+     * 导入人名字
+     */
+    @TableField(value = "revenue_name")
+    @ApiModelProperty("导入人名字")
+    @ExcelProperty("导入人名字")
+    private String revenueName;
+
     @TableField(exist = false)
     private String[] ids;
 
@@ -399,4 +417,6 @@ public class InvSource implements Serializable {
             this.setSubsidyRatio(new BigDecimal(0));
         }
     }
+
+
 }

+ 24 - 0
src/main/java/com/ydtech/modules/inv/model/vo/InvSourceQueryVo.java

@@ -1,11 +1,14 @@
 package com.ydtech.modules.inv.model.vo;
 
+import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ydtech.core.page.PageRequest;
+import com.ydtech.utils.StringUtils;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.thymeleaf.util.DateUtils;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -290,6 +293,27 @@ public class InvSourceQueryVo extends PageRequest implements Serializable {
     @ApiModelProperty("保司结算状态")
     private String insuranceClearingState;
 
+    /**
+     * 导入日期
+     */
+    @TableField(value = "revenue_time")
+    @ApiModelProperty("导入日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private String revenueTime;
+    private String revenueTimeStartTime;
+    private String revenueTimeEndTime;
+
+    /**
+     * 导入人名字
+     */
+    @TableField(value = "revenue_name")
+    @ApiModelProperty("导入人名字")
+    private String revenueName;
+
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
+
+
+
 }

+ 4 - 0
src/main/java/com/ydtech/modules/inv/model/vo/ReceivableAndSettlementQueryVo.java

@@ -46,4 +46,8 @@ public class ReceivableAndSettlementQueryVo extends PageRequest {
     private String clearingState; // 结算状态
     @ApiModelProperty(value = "保司结算状态")
     private String insuranceClearingState;
+    @ApiModelProperty(value = "应收导入开始时间")
+    private String revenueTimeStartTime; // 应收导入开始时间
+    @ApiModelProperty(value = "应收导入结束时间")
+    private String revenueTimeEndTime; // 应收导入结束时间
 }

+ 4 - 0
src/main/java/com/ydtech/modules/inv/model/vo/ReceivableAndSettlementVo.java

@@ -192,4 +192,8 @@ public class ReceivableAndSettlementVo {
     @ApiModelProperty(value = "保司结算状态")
     @ExcelProperty(value = "保司结算状态")
     private String insuranceClearingState;
+
+    @ApiModelProperty(value = "应收导入时间")
+    @ExcelProperty(value = "应收导入时间")
+    private String revenueTime;
 }

+ 13 - 6
src/main/java/com/ydtech/modules/inv/service/impl/InvReceivableServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ydtech.modules.inv.service.impl;
 
+import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -21,10 +22,7 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.YearMonth;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -362,8 +360,11 @@ public class InvReceivableServiceImpl implements InvReceivableService {
             invSourceQueryVo.setClearingTimeStartTime(split1[0]);
             invSourceQueryVo.setClearingTimeEndTime(split1[1]);
         }
-
-
+        if (invSourceQueryVo.getRevenueTime() != null && !"".equals(invSourceQueryVo.getRevenueTime())) {
+            String[] split1 = invSourceQueryVo.getRevenueTime().split(",");
+            invSourceQueryVo.setRevenueTimeStartTime(split1[0]);
+            invSourceQueryVo.setRevenueTimeEndTime(split1[1]);
+        }
         Page<InvSource> pageData = invSourceMapper.getRecivablePage(page, invSourceQueryVo);
         List<InvSource> records = pageData.getRecords();
         records.forEach(x -> {
@@ -553,6 +554,12 @@ public class InvReceivableServiceImpl implements InvReceivableService {
         Page page = new Page();
         page.setCurrent(receivableAndSettlementQueryVo.getPageNum());
         page.setSize(receivableAndSettlementQueryVo.getPageSize());
+        InvSourceQueryVo invSourceQueryVo = new InvSourceQueryVo();
+        if (invSourceQueryVo.getRevenueTime() != null && !"".equals(invSourceQueryVo.getRevenueTime())) {
+            String[] split1 = invSourceQueryVo.getRevenueTime().split(",");
+            invSourceQueryVo.setRevenueTimeStartTime(split1[0]);
+            invSourceQueryVo.setRevenueTimeEndTime(split1[1]);
+        }
         Page<ReceivableAndSettlementVo> receivableAndSettlementPage = invReceivableMapper.getReceivableAndSettlementPage(page,
                 receivableAndSettlementQueryVo);
         return receivableAndSettlementPage;

+ 16 - 1
src/main/java/com/ydtech/modules/inv/service/impl/InvSourceServiceImpl.java

@@ -1,10 +1,13 @@
 package com.ydtech.modules.inv.service.impl;
 
+import cn.hutool.core.date.DateTime;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.inv.dao.InvSourceMapper;
 import com.ydtech.modules.inv.model.excel.InvSourceExcel;
 import com.ydtech.modules.inv.model.po.InvSource;
@@ -33,8 +36,18 @@ public class InvSourceServiceImpl extends ServiceImpl<InvSourceMapper, InvSource
 
     @Override
     public HttpResult readExcel(String file) {
+
+
         List<InvSourceExcel> invSourceExcels = EasyExcelUtils.readInvSourceExcel(uploadFilePath + file, InvSourceExcel.class);
         List<InvSource> invSources = JSON.parseArray(JSONArray.toJSONString(invSourceExcels), InvSource.class);
+
+        SysUser user = BaseController.getUser();
+        InvSource invSource = new InvSource();
+        invSource.setRevenueName(String.valueOf(user));
+
+        DateTime dateTime = new DateTime();
+        invSource.setRevenueTime(String.valueOf(dateTime));
+
         boolean result = invSourceService.saveOrUpdateBatchWithConditions(invSources);
         return result ? HttpResult.ok("导入成功") : HttpResult.error("导入失败");
     }
@@ -57,7 +70,9 @@ public class InvSourceServiceImpl extends ServiceImpl<InvSourceMapper, InvSource
                     .eq(InvSource::getLicenseno, invSource.getLicenseno())
                     .eq(InvSource::getJqPolicyId, invSource.getJqPolicyId())
                     .eq(InvSource::getSyPolicyId, invSource.getSyPolicyId())
-                    .eq(InvSource::getNonCarPolicyId, invSource.getNonCarPolicyId()));
+                    .eq(InvSource::getNonCarPolicyId, invSource.getNonCarPolicyId())
+                    .eq(InvSource::getRevenueTime,invSource.getRevenueTime()));
+
             if (one != null) {
                 invSource.setId(one.getId());
                 baseMapper.updateById(invSource);

+ 10 - 0
src/main/java/com/ydtech/modules/order/aop/AuditVerification.java

@@ -0,0 +1,10 @@
+package com.ydtech.modules.order.aop;
+
+public @interface AuditVerification {
+
+    String value() default "核保注解拦截";
+
+}
+
+
+

+ 65 - 0
src/main/java/com/ydtech/modules/order/aop/aspect/AuditVerificationAspect.java

@@ -0,0 +1,65 @@
+package com.ydtech.modules.order.aop.aspect;
+
+
+import com.ydtech.constants.sys.SystemConstant;
+import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.SysUserRole;
+import com.ydtech.modules.admin.service.SysUserRoleService;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.fee.service.FeeRuleSchemeNewService;
+import com.ydtech.modules.order.components.InsOrdersComponents;
+import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
+import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
+import com.ydtech.modules.order.service.InsAreaCompanyService;
+import com.ydtech.modules.order.service.InsOrdersService;
+import com.ydtech.modules.protocol.service.PtlAgreementDeptService;
+import com.ydtech.modules.protocol.service.impl.TaxSourceServiceImpl;
+import com.ydtech.utils.StringUtils;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+
+@Slf4j
+@Aspect
+@Component
+@RequiredArgsConstructor
+public class AuditVerificationAspect {
+
+    private final PtlAgreementDeptService ptlAgreementDeptService;
+
+    private final SysUserRoleService sysUserRoleService;
+
+    private final InsOrdersComponents insOrdersComponents;
+
+    private final TaxSourceServiceImpl taxSourceService;
+
+    private final FeeRuleSchemeNewService feeRuleSchemeNewService;
+
+    private final InsAreaCompanyService insAreaCompanyService;
+
+    private final InsOrdersService insOrdersService;
+
+    @Before("@annotation(com.ydtech.modules.order.aop.AuditVerification)")
+    public void doBefore(JoinPoint point) {
+        Object[] args = point.getArgs();
+        for (Object arg : args) {
+            //接收保险公司id参数
+            String companyId = arg.toString();
+            InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(companyId);
+            InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
+            //先进行承保规则判断
+            feeRuleSchemeNewService.verificationRuleFactor(insAreaCompany,insOrders);
+            //再进行费用因子判断
+            feeRuleSchemeNewService.verificationCostFactor(insAreaCompany,insOrders);
+        }
+        throw new SystemException("没有找到费用,核保失败!");
+    }
+
+}

+ 1 - 1
src/main/java/com/ydtech/modules/order/entity/api/zhongmei/request/QuotedPriceRequest.java

@@ -109,7 +109,7 @@ public class QuotedPriceRequest extends BaseRequest {
             // 车辆信息
             this.insuredObject = new InsuredObjectDTO(carInfo, simpleStadarCarDTO);
             // 保险信息
-            this.contract = new ContractDTO().getContract(riskList, kindList, i - 1, simpleStadarCarDTO.getEnergyTypes());
+            this.contract = new ContractDTO().getContract(riskList, kindList, i - 1, carInfo.getEnergyType());
             // 客户信息
             this.customer = new CustomerDTO().getCustomers(ownerInfo, policyHolderInfo, insuredPersonInfo);
             // 驾意险

+ 0 - 2
src/main/java/com/ydtech/modules/order/entity/vo/BaseQuoteInfoVo.java

@@ -24,8 +24,6 @@ public class BaseQuoteInfoVo extends YaQuoteInfoVo {
     @ApiModelProperty("代客录单用-实际业务归属人")
     private String userId;
 
-
-
     public BaseQuoteInfoVo() {
     }
 

+ 4 - 6
src/main/java/com/ydtech/modules/order/service/impl/DaJiaOrderServiceImpl.java

@@ -40,7 +40,6 @@ import com.ydtech.utils.CalculateUtils;
 import com.ydtech.utils.DateTimeUtil;
 import com.ydtech.utils.baidu.FileUtil;
 import com.ydtech.utils.idgen.IdGenerate;
-import java.lang.String;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -201,11 +200,8 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
                 return HttpResult.error("车辆与客户信息确认接口失败");
             }
 
-            String fuelType = odr1008Response.getResult().getVehicleInfo().getVehicleFuelType();
-            boolean isEnergy = false;
-            if ("D6,D8,D12,".contains(fuelType + ",")) {//纯电动 燃料电池 插电式混合动力 归属为新能源产品
-                isEnergy = true;
-            }
+            // 新能源车
+            boolean isEnergy = quoteInfoVo.getCarInfo().isNewEnergy();
 
             //查询车辆商业起保日期
             InsOrders insOrders = insOrdersService.getById(quoteInfoVo.getOrderNo());
@@ -297,6 +293,8 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
         LocalDateTime end = start.plusYears(1L);
         if (start.getHour() > 0) {
             newStartDate = DateTimeUtil.format(start, DateTimeUtil.DATETIME_PATTERN);
+            //减去一天
+            end = end.minusDays(1L);
             newEndDate = DateTimeUtil.format(end, DateTimeUtil.DATETIME_PATTERN);
         } else {
             newStartDate = DateTimeUtil.getStartTimeOfDayStr(start, DateTimeUtil.DATETIME_PATTERN);

+ 3 - 4
src/main/java/com/ydtech/modules/order/service/impl/ZijinOrderApiServiceImpl.java

@@ -142,10 +142,9 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
         // 4. 报价
         CalculatePremiumRequest calculatePremiumRequest = new CalculatePremiumRequest(quoteInfoVo, vehicleModelInfosDTO,
                 queryActualValueResponse.getActualValue(), quoteVo, zjConfigureParameters, modelQueryResponse);
-        boolean isEnergy = false;
-        if ("D6,D8,D12,".contains(vehicleModelInfosDTO.getPowerTypeCode() + ",")) {//纯电动 燃料电池 插电式混合动力 归属为新能源产品
-            isEnergy = true;
-        }
+
+        boolean isEnergy = carInfo.isNewEnergy();
+
         String message = "";
         CalculatePremiumResponse calculatePremiumResponse = zijinRequestApiComponents.calculatePremium(calculatePremiumRequest,
                 httpHeaders, modelQueryRequest, message, queryActualValueRequest, true);

+ 125 - 0
src/main/java/com/ydtech/modules/protocols/controller/PtlNewAgreementController.java

@@ -0,0 +1,125 @@
+package com.ydtech.modules.protocols.controller;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.core.page.PageRequest;
+import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.fee.service.FeeRuleSchemeNewService;
+import com.ydtech.modules.protocol.entity.po.PtlAgreement;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
+import com.ydtech.modules.protocol.entity.vo.PtlAgreementPageVo;
+import com.ydtech.modules.protocol.entity.vo.PtlAgreementProductQueryVo;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttr;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesDict;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesDictLabal;
+import com.ydtech.modules.protocols.entity.vo.*;
+import com.ydtech.modules.protocols.service.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.poi.ss.formula.functions.T;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+*@author: tz
+*@description: 协议controller
+*@create: 2024-2-22 15:44:29
+*/
+@Api(tags = "新版协议")
+@RequestMapping("/plt/new/agreement")
+@RestController
+public class PtlNewAgreementController extends BaseController {
+
+    @Autowired
+    private PtlAgreementUndwrtRulesAttrService ptlAgreementUndwrtRulesAttrService;
+
+    @Autowired
+    private PtlAgreementProductCostsNewService ptlAgreementProductCostsNewService;
+
+    @Autowired
+    private PtlAgreementUndwrtRulesNewService ptlAgreementUndwrtRulesNewService;
+
+    @ApiOperation(value = "协议承保规则属性列表")
+    @GetMapping("/attr/list")
+    public HttpResult<List<PtlAgreementUndwrtRulesAttr>> list() {
+        List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
+        return HttpResult.ok(undwrtRulesAttrList);
+    }
+
+    @PostMapping("/getProduct")
+    @ApiOperation("查询协议产品费用列表")
+    public PageResult getProduct(@RequestBody AgreementProductQueryVo agreementProductQueryVo) {
+        Page<T> page = buildPageRequest(agreementProductQueryVo.getPageDto());
+        Page<PtlAgreementProductCostsNew> schemeQueryDto = ptlAgreementProductCostsNewService.getByAgreementId(page,agreementProductQueryVo.getAgreementId());
+        return buildPageResponse(schemeQueryDto);
+    }
+
+    @ApiOperation(value = "获取协议费用")
+    @GetMapping("/costs/get")
+    public HttpResult costsGet(String costsId) {
+        List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
+        AgreementProductCostsSave agreementProductCosts = ptlAgreementProductCostsNewService.costsGet(costsId,undwrtRulesAttrList);
+        return HttpResult.ok(agreementProductCosts);
+    }
+
+    @ApiOperation(value = "添加协议费用")
+    @PostMapping("/costs/add")
+    public HttpResult costsAdd(@RequestBody AgreementProductCosts agreementProductCosts) {
+        return ptlAgreementProductCostsNewService.costsAdd(agreementProductCosts) ? HttpResult.ok("添加协议费用成功") : HttpResult.error("添加协议费用失败");
+    }
+
+    @ApiOperation(value = "更新协议费用")
+    @PostMapping("/costs/update")
+    public HttpResult costsUpdate(@RequestBody AgreementProductCosts agreementProductCosts){
+        return ptlAgreementProductCostsNewService.costsUpdate(agreementProductCosts) ? HttpResult.ok("更新协议费用成功") : HttpResult.error("更新协议费用失败");
+    }
+
+    @ApiOperation(value = "删除协议费用")
+    @PostMapping("/costs/delete")
+    public HttpResult costsDelete(String costsId){
+        return ptlAgreementProductCostsNewService.costsDelete(costsId) ? HttpResult.ok("删除协议费用成功") : HttpResult.error("删除协议费用失败");
+    }
+
+    @ApiOperation(value = "获取承保规则列表")
+    @PostMapping("/undwrt/rules/list")
+    public PageResult getRulesList(@RequestBody AgreementUndwrtRulesQueryVo agreementUndwrtRulesQueryVo){
+
+        Page<T> page = buildPageRequest(agreementUndwrtRulesQueryVo.getPageDto());
+        Page rulesPage = ptlAgreementUndwrtRulesNewService.rulesPage(page,agreementUndwrtRulesQueryVo.getAgreementId());
+        return buildPageResponse(rulesPage);
+    }
+
+    @ApiOperation(value = "获取承保规则")
+    @GetMapping("/undwrt/rules/get")
+    public HttpResult get(String ruleId) {
+        List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
+        AgreementUndwrtRulesSave agreementUndwrtRulesSave = ptlAgreementUndwrtRulesNewService.rulesGet(ruleId, undwrtRulesAttrList);
+        return HttpResult.ok(agreementUndwrtRulesSave);
+
+    }
+
+    @ApiOperation(value = "添加承保规则")
+    @PostMapping("/undwrt/rules/add")
+    public HttpResult rulesAdd(@RequestBody AgreementUndwrtRules agreementUndwrtRules) {
+        return ptlAgreementUndwrtRulesNewService.rulesAdd(agreementUndwrtRules) ? HttpResult.ok("添加承保规则成功") : HttpResult.error("添加承保规则失败");
+    }
+
+    @ApiOperation(value = "更新承保规则")
+    @PostMapping("/undwrt/rules/update")
+    public HttpResult rulesUpdate(@RequestBody AgreementUndwrtRules agreementUndwrtRules){
+        return ptlAgreementUndwrtRulesNewService.rulesUpdate(agreementUndwrtRules) ? HttpResult.ok("更新承保规则成功") : HttpResult.error("更新承保规则失败");
+    }
+
+    @ApiOperation(value = "删除承保规则")
+    @PostMapping("/undwrt/rules/delete")
+    public HttpResult rulesDelete(String ruleId){
+        return ptlAgreementUndwrtRulesNewService.rulesDelete(ruleId) ? HttpResult.ok("删除承保规则成功") : HttpResult.error("删除承保规则失败");
+    }
+
+}

+ 19 - 0
src/main/java/com/ydtech/modules/protocols/dao/InsFeeOrderNewMapper.java

@@ -0,0 +1,19 @@
+package com.ydtech.modules.protocols.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsAttrLink;
+
+
+/**
+ * @author tz
+ * @description 费用结算的数据库操作Mapper
+ * @createDate 2024-2-22 15:44:29
+ */
+public interface InsFeeOrderNewMapper extends BaseMapper<InsFeeOrderNew> {
+
+}
+
+
+
+

+ 19 - 0
src/main/java/com/ydtech/modules/protocols/dao/PtlAgreementProductCostsAttrLinkMapper.java

@@ -0,0 +1,19 @@
+package com.ydtech.modules.protocols.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsAttrLink;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
+
+
+/**
+ * @author tz
+ * @description 协议费用的数据库操作Mapper
+ * @createDate 2024-2-22 15:44:29
+ */
+public interface PtlAgreementProductCostsAttrLinkMapper extends BaseMapper<PtlAgreementProductCostsAttrLink> {
+
+}
+
+
+
+

+ 19 - 0
src/main/java/com/ydtech/modules/protocols/dao/PtlAgreementProductCostsExportMapper.java

@@ -0,0 +1,19 @@
+package com.ydtech.modules.protocols.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsExport;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
+
+
+/**
+ * @author tz
+ * @description 协议费用出口比例Mapper
+ * @createDate 2024-2-22 15:44:29
+ */
+public interface PtlAgreementProductCostsExportMapper extends BaseMapper<PtlAgreementProductCostsExport> {
+
+}
+
+
+
+

+ 19 - 0
src/main/java/com/ydtech/modules/protocols/dao/PtlAgreementProductCostsNewMapper.java

@@ -0,0 +1,19 @@
+package com.ydtech.modules.protocols.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttr;
+
+
+/**
+ * @author tz
+ * @description 协议费用的数据库操作Mapper
+ * @createDate 2024-2-22 15:44:29
+ */
+public interface PtlAgreementProductCostsNewMapper extends BaseMapper<PtlAgreementProductCostsNew> {
+
+}
+
+
+
+

+ 19 - 0
src/main/java/com/ydtech/modules/protocols/dao/PtlAgreementUndwrtRulesAttrLinkMapper.java

@@ -0,0 +1,19 @@
+package com.ydtech.modules.protocols.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsAttrLink;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttrLink;
+
+
+/**
+ * @author tz
+ * @description 协议承保规则属性关联的数据库操作Mapper
+ * @createDate 2024-2-22 15:44:29
+ */
+public interface PtlAgreementUndwrtRulesAttrLinkMapper extends BaseMapper<PtlAgreementUndwrtRulesAttrLink> {
+
+}
+
+
+
+

+ 18 - 0
src/main/java/com/ydtech/modules/protocols/dao/PtlAgreementUndwrtRulesAttrMapper.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.protocols.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttr;
+
+
+/**
+ * @author tz
+ * @description 协议匹配规则属性的数据库操作Mapper
+ * @createDate 2024-2-22 15:44:29
+ */
+public interface PtlAgreementUndwrtRulesAttrMapper extends BaseMapper<PtlAgreementUndwrtRulesAttr> {
+
+}
+
+
+
+

+ 22 - 0
src/main/java/com/ydtech/modules/protocols/dao/PtlAgreementUndwrtRulesDictLabalMapper.java

@@ -0,0 +1,22 @@
+package com.ydtech.modules.protocols.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesDict;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesDictLabal;
+
+import java.util.List;
+
+
+/**
+ * @author tz
+ * @description 协议承保规则字典的数据库操作Mapper
+ * @createDate 2024-2-22 15:44:29
+ */
+public interface PtlAgreementUndwrtRulesDictLabalMapper extends BaseMapper<PtlAgreementUndwrtRulesDictLabal> {
+
+
+}
+
+
+
+

+ 17 - 0
src/main/java/com/ydtech/modules/protocols/dao/PtlAgreementUndwrtRulesDictMapper.java

@@ -0,0 +1,17 @@
+package com.ydtech.modules.protocols.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesDict;
+
+/**
+ * @author tz
+ * @description 协议承保规则字典的数据库操作Mapper
+ * @createDate 2024-2-22 15:44:29
+ */
+public interface PtlAgreementUndwrtRulesDictMapper extends BaseMapper<PtlAgreementUndwrtRulesDict> {
+
+}
+
+
+
+

+ 19 - 0
src/main/java/com/ydtech/modules/protocols/dao/PtlAgreementUndwrtRulesNewMapper.java

@@ -0,0 +1,19 @@
+package com.ydtech.modules.protocols.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsAttrLink;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesNew;
+
+
+/**
+ * @author tz
+ * @description 协议费用的数据库操作Mapper
+ * @createDate 2024-2-22 15:44:29
+ */
+public interface PtlAgreementUndwrtRulesNewMapper extends BaseMapper<PtlAgreementUndwrtRulesNew> {
+
+}
+
+
+
+

+ 310 - 0
src/main/java/com/ydtech/modules/protocols/entity/po/InsFeeOrderNew.java

@@ -0,0 +1,310 @@
+package com.ydtech.modules.protocols.entity.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+*@author: tz
+*@description: 新的费用订单表
+*@create: 2024-2-29 08:36:53
+*/
+
+@TableName(value = "ins_fee_order_new", autoResultMap = true)
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class InsFeeOrderNew {
+    @TableId(value = "id")
+    private String id;
+
+    @ApiModelProperty(value = "子订单id")
+    @TableField(value = "ins_order_no")
+    private String insOrderNo;
+
+    @ApiModelProperty(value = "协议id")
+    @TableField(value = "agreement_id")
+    private String agreementId;
+
+    @ApiModelProperty(value = "交强险保费")
+    @TableField(value = "jq_premium")
+    private BigDecimal jqPremium;
+
+    @ApiModelProperty(value = "商业险保费")
+    @TableField(value = "sy_premium")
+    private BigDecimal syPremium;
+
+    @ApiModelProperty(value = "非车险保费")
+    @TableField(value = "no_premium")
+    private BigDecimal noPremium;
+
+    @ApiModelProperty(value = "交强险保费不含税")
+    @TableField(value = "jq_no_tax_premium")
+    private BigDecimal jqNoTaxPremium;
+
+    @ApiModelProperty(value = "商业险保费不含税")
+    @TableField(value = "sy_no_tax_premium")
+    private BigDecimal syNoTaxPremium;
+
+    @ApiModelProperty(value = "非车险保费不含税")
+    @TableField(value = "no_no_tax_premium")
+    private BigDecimal noNoTaxPremium;
+
+    @ApiModelProperty(value = "交强险费用比例")
+    @TableField(value = "jq_costs_proportion")
+    private BigDecimal jqCostsProportion;
+
+    @ApiModelProperty(value = "商业险费用比例")
+    @TableField(value = "sy_costs_proportion")
+    private BigDecimal syCostsProportion;
+
+    @ApiModelProperty(value = "非车险费用比例")
+    @TableField(value = "no_costs_proportion")
+    private BigDecimal noCostsProportion;
+
+    @ApiModelProperty(value = "交强险总费用")
+    @TableField(value = "jq_costs_premiums")
+    private BigDecimal jqCostsPremiums;
+
+    @ApiModelProperty(value = "商业险总费用")
+    @TableField(value = "sy_costs_premiums")
+    private BigDecimal syCostsPremiums;
+
+    @ApiModelProperty(value = "非车险总费用")
+    @TableField(value = "no_costs_premiums")
+    private BigDecimal noCostsPremiums;
+
+    @ApiModelProperty(value = "交强监管费比例")
+    @TableField(value = "jq_supervise_costs_proportion")
+    private BigDecimal jqSuperviseCostsProportion;
+
+    @ApiModelProperty(value = "交强监管费")
+    @TableField(value = "jq_supervise_costs_premiums")
+    private BigDecimal jqSuperviseCostsPremiums;
+
+    @ApiModelProperty(value = "商业监管费比例")
+    @TableField(value = "sy_supervise_costs_proportion")
+    private BigDecimal sySuperviseCostsProportion;
+
+    @ApiModelProperty(value = "商业监管费")
+    @TableField(value = "sy_supervise_costs_premiums")
+    private BigDecimal sySuperviseCostsPremiums;
+
+    @ApiModelProperty(value = "非车监管费比例")
+    @TableField(value = "no_supervise_costs_proportion")
+    private BigDecimal noSuperviseCostsProportion;
+
+    @ApiModelProperty(value = "非车监管费")
+    @TableField(value = "no_supervise_costs_premiums")
+    private BigDecimal noSuperviseCostsPremiums;
+
+    @ApiModelProperty(value = "交强其他费用比例")
+    @TableField(value = "jq_other_costs_proportion")
+    private BigDecimal jqOtherCostsProportion;
+
+    @ApiModelProperty(value = "交强其他费用")
+    @TableField(value = "jq_other_costs_premiums")
+    private BigDecimal jqOtherCostsPremiums;
+
+    @ApiModelProperty(value = "商业其他费用比例")
+    @TableField(value = "sy_other_costs_proportion")
+    private BigDecimal syOtherCostsProportion;
+
+    @ApiModelProperty(value = "商业其他费用")
+    @TableField(value = "sy_other_costs_premiums")
+    private BigDecimal syOtherCostsPremiums;
+
+    @ApiModelProperty(value = "非车其他费用比例")
+    @TableField(value = "no_other_costs_proportion")
+    private BigDecimal noOtherCostsProportion;
+
+    @ApiModelProperty(value = "非车其他费用")
+    @TableField(value = "no_other_costs_premiums")
+    private BigDecimal noOtherCostsPremiums;
+
+    @ApiModelProperty(value = "交强加投费用比例")
+    @TableField(value = "jq_investment_costs_proportion")
+    private BigDecimal jqInvestmentCostsProportion;
+
+    @ApiModelProperty(value = "交强加投费用")
+    @TableField(value = "jq_investment_costs_premiums")
+    private BigDecimal jqInvestmentCostsPremiums;
+
+    @ApiModelProperty(value = "商业加投费用比例")
+    @TableField(value = "sy_investment_costs_proportion")
+    private BigDecimal syInvestmentCostsProportion;
+
+    @ApiModelProperty(value = "商业加投费用")
+    @TableField(value = "sy_investment_costs_premiums")
+    private BigDecimal syInvestmentCostsPremiums;
+
+
+    @ApiModelProperty(value = "交强一级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_1")
+    private BigDecimal jqDeptProportionLevel1;
+
+    @ApiModelProperty(value = "交强一级机构管理费")
+    @TableField(value = "jq_dept_premiums_level_1")
+    private BigDecimal jqDeptPremiumsLevel1;
+
+    @ApiModelProperty(value = "交强二级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_2")
+    private BigDecimal jqDeptProportionLevel2;
+
+    @ApiModelProperty(value = "交强二级机构管理费")
+    @TableField(value = "jq_dept_premiums_level_2")
+    private BigDecimal jqDeptPremiumsLevel2;
+
+    @ApiModelProperty(value = "交强三级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_3")
+    private BigDecimal jqDeptProportionLevel3;
+
+    @ApiModelProperty(value = "交强三级机构管理费")
+    @TableField(value = "jq_dept_premiums_level_3")
+    private BigDecimal jqDeptPremiumsLevel3;
+
+    @ApiModelProperty(value = "交强四级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_4")
+    private BigDecimal jqDeptProportionLevel4;
+
+    @ApiModelProperty(value = "交强四级机构管理费")
+    @TableField(value = "jq_dept_premiums_level_4")
+    private BigDecimal jqDeptPremiumsLevel4;
+
+    @ApiModelProperty(value = "交强五级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_5")
+    private BigDecimal jqDeptProportionLevel5;
+
+    @ApiModelProperty(value = "交强五级机构管理费")
+    @TableField(value = "jq_dept_premiums_level_5")
+    private BigDecimal jqDeptPremiumsLevel5;
+
+    @ApiModelProperty(value = "交强出口加投比例")
+    @TableField(value = "jq_export_investment_proportion")
+    private BigDecimal jqExportInvestmentProportion;
+
+    @ApiModelProperty(value = "交强出口加投费用")
+    @TableField(value = "jq_export_investment_premiums")
+    private BigDecimal jqExportInvestmentPremiums;
+
+    @ApiModelProperty(value = "商业一级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_1")
+    private BigDecimal syDeptProportionLevel1;
+
+    @ApiModelProperty(value = "商业一级机构管理费")
+    @TableField(value = "sy_dept_premiums_level_1")
+    private BigDecimal syDeptPremiumsLevel1;
+
+    @ApiModelProperty(value = "商业二级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_2")
+    private BigDecimal syDeptProportionLevel2;
+
+    @ApiModelProperty(value = "商业二级机构管理费")
+    @TableField(value = "sy_dept_premiums_level_2")
+    private BigDecimal syDeptPremiumsLevel2;
+
+    @ApiModelProperty(value = "商业三级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_3")
+    private BigDecimal syDeptProportionLevel3;
+
+    @ApiModelProperty(value = "商业三级机构管理费")
+    @TableField(value = "sy_dept_premiums_level_3")
+    private BigDecimal syDeptPremiumsLevel3;
+
+    @ApiModelProperty(value = "商业四级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_4")
+    private BigDecimal syDeptProportionLevel4;
+
+    @ApiModelProperty(value = "商业四级机构管理费")
+    @TableField(value = "sy_dept_premiums_level_4")
+    private BigDecimal syDeptPremiumsLevel4;
+
+    @ApiModelProperty(value = "商业五级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_5")
+    private BigDecimal syDeptProportionLevel5;
+
+    @ApiModelProperty(value = "商业五级机构管理费")
+    @TableField(value = "sy_dept_premiums_level_5")
+    private BigDecimal syDeptPremiumsLevel5;
+
+    @ApiModelProperty(value = "商业出口加投比例")
+    @TableField(value = "sy_export_investment_proportion")
+    private BigDecimal syExportInvestmentProportion;
+
+    @ApiModelProperty(value = "商业出口加投费用")
+    @TableField(value = "sy_export_investment_premiums")
+    private BigDecimal syExportInvestmentPremiums;
+
+    @ApiModelProperty(value = "非车一级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_1")
+    private BigDecimal noDeptProportionLevel1;
+
+    @ApiModelProperty(value = "非车一级机构管理费")
+    @TableField(value = "no_dept_premiums_level_1")
+    private BigDecimal noDeptPremiumsLevel1;
+
+    @ApiModelProperty(value = "非车二级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_2")
+    private BigDecimal noDeptProportionLevel2;
+
+    @ApiModelProperty(value = "非车二级机构管理费")
+    @TableField(value = "no_dept_premiums_level_2")
+    private BigDecimal noDeptPremiumsLevel2;
+
+    @ApiModelProperty(value = "非车三级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_3")
+    private BigDecimal noDeptProportionLevel3;
+
+    @ApiModelProperty(value = "非车三级机构管理费")
+    @TableField(value = "no_dept_premiums_level_3")
+    private BigDecimal noDeptPremiumsLevel3;
+
+    @ApiModelProperty(value = "非车四级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_4")
+    private BigDecimal noDeptProportionLevel4;
+
+    @ApiModelProperty(value = "非车四级机构管理费")
+    @TableField(value = "no_dept_premiums_level_4")
+    private BigDecimal noDeptPremiumsLevel4;
+
+    @ApiModelProperty(value = "非车五级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_5")
+    private BigDecimal noDeptProportionLevel5;
+
+    @ApiModelProperty(value = "非车五级机构管理费")
+    @TableField(value = "no_dept_premiums_level_5")
+    private BigDecimal noDeptPremiumsLevel5;
+
+    @ApiModelProperty(value = "一级分销比例")
+    @TableField(value = "first_detail_proportion")
+    private BigDecimal firstDetailProportion;
+
+    @ApiModelProperty(value = "一级分销费用")
+    @TableField(value = "first_detail_premiums")
+    private BigDecimal firstDetailPremiums;
+
+    @ApiModelProperty(value = "二级分销比例")
+    @TableField(value = "second_detail_proportion")
+    private BigDecimal secondDetailProportion;
+
+    @ApiModelProperty(value = "二级分销费用")
+    @TableField(value = "second_detail_premiums")
+    private BigDecimal secondDetailPremiums;
+
+    @ApiModelProperty(value = "三级分销比例")
+    @TableField(value = "third_detail_proportion")
+    private BigDecimal thirdDetailProportion;
+
+    @ApiModelProperty(value = "三级分销费用")
+    @TableField(value = "third_detail_premiums")
+    private BigDecimal thirdDetailPremiums;
+
+
+}

+ 59 - 0
src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsAttrLink.java

@@ -0,0 +1,59 @@
+package com.ydtech.modules.protocols.entity.po;
+
+import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ydtech.modules.protocol.entity.po.PtlAreaLicense;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 协议费用与规则属性关联表
+ */
+@TableName(value = "ptl_agreement_product_costs_attr_link", autoResultMap = true)
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class PtlAgreementProductCostsAttrLink {
+
+    @TableId(value = "id", type = com.baomidou.mybatisplus.annotation.IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "费用id")
+    @TableField(value = "costs_id")
+    private String costsId;
+
+    @ApiModelProperty(value = "属性id")
+    @TableField(value = "attr_id")
+    private String attrId;
+
+    @ApiModelProperty(value = "属性编码")
+    @TableField(value = "attr_code")
+    private String attrCode;
+
+    @ApiModelProperty(value = "左操作数")
+    @TableField(value = "min")
+    private String min;
+
+    @ApiModelProperty(value = "左操作数数组")
+    @TableField(exist = false)
+    private String[] minArray;
+
+    @ApiModelProperty(value = "操作符")
+    @TableField(value = "operator")
+    private String operator;
+
+    @ApiModelProperty(value = "右操作数")
+    @TableField(value = "max")
+    private String max;
+
+    @TableField(exist = false)
+    private JSONArray dictLabal;
+
+    @ApiModelProperty(value = "关联属性使用")
+    @TableField(exist = false)
+    private PtlAgreementProductCostsAttrLink children;
+}

+ 161 - 0
src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsExport.java

@@ -0,0 +1,161 @@
+package com.ydtech.modules.protocols.entity.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Table;
+import java.util.List;
+
+/**
+ * 协议费用出口比例表
+ */
+@TableName(value = "ptl_agreement_product_costs_export", autoResultMap = true)
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class PtlAgreementProductCostsExport {
+
+    @TableId(value = "id",type= IdType.AUTO)
+    private String id;
+
+    @ApiModelProperty(value = "费用ID")
+    @TableField(value = "costs_id")
+    private String costsId;
+
+    @ApiModelProperty(value = "交强出口比例一级")
+    @TableField(value = "jq_export_radio_level_1")
+    private String jqExportRadioLevel1;
+
+    @ApiModelProperty(value = "交强出口比例二级")
+    @TableField(value = "jq_export_radio_level_2")
+    private String jqExportRadioLevel2;
+
+    @ApiModelProperty(value = "交强出口比例三级")
+    @TableField(value = "jq_export_radio_level_3")
+    private String jqExportRadioLevel3;
+
+    @ApiModelProperty(value = "交强出口比例四级")
+    @TableField(value = "jq_export_radio_level_4")
+    private String jqExportRadioLevel4;
+
+    @ApiModelProperty(value = "交强出口比例五级")
+    @TableField(value = "jq_export_radio_level_5")
+    private String jqExportRadioLevel5;
+
+    @ApiModelProperty(value = "交强出口加投比例")
+    @TableField(value = "jq_export_investment_radio")
+    private String jqExportInvestmentRadio;
+
+
+    @ApiModelProperty(value = "商业出口比例一级")
+    @TableField(value = "sy_export_radio_level_1")
+    private String syExportRadioLevel1;
+
+    @ApiModelProperty(value = "商业出口比例二级")
+    @TableField(value = "sy_export_radio_level_2")
+    private String syExportRadioLevel2;
+
+    @ApiModelProperty(value = "商业出口比例三级")
+    @TableField(value = "sy_export_radio_level_3")
+    private String syExportRadioLevel3;
+
+    @ApiModelProperty(value = "商业出口比例四级")
+    @TableField(value = "sy_export_radio_level_4")
+    private String syExportRadioLevel4;
+
+    @ApiModelProperty(value = "商业出口比例五级")
+    @TableField(value = "sy_export_radio_level_5")
+    private String syExportRadioLevel5;
+
+    @ApiModelProperty(value = "商业出口加投比例")
+    @TableField(value = "sy_export_investment_radio")
+    private String syExportInvestmentRadio;
+
+    @ApiModelProperty(value = "非车出口比例一级")
+    @TableField(value = "no_car_export_radio_level_1")
+    private String noCarExportRadioLevel1;
+
+    @ApiModelProperty(value = "非车出口比例二级")
+    @TableField(value = "no_car_export_radio_level_2")
+    private String noCarExportRadioLevel2;
+
+    @ApiModelProperty(value = "非车出口比例三级")
+    @TableField(value = "no_car_export_radio_level_3")
+    private String noCarExportRadioLevel3;
+
+    @ApiModelProperty(value = "非车出口比例四级")
+    @TableField(value = "no_car_export_radio_level_4")
+    private String noCarExportRadioLevel4;
+
+    @ApiModelProperty(value = "非车出口比例五级")
+    @TableField(value = "no_car_export_radio_level_5")
+    private String noCarExportRadioLevel5;
+
+    @ApiModelProperty(value = "非车出口加投比例")
+    @TableField(value = "no_car_export_investment_radio")
+    private String noCarExportInvestmentRadio;
+
+
+    public void blank(){
+        if(this.jqExportRadioLevel1 == null || this.jqExportRadioLevel1.equals("")){
+            this.jqExportRadioLevel1 = "0";
+        }
+        if(this.jqExportRadioLevel2 == null || this.jqExportRadioLevel2.equals("")){
+            this.jqExportRadioLevel2 = "0";
+        }
+        if(this.jqExportRadioLevel3 == null || this.jqExportRadioLevel3.equals("")){
+            this.jqExportRadioLevel3 = "0";
+        }
+        if(this.jqExportRadioLevel4 == null || this.jqExportRadioLevel4.equals("")){
+            this.jqExportRadioLevel4 = "0";
+        }
+        if(this.jqExportRadioLevel5 == null || this.jqExportRadioLevel5.equals("")){
+            this.jqExportRadioLevel5 = "0";
+        }
+        if(this.jqExportInvestmentRadio == null || this.jqExportInvestmentRadio.equals("")){
+            this.jqExportInvestmentRadio = "0";
+        }
+        if(this.syExportRadioLevel1 == null || this.syExportRadioLevel1.equals("")){
+            this.syExportRadioLevel1 = "0";
+        }
+        if(this.syExportRadioLevel2 == null || this.syExportRadioLevel2.equals("")){
+            this.syExportRadioLevel2 = "0";
+        }
+        if(this.syExportRadioLevel3 == null || this.syExportRadioLevel3.equals("")){
+            this.syExportRadioLevel3 = "0";
+        }
+        if(this.syExportRadioLevel4 == null || this.syExportRadioLevel4.equals("")){
+            this.syExportRadioLevel4 = "0";
+        }
+        if(this.syExportRadioLevel5 == null || this.syExportRadioLevel5.equals("")){
+            this.syExportRadioLevel5 = "0";
+        }
+        if(this.syExportInvestmentRadio == null || this.syExportInvestmentRadio.equals("")){
+            this.syExportInvestmentRadio = "0";
+        }
+        if(this.noCarExportRadioLevel1 == null || this.noCarExportRadioLevel1.equals("")){
+            this.noCarExportRadioLevel1 = "0";
+        }
+        if(this.noCarExportRadioLevel2 == null || this.noCarExportRadioLevel2.equals("")){
+            this.noCarExportRadioLevel2 = "0";
+        }
+        if(this.noCarExportRadioLevel3 == null || this.noCarExportRadioLevel3.equals("")){
+            this.noCarExportRadioLevel3 = "0";
+        }
+        if(this.noCarExportRadioLevel4 == null || this.noCarExportRadioLevel4.equals("")){
+            this.noCarExportRadioLevel4 = "0";
+        }
+        if(this.noCarExportRadioLevel5 == null || this.noCarExportRadioLevel5.equals("")){
+            this.noCarExportRadioLevel5 = "0";
+        }
+        if(this.noCarExportInvestmentRadio == null || this.noCarExportInvestmentRadio.equals("")){
+            this.noCarExportInvestmentRadio = "0";
+        }
+    }
+}

+ 174 - 0
src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsNew.java

@@ -0,0 +1,174 @@
+package com.ydtech.modules.protocols.entity.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 协议费用表
+ */
+@TableName(value = "ptl_agreement_product_costs_new", autoResultMap = true)
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class PtlAgreementProductCostsNew {
+
+    @TableId(value = "id",type= IdType.AUTO)
+    private String id;
+
+    @ApiModelProperty(value = "协议id")
+    @TableField(value = "agreement_id")
+    private String agreementId;
+
+    @ApiModelProperty(value = "产品id")
+    @TableField(value = "product_id")
+    private String productId;
+
+    @ApiModelProperty(value = "产品名称")
+    @TableField(value = "product_name")
+    private String productName;
+
+    @ApiModelProperty(value = "费用比例(交强)")
+    @TableField(value = "jq_car_costs_proportion")
+    private String jqCarCostsProportion;
+
+    @ApiModelProperty(value = "总费用比例(交强)")
+    @TableField(value = "jq_costs_proportion")
+    private String jqCostsProportion;
+
+    @ApiModelProperty(value = "加投比例(交强)")
+    @TableField(value = "jq_costs_proportion_add_invsestment")
+    private String jqCostsProportionAddInvsestment;
+
+    @ApiModelProperty(value = "其他费用比例(交强)")
+    @TableField(value = "jq_car_other_costs_proportion")
+    private String jqCarOtherCostsProportion;
+
+    @ApiModelProperty(value = "费用比例(商业)")
+    @TableField(value = "sy_car_costs_proportion")
+    private String syCarCostsProportion;
+
+    @ApiModelProperty(value = "总费用比例(商业)")
+    @TableField(value = "sy_costs_proportion")
+    private String syCostsProportion;
+
+    @ApiModelProperty(value = "加投比例(商业)")
+    @TableField(value = "sy_costs_proportion_add_invsestment")
+    private String syCostsProportionAddInvsestment;
+
+    @ApiModelProperty(value = "其他费用比例(商业)")
+    @TableField(value = "sy_car_other_costs_proportion")
+    private String syCarOtherCostsProportion;
+
+
+    @ApiModelProperty(value = "费用比例(非车)")
+    @TableField(value = "no_car_costs_proportion")
+    private String noCarCostsProportion;
+
+    @ApiModelProperty(value = "总费用比例(非车)")
+    @TableField(value = "no_costs_proportion")
+    private String noCostsProportion;
+
+    @ApiModelProperty(value = "其他费用比例(非车)")
+    @TableField(value = "no_car_other_costs_proportion")
+    private String noCarOtherCostsProportion;
+
+    @ApiModelProperty(value = "费用描述")
+    @TableField(value = "costs_description")
+    private String costsDescription;
+
+    @ApiModelProperty(value = "费用起期")
+    @TableField(value = "costs_start_date")
+    private String costsStartDate;
+
+    @ApiModelProperty(value = "费用止期")
+    @TableField(value = "costs_end_date")
+    private String costsEndDate;
+
+    @ApiModelProperty(value = "优先级")
+    @TableField(value = "priority_level")
+    private String priorityLevel;
+
+    @ApiModelProperty(value = "生成的描述")
+    @TableField(exist = false)
+    private String desc;
+
+    @ApiModelProperty(value = "交强比例一级")
+    @TableField(exist = false)
+    private String jqExportRadioLevel1;
+
+    @ApiModelProperty(value = "交强比例二级")
+    @TableField(exist = false)
+    private String jqExportRadioLevel2;
+
+    @ApiModelProperty(value = "交强比例三级")
+    @TableField(exist = false)
+    private String jqExportRadioLevel3;
+
+    @ApiModelProperty(value = "交强比例四级")
+    @TableField(exist = false)
+    private String jqExportRadioLevel4;
+
+    @ApiModelProperty(value = "交强比例五级")
+    @TableField(exist = false)
+    private String jqExportRadioLevel5;
+
+    @ApiModelProperty(value = "交强加投比例")
+    @TableField(exist = false)
+    private String jqExportInvestmentRadio;
+
+    @ApiModelProperty(value = "商业比例一级")
+    @TableField(exist = false)
+    private String syExportRadioLevel1;
+
+    @ApiModelProperty(value = "商业比例二级")
+    @TableField(exist = false)
+    private String syExportRadioLevel2;
+
+    @ApiModelProperty(value = "商业比例三级")
+    @TableField(exist = false)
+    private String syExportRadioLevel3;
+
+    @ApiModelProperty(value = "商业比例四级")
+    @TableField(exist = false)
+    private String syExportRadioLevel4;
+
+    @ApiModelProperty(value = "商业比例五级")
+    @TableField(exist = false)
+    private String syExportRadioLevel5;
+
+    @ApiModelProperty(value = "商业加投比例")
+    @TableField(exist = false)
+    private String syExportInvestmentRadio;
+
+    @ApiModelProperty(value = "非车比例一级")
+    @TableField(exist = false)
+    private String noCarExportRadioLevel1;
+
+    @ApiModelProperty(value = "非车比例二级")
+    @TableField(exist = false)
+    private String noCarExportRadioLevel2;
+
+    @ApiModelProperty(value = "非车比例三级")
+    @TableField(exist = false)
+    private String noCarExportRadioLevel3;
+
+    @ApiModelProperty(value = "非车比例四级")
+    @TableField(exist = false)
+    private String noCarExportRadioLevel4;
+
+    @ApiModelProperty(value = "非车比例五级")
+    @TableField(exist = false)
+    private String noCarExportRadioLevel5;
+
+    @TableField(exist = false)
+    private List<PtlAgreementProductCostsAttrLink> costsAttrLinks;
+
+}

+ 66 - 0
src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementUndwrtRulesAttr.java

@@ -0,0 +1,66 @@
+package com.ydtech.modules.protocols.entity.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Table;
+import java.util.List;
+
+/**
+ * 协议承保规则属性
+ */
+@TableName(value = "ptl_agreement_undwrt_rules_attr", autoResultMap = true)
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class PtlAgreementUndwrtRulesAttr {
+
+    @TableId(value = "id", type = com.baomidou.mybatisplus.annotation.IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "属性名称")
+    @TableField(value = "attr_name")
+    private String attrName;
+
+    @ApiModelProperty(value = "属性编码")
+    @TableField(value = "attr_code")
+    private String attrCode;
+
+    @ApiModelProperty(value = "表单类型")
+    @TableField(value = "attr_type")
+    private String attrType;
+
+    @ApiModelProperty(value = "字典Id")
+    @TableField(value = "dict_id")
+    private Integer dictId;
+
+    @ApiModelProperty(value = "分组")
+    @TableField(value = "attr_group")
+    private String attrGroup;
+
+    @ApiModelProperty(value = "排序")
+    @TableField(value = "sort")
+    private Integer sort;
+
+    @TableField(exist = false)
+    private String min;
+
+    @TableField(exist = false)
+    private String[] minArray;
+
+    @TableField(exist = false)
+    private String operator;
+
+    @TableField(exist = false)
+    private String max;
+
+    @TableField(exist = false)
+    private List<PtlAgreementUndwrtRulesDictLabal> dictLabal;
+}

+ 58 - 0
src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementUndwrtRulesAttrLink.java

@@ -0,0 +1,58 @@
+package com.ydtech.modules.protocols.entity.po;
+
+import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 协议承保规则与规则属性关联表
+ */
+@TableName(value = "ptl_agreement_undwrt_rules_attr_link", autoResultMap = true)
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class PtlAgreementUndwrtRulesAttrLink {
+
+    @TableId(value = "id", type = com.baomidou.mybatisplus.annotation.IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "承包规则id")
+    @TableField(value = "rules_id")
+    private String rulesId;
+
+    @ApiModelProperty(value = "属性id")
+    @TableField(value = "attr_id")
+    private String attrId;
+
+    @ApiModelProperty(value = "属性编码")
+    @TableField(value = "attr_code")
+    private String attrCode;
+
+    @ApiModelProperty(value = "左操作数")
+    @TableField(value = "min")
+    private String min;
+
+    @ApiModelProperty(value = "左操作数数组")
+    @TableField(exist = false)
+    private String[] minArray;
+
+    @ApiModelProperty(value = "操作符")
+    @TableField(value = "operator")
+    private String operator;
+
+    @ApiModelProperty(value = "右操作数")
+    @TableField(value = "max")
+    private String max;
+
+    @TableField(exist = false)
+    private JSONArray dictLabal;
+
+    @ApiModelProperty(value = "关联属性使用")
+    @TableField(exist = false)
+    private PtlAgreementUndwrtRulesAttrLink children;
+}

+ 41 - 0
src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementUndwrtRulesDict.java

@@ -0,0 +1,41 @@
+package com.ydtech.modules.protocols.entity.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 协议承保规则属性字典表
+ */
+@TableName(value = "ptl_agreement_undwrt_rules_dict", autoResultMap = true)
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class PtlAgreementUndwrtRulesDict {
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "字典名称")
+    @TableField(value = "name")
+    private String name;
+
+    @ApiModelProperty(value = "字典编码")
+    @TableField(value = "code")
+    private String code;
+
+    @ApiModelProperty(value = "字典备注")
+    @TableField(value = "remark")
+    private String remark;
+
+    @TableField(exist = false)
+    private List<PtlAgreementUndwrtRulesDictLabal> labalList;
+
+}

+ 50 - 0
src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementUndwrtRulesDictLabal.java

@@ -0,0 +1,50 @@
+package com.ydtech.modules.protocols.entity.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 协议承保规则属性字典表
+ */
+@TableName(value = "ptl_agreement_undwrt_rules_dict_labal", autoResultMap = true)
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class PtlAgreementUndwrtRulesDictLabal {
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "父级id")
+    @TableField(value = "parent_id")
+    private Integer parentId;
+
+    @ApiModelProperty(value = "字典id")
+    @TableField(value = "dict_id")
+    private Integer dictId;
+
+    @ApiModelProperty(value = "标签名称")
+    @TableField(value = "name")
+    private String name;
+
+    @ApiModelProperty(value = "标签编码")
+    @TableField(value = "code")
+    private String code;
+
+    @ApiModelProperty(value = "排序")
+    @TableField(value = "sort")
+    private String sort;
+
+    @TableField(exist = false)
+    private List<PtlAgreementUndwrtRulesDictLabal> children;
+
+}

+ 50 - 0
src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementUndwrtRulesNew.java

@@ -0,0 +1,50 @@
+package com.ydtech.modules.protocols.entity.po;
+
+import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 协议费用与规则属性关联表
+ */
+@TableName(value = "ptl_agreement_undwrt_rules_new", autoResultMap = true)
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class PtlAgreementUndwrtRulesNew {
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private String id;
+
+    @ApiModelProperty(value = "协议id")
+    @TableField(value = "agreement_id")
+    private String agreementId;
+
+    @ApiModelProperty(value = "规则类型")
+    @TableField(value = "rules_type")
+    private String rulesType;
+
+    @ApiModelProperty(value = "业务类型")
+    @TableField(value = "product_type")
+    private String productType;
+
+    @ApiModelProperty(value = "规则描述")
+    @TableField(value = "rule_description")
+    private String ruleDescription;
+
+    @ApiModelProperty(value = "是否生效")
+    @TableField(value = "valid_ind")
+    private String validInd;
+
+    @ApiModelProperty(value = "规则属性")
+    @TableField(exist = false)
+    private List<PtlAgreementUndwrtRulesAttrLink> rulesAttrList;
+}

+ 140 - 0
src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductCosts.java

@@ -0,0 +1,140 @@
+package com.ydtech.modules.protocols.entity.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsAttrLink;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AgreementProductCosts {
+
+    @ApiModelProperty(value = "费用id")
+    private String id;
+
+    @ApiModelProperty(value = "协议id")
+    private String agreementId;
+
+    @ApiModelProperty(value = "产品id")
+    private String productId;
+
+    @ApiModelProperty(value = "产品名称")
+    private String productName;
+
+    @ApiModelProperty(value = "费用比例(交强)")
+    private String jqCarCostsProportion;
+
+    @ApiModelProperty(value = "总费用比例(交强)")
+    private String jqCostsProportion;
+
+    @ApiModelProperty(value = "其他费用比例(交强)")
+    private String jqCarOtherCostsProportion;
+
+    @ApiModelProperty(value = "费用比例(商业)")
+    private String syCarCostsProportion;
+
+    @ApiModelProperty(value = "总费用比例(商业)")
+    private String syCostsProportion;
+
+    @ApiModelProperty(value = "其他费用比例(商业)")
+    private String syCarOtherCostsProportion;
+
+    @ApiModelProperty(value = "费用比例(非车)")
+    private String noCarCostsProportion;
+
+    @ApiModelProperty(value = "总费用比例(非车)")
+    private String noCostsProportion;
+
+    @ApiModelProperty(value = "其他费用比例(非车)")
+    private String noCarOtherCostsProportion;
+
+    @ApiModelProperty(value = "费用描述")
+    private String costsDescription;
+
+    @ApiModelProperty(value = "费用起期")
+    private String costsStartDate;
+
+    @ApiModelProperty(value = "费用止期")
+    private String costsEndDate;
+
+    @ApiModelProperty(value = "优先级")
+    private Integer priorityLevel;
+
+    // ---------------
+    // ---------------
+    // ---------------
+    // ---------------
+    // 出口比例
+    // ---------------
+    // ---------------
+    // ---------------
+    // ---------------
+    @ApiModelProperty(value = "交强出口比例一级")
+    private String jqExportRadioLevel1;
+
+    @ApiModelProperty(value = "交强出口比例二级")
+    private String jqExportRadioLevel2;
+
+    @ApiModelProperty(value = "交强出口比例三级")
+    private String jqExportRadioLevel3;
+
+    @ApiModelProperty(value = "交强出口比例四级")
+    private String jqExportRadioLevel4;
+
+    @ApiModelProperty(value = "交强出口比例五级")
+    private String jqExportRadioLevel5;
+
+    @ApiModelProperty(value = "交强出口加投比例")
+    private String jqExportInvestmentRadio;
+
+    @ApiModelProperty(value = "商业出口比例一级")
+    private String syExportRadioLevel1;
+
+    @ApiModelProperty(value = "商业出口比例二级")
+    private String syExportRadioLevel2;
+
+    @ApiModelProperty(value = "商业出口比例三级")
+    private String syExportRadioLevel3;
+
+    @ApiModelProperty(value = "商业出口比例四级")
+    private String syExportRadioLevel4;
+
+    @ApiModelProperty(value = "商业出口比例五级")
+    private String syExportRadioLevel5;
+
+    @ApiModelProperty(value = "商业出口加投比例")
+    private String syExportInvestmentRadio;
+
+    @ApiModelProperty(value = "非车出口比例一级")
+    private String noCarExportRadioLevel1;
+
+    @ApiModelProperty(value = "非车出口比例二级")
+    private String noCarExportRadioLevel2;
+
+    @ApiModelProperty(value = "非车出口比例三级")
+    private String noCarExportRadioLevel3;
+
+    @ApiModelProperty(value = "非车出口比例四级")
+    private String noCarExportRadioLevel4;
+
+    @ApiModelProperty(value = "非车出口比例五级")
+    private String noCarExportRadioLevel5;
+
+    @ApiModelProperty(value = "非车出口加投比例")
+    private String noCarExportInvestmentRadio;
+
+
+    @ApiModelProperty(value = "费用属性")
+    private List<PtlAgreementProductCostsAttrLink> costsAttrLinks;
+
+    /**
+     * 根据code获取费用属性
+     * @param code
+     * @return
+     */
+    public PtlAgreementProductCostsAttrLink getAttrLinkByCode(String code) {
+        return this.getCostsAttrLinks().stream().filter(attrLink -> code.equals(attrLink.getAttrCode())).findFirst().orElse(null);
+    }
+}

+ 167 - 0
src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductCostsSave.java

@@ -0,0 +1,167 @@
+package com.ydtech.modules.protocols.entity.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsAttrLink;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsExport;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttr;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AgreementProductCostsSave {
+
+    private String id;
+
+    @ApiModelProperty(value = "协议id")
+    private String agreementId;
+
+    @ApiModelProperty(value = "产品id")
+    private String productId;
+
+    @ApiModelProperty(value = "产品名称")
+    private String productName;
+
+    @ApiModelProperty(value = "费用比例(交强)")
+    private String jqCarCostsProportion;
+
+    @ApiModelProperty(value = "总费用比例(交强)")
+    private String jqCostsProportion;
+
+    @ApiModelProperty(value = "其他费用比例(交强)")
+    private String jqCarOtherCostsProportion;
+
+    @ApiModelProperty(value = "加投比例(交强)")
+    private String jqCostsProportionAddInvsestment;
+
+    @ApiModelProperty(value = "费用比例(商业)")
+    private String syCarCostsProportion;
+
+    @ApiModelProperty(value = "总费用比例(商业)")
+    private String syCostsProportion;
+
+    @ApiModelProperty(value = "其他费用比例(商业)")
+    private String syCarOtherCostsProportion;
+
+    @ApiModelProperty(value = "加投比例(商业)")
+    private String syCostsProportionAddInvsestment;
+
+    @ApiModelProperty(value = "费用比例(非车)")
+    private String noCarCostsProportion;
+
+    @ApiModelProperty(value = "总费用比例(非车)")
+    private String noCostsProportion;
+
+    @ApiModelProperty(value = "其他费用比例(非车)")
+    private String noCarOtherCostsProportion;
+
+    @ApiModelProperty(value = "费用描述")
+    private String costsDescription;
+
+    @ApiModelProperty(value = "费用起期")
+    private String costsStartDate;
+
+    @ApiModelProperty(value = "费用止期")
+    private String costsEndDate;
+
+    @ApiModelProperty(value = "优先级")
+    private String priorityLevel;
+
+
+    // ---------------
+    // ---------------
+    // ---------------
+    // ---------------
+    // 出口比例
+    // ---------------
+    // ---------------
+    // ---------------
+    // ---------------
+    @ApiModelProperty(value = "交强出口比例一级")
+    private String jqExportRadioLevel1;
+
+    @ApiModelProperty(value = "交强出口比例二级")
+    private String jqExportRadioLevel2;
+
+    @ApiModelProperty(value = "交强出口比例三级")
+    private String jqExportRadioLevel3;
+
+    @ApiModelProperty(value = "交强出口比例四级")
+    private String jqExportRadioLevel4;
+
+    @ApiModelProperty(value = "交强出口比例五级")
+    private String jqExportRadioLevel5;
+
+    @ApiModelProperty(value = "交强出口加投比例")
+    private String jqExportInvestmentRadio;
+
+    @ApiModelProperty(value = "商业出口比例一级")
+    private String syExportRadioLevel1;
+
+    @ApiModelProperty(value = "商业出口比例二级")
+    private String syExportRadioLevel2;
+
+    @ApiModelProperty(value = "商业出口比例三级")
+    private String syExportRadioLevel3;
+
+    @ApiModelProperty(value = "商业出口比例四级")
+    private String syExportRadioLevel4;
+
+    @ApiModelProperty(value = "商业出口比例五级")
+    private String syExportRadioLevel5;
+
+    @ApiModelProperty(value = "商业出口加投比例")
+    private String syExportInvestmentRadio;
+
+    @ApiModelProperty(value = "非车出口比例一级")
+    private String noCarExportRadioLevel1;
+
+    @ApiModelProperty(value = "非车出口比例二级")
+    private String noCarExportRadioLevel2;
+
+    @ApiModelProperty(value = "非车出口比例三级")
+    private String noCarExportRadioLevel3;
+
+    @ApiModelProperty(value = "非车出口比例四级")
+    private String noCarExportRadioLevel4;
+
+    @ApiModelProperty(value = "非车出口比例五级")
+    private String noCarExportRadioLevel5;
+
+    @ApiModelProperty(value = "非车出口加投比例")
+    private String noCarExportInvestmentRadio;
+
+
+
+
+
+    @ApiModelProperty(value = "费用属性")
+    private List<PtlAgreementUndwrtRulesAttr> costsAttrLinks;
+
+
+    /**
+     * 设置出口比例
+     * @return
+     */
+    public void setExportRadio(PtlAgreementProductCostsExport ptlAgreementProductCostsExport) {
+        this.setJqExportRadioLevel1(ptlAgreementProductCostsExport.getJqExportRadioLevel1());
+        this.setJqExportRadioLevel2(ptlAgreementProductCostsExport.getJqExportRadioLevel2());
+        this.setJqExportRadioLevel3(ptlAgreementProductCostsExport.getJqExportRadioLevel3());
+        this.setJqExportRadioLevel4(ptlAgreementProductCostsExport.getJqExportRadioLevel4());
+        this.setJqExportRadioLevel5(ptlAgreementProductCostsExport.getJqExportRadioLevel5());
+        this.setJqExportInvestmentRadio(ptlAgreementProductCostsExport.getJqExportInvestmentRadio());
+        this.setSyExportRadioLevel1(ptlAgreementProductCostsExport.getSyExportRadioLevel1());
+        this.setSyExportRadioLevel2(ptlAgreementProductCostsExport.getSyExportRadioLevel2());
+        this.setSyExportRadioLevel3(ptlAgreementProductCostsExport.getSyExportRadioLevel3());
+        this.setSyExportRadioLevel4(ptlAgreementProductCostsExport.getSyExportRadioLevel4());
+        this.setSyExportRadioLevel5(ptlAgreementProductCostsExport.getSyExportRadioLevel5());
+        this.setSyExportInvestmentRadio(ptlAgreementProductCostsExport.getSyExportInvestmentRadio());
+        this.setNoCarExportRadioLevel1(ptlAgreementProductCostsExport.getNoCarExportRadioLevel1());
+        this.setNoCarExportRadioLevel2(ptlAgreementProductCostsExport.getNoCarExportRadioLevel2());
+        this.setNoCarExportRadioLevel3(ptlAgreementProductCostsExport.getNoCarExportRadioLevel3());
+        this.setNoCarExportRadioLevel4(ptlAgreementProductCostsExport.getNoCarExportRadioLevel4());
+        this.setNoCarExportRadioLevel5(ptlAgreementProductCostsExport.getNoCarExportRadioLevel5());
+        this.setNoCarExportInvestmentRadio(ptlAgreementProductCostsExport.getNoCarExportInvestmentRadio());
+    }
+}

+ 9 - 0
src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductQueryVo.java

@@ -0,0 +1,9 @@
+package com.ydtech.modules.protocols.entity.vo;
+
+import com.ydtech.core.page.PageRequest;
+import lombok.Data;
+
+@Data
+public class AgreementProductQueryVo extends PageRequest {
+    private String agreementId;
+}

+ 40 - 0
src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementUndwrtRules.java

@@ -0,0 +1,40 @@
+package com.ydtech.modules.protocols.entity.vo;
+
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttr;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttrLink;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+*@author: tz
+*@description: 协议承保规则保存实体类
+*@create: 2024-3-4 10:56:16
+*/
+@Data
+public class AgreementUndwrtRules {
+
+    private String id;
+
+
+    @ApiModelProperty(value = "协议id")
+    private String agreementId;
+
+    @ApiModelProperty(value = "规则类型")
+    private String rulesType;
+
+    @ApiModelProperty(value = "业务类型")
+    private String productType;
+
+    @ApiModelProperty(value = "规则描述")
+    private String ruleDescription;
+
+    @ApiModelProperty(value = "是否生效")
+    private String validInd;
+
+    @ApiModelProperty(value = "规则属性")
+    private List<PtlAgreementUndwrtRulesAttrLink> rulesAttrList;
+
+
+}

+ 9 - 0
src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementUndwrtRulesQueryVo.java

@@ -0,0 +1,9 @@
+package com.ydtech.modules.protocols.entity.vo;
+
+import com.ydtech.core.page.PageRequest;
+import lombok.Data;
+
+@Data
+public class AgreementUndwrtRulesQueryVo extends PageRequest {
+    private String agreementId;
+}

+ 41 - 0
src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementUndwrtRulesSave.java

@@ -0,0 +1,41 @@
+package com.ydtech.modules.protocols.entity.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsExport;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttr;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+*@author: tz
+*@description: 协议承保规则保存实体类
+*@create: 2024-3-4 10:56:16
+*/
+@Data
+public class AgreementUndwrtRulesSave {
+
+    private String id;
+
+
+    @ApiModelProperty(value = "协议id")
+    private String agreementId;
+
+    @ApiModelProperty(value = "规则类型")
+    private String rulesType;
+
+    @ApiModelProperty(value = "业务类型")
+    private String productType;
+
+    @ApiModelProperty(value = "规则描述")
+    private String ruleDescription;
+
+    @ApiModelProperty(value = "是否生效")
+    private String validInd;
+
+    @ApiModelProperty(value = "费用属性")
+    private List<PtlAgreementUndwrtRulesAttr> costsAttrLinks;
+
+
+}

+ 14 - 0
src/main/java/com/ydtech/modules/protocols/service/InsFeeOrderNewService.java

@@ -0,0 +1,14 @@
+package com.ydtech.modules.protocols.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsAttrLink;
+
+/**
+*@author: tz
+*@description: 费用计算表 service
+*@create: 2024-2-22 15:44:29
+*/
+public interface InsFeeOrderNewService extends IService<InsFeeOrderNew> {
+
+}

+ 15 - 0
src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsAttrLinkService.java

@@ -0,0 +1,15 @@
+package com.ydtech.modules.protocols.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsAttrLink;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
+import com.ydtech.modules.protocols.entity.vo.AgreementProductCosts;
+
+/**
+*@author: tz
+*@description: 协议承保规则属性 service
+*@create: 2024-2-22 15:44:29
+*/
+public interface PtlAgreementProductCostsAttrLinkService extends IService<PtlAgreementProductCostsAttrLink> {
+
+}

+ 20 - 0
src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsExportService.java

@@ -0,0 +1,20 @@
+package com.ydtech.modules.protocols.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsExport;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttr;
+import com.ydtech.modules.protocols.entity.vo.AgreementProductCosts;
+import com.ydtech.modules.protocols.entity.vo.AgreementProductCostsSave;
+
+import java.util.List;
+
+/**
+*@author: tz
+*@description: 费用出口比例 service
+*@create: 2024-2-22 15:44:29
+*/
+public interface PtlAgreementProductCostsExportService extends IService<PtlAgreementProductCostsExport> {
+
+}

+ 60 - 0
src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsNewService.java

@@ -0,0 +1,60 @@
+package com.ydtech.modules.protocols.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttr;
+import com.ydtech.modules.protocols.entity.vo.AgreementProductCosts;
+import com.ydtech.modules.protocols.entity.vo.AgreementProductCostsSave;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+*@author: tz
+*@description: 协议承保规则属性 service
+*@create: 2024-2-22 15:44:29
+*/
+public interface PtlAgreementProductCostsNewService extends IService<PtlAgreementProductCostsNew> {
+
+    /**
+     * 获取协议费用列表
+     * @param page
+     * @param agreementId
+     * @return
+     */
+    Page<PtlAgreementProductCostsNew> getByAgreementId(Page page, String agreementId);
+
+    /**
+     * 获取协议费用
+     * @param costsId
+     * @return
+     */
+    AgreementProductCostsSave costsGet(String costsId, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList);
+
+    List<AgreementProductCosts> costsGetList(String agreementId);
+
+
+    List<AgreementProductCosts> costsGetList(String agreementId,String productId);
+
+    /**
+     * 添加协议费用
+     * @param agreementProductCosts
+     * @return
+     */
+    boolean costsAdd(AgreementProductCosts agreementProductCosts);
+
+    /**
+     * 更新协议费用
+     * @param agreementProductCosts
+     * @return
+     */
+    boolean costsUpdate(AgreementProductCosts agreementProductCosts);
+
+    /**
+     * 删除协议费用
+     * @param costsId
+     * @return
+     */
+    boolean costsDelete(String costsId);
+}

+ 14 - 0
src/main/java/com/ydtech/modules/protocols/service/PtlAgreementUndwrtRulesAttrLinkService.java

@@ -0,0 +1,14 @@
+package com.ydtech.modules.protocols.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsAttrLink;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttrLink;
+
+/**
+*@author: tz
+*@description: 协议承保规则属性 service
+*@create: 2024-2-22 15:44:29
+*/
+public interface PtlAgreementUndwrtRulesAttrLinkService extends IService<PtlAgreementUndwrtRulesAttrLink> {
+
+}

+ 40 - 0
src/main/java/com/ydtech/modules/protocols/service/PtlAgreementUndwrtRulesAttrService.java

@@ -0,0 +1,40 @@
+package com.ydtech.modules.protocols.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.esm.model.EsmInsCompany;
+import com.ydtech.modules.protocol.entity.dto.PtlAgreementAttributionDto;
+import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
+import com.ydtech.modules.protocol.entity.dto.PtlAgreementSaveDto;
+import com.ydtech.modules.protocol.entity.po.PtlAgreement;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementUndwrtRules;
+import com.ydtech.modules.protocol.entity.vo.*;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttr;
+import com.ydtech.modules.protocols.entity.vo.AgreementProductCosts;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+*@author: tz
+*@description: 协议承保规则属性 service
+*@create: 2024-2-22 15:44:29
+*/
+public interface PtlAgreementUndwrtRulesAttrService extends IService<PtlAgreementUndwrtRulesAttr> {
+
+    /**
+     * 协议承保规则属性列表
+     * @return
+     */
+    List<PtlAgreementUndwrtRulesAttr> getUndwrtRulesAttrList();
+
+    /**
+     * 协议承保规则属性列表进行分类
+     * @return
+     */
+    Map<String,List<PtlAgreementUndwrtRulesAttr>> getUndwrtRulesAttrListType(List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList);
+
+
+}

+ 15 - 0
src/main/java/com/ydtech/modules/protocols/service/PtlAgreementUndwrtRulesDictLabalService.java

@@ -0,0 +1,15 @@
+package com.ydtech.modules.protocols.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesDict;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesDictLabal;
+
+/**
+*@author: tz
+*@description: 协议承保规则字典 service
+*@create: 2024-2-22 15:44:29
+*/
+public interface PtlAgreementUndwrtRulesDictLabalService extends IService<PtlAgreementUndwrtRulesDictLabal> {
+
+
+}

+ 22 - 0
src/main/java/com/ydtech/modules/protocols/service/PtlAgreementUndwrtRulesDictService.java

@@ -0,0 +1,22 @@
+package com.ydtech.modules.protocols.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesDict;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesDictLabal;
+
+import java.util.List;
+
+/**
+*@author: tz
+*@description: 协议承保规则字典 service
+*@create: 2024-2-22 15:44:29
+*/
+public interface PtlAgreementUndwrtRulesDictService extends IService<PtlAgreementUndwrtRulesDict> {
+
+    /**
+     *
+     * @return
+     */
+    List<PtlAgreementUndwrtRulesDictLabal> getUndwrtRulesDictList();
+
+}

+ 45 - 0
src/main/java/com/ydtech/modules/protocols/service/PtlAgreementUndwrtRulesNewService.java

@@ -0,0 +1,45 @@
+package com.ydtech.modules.protocols.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.core.page.PageRequest;
+import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsAttrLink;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttr;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesNew;
+import com.ydtech.modules.protocols.entity.vo.AgreementProductCosts;
+import com.ydtech.modules.protocols.entity.vo.AgreementProductCostsSave;
+import com.ydtech.modules.protocols.entity.vo.AgreementUndwrtRules;
+import com.ydtech.modules.protocols.entity.vo.AgreementUndwrtRulesSave;
+
+import java.util.List;
+
+/**
+*@author: tz
+*@description: 协议承保规则属性 service
+*@create: 2024-2-22 15:44:29
+*/
+public interface PtlAgreementUndwrtRulesNewService extends IService<PtlAgreementUndwrtRulesNew> {
+    AgreementUndwrtRulesSave rulesGet(String costsId, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList);
+
+    List<PtlAgreementUndwrtRulesNew> rulesList(String agreementId);
+
+    Page rulesPage(Page page,String agreementId);
+
+    /**
+     * 添加协议承保规则
+     * @param agreementUndwrtRules
+     * @return
+     */
+    boolean rulesAdd(AgreementUndwrtRules agreementUndwrtRules);
+
+    /**
+     * 更新协议承保规则
+     * @param agreementUndwrtRules
+     * @return
+     */
+    boolean rulesUpdate(AgreementUndwrtRules agreementUndwrtRules);
+
+
+    boolean rulesDelete(String rulesId);
+}

+ 22 - 0
src/main/java/com/ydtech/modules/protocols/service/impl/InsFeeOrderNewServiceImpl.java

@@ -0,0 +1,22 @@
+package com.ydtech.modules.protocols.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.order.entity.InsFeeOrder;
+import com.ydtech.modules.protocols.dao.InsFeeOrderNewMapper;
+import com.ydtech.modules.protocols.dao.PtlAgreementProductCostsAttrLinkMapper;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsAttrLink;
+import com.ydtech.modules.protocols.service.InsFeeOrderNewService;
+import com.ydtech.modules.protocols.service.PtlAgreementProductCostsAttrLinkService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @description 费用结算表 service实现类
+ * @createDate 2024-2-22 15:44:29
+ * @Entity com.ydtech.modules.protocol.entity.po.PtlAgreementUndwrtRulesAttrMapper
+ */
+@Service
+public class InsFeeOrderNewServiceImpl extends ServiceImpl<InsFeeOrderNewMapper, InsFeeOrderNew>
+        implements InsFeeOrderNewService {
+
+}

+ 28 - 0
src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsAttrLinkServiceImpl.java

@@ -0,0 +1,28 @@
+package com.ydtech.modules.protocols.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.protocols.dao.PtlAgreementProductCostsAttrLinkMapper;
+import com.ydtech.modules.protocols.dao.PtlAgreementProductCostsNewMapper;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsAttrLink;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
+import com.ydtech.modules.protocols.entity.vo.AgreementProductCosts;
+import com.ydtech.modules.protocols.service.PtlAgreementProductCostsAttrLinkService;
+import com.ydtech.modules.protocols.service.PtlAgreementProductCostsNewService;
+import com.ydtech.utils.idgen.IdGenerate;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @description 协议承保规则属性 service实现类
+ * @createDate 2024-2-22 15:44:29
+ * @Entity com.ydtech.modules.protocol.entity.po.PtlAgreementUndwrtRulesAttrMapper
+ */
+@Service
+public class PtlAgreementProductCostsAttrLinkServiceImpl extends ServiceImpl<PtlAgreementProductCostsAttrLinkMapper, PtlAgreementProductCostsAttrLink>
+        implements PtlAgreementProductCostsAttrLinkService {
+
+}

+ 36 - 0
src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsExportServiceImpl.java

@@ -0,0 +1,36 @@
+package com.ydtech.modules.protocols.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.protocol.entity.po.PtlAreaLicense;
+import com.ydtech.modules.protocol.service.PtlAreaLicenseService;
+import com.ydtech.modules.protocols.dao.PtlAgreementProductCostsExportMapper;
+import com.ydtech.modules.protocols.dao.PtlAgreementProductCostsNewMapper;
+import com.ydtech.modules.protocols.entity.po.*;
+import com.ydtech.modules.protocols.entity.vo.AgreementProductCosts;
+import com.ydtech.modules.protocols.entity.vo.AgreementProductCostsSave;
+import com.ydtech.modules.protocols.service.PtlAgreementProductCostsAttrLinkService;
+import com.ydtech.modules.protocols.service.PtlAgreementProductCostsExportService;
+import com.ydtech.modules.protocols.service.PtlAgreementProductCostsNewService;
+import com.ydtech.modules.protocols.service.PtlAgreementUndwrtRulesAttrService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @description 费用出口比例 service实现类
+ * @createDate 2024-2-22 15:44:29
+ * @Entity com.ydtech.modules.protocol.entity.po.PtlAgreementUndwrtRulesAttrMapper
+ */
+@Service
+public class PtlAgreementProductCostsExportServiceImpl extends ServiceImpl<PtlAgreementProductCostsExportMapper, PtlAgreementProductCostsExport>
+        implements PtlAgreementProductCostsExportService {
+
+}

+ 384 - 0
src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewServiceImpl.java

@@ -0,0 +1,384 @@
+package com.ydtech.modules.protocols.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
+import com.ydtech.modules.protocol.entity.po.PtlAreaLicense;
+import com.ydtech.modules.protocol.service.PtlAreaLicenseService;
+import com.ydtech.modules.protocols.dao.PtlAgreementProductCostsNewMapper;
+import com.ydtech.modules.protocols.entity.po.*;
+import com.ydtech.modules.protocols.entity.vo.AgreementProductCosts;
+import com.ydtech.modules.protocols.entity.vo.AgreementProductCostsSave;
+import com.ydtech.modules.protocols.service.*;
+import com.ydtech.utils.idgen.IdGenerate;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @description 协议承保规则属性 service实现类
+ * @createDate 2024-2-22 15:44:29
+ * @Entity com.ydtech.modules.protocol.entity.po.PtlAgreementUndwrtRulesAttrMapper
+ */
+@Service
+public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgreementProductCostsNewMapper, PtlAgreementProductCostsNew>
+        implements PtlAgreementProductCostsNewService {
+
+    @Autowired
+    PtlAgreementProductCostsAttrLinkService ptlAgreementProductCostsAttrLinkService;
+
+    @Autowired
+    PtlAreaLicenseService ptlAreaLicenseService;
+
+    @Autowired
+    PtlAgreementUndwrtRulesAttrService ptlAgreementUndwrtRulesAttrService;
+
+    @Autowired
+    PtlAgreementProductCostsExportService ptlAgreementProductCostsExportService;
+
+    @Override
+    public Page<PtlAgreementProductCostsNew> getByAgreementId(Page page, String agreementId) {
+        Page<PtlAgreementProductCostsNew> pages = baseMapper.selectPage(page, new LambdaQueryWrapper<PtlAgreementProductCostsNew>()
+                .eq(PtlAgreementProductCostsNew::getAgreementId, agreementId));
+        //遍历费用列表
+        List<String> ids = new ArrayList<>();
+        pages.getRecords().forEach(x -> {
+            ids.add(x.getId());
+        });
+        //获取出口比例
+        List<PtlAgreementProductCostsExport> ptlAgreementProductCostsExports = ptlAgreementProductCostsExportService.list(new LambdaQueryWrapper<PtlAgreementProductCostsExport>()
+                .in(PtlAgreementProductCostsExport::getCostsId, ids));
+        //获取费用属性
+        List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
+        List<PtlAgreementProductCostsAttrLink> list = ptlAgreementProductCostsAttrLinkService.list(new LambdaQueryWrapper<PtlAgreementProductCostsAttrLink>()
+                .in(PtlAgreementProductCostsAttrLink::getCostsId, ids));
+        Map<String, List<PtlAgreementProductCostsAttrLink>> groupedByCostsId = list.stream()
+                .collect(Collectors.groupingBy(PtlAgreementProductCostsAttrLink::getCostsId));
+        groupedByCostsId.forEach((k, v) -> {
+            pages.getRecords().stream().filter(x -> x.getId().equals(k)).findFirst().ifPresent(x -> x.setDesc(buildDesc(v,undwrtRulesAttrList)));
+        });
+        //赋值出口比例
+        List<PtlAgreementProductCostsNew> records = pages.getRecords();
+        for(int i=0;i<records.size();i++)
+        {
+            int finalI = i;
+            PtlAgreementProductCostsExport ptlAgreementProductCostsExport = ptlAgreementProductCostsExports.stream().filter(y -> y.getCostsId().equals(records.get(finalI).getId())).findFirst().orElse(null);
+            if(!Objects.isNull(ptlAgreementProductCostsExport)) {
+                records.get(i).setJqExportRadioLevel1(ptlAgreementProductCostsExport.getJqExportRadioLevel1());
+                records.get(i).setJqExportRadioLevel2(ptlAgreementProductCostsExport.getJqExportRadioLevel2());
+                records.get(i).setJqExportRadioLevel3(ptlAgreementProductCostsExport.getJqExportRadioLevel3());
+                records.get(i).setJqExportRadioLevel4(ptlAgreementProductCostsExport.getJqExportRadioLevel4());
+                records.get(i).setJqExportRadioLevel5(ptlAgreementProductCostsExport.getJqExportRadioLevel5());
+                records.get(i).setJqExportInvestmentRadio(ptlAgreementProductCostsExport.getJqExportInvestmentRadio());
+                records.get(i).setSyExportRadioLevel1(ptlAgreementProductCostsExport.getSyExportRadioLevel1());
+                records.get(i).setSyExportRadioLevel2(ptlAgreementProductCostsExport.getSyExportRadioLevel2());
+                records.get(i).setSyExportRadioLevel3(ptlAgreementProductCostsExport.getSyExportRadioLevel3());
+                records.get(i).setSyExportRadioLevel4(ptlAgreementProductCostsExport.getSyExportRadioLevel4());
+                records.get(i).setSyExportRadioLevel5(ptlAgreementProductCostsExport.getSyExportRadioLevel5());
+                records.get(i).setSyExportInvestmentRadio(ptlAgreementProductCostsExport.getSyExportInvestmentRadio());
+                records.get(i).setNoCarExportRadioLevel1(ptlAgreementProductCostsExport.getNoCarExportRadioLevel1());
+                records.get(i).setNoCarExportRadioLevel2(ptlAgreementProductCostsExport.getNoCarExportRadioLevel2());
+                records.get(i).setNoCarExportRadioLevel3(ptlAgreementProductCostsExport.getNoCarExportRadioLevel3());
+                records.get(i).setNoCarExportRadioLevel4(ptlAgreementProductCostsExport.getNoCarExportRadioLevel4());
+                records.get(i).setNoCarExportRadioLevel5(ptlAgreementProductCostsExport.getNoCarExportRadioLevel5());
+            }
+        }
+        pages.getRecords().stream().forEach(x -> {
+
+        });
+        return pages;
+    }
+
+    /**
+     * 遍历费用属性描述文字
+     * @param v
+     * @param undwrtRulesAttrList
+     * @return
+     */
+    private String buildDesc(List<PtlAgreementProductCostsAttrLink> v, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList){
+        String desc = "";
+        for(int i=0;i<v.size();i++){
+            int finalI = i;
+            PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr = undwrtRulesAttrList.stream().filter(x -> x.getAttrCode().equals(v.get(finalI).getAttrCode())).findAny().get();
+            //数值范围判断
+            if("inputNumber".equals(ptlAgreementUndwrtRulesAttr.getAttrType()))
+            {
+                desc += inputNumberIdentifying(ptlAgreementUndwrtRulesAttr,v.get(i)) + "\n";
+            }
+            if("radio".equals(ptlAgreementUndwrtRulesAttr.getAttrType()))
+            {
+                desc += radioIdentifying(ptlAgreementUndwrtRulesAttr,v.get(i)) + "\n";
+            }
+            if("checkbox".equals(ptlAgreementUndwrtRulesAttr.getAttrType()) || "select".equals(ptlAgreementUndwrtRulesAttr.getAttrType()))
+            {
+                desc += ptlAgreementUndwrtRulesAttr.getAttrName() + "包含" + v.get(i).getMin() + "\n";
+            }
+        }
+        return desc;
+    }
+
+    private String radioIdentifying(PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr,PtlAgreementProductCostsAttrLink ptlAgreementProductCostsAttrLink){
+        PtlAgreementUndwrtRulesDictLabal ptlAgreementUndwrtRulesDictLabal = ptlAgreementUndwrtRulesAttr.getDictLabal().stream().filter(x -> x.getCode().equals(ptlAgreementProductCostsAttrLink.getMin())).findAny().get();
+        return ptlAgreementUndwrtRulesAttr.getAttrName() + "为" + ptlAgreementUndwrtRulesDictLabal.getName();
+    }
+
+    private String inputNumberIdentifying(PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr,PtlAgreementProductCostsAttrLink ptlAgreementProductCostsAttrLink){
+        if("1".equals(ptlAgreementProductCostsAttrLink.getOperator())){
+            return ptlAgreementUndwrtRulesAttr.getAttrName() + "范围值" + ptlAgreementProductCostsAttrLink.getMin() + "到" + ptlAgreementProductCostsAttrLink.getMax();
+        }else if("2".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
+            return ptlAgreementUndwrtRulesAttr.getAttrName() + "小于" + ptlAgreementProductCostsAttrLink.getMin();
+        }else if("3".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
+            return ptlAgreementUndwrtRulesAttr.getAttrName() + "小于等于" + ptlAgreementProductCostsAttrLink.getMin();
+        }else if("4".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
+            return ptlAgreementUndwrtRulesAttr.getAttrName() + "大于" + ptlAgreementProductCostsAttrLink.getMax();
+        }else if("5".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
+            return ptlAgreementUndwrtRulesAttr.getAttrName() + "大于等于" + ptlAgreementProductCostsAttrLink.getMax();
+        }
+        return "";
+    }
+
+    @Override
+    public AgreementProductCostsSave costsGet(String costsId,List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList) {
+        //设置费用入口信息
+        PtlAgreementProductCostsNew ptlAgreementProductCostsNew = baseMapper.selectOne(new LambdaQueryWrapper<PtlAgreementProductCostsNew>().eq(PtlAgreementProductCostsNew::getId, costsId));
+        if (ptlAgreementProductCostsNew == null) {
+            throw new RuntimeException("费用不存在");
+        }
+        AgreementProductCostsSave agreementProductCosts = new AgreementProductCostsSave();
+        BeanUtils.copyProperties(ptlAgreementProductCostsNew, agreementProductCosts);
+
+        //设置费用出口信息
+        PtlAgreementProductCostsExport ptlAgreementProductCostsExport = ptlAgreementProductCostsExportService.getOne(new LambdaQueryWrapper<PtlAgreementProductCostsExport>()
+                .eq(PtlAgreementProductCostsExport::getCostsId, costsId));
+        if(!Objects.isNull(ptlAgreementProductCostsExport)) {
+            agreementProductCosts.setExportRadio(ptlAgreementProductCostsExport);
+        }
+
+
+        //设置费用因子属性
+        List<PtlAgreementUndwrtRulesAttr> ptlAgreementUndwrtRulesAttrs = new ArrayList<>();
+        List<PtlAgreementProductCostsAttrLink> list = ptlAgreementProductCostsAttrLinkService.list(new LambdaQueryWrapper<PtlAgreementProductCostsAttrLink>()
+                .eq(PtlAgreementProductCostsAttrLink::getCostsId, costsId));
+
+        undwrtRulesAttrList.stream().forEach(x -> {
+            //处理多选和下拉
+            if("checkbox".equals(x.getAttrType()) || "select".equals(x.getAttrType()))
+            {
+                //处理车牌
+                if("select".equals(x.getAttrType()) && "LicenseNo".equals(x.getAttrCode())){
+                    PtlAgreementProductCostsAttrLink licenseNo = list.stream().filter(l -> l.getAttrCode().equals("LicenseNo")).findFirst().orElse(null);
+                    if(licenseNo != null) {
+                        //根据operator 获取车牌的地区id
+                        List<PtlAreaLicense> byParentNumber = ptlAreaLicenseService.getByParentNumber(licenseNo.getOperator());
+                        List<PtlAgreementUndwrtRulesDictLabal> dictLabal = byParentNumber.stream().map(y -> {
+                            PtlAgreementUndwrtRulesDictLabal ptlAgreementUndwrtRulesDictLabal = new PtlAgreementUndwrtRulesDictLabal();
+                            ptlAgreementUndwrtRulesDictLabal.setDictId(y.getId());
+                            ptlAgreementUndwrtRulesDictLabal.setCode(y.getAreaNumber());
+                            ptlAgreementUndwrtRulesDictLabal.setName(y.getLicense());
+                            return ptlAgreementUndwrtRulesDictLabal;
+                        }).collect(Collectors.toList());
+                        x.setDictLabal(dictLabal);
+                    }
+                }
+                x.setMinArray(new String[]{});
+                list.stream().filter(y -> y.getAttrCode().equals(x.getAttrCode())).findFirst().ifPresent(z -> {
+                    if(null != z.getMin()) {
+                        x.setId(z.getId());
+                        x.setMinArray(z.getMin().split(","));
+                        x.setMax(z.getMax());
+                        x.setOperator(z.getOperator());
+                    }
+                });
+            }else{
+                list.stream().filter(y -> y.getAttrCode().equals(x.getAttrCode())).findFirst().ifPresent(z -> {
+                    x.setId(z.getId());
+                    x.setMin(z.getMin());
+                    x.setMax(z.getMax());
+                    x.setOperator(z.getOperator());
+                });
+            }
+
+            ptlAgreementUndwrtRulesAttrs.add(x);
+        });
+
+        agreementProductCosts.setCostsAttrLinks(ptlAgreementUndwrtRulesAttrs);
+
+        return agreementProductCosts;
+    }
+
+    @Override
+    public List<AgreementProductCosts> costsGetList(String agreementId) {
+        List<PtlAgreementProductCostsNew> ptlAgreementProductCostsNews = baseMapper.selectList(new LambdaQueryWrapper<PtlAgreementProductCostsNew>()
+                .eq(PtlAgreementProductCostsNew::getAgreementId, agreementId)
+                .orderBy(true, true, PtlAgreementProductCostsNew::getPriorityLevel));
+
+        List<AgreementProductCosts> agreementProductCosts = new ArrayList<>();
+
+        ptlAgreementProductCostsNews.forEach(news -> {
+            AgreementProductCosts productCosts = new AgreementProductCosts();
+            BeanUtils.copyProperties(news, productCosts);
+            agreementProductCosts.add(productCosts);
+        });
+        if(ptlAgreementProductCostsNews.size() > 0)
+        {
+            List<PtlAgreementProductCostsAttrLink> list = ptlAgreementProductCostsAttrLinkService.list(new LambdaQueryWrapper<PtlAgreementProductCostsAttrLink>()
+                    .in(PtlAgreementProductCostsAttrLink::getCostsId, ptlAgreementProductCostsNews.stream().map(PtlAgreementProductCostsNew::getId).collect(Collectors.toList())));
+            agreementProductCosts.forEach(x -> {
+                List<PtlAgreementProductCostsAttrLink> collect = list.stream().filter(y -> y.getCostsId().equals(x.getId())).collect(Collectors.toList());
+                x.setCostsAttrLinks(collect);
+            });
+        }else{
+            agreementProductCosts.forEach(x -> {
+                x.setCostsAttrLinks(new ArrayList<>());
+            });
+        }
+        return agreementProductCosts;
+    }
+
+    @Override
+    public List<AgreementProductCosts> costsGetList(String agreementId, String productId) {
+
+        List<PtlAgreementProductCostsNew> ptlAgreementProductCostsNews = baseMapper.selectList(new LambdaQueryWrapper<PtlAgreementProductCostsNew>()
+                .eq(PtlAgreementProductCostsNew::getAgreementId, agreementId)
+                .eq(PtlAgreementProductCostsNew::getProductId, productId)
+                .orderBy(true, true, PtlAgreementProductCostsNew::getPriorityLevel));
+
+        List<AgreementProductCosts> agreementProductCosts = new ArrayList<>();
+
+        ptlAgreementProductCostsNews.forEach(news -> {
+            AgreementProductCosts productCosts = new AgreementProductCosts();
+            BeanUtils.copyProperties(news, productCosts);
+            agreementProductCosts.add(productCosts);
+        });
+        if(ptlAgreementProductCostsNews.size() > 0)
+        {
+            List<PtlAgreementProductCostsAttrLink> list = ptlAgreementProductCostsAttrLinkService.list(new LambdaQueryWrapper<PtlAgreementProductCostsAttrLink>()
+                    .in(PtlAgreementProductCostsAttrLink::getCostsId, ptlAgreementProductCostsNews.stream().map(PtlAgreementProductCostsNew::getId).collect(Collectors.toList())));
+            agreementProductCosts.forEach(x -> {
+                List<PtlAgreementProductCostsAttrLink> collect = list.stream().filter(y -> y.getCostsId().equals(x.getId())).collect(Collectors.toList());
+                x.setCostsAttrLinks(collect);
+            });
+        }else{
+            agreementProductCosts.forEach(x -> {
+                x.setCostsAttrLinks(new ArrayList<>());
+            });
+        }
+        return agreementProductCosts;
+    }
+
+    @Transactional
+    @Override
+    public boolean costsAdd(AgreementProductCosts agreementProductCosts) {
+        //添加费用主表信息
+        PtlAgreementProductCostsNew ptlAgreementProductCostsNew = new PtlAgreementProductCostsNew();
+        BeanUtils.copyProperties(agreementProductCosts, ptlAgreementProductCostsNew);
+        int insert = baseMapper.insert(ptlAgreementProductCostsNew);
+
+        //添加费用出口信息
+        PtlAgreementProductCostsExport ptlAgreementProductCostsExport = new PtlAgreementProductCostsExport();
+        BeanUtils.copyProperties(agreementProductCosts, ptlAgreementProductCostsExport);
+        ptlAgreementProductCostsExport.setCostsId(ptlAgreementProductCostsNew.getId());
+        ptlAgreementProductCostsExport.blank();
+        ptlAgreementProductCostsExportService.save(ptlAgreementProductCostsExport);
+
+        //遍历费用属性
+        List<PtlAgreementProductCostsAttrLink> costsAttrLinks = agreementProductCosts.getCostsAttrLinks();
+        List<PtlAgreementProductCostsAttrLink> costsAttrLink = new ArrayList<>();
+        costsAttrLinks.forEach(x -> {
+            //单独处理车牌号
+            if("LicenseNo".equals(x.getAttrCode())){
+                x.setOperator(x.getDictLabal().getJSONObject(0).getString("parentNumber"));
+                x.setCostsId(ptlAgreementProductCostsNew.getId());
+                x.setId(0);
+                costsAttrLink.add(x);
+            }else {
+                if ((!"0".equals(x.getMin()) && null != x.getMin()) || (!"0".equals(x.getMax()) && null != x.getMax())) {
+
+                    x.setCostsId(ptlAgreementProductCostsNew.getId());
+                    x.setId(0);
+                    costsAttrLink.add(x);
+                }
+            }
+        });
+        ptlAgreementProductCostsAttrLinkService.saveBatch(costsAttrLink);
+        return true;
+    }
+
+    @Transactional
+    @Override
+    public boolean costsUpdate(AgreementProductCosts agreementProductCosts) {
+        //更新费用主表信息
+        PtlAgreementProductCostsNew ptlAgreementProductCostsNew = new PtlAgreementProductCostsNew();
+        BeanUtils.copyProperties(agreementProductCosts, ptlAgreementProductCostsNew);
+        int update = baseMapper.updateById(ptlAgreementProductCostsNew);
+
+        //更新费用出口表信息
+        PtlAgreementProductCostsExport ptlAgreementProductCostsExport = ptlAgreementProductCostsExportService.getOne(
+                new LambdaQueryWrapper<PtlAgreementProductCostsExport>()
+                .eq(PtlAgreementProductCostsExport::getCostsId, ptlAgreementProductCostsNew.getId()));
+        if(Objects.isNull(ptlAgreementProductCostsExport)){
+            ptlAgreementProductCostsExport = new PtlAgreementProductCostsExport();
+            BeanUtils.copyProperties(agreementProductCosts, ptlAgreementProductCostsExport);
+            ptlAgreementProductCostsExport.setCostsId(ptlAgreementProductCostsNew.getId());
+            ptlAgreementProductCostsExport.setId(null);
+        }else{
+            //保存原始id
+            String id = ptlAgreementProductCostsExport.getId();
+            BeanUtils.copyProperties(agreementProductCosts, ptlAgreementProductCostsExport);
+            //替换id
+            ptlAgreementProductCostsExport.setId(id);
+        }
+        ptlAgreementProductCostsExportService.saveOrUpdate(ptlAgreementProductCostsExport);
+
+        //设置费用因子属性
+        //先删除属性值
+        ptlAgreementProductCostsAttrLinkService.remove(new LambdaQueryWrapper<PtlAgreementProductCostsAttrLink>()
+                .eq(PtlAgreementProductCostsAttrLink::getCostsId, ptlAgreementProductCostsNew.getId()));
+        List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
+        //再添加属性值
+        List<PtlAgreementProductCostsAttrLink> costsAttrLinks = agreementProductCosts.getCostsAttrLinks();
+        List<PtlAgreementProductCostsAttrLink> costsAttrLink = new ArrayList<>();
+        costsAttrLinks.forEach(x -> {
+            //单独处理车牌号
+            if("LicenseNo".equals(x.getAttrCode()) && (x.getMin() != null && x.getMin() != "")){
+                x.setOperator(x.getDictLabal().getJSONObject(0).getString("parentNumber"));
+                x.setCostsId(ptlAgreementProductCostsNew.getId());
+                x.setId(0);
+                costsAttrLink.add(x);
+            }else {
+                PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr = undwrtRulesAttrList.stream().filter(y -> y.getAttrCode().equals(x.getAttrCode())).findFirst().orElse(null);
+                //单独判断radio  radio中存在0的属性值
+                if("radio".equals(ptlAgreementUndwrtRulesAttr.getAttrType())){
+                    if (null != x.getMin()) {
+
+                        x.setCostsId(ptlAgreementProductCostsNew.getId());
+                        x.setId(0);
+                        costsAttrLink.add(x);
+                    }
+                }else {
+                    if ((!"0".equals(x.getMin()) && null != x.getMin()) || (!"0".equals(x.getMax()) && null != x.getMax())) {
+
+                        x.setCostsId(ptlAgreementProductCostsNew.getId());
+                        x.setId(0);
+                        costsAttrLink.add(x);
+                    }
+                }
+            }
+        });
+        ptlAgreementProductCostsAttrLinkService.saveBatch(costsAttrLink);
+        return true;
+    }
+
+    @Transactional
+    @Override
+    public boolean costsDelete(String costsId) {
+        baseMapper.deleteById(costsId);
+        ptlAgreementProductCostsAttrLinkService.remove(new LambdaQueryWrapper<PtlAgreementProductCostsAttrLink>().eq(PtlAgreementProductCostsAttrLink::getCostsId, costsId));
+        return true;
+    }
+}

+ 21 - 0
src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementUndwrtRulesAttrLinkServiceImpl.java

@@ -0,0 +1,21 @@
+package com.ydtech.modules.protocols.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.protocols.dao.PtlAgreementProductCostsAttrLinkMapper;
+import com.ydtech.modules.protocols.dao.PtlAgreementUndwrtRulesAttrLinkMapper;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsAttrLink;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttrLink;
+import com.ydtech.modules.protocols.service.PtlAgreementProductCostsAttrLinkService;
+import com.ydtech.modules.protocols.service.PtlAgreementUndwrtRulesAttrLinkService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @description 协议承保规则属性 service实现类
+ * @createDate 2024-2-22 15:44:29
+ * @Entity com.ydtech.modules.protocol.entity.po.PtlAgreementUndwrtRulesAttrMapper
+ */
+@Service
+public class PtlAgreementUndwrtRulesAttrLinkServiceImpl extends ServiceImpl<PtlAgreementUndwrtRulesAttrLinkMapper, PtlAgreementUndwrtRulesAttrLink>
+        implements PtlAgreementUndwrtRulesAttrLinkService {
+
+}

+ 69 - 0
src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementUndwrtRulesAttrServiceImpl.java

@@ -0,0 +1,69 @@
+package com.ydtech.modules.protocols.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttr;
+import com.ydtech.modules.protocols.dao.PtlAgreementUndwrtRulesAttrMapper;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesDict;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesDictLabal;
+import com.ydtech.modules.protocols.service.PtlAgreementUndwrtRulesAttrService;
+import com.ydtech.modules.protocols.service.PtlAgreementUndwrtRulesDictLabalService;
+import com.ydtech.modules.protocols.service.PtlAgreementUndwrtRulesDictService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @description 协议承保规则属性 service实现类
+ * @createDate 2024-2-22 15:44:29
+ * @Entity com.ydtech.modules.protocol.entity.po.PtlAgreementUndwrtRulesAttrMapper
+ */
+@Service
+public class PtlAgreementUndwrtRulesAttrServiceImpl extends ServiceImpl<PtlAgreementUndwrtRulesAttrMapper, PtlAgreementUndwrtRulesAttr>
+        implements PtlAgreementUndwrtRulesAttrService {
+
+    @Autowired
+    PtlAgreementUndwrtRulesDictService ptlAgreementUndwrtRulesDictService;
+
+    @Autowired
+    PtlAgreementUndwrtRulesDictLabalService ptlAgreementUndwrtRulesDictLabalService;
+
+    /**
+     * 获取所有规则字典列表
+     *
+     * @return
+     */
+    @Override
+    public List<PtlAgreementUndwrtRulesAttr> getUndwrtRulesAttrList(){
+        List<PtlAgreementUndwrtRulesDictLabal> undwrtRulesDictList = ptlAgreementUndwrtRulesDictService.getUndwrtRulesDictList();
+        List<PtlAgreementUndwrtRulesAttr> list = this.list();
+        list.forEach(attr -> {
+            List<PtlAgreementUndwrtRulesDictLabal> listTmp = undwrtRulesDictList.stream().filter(dict -> attr.getDictId() == dict.getDictId()).collect(Collectors.toList());
+            if(attr.getMinArray() == null)
+                attr.setMinArray(new String[]{});
+            if (attr.getDictLabal() == null)
+                attr.setDictLabal(new ArrayList<>());
+            attr.setDictLabal(listTmp);
+        });
+        return list;
+    }
+
+    @Override
+    public Map<String, List<PtlAgreementUndwrtRulesAttr>> getUndwrtRulesAttrListType(List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList) {
+        Map<String, List<PtlAgreementUndwrtRulesAttr>> collect = new HashMap<>();
+        for (PtlAgreementUndwrtRulesAttr attr : undwrtRulesAttrList) {
+            if (collect.containsKey(attr.getAttrGroup())) {
+                collect.get(attr.getAttrGroup()).add(attr);
+            } else {
+                List<PtlAgreementUndwrtRulesAttr> list = new ArrayList<>();
+                list.add(attr);
+                collect.put(attr.getAttrGroup(), list);
+            }
+        }
+        return collect;
+    }
+
+}

+ 24 - 0
src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementUndwrtRulesDictLabalServiceImpl.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.protocols.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.protocols.dao.PtlAgreementUndwrtRulesDictLabalMapper;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesDictLabal;
+import com.ydtech.modules.protocols.service.PtlAgreementUndwrtRulesDictLabalService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author: tz
+ * @description 协议承保规则属性字典 service实现类
+ * @createDate 2024-2-22 15:44:29
+ * @Entity com.ydtech.modules.protocol.entity.po.PtlAgreementUndwrtRulesdictMapper
+ */
+@Service
+public class PtlAgreementUndwrtRulesDictLabalServiceImpl extends ServiceImpl<PtlAgreementUndwrtRulesDictLabalMapper, PtlAgreementUndwrtRulesDictLabal>
+        implements PtlAgreementUndwrtRulesDictLabalService {
+
+
+}
+
+
+
+

+ 54 - 0
src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementUndwrtRulesDictServiceImpl.java

@@ -0,0 +1,54 @@
+package com.ydtech.modules.protocols.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.protocols.dao.PtlAgreementUndwrtRulesDictMapper;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesDict;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesDictLabal;
+import com.ydtech.modules.protocols.service.PtlAgreementUndwrtRulesDictLabalService;
+import com.ydtech.modules.protocols.service.PtlAgreementUndwrtRulesDictService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Author: tz
+ * @description 协议承保规则属性字典 service实现类
+ * @createDate 2024-2-22 15:44:29
+ * @Entity com.ydtech.modules.protocol.entity.po.PtlAgreementUndwrtRulesdictMapper
+ */
+@Service
+public class PtlAgreementUndwrtRulesDictServiceImpl extends ServiceImpl<PtlAgreementUndwrtRulesDictMapper, PtlAgreementUndwrtRulesDict>
+        implements PtlAgreementUndwrtRulesDictService {
+
+    @Autowired
+    PtlAgreementUndwrtRulesDictLabalService ptlAgreementUndwrtRulesDictLabalService;
+
+
+    /**
+     * 获取所有规则字典列表
+     * @return
+     */
+    @Override
+    public List<PtlAgreementUndwrtRulesDictLabal> getUndwrtRulesDictList() {
+        List<PtlAgreementUndwrtRulesDict> ptlAgreementUndwrtRulesDicts = baseMapper.selectList(new QueryWrapper<>(new PtlAgreementUndwrtRulesDict()));
+        List<PtlAgreementUndwrtRulesDictLabal> list = ptlAgreementUndwrtRulesDictLabalService.list();
+
+        Map<Integer,List<PtlAgreementUndwrtRulesDictLabal>> collect = list.stream().collect(Collectors.groupingBy(PtlAgreementUndwrtRulesDictLabal::getParentId));
+        list = collect.get(0);
+        for(Map.Entry<Integer, List<PtlAgreementUndwrtRulesDictLabal>> map : collect.entrySet()){
+            Integer key = map.getKey();
+            List<PtlAgreementUndwrtRulesDictLabal> value = map.getValue();
+            list.stream().filter(x -> x.getId() == key).forEach(x -> x.setChildren(value));
+        }
+        return list;
+    }
+}
+
+
+
+

+ 222 - 0
src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementUndwrtRulesNewServiceImpl.java

@@ -0,0 +1,222 @@
+package com.ydtech.modules.protocols.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.core.page.PageRequest;
+import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.protocol.entity.po.PtlAgreement;
+import com.ydtech.modules.protocol.entity.po.PtlAreaLicense;
+import com.ydtech.modules.protocol.service.PtlAreaLicenseService;
+import com.ydtech.modules.protocols.dao.PtlAgreementProductCostsAttrLinkMapper;
+import com.ydtech.modules.protocols.dao.PtlAgreementUndwrtRulesNewMapper;
+import com.ydtech.modules.protocols.entity.po.*;
+import com.ydtech.modules.protocols.entity.vo.AgreementProductCostsSave;
+import com.ydtech.modules.protocols.entity.vo.AgreementUndwrtRules;
+import com.ydtech.modules.protocols.entity.vo.AgreementUndwrtRulesSave;
+import com.ydtech.modules.protocols.service.PtlAgreementProductCostsAttrLinkService;
+import com.ydtech.modules.protocols.service.PtlAgreementUndwrtRulesAttrLinkService;
+import com.ydtech.modules.protocols.service.PtlAgreementUndwrtRulesAttrService;
+import com.ydtech.modules.protocols.service.PtlAgreementUndwrtRulesNewService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * @description 协议承保规则属性 service实现类
+ * @createDate 2024-2-22 15:44:29
+ * @Entity com.ydtech.modules.protocol.entity.po.PtlAgreementUndwrtRulesAttrMapper
+ */
+@Service
+public class PtlAgreementUndwrtRulesNewServiceImpl extends ServiceImpl<PtlAgreementUndwrtRulesNewMapper, PtlAgreementUndwrtRulesNew>
+        implements PtlAgreementUndwrtRulesNewService {
+
+    @Autowired
+    private PtlAgreementUndwrtRulesAttrLinkService ptlAgreementUndwrtRulesAttrLinkService;
+
+    @Autowired
+    private PtlAreaLicenseService ptlAreaLicenseService;
+
+    @Autowired
+    private PtlAgreementUndwrtRulesAttrService ptlAgreementUndwrtRulesAttrService;
+
+    @Override
+    public AgreementUndwrtRulesSave rulesGet(String ruleId, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList) {
+        //设置费用入口信息
+        PtlAgreementUndwrtRulesNew ptlAgreementUndwrtRulesNew = baseMapper.selectOne(new LambdaQueryWrapper<PtlAgreementUndwrtRulesNew>().eq(PtlAgreementUndwrtRulesNew::getId, ruleId));
+        AgreementUndwrtRulesSave agreementUndwrtRulesSave = new AgreementUndwrtRulesSave();
+        BeanUtils.copyProperties(ptlAgreementUndwrtRulesNew, agreementUndwrtRulesSave);
+
+
+        //设置费用因子属性
+        List<PtlAgreementUndwrtRulesAttr> ptlAgreementUndwrtRulesAttrs = new ArrayList<>();
+        List<PtlAgreementUndwrtRulesAttrLink> list = ptlAgreementUndwrtRulesAttrLinkService.list(new LambdaQueryWrapper<PtlAgreementUndwrtRulesAttrLink>()
+                .eq(PtlAgreementUndwrtRulesAttrLink::getRulesId, ruleId));
+
+        undwrtRulesAttrList.stream().forEach(x -> {
+            //处理多选和下拉
+            if("checkbox".equals(x.getAttrType()) || "select".equals(x.getAttrType()))
+            {
+                //处理车牌
+                if("select".equals(x.getAttrType()) && "LicenseNo".equals(x.getAttrCode())){
+                    PtlAgreementUndwrtRulesAttrLink licenseNo = list.stream().filter(l -> l.getAttrCode().equals("LicenseNo")).findFirst().orElse(null);
+                    if(licenseNo != null) {
+                        //根据operator 获取车牌的地区id
+                        List<PtlAreaLicense> byParentNumber = ptlAreaLicenseService.getByParentNumber(licenseNo.getOperator());
+                        List<PtlAgreementUndwrtRulesDictLabal> dictLabal = byParentNumber.stream().map(y -> {
+                            PtlAgreementUndwrtRulesDictLabal ptlAgreementUndwrtRulesDictLabal = new PtlAgreementUndwrtRulesDictLabal();
+                            ptlAgreementUndwrtRulesDictLabal.setDictId(y.getId());
+                            ptlAgreementUndwrtRulesDictLabal.setCode(y.getAreaNumber());
+                            ptlAgreementUndwrtRulesDictLabal.setName(y.getLicense());
+                            return ptlAgreementUndwrtRulesDictLabal;
+                        }).collect(Collectors.toList());
+                        x.setDictLabal(dictLabal);
+                    }
+                }
+                x.setMinArray(new String[]{});
+                list.stream().filter(y -> y.getAttrCode().equals(x.getAttrCode())).findFirst().ifPresent(z -> {
+                    if(null != z.getMin()) {
+                        x.setId(z.getId());
+                        x.setMinArray(z.getMin().split(","));
+                        x.setMax(z.getMax());
+                        x.setOperator(z.getOperator());
+                    }
+                });
+            }else{
+                list.stream().filter(y -> y.getAttrCode().equals(x.getAttrCode())).findFirst().ifPresent(z -> {
+                    x.setId(z.getId());
+                    x.setMin(z.getMin());
+                    x.setMax(z.getMax());
+                    x.setOperator(z.getOperator());
+                });
+            }
+
+            ptlAgreementUndwrtRulesAttrs.add(x);
+        });
+
+        agreementUndwrtRulesSave.setCostsAttrLinks(ptlAgreementUndwrtRulesAttrs);
+
+        return agreementUndwrtRulesSave;
+    }
+
+    @Override
+    public List<PtlAgreementUndwrtRulesNew> rulesList(String agreementId) {
+        List<PtlAgreementUndwrtRulesNew> rulesList = baseMapper.selectList(null);
+        List<PtlAgreementUndwrtRulesAttrLink> ptlAgreementUndwrtRulesAttrLinkList = ptlAgreementUndwrtRulesAttrLinkService.list();
+        rulesList.forEach(item->{
+            List<PtlAgreementUndwrtRulesAttrLink> collect = ptlAgreementUndwrtRulesAttrLinkList.stream().filter(x -> Objects.equals(x.getRulesId(), item.getId())).collect(Collectors.toList());
+            item.setRulesAttrList(collect);
+        });
+        return rulesList;
+    }
+
+    @Override
+    public Page rulesPage(Page page,String agreementId) {
+
+        Page<PtlAgreementUndwrtRulesNew> rulesPage = baseMapper.selectPage(page,new LambdaQueryWrapper<PtlAgreementUndwrtRulesNew>()
+                .eq(PtlAgreementUndwrtRulesNew::getAgreementId, agreementId));
+        List<PtlAgreementUndwrtRulesAttrLink> ptlAgreementUndwrtRulesAttrLinkList = ptlAgreementUndwrtRulesAttrLinkService.list();
+        List<PtlAgreementUndwrtRulesNew> records = rulesPage.getRecords();
+        records.forEach(item->{
+            List<PtlAgreementUndwrtRulesAttrLink> collect = ptlAgreementUndwrtRulesAttrLinkList.stream().filter(x -> Objects.equals(x.getRulesId(), item.getId())).collect(Collectors.toList());
+            item.setRulesAttrList(collect);
+        });
+        rulesPage.setRecords(records);
+        return rulesPage;
+    }
+
+    @Transactional
+    @Override
+    public boolean rulesAdd(AgreementUndwrtRules agreementUndwrtRules) {
+        //添加承保规则主表信息
+        PtlAgreementUndwrtRulesNew ptlAgreementUndwrtRulesNew = new PtlAgreementUndwrtRulesNew();
+        BeanUtils.copyProperties(agreementUndwrtRules, ptlAgreementUndwrtRulesNew);
+        ptlAgreementUndwrtRulesNew.setId(null);
+        int insert = baseMapper.insert(ptlAgreementUndwrtRulesNew);
+
+        //遍历承保规则属性
+        List<PtlAgreementUndwrtRulesAttrLink> rulesAttrList = agreementUndwrtRules.getRulesAttrList();
+        List<PtlAgreementUndwrtRulesAttrLink> costsAttrLink = new ArrayList<>();
+        rulesAttrList.forEach(x -> {
+            //单独处理车牌号
+            if("LicenseNo".equals(x.getAttrCode())){
+                x.setOperator(x.getDictLabal().getJSONObject(0).getString("parentNumber"));
+                x.setRulesId(ptlAgreementUndwrtRulesNew.getId());
+                x.setId(0);
+                costsAttrLink.add(x);
+            }else {
+                if ((!"0".equals(x.getMin()) && null != x.getMin()) || (!"0".equals(x.getMax()) && null != x.getMax())) {
+
+                    x.setRulesId(ptlAgreementUndwrtRulesNew.getId());
+                    x.setId(0);
+                    costsAttrLink.add(x);
+                }
+            }
+        });
+        ptlAgreementUndwrtRulesAttrLinkService.saveBatch(costsAttrLink);
+        return true;
+    }
+
+    @Transactional
+    @Override
+    public boolean rulesUpdate(AgreementUndwrtRules agreementUndwrtRules) {
+        //更新费用主表信息
+        PtlAgreementUndwrtRulesNew ptlAgreementUndwrtRulesNew = new PtlAgreementUndwrtRulesNew();
+        BeanUtils.copyProperties(agreementUndwrtRules, ptlAgreementUndwrtRulesNew);
+        int update = baseMapper.updateById(ptlAgreementUndwrtRulesNew);
+
+        //设置费用因子属性
+        //先删除属性值
+        ptlAgreementUndwrtRulesAttrLinkService.remove(new LambdaQueryWrapper<PtlAgreementUndwrtRulesAttrLink>()
+                .eq(PtlAgreementUndwrtRulesAttrLink::getRulesId, ptlAgreementUndwrtRulesNew.getId()));
+        List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
+        //再添加属性值
+        List<PtlAgreementUndwrtRulesAttrLink> costsAttrLinks = agreementUndwrtRules.getRulesAttrList();
+        List<PtlAgreementUndwrtRulesAttrLink> costsAttrLink = new ArrayList<>();
+        costsAttrLinks.forEach(x -> {
+            //单独处理车牌号
+            if("LicenseNo".equals(x.getAttrCode()) && (x.getMin() != null && x.getMin() != "")){
+                x.setOperator(x.getDictLabal().getJSONObject(0).getString("parentNumber"));
+                x.setRulesId(ptlAgreementUndwrtRulesNew.getId());
+                x.setId(0);
+                costsAttrLink.add(x);
+            }else {
+                PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr = undwrtRulesAttrList.stream().filter(y -> y.getAttrCode().equals(x.getAttrCode())).findFirst().orElse(null);
+                //单独判断radio  radio中存在0的属性值
+                if("radio".equals(ptlAgreementUndwrtRulesAttr.getAttrType())){
+                    if (null != x.getMin()) {
+
+                        x.setRulesId(ptlAgreementUndwrtRulesNew.getId());
+                        x.setId(0);
+                        costsAttrLink.add(x);
+                    }
+                }else {
+                    if ((!"0".equals(x.getMin()) && null != x.getMin()) || (!"0".equals(x.getMax()) && null != x.getMax())) {
+
+                        x.setRulesId(ptlAgreementUndwrtRulesNew.getId());
+                        x.setId(0);
+                        costsAttrLink.add(x);
+                    }
+                }
+            }
+        });
+        ptlAgreementUndwrtRulesAttrLinkService.saveBatch(costsAttrLink);
+        return true;
+    }
+
+    @Transactional
+    @Override
+    public boolean rulesDelete(String rulesId) {
+        ptlAgreementUndwrtRulesAttrLinkService.remove(new LambdaQueryWrapper<PtlAgreementUndwrtRulesAttrLink>()
+                .eq(PtlAgreementUndwrtRulesAttrLink::getRulesId, rulesId));
+
+        baseMapper.deleteById(rulesId);
+        return true;
+    }
+}

+ 26 - 0
src/main/resources/mapper/modules/admin/SysUserAccountHistoryMapper.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.admin.dao.SysUserAccountHistoryMapper">
+
+    <resultMap id="BaseResultMap" type="com.ydtech.modules.admin.model.po.SysUserAccountHistory">
+            <id property="id" column="id" jdbcType="BIGINT"/>
+            <result property="amount" column="amount" jdbcType="DECIMAL"/>
+            <result property="surplusAmount" column="surplus_amount" jdbcType="DECIMAL"/>
+            <result property="documentary" column="documentary" jdbcType="TINYINT"/>
+            <result property="property" column="property" jdbcType="TINYINT"/>
+            <result property="suborder" column="suborder" jdbcType="VARCHAR"/>
+            <result property="fromBankCard" column="from_bank_card" jdbcType="VARCHAR"/>
+            <result property="toBankCard" column="to_bank_card" jdbcType="VARCHAR"/>
+            <result property="userId" column="user_id" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,amount,surplus_amount,
+        documentary,property,suborder,
+        from_bank_card,to_bank_card,user_id,
+        create_time
+    </sql>
+</mapper>

+ 19 - 0
src/main/resources/mapper/modules/admin/SysUserAccountMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.admin.dao.SysUserAccountMapper">
+
+    <resultMap id="BaseResultMap" type="com.ydtech.modules.admin.model.po.SysUserAccount">
+            <id property="userId" column="user_id" jdbcType="VARCHAR"/>
+            <result property="handlingFee" column="handling_fee" jdbcType="DECIMAL"/>
+            <result property="documentary" column="documentary" jdbcType="DECIMAL"/>
+            <result property="promotion" column="promotion" jdbcType="DECIMAL"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        user_id,handling_fee,documentary,
+        promotion,create_time
+    </sql>
+</mapper>

+ 19 - 0
src/main/resources/mapper/modules/admin/SysUserBankCardMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.admin.dao.SysUserBankCardMapper">
+
+    <resultMap id="BaseResultMap" type="com.ydtech.modules.admin.model.po.SysUserBankCard">
+            <id property="id" column="id" jdbcType="BIGINT"/>
+            <result property="bankNumber" column="bank_number" jdbcType="VARCHAR"/>
+            <result property="bankAccount" column="bank_account" jdbcType="VARCHAR"/>
+            <result property="userId" column="user_id" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,bank_number,bank_account,
+        user_id,create_time
+    </sql>
+</mapper>

+ 5 - 0
src/main/resources/mapper/modules/inv/InvReceivableMapper.xml

@@ -229,6 +229,7 @@
         a.max_sy_receivable_ratio,
         a.max_non_car_receivable_ratio,
         a.max_receivable,
+        a.revenue_time,
         (a.receivable + if(a.subsidy_amount is null, 0, a.subsidy_amount) )                                                          AS total_receivable_amount,
         if(a.settlement_amount is null, 0, a.settlement_amount) as settlement_amount,
         ( CASE a.clearing_state WHEN 1 THEN '已结算' WHEN 0 THEN '未结算' WHEN 2 THEN '孤儿单' END ) AS clearing_state,
@@ -281,6 +282,7 @@
         ivs.max_sy_receivable_ratio,
         ivs.max_non_car_receivable_ratio,
         ivs.max_receivable,
+        ivs.revenue_time,
         (ivs.receivable + iss.subsidy_amount) as total_receivable_amount,
         iss.settlement_amount,
         CASE
@@ -347,6 +349,9 @@
         <if test="param.nonCarPolicyId != null and param.nonCarPolicyId != ''">
             and a.non_car_policy_id = #{param.nonCarPolicyId}
         </if>
+        <if test="param.revenueTimeStartTime != null and param.revenueTimeStartTime != ''">
+            and a.revenue_time between #{param.revenueTimeStartTime} and #{param.revenueTimeEndTime}
+        </if>
 
     </select>
 

+ 8 - 0
src/main/resources/mapper/modules/inv/InvSourceMapper.xml

@@ -127,6 +127,8 @@
         max_sy_receivable_ratio,
         max_non_car_receivable_ratio,
         max_receivable,
+        revenue_time,
+        revenue_name,
         CASE WHEN DATEDIFF(NOW(), signing_time) > 90 THEN 2 ELSE inv_source.clearing_state END as clearing_state,
         insurance_clearing_state
         from inv_source
@@ -171,6 +173,12 @@
         <if test="param.insuredName != null and param.insuredName != ''">
             and a.insured_name = #{insuredName}
         </if>
+        <if test="param.revenueTimeStartTime != null and param.revenueTimeStartTime != ''">
+            and a.revenue_time between #{param.revenueTimeStartTime} and #{param.revenueTimeEndTime}
+        </if>
+        <if test="param.revenueName != null and param.revenueName != ''">
+            and a.revenue_name = #{revenueName}
+        </if>
     </select>
 
 

+ 1 - 1
src/main/resources/mapper/modules/order/InsOrdersMapper.xml

@@ -384,7 +384,7 @@
         WHERE
         1 = 1
         <if test="orderstatus != null and orderstatus != '' ">
-            and b.orderstatus = #{orderstatus}
+            and b.inside_order_status = #{orderstatus}
         </if>
         <if test="startDate != null ">
             and a.createtime &gt;= #{startDate}