소스 검색

1.承包规则拦截

wks 3 년 전
부모
커밋
85b50fb30a
21개의 변경된 파일415개의 추가작업 그리고 91개의 파일을 삭제
  1. 11 0
      src/main/java/com/ydtech/constants/RedisConstant.java
  2. 4 2
      src/main/java/com/ydtech/constants/enums/dict/DictionaryData.java
  3. 1 1
      src/main/java/com/ydtech/modules/admin/controller/AppLoginController.java
  4. 0 10
      src/main/java/com/ydtech/modules/demo/controller/DemoController.java
  5. 8 8
      src/main/java/com/ydtech/modules/esm/model/EsmInsCompany.java
  6. 8 5
      src/main/java/com/ydtech/modules/ins/model/ya/YaQuoteInfoVo.java
  7. 1 1
      src/main/java/com/ydtech/modules/ins/service/impl/InsAlltrustApiServiceImpl.java
  8. 43 1
      src/main/java/com/ydtech/modules/order/components/InsOrdersComponents.java
  9. 1 1
      src/main/java/com/ydtech/modules/order/controller/InsCrawlerOrderController.java
  10. 1 1
      src/main/java/com/ydtech/modules/order/controller/YongAnOrderApiController.java
  11. 2 1
      src/main/java/com/ydtech/modules/order/controller/ZhongMeiOrderApiController.java
  12. 1 1
      src/main/java/com/ydtech/modules/order/controller/ZhongMeiOrderController.java
  13. 233 0
      src/main/java/com/ydtech/modules/order/entity/bo/UnderwritingRulesBo.java
  14. 8 2
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
  15. 1 1
      src/main/java/com/ydtech/modules/protocol/service/PtlAgreementProductCostsService.java
  16. 10 0
      src/main/java/com/ydtech/modules/protocol/service/PtlAgreementUnderwritingRulesService.java
  17. 0 6
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java
  18. 49 3
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementUnderwritingRulesServiceImpl.java
  19. 3 1
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlProductServiceImpl.java
  20. 0 1
      src/main/java/com/ydtech/modules/protocol/utils/AssertionUtils.java
  21. 30 45
      src/main/java/com/ydtech/utils/baidu/AuthService.java

+ 11 - 0
src/main/java/com/ydtech/constants/RedisConstant.java

@@ -15,11 +15,22 @@ public class RedisConstant {
      */
     public static final String QUOTE_INFO_KEY = "ins:orders:";
 
+
     /**
      * 订单缓存时间
      */
     public static final long QUOTE_INFO_KEY_TIME = 1L;
 
+    /**
+     * 核保规则
+     */
+    public static final String QUOTE_RULES_KEY = "ins:rules:";
+
+    /**
+     * 核保规则时间
+     */
+    public static final long QUOTE_RULES_KEY_TIME = 1L;
+
     /**
      * 中煤核保返回
      */

+ 4 - 2
src/main/java/com/ydtech/constants/enums/dict/DictionaryData.java

@@ -1,9 +1,11 @@
 package com.ydtech.constants.enums.dict;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import lombok.*;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
 
 @Data
 @Builder

+ 1 - 1
src/main/java/com/ydtech/modules/admin/controller/AppLoginController.java

@@ -76,7 +76,7 @@ public class AppLoginController{
         boolean sysUserBoo = sysUserService.updateById(sysUser);
         boolean integerBoo = esmUserInternalService.save(internal);
 
-        if (sysUserBoo == true && integerBoo == true) {
+        if (sysUserBoo && integerBoo) {
             return HttpResult.ok("保存成功");
         }
         throw new SystemException("修改失败");

+ 0 - 10
src/main/java/com/ydtech/modules/demo/controller/DemoController.java

@@ -1,16 +1,10 @@
 package com.ydtech.modules.demo.controller;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.core.page.HttpResult;
-import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.base.model.dto.BaseDto;
 import com.ydtech.modules.base.model.dto.TestDto;
-import com.ydtech.modules.inv.model.InvChannelsExternalBillsDetails;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -102,8 +96,4 @@ public class DemoController extends BaseController {
     }
 
 
-
-
-
-
 }

+ 8 - 8
src/main/java/com/ydtech/modules/esm/model/EsmInsCompany.java

@@ -81,14 +81,14 @@ public class EsmInsCompany implements Serializable {
     @ApiModelProperty(value = "拼音")
     private String cnName;
 
-    @TableField(value = "code")
-    @ApiModelProperty(value = "编码")
-    private String code;
-
-    @TableField(value = "type")
-    @ApiModelProperty(value = "保司类型(1 - 财险、2 - 寿险、0 - 渠道)")
-    @NotNull(message = "保司类型不能为空!")
-    private String type;
+//    @TableField(value = "code")
+//    @ApiModelProperty(value = "编码")
+//    private String code;
+
+//    @TableField(value = "type")
+//    @ApiModelProperty(value = "保司类型(1 - 财险、2 - 寿险、0 - 渠道)")
+//    @NotNull(message = "保司类型不能为空!")
+//    private String type;
 
 
 

+ 8 - 5
src/main/java/com/ydtech/modules/ins/model/ya/YaQuoteInfoVo.java

@@ -1,7 +1,6 @@
 package com.ydtech.modules.ins.model.ya;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.ydtech.modules.ins.model.vo.CarInfoVo;
 import com.ydtech.modules.ins.model.vo.CustomerInfoVo;
 import com.ydtech.modules.ins.model.vo.KindInfoVo;
@@ -28,14 +27,17 @@ public class YaQuoteInfoVo implements Serializable {
 
     @Valid
     private CarInfoVo carInfo;
+
     //车主  lig 2023-02-15
     @Valid
     private CustomerInfoVo ownerInfo;
-    @Valid
+
     //投保人信息  lig 2023-04-13
-    private CustomerInfoVo policyHolderInfo;
     @Valid
+    private CustomerInfoVo policyHolderInfo;
+
     //被保人信息  lig 2023-04-13
+    @Valid
     private CustomerInfoVo insuredPersonInfo;
 
     @Valid
@@ -57,8 +59,9 @@ public class YaQuoteInfoVo implements Serializable {
         this.policyHolderInfo = JSON.toJavaObject(insOrders.getApplyinfo(), CustomerInfoVo.class);
         this.insuredPersonInfo = JSON.toJavaObject(insOrders.getInsureinfo(), CustomerInfoVo.class);
         this.carInfo = JSON.toJavaObject(insOrders.getCarinfo(), CarInfoVo.class);
-        this.riskList = JSONObject.parseArray(JSON.toJSONString(insOrders.getRisk()), RiskInfoVo.class);
-        this.kindList = JSONObject.parseArray(JSON.toJSONString(insOrders.getKing()), KindInfoVo.class);
+        this.riskList = JSON.parseArray(JSON.toJSONString(insOrders.getRisk()), RiskInfoVo.class);
+        this.kindList = JSON.parseArray(JSON.toJSONString(insOrders.getKing()), KindInfoVo.class);
         this.quoteno = insOrders.getQuoteno();
     }
+
 }

+ 1 - 1
src/main/java/com/ydtech/modules/ins/service/impl/InsAlltrustApiServiceImpl.java

@@ -226,7 +226,7 @@ public class InsAlltrustApiServiceImpl implements InsAlltrustApiService {
 
 
 //    public HttpResult quoteApi(BaseQuoteInfoVo yaQuoteInfoVo) {
-        BaseQuoteInfoVo yaQuoteInfoVo = insOrdersComponents.getQuoteInfo(quoteVo.getOrderNo());
+        BaseQuoteInfoVo yaQuoteInfoVo = insOrdersComponents.getQuoteInfo(quoteVo.getOrderNo(), quoteVo.getAgreementId());
         HttpResult httpResult = new HttpResult();
         ObjectMapper xmlMapper = this.gainXmlMapper();
 

+ 43 - 1
src/main/java/com/ydtech/modules/order/components/InsOrdersComponents.java

@@ -1,14 +1,18 @@
 package com.ydtech.modules.order.components;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.ydtech.constants.RedisConstant;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 import com.ydtech.modules.order.service.InsOrdersService;
+import com.ydtech.modules.protocol.service.PtlAgreementUnderwritingRulesService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Component;
 import org.springframework.util.ObjectUtils;
 
+
 @Component
 public class InsOrdersComponents {
 
@@ -16,9 +20,20 @@ public class InsOrdersComponents {
 
     private final StringRedisTemplate redisTemplate;
 
-    public InsOrdersComponents(InsOrdersService insOrdersService, StringRedisTemplate redisTemplate) {
+
+    private InsOrdersComponents proxyService;
+
+    private final PtlAgreementUnderwritingRulesService ptlAgreementUnderwritingRulesService;
+
+    @Autowired
+    public void setProxyService(InsOrdersComponents proxyService) {
+        this.proxyService = proxyService;
+    }
+
+    public InsOrdersComponents(InsOrdersService insOrdersService, StringRedisTemplate redisTemplate, PtlAgreementUnderwritingRulesService ptlAgreementUnderwritingRulesService) {
         this.insOrdersService = insOrdersService;
         this.redisTemplate = redisTemplate;
+        this.ptlAgreementUnderwritingRulesService = ptlAgreementUnderwritingRulesService;
     }
 
     /**
@@ -38,7 +53,34 @@ public class InsOrdersComponents {
             return new BaseQuoteInfoVo(insOrders);
         }
         quoteInfoVo.setOrderNo(orderNo);
+        // 核保规则
         return quoteInfoVo;
     }
 
+
+    /**
+     * 通过订单号校验核保规则
+     * 通订单号获取报价信息
+     *
+     * @param orderNo     订单ID
+     * @param agreementId 协议id
+     * @return BaseQuoteInfoVo
+     */
+    public BaseQuoteInfoVo getQuoteInfo(String orderNo, String agreementId) {
+        // 核保规则
+        proxyService.getQuoteRules(orderNo, agreementId);
+        return proxyService.getQuoteInfo(orderNo);
+    }
+
+    /**
+     * 通订单号判断核保规则
+     *
+     * @param orderNo 订单ID
+     */
+    public void getQuoteRules(String orderNo, String agreementId) {
+        String s = redisTemplate.opsForValue().get(RedisConstant.QUOTE_RULES_KEY + orderNo);
+        JSONObject jsonObject = JSON.parseObject(s);
+        ptlAgreementUnderwritingRulesService.ruleComparison(jsonObject, agreementId, 0);
+    }
+
 }

+ 1 - 1
src/main/java/com/ydtech/modules/order/controller/InsCrawlerOrderController.java

@@ -37,7 +37,7 @@ public class InsCrawlerOrderController extends BaseController {
     @PostMapping("/quote")
     @ApiOperation("报价")
     public HttpResult<QuoteRespVo> quote(@RequestBody BaseQuoteVo<Object> baseQuoteVo) {
-        BaseQuoteInfoVo quoteInfo = this.insOrdersComponents.getQuoteInfo(baseQuoteVo.getOrderNo());
+        BaseQuoteInfoVo quoteInfo = this.insOrdersComponents.getQuoteInfo(baseQuoteVo.getOrderNo(), baseQuoteVo.getAgreementId());
         return insuranceCrawlerOrderService.quote(quoteInfo, baseQuoteVo);
     }
 

+ 1 - 1
src/main/java/com/ydtech/modules/order/controller/YongAnOrderApiController.java

@@ -36,7 +36,7 @@ public class YongAnOrderApiController {
     @PostMapping("/quote")
     @ApiOperation("报价")
     public HttpResult quote(@RequestBody BaseQuoteVo<Object> quoteVo) {
-        BaseQuoteInfoVo quoteInfo = insOrdersComponents.getQuoteInfo(quoteVo.getOrderNo());
+        BaseQuoteInfoVo quoteInfo = insOrdersComponents.getQuoteInfo(quoteVo.getOrderNo(), quoteVo.getAgreementId());
         return this.yongAnOrderService.quote(quoteInfo, quoteVo);
     }
 

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

@@ -21,6 +21,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
+import java.util.Map;
 
 
 @Api(tags = "中煤财险 API ")
@@ -47,7 +48,7 @@ public class ZhongMeiOrderApiController {
     @PostMapping("/quote")
     @ApiOperation("报价")
     public HttpResult quote(@RequestBody BaseQuoteVo<AccidentalDrivingVo> zmQuoteVo) {
-        BaseQuoteInfoVo quoteInfo = this.insOrdersComponents.getQuoteInfo(zmQuoteVo.getOrderNo());
+        BaseQuoteInfoVo quoteInfo = this.insOrdersComponents.getQuoteInfo(zmQuoteVo.getOrderNo(), zmQuoteVo.getAgreementId());
         return this.zhongMeiOrderApiService.quote(quoteInfo, zmQuoteVo);
     }
 

+ 1 - 1
src/main/java/com/ydtech/modules/order/controller/ZhongMeiOrderController.java

@@ -34,7 +34,7 @@ public class ZhongMeiOrderController {
     @PostMapping("/quote")
     @ApiOperation("报价")
     public HttpResult quote(@RequestBody BaseQuoteVo<AccidentalDrivingVo> zmQuoteVo) {
-        BaseQuoteInfoVo quoteInfo = this.insOrdersComponents.getQuoteInfo(zmQuoteVo.getOrderNo());
+        BaseQuoteInfoVo quoteInfo = this.insOrdersComponents.getQuoteInfo(zmQuoteVo.getOrderNo(), zmQuoteVo.getAgreementId());
         return this.zhongMeiOrderService.quote(quoteInfo, zmQuoteVo);
     }
 

+ 233 - 0
src/main/java/com/ydtech/modules/order/entity/bo/UnderwritingRulesBo.java

@@ -0,0 +1,233 @@
+package com.ydtech.modules.order.entity.bo;
+
+
+import cn.hutool.core.util.IdcardUtil;
+import com.alibaba.fastjson.annotation.JSONField;
+import com.ydtech.constants.enums.InsurKind;
+import com.ydtech.modules.ins.model.vo.CarInfoVo;
+import com.ydtech.modules.ins.model.vo.CustomerInfoVo;
+import com.ydtech.modules.ins.model.vo.KindInfoVo;
+import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+@NoArgsConstructor
+@Data
+public class UnderwritingRulesBo implements Serializable {
+
+    private static final long serialVersionUID = -9105463448498221619L;
+    /**
+     * 车牌号
+     */
+    @JSONField(name = "LicenseNo")
+    private String licenseNo;
+    /**
+     * 新车购置价
+     */
+    @JSONField(name = "CarPrice")
+    private Integer carPrice;
+    /**
+     * 车龄
+     */
+    @JSONField(name = "CarAge")
+    private Integer carAge;
+    /**
+     * 投保人女年龄
+     */
+    @JSONField(name = "ApplicantWage")
+    private Integer applicantWage;
+    /**
+     * 投保人男年龄
+     */
+    @JSONField(name = "ApplicantMage")
+    private Integer applicantMage;
+    /**
+     * 投保人类型
+     */
+    @JSONField(name = "ApplicantType")
+    private String applicantType;
+    /**
+     * 投保人证件号前六位
+     */
+    @JSONField(name = "ApplicantId")
+    private String applicantId;
+    /**
+     * 投保人性别
+     */
+    @JSONField(name = "ApplicantSex")
+    private String applicantSex;
+    /**
+     * 被保人性别
+     */
+    @JSONField(name = "InsureSex")
+    private String insureSex;
+    /**
+     * 被保人证件号前六位
+     */
+    @JSONField(name = "InsureId")
+    private String insureId;
+    /**
+     * 被保人男年龄
+     */
+    @JSONField(name = "InsureMage")
+    private Integer insureMage;
+    /**
+     * 保人女年龄
+     */
+    @JSONField(name = "InsureWage")
+    private Integer insureWage;
+    /**
+     * 被保人类型
+     */
+    @JSONField(name = "InsureType")
+    private String insureType;
+    /**
+     * 车主性别
+     */
+    @JSONField(name = "OwnerSex")
+    private String ownerSex;
+    /**
+     * 车主类型
+     */
+    @JSONField(name = "OwnerType")
+    private String ownerType;
+    /**
+     * 车主证件号前六位
+     */
+    @JSONField(name = "OwnerId")
+    private String ownerId;
+    /**
+     * 车主女年龄
+     */
+    @JSONField(name = "OwnerWage")
+    private Integer ownerWage;
+    /**
+     * 车主男年龄
+     */
+    @JSONField(name = "OwnerMage")
+    private Integer ownerMage;
+    /**
+     * 医保外乘客
+     */
+    @JSONField(name = "MedicalPassenger")
+    private Integer medicalPassenger;
+    /**
+     * 医保外司机
+     */
+    @JSONField(name = "MedicalDriver")
+    private Integer medicalDriver;
+    /**
+     * 司机
+     */
+    @JSONField(name = "Driver")
+    private Integer driver;
+    /**
+     * 三者险
+     */
+    @JSONField(name = "ThInsurance")
+    private Integer thInsurance;
+    /**
+     * 乘客
+     */
+    @JSONField(name = "Passenger")
+    private Integer passenger;
+    /**
+     * 医保外三者
+     */
+    @JSONField(name = "MedicalTh")
+    private Integer medicalTh;
+
+    public UnderwritingRulesBo(BaseQuoteInfoVo baseQuoteInfoVo) {
+        // 车辆因子
+        CarInfoVo carInfo = baseQuoteInfoVo.getCarInfo();
+        this.setTheVehicleFactor(carInfo);
+        // 投保人
+        CustomerInfoVo policyHolderInfo = baseQuoteInfoVo.getPolicyHolderInfo();
+        this.setPolicyHolderInfo(policyHolderInfo);
+        // 被保人
+        CustomerInfoVo insuredPersonInfo = baseQuoteInfoVo.getInsuredPersonInfo();
+        this.setInsuredPersonInfo(insuredPersonInfo);
+        // 车主
+        CustomerInfoVo ownerInfo = baseQuoteInfoVo.getOwnerInfo();
+        this.setOwnerInfo(ownerInfo);
+        // 车险
+        List<KindInfoVo> kindList = baseQuoteInfoVo.getKindList();
+        this.setInsurance(kindList);
+    }
+
+    private void setTheVehicleFactor(CarInfoVo carInfo) {
+        this.licenseNo = carInfo.getLicenseNo().substring(0, 2);
+        this.carPrice = Integer.valueOf(carInfo.getPurchasePrice());
+//        this.carAge = carAge;
+    }
+
+    private void setPolicyHolderInfo(CustomerInfoVo policyHolderInfo) {
+        String identifyNumber = policyHolderInfo.getIdentifyNumber();
+        int ageByIdCard = IdcardUtil.getAgeByIdCard(identifyNumber);
+        int genderByIdCard = IdcardUtil.getGenderByIdCard(identifyNumber);
+        this.applicantId = identifyNumber.substring(0, 6);
+        if (genderByIdCard == 0) {
+            this.applicantSex = "女";
+            this.applicantWage = ageByIdCard;
+        } else {
+            this.applicantSex = "男";
+            this.applicantMage = ageByIdCard;
+        }
+//        this.applicantType = applicantType;
+    }
+
+    private void setInsuredPersonInfo(CustomerInfoVo insuredPersonInfo) {
+        String identifyNumber = insuredPersonInfo.getIdentifyNumber();
+        int ageByIdCard = IdcardUtil.getAgeByIdCard(identifyNumber);
+        int genderByIdCard = IdcardUtil.getGenderByIdCard(identifyNumber);
+        this.insureId = identifyNumber.substring(0, 6);
+        if (genderByIdCard == 0) {
+            this.insureSex = "女";
+            this.insureWage = ageByIdCard;
+        } else {
+            this.insureSex = "男";
+            this.insureMage = ageByIdCard;
+        }
+//        this.insureType = insureType;
+    }
+
+    private void setOwnerInfo(CustomerInfoVo ownerInfo) {
+        String identifyNumber = ownerInfo.getIdentifyNumber();
+        int ageByIdCard = IdcardUtil.getAgeByIdCard(identifyNumber);
+        int genderByIdCard = IdcardUtil.getGenderByIdCard(identifyNumber);
+        this.ownerId = identifyNumber.substring(0, 6);
+
+        if (genderByIdCard == 0) {
+            this.ownerSex = "女";
+            this.ownerWage = ageByIdCard;
+        } else {
+            this.ownerSex = "男";
+            this.ownerMage = ageByIdCard;
+        }
+//        this.ownerType = ownerType;
+    }
+
+    private void setInsurance(List<KindInfoVo> kindList) {
+
+        for (KindInfoVo kindInfoVo : kindList) {
+            if (kindInfoVo.getKindCode().equals(InsurKind.SY_FJ_YBW2.getCode())) {
+                this.medicalPassenger = (int) kindInfoVo.getAmount();
+            } else if (kindInfoVo.getKindCode().equals(InsurKind.SY_FJ_YBW3.getCode())) {
+                this.medicalDriver = (int) kindInfoVo.getAmount();
+            } else if (kindInfoVo.getKindCode().equals(InsurKind.D3.getCode())) {
+                this.driver = (int) kindInfoVo.getAmount();
+            } else if (kindInfoVo.getKindCode().equals(InsurKind.B.getCode())) {
+                this.thInsurance = (int) kindInfoVo.getAmount();
+            } else if (kindInfoVo.getKindCode().equals(InsurKind.D4.getCode())) {
+                this.passenger = (int) kindInfoVo.getAmount();
+            } else if (kindInfoVo.getKindCode().equals(InsurKind.SY_FJ_YBW1.getCode())) {
+                this.medicalTh = (int) kindInfoVo.getAmount();
+            }
+        }
+
+    }
+
+}

+ 8 - 2
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -26,6 +26,7 @@ import com.ydtech.modules.order.dao.InsOrdersMapper;
 import com.ydtech.modules.order.entity.BasePageResult;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.bo.UnderwritingRulesBo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 import com.ydtech.modules.order.entity.vo.OrderQueryVo;
 import com.ydtech.modules.order.entity.vo.OrderVo;
@@ -48,8 +49,7 @@ import java.util.Map;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
-import static com.ydtech.constants.RedisConstant.QUOTE_INFO_KEY;
-import static com.ydtech.constants.RedisConstant.QUOTE_INFO_KEY_TIME;
+import static com.ydtech.constants.RedisConstant.*;
 
 /**
  * @author wenkaisen
@@ -154,6 +154,12 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         // 4 将报价信息存入redis 中
         String s = JSON.toJSONString(quoteInfoVo);
         redisTemplate.opsForValue().set(QUOTE_INFO_KEY + insOrders.getOrderno(), s, QUOTE_INFO_KEY_TIME, TimeUnit.DAYS);
+
+        // 5 生成承包规则参数
+        UnderwritingRulesBo underwritingRulesBo = new UnderwritingRulesBo(quoteInfoVo);
+        String rules = JSON.toJSONString(underwritingRulesBo);
+        redisTemplate.opsForValue().set(QUOTE_RULES_KEY + insOrders.getOrderno(), rules, QUOTE_RULES_KEY_TIME, TimeUnit.HOURS);
+
         return insOrders;
     }
 

+ 1 - 1
src/main/java/com/ydtech/modules/protocol/service/PtlAgreementProductCostsService.java

@@ -5,7 +5,6 @@ import com.ydtech.modules.protocol.entity.dto.PltAgreementSchemeQueryDto;
 import com.ydtech.modules.protocol.entity.dto.PltAgreementSchemeSaveDto;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
 
-import java.util.Collection;
 import java.util.List;
 
 /**
@@ -39,6 +38,7 @@ public interface PtlAgreementProductCostsService extends IService<PtlAgreementPr
 
     /**
      * 根据保险公司id 和 配置查询产品费用
+     *
      * @param companyId 保险公司id
      * @param filedList 配置list
      */

+ 10 - 0
src/main/java/com/ydtech/modules/protocol/service/PtlAgreementUnderwritingRulesService.java

@@ -50,12 +50,22 @@ public interface PtlAgreementUnderwritingRulesService extends IService<PtlAgreem
 
     /**
      * 通过 协议id 查询 list
+     *
      * @param agreementIdList 协议id 集合
      * @return 协议id 车牌集合
      */
     Map<String, List<String>> getByLicenseNo(List<String> agreementIdList);
 
 
+    /**
+     * 通过协议id 和 规则类型 比较规则
+     *
+     * @param quoteRules  协议规则
+     * @param agreementId 协议id
+     * @param rulesType   规则类型
+     */
+    void ruleComparison(Map<String, Object> quoteRules, String agreementId, Integer rulesType);
+
 }
 
 

+ 0 - 6
src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java

@@ -168,12 +168,6 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         return HttpResult.ok("修改成功");
     }
 
-    /**
-     * 插入产品费用 和 承包规则
-     *
-     * @param agreementId 协议id
-     * @param agreement   协议信息全部实体
-     */
     @Override
     public void saveAssociationInformation(String agreementId, String insuranceCompanyId, PtlAgreementSaveVo agreement) {
         // 产品费用

+ 49 - 3
src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementUnderwritingRulesServiceImpl.java

@@ -9,12 +9,15 @@ import com.ydtech.modules.protocol.entity.dto.PtlFactorDto;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementUnderwritingRules;
 import com.ydtech.modules.protocol.service.PtlAgreementUnderwritingRulesService;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -27,6 +30,13 @@ public class PtlAgreementUnderwritingRulesServiceImpl extends ServiceImpl<PtlAgr
         implements PtlAgreementUnderwritingRulesService {
 
 
+    private PtlAgreementUnderwritingRulesService proxyService;
+
+    @Autowired
+    public void setProxyService(PtlAgreementUnderwritingRulesService proxyService) {
+        this.proxyService = proxyService;
+    }
+
     @Override
     public void deleteByAgreementId(String agreementId) {
         LambdaQueryWrapper<PtlAgreementUnderwritingRules> wrapper = new LambdaQueryWrapper<>();
@@ -62,14 +72,14 @@ public class PtlAgreementUnderwritingRulesServiceImpl extends ServiceImpl<PtlAgr
     @Override
     public Map<String, List<String>> getByLicenseNo(List<String> agreementIdList) {
         Map<String, List<String>> map = new HashMap<>();
-        if(!agreementIdList.isEmpty()){
+        if (!agreementIdList.isEmpty()) {
             LambdaQueryWrapper<PtlAgreementUnderwritingRules> wrapper = new LambdaQueryWrapper<>();
             wrapper.in(PtlAgreementUnderwritingRules::getAgreementId, agreementIdList)
                     .eq(PtlAgreementUnderwritingRules::getRulesType, 1);
 
             List<PtlAgreementUnderwritingRules> ptlAgreementUnderwritingRules = baseMapper.selectList(wrapper);
 
-            ptlAgreementUnderwritingRules.forEach(x->{
+            ptlAgreementUnderwritingRules.forEach(x -> {
                 Map<String, PtlFactorDto> mapPtlFactorDto = PtlAgreementCostsFactorSaveDto.toMapPtlFactorDto(x.getRulesFactor());
                 List<String> licenseNo = mapPtlFactorDto.get("LicenseNo").getParameter().stream().filter(str -> !"".equals(str)).collect(Collectors.toList());
                 map.put(x.getAgreementId(), licenseNo);
@@ -78,4 +88,40 @@ public class PtlAgreementUnderwritingRulesServiceImpl extends ServiceImpl<PtlAgr
 
         return map;
     }
-}
+
+    @Override
+    public void ruleComparison(Map<String, Object> quoteRules, String agreementId, Integer rulesType) {
+        Map<String, PtlFactorDto> mapPtlFactorDto = proxyService.getMapPtlFactorDto(agreementId, rulesType);
+        Set<String> strings = mapPtlFactorDto.keySet();
+
+        for (String s : strings) {
+            Object o = quoteRules.get(s);
+
+            // 过滤没有的字段
+            if (ObjectUtils.isEmpty(o)) {
+                continue;
+            }
+            PtlFactorDto ptlFactorDto = mapPtlFactorDto.get(s);
+            List<String> parameter = ptlFactorDto.getParameter();
+
+            // 参数包含校验
+            if (parameter != null && !parameter.isEmpty()) {
+                assert o instanceof String;
+                boolean contains = parameter.contains(o);
+                AssertionUtils.isSucceed(contains, String.format("%s 不在 %s 包含范围内", o, ptlFactorDto.getName()));
+            }
+
+            Integer minValue = ptlFactorDto.getMinValue();
+            Integer maxValue = ptlFactorDto.getMaxValue();
+            // 参数最大值最小值校验
+            if (!ObjectUtils.isEmpty(minValue) &&!ObjectUtils.isEmpty(maxValue)) {
+                if (minValue != 0 || maxValue != 0) {
+                    assert o instanceof Integer;
+                    AssertionUtils.isSucceed(minValue <= (Integer) o && (Integer) o <= maxValue, String.format("%s 应该在 %d 和 %d 范围内 ", ptlFactorDto.getName(), minValue, maxValue));
+                }
+            }
+
+        }
+
+    }
+}

+ 3 - 1
src/main/java/com/ydtech/modules/protocol/service/impl/PtlProductServiceImpl.java

@@ -21,7 +21,9 @@ public class PtlProductServiceImpl extends ServiceImpl<PtlProductMapper, PtlProd
         // 查询id 和 用户名
         wrapper.select(PtlProduct::getId, PtlProduct::getName)
                 .eq(PtlProduct::getIsvalid, 0)
-                .eq(PtlProduct::getDelFlag, 0);
+                .eq(PtlProduct::getDelFlag, 0)
+                .eq(PtlProduct::getParentId, "ZG01");
+
         List<PtlProduct> esProducts = baseMapper.selectList(wrapper);
         // 转换vo
         List<PtlProductVo> productVos = PtlProductVo.toPtlProductVoList(esProducts);

+ 0 - 1
src/main/java/com/ydtech/modules/protocol/utils/AssertionUtils.java

@@ -22,7 +22,6 @@ public class AssertionUtils {
         }
     }
 
-
     public static void isSucceed(int b, String message) {
         assertion(b <= 0, message);
     }

+ 30 - 45
src/main/java/com/ydtech/utils/baidu/AuthService.java

@@ -1,17 +1,14 @@
 package com.ydtech.utils.baidu;
 
-/**
- * @ClassName AuthService
- * @Description: TODO
- * @Author
- * @Date 2021/6/25
- **/
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.HttpClient;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.util.EntityUtils;
 
@@ -20,16 +17,24 @@ import java.io.InputStreamReader;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
+
 /**
- * 获取token类
- */
+ * @ClassName AuthService
+ * @Description: 获取token类
+ * @Author
+ * @Date 2021/6/25
+ **/
+@Slf4j
 public class AuthService {
 
+
+    private AuthService() {
+        throw new IllegalStateException("Utility class");
+    }
+
     /**
      * 获取权限token
      *
@@ -79,44 +84,29 @@ public class AuthService {
             Map<String, List<String>> map = connection.getHeaderFields();
             // 遍历所有的响应头字段
             for (String key : map.keySet()) {
-                System.err.println(key + "--->" + map.get(key));
+                log.info(key + "--->" + map.get(key));
+
             }
             // 定义 BufferedReader输入流来读取URL的响应
             BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
-            String result = "";
+            StringBuilder result = new StringBuilder();
             String line;
             while ((line = in.readLine()) != null) {
-                result += line;
+                result.append(line);
             }
             /**
              * 返回结果示例
              */
-            System.err.println("result:" + result);
-            JSONObject jsonObject = JSONObject.parseObject(result);
-            String access_token = jsonObject.getString("access_token");
-            return access_token;
+            log.info("result:" + result);
+            JSONObject jsonObject = JSON.parseObject(result.toString());
+            return jsonObject.getString("access_token");
         } catch (Exception e) {
-            System.err.printf("获取token失败!");
+            log.info("获取token失败!");
             e.printStackTrace(System.err);
         }
         return null;
     }
 
-    public static JSONObject getImg(String access_token, String img) {
-
-        Map<String, String> headerMap = new HashMap<String, String>();
-        headerMap.put("Content-Type", "application/x-www-form-urlencoded");
-//{userCode: "14850704", pwd: "chic@123", source: "H5工号登录", sourceCode: "H5"}
-        Map<String, Object> contentMap = new HashMap<String, Object>();
-
-        contentMap.put("image", "");
-
-        String url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/multi_object_detect?access_token" + access_token;
-        JSONObject content = new JSONObject(contentMap);
-        JSONObject result = doPost(url, headerMap, content);
-        return result;
-    }
-
 
     /**
      * 接口调用 返回json
@@ -126,12 +116,10 @@ public class AuthService {
      * @param content
      * @return
      */
-    private static JSONObject doPost(String url, Map headerMap, JSONObject content) {
-        HttpClient client = HttpClients.createDefault();
-        // 要调用的接口方法
-        HttpPost post = new HttpPost(url);
-        JSONObject jsonObject = null;
-        try {
+    private static JSONObject doPost(String url, Map<String, String> headerMap, JSONObject content) {
+        try (CloseableHttpClient client = HttpClients.createDefault();){
+            // 要调用的接口方法
+            HttpPost post = new HttpPost(url);
             // 解决报文中文乱码问题
             StringEntity s = new StringEntity(content.toString(), StandardCharsets.UTF_8);
             s.setContentEncoding("UTF-8");
@@ -139,9 +127,8 @@ public class AuthService {
             post.setEntity(s);
 
             if (headerMap != null && headerMap.size() > 0) {
-                Iterator headerIterator = headerMap.entrySet().iterator();          //循环增加header
-                while (headerIterator.hasNext()) {
-                    Map.Entry<String, String> elem = (Map.Entry<String, String>) headerIterator.next();
+                //循环增加header
+                for (Map.Entry<String, String> elem : headerMap.entrySet()) {
                     post.addHeader(elem.getKey(), elem.getValue());
                 }
             }
@@ -150,13 +137,11 @@ public class AuthService {
             //解决返回中文乱码问题
             String resultObj = EntityUtils.toString(res.getEntity(), StandardCharsets.UTF_8);
 
-
-            jsonObject = JSONObject.parseObject(resultObj);
+            return JSON.parseObject(resultObj);
 
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
-        return jsonObject;
     }
 
 }