Jelajahi Sumber

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

# Conflicts:
#	src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java
haoyu 2 tahun lalu
induk
melakukan
4983f01e3d
57 mengubah file dengan 1047 tambahan dan 174 penghapusan
  1. 16 0
      sql/Online.sql
  2. 5 0
      src/main/java/com/ydtech/constants/enums/JingyouEnergyTypes.java
  3. 7 2
      src/main/java/com/ydtech/modules/admin/dao/SysUserLinkAreaMapper.java
  4. 7 0
      src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java
  5. 1 1
      src/main/java/com/ydtech/modules/admin/model/dto/SysUserLinkAreaDto.java
  6. 9 0
      src/main/java/com/ydtech/modules/admin/service/SysUserLinkAreaService.java
  7. 11 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserLinkAreaServiceImpl.java
  8. 11 3
      src/main/java/com/ydtech/modules/fee/dto/vo/RuleAttrMappingVo.java
  9. 5 0
      src/main/java/com/ydtech/modules/fee/service/CostsCalcService.java
  10. 51 4
      src/main/java/com/ydtech/modules/fee/service/impl/CostsCalServiceImpl.java
  11. 24 15
      src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java
  12. 13 0
      src/main/java/com/ydtech/modules/ins/model/vo/QuoteRespVo.java
  13. 7 1
      src/main/java/com/ydtech/modules/order/aop/aspect/AuditVerificationAspect.java
  14. 112 1
      src/main/java/com/ydtech/modules/order/aop/aspect/QuoteVerificationAspect.java
  15. 2 2
      src/main/java/com/ydtech/modules/order/controller/YongChengOrderApiController.java
  16. 0 33
      src/main/java/com/ydtech/modules/order/convert/SimpleStadarCarDTOConvert.java
  17. 15 0
      src/main/java/com/ydtech/modules/order/dao/InsAreaCompanyAccidentalDrivingMapper.java
  18. 25 0
      src/main/java/com/ydtech/modules/order/entity/InsAreaCompany.java
  19. 95 0
      src/main/java/com/ydtech/modules/order/entity/InsAreaCompanyAccidentalDriving.java
  20. 6 0
      src/main/java/com/ydtech/modules/order/entity/InsOrders.java
  21. 26 0
      src/main/java/com/ydtech/modules/order/entity/api/zhongmei/response/ModelsQueryResponse.java
  22. 22 0
      src/main/java/com/ydtech/modules/order/entity/vo/SubOrderExportFeeVo.java
  23. 3 0
      src/main/java/com/ydtech/modules/order/entity/vo/guoren/GuorenAccidentalDrivingVo.java
  24. 16 0
      src/main/java/com/ydtech/modules/order/service/InsAreaCompanyAccidentalDrivingService.java
  25. 10 0
      src/main/java/com/ydtech/modules/order/service/InsAreaCompanyService.java
  26. 3 1
      src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java
  27. 9 3
      src/main/java/com/ydtech/modules/order/service/impl/DaJiaOrderServiceImpl.java
  28. 7 1
      src/main/java/com/ydtech/modules/order/service/impl/GuorenOrderApiServiceImpl.java
  29. 33 0
      src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyAccidentalDrivingServiceImpl.java
  30. 42 2
      src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java
  31. 23 3
      src/main/java/com/ydtech/modules/order/service/impl/InsCrawlerOrderServiceImpl.java
  32. 22 4
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
  33. 8 1
      src/main/java/com/ydtech/modules/order/service/impl/YongchengOrderApiServiceImpl.java
  34. 11 8
      src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderApiServiceImpl.java
  35. 13 3
      src/main/java/com/ydtech/modules/order/service/impl/ZijinOrderApiServiceImpl.java
  36. 3 1
      src/main/java/com/ydtech/modules/protocol/controller/PtlAgreementController.java
  37. 2 1
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlAgreementPageVo.java
  38. 3 2
      src/main/java/com/ydtech/modules/protocol/service/PtlAgreementService.java
  39. 5 4
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java
  40. 17 6
      src/main/java/com/ydtech/modules/protocols/controller/PtlNewAgreementController.java
  41. 19 0
      src/main/java/com/ydtech/modules/protocols/dao/PtlAgreementProductCostsTrajectoryMapper.java
  42. 18 18
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsExport.java
  43. 37 0
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsTrajectory.java
  44. 9 0
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementUndwrtRulesNew.java
  45. 3 3
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductCostsSave.java
  46. 6 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductQueryVo.java
  47. 6 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementUndwrtRules.java
  48. 6 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementUndwrtRulesSave.java
  49. 3 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/CostsAuditVo.java
  50. 7 0
      src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsNewService.java
  51. 32 0
      src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsTrajectoryService.java
  52. 97 37
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewServiceImpl.java
  53. 41 0
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsTrajectoryServiceImpl.java
  54. 1 1
      src/main/resources/application-test.yml
  55. 27 0
      src/main/resources/mapper/modules/admin/SysUserLinkAreaMapper.xml
  56. 19 0
      src/main/resources/mapper/modules/admin/SysUserMapper.xml
  57. 16 13
      src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml

+ 16 - 0
sql/Online.sql

@@ -0,0 +1,16 @@
+--  add by hxl   2024-04-27 添加 后线人员关联区域表
+DROP TABLE IF EXISTS `sys_user_link_area`;
+CREATE TABLE `sys_user_link_area`  (
+                                       `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键/自增',
+                                       `user_id` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户id',
+                                       `area_code` int(11) NULL DEFAULT NULL COMMENT '区域编码',
+                                       `create_id` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人ID',
+                                       `create_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人名称',
+                                       `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+                                       `update_id` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人ID',
+                                       `update_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人名称',
+                                       `update_time` datetime NULL DEFAULT NULL COMMENT '修改时间',
+                                       PRIMARY KEY (`id`) USING BTREE,
+                                       INDEX `user_id_index`(`user_id`) USING BTREE COMMENT '用户id索引',
+                                       INDEX `area_code_index`(`area_code`) USING BTREE COMMENT '部门code索引'
+) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '后线人员关联区域表' ROW_FORMAT = Dynamic;

+ 5 - 0
src/main/java/com/ydtech/constants/enums/JingyouEnergyTypes.java

@@ -2,6 +2,7 @@ package com.ydtech.constants.enums;
 
 
 import com.ydtech.constants.enums.dict.insurance.EnergyType;
+import com.ydtech.utils.StringUtils;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 
@@ -47,6 +48,10 @@ public enum JingyouEnergyTypes {
      * @return
      */
     public static String getEnergyTypeByCode(String code) {
+        if(StringUtils.isEmpty(code)){
+            return EnergyType.ET_0.getCode();
+        }
+
         JingyouEnergyTypes jingyouEnergyTypes = valueOf(code);
         return Optional
                 .of(jingyouEnergyTypes)

+ 7 - 2
src/main/java/com/ydtech/modules/admin/dao/SysUserLinkAreaMapper.java

@@ -42,6 +42,11 @@ public interface SysUserLinkAreaMapper extends BaseMapper<SysUserLinkArea> {
      */
     List<SysArea> findAreaListByUserId(@Param("userId") String userId);
 
-
-
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/26 18:28
+     *  @Description: 通过用户id查询绑定的代理人集合
+     */
+    List<String> findAreaIdsByAgentUserId(@Param("userId") String userId);
 }

+ 7 - 0
src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java

@@ -257,6 +257,13 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
      *  @Description: 查询用户分页+区域标志显示
      */
     Page<SysUserBaseVO> findUserListByAreaPage(@Param("page") Page<SysUserBaseVO> page, @Param("user") SysUserDto sysUserDto);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/27 09:55
+     *  @Description:  查询所有的代理人
+     */
+    List<SysUserBaseVO> getAgentUserList();
 }
 
 

+ 1 - 1
src/main/java/com/ydtech/modules/admin/model/dto/SysUserLinkAreaDto.java

@@ -24,5 +24,5 @@ public class SysUserLinkAreaDto extends PageRequest {
     private SysUser sysUser;
 
     @ApiModelProperty("区域信息")
-    private SysArea sysArea;
+    private SysArea area;
 }

+ 9 - 0
src/main/java/com/ydtech/modules/admin/service/SysUserLinkAreaService.java

@@ -63,4 +63,13 @@ public interface SysUserLinkAreaService extends IService<SysUserLinkArea> {
       *  @Description: 查询用户分页
       */
     BasePageResult<SysUserBaseVO> findUserListByPage(SysUserDto sysUserDto);
+
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/27 13:29
+     *  @Description: 查询用户绑定区域的代理人信息
+     */
+    List<String> findUserIdsByLoginUserId(String  userId);
 }

+ 11 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysUserLinkAreaServiceImpl.java

@@ -157,4 +157,15 @@ public class SysUserLinkAreaServiceImpl extends ServiceImpl<SysUserLinkAreaMappe
         return  new BasePageResult<>(sysUserDto.getPageNum(), page.getSize(), userPageResult.getTotal(), page.getPages(),
                 userPageResult.getRecords());
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/27 9:45
+     *  @Description:  获取当前用户绑定区域的代理人ids 或者  代理人机构信息
+     *  1 为用户ids   2 为机构ids
+     */
+    @Override
+    public List<String> findUserIdsByLoginUserId(String  userId) {
+       return  sysUserLinkAreaMapper.findAreaIdsByAgentUserId(userId);
+    }
 }

+ 11 - 3
src/main/java/com/ydtech/modules/fee/dto/vo/RuleAttrMappingVo.java

@@ -104,7 +104,7 @@ public class RuleAttrMappingVo {
 
         CustomerInfoVo ownerInfo = insOrders.getOwnerinfo().toJavaObject(CustomerInfoVo.class);
         //车主 证件号码(前6位)
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersIDNumber", ownerInfo.getIdentifyNumber().substring(0, 6)));
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersIDNumber", ownerInfo.getIdentifyNumber()));
         //车主 年龄
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersAge", ownerInfo.getAge()));
         //车主 性别
@@ -114,7 +114,7 @@ public class RuleAttrMappingVo {
 
         CustomerInfoVo policyHolderInfo = insOrders.getApplyinfo().toJavaObject(CustomerInfoVo.class);
         //投保人 证件号码(前6位)
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantIDNumber", policyHolderInfo.getIdentifyNumber().substring(0, 6)));
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantIDNumber", policyHolderInfo.getIdentifyNumber()));
         //投保人 年龄
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantAge", policyHolderInfo.getAge()));
         //投保人 性别
@@ -122,7 +122,7 @@ public class RuleAttrMappingVo {
 
         CustomerInfoVo insuredPersonInfo = insOrders.getInsureinfo().toJavaObject(CustomerInfoVo.class);
         //被保人 证件号码(前6位)
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredIDNumber", insuredPersonInfo.getIdentifyNumber().substring(0, 6)));
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredIDNumber", insuredPersonInfo.getIdentifyNumber()));
         //被保人 年龄
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredAge", insuredPersonInfo.getAge()));
         //被保人 性别
@@ -255,6 +255,14 @@ public class RuleAttrMappingVo {
 //        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NumberOfClaims", insAreaCompany.getAccidentInfoStr()));
         //太平的分区
 //        ruleAttrMappingVoList.add(new RuleAttrMappingVo("PeacefulDistrict", quoteRespVo.getExtendInfo()));
+        //太平绿黄红区
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("GreenYellowAndRedAreas", insAreaCompany.getTpColorScore()));
+        //非车名称
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NonCarName", insAreaCompany.getAccidentalDriving().getRideRiskName()));
+        //非车份数
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NonCarQuantity",String.valueOf(insAreaCompany.getAccidentalDriving().getQuantity())));
+        //真假单交
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("IsDJQ",insAreaCompany.getIsDjq()));
         return ruleAttrMappingVoList;
     }
 }

+ 5 - 0
src/main/java/com/ydtech/modules/fee/service/CostsCalcService.java

@@ -7,6 +7,8 @@ import com.ydtech.modules.fee.dto.vo.ExportFee;
 import com.ydtech.modules.fee.dto.vo.RetailStoreFee;
 import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
 import com.ydtech.modules.order.entity.vo.QueryOrderFeeVo;
+import com.ydtech.modules.order.entity.vo.SubOrderExportFeeVo;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
 
 import java.math.BigDecimal;
 
@@ -57,4 +59,7 @@ public interface CostsCalcService {
      * @return
      */
     ExportFee getExportFee(String insuranceType,EntranceFee entranceFee,DeptManagerFee deptManagerFee, RetailStoreFee retailStoreFee,BigDecimal exportProceduresRadio);
+
+
+    SubOrderExportFeeVo getExportFee(InsFeeOrderNew insFeeOrderNew);
 }

+ 51 - 4
src/main/java/com/ydtech/modules/fee/service/impl/CostsCalServiceImpl.java

@@ -28,10 +28,7 @@ import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.order.service.InsCopyFeeOrderService;
 import com.ydtech.modules.order.service.InsFeeOrderService;
 import com.ydtech.modules.order.service.InsOrdersService;
-import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
-import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
-import com.ydtech.modules.protocol.entity.po.PtlAgreementUndwrtRules;
-import com.ydtech.modules.protocol.entity.po.PtlNewCarJudgeRules;
+import com.ydtech.modules.protocol.entity.po.*;
 import com.ydtech.modules.protocol.service.*;
 import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
 import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
@@ -65,6 +62,10 @@ public class CostsCalServiceImpl implements CostsCalcService {
     @Autowired
     private EsmUserReferrerService esmUserReferrerService;
 
+    @Autowired
+    private PtlAgreementService ptlAgreementService;
+
+
     @Override
     public EntranceFee getEntranceFee(String insuranceType, BigDecimal jqPremium, BigDecimal feeRadio, BigDecimal documentFeeRadio) {
         EntranceFee entranceFee = new EntranceFee();
@@ -175,4 +176,50 @@ public class CostsCalServiceImpl implements CostsCalcService {
         exportFee.setTotalAmount(exportFee.getSuperviseCostsPremiums().add(exportFee.getOtherCostsPremiums().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
         return exportFee;
     }
+
+    @Override
+    public SubOrderExportFeeVo getExportFee(InsFeeOrderNew insFeeOrderNew) {
+        //查询协议是否包含税
+        PtlAgreement ptlAgreement = ptlAgreementService.getById(insFeeOrderNew.getAgreementId());
+        BigDecimal taxRadio = new BigDecimal("1.00");
+        if(ptlAgreement.getWithTax().equals("是")){
+            taxRadio = new BigDecimal("1.06");
+        }
+        SubOrderExportFeeVo subOrderExportFeeVo = new SubOrderExportFeeVo();
+
+        //计算出口费用
+
+        //分销管理比例总和
+        BigDecimal retailStoreProportion = insFeeOrderNew.getFirstDetailProportion().add(insFeeOrderNew.getSecondDetailProportion()).add(insFeeOrderNew.getThirdDetailProportion());
+
+
+        //交强入口比例总和
+        BigDecimal jqEntranceProportion = insFeeOrderNew.getJqSuperviseCostsProportion().add(insFeeOrderNew.getJqOtherCostsProportion());
+        //交强机构管理费
+        BigDecimal jqDeptProportion = insFeeOrderNew.getJqDeptProportionLevel1().add(insFeeOrderNew.getJqDeptProportionLevel2()).add(insFeeOrderNew.getJqDeptProportionLevel3()).add(insFeeOrderNew.getJqDeptProportionLevel4()).add(insFeeOrderNew.getJqDeptProportionLevel5());
+        //交强出口总比例
+        BigDecimal jqExportProportion = jqEntranceProportion.subtract(jqDeptProportion).subtract(retailStoreProportion);
+        //交强出口金额
+        subOrderExportFeeVo.setJqExportCosts(insFeeOrderNew.getJqPremium().multiply(taxRadio).multiply(jqExportProportion.divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
+
+        //商业入口比例总和
+        BigDecimal syEntranceProportion = insFeeOrderNew.getSySuperviseCostsProportion().add(insFeeOrderNew.getSyOtherCostsProportion());
+        //商业部门管理比例总和
+        BigDecimal syDeptProportion = insFeeOrderNew.getSyDeptProportionLevel1().add(insFeeOrderNew.getSyDeptProportionLevel2()).add(insFeeOrderNew.getSyDeptProportionLevel3()).add(insFeeOrderNew.getSyDeptProportionLevel4()).add(insFeeOrderNew.getSyDeptProportionLevel5());
+        //商业出口比例总和
+        BigDecimal syExportProportion = syEntranceProportion.subtract(syDeptProportion).subtract(retailStoreProportion);
+        //商业出口金额
+        subOrderExportFeeVo.setSyExportCosts(insFeeOrderNew.getSyPremium().multiply(taxRadio).multiply(syExportProportion.divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
+
+        //非车入口比例总和
+        BigDecimal noEntranceProportion = insFeeOrderNew.getNoSuperviseCostsProportion().add(insFeeOrderNew.getNoOtherCostsProportion());
+        //非车部门比例总和
+        BigDecimal noDeptProportion = insFeeOrderNew.getNoDeptProportionLevel1().add(insFeeOrderNew.getNoDeptProportionLevel2()).add(insFeeOrderNew.getNoDeptProportionLevel3()).add(insFeeOrderNew.getNoDeptProportionLevel4()).add(insFeeOrderNew.getNoDeptProportionLevel5());
+        //非车出口比例总和
+        BigDecimal noExportProportion = noEntranceProportion.subtract(noDeptProportion).subtract(retailStoreProportion);
+        //非车出口金额
+        subOrderExportFeeVo.setNoExportCosts(insFeeOrderNew.getNoPremium().multiply(taxRadio).multiply(noExportProportion.divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
+
+        return subOrderExportFeeVo;
+    }
 }

+ 24 - 15
src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java

@@ -183,7 +183,8 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
         insFeeOrderNew.setJqNoTaxPremium(insAreaCompany.getJqpremium().divide(taxRadio,2));
         insFeeOrderNew.setSyNoTaxPremium(insAreaCompany.getSypremium().divide(taxRadio,2));
         insFeeOrderNew.setNoNoTaxPremium(insAreaCompany.getJypremium().divide(taxRadio,2));
-        //计算入口费用
+
+        //region 计算入口费用
 
         //交强险总费用比例 + 加投比例
         insFeeOrderNew.setJqCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getJqCostsProportion()));
@@ -193,6 +194,8 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
                 jqCostsProportion.divide(new BigDecimal("100"));
         insFeeOrderNew.setJqCostsPremiums(insFeeOrderNew.getJqNoTaxPremium().multiply(jqCostsProportion));
 
+
+
         //商业险总费用比例 + 加投比例
         insFeeOrderNew.setSyCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getSyCostsProportion()));
         BigDecimal syCostsProportion = new BigDecimal(ptlAgreementProductCostsNew.getSyCostsProportion());
@@ -257,12 +260,9 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
         insFeeOrderNew.setSyInvestmentCostsPremiums(insFeeOrderNew.getSyNoTaxPremium().multiply(
                 new BigDecimal(ptlAgreementProductCostsNew.getSyCostsProportionAddInvsestment()).divide(new BigDecimal("100"))
         ));
+        //endregion
 
-
-        //设置出口费用
-
-
-
+        //region 设置出口费用
         //设置出口费用
         //每级的加投费用为 计算出每级管理费的占比   *   加投费用
         //(一级管理费比例 / 总费用比例) * 加投费用
@@ -320,10 +320,10 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
                 insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel5()).divide(new BigDecimal("100")).add(jqInvestmentCostsLevel5)
         );
 
-        insFeeOrderNew.setJqExportInvestmentProportion(ptlAgreementProductCostsExport.getJqExportInvestmentRadio());
-        insFeeOrderNew.setJqExportInvestmentPremiums(
-                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqExportInvestmentProportion()).divide(new BigDecimal("100"))
-        );
+//        insFeeOrderNew.setJqExportInvestmentProportion(ptlAgreementProductCostsExport.getJqExportInvestmentRadio());
+//        insFeeOrderNew.setJqExportInvestmentPremiums(
+//                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqExportInvestmentProportion()).divide(new BigDecimal("100"))
+//        );
 
         //商业管理比例
         insFeeOrderNew.setSyDeptProportionLevel1(ptlAgreementProductCostsExport.getSyExportRadioLevel1());
@@ -352,10 +352,10 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
                 insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyDeptProportionLevel5()).divide(new BigDecimal("100")).add(syInvestmentCostsLevel5)
         );
 
-        insFeeOrderNew.setSyExportInvestmentProportion(ptlAgreementProductCostsExport.getSyExportInvestmentRadio());
-        insFeeOrderNew.setSyExportInvestmentPremiums(
-                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyExportInvestmentProportion()).divide(new BigDecimal("100"))
-        );
+//        insFeeOrderNew.setSyExportInvestmentProportion(ptlAgreementProductCostsExport.getSyExportInvestmentRadio());
+//        insFeeOrderNew.setSyExportInvestmentPremiums(
+//                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyExportInvestmentProportion()).divide(new BigDecimal("100"))
+//        );
 
 
         //非车管理比例
@@ -385,8 +385,9 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
                 insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoDeptProportionLevel5()).divide(new BigDecimal("100"))
         );
 
+        //endregion
 
-        //计算分销费用
+        //region 计算分销费用
         InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
         SysUser sysUser = sysUserService.findByUserId(insOrders.getUserid());
 
@@ -427,6 +428,9 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
                 }
             }
         }
+
+        //endregion
+
         insFeeOrderNewService.saveOrUpdate(insFeeOrderNew);
     }
 
@@ -695,6 +699,11 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
         }else if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("inputNumber")){
             return inputNumberEqual(ptlAgreementProductCostsAttrLink,value);
         }else if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("input")){
+            //截取身份证号码
+            if(ptlAgreementProductCostsAttrLink.getAttrCode().equals("CarOwnersIDNumber") || ptlAgreementProductCostsAttrLink.getAttrCode().equals("ApplicantIDNumber") ||
+                    ptlAgreementProductCostsAttrLink.getAttrCode().equals("InsuredIDNumber")){
+                value = value.substring(0,ptlAgreementProductCostsAttrLink.getMin().length());
+            }
             return inputTextEqual(ptlAgreementProductCostsAttrLink,value);
         }else if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("select")){
             //截取车牌

+ 13 - 0
src/main/java/com/ydtech/modules/ins/model/vo/QuoteRespVo.java

@@ -11,6 +11,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Collections;
 import java.util.List;
 
@@ -137,6 +138,18 @@ public class QuoteRespVo {
     @ApiModelProperty("预核保信息")
     private List<PreUnderwritingInfoDTO> predictInfo;
 
+    /**
+     * 出口返点信息   后置处理器处理
+     */
+    @ApiModelProperty("交强出口费用")
+    private BigDecimal jqExportFee;
+
+    @ApiModelProperty("商业出口费用")
+    private BigDecimal syExportFee;
+
+    @ApiModelProperty("非车出口费用")
+    private BigDecimal noExportFee;
+
 
     public List<AccidentResponseVo> getAccidentInfo() {
         return accident == null ? Collections.emptyList() : accident;

+ 7 - 1
src/main/java/com/ydtech/modules/order/aop/aspect/AuditVerificationAspect.java

@@ -6,8 +6,10 @@ import com.ydtech.modules.admin.service.SysUserRoleService;
 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.InsAreaCompanyAccidentalDriving;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.vo.SpecialAuditVo;
+import com.ydtech.modules.order.service.InsAreaCompanyAccidentalDrivingService;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.order.service.InsOrdersService;
 import com.ydtech.modules.protocol.service.PtlAgreementDeptService;
@@ -39,6 +41,8 @@ public class AuditVerificationAspect {
 
     private final InsOrdersService insOrdersService;
 
+    private final InsAreaCompanyAccidentalDrivingService insAreaCompanyAccidentalDrivingService;
+
     @Before("@annotation(com.ydtech.modules.order.aop.AuditVerification)")
     public void doBefore(JoinPoint point) {
         Object[] args = point.getArgs();
@@ -52,13 +56,15 @@ public class AuditVerificationAspect {
                 companyId = arg.toString();
             }
             InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(companyId);
+            InsAreaCompanyAccidentalDriving insAreaCompanyAccidentalDriving = insAreaCompanyAccidentalDrivingService.getByCompanyId(insAreaCompany.getId());
+            insAreaCompany.setAccidentalDriving(insAreaCompanyAccidentalDriving);
             InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
 
             //再进行费用因子判断
             try {
                 //先进行承保规则判断
                 feeRuleSchemeNewService.verificationRuleFactor(insAreaCompany, insOrders);
-                feeRuleSchemeNewService.verificationCostFactor(insAreaCompany, insOrders);
+//                feeRuleSchemeNewService.verificationCostFactor(insAreaCompany, insOrders);
             } catch (Exception ignored) {
                 System.out.printf("费用因子匹配失败:" + ignored.getMessage());
             }

+ 112 - 1
src/main/java/com/ydtech/modules/order/aop/aspect/QuoteVerificationAspect.java

@@ -2,23 +2,40 @@ package com.ydtech.modules.order.aop.aspect;
 
 
 import com.ydtech.constants.enums.InsuranceRisk;
+import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.constants.enums.dict.agreement.ProductsType;
 import com.ydtech.constants.sys.SystemConstant;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.SysUserRole;
 import com.ydtech.modules.admin.service.SysUserRoleService;
-import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.fee.service.CostsCalcService;
+import com.ydtech.modules.fee.service.FeeRuleSchemeNewService;
+import com.ydtech.modules.esm.model.EsmInsCompany;
+import com.ydtech.modules.esm.service.EsmInsCompanyService;
 import com.ydtech.modules.ins.model.vo.KindInfoVo;
+import com.ydtech.modules.ins.model.vo.QuoteRespVo;
 import com.ydtech.modules.ins.model.vo.RiskInfoVo;
 import com.ydtech.modules.order.components.InsOrdersComponents;
+import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsAreaCompanyAccidentalDriving;
+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.entity.vo.SubOrderExportFeeVo;
+import com.ydtech.modules.order.service.InsAreaCompanyAccidentalDrivingService;
+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.modules.protocols.entity.po.InsFeeOrderNew;
+import com.ydtech.modules.protocols.service.InsFeeOrderNewService;
 import com.ydtech.utils.StringUtils;
+import com.ydtech.utils.idgen.IdGenerate;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.AfterReturning;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Before;
 import org.springframework.stereotype.Component;
@@ -40,6 +57,45 @@ public class QuoteVerificationAspect {
 
     private final TaxSourceServiceImpl taxSourceService;
 
+    private final EsmInsCompanyService esmInsCompanyService;
+
+    private final InsAreaCompanyService insAreaCompanyService;
+
+    private final InsAreaCompanyAccidentalDrivingService insAreaCompanyAccidentalDrivingService;
+
+    private final InsOrdersService insOrdersService;
+
+    private final FeeRuleSchemeNewService feeRuleSchemeNewService;
+
+    private final CostsCalcService costsCalcService;
+
+    private final InsFeeOrderNewService insFeeOrderNewService;
+
+    @AfterReturning(pointcut = "@annotation(com.ydtech.modules.order.aop.QuoteVerification)", returning = "result")
+    public void doAfter(HttpResult<QuoteRespVo> result){
+        //计算费用因子
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(result.getData().getCompanyId());
+        InsAreaCompanyAccidentalDriving insAreaCompanyAccidentalDriving = insAreaCompanyAccidentalDrivingService.getByCompanyId(insAreaCompany.getId());
+        insAreaCompany.setAccidentalDriving(insAreaCompanyAccidentalDriving);
+        InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
+
+        //再进行费用因子判断
+        try {
+            feeRuleSchemeNewService.verificationCostFactor(insAreaCompany, insOrders);
+            InsFeeOrderNew insFeeOrderNew = insFeeOrderNewService.getInsFeeOrderNewByCompanyId(insAreaCompany.getId());
+            if(insFeeOrderNew == null){
+                throw new RuntimeException("费用因子匹配失败");
+            }
+            //出口
+            SubOrderExportFeeVo subOrderExportFeeVo = costsCalcService.getExportFee(insFeeOrderNew);
+
+            result.getData().setJqExportFee(subOrderExportFeeVo.getJqExportCosts());
+            result.getData().setSyExportFee(subOrderExportFeeVo.getSyExportCosts());
+            result.getData().setNoExportFee(subOrderExportFeeVo.getNoExportCosts());
+        } catch (Exception ignored) {
+            System.out.printf("费用因子匹配失败:" + ignored.getMessage());
+        }
+    }
 
     @Before("@annotation(com.ydtech.modules.order.aop.QuoteVerification)")
     public void doBefore(JoinPoint point) {
@@ -103,4 +159,59 @@ public class QuoteVerificationAspect {
         }
     }
 
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/27 15:18
+     *  @Description: 添加报价接口的报价失败状态的后置通知
+     */
+   // @AfterReturning(value="@annotation(com.ydtech.modules.order.aop.QuoteVerification)", returning="response")
+    public void after(JoinPoint point, HttpResult response) {
+        Object[] args = point.getArgs();
+        if (response.getCode() != 200) {
+            //报价失败 查询信息的信息表
+            for (Object arg : args) {
+                if (arg instanceof BaseQuoteVo) {
+                    String companyId = ((BaseQuoteVo<?>) arg).getCompanyId();
+                    String agreementId = ((BaseQuoteVo<?>) arg).getAgreementId();
+                    String orderno = ((BaseQuoteVo<?>) arg).getOrderNo();
+                    insertInsAreaCompany(companyId, orderno, agreementId);
+                }
+            }
+        }
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/27 16:54
+     *  @Description: 添加报价接口的报价失败状态的异常通知
+     */
+    //@AfterThrowing(pointcut="@annotation(com.ydtech.modules.order.aop.QuoteVerification)", throwing="ex")
+    public void handleException(JoinPoint point, Exception ex) {
+        // 处理异常的逻辑
+        Object[] args = point.getArgs();
+        //报价失败 查询信息的信息表
+        for (Object arg : args) {
+            if (arg instanceof BaseQuoteVo) {
+                String companyId = ((BaseQuoteVo<?>) arg).getCompanyId();
+                String agreementId = ((BaseQuoteVo<?>) arg).getAgreementId();
+                String orderno = ((BaseQuoteVo<?>) arg).getOrderNo();
+                insertInsAreaCompany(companyId, orderno, agreementId);
+            }
+        }
+    }
+    public void insertInsAreaCompany(String companyId, String orderno, String agreementId) {
+        EsmInsCompany esmInsCompany = esmInsCompanyService.getById(companyId);
+        //保存订单信息
+        InsAreaCompany insAreaCompany = new InsAreaCompany();
+        insAreaCompany.setId(IdGenerate.nextId());
+        insAreaCompany.setOrderno(orderno);
+        insAreaCompany.setAgreementId(agreementId);
+        insAreaCompany.setOrderstatus(InsOrderStatusEnum.QUOTE_ING.getCode()); // "1"
+        insAreaCompany.setCompanyId(esmInsCompany.getId());
+        insAreaCompany.setInscompany(esmInsCompany.getNamesimple());
+        //insAreaCompany.setErrorStatus(500);
+        insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
+    }
+
 }

+ 2 - 2
src/main/java/com/ydtech/modules/order/controller/YongChengOrderApiController.java

@@ -61,8 +61,8 @@ public class YongChengOrderApiController {
     @ApiOperation(value = "永诚API方式 - 影像上传")
     @PostMapping(value = "/uploadImage")
     public HttpResult uploadImageApi(@RequestSingleParam(value = "companyId") String companyId) {
-        return yongchengOrderApiService.uploadImageApi(companyId);
-//        return HttpResult.ok("ok");
+//        return yongchengOrderApiService.uploadImageApi(companyId);
+        return HttpResult.ok("ok");
     }
 
     @ApiOperation(value = "永诚API方式 -电子保单")

+ 0 - 33
src/main/java/com/ydtech/modules/order/convert/SimpleStadarCarDTOConvert.java

@@ -1,33 +0,0 @@
-package com.ydtech.modules.order.convert;
-
-import com.ydtech.modules.ins.model.ya.CarModelDTO;
-import com.ydtech.modules.order.entity.api.zhongmei.response.ModelsQueryResponse;
-import org.mapstruct.Mapper;
-import org.mapstruct.Mapping;
-import org.mapstruct.factory.Mappers;
-
-import java.util.List;
-
-@Mapper
-public interface SimpleStadarCarDTOConvert {
-
-
-    SimpleStadarCarDTOConvert INSTANCE = Mappers.getMapper(SimpleStadarCarDTOConvert.class);
-
-    List<CarModelDTO> map(List<ModelsQueryResponse.SimpleStadarCarDTO> zmCarModels);
-
-    @Mapping(source = "localModelCode", target = "modelCode")
-    @Mapping(source = "modelName", target = "modelName")
-    @Mapping(source = "brand", target = "brandCN")
-    @Mapping(source = "series", target = "series")
-    @Mapping(source = "approvedPassengersCapacity", target = "ratedPassengerCapacity")
-    @Mapping(source = "displacement", target = "displacement")
-    @Mapping(source = "lfDate", target = "marketYear")
-    @Mapping(source = "purchasePrice", target = "replacementValue")
-    @Mapping(source = "vehicleDescription", target = "remark")
-    @Mapping(source = "energyTypes", target = "fuelType")
-    @Mapping(source = "energyTypes", target = "energyTypes")
-    @Mapping(source = "power", target = "powerScale")
-    CarModelDTO zhongmeiCar2YonganCar(ModelsQueryResponse.SimpleStadarCarDTO renbaoCarModel);
-
-}

+ 15 - 0
src/main/java/com/ydtech/modules/order/dao/InsAreaCompanyAccidentalDrivingMapper.java

@@ -0,0 +1,15 @@
+package com.ydtech.modules.order.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.order.entity.InsAreaCompanyAccidentalDriving;
+import com.ydtech.modules.order.entity.vo.dajia.InsAccidentalDrivingSubDajia;
+
+/**
+ * @author Administrator
+ * @description 针对表【InsAreaCompanyAccidentalDriving(驾意险)】的数据库操作Mapper
+ * @createDate 2023-03-09 14:45:58
+ * @Entity generator.domain.InsAccidentalDriving
+ */
+public interface InsAreaCompanyAccidentalDrivingMapper extends BaseMapper<InsAreaCompanyAccidentalDriving> {
+
+}

+ 25 - 0
src/main/java/com/ydtech/modules/order/entity/InsAreaCompany.java

@@ -369,6 +369,18 @@ public class InsAreaCompany implements Serializable {
     @TableField(value = "ubi_predicted_info_score")
     private String ubiPredictedInfoScore;
 
+    /**
+     * 太平洋绿黄红区间评分
+     */
+    @TableField(value = "tp_color_score")
+    private String tpColorScore;
+
+    /**
+     * 紫金 渤海真假单交
+     */
+    @TableField(value = "is_djq")
+    private String isDjq;
+
     /**
      *  添加操作人
      */
@@ -399,6 +411,19 @@ public class InsAreaCompany implements Serializable {
     @TableField(value = "new_operator_name")
     private String newOperatorName;
 
+
+    /**
+     * 非车信息
+     */
+    @TableField(exist = false)
+    private InsAreaCompanyAccidentalDriving accidentalDriving;
+
+    /**
+     *  报价成功或者失败状态
+     */
+    //@TableField(value = "error_status")
+    //private Integer errorStatus;
+
     public InsAreaCompany(QuoteRespVo quoteRespVo, PtlAgreementAttribution ptlAgreementAttribution) {
         this.id = IdGenerate.nextId();
         this.orderno = quoteRespVo.getOrderno();

+ 95 - 0
src/main/java/com/ydtech/modules/order/entity/InsAreaCompanyAccidentalDriving.java

@@ -0,0 +1,95 @@
+package com.ydtech.modules.order.entity;
+
+import com.alibaba.fastjson.JSONObject;
+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 com.ydtech.modules.order.entity.vo.BaseQuoteVo;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 子订单驾意险信息
+ *
+ * @TableName ins_area_company_accidental_driving
+ */
+@TableName(value = "ins_area_company_accidental_driving")
+@Data
+public class InsAreaCompanyAccidentalDriving implements Serializable {
+
+    private static final long serialVersionUID = 2549273518435897774L;
+    /**
+     *
+     */
+    @TableId(value = "id")
+    private String id;
+
+    @TableField(value = "company_id")
+    private String companyId;
+
+    /**
+     * 编号
+     */
+    @TableField(value = "ride_risk_code")
+    private String rideRiskCode;
+
+    /**
+     * 名称
+     */
+    @TableField(value = "ride_risk_name")
+    private String rideRiskName;
+
+    /**
+     * 份数
+     */
+    @TableField(value = "quantity")
+    private Integer quantity;
+
+
+    /**
+     * 转换爬虫的驾意险信息
+     * @param t
+     * @return
+     */
+    public void convertCrawler(BaseQuoteVo<Object> t) {
+        //众安
+        if (t.getCompanyId().equals("ZAPA1000000")) {
+            JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(t.getAccidentalDrivingVo()));
+            this.setRideRiskName(jsonObject.getString("name"));
+            this.setQuantity(jsonObject.getInteger("quantity"));
+        } else  //恒邦
+             if (t.getCompanyId().equals("HBIC1000000")) {
+                JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(t.getAccidentalDrivingVo()));
+                this.setRideRiskName(jsonObject.getString("programname"));
+                this.setQuantity(jsonObject.getInteger("quantity"));
+                this.setRideRiskCode(jsonObject.getString("programcode"));
+            } else //人寿
+                if (t.getCompanyId().equals("GPIC1000000")) {
+                    JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(t.getAccidentalDrivingVo()));
+                    this.setRideRiskName(jsonObject.getString("productName"));
+                    this.setQuantity(jsonObject.getInteger("quantity"));
+                    this.setRideRiskCode(jsonObject.getString("quotaProjectNo"));
+            }else //太平
+                if (t.getCompanyId().equals("TPIC1000000")) {
+                    JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(t.getAccidentalDrivingVo()));
+                    this.setRideRiskName(jsonObject.getString("rationName"));
+                    this.setQuantity(jsonObject.getInteger("quantity"));
+                    this.setRideRiskCode(jsonObject.getString("productCode"));
+            }else //华农
+                if (t.getCompanyId().equals("HNIC1000000")) {
+                    JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(t.getAccidentalDrivingVo()));
+                    this.setRideRiskName(jsonObject.getString("planName"));
+                    this.setQuantity(jsonObject.getInteger("quantity"));
+                    this.setRideRiskCode(jsonObject.getString("planCode"));
+                }else //安盛
+            if(t.getCompanyId().equals("TPBX1000000")) {
+                JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(t.getAccidentalDrivingVo()));
+                this.setRideRiskName(jsonObject.getString("productName"));
+                this.setQuantity(jsonObject.getInteger("quantity"));
+                this.setRideRiskCode(jsonObject.getString("productCode"));
+            }
+    }
+}

+ 6 - 0
src/main/java/com/ydtech/modules/order/entity/InsOrders.java

@@ -223,6 +223,12 @@ public class InsOrders implements Serializable {
     @TableField(exist = false)
     private BigDecimal willThreePremiums; //三级预收金额
 
+    @TableField(exist = false)
+    private String managementSource; //业务员机构来源
+
+    @TableField(exist = false)
+    private String auditStatus;  //订单费用审核状态
+
 
     public InsOrders(SysUser user, SysDept dept, BaseQuoteInfoVo quoteInfoVo) {
         // 2. 组装订单

+ 26 - 0
src/main/java/com/ydtech/modules/order/entity/api/zhongmei/response/ModelsQueryResponse.java

@@ -1,6 +1,8 @@
 package com.ydtech.modules.order.entity.api.zhongmei.response;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.constants.enums.JingyouEnergyTypes;
+import com.ydtech.modules.ins.model.ya.CarModelDTO;
 import com.ydtech.modules.ins.model.zm.ZmCarModel;
 import com.ydtech.modules.order.entity.api.zhongmei.BaseResponse;
 import com.ydtech.modules.order.entity.filter.CarModelsFilter;
@@ -166,6 +168,10 @@ public class ModelsQueryResponse extends BaseResponse {
         @JsonProperty("modelName")
         private String modelName;
 
+        @JsonProperty("fuelTypeCode")
+        private String fuelTypeCode;
+
+
         public CoreModelsVo toCoreModelsVo() {
             CoreModelsVo coreModelsVo = new CoreModelsVo();
             coreModelsVo.setModelCode(this.localModelCode);
@@ -178,6 +184,25 @@ public class ModelsQueryResponse extends BaseResponse {
             return coreModelsVo;
         }
 
+        public CarModelDTO toCarModelDTO() {
+            CarModelDTO carModelDTO = new CarModelDTO();
+            carModelDTO.setModelCode(this.localModelCode);
+            carModelDTO.setModelName(this.modelName);
+            carModelDTO.setBrandCN(this.brand);
+            carModelDTO.setSeries(this.series);
+            carModelDTO.setRatedPassengerCapacity(String.valueOf(this.approvedPassengersCapacity));
+            carModelDTO.setDisplacement(String.valueOf(this.displacement));
+            carModelDTO.setMarketYear(this.lfDate);
+            carModelDTO.setReplacementValue(this.purchasePrice);
+            carModelDTO.setRemark(this.vehicleDescription);
+            carModelDTO.setFuelType(this.energyTypes);
+            String energyTypeByCode = JingyouEnergyTypes.getEnergyTypeByCode(this.getFuelTypeCode());
+            carModelDTO.setFuelTypeCode(energyTypeByCode);
+            carModelDTO.setEnergyTypes(energyTypeByCode);
+            carModelDTO.setPowerScale(String.valueOf(this.power));
+            return carModelDTO;
+        }
+
 
         public SimpleStadarCarDTO(ZmCarModel zmCarInfoVO) {
             this.approvedLoad = Double.parseDouble(zmCarInfoVO.getApprovedLoad());
@@ -202,6 +227,7 @@ public class ModelsQueryResponse extends BaseResponse {
             this.transmissionType = zmCarInfoVO.getTransmissionType();
             this.unladenMass = Double.parseDouble(zmCarInfoVO.getUnladenMass());
             this.vehicleDescription = zmCarInfoVO.getRemark();
+            this.fuelTypeCode = zmCarInfoVO.getFuelTypeCode();
         }
 
         @Override

+ 22 - 0
src/main/java/com/ydtech/modules/order/entity/vo/SubOrderExportFeeVo.java

@@ -0,0 +1,22 @@
+package com.ydtech.modules.order.entity.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 子订单金额
+ */
+
+@Data
+public class SubOrderExportFeeVo {
+    @ApiModelProperty("交强出口费用")
+    private BigDecimal jqExportCosts;
+
+    @ApiModelProperty("商业出口费用")
+    private BigDecimal syExportCosts;
+
+    @ApiModelProperty("非车出口费用")
+    private BigDecimal noExportCosts;
+}

+ 3 - 0
src/main/java/com/ydtech/modules/order/entity/vo/guoren/GuorenAccidentalDrivingVo.java

@@ -19,6 +19,9 @@ public class GuorenAccidentalDrivingVo implements Serializable {
     @ApiModelProperty("份数")
     private int quantity;
 
+    @ApiModelProperty("商品名称")
+    private String goodsName;
+
     @ApiModelProperty("产品代码")
     private String prodCode;
 

+ 16 - 0
src/main/java/com/ydtech/modules/order/service/InsAreaCompanyAccidentalDrivingService.java

@@ -0,0 +1,16 @@
+package com.ydtech.modules.order.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.order.entity.InsAreaCompanyAccidentalDriving;
+import com.ydtech.modules.order.entity.InsFeeOrder;
+
+/**
+ * @author CXP
+ * @description 针对表【ins_area_company(费用跟单)】的数据库操作Service
+ * @createDate 2023-9-12 21:30:24
+ */
+public interface InsAreaCompanyAccidentalDrivingService extends IService<InsAreaCompanyAccidentalDriving> {
+
+    InsAreaCompanyAccidentalDriving getByCompanyId(String companyId);
+
+}

+ 10 - 0
src/main/java/com/ydtech/modules/order/service/InsAreaCompanyService.java

@@ -3,6 +3,7 @@ package com.ydtech.modules.order.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsAreaCompanyAccidentalDriving;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.dto.InsAreaCompanyQueryDto;
 import com.ydtech.modules.order.entity.vo.OrderQueryVo;
@@ -49,6 +50,15 @@ public interface InsAreaCompanyService extends IService<InsAreaCompany> {
      */
     void updateCompanyAndOrdersNew(InsAreaCompany insAreaCompany);
 
+    /**
+     * 插入子订单 并且修改订单状态
+     *
+     * @param insAreaCompany
+     * @param insAreaCompanyAccidentalDriving   驾意险信息
+     */
+    void insertCompanyAndOrders(InsAreaCompany insAreaCompany, InsAreaCompanyAccidentalDriving insAreaCompanyAccidentalDriving);
+
+    void insertCompanyAndOrders(InsAreaCompany insAreaCompany, List<InsAreaCompanyAccidentalDriving> insAreaCompanyAccidentalDriving);
     /**
      * 插入子订单 并且修改订单状态
      *

+ 3 - 1
src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java

@@ -13,6 +13,7 @@ import com.ydtech.modules.order.components.ConfigureParametersComponents;
 import com.ydtech.modules.order.components.FileComponents;
 import com.ydtech.modules.order.components.bohai.BoHaiRequestApiComponent;
 import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsAreaCompanyAccidentalDriving;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.TaxArrears;
 import com.ydtech.modules.order.entity.api.bohai.constants.*;
@@ -194,7 +195,8 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
             }
         }
         List<BoHaiQuoteAccidentVo> accidentalDrivingVo = quoteVo.getAccidentalDrivingVo();
-
+        InsAreaCompanyAccidentalDriving insAreaCompanyAccidentalDriving = new InsAreaCompanyAccidentalDriving();
+//        insAreaCompanyAccidentalDriving.setQuantity(quoteVo.getAccidentalDrivingVo());
         return getQuoteRespVo(response, quoteInfoVo, vehicleModelsDTO, ptlAgreementAttribution, orderNo, accidentalDrivingVo);
     }
 

+ 9 - 3
src/main/java/com/ydtech/modules/order/service/impl/DaJiaOrderServiceImpl.java

@@ -19,6 +19,7 @@ import com.ydtech.modules.order.components.ConfigureParametersComponents;
 import com.ydtech.modules.order.components.InsImagesUploadCacheComponents;
 import com.ydtech.modules.order.components.dajia.DaJiaRequestApiComponents;
 import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsAreaCompanyAccidentalDriving;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.TaxArrears;
 import com.ydtech.modules.order.entity.api.dajia.DaJiaConfigureParameters;
@@ -229,12 +230,16 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
             List<RiskInfoVo> riskList = quoteInfoVo.getRiskList();
             //非车险
             JSONObject accidentalDrivingVo = JSONObject.parseObject(JSONObject.toJSONString(t.getAccidentalDrivingVo()));
+            InsAreaCompanyAccidentalDriving insAreaCompanyAccidentalDriving = new InsAreaCompanyAccidentalDriving();
             InsAccidentalDrivingDajia accidentalDriving = null;
             List<InsAccidentalDrivingSubDajia> listByAccId = null;
             if (!Objects.isNull(accidentalDrivingVo) && !accidentalDrivingVo.isEmpty()) {
                 //驾意险
                 accidentalDriving = getAccidentalDrivingByCode(accidentalDrivingVo.getString("rideRiskCode"),
                         accidentalDrivingVo.getInteger("quantity"));
+                insAreaCompanyAccidentalDriving.setRideRiskCode(accidentalDrivingVo.getString("rideRiskCode"));
+                insAreaCompanyAccidentalDriving.setRideRiskName(accidentalDrivingVo.getString("rideRiskName"));
+                insAreaCompanyAccidentalDriving.setQuantity(accidentalDrivingVo.getInteger("quantity"));
                 //驾意险详细信息
                 listByAccId = insAccidentalDrivingSubDaJiaService.getListByAccId(accidentalDriving.getId());
             }
@@ -263,7 +268,7 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
                 // 设置报价车型
                 quoteRespVo.setCoreModels(coreModelsVo);
                 HttpResult<QuoteRespVo> quoteRespVoHttpResult = responseOrder(odr1009Response, quoteRespVo, ptlAgreementAttribution,
-                        orderNo, quoteInfoVo, busiId, nvhlodr1001Response);
+                        orderNo, quoteInfoVo, busiId, nvhlodr1001Response,insAreaCompanyAccidentalDriving);
                 return quoteRespVoHttpResult;
             } else {
                 if (Message.M0003.getCode().equals(odr1009Response.getStatus())) {
@@ -376,7 +381,8 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
 
     public HttpResult<QuoteRespVo> responseOrder(ODR1009Response odr1009Response, QuoteRespVo quoteRespVo,
                                                  PtlAgreementAttribution ptlAgreementAttribution, String orderId,
-                                                 BaseQuoteInfoVo quoteInfoVo, String busiId, NVHLODR1001Response nvhlodr1001Response) {
+                                                 BaseQuoteInfoVo quoteInfoVo, String busiId, NVHLODR1001Response nvhlodr1001Response,
+                                                 InsAreaCompanyAccidentalDriving insAreaCompanyAccidentalDriving) {
         // 保存订单信息
         InsAreaCompany insAreaCompany = new InsAreaCompany(quoteRespVo, ptlAgreementAttribution);
         // 协议id
@@ -401,7 +407,7 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
         if (!Objects.isNull(nvhlodr1001Response)) {
             insAreaCompany.setCrossInsurance(JSONArray.parseArray(JSON.toJSONString(nvhlodr1001Response.getPolicyInfos())));
         }
-        insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
+        insAreaCompanyService.insertCompanyAndOrders(insAreaCompany,insAreaCompanyAccidentalDriving);
         quoteRespVo.setCompanyId(companyId);
         quoteRespVo.setOrderno(quoteInfoVo.getOrderNo());
         // 车船税

+ 7 - 1
src/main/java/com/ydtech/modules/order/service/impl/GuorenOrderApiServiceImpl.java

@@ -23,6 +23,7 @@ import com.ydtech.modules.order.components.gouren.GuorenDuplicateInsuranceCompon
 import com.ydtech.modules.order.components.gouren.GuorenRequestApiComponent;
 import com.ydtech.modules.order.dao.InsTaskImagesMapper;
 import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsAreaCompanyAccidentalDriving;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.api.guoren.constants.GoodsClassifyList;
 import com.ydtech.modules.order.entity.api.guoren.constants.GuoRenRiskCode;
@@ -239,7 +240,12 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
         //生成订单扩展
         responseOrderExtend(iac, quoteRespVo, premiumResult, carPriceResult.getInputvo());
 
-        insAreaCompanyService.insertCompanyAndOrders(iac);
+
+        InsAreaCompanyAccidentalDriving insAreaCompanyAccidentalDriving = new InsAreaCompanyAccidentalDriving();
+        insAreaCompanyAccidentalDriving.setRideRiskCode(quoteVo.getAccidentalDrivingVo().getGoodsCode());
+        insAreaCompanyAccidentalDriving.setRideRiskName(quoteVo.getAccidentalDrivingVo().getGoodsName());
+        insAreaCompanyAccidentalDriving.setQuantity(quoteVo.getAccidentalDrivingVo().getQuantity());
+        insAreaCompanyService.insertCompanyAndOrders(iac,insAreaCompanyAccidentalDriving);
         quoteRespVo.setCompanyId(iac.getId());
         // 返回核心车型
         quoteRespVo.setCoreModels(vinQ.toCoreModelsVo());

+ 33 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyAccidentalDrivingServiceImpl.java

@@ -0,0 +1,33 @@
+package com.ydtech.modules.order.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.order.dao.InsAccidentalDrivingSubDaJiaMapper;
+import com.ydtech.modules.order.dao.InsAreaCompanyAccidentalDrivingMapper;
+import com.ydtech.modules.order.entity.InsAreaCompanyAccidentalDriving;
+import com.ydtech.modules.order.entity.vo.dajia.InsAccidentalDrivingSubDajia;
+import com.ydtech.modules.order.service.InsAccidentalDrivingSubDaJiaService;
+import com.ydtech.modules.order.service.InsAreaCompanyAccidentalDrivingService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author Administrator
+ * @description 针对表【ins_accidental_driving(驾意险)】的数据库操作Service实现
+ * @createDate 2023-03-09 14:45:58
+ */
+@Service
+public class InsAreaCompanyAccidentalDrivingServiceImpl extends ServiceImpl<InsAreaCompanyAccidentalDrivingMapper, InsAreaCompanyAccidentalDriving>
+        implements InsAreaCompanyAccidentalDrivingService {
+
+
+    @Override
+    public InsAreaCompanyAccidentalDriving getByCompanyId(String companyId) {
+        return getOne(new LambdaQueryWrapper<InsAreaCompanyAccidentalDriving>().eq(InsAreaCompanyAccidentalDriving::getCompanyId, companyId));
+    }
+}
+
+
+
+

+ 42 - 2
src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java

@@ -6,14 +6,18 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.order.dao.InsAreaCompanyMapper;
 import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsAreaCompanyAccidentalDriving;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.dto.InsAreaCompanyQueryDto;
 import com.ydtech.modules.order.entity.vo.OrderQueryVo;
+import com.ydtech.modules.order.service.InsAreaCompanyAccidentalDrivingService;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.order.service.InsOrdersService;
 import com.ydtech.modules.order.service.InsOrdersTrackService;
 import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
 import com.ydtech.utils.StringUtils;
+import com.ydtech.utils.idgen.IdGenerate;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -37,6 +41,10 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
 
     private final InsOrdersTrackService insOrdersTrackService;
 
+    @Autowired
+    private InsAreaCompanyAccidentalDrivingService insAreaCompanyAccidentalDrivingService;
+
+
     public InsAreaCompanyServiceImpl(@Lazy InsOrdersService insOrdersService, InsOrdersTrackService insOrdersTrackService) {
         this.insOrdersService = insOrdersService;
         this.insOrdersTrackService = insOrdersTrackService;
@@ -79,6 +87,30 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
         insOrdersService.updateByOrderStatus(insAreaCompany);
     }
 
+    @Override
+    public void insertCompanyAndOrders(InsAreaCompany insAreaCompany, InsAreaCompanyAccidentalDriving insAreaCompanyAccidentalDriving) {
+        baseMapper.insert(insAreaCompany);
+        //保存驾意险信息
+        insAreaCompanyAccidentalDriving.setCompanyId(insAreaCompany.getId());
+        insAreaCompanyAccidentalDriving.setId(IdGenerate.nextId());
+        insAreaCompanyAccidentalDrivingService.save(insAreaCompanyAccidentalDriving);
+        insOrdersTrackService.addingTrajectories(insAreaCompany);
+        insOrdersService.updateByOrderStatus(insAreaCompany);
+    }
+
+    @Override
+    public void insertCompanyAndOrders(InsAreaCompany insAreaCompany, List<InsAreaCompanyAccidentalDriving> insAreaCompanyAccidentalDriving) {
+        baseMapper.insert(insAreaCompany);
+        //保存驾意险信息
+        insAreaCompanyAccidentalDriving.forEach(item -> {
+            item.setCompanyId(insAreaCompany.getId());
+            item.setId(IdGenerate.nextId());
+        });
+        insAreaCompanyAccidentalDrivingService.saveBatch(insAreaCompanyAccidentalDriving);
+        insOrdersTrackService.addingTrajectories(insAreaCompany);
+        insOrdersService.updateByOrderStatus(insAreaCompany);
+    }
+
     @Override
     public void insertCompanyAndOrders(InsAreaCompany insAreaCompany) {
         baseMapper.insert(insAreaCompany);
@@ -113,7 +145,11 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
             orderQueryVo.setStartDateStr(orderQueryVo.getStartDate().toString());
             orderQueryVo.setEndDateStr(orderQueryVo.getEndDate().toString());
         }
-        return baseMapper.getPendingAuditOrders(page,orderQueryVo);
+        Page<InsOrders> pendingAuditOrders = baseMapper.getPendingAuditOrders(page, orderQueryVo);
+        pendingAuditOrders.getRecords().forEach(item->{
+            item.setAuditStatus("0");
+        });
+        return pendingAuditOrders;
     }
 
     @Override
@@ -122,7 +158,11 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
             orderQueryVo.setStartDateStr(orderQueryVo.getStartDate().toString());
             orderQueryVo.setEndDateStr(orderQueryVo.getEndDate().toString());
         }
-        return baseMapper.getAlreadyAuditOrders(page,orderQueryVo);
+        Page<InsOrders> alreadyAuditOrders = baseMapper.getAlreadyAuditOrders(page, orderQueryVo);
+        alreadyAuditOrders.getRecords().forEach(item->{
+            item.setAuditStatus(orderQueryVo.getAuditStatus());
+        });
+        return alreadyAuditOrders;
     }
 
     @Override

+ 23 - 3
src/main/java/com/ydtech/modules/order/service/impl/InsCrawlerOrderServiceImpl.java

@@ -10,6 +10,7 @@ import com.ydtech.modules.ins.model.vo.*;
 import com.ydtech.modules.order.components.InsCrawlerOrderComponents;
 import com.ydtech.modules.order.components.InsImagesUploadCacheComponents;
 import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsAreaCompanyAccidentalDriving;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.TaxArrears;
 import com.ydtech.modules.order.entity.crawler.constants.CrawlerAuditStatus;
@@ -46,6 +47,8 @@ import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 
@@ -123,9 +126,13 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
         if (response.getCode() != 200) {
             throw new SystemException(response.getMessage());
         }
+
         QuoteRespVo quoteRespVo = getQuoteRespVo(response, quoteInfoVo);
+
+        InsAreaCompanyAccidentalDriving insAreaCompanyAccidentalDriving = new InsAreaCompanyAccidentalDriving();
+        insAreaCompanyAccidentalDriving.convertCrawler(t);
         //处理订单信息
-        QuoteRespVo responseVo = responseOrder(response, quoteRespVo, ptlAgreementAttribution);
+        QuoteRespVo responseVo = responseOrder(response, quoteRespVo, ptlAgreementAttribution,insAreaCompanyAccidentalDriving);
 
         return HttpResult.ok("成功", responseVo);
     }
@@ -362,7 +369,7 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
     }
 
     private QuoteRespVo responseOrder(CrawlerQuoteResponse response, QuoteRespVo quoteRespVo,
-                                      PtlAgreementAttribution ptlAgreementAttribution) {
+                                      PtlAgreementAttribution ptlAgreementAttribution,InsAreaCompanyAccidentalDriving insAreaCompanyAccidentalDriving) {
         //保存订单信息
         InsAreaCompany insAreaCompany = new InsAreaCompany(quoteRespVo, ptlAgreementAttribution);
 
@@ -374,9 +381,22 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
             quoteRespVo.setWarnMessageList(response.getOther().getErrorCodeMap());
         }
 
+        //太平绿黄红区
+        for (String item:quoteRespVo.getWarnMessageList())
+        {
+            String regex = "小货车.{0,5}承保业务";
+            Pattern pattern = Pattern.compile(regex);
+            Matcher matcher = pattern.matcher(item);
+            if(matcher.find()){
+                insAreaCompany.setTpColorScore(item);
+                break;
+            }
+        }
+
+
         // 保险公司订单号
         insAreaCompany.setInsOrderNo(response.getOrderNo());
-        insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
+        insAreaCompanyService.insertCompanyAndOrders(insAreaCompany,insAreaCompanyAccidentalDriving);
         quoteRespVo.setCompanyId(insAreaCompany.getId());
         return quoteRespVo;
     }

+ 22 - 4
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -9,7 +9,10 @@ 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.components.OrderComponents;
+import com.ydtech.config.DictEnumConfig;
 import com.ydtech.constants.InsuranceEnum;
+import com.ydtech.constants.enums.dict.DictionaryData;
+import com.ydtech.constants.enums.dict.DictionaryManagement;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.constants.enums.dict.insurance.NatureOfVehicleUse;
 import com.ydtech.constants.sys.SystemConstant;
@@ -17,6 +20,7 @@ import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageRequest;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.constants.RoleConstants;
+import com.ydtech.modules.admin.dao.SysUserLinkAreaMapper;
 import com.ydtech.modules.admin.dao.SysUserLinkPtlAgreementMapper;
 import com.ydtech.modules.admin.dao.SysUserMapper;
 import com.ydtech.modules.admin.model.SysDept;
@@ -129,6 +133,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     @Autowired
     private SysUserLinkPtlAgreementMapper sysUserLinkPtlAgreementMapper;
 
+    @Autowired
+    private SysUserLinkAreaMapper sysUserLinkAreaMapper;
+
 
     public InsOrdersServiceImpl(OrderComponents orderComponents, SysUserService sysUserService,
                                 SysUserRoleService sysUserRoleService,
@@ -369,13 +376,23 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         Page<InsOrders> resultOrders = new Page<>();
 
         //查询未审核
+        if(orderQueryVo.getAuditStatus() == null)
+            orderQueryVo.setAuditStatus("0"); //默认查询未审核
         if (orderQueryVo.getAuditStatus().equals("0")) {
             resultOrders = insAreaCompanyService.getPendingAuditOrders(page, orderQueryVo);
-        } else if (orderQueryVo.getAuditStatus().equals("1")) {
+        } else{
             //已审核
             resultOrders = insAreaCompanyService.getAlreadyAuditOrders(page, orderQueryVo);
         }
-
+        //查找机构来源字典 遍历
+        Map<String, DictionaryManagement> m = DictEnumConfig.getDmMap();
+        DictionaryManagement organizationSource = m.get("organizationSource");
+        resultOrders.getRecords().forEach(item->{
+            DictionaryData dictionaryData = organizationSource.getDdList().stream().filter(x -> x.getDictValue().equals(item.getManagementSource())).findFirst().get();
+            if(dictionaryData != null){
+                item.setManagementSource(dictionaryData.getDictTag());
+            }
+        });
         return new BasePageResult<>(resultOrders.getCurrent(), page.getSize(), resultOrders.getTotal(),
                 resultOrders.getPages(),
                 resultOrders.getRecords());
@@ -813,8 +830,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             deptIds= sysUserMapper.getDeptIdsByUserIds(orderQueryVo.getUserId());
         } else if (type == 2) {
             //查询所有的代理人
-            agentUserIds = sysUserMapper.getAgentUserIds();
-
+            //agentUserIds = sysUserMapper.getAgentUserIds();
+            //查询绑定的区域的代理人信息
+            agentUserIds =sysUserLinkAreaMapper.findAreaIdsByAgentUserId(orderQueryVo.getUserId());
         } else if (type == 3) {
             //查询用户关联的协议
             List<SysUserLinkPtlAgreementDto> ptlAgreementListByUserIds =

+ 8 - 1
src/main/java/com/ydtech/modules/order/service/impl/YongchengOrderApiServiceImpl.java

@@ -55,6 +55,7 @@ import com.ydtech.modules.order.components.InsOrdersComponents;
 import com.ydtech.modules.order.components.VerificationCodeIdentification;
 import com.ydtech.modules.order.components.yongcheng.YongchengRequestApiComponents;
 import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsAreaCompanyAccidentalDriving;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.api.yongcheng.constants.MessageStatusCode;
 import com.ydtech.modules.order.entity.api.yongcheng.request.AccidentUnderwritingRequest;
@@ -387,6 +388,7 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
         quoteRespVo.setCoreModels(coreModelsVo);
         //添加调用费用匹配功能
 //        feeRuleSchemeService.dealFeeOrderInfo(yaQuoteInfoVo, quoteRespVo, quoteVo.getAgreementId(), iac.getId());
+        
         return HttpResult.ok("报价成功", quoteRespVo);
 
     }
@@ -1226,7 +1228,12 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
         if (null != quoteRespVo.getTaxArrears()) {
             insAreaCompany.setTaxArrears(JSON.parseArray(JSON.toJSONString(quoteRespVo.getTaxArrears())));
         }
-        insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
+
+        InsAreaCompanyAccidentalDriving insAreaCompanyAccidentalDriving = new InsAreaCompanyAccidentalDriving();
+        insAreaCompanyAccidentalDriving.setQuantity(quoteVo.getAccidentalDrivingVo().getQuantity());
+        insAreaCompanyAccidentalDriving.setRideRiskCode(quoteVo.getAccidentalDrivingVo().getRideRiskCode());
+        insAreaCompanyAccidentalDriving.setRideRiskName(quoteVo.getAccidentalDrivingVo().getRideRiskName());
+        insAreaCompanyService.insertCompanyAndOrders(insAreaCompany,insAreaCompanyAccidentalDriving);
         return insAreaCompany;
     }
 

+ 11 - 8
src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderApiServiceImpl.java

@@ -18,8 +18,8 @@ import com.ydtech.modules.order.components.InsImagesUploadCacheComponents;
 import com.ydtech.modules.order.components.ZhongmeiRequestApiComponents;
 import com.ydtech.modules.order.components.zhongmei.ZhongmeiRepeatInsuranceComponents;
 import com.ydtech.modules.order.constants.InsuranceTypeCorrespondence;
-import com.ydtech.modules.order.convert.SimpleStadarCarDTOConvert;
 import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsAreaCompanyAccidentalDriving;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.TaxArrears;
 import com.ydtech.modules.order.entity.api.zhongmei.BaseRequestHead;
@@ -143,12 +143,9 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
         }
         ModelsQueryRequest modelsQueryResponse = new ModelsQueryRequest();
         modelsQueryResponse.setModelName(modelName);
-//        List<ModelsQueryResponse.SimpleStadarCarDTO> car = zhongmeiRequestApiComponents.modelQuery(modelsQueryResponse,
-//        ModelsQueryResponse.class);
         List<ModelsQueryResponse.SimpleStadarCarDTO> car = new ArrayList<>();
         modelInquiry(modelName, car);
-
-        List<CarModelDTO> map = SimpleStadarCarDTOConvert.INSTANCE.map(car);
+        List<CarModelDTO> map = car.stream().map(ModelsQueryResponse.SimpleStadarCarDTO::toCarModelDTO).collect(Collectors.toList());
 
         //数据存储到缓存中
         if (!map.isEmpty()) {
@@ -218,7 +215,7 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
 
         // 核心返回车型
         quoteRespVo.setCoreModels(simpleStadarCarDTO.toCoreModelsVo());
-        return responseOrder(quotedPriceResponse, quoteRespVo, ptlAgreementAttribution, quoteInfo);
+        return responseOrder(quotedPriceResponse, quoteRespVo, ptlAgreementAttribution, quoteInfo,zmQuoteVo.getAccidentalDrivingVo());
     }
 
 
@@ -568,7 +565,8 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
     }
 
     public HttpResult<QuoteRespVo> responseOrder(QuotedPriceResponse quotedPriceResponse, QuoteRespVo quoteRespVo,
-                                                 PtlAgreementAttribution ptlAgreementAttribution, BaseQuoteInfoVo quoteInfo) {
+                                                 PtlAgreementAttribution ptlAgreementAttribution, BaseQuoteInfoVo quoteInfo,
+                                                 AccidentalDrivingVo accidentalDrivingVo) {
         //保存订单信息
         InsAreaCompany insAreaCompany = new InsAreaCompany(quoteRespVo, ptlAgreementAttribution);
         insAreaCompany.setId(quotedPriceResponse.getBusinessNo());
@@ -580,7 +578,12 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
         List<TaxArrears> taxArrearsList = Collections.singletonList(taxArrears);
         insAreaCompany.setTaxArrears(JSON.parseArray(JSON.toJSONString(taxArrearsList)));
 
-        insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
+        InsAreaCompanyAccidentalDriving insAreaCompanyAccidentalDriving = new InsAreaCompanyAccidentalDriving();
+        insAreaCompanyAccidentalDriving.setRideRiskName(accidentalDrivingVo.getRideRiskName());
+        insAreaCompanyAccidentalDriving.setRideRiskCode(accidentalDrivingVo.getRideRiskCode());
+        insAreaCompanyAccidentalDriving.setQuantity(accidentalDrivingVo.getQuantity());
+
+        insAreaCompanyService.insertCompanyAndOrders(insAreaCompany,insAreaCompanyAccidentalDriving);
         quoteRespVo.setCompanyId(insAreaCompany.getId());
         quoteRespVo.setTaxArrears(taxArrearsList);
         //这里调用费用匹配功能

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

@@ -15,6 +15,7 @@ import com.ydtech.modules.order.components.InsImagesUploadCacheComponents;
 import com.ydtech.modules.order.components.zijin.ZijinRequestApiComponents;
 import com.ydtech.modules.order.constants.InsuranceTypeCorrespondence;
 import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsAreaCompanyAccidentalDriving;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.TaxArrears;
 import com.ydtech.modules.order.entity.api.zijin.constants.enums.BusType;
@@ -159,7 +160,7 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
         // 设置核心报价车型
         quoteRespVo.setCoreModels(vehicleModelInfosDTO.toCoreModelsVo());
         return responseOrder(calculatePremiumResponse, quoteRespVo, ptlAgreementAttribution, calculatePremiumRequest.getOrderId(),
-                calculatePremiumRequest.getOrderNo(), quoteInfoVo);
+                calculatePremiumRequest.getOrderNo(), quoteInfoVo,quoteVo.getAccidentalDrivingVo());
     }
 
     @Override
@@ -560,7 +561,7 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
 
     public HttpResult<QuoteRespVo> responseOrder(CalculatePremiumResponse calculatePremiumResponse, QuoteRespVo quoteRespVo,
                                                  PtlAgreementAttribution ptlAgreementAttribution, String orderId, String orderNo,
-                                                 BaseQuoteInfoVo quoteInfoVo) {
+                                                 BaseQuoteInfoVo quoteInfoVo, List<ZjQuoteAccidentVo> accidentalDrivingVo) {
         // 保存订单信息
         InsAreaCompany insAreaCompany = new InsAreaCompany(quoteRespVo, ptlAgreementAttribution);
         // 协议id
@@ -584,7 +585,16 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
                 insAreaCompany.setUbiPredictedInfoScore(score);
             }
         }
-        insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
+        List<InsAreaCompanyAccidentalDriving> insAreaCompanyAccidentalDrivings = new ArrayList<>();
+        accidentalDrivingVo.forEach(accidentalDriving -> {
+            InsAreaCompanyAccidentalDriving insAreaCompanyAccidentalDriving = new InsAreaCompanyAccidentalDriving();
+            insAreaCompanyAccidentalDriving.setQuantity(insAreaCompanyAccidentalDriving.getQuantity());
+            insAreaCompanyAccidentalDriving.setRideRiskCode(insAreaCompanyAccidentalDriving.getRideRiskCode());
+            insAreaCompanyAccidentalDriving.setRideRiskName(insAreaCompanyAccidentalDriving.getRideRiskName());
+            insAreaCompanyAccidentalDrivings.add(insAreaCompanyAccidentalDriving);
+        });
+        insAreaCompany.setIsDjq(calculatePremiumResponse.getBasePart().getIsDjq());
+        insAreaCompanyService.insertCompanyAndOrders(insAreaCompany,insAreaCompanyAccidentalDrivings);
         quoteRespVo.setCompanyId(orderNo);
         //添加调用费用匹配功能
 //        feeRuleSchemeService.dealFeeOrderInfo(quoteInfoVo, quoteRespVo, ptlAgreementAttribution.getId(), insAreaCompany.getId());

+ 3 - 1
src/main/java/com/ydtech/modules/protocol/controller/PtlAgreementController.java

@@ -58,7 +58,9 @@ public class PtlAgreementController extends BaseController {
     @PostMapping("/page")
     @ApiOperation("分页查询协议")
     public HttpResult<PageResult<PtlAgreement>> page(@RequestBody PtlAgreementPageVo ptlAgreementPageVo) {
-        return ptlAgreementService.pageAgreement(ptlAgreementPageVo);
+        Page<T> page = buildPageRequest(ptlAgreementPageVo.getPageDto());
+        Page<PtlAgreement> pageResultHttpResult = ptlAgreementService.pageAgreement(page, ptlAgreementPageVo);
+        return HttpResult.ok(buildPageResponse(pageResultHttpResult));
     }
 
     @PostMapping("/list")

+ 2 - 1
src/main/java/com/ydtech/modules/protocol/entity/vo/PtlAgreementPageVo.java

@@ -2,6 +2,7 @@ package com.ydtech.modules.protocol.entity.vo;
 
 
 import com.ydtech.core.page.BasePageVO;
+import com.ydtech.core.page.PageRequest;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -12,7 +13,7 @@ import java.time.LocalDate;
 @EqualsAndHashCode(callSuper = true)
 @Data
 @ApiModel("分页查询协议")
-public class PtlAgreementPageVo extends BasePageVO {
+public class PtlAgreementPageVo extends PageRequest {
 
     private static final long serialVersionUID = 2575020753576017621L;
 

+ 3 - 2
src/main/java/com/ydtech/modules/protocol/service/PtlAgreementService.java

@@ -1,5 +1,6 @@
 package com.ydtech.modules.protocol.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageResult;
@@ -110,14 +111,14 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
      * @param ptlAgreementPageVo 分页查询参数
      * @return HttpResult
      */
-    HttpResult<PageResult<PtlAgreement>> pageAgreement(PtlAgreementPageVo ptlAgreementPageVo);
+    Page<PtlAgreement> pageAgreement(Page page,PtlAgreementPageVo ptlAgreementPageVo);
 
     /**
      * 根据保险公司查询协议
      * @param ptlAgreementPageVo
      * @return
      */
-    HttpResult<List<PtlAgreement>> listAgreement(PtlAgreementPageVo ptlAgreementPageVo);
+    HttpResult<List<PtlAgreement>> listAgreement( PtlAgreementPageVo ptlAgreementPageVo);
 
     /**
      * 通过协议id查询

+ 5 - 4
src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java

@@ -346,9 +346,7 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
 
     @Override
     public HttpResult<PageResult<PtlAgreement>> pageAgreement(PtlAgreementPageVo ptlAgreementPageVo) {
-        int pageNum = ptlAgreementPageVo.getPageNum();
-        int pageSize = ptlAgreementPageVo.getPageSize();
-        Page<PtlAgreement> page = new Page<>(pageNum, pageSize);
+
         LambdaQueryWrapper<PtlAgreement> wrapper = new LambdaQueryWrapper<>();
         // 获取供应商本级id 及其 下级id
         List<String> lowerId = esmInsCompanyService.getByLowerId(ptlAgreementPageVo.getPartnerCompaniesId());
@@ -366,6 +364,10 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
                 .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getModifiedBy()), PtlAgreement::getModifiedBy, ptlAgreementPageVo.getModifiedBy())
                 // 合作公司
                 .in(!StringUtils.isEmpty(ptlAgreementPageVo.getPartnerCompaniesId()) && !lowerId.isEmpty(), PtlAgreement::getPartnerCompaniesId, lowerId)
+                // 录入时间
+                .between(!ObjectUtils.isEmpty(ptlAgreementPageVo.getStartDate()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getEndDate()), PtlAgreement::getCreateTime, ptlAgreementPageVo.getStartDate(), ptlAgreementPageVo.getEndDate())
+                // 修改时间
+                .between(!ObjectUtils.isEmpty(ptlAgreementPageVo.getUpdateStarTime()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getUpdateEndTime()), PtlAgreement::getUpdateTime, ptlAgreementPageVo.getUpdateStarTime(), ptlAgreementPageVo.getUpdateEndTime())
                 // 协议起期
                 .le(!ObjectUtils.isEmpty(ptlAgreementPageVo.getAgreementStartDate()), PtlAgreement::getStartDate, ptlAgreementPageVo.getAgreementStartDate())
                 // 协议止期
@@ -690,7 +692,6 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         }
         return HttpResult.ok(resultList);
     }
-
     /**
      * @version
      * @author: hxl

+ 17 - 6
src/main/java/com/ydtech/modules/protocols/controller/PtlNewAgreementController.java

@@ -14,10 +14,7 @@ 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.protocol.service.PtlAgreementService;
-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.po.*;
 import com.ydtech.modules.protocols.entity.vo.*;
 import com.ydtech.modules.protocols.service.*;
 import io.swagger.annotations.Api;
@@ -48,6 +45,9 @@ public class PtlNewAgreementController extends BaseController {
     @Autowired
     private PtlAgreementUndwrtRulesNewService ptlAgreementUndwrtRulesNewService;
 
+    @Autowired
+    private PtlAgreementProductCostsTrajectoryService ptlAgreementProductCostsTrajectoryService;
+
     @Autowired
     private PtlAgreementService ptlAgreementService;
 
@@ -75,10 +75,10 @@ public class PtlNewAgreementController extends BaseController {
 
     @ApiOperation("获取费用审核列表")
     @PostMapping("/getCostsAuditList")
-    public PageResult getCostsAuditList(@RequestBody AgreementProductQueryVo agreementProductQueryVo){
+    public HttpResult<PageResult> getCostsAuditList(@RequestBody AgreementProductQueryVo agreementProductQueryVo){
         Page<T> page = buildPageRequest(agreementProductQueryVo.getPageDto());
         Page<PtlAgreementProductCostsNew> schemeQueryDto = ptlAgreementProductCostsNewService.getCostsAuditList(page,agreementProductQueryVo);
-        return buildPageResponse(schemeQueryDto);
+        return HttpResult.ok(buildPageResponse(schemeQueryDto));
     }
 
 
@@ -136,6 +136,12 @@ public class PtlNewAgreementController extends BaseController {
         return ptlAgreementProductCostsNewService.costsAudit(costsAuditVo) ? HttpResult.ok("费用审核成功") : HttpResult.error("费用审核失败");
     }
 
+    @ApiOperation(value = "费用批量审核")
+    @PostMapping("/costs/auditBatch")
+    public HttpResult costsAuditBatch(@RequestBody CostsAuditVo costsAuditVo){
+        return ptlAgreementProductCostsNewService.costsAuditBatch(costsAuditVo) ? HttpResult.ok("费用批量审核成功") : HttpResult.error("费用批量审核失败");
+    }
+
     @ApiOperation(value = "获取承保规则列表")
     @PostMapping("/undwrt/rules/list")
     public PageResult getRulesList(@RequestBody AgreementUndwrtRulesQueryVo agreementUndwrtRulesQueryVo){
@@ -172,4 +178,9 @@ public class PtlNewAgreementController extends BaseController {
         return ptlAgreementUndwrtRulesNewService.rulesDelete(ruleId) ? HttpResult.ok("删除承保规则成功") : HttpResult.error("删除承保规则失败");
     }
 
+    @ApiOperation(value = "费用轨迹查询")
+    @GetMapping("/costs/trajectory/get")
+    public HttpResult getTrajectory(String costsId){
+        return HttpResult.ok(ptlAgreementProductCostsTrajectoryService.getTrajectory(costsId));
+    }
 }

+ 19 - 0
src/main/java/com/ydtech/modules/protocols/dao/PtlAgreementProductCostsTrajectoryMapper.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.PtlAgreementProductCostsTrajectory;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttr;
+
+
+/**
+ * @author tz
+ * @description 费用因子轨迹数据库操作Mapper
+ * @createDate 2024-2-22 15:44:29
+ */
+public interface PtlAgreementProductCostsTrajectoryMapper extends BaseMapper<PtlAgreementProductCostsTrajectory> {
+
+}
+
+
+
+

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

@@ -49,9 +49,9 @@ public class PtlAgreementProductCostsExport {
     @TableField(value = "jq_export_radio_level_5")
     private BigDecimal jqExportRadioLevel5;
 
-    @ApiModelProperty(value = "交强出口加投比例")
-    @TableField(value = "jq_export_investment_radio")
-    private BigDecimal jqExportInvestmentRadio;
+//    @ApiModelProperty(value = "交强出口加投比例")
+//    @TableField(value = "jq_export_investment_radio")
+//    private BigDecimal jqExportInvestmentRadio;
 
 
     @ApiModelProperty(value = "商业出口比例一级")
@@ -74,9 +74,9 @@ public class PtlAgreementProductCostsExport {
     @TableField(value = "sy_export_radio_level_5")
     private BigDecimal syExportRadioLevel5;
 
-    @ApiModelProperty(value = "商业出口加投比例")
-    @TableField(value = "sy_export_investment_radio")
-    private BigDecimal syExportInvestmentRadio;
+//    @ApiModelProperty(value = "商业出口加投比例")
+//    @TableField(value = "sy_export_investment_radio")
+//    private BigDecimal syExportInvestmentRadio;
 
     @ApiModelProperty(value = "非车出口比例一级")
     @TableField(value = "no_car_export_radio_level_1")
@@ -98,9 +98,9 @@ public class PtlAgreementProductCostsExport {
     @TableField(value = "no_car_export_radio_level_5")
     private BigDecimal noCarExportRadioLevel5;
 
-    @ApiModelProperty(value = "非车出口加投比例")
-    @TableField(value = "no_car_export_investment_radio")
-    private BigDecimal noCarExportInvestmentRadio;
+//    @ApiModelProperty(value = "非车出口加投比例")
+//    @TableField(value = "no_car_export_investment_radio")
+//    private BigDecimal noCarExportInvestmentRadio;
 
 
     public void blank(){
@@ -119,9 +119,9 @@ public class PtlAgreementProductCostsExport {
         if(this.jqExportRadioLevel5 == null || this.jqExportRadioLevel5.equals("")){
             this.jqExportRadioLevel5 = new BigDecimal(0);
         }
-        if(this.jqExportInvestmentRadio == null || this.jqExportInvestmentRadio.equals("")){
-            this.jqExportInvestmentRadio = new BigDecimal(0);
-        }
+//        if(this.jqExportInvestmentRadio == null || this.jqExportInvestmentRadio.equals("")){
+//            this.jqExportInvestmentRadio = new BigDecimal(0);
+//        }
         if(this.syExportRadioLevel1 == null || this.syExportRadioLevel1.equals("")){
             this.syExportRadioLevel1 = new BigDecimal(0);
         }
@@ -137,9 +137,9 @@ public class PtlAgreementProductCostsExport {
         if(this.syExportRadioLevel5 == null || this.syExportRadioLevel5.equals("")){
             this.syExportRadioLevel5 = new BigDecimal(0);
         }
-        if(this.syExportInvestmentRadio == null || this.syExportInvestmentRadio.equals("")){
-            this.syExportInvestmentRadio = new BigDecimal(0);
-        }
+//        if(this.syExportInvestmentRadio == null || this.syExportInvestmentRadio.equals("")){
+//            this.syExportInvestmentRadio = new BigDecimal(0);
+//        }
         if(this.noCarExportRadioLevel1 == null || this.noCarExportRadioLevel1.equals("")){
             this.noCarExportRadioLevel1 = new BigDecimal(0);
         }
@@ -155,8 +155,8 @@ public class PtlAgreementProductCostsExport {
         if(this.noCarExportRadioLevel5 == null || this.noCarExportRadioLevel5.equals("")){
             this.noCarExportRadioLevel5 = new BigDecimal(0);
         }
-        if(this.noCarExportInvestmentRadio == null || this.noCarExportInvestmentRadio.equals("")){
-            this.noCarExportInvestmentRadio = new BigDecimal(0);
-        }
+//        if(this.noCarExportInvestmentRadio == null || this.noCarExportInvestmentRadio.equals("")){
+//            this.noCarExportInvestmentRadio = new BigDecimal(0);
+//        }
     }
 }

+ 37 - 0
src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsTrajectory.java

@@ -0,0 +1,37 @@
+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 lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+
+/**
+ * 费用因子轨迹表
+ */
+
+@TableName(value = "ptl_agreement_product_costs_trajectory", autoResultMap = true)
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class PtlAgreementProductCostsTrajectory {
+    @TableId(value = "id")
+    private String id;
+
+    @TableField(value = "costs_id")
+    private String costsId;
+
+    @TableField(value = "readme")
+    private String readme;
+
+    @TableField(value = "create_time")
+    private LocalDateTime createTime;
+
+    @TableField(value = "create_by")
+    private String createBy;
+}

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

@@ -44,10 +44,19 @@ public class PtlAgreementUndwrtRulesNew {
     @TableField(value = "valid_ind")
     private String validInd;
 
+    @ApiModelProperty(value = "规则起期")
+    @TableField(value = "rules_start_date")
+    private String rulesStartDate;
+
+    @ApiModelProperty(value = "规则止期")
+    @TableField(value = "rules_end_date")
+    private String rulesEndDate;
+
     @ApiModelProperty(value = "生成的描述")
     @TableField(exist = false)
     private String desc;
 
+
     @ApiModelProperty(value = "规则属性")
     @TableField(exist = false)
     private List<PtlAgreementUndwrtRulesAttrLink> rulesAttrList;

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

@@ -159,18 +159,18 @@ public class AgreementProductCostsSave {
         this.setJqExportRadioLevel3(ptlAgreementProductCostsExport.getJqExportRadioLevel3().toString());
         this.setJqExportRadioLevel4(ptlAgreementProductCostsExport.getJqExportRadioLevel4().toString());
         this.setJqExportRadioLevel5(ptlAgreementProductCostsExport.getJqExportRadioLevel5().toString());
-        this.setJqExportInvestmentRadio(ptlAgreementProductCostsExport.getJqExportInvestmentRadio().toString());
+//        this.setJqExportInvestmentRadio(ptlAgreementProductCostsExport.getJqExportInvestmentRadio().toString());
         this.setSyExportRadioLevel1(ptlAgreementProductCostsExport.getSyExportRadioLevel1().toString());
         this.setSyExportRadioLevel2(ptlAgreementProductCostsExport.getSyExportRadioLevel2().toString());
         this.setSyExportRadioLevel3(ptlAgreementProductCostsExport.getSyExportRadioLevel3().toString());
         this.setSyExportRadioLevel4(ptlAgreementProductCostsExport.getSyExportRadioLevel4().toString());
         this.setSyExportRadioLevel5(ptlAgreementProductCostsExport.getSyExportRadioLevel5().toString());
-        this.setSyExportInvestmentRadio(ptlAgreementProductCostsExport.getSyExportInvestmentRadio().toString());
+//        this.setSyExportInvestmentRadio(ptlAgreementProductCostsExport.getSyExportInvestmentRadio().toString());
         this.setNoCarExportRadioLevel1(ptlAgreementProductCostsExport.getNoCarExportRadioLevel1().toString());
         this.setNoCarExportRadioLevel2(ptlAgreementProductCostsExport.getNoCarExportRadioLevel2().toString());
         this.setNoCarExportRadioLevel3(ptlAgreementProductCostsExport.getNoCarExportRadioLevel3().toString());
         this.setNoCarExportRadioLevel4(ptlAgreementProductCostsExport.getNoCarExportRadioLevel4().toString());
         this.setNoCarExportRadioLevel5(ptlAgreementProductCostsExport.getNoCarExportRadioLevel5().toString());
-        this.setNoCarExportInvestmentRadio(ptlAgreementProductCostsExport.getNoCarExportInvestmentRadio().toString());
+//        this.setNoCarExportInvestmentRadio(ptlAgreementProductCostsExport.getNoCarExportInvestmentRadio().toString());
     }
 }

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

@@ -32,6 +32,12 @@ public class AgreementProductQueryVo extends PageRequest {
     @ApiModelProperty(value = "创建时间止期")
     private String createEndTime;
 
+    @ApiModelProperty(value = "是否有效")
+    private String isEffective;
+
+    @ApiModelProperty(value = "描述")
+    private String desc;
+
     @ApiModelProperty("操作人")
     private String operator;
 

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

@@ -33,6 +33,12 @@ public class AgreementUndwrtRules {
     @ApiModelProperty(value = "是否生效")
     private String validInd;
 
+    @ApiModelProperty(value = "规则起期")
+    private String rulesStartDate;
+
+    @ApiModelProperty(value = "规则止期")
+    private String rulesEndDate;
+
     @ApiModelProperty(value = "规则属性")
     private List<PtlAgreementUndwrtRulesAttrLink> rulesAttrList;
 

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

@@ -34,6 +34,12 @@ public class AgreementUndwrtRulesSave {
     @ApiModelProperty(value = "是否生效")
     private String validInd;
 
+    @ApiModelProperty(value = "规则起期")
+    private String rulesStartDate;
+
+    @ApiModelProperty(value = "规则止期")
+    private String rulesEndDate;
+
     @ApiModelProperty(value = "费用属性")
     private List<PtlAgreementUndwrtRulesAttr> costsAttrLinks;
 

+ 3 - 0
src/main/java/com/ydtech/modules/protocols/entity/vo/CostsAuditVo.java

@@ -14,6 +14,9 @@ public class CostsAuditVo {
     @ApiModelProperty(value = "费用id")
     private String costsId;
 
+    @ApiModelProperty(value = "费用ids")
+    private String[] costsIds;
+
     @ApiModelProperty(value = "是否审核")
     private Integer isAudit;
 

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

@@ -77,6 +77,13 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
      */
     boolean costsAudit(CostsAuditVo costsAuditVo);
 
+    /**
+     * 费用批量审核
+     * @param costsAuditVo
+     * @return
+     */
+    boolean costsAuditBatch(CostsAuditVo costsAuditVo);
+
     /**
      * 调整费用
      * @param feeOrderNewRecordVo

+ 32 - 0
src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsTrajectoryService.java

@@ -0,0 +1,32 @@
+package com.ydtech.modules.protocols.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsTrajectory;
+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 PtlAgreementProductCostsTrajectoryService extends IService<PtlAgreementProductCostsTrajectory> {
+
+    /**
+     * 添加费用因子轨迹
+     * @param costsId 费用因子id
+     * @param desc      费用因子描述
+     * @param userId    用户id
+     * @return
+     */
+    boolean addCostsTrajectory(String costsId,String desc,String userId);
+
+    /**
+     * 获取费用因子轨迹
+     * @param costsId 费用因子id
+     * @return
+     */
+    List<PtlAgreementProductCostsTrajectory> getTrajectory(String costsId);
+}

+ 97 - 37
src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewServiceImpl.java

@@ -28,6 +28,7 @@ import com.ydtech.modules.protocols.entity.vo.*;
 import com.ydtech.modules.protocols.service.*;
 import com.ydtech.utils.idgen.IdGenerate;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections4.trie.analyzer.StringKeyAnalyzer;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -73,6 +74,9 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
     @Autowired
     InsFeeOrderNewService insFeeOrderNewService;
 
+    @Autowired
+    PtlAgreementProductCostsTrajectoryService ptlAgreementProductCostsTrajectoryService;
+
     @Override
     public Page<PtlAgreementProductCostsNew> getByAgreementId(Page page, AgreementProductQueryVo agreementProductQueryVo) {
         LambdaQueryWrapper<PtlAgreementProductCostsNew> ptlAgreementProductCostsNewLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -94,6 +98,22 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
                     .or().lt(PtlAgreementProductCostsNew::getCostsEndDate, agreementProductQueryVo.getCostsEndDate());
         }
 
+        //是否有效  1失效  2 有效
+        if(agreementProductQueryVo.getIsEffective() != null){
+            if(agreementProductQueryVo.getIsEffective().equals("1")) {
+                ptlAgreementProductCostsNewLambdaQueryWrapper.gt(PtlAgreementProductCostsNew::getCostsStartDate, LocalDateTime.now())
+                        .lt(PtlAgreementProductCostsNew::getCostsEndDate, LocalDateTime.now());
+            }else if(agreementProductQueryVo.getIsEffective().equals("2")){
+                ptlAgreementProductCostsNewLambdaQueryWrapper.lt(PtlAgreementProductCostsNew::getCostsStartDate, LocalDateTime.now())
+                        .gt(PtlAgreementProductCostsNew::getCostsEndDate, LocalDateTime.now());
+            }
+        }
+
+        //统配描述
+        if(agreementProductQueryVo.getDesc() != null){
+            ptlAgreementProductCostsNewLambdaQueryWrapper.like(PtlAgreementProductCostsNew::getDesc, agreementProductQueryVo.getDesc());
+        }
+
         Page<PtlAgreementProductCostsNew> pages = baseMapper.selectPage(page, ptlAgreementProductCostsNewLambdaQueryWrapper);
 
 //                .lt(PtlAgreementProductCostsNew::getCostsStartDate, formattedDateTime)
@@ -130,13 +150,13 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
                 records.get(i).setJqExportRadioLevel3(ptlAgreementProductCostsExport.getJqExportRadioLevel3().toString());
                 records.get(i).setJqExportRadioLevel4(ptlAgreementProductCostsExport.getJqExportRadioLevel4().toString());
                 records.get(i).setJqExportRadioLevel5(ptlAgreementProductCostsExport.getJqExportRadioLevel5().toString());
-                records.get(i).setJqExportInvestmentRadio(ptlAgreementProductCostsExport.getJqExportInvestmentRadio().toString());
+//                records.get(i).setJqExportInvestmentRadio(ptlAgreementProductCostsExport.getJqExportInvestmentRadio().toString());
                 records.get(i).setSyExportRadioLevel1(ptlAgreementProductCostsExport.getSyExportRadioLevel1().toString());
                 records.get(i).setSyExportRadioLevel2(ptlAgreementProductCostsExport.getSyExportRadioLevel2().toString());
                 records.get(i).setSyExportRadioLevel3(ptlAgreementProductCostsExport.getSyExportRadioLevel3().toString());
                 records.get(i).setSyExportRadioLevel4(ptlAgreementProductCostsExport.getSyExportRadioLevel4().toString());
                 records.get(i).setSyExportRadioLevel5(ptlAgreementProductCostsExport.getSyExportRadioLevel5().toString());
-                records.get(i).setSyExportInvestmentRadio(ptlAgreementProductCostsExport.getSyExportInvestmentRadio().toString());
+//                records.get(i).setSyExportInvestmentRadio(ptlAgreementProductCostsExport.getSyExportInvestmentRadio().toString());
                 records.get(i).setNoCarExportRadioLevel1(ptlAgreementProductCostsExport.getNoCarExportRadioLevel1().toString());
                 records.get(i).setNoCarExportRadioLevel2(ptlAgreementProductCostsExport.getNoCarExportRadioLevel2().toString());
                 records.get(i).setNoCarExportRadioLevel3(ptlAgreementProductCostsExport.getNoCarExportRadioLevel3().toString());
@@ -207,13 +227,13 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
                 records.get(i).setJqExportRadioLevel3(ptlAgreementProductCostsExport.getJqExportRadioLevel3().toString());
                 records.get(i).setJqExportRadioLevel4(ptlAgreementProductCostsExport.getJqExportRadioLevel4().toString());
                 records.get(i).setJqExportRadioLevel5(ptlAgreementProductCostsExport.getJqExportRadioLevel5().toString());
-                records.get(i).setJqExportInvestmentRadio(ptlAgreementProductCostsExport.getJqExportInvestmentRadio().toString());
+//                records.get(i).setJqExportInvestmentRadio(ptlAgreementProductCostsExport.getJqExportInvestmentRadio().toString());
                 records.get(i).setSyExportRadioLevel1(ptlAgreementProductCostsExport.getSyExportRadioLevel1().toString());
                 records.get(i).setSyExportRadioLevel2(ptlAgreementProductCostsExport.getSyExportRadioLevel2().toString());
                 records.get(i).setSyExportRadioLevel3(ptlAgreementProductCostsExport.getSyExportRadioLevel3().toString());
                 records.get(i).setSyExportRadioLevel4(ptlAgreementProductCostsExport.getSyExportRadioLevel4().toString());
                 records.get(i).setSyExportRadioLevel5(ptlAgreementProductCostsExport.getSyExportRadioLevel5().toString());
-                records.get(i).setSyExportInvestmentRadio(ptlAgreementProductCostsExport.getSyExportInvestmentRadio().toString());
+//                records.get(i).setSyExportInvestmentRadio(ptlAgreementProductCostsExport.getSyExportInvestmentRadio().toString());
                 records.get(i).setNoCarExportRadioLevel1(ptlAgreementProductCostsExport.getNoCarExportRadioLevel1().toString());
                 records.get(i).setNoCarExportRadioLevel2(ptlAgreementProductCostsExport.getNoCarExportRadioLevel2().toString());
                 records.get(i).setNoCarExportRadioLevel3(ptlAgreementProductCostsExport.getNoCarExportRadioLevel3().toString());
@@ -417,16 +437,17 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
     @Transactional
     @Override
     public boolean costsAdd(AgreementProductCosts agreementProductCosts) {
+//2024-04-26  删除检测非车信息 强制填写费用
         //校验非车信息是否存在
-        List<PtlAgreementProductCostsAttrLink> nonMotorInsurance = agreementProductCosts.getCostsAttrLinks().stream().filter(x -> x.getAttrCode().equals("NonMotorInsurance")).collect(Collectors.toList());
-        if (nonMotorInsurance.size() > 0) {
-            if((nonMotorInsurance.get(0).getMin() != null && !nonMotorInsurance.get(0).getMin().equals("0")) || nonMotorInsurance.get(0).getMax() != null && !nonMotorInsurance.get(0).getMax().equals("0"))
-            {
-                if((agreementProductCosts.getNoCostsProportion() == null || agreementProductCosts.getNoCostsProportion().equals("0"))){
-                    throw new SystemException("检测到存在非车费用因子,请填写非车费用!");
-                }
-            }
-        }
+//        List<PtlAgreementProductCostsAttrLink> nonMotorInsurance = agreementProductCosts.getCostsAttrLinks().stream().filter(x -> x.getAttrCode().equals("NonMotorInsurance")).collect(Collectors.toList());
+//        if (nonMotorInsurance.size() > 0) {
+//            if((nonMotorInsurance.get(0).getMin() != null && !nonMotorInsurance.get(0).getMin().equals("0")) || nonMotorInsurance.get(0).getMax() != null && !nonMotorInsurance.get(0).getMax().equals("0"))
+//            {
+//                if((agreementProductCosts.getNoCostsProportion() == null || agreementProductCosts.getNoCostsProportion().equals("0"))){
+//                    throw new SystemException("检测到存在非车费用因子,请填写非车费用!");
+//                }
+//            }
+//        }
 
         //添加费用主表信息
         PtlAgreementProductCostsNew ptlAgreementProductCostsNew = new PtlAgreementProductCostsNew();
@@ -494,25 +515,28 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
                 costsAttrLinkHistories.add(costsAttrLinkHistory);
             } else {
                 if (ptlAgreementUndwrtRulesAttr.getAttrType().equals("radio") || (!"0".equals(x.getMin()) && null != x.getMin()) || (!"0".equals(x.getMax()) && null != x.getMax())) {
+                    if(x.getMin() != null || x.getMax() != null) {
+                        x.setCostsId(ptlAgreementProductCostsNew.getId());
+                        x.setId(0);
+                        costsAttrLink.add(x);
+                        BeanUtils.copyProperties(x, costsAttrLinkHistory);
+                        //设置产品费用因子历史记录
+                        costsAttrLinkHistory.setId(null);
+                        costsAttrLinkHistory.setBatch(uuid);
 
-                    x.setCostsId(ptlAgreementProductCostsNew.getId());
-                    x.setId(0);
-                    costsAttrLink.add(x);
-                    BeanUtils.copyProperties(x, costsAttrLinkHistory);
-                    //设置产品费用因子历史记录
-                    costsAttrLinkHistory.setId(null);
-                    costsAttrLinkHistory.setBatch(uuid);
-
-                    costsAttrLinkHistory.setOperatorType("add");
-                    costsAttrLinkHistory.setModifier(BaseController.getUser().getId());
-                    costsAttrLinkHistory.setOperatorTime(LocalDateTime.now());
-                    costsAttrLinkHistories.add(costsAttrLinkHistory);
+                        costsAttrLinkHistory.setOperatorType("add");
+                        costsAttrLinkHistory.setModifier(BaseController.getUser().getId());
+                        costsAttrLinkHistory.setOperatorTime(LocalDateTime.now());
+                        costsAttrLinkHistories.add(costsAttrLinkHistory);
+                    }
                 }
             }
         });
         //保存产品费用因子历史记录
         ptlAgreementProductCostsAttrLinkHistoryService.saveBatch(costsAttrLinkHistories);
         ptlAgreementProductCostsAttrLinkService.saveBatch(costsAttrLink);
+        //添加费用因子轨迹
+        ptlAgreementProductCostsTrajectoryService.addCostsTrajectory(ptlAgreementProductCostsNew.getId(),"新增费用因子",BaseController.getUser().getId());
         return true;
 
     }
@@ -520,16 +544,17 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
     @Transactional
     @Override
     public boolean costsUpdate(AgreementProductCosts agreementProductCosts) {
+//2024-04-26  删除检测非车信息 强制填写费用
         //校验非车信息是否存在
-        List<PtlAgreementProductCostsAttrLink> nonMotorInsurance = agreementProductCosts.getCostsAttrLinks().stream().filter(x -> x.getAttrCode().equals("NonMotorInsurance")).collect(Collectors.toList());
-        if (nonMotorInsurance.size() > 0) {
-            if((nonMotorInsurance.get(0).getMin() != null && !nonMotorInsurance.get(0).getMin().equals("0")) || nonMotorInsurance.get(0).getMax() != null && !nonMotorInsurance.get(0).getMax().equals("0"))
-            {
-                if((agreementProductCosts.getNoCostsProportion() == null || agreementProductCosts.getNoCostsProportion().equals("0"))){
-                    throw new SystemException("检测到存在非车费用因子,请填写非车费用!");
-                }
-            }
-        }
+//        List<PtlAgreementProductCostsAttrLink> nonMotorInsurance = agreementProductCosts.getCostsAttrLinks().stream().filter(x -> x.getAttrCode().equals("NonMotorInsurance")).collect(Collectors.toList());
+//        if (nonMotorInsurance.size() > 0) {
+//            if((nonMotorInsurance.get(0).getMin() != null && !nonMotorInsurance.get(0).getMin().equals("0")) || nonMotorInsurance.get(0).getMax() != null && !nonMotorInsurance.get(0).getMax().equals("0"))
+//            {
+//                if((agreementProductCosts.getNoCostsProportion() == null || agreementProductCosts.getNoCostsProportion().equals("0"))){
+//                    throw new SystemException("检测到存在非车费用因子,请填写非车费用!");
+//                }
+//            }
+//        }
 
         //更新费用主表信息
         PtlAgreementProductCostsNew ptlAgreementProductCostsNew = new PtlAgreementProductCostsNew();
@@ -653,6 +678,8 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         //保存产品费用因子历史记录
         ptlAgreementProductCostsAttrLinkHistoryService.saveBatch(costsAttrLinkHistories);
         ptlAgreementProductCostsAttrLinkService.saveBatch(costsAttrLink);
+        //添加费用因子轨迹
+        ptlAgreementProductCostsTrajectoryService.addCostsTrajectory(ptlAgreementProductCostsNew.getId(),"修改费用因子",BaseController.getUser().getId());
         return true;
     }
 
@@ -706,7 +733,8 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         //删除产品费用及费用因子
         baseMapper.deleteById(costsId);
         ptlAgreementProductCostsAttrLinkService.remove(new LambdaQueryWrapper<PtlAgreementProductCostsAttrLink>().eq(PtlAgreementProductCostsAttrLink::getCostsId, costsId));
-
+        //添加费用因子轨迹
+        ptlAgreementProductCostsTrajectoryService.addCostsTrajectory(ptlAgreementProductCostsNew.getId(),"删除费用因子",BaseController.getUser().getId());
         return true;
     }
 
@@ -787,9 +815,41 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         ptlAgreementProductCostsNew.setIsAudit(costsAuditVo.getIsAudit());
         ptlAgreementProductCostsNew.setAuditPerson(BaseController.getUser().getId());
         ptlAgreementProductCostsNew.setAuditTime(LocalDateTime.now());
+        String desc = "";
+        if(costsAuditVo.getIsAudit() == 1) {
+            desc = "审核通过";
+        }else if(costsAuditVo.getIsAudit() == 2){
+            desc = "审核驳回";
+        }
+        //添加费用因子轨迹
+        ptlAgreementProductCostsTrajectoryService.addCostsTrajectory(ptlAgreementProductCostsNew.getId(),desc,BaseController.getUser().getId());
         return baseMapper.updateById(ptlAgreementProductCostsNew) > 0 ? true : false;
     }
 
+    @Override
+    @Transactional
+    public boolean costsAuditBatch(CostsAuditVo costsAuditVo){
+        for (String costsId : costsAuditVo.getCostsIds()){
+            PtlAgreementProductCostsNew ptlAgreementProductCostsNew = this.getById(costsId);
+            if(ptlAgreementProductCostsNew == null){
+                throw new SystemException("费用不存在");
+            }
+            ptlAgreementProductCostsNew.setIsAudit(costsAuditVo.getIsAudit());
+            ptlAgreementProductCostsNew.setAuditPerson(BaseController.getUser().getId());
+            ptlAgreementProductCostsNew.setAuditTime(LocalDateTime.now());
+            String desc = "";
+            if(costsAuditVo.getIsAudit() == 1) {
+                desc = "审核通过";
+            }else if(costsAuditVo.getIsAudit() == 2){
+                desc = "审核驳回";
+            }
+            //添加费用因子轨迹
+            ptlAgreementProductCostsTrajectoryService.addCostsTrajectory(ptlAgreementProductCostsNew.getId(),desc,BaseController.getUser().getId());
+            baseMapper.updateById(ptlAgreementProductCostsNew);
+        }
+        return true;
+    }
+
     @Autowired
     PtlAgreementService ptlAgreementService;
 
@@ -1165,13 +1225,13 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
                 records.get(i).setJqExportRadioLevel3(ptlAgreementProductCostsExport.getJqExportRadioLevel3().toString());
                 records.get(i).setJqExportRadioLevel4(ptlAgreementProductCostsExport.getJqExportRadioLevel4().toString());
                 records.get(i).setJqExportRadioLevel5(ptlAgreementProductCostsExport.getJqExportRadioLevel5().toString());
-                records.get(i).setJqExportInvestmentRadio(ptlAgreementProductCostsExport.getJqExportInvestmentRadio().toString());
+//                records.get(i).setJqExportInvestmentRadio(ptlAgreementProductCostsExport.getJqExportInvestmentRadio().toString());
                 records.get(i).setSyExportRadioLevel1(ptlAgreementProductCostsExport.getSyExportRadioLevel1().toString());
                 records.get(i).setSyExportRadioLevel2(ptlAgreementProductCostsExport.getSyExportRadioLevel2().toString());
                 records.get(i).setSyExportRadioLevel3(ptlAgreementProductCostsExport.getSyExportRadioLevel3().toString());
                 records.get(i).setSyExportRadioLevel4(ptlAgreementProductCostsExport.getSyExportRadioLevel4().toString());
                 records.get(i).setSyExportRadioLevel5(ptlAgreementProductCostsExport.getSyExportRadioLevel5().toString());
-                records.get(i).setSyExportInvestmentRadio(ptlAgreementProductCostsExport.getSyExportInvestmentRadio().toString());
+//                records.get(i).setSyExportInvestmentRadio(ptlAgreementProductCostsExport.getSyExportInvestmentRadio().toString());
                 records.get(i).setNoCarExportRadioLevel1(ptlAgreementProductCostsExport.getNoCarExportRadioLevel1().toString());
                 records.get(i).setNoCarExportRadioLevel2(ptlAgreementProductCostsExport.getNoCarExportRadioLevel2().toString());
                 records.get(i).setNoCarExportRadioLevel3(ptlAgreementProductCostsExport.getNoCarExportRadioLevel3().toString());

+ 41 - 0
src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsTrajectoryServiceImpl.java

@@ -0,0 +1,41 @@
+package com.ydtech.modules.protocols.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.protocols.dao.PtlAgreementProductCostsTrajectoryMapper;
+import com.ydtech.modules.protocols.dao.PtlAgreementUndwrtRulesAttrLinkMapper;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsTrajectory;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttrLink;
+import com.ydtech.modules.protocols.service.PtlAgreementProductCostsTrajectoryService;
+import com.ydtech.modules.protocols.service.PtlAgreementUndwrtRulesAttrLinkService;
+import com.ydtech.utils.idgen.IdGenerate;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * @description 费用因子轨迹 service实现类
+ * @createDate 2024-2-22 15:44:29
+ * @Entity com.ydtech.modules.protocol.entity.po.PtlAgreementProductCostsTrajectoryMapper
+ */
+@Service
+public class PtlAgreementProductCostsTrajectoryServiceImpl extends ServiceImpl<PtlAgreementProductCostsTrajectoryMapper, PtlAgreementProductCostsTrajectory>
+        implements PtlAgreementProductCostsTrajectoryService {
+
+    @Override
+    public boolean addCostsTrajectory(String costsId, String desc, String userId) {
+        PtlAgreementProductCostsTrajectory trajectory = new PtlAgreementProductCostsTrajectory();
+        trajectory.setId(IdGenerate.nextId());
+        trajectory.setReadme(desc);
+        trajectory.setCostsId(costsId);
+        trajectory.setCreateTime(LocalDateTime.now());
+        trajectory.setCreateBy(userId);
+        return save(trajectory);
+    }
+
+    @Override
+    public List<PtlAgreementProductCostsTrajectory> getTrajectory(String costsId) {
+        return lambdaQuery().eq(PtlAgreementProductCostsTrajectory::getCostsId, costsId).orderByAsc(PtlAgreementProductCostsTrajectory::getCreateTime).list();
+    }
+}

+ 1 - 1
src/main/resources/application-test.yml

@@ -109,7 +109,7 @@ spring:
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
     druid:
-      url: jdbc:mysql://47.92.254.66:3306/zgdd?serverTimezone=Asia/Shanghai&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true
+      url: jdbc:mysql://172.24.144.218:3366/agent?serverTimezone=Asia/Shanghai&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true
       username: root
       password: '@RqGHG#KZ*C9ytkQ'
       # 连接池配置

+ 27 - 0
src/main/resources/mapper/modules/admin/SysUserLinkAreaMapper.xml

@@ -68,4 +68,31 @@
         </where>
         order by area.area_code
     </select>
+
+    <select id="findAreaIdsByAgentUserId"  resultType="String">
+        SELECT
+            su.id
+        FROM
+            sys_user su
+                LEFT JOIN sys_user_info info ON info.id = su.id
+                LEFT JOIN sys_dept sd ON su.dept_id = sd.id
+                LEFT JOIN sys_user_role t3 ON su.id = t3.user_id
+                AND sd.del_flag = '0'
+        WHERE
+            t3.role_id = 20
+          AND sd.management_source = 2
+          AND
+            (CONCAT( SUBSTRING(RPAD(su.dept_id, 8, '0'), 3, 2), SUBSTRING(RPAD(su.dept_id, 8, '0'), 5, 2), SUBSTRING(RPAD(su.dept_id, 8, '0'), 7, 2) ) ) IN
+
+            (
+                SELECT
+                    DISTINCT link.area_code
+                FROM
+                    sys_user_link_area link
+                WHERE
+                    link.user_id = #{userId}
+                ORDER BY
+                    link.area_code
+            )
+    </select>
 </mapper>

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

@@ -654,4 +654,23 @@
         </if>
         order by flag desc
     </select>
+
+
+    <select id="getAgentUserIdsByAreaIds" resultType="com.ydtech.modules.admin.model.vo.SysUserBaseVO">
+        SELECT
+            su.id,
+            su.dept_id AS deptId
+        FROM
+            sys_user su
+                LEFT JOIN sys_user_info info ON info.id = su.id
+                LEFT JOIN sys_dept sd ON su.dept_id = sd.id
+                LEFT JOIN sys_dept psd ON psd.id = sd.parent_id
+                LEFT JOIN sys_user_role t3 ON su.id = t3.user_id
+                LEFT JOIN sys_role t4 ON t3.role_id = t4.id
+                AND sd.del_flag = '0'
+                AND su.STATUS = 1
+        WHERE
+            t3.role_id =20
+          AND sd.management_source = 2
+    </select>
 </mapper>

+ 16 - 13
src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml

@@ -134,9 +134,10 @@
 
     <select id="getPendingAuditOrders" resultType="com.ydtech.modules.order.entity.InsOrders">
         SELECT
-        *
+        io.*,
+        sd.management_source
         FROM
-        ins_orders
+        ins_orders io left join sys_user su on su.id = io.userid left join sys_dept sd on sd.id = su.dept_id
         WHERE
         orderno IN (
         SELECT
@@ -149,9 +150,9 @@
         )
         AND
         orderstatus= 3
-        <if test="params.orderNo != null and params.orderNo != ''">
-            AND orderno = #{params.orderNo}
-        </if>
+<!--        <if test="params.orderNo != null and params.orderNo != ''">-->
+<!--            AND orderno = #{params.orderNo}-->
+<!--        </if>-->
         <if test="params.licenseNo != null and params.licenseNo != ''">
             AND licenseno = #{params.licenseNo}
         </if>
@@ -171,9 +172,10 @@
 
     <select id="getByUserId" resultType="com.ydtech.modules.order.entity.InsOrders">
         SELECT
-        *
+        io.*,
+        sd.management_source
         FROM
-        ins_orders
+        ins_orders io left join sys_user su on su.id = io.userid left join sys_dept sd on sd.id = su.dept_id
         WHERE
         orderno IN (
         SELECT
@@ -301,9 +303,10 @@
 
     <select id="getAlreadyAuditOrders" resultType="com.ydtech.modules.order.entity.InsOrders">
         SELECT
-        *
+        io.*,
+        sd.management_source
         FROM
-        ins_orders
+        ins_orders io left join sys_user su on su.id = io.userid left join sys_dept sd on sd.id = su.dept_id
         WHERE
         orderno IN (
         SELECT
@@ -311,12 +314,12 @@
         FROM
         ins_area_company
         WHERE
-        id IN ( SELECT ifon.ins_order_no FROM ins_fee_order_new ifon RIGHT JOIN ins_fee_audit ifa ON ifon.ins_order_no = ifa.ins_order_no ))
+        id IN ( SELECT ifon.ins_order_no FROM ins_fee_order_new ifon RIGHT JOIN ins_fee_audit ifa ON ifon.ins_order_no = ifa.ins_order_no where ifa.auditstatus = #{params.auditStatus} ))
           AND
             orderstatus = 3
-        <if test="params.orderNo != null and params.orderNo != ''">
-            AND orderno = #{params.orderNo}
-        </if>
+<!--        <if test="params.orderNo != null and params.orderNo != ''">-->
+<!--            AND orderno = #{params.orderNo}-->
+<!--        </if>-->
         <if test="params.licenseNo != null and params.licenseNo != ''">
             AND licenseno = #{params.licenseNo}
         </if>