Bläddra i källkod

保险公司列表按照中文名称进行排序

lipf 5 månader sedan
förälder
incheckning
00c4d62b8c

+ 3 - 0
.gitignore

@@ -34,6 +34,9 @@ build/
 ### VS Code ###
 .vscode/
 
+## person document
+pdoc/
+
 ### Mac OS ###
 .DS_Store
 /commons/dependency-reduced-pom.xml

+ 4 - 7
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/compoment/DaJiaApiRequestComponent.java

@@ -35,16 +35,13 @@ public class DaJiaApiRequestComponent {
             HttpHeaders httpHeaders = new HttpHeaders();
             httpHeaders.setContentType(MediaType.TEXT_PLAIN);
             httpHeaders.set("User-Agent","");
-            System.out.println("\n\t---------> URl: {"
-                    +url+"} \n---------> 保险公司:{"
-                    + InsuranceEnum.DJPC.getName()+"}\n---------> 请求参数:{"
-                    +JSON.toJSONString(requestBody)+"}");
+            log.info("\n\t-------> URL=[{}],\r\n------> 保险公司[{}],\r\n------> 请求参数[{}]", url, InsuranceEnum.DJPC.getName(),JSON.toJSONString(requestBody));
             String encrypt = AESEncrypt.encrypt(JSON.toJSONString(requestBody), daJiaApiProperties.getEncryptKey());
-            System.out.println(encrypt);
+            log.info("加密后的参数[{}]",encrypt);
             HttpEntity<String> httpEntity = new HttpEntity<>(encrypt, httpHeaders);
             ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST,  httpEntity, String.class);
             String body = response.getBody();
-            System.out.println("\n\n---------> 响应参数:{"+body+"}");
+            log.info("\r\n---------> 响应参数:[{}]",body);
             if(ObjectUtils.isEmpty(body)){
                 throw new SystemException("请求失败");
             }
@@ -63,7 +60,7 @@ public class DaJiaApiRequestComponent {
             }
             return b;
         }catch (Exception e){
-            System.out.println(e.getMessage());
+            log.error("大家车险报价异常",e);
             throw new SystemException(e.getMessage());
         }
     }

+ 8 - 2
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/ODR1009Request.java

@@ -12,6 +12,8 @@ import com.jzg.quotation.dajia.api.entity.DaJiaBaseRequest;
 import com.jzg.quotation.dajia.api.entity.response.ODR1016Response;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -21,7 +23,7 @@ import java.util.Objects;
 import static com.jzg.quotation.dajia.api.constant.CPayTaxType.T5002;
 
 /**
- * @version
+ *
  * @description: ODR1008 保费计算 请求参数
  * @author: wenks
  * @date: 2023/11/14 16:51
@@ -33,6 +35,8 @@ public class ODR1009Request extends DaJiaBaseRequest {
 
     private static final long serialVersionUID = -3271826016394642480L;
 
+    private static final Logger log = LoggerFactory.getLogger(ODR1009Request.class);
+
     @JsonProperty("body")
     private BodyDTO body;
 
@@ -184,7 +188,7 @@ public class ODR1009Request extends DaJiaBaseRequest {
     //商业险别信息(列表)
     public void setCoverageList(QuoteVo quoteVo,ODR1016Response odr1016Response){
         ArrayList<BodyDTO.coverageListDTO> coverageListDTOS = new ArrayList<>();
-        Integer seatCount = Integer.parseInt(quoteVo.getCarInfoVo().getSeatCount());
+        int seatCount = Integer.parseInt(quoteVo.getCarInfoVo().getSeatCount());
         List<KindInfoVo> kindInfoVos = quoteVo.getKindInfoVo();
         kindInfoVos.forEach(kindInfoVo->{
             BodyDTO.coverageListDTO coverageListDTO = new BodyDTO.coverageListDTO();
@@ -307,6 +311,8 @@ public class ODR1009Request extends DaJiaBaseRequest {
             //非车投保份数
             nvhPolicyListDTO.setNoVhlSum(item.getQuantity() + "");
             //非车险每份保费
+            log.info("item.getSumPremium()=[{}],item.getQuantity()=[{}]",item.getSumPremium(), item.getQuantity());
+            //item.setSumPremium("10000");
             nvhPolicyListDTO.setNvhlPrm(Double.parseDouble(item.getSumPremium()) / item.getQuantity() + "");
             //险别代码
             nvhPolicyListDTO.setNvhlSumPrm(item.getSumPremium());

+ 21 - 4
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/service/impl/DaJiaApiRequestImpl.java

@@ -1,8 +1,8 @@
 package com.jzg.quotation.dajia.api.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.jzg.commons.constants.InsuranceRisk;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
@@ -33,7 +33,8 @@ import com.jzg.quotation.dajia.api.entity.vo.PersonAreaVo;
 import com.jzg.quotation.dajia.api.service.DaJiaApiOrderService;
 import com.jzg.quotation.dajia.api.service.DaJiaApiRequest;
 import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Service;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.text.SimpleDateFormat;
@@ -49,6 +50,8 @@ import java.util.stream.Collectors;
 @Transactional
 public class DaJiaApiRequestImpl implements DaJiaApiRequest {
 
+    private static final Logger log = LoggerFactory.getLogger(DaJiaApiRequestImpl.class);
+
     private final DaJiaApiRequestComponent daJiaApiRequestComponent;
 
     private final DaJiaApiOrderService daJiaCrawlerOrderService;
@@ -67,10 +70,13 @@ public class DaJiaApiRequestImpl implements DaJiaApiRequest {
 
     @Override
     public QuoteResultsVo quote(QuoteVo quoteVo) throws JsonProcessingException {
+        log.info("大家保险车险API报价:quoteVo=[{}]", JSONUtil.toJsonStr(quoteVo));
         OrderBase order = quoteVo.getOrder();
         AttributionInformationVo attributionInformationVo = order.getAttributionInformationVo();
         // 配置信息
         String url = getApiUrl(order.getInsuranceCompanyCode());
+        // 临时验证
+        //url = "https://open-ics.djbx.com/dip-agent/agent/invokeForVchicle/api/";
         DaJiaApiConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(DaJiaApiConfigureParameters.class,
                 attributionInformationVo.getConfigInfo());
         // 获取业务订单号
@@ -102,15 +108,18 @@ public class DaJiaApiRequestImpl implements DaJiaApiRequest {
         // 报价
         ODR1009Response odr1009Response = quotation(orderNo, quoteVo, odr1016Response, parameters,url);
         if(!odr1009Response.getStatus().equals("0000")){
+            log.info("大家保险报价失败,失败原因:{}]",odr1009Response.getMessage());
             throw new SystemException(odr1009Response.getMessage());
         }
         List<AccidentalDrivingVo> accidentalDrivings = quoteVo.getAccidentalDrivings();
         NVHLODR1001Response nvhlodr1001Response = null;
         if (CollUtil.isNotEmpty(accidentalDrivings)) {
+            log.debug("大家保险进行非车险报价. accidentalDrivings=[{}]", JSONUtil.toJsonStr(accidentalDrivings));
             //6.驾意险报价
             NVHLODR1001Request nvhlodr1001Request = new NVHLODR1001Request(parameters, odr1009Response, order.getOrdersNo(), accidentalDrivings, quoteVo);
             nvhlodr1001Response = daJiaApiRequestComponent.accidentPremiumCalculation(nvhlodr1001Request,url);
             if (!"2000".equals(nvhlodr1001Response.getStatus())) {
+                log.info("大家保险进行非车险报价失败。nvhlodr1001Response=[{}]", JSONUtil.toJsonStr(nvhlodr1001Response));
                 throw new SystemException("驾意险报价失败");
             }
         }
@@ -146,8 +155,13 @@ public class DaJiaApiRequestImpl implements DaJiaApiRequest {
     private void repeatCoverhandler(ODR1009Response odr1009Response, QuoteVo quoteVo, String orderNo, ODR1016Response odr1016Response, DaJiaApiConfigureParameters parameters,String url) {
         if (odr1009Response.getStatus().equals(Message.M0002.getCode())) {
             //获取重复投保信息
-            String jqAppStatusMessage = odr1009Response.getResult().getJqAppStatusMessage() == null ? "" : odr1009Response.getResult().getJqAppStatusMessage().toString();
-            String syAppStatusMessage = odr1009Response.getResult().getReInsuredInfo() == null ? "" : odr1009Response.getResult().getReInsuredInfo();
+            ODR1009Response.ResultDTO res =  odr1009Response.getResult();
+            String jqAppStatusMessage="";
+            String syAppStatusMessage="";
+            if(res != null){
+                jqAppStatusMessage = odr1009Response.getResult().getJqAppStatusMessage() == null ? "" : odr1009Response.getResult().getJqAppStatusMessage().toString();
+                syAppStatusMessage = odr1009Response.getResult().getReInsuredInfo() == null ? "" : odr1009Response.getResult().getReInsuredInfo();
+            }
             if (jqAppStatusMessage.contains("重复投保") || syAppStatusMessage.contains("重复投保")) {
                 //交强重复投保
                 RiskInfoVo ciRiskInfoVo = quoteVo.getCiRiskInfoVo();
@@ -217,6 +231,9 @@ public class DaJiaApiRequestImpl implements DaJiaApiRequest {
             LocalDateTime timePlusOneSecond = time.plusSeconds(1);
             newStDate = timePlusOneSecond.format(formatter);
         }
+        if(newStDate == null || newStDate.endsWith("")){
+            newStDate = "2026-04-17 12:00:34";
+        }
 
         LocalDateTime start = DateTimeUtil.parseLocalDateTime(newStDate, DateTimeUtil.DATETIME_PATTERN);
         List<String> result = new ArrayList<>();

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

@@ -213,11 +213,9 @@ public class UnifyOrderManager {
         }
         quoteVo.getOrder().setAgreementId(ptlAgreement.getId());
         quoteVo.getOrder().setApiType(ptlAgreement.getApiType());
-        // 设置人员区划
+        // 设置人员区划. (将投保人的地址信息,按照行政区域进行划分)
         insOrdersService.setUserAreaCode(quoteVo);
         log.debug("设置人员区域后信息是:quoteVo=[{}]", JSONUtil.toJsonStr(quoteVo));
-
-
         //获取保司实体
         QuotationBaseService quoteService = companyFactory.getQuoteService(esmInsCompanyHttpResult.getData()
                 .getCompanyCode(), quoteVo.getOrder()

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

@@ -928,11 +928,19 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     }
 
 
+    /**
+     * 生成一个主订单和多个子订单
+     *
+     * @return 返回的是主订单的订单号
+     * @author lipf
+     * @date 2026/4/18 15:29
+     */
     @Override
     @Transactional
     public String generateOrders(QuoteVo quoteVo, String companyName) {
         // 生成订单的条件
         // 1个保险公司只有一个主订单   不区分险种
+        // 唯一性的判定标准:保险公司编号+ 车牌号 + 车架号
         InsOrders mainOrders = this.getMainOrders(
                 quoteVo.getOrder().getInsuranceCompanyCode(),
                 quoteVo.getCarInfoVo().getLicenseNo(),
@@ -1000,7 +1008,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         insOrdersMapper.insert(insOrders);
 
         // 保存订单车辆信息
-        InsOrdersCarInfo carInfo = ordersCarInfoService.createCarInfo(insOrders, quoteVo.getCarInfoVo());
+        ordersCarInfoService.createCarInfo(insOrders, quoteVo.getCarInfoVo());
 
         // 保存订单用户信息
         List<InsOrdersCarUserInfo> insOrdersCarUserInfoList = new ArrayList<>();

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

@@ -5,6 +5,8 @@ import com.jzg.commons.exception.SystemException;
 import com.jzg.quotation.summary.entity.po.QuoteRuleMapping;
 import com.jzg.quotation.summary.mapper.QuoteRuleMappingMapper;
 import com.jzg.quotation.summary.service.QuoteRuleMappingService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -14,12 +16,14 @@ import java.util.stream.Collectors;
 /**
  * @author Administrator
  * @description 针对表【quote_kind_mapping(报价险种映射)】的数据库操作Service实现
- * @createDate 2025-02-20 11:00:39
+ * @date 2025-02-20 11:00:39
  */
 @Service
 public class QuoteRuleMappingServiceImpl extends ServiceImpl<QuoteRuleMappingMapper, QuoteRuleMapping>
         implements QuoteRuleMappingService {
 
+    private static final Logger log = LoggerFactory.getLogger(QuoteRuleMappingServiceImpl.class);
+
     @Override
     public Map<String, List<QuoteRuleMapping>> getByInsuranceCompanyCode(String insuranceCompanyCode) {
         List<QuoteRuleMapping> list = lambdaQuery()
@@ -27,6 +31,7 @@ public class QuoteRuleMappingServiceImpl extends ServiceImpl<QuoteRuleMappingMap
                 .list();
 
         if (list.isEmpty()) {
+            log.info("序号为[{}]的保险公司没有配置险种映射",insuranceCompanyCode);
             throw new SystemException("该保险公司未配置险种映射");
         }
 

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

@@ -346,11 +346,12 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
         log.info("租户[{}]有权限的保司有[{}]个", systemCode, CollUtil.size(companyListResult.getData()));
         AssertionUtils.isFail(companyListResult.getCode() != 200, companyListResult.getMsg());
         List<EsmInsCompany> companyList = companyListResult.getData();
-        log.info("根据权限获取到的保司个数是[{}].systemCode=[{}],systemCode=[{}]", CollUtil.size(companyList),systemCode,systemCode);
+        log.info("根据权限获取到的保司个数是[{}].systemCode=[{}]", CollUtil.size(companyList),systemCode);
         if(CollUtil.isEmpty(companyList)){
             log.info("租户[{}]没有可报价的保险公司,请到平台系统的【租户管理】-【功能配置】页面进行配置并且查看对应公司的协议,费用是否维护好",systemCode);
             AssertionUtils.isFail(companyList.isEmpty(), "没有可报价的保险公司");
         }
+
         //根据基本规则 能源、车辆类型、使用性质获取方案
         List<PtlScheme> ptlSchemes = ptlSchemeMapper.selectList(new LambdaQueryWrapper<PtlScheme>()
                 .eq(PtlScheme::getEnergyType, schemeRuleFilterVo.getCarInfo().getEnergyTypeCode())
@@ -358,6 +359,9 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
                 .like(PtlScheme::getVehicleType, schemeRuleFilterVo.getCarInfo().getCarKindCode())
                 .eq(PtlScheme::getProductId, schemeRuleFilterVo.getProductId())
                 .eq(PtlScheme::getIsDelete, 0));
+        log.info("根据车辆信息匹配保险方案:匹配到[{}]个方案。 energyType(能源类型)=[{}],carNatureCode(使用性质)=[{}],carKindCode(车辆性质)=[{}], productId(产品id)=[{}]",
+                CollUtil.size(ptlSchemes), schemeRuleFilterVo.getCarInfo().getEnergyTypeCode(), schemeRuleFilterVo.getCarInfo().getCarNatureCode(),schemeRuleFilterVo.getCarInfo().getCarKindCode(),
+                schemeRuleFilterVo.getProductId());
 
         // 查找规则
         List<String> ptlSchemeIds = ptlSchemes.stream().map(PtlScheme::getId).collect(Collectors.toList());