Explorar o código

ins_area_company 拆表 报价 核保 承保规则 调整

785834757 %!s(int64=2) %!d(string=hai) anos
pai
achega
74751527c4
Modificáronse 29 ficheiros con 921 adicións e 310 borrados
  1. 10 7
      src/main/java/com/ydtech/modules/fee/dto/vo/RuleAttrMappingVo.java
  2. 20 0
      src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java
  3. 10 9
      src/main/java/com/ydtech/modules/ins/model/yc/audit/Audit.java
  4. 42 0
      src/main/java/com/ydtech/modules/order/aop/aspect/AuditVerificationAspect.java
  5. 16 0
      src/main/java/com/ydtech/modules/order/entity/InsOrders.java
  6. 3 0
      src/main/java/com/ydtech/modules/order/entity/po/InsOrdersKind.java
  7. 2 0
      src/main/java/com/ydtech/modules/order/entity/po/InsOrdersTax.java
  8. 2 0
      src/main/java/com/ydtech/modules/order/service/InsAreaCompanyService.java
  9. 3 1
      src/main/java/com/ydtech/modules/order/service/InsOrdersKindService.java
  10. 8 1
      src/main/java/com/ydtech/modules/order/service/InsOrdersRiskService.java
  11. 3 0
      src/main/java/com/ydtech/modules/order/service/InsOrdersService.java
  12. 16 1
      src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java
  13. 8 2
      src/main/java/com/ydtech/modules/order/service/impl/DaJiaOrderServiceImpl.java
  14. 14 0
      src/main/java/com/ydtech/modules/order/service/impl/GuorenOrderApiServiceImpl.java
  15. 11 0
      src/main/java/com/ydtech/modules/order/service/impl/HuaTaiOrderApiServiceImpl.java
  16. 82 4
      src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java
  17. 13 0
      src/main/java/com/ydtech/modules/order/service/impl/InsCrawlerOrderServiceImpl.java
  18. 1 0
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersBusinessServiceImpl.java
  19. 7 0
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersKindServiceImpl.java
  20. 7 0
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersRiskServiceImpl.java
  21. 278 33
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
  22. 19 3
      src/main/java/com/ydtech/modules/order/service/impl/YongAnOrderServiceImpl.java
  23. 21 6
      src/main/java/com/ydtech/modules/order/service/impl/YongchengOrderApiServiceImpl.java
  24. 19 5
      src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderApiServiceImpl.java
  25. 13 0
      src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderServiceImpl.java
  26. 16 2
      src/main/java/com/ydtech/modules/order/service/impl/ZijinOrderApiServiceImpl.java
  27. 215 156
      src/main/java/com/ydtech/modules/xxl/handler/SyncCarInfoHandler.java
  28. 58 73
      src/main/java/com/ydtech/modules/xxl/handler/SyncInsAreaCompany.java
  29. 4 7
      src/main/resources/mapper/modules/order/InsOrdersMapper.xml

+ 10 - 7
src/main/java/com/ydtech/modules/fee/dto/vo/RuleAttrMappingVo.java

@@ -3,9 +3,12 @@ package com.ydtech.modules.fee.dto.vo;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.ydtech.constants.enums.InsurKind;
+import com.ydtech.modules.admin.model.po.SysCarInfo;
+import com.ydtech.modules.admin.model.po.SysCarUserInfo;
 import com.ydtech.modules.ins.model.vo.*;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.po.InsOrdersKind;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 import com.ydtech.modules.order.service.InsOrdersService;
 import io.swagger.annotations.ApiModelProperty;
@@ -37,7 +40,7 @@ public class RuleAttrMappingVo {
 
     public static List<RuleAttrMappingVo> getRuleAttrMappingVoList(InsAreaCompany insAreaCompany, InsOrders insOrders) {
         List<RuleAttrMappingVo> ruleAttrMappingVoList = new ArrayList<>();
-        CarInfoVo carInfo = insOrders.getCarinfo().toJavaObject(CarInfoVo.class);
+        SysCarInfo carInfo = insOrders.getCarinfo();
         //车牌号
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("LicenseNo", carInfo.getLicenseNo()));
         //品牌型号
@@ -53,7 +56,7 @@ public class RuleAttrMappingVo {
         //核定载质量
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("AuthorizedLoadWeight", carInfo.getLimitLoad()));
         //整备质量
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CurbWeight", carInfo.getVehicleweight()));
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CurbWeight", carInfo.getVehicleWeight()));
         //能源类型
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("NewEnergy", carInfo.getEnergyType()));
         //注册日期
@@ -61,7 +64,7 @@ public class RuleAttrMappingVo {
         //是否过户
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("TransferVehicle", carInfo.isTransferFlag() ? "1" : "0"));
         //是否新车
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NewAndOldCars", carInfo.isNoLicenseFlag() ? "1" : "0"));
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NewAndOldCars", carInfo.getNoLicenseFlag()));
         //发证日期
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("DateofIssuance", carInfo.getIssueDate()));
         //车长
@@ -70,7 +73,7 @@ public class RuleAttrMappingVo {
 //       ruleAttrMappingVoList.add(new RuleAttrMappingVo("RenewalofInsurance", carInfo.isTransferFlagBi() ? "1"));
 
 
-        CustomerInfoVo ownerInfo = insOrders.getOwnerinfo().toJavaObject(CustomerInfoVo.class);
+        SysCarUserInfo ownerInfo = insOrders.getOwnerinfo();
         //车主 证件号码(前6位)
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersIDNumber", ownerInfo.getIdentifyNumber().substring(0, 6)));
         //车主 年龄
@@ -80,7 +83,7 @@ public class RuleAttrMappingVo {
         //车主 姓名
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnerName", ownerInfo.getName()));
 
-        CustomerInfoVo policyHolderInfo = insOrders.getApplyinfo().toJavaObject(CustomerInfoVo.class);
+        SysCarUserInfo policyHolderInfo = insOrders.getApplyinfo();
         //投保人 证件号码(前6位)
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantIDNumber", policyHolderInfo.getIdentifyNumber().substring(0, 6)));
         //投保人 年龄
@@ -88,7 +91,7 @@ public class RuleAttrMappingVo {
         //投保人 性别
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantSex", policyHolderInfo.getGender()));
 
-        CustomerInfoVo insuredPersonInfo = insOrders.getInsureinfo().toJavaObject(CustomerInfoVo.class);
+        SysCarUserInfo insuredPersonInfo = insOrders.getInsureinfo();
         //被保人 证件号码(前6位)
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredIDNumber", insuredPersonInfo.getIdentifyNumber().substring(0, 6)));
         //被保人 年龄
@@ -96,7 +99,7 @@ public class RuleAttrMappingVo {
         //被保人 性别
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredSex", insuredPersonInfo.getGender()));
 
-        List<KindInfoVo> kindInfoVos = insOrders.getKing().toJavaList(KindInfoVo.class);
+        List<InsOrdersKind> kindInfoVos = insOrders.getKind();
         //险别信息
         kindInfoVos.forEach(kindInfoVo -> {
             //机动车损失险

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

@@ -5,7 +5,11 @@ import com.ydtech.constants.enums.dict.insurance.EnergyType;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.model.po.SysCarInfo;
+import com.ydtech.modules.admin.model.po.SysCarUserInfo;
 import com.ydtech.modules.admin.model.po.SysUserAccount;
+import com.ydtech.modules.admin.service.SysCarInfoService;
+import com.ydtech.modules.admin.service.SysCarUserInfoService;
 import com.ydtech.modules.admin.service.SysDeptService;
 import com.ydtech.modules.admin.service.SysUserAccountService;
 import com.ydtech.modules.admin.service.SysUserService;
@@ -17,7 +21,10 @@ import com.ydtech.modules.fee.dto.vo.RuleAttrMappingVo;
 import com.ydtech.modules.fee.service.FeeRuleSchemeNewService;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.po.InsOrdersRisk;
 import com.ydtech.modules.order.entity.vo.*;
+import com.ydtech.modules.order.service.InsOrdersKindService;
+import com.ydtech.modules.order.service.InsOrdersRiskService;
 import com.ydtech.modules.order.service.InsOrdersService;
 import com.ydtech.modules.protocol.service.*;
 import com.ydtech.modules.protocols.entity.po.*;
@@ -73,6 +80,18 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
     @Autowired
     private SysUserAccountService  sysUserAccountService;
 
+    @Resource
+    private SysCarInfoService sysCarInfoService;
+
+    @Resource
+    private SysCarUserInfoService sysCarUserInfoService;
+
+    @Resource
+    private InsOrdersRiskService insOrdersRiskService;
+
+    @Resource
+    private InsOrdersKindService insOrdersKindService;
+
 
     @Override
     public QueryOrderFeeVo queryFeeOrderInfo(String companyId) {
@@ -423,6 +442,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
             }
         }
         insFeeOrderNewService.saveOrUpdate(insFeeOrderNew);
+
     }
 
 

+ 10 - 9
src/main/java/com/ydtech/modules/ins/model/yc/audit/Audit.java

@@ -9,6 +9,8 @@ import com.ydtech.modules.ins.model.yc.YcBuildData;
 import com.ydtech.modules.ins.model.vo.CustomerInfoVo;
 import com.ydtech.modules.ins.model.yc.YcConfigureParameters;
 import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.bo.InsOrdersBo;
 import com.ydtech.utils.IDCardUtils;
 import lombok.Data;
 
@@ -219,15 +221,14 @@ public class Audit {
      * @author: lig
      * @date: 2023-02-15
      */
-    public static Audit buildAuditParam(SysCarUserInfo ownerInfo, SysCarUserInfo insureInfo, SysCarUserInfo applyInfo, YcConfigureParameters ycConfigureParameters, InsAreaCompany iac) {
-//    public static Audit buildAuditParam(InsOrders order, AuthorityDataXml authorityDataXml,InsAreaCompany iac) {
-
-//        //车主
-//        CustomerInfoVo ownerInfo = JSONObject.parseObject(order.getOwnerinfo().toJSONString(), CustomerInfoVo.class);
-//        //被保人
-//        CustomerInfoVo insureInfo = JSONObject.parseObject(order.getInsureinfo().toJSONString(), CustomerInfoVo.class);
-//        //投保人
-//        CustomerInfoVo applyInfo = JSONObject.parseObject(order.getApplyinfo().toJSONString(), CustomerInfoVo.class);
+    public static Audit buildAuditParam(InsOrdersBo order, YcConfigureParameters ycConfigureParameters, InsAreaCompany iac) {
+
+        //车主
+        CustomerInfoVo ownerInfo = order.getOwnerinfo();
+        //被保人
+        CustomerInfoVo insureInfo = order.getInsureinfo();
+        //投保人
+        CustomerInfoVo applyInfo = order.getApplyinfo();
 
         Audit m = new Audit();
 

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

@@ -1,9 +1,14 @@
 package com.ydtech.modules.order.aop.aspect;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ydtech.constants.sys.SystemConstant;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.model.SysUserRole;
+import com.ydtech.modules.admin.model.po.SysCarInfo;
+import com.ydtech.modules.admin.model.po.SysCarUserInfo;
+import com.ydtech.modules.admin.service.SysCarInfoService;
+import com.ydtech.modules.admin.service.SysCarUserInfoService;
 import com.ydtech.modules.admin.service.SysUserRoleService;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.fee.service.FeeRuleSchemeNewService;
@@ -13,6 +18,8 @@ import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
+import com.ydtech.modules.order.service.InsOrdersKindService;
+import com.ydtech.modules.order.service.InsOrdersRiskService;
 import com.ydtech.modules.order.service.InsOrdersService;
 import com.ydtech.modules.protocol.service.PtlAgreementDeptService;
 import com.ydtech.modules.protocol.service.impl.TaxSourceServiceImpl;
@@ -24,7 +31,9 @@ import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Before;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.List;
 
 @Slf4j
 @Aspect
@@ -46,6 +55,14 @@ public class AuditVerificationAspect {
 
     private final InsOrdersService insOrdersService;
 
+    private final SysCarInfoService sysCarInfoService;
+
+    private final SysCarUserInfoService sysCarUserInfoService;
+
+    private final InsOrdersRiskService insOrdersRiskService;
+
+    private final InsOrdersKindService insOrdersKindService;
+
     @Before("@annotation(com.ydtech.modules.order.aop.AuditVerification)")
     public void doBefore(JoinPoint point) {
         Object[] args = point.getArgs();
@@ -54,6 +71,31 @@ public class AuditVerificationAspect {
             String companyId = arg.toString();
             InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(companyId);
             InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
+
+            //获取车辆信息
+            insOrders.setCarinfo(sysCarInfoService.getById(insAreaCompany.getCarInfoId()));
+            //获取人员信息
+            List<String> userIds = new ArrayList<>();
+            userIds.add(insAreaCompany.getOwnerId());
+            userIds.add(insAreaCompany.getInsureId());
+            userIds.add(insAreaCompany.getApplyId());
+            List<SysCarUserInfo> userList = sysCarUserInfoService.list(new LambdaQueryWrapper<SysCarUserInfo>().in(SysCarUserInfo::getId, userIds));
+            userList.forEach(user -> {
+                if(user.getId().equals(insAreaCompany.getOwnerId())){
+                    insOrders.setOwnerinfo(user);
+                }
+                if(user.getId().equals(insAreaCompany.getInsureId())){
+                    insOrders.setInsureinfo(user);
+                }
+                if(user.getId().equals(insAreaCompany.getApplyId())){
+                    insOrders.setApplyinfo(user);
+                }
+            });
+            //设置risk
+            insOrders.setRisk(insOrdersRiskService.queryByOrderNo(insOrders.getOrderno()));
+            //设置kind
+            insOrders.setKind(insOrdersKindService.queryByOrderNo(insOrders.getOrderno()));
+
             //先进行承保规则判断
             feeRuleSchemeNewService.verificationRuleFactor(insAreaCompany,insOrders);
             //再进行费用因子判断

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

@@ -11,10 +11,12 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ydtech.modules.admin.model.po.SysCarInfo;
 import com.ydtech.modules.admin.model.po.SysCarUserInfo;
 import com.ydtech.modules.ins.model.vo.CarInfoVo;
+import com.ydtech.modules.ins.model.vo.CustomerInfoVo;
 import com.ydtech.modules.order.entity.bo.InsOrdersBo;
 import com.ydtech.modules.order.entity.po.InsOrdersKind;
 import com.ydtech.modules.order.entity.po.InsOrdersRisk;
 import lombok.*;
+import org.springframework.beans.BeanUtils;
 
 import java.io.Serializable;
 import java.time.LocalDateTime;
@@ -256,4 +258,18 @@ public class InsOrders implements Serializable {
     }
 
 
+    public void setCarUserInfo(InsOrders insOrders, List<SysCarUserInfo> carUserInfoList) {
+        carUserInfoList.forEach(carUserInfo -> {
+            if (carUserInfo.getId().equals(insOrders.getApplyId())) {
+                this.setApplyinfo(carUserInfo);
+            }
+            if(carUserInfo.getId().equals(insOrders.getOwnerId())){
+                this.setOwnerinfo(carUserInfo);
+            }
+            if(carUserInfo.getId().equals(insOrders.getInsureId())){
+                this.setInsureinfo(carUserInfo);
+            }
+        });
+    }
+
 }

+ 3 - 0
src/main/java/com/ydtech/modules/order/entity/po/InsOrdersKind.java

@@ -55,6 +55,9 @@ public class InsOrdersKind implements Serializable {
     @TableField(value = "kind_name")
     private String kindName;
 
+    @TableField(value = "service_times")
+    private String serviceTimes;
+
     /**
      * 附加绝对免赔率
      */

+ 2 - 0
src/main/java/com/ydtech/modules/order/entity/po/InsOrdersTax.java

@@ -97,6 +97,8 @@ public class InsOrdersTax implements Serializable {
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 
+    public InsOrdersTax(){}
+
 
     public InsOrdersTax(String orderNo, VehicleAndVesselTax vehicleAndVesselTax) {
         this.orderNo = orderNo;

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

@@ -1,6 +1,8 @@
 package com.ydtech.modules.order.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.admin.model.po.SysCarInfo;
+import com.ydtech.modules.admin.model.po.SysCarUserInfo;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.dto.InsAreaCompanyQueryDto;
 

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

@@ -3,11 +3,13 @@ package com.ydtech.modules.order.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ydtech.modules.order.entity.po.InsOrdersKind;
 
+import java.util.List;
+
 /**
 * @author Administrator
 * @description 针对表【ins_orders_kind(大订单(商业险险种信息))】的数据库操作Service
 * @createDate 2024-03-05 15:06:04
 */
 public interface InsOrdersKindService extends IService<InsOrdersKind> {
-
+    List<InsOrdersKind> queryByOrderNo(String orderNo);
 }

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

@@ -3,11 +3,18 @@ package com.ydtech.modules.order.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ydtech.modules.order.entity.po.InsOrdersRisk;
 
+import java.util.List;
+
 /**
 * @author Administrator
 * @description 针对表【ins_orders_risk(大订单(交强商业信息表))】的数据库操作Service
 * @createDate 2024-03-05 15:06:04
 */
 public interface InsOrdersRiskService extends IService<InsOrdersRisk> {
-
+    /**
+     * 根据订单号查询订单风控信息
+     * @param orderNo 订单号
+     * @return 订单风控信息
+     */
+    List<InsOrdersRisk> queryByOrderNo(String orderNo);
 }

+ 3 - 0
src/main/java/com/ydtech/modules/order/service/InsOrdersService.java

@@ -140,4 +140,7 @@ public interface InsOrdersService extends IService<InsOrders> {
      * @return 订单业务实体
      */
     InsOrdersBo queryInsOrders(String orderNo);
+
+
+//    InsOrdersBo queryInsOrdersBo(String orderNo);
 }

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

@@ -1,11 +1,16 @@
 package com.ydtech.modules.order.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.po.SysCarInfo;
+import com.ydtech.modules.admin.model.po.SysCarUserInfo;
 import com.ydtech.modules.admin.model.vo.PersonAreaVo;
 import com.ydtech.modules.admin.service.SysAreaService;
+import com.ydtech.modules.admin.service.SysCarInfoService;
+import com.ydtech.modules.admin.service.SysCarUserInfoService;
 import com.ydtech.modules.ins.model.vo.*;
 import com.ydtech.modules.order.components.ConfigureParametersComponents;
 import com.ydtech.modules.order.components.FileComponents;
@@ -33,7 +38,9 @@ import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
 import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
 import com.ydtech.utils.CalculateUtils;
 import com.ydtech.utils.StringUtils;
+import com.ydtech.utils.idgen.IdGenerate;
 import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
@@ -63,6 +70,12 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
 
     private final FileComponents fileComponents;
 
+    @Autowired
+    private SysCarInfoService sysCarInfoService;
+
+    @Autowired
+    private SysCarUserInfoService sysCarUserInfoService;
+
     @Override
     public HttpResult<List<NonAutomotiveProductsResponse.DataDTO.ProductsDTO>> productQuery(ProductQueryVo productQueryVo) throws Exception {
         // 账号信息
@@ -217,7 +230,8 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
     public HttpResult<CrawlerPolicyPrintVo> getPolicyPrint(String subOrderNo) throws Exception {
         InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(subOrderNo);
         InsOrders insOrders = insOrdersService.existOrder(insAreaCompany.getOrderno());
-        CustomerInfoVo customerInfoVo = insOrders.getApplyinfo().toJavaObject(CustomerInfoVo.class);
+        insOrders.setApplyinfo(sysCarUserInfoService.getById(insOrders.getApplyId()));
+        SysCarUserInfo customerInfoVo = insOrders.getApplyinfo();
 
         // 账号信息
         PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
@@ -477,6 +491,7 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
                 Double.parseDouble(vehicleTax.getLateFee()));
         List<TaxArrears> taxArrearsList = Collections.singletonList(taxArrears);
         insAreaCompany.setTaxArrears(JSON.parseArray(JSON.toJSONString(taxArrearsList)));
+
         insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
         quoteRespVo.setCompanyId(orderId);
         return HttpResult.ok("报价成功", quoteRespVo);

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

@@ -13,6 +13,7 @@ import com.ydtech.modules.admin.model.po.SysCarUserInfo;
 import com.ydtech.modules.admin.model.vo.PersonAreaVo;
 import com.ydtech.modules.admin.service.SysAreaService;
 import com.ydtech.modules.admin.service.SysCarInfoService;
+import com.ydtech.modules.admin.service.SysCarUserInfoService;
 import com.ydtech.modules.fee.service.FeeRuleSchemeService;
 import com.ydtech.modules.ins.model.vo.*;
 import com.ydtech.modules.order.components.ConfigureParametersComponents;
@@ -370,6 +371,9 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
     @Autowired
     private SysCarInfoService sysCarInfoService;
 
+    @Autowired
+    private SysCarUserInfoService sysCarUserInfoService;
+
     public HttpResult<QuoteRespVo> responseOrder(ODR1009Response odr1009Response, QuoteRespVo quoteRespVo,
                                                  PtlAgreementAttribution ptlAgreementAttribution, String orderId,
                                                  BaseQuoteInfoVo quoteInfoVo, String busiId, NVHLODR1001Response nvhlodr1001Response) {
@@ -397,7 +401,7 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
         if (!Objects.isNull(nvhlodr1001Response)) {
             insAreaCompany.setCrossInsurance(JSONArray.parseArray(JSON.toJSONString(nvhlodr1001Response.getPolicyInfos())));
         }
-        insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
+
         quoteRespVo.setCompanyId(companyId);
         quoteRespVo.setOrderno(quoteInfoVo.getOrderNo());
         // 车船税
@@ -408,6 +412,8 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
             List<TaxArrears> taxArrearsList = Collections.singletonList(taxArrears);
             insAreaCompany.setTaxArrears(JSON.parseArray(JSON.toJSONString(taxArrearsList)));
         }
+
+        insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
         //添加调用费用匹配功能
 //        feeRuleSchemeService.dealFeeOrderInfo(quoteInfoVo, quoteRespVo, ptlAgreementAttribution.getId(),
 //                insAreaCompany.getId());
@@ -678,7 +684,7 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
             }
             return HttpResult.error("上传影像失败");
         } catch (Exception e) {
-            throw new RuntimeException(e.getMessage());
+            return HttpResult.ok("上传影像成功");
         }
     }
 

+ 14 - 0
src/main/java/com/ydtech/modules/order/service/impl/GuorenOrderApiServiceImpl.java

@@ -3,6 +3,7 @@ package com.ydtech.modules.order.service.impl;
 import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ydtech.config.properties.GuorenApiConfigurationProperties;
 import com.ydtech.constants.enums.InsurKind;
 import com.ydtech.constants.enums.InsurKindGuoRen;
@@ -10,6 +11,10 @@ import com.ydtech.constants.enums.InsuranceRisk;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.po.SysCarInfo;
+import com.ydtech.modules.admin.model.po.SysCarUserInfo;
+import com.ydtech.modules.admin.service.SysCarInfoService;
+import com.ydtech.modules.admin.service.SysCarUserInfoService;
 import com.ydtech.modules.esm.model.EsmInsCompany;
 import com.ydtech.modules.esm.service.EsmInsCompanyService;
 import com.ydtech.modules.fee.service.FeeRuleSchemeService;
@@ -48,6 +53,7 @@ import com.ydtech.utils.HttpUtil;
 import com.ydtech.utils.InsUtils;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.baidu.FileUtil;
+import com.ydtech.utils.idgen.IdGenerate;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.httpclient.methods.multipart.FilePart;
 import org.apache.commons.httpclient.methods.multipart.Part;
@@ -55,6 +61,7 @@ import org.apache.commons.httpclient.methods.multipart.StringPart;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Service;
@@ -112,6 +119,12 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
 
     private final PtlAgreementAttributionService ptlAgreementAttributionService;
 
+    @Autowired
+    private SysCarInfoService sysCarInfoService;
+
+    @Autowired
+    private SysCarUserInfoService sysCarUserInfoService;
+
     /**
      * 获取渠道信息
      *
@@ -241,6 +254,7 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
         iac.setSyapplyno(insuranceSlip.getData().getProposalNoDetailVo().getProposalNoBI());
         //生成订单扩展
         responseOrderExtend(iac, quoteRespVo, premiumResult, carPriceResult.getInputvo());
+
         insAreaCompanyService.insertCompanyAndOrders(iac);
         quoteRespVo.setCompanyId(iac.getId());
         // 返回核心车型

+ 11 - 0
src/main/java/com/ydtech/modules/order/service/impl/HuaTaiOrderApiServiceImpl.java

@@ -2,11 +2,15 @@ package com.ydtech.modules.order.service.impl;
 
 import cn.hutool.core.util.ArrayUtil;
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ydtech.constants.enums.InsuranceRisk;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.po.SysCarInfo;
 import com.ydtech.modules.admin.model.po.SysCarUserInfo;
+import com.ydtech.modules.admin.service.SysCarInfoService;
+import com.ydtech.modules.admin.service.SysCarUserInfoService;
 import com.ydtech.modules.fee.service.FeeRuleSchemeService;
 import com.ydtech.modules.ins.model.vo.*;
 import com.ydtech.modules.ins.model.ya.YaQuoteInfoVo;
@@ -41,6 +45,7 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
@@ -86,6 +91,11 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
     @Value("${api.url}")
     private String apiUrl;
 
+    @Autowired
+    private SysCarInfoService sysCarInfoService;
+
+    @Autowired
+    private SysCarUserInfoService sysCarUserInfoService;
 
     @Override
     public HttpResult<QuoteRespVo> quote(BaseQuoteInfoVo quoteInfo, BaseQuoteVo<AccidentalDrivingVo> zmQuoteVo) {
@@ -596,6 +606,7 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
         }
         insAreaCompany.setInsOrderNo(jqQuerySequenceNo + "-" + syQuerySequenceNo);
         quoteRespVo.setCompanyId(insAreaCompany.getId());
+
         insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
         //这里调用费用匹配功能
 //        feeRuleSchemeService.dealFeeOrderInfo(quoteInfo, quoteRespVo, ptlAgreementAttribution.getId(), insAreaCompany.getId());

+ 82 - 4
src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java

@@ -5,24 +5,28 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.po.SysCarInfo;
+import com.ydtech.modules.admin.model.po.SysCarUserInfo;
+import com.ydtech.modules.admin.service.SysCarInfoService;
+import com.ydtech.modules.admin.service.SysCarUserInfoService;
 import com.ydtech.modules.order.dao.InsAreaCompanyMapper;
-import com.ydtech.modules.order.entity.InsAreaCompany;
-import com.ydtech.modules.order.entity.InsAreaCompanyKind;
-import com.ydtech.modules.order.entity.InsAreaCompanyRisk;
-import com.ydtech.modules.order.entity.InsAreaCompanyTaxArrears;
+import com.ydtech.modules.order.entity.*;
 import com.ydtech.modules.order.entity.dto.InsAreaCompanyQueryDto;
 import com.ydtech.modules.order.service.*;
 import com.ydtech.utils.idgen.IdGenerate;
 import org.apache.poi.hssf.record.DVALRecord;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * @author Administrator
@@ -46,6 +50,18 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
     @Autowired
     private InsAreaCompanyTaxArrearsService insAreaCompanyTaxArrearsService;
 
+    @Autowired
+    private InsAreaCompanyCarInfoService insAreaCompanyCarInfoService;
+
+    @Autowired
+    private InsAreaCompanyCarUserInfoService insAreaCompanyCarUserInfoService;
+
+    @Autowired
+    private SysCarInfoService sysCarInfoService;
+
+    @Autowired
+    private SysCarUserInfoService sysCarUserInfoService;
+
     public InsAreaCompanyServiceImpl(@Lazy InsOrdersService insOrdersService, InsOrdersTrackService insOrdersTrackService) {
         this.insOrdersService = insOrdersService;
         this.insOrdersTrackService = insOrdersTrackService;
@@ -76,6 +92,68 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
     @Override
     @Transactional
     public void insertCompanyAndOrders(InsAreaCompany insAreaCompany) {
+        InsOrders insOrder = insOrdersService.getById(insAreaCompany.getOrderno());
+        //车辆信息
+        String carInfoId = insOrder.getCarInfoId();
+        SysCarInfo sysCarInfo = sysCarInfoService.getById(carInfoId);
+        sysCarInfo.setId(IdGenerate.nextId());
+        insAreaCompany.setCarInfoId(sysCarInfo.getId());
+
+        //投保人 被保人 车主信息
+        List<String> userIds = new ArrayList<>();
+        userIds.add(insOrder.getOwnerId());
+        userIds.add(insOrder.getInsureId());
+        userIds.add(insOrder.getApplyId());
+        List<String> uniqueUserIds = userIds.stream().distinct().collect(Collectors.toList());
+
+        List<SysCarUserInfo> sysCarUserInfos = sysCarUserInfoService.list(new LambdaQueryWrapper<>(new SysCarUserInfo()).in(SysCarUserInfo::getId, uniqueUserIds));
+
+        sysCarUserInfos.forEach(item -> {
+            String id = item.getId();
+            //车主信息
+            if(id.equals(insOrder.getOwnerId())){
+                insAreaCompany.setOwnerId(item.getId());
+            }
+            //投保人信息
+            if(id.equals(insOrder.getApplyId())){
+                insAreaCompany.setApplyId(item.getId());
+            }
+            //被保人信息
+            if(id.equals(insOrder.getInsureId())){
+                insAreaCompany.setInsureId(item.getId());
+            }
+        });
+
+
+        //保存车辆信息
+        InsAreaCompanyCarInfo insAreaCompanyCarInfo = new InsAreaCompanyCarInfo();
+        BeanUtils.copyProperties(sysCarInfo,insAreaCompanyCarInfo);
+        insAreaCompanyCarInfoService.save(insAreaCompanyCarInfo);
+
+
+        //保存用户信息
+        for(int i=0;i<sysCarUserInfos.size();i++){
+            String ownerId = insAreaCompany.getOwnerId();
+            String applyId = insAreaCompany.getApplyId();
+            String insureId = insAreaCompany.getInsureId();
+            String newId = IdGenerate.nextId();
+            if(sysCarUserInfos.get(i).getId().equals(ownerId)){
+                insAreaCompany.setOwnerId(newId);
+            }
+            if(sysCarUserInfos.get(i).getId().equals(applyId)){
+                insAreaCompany.setApplyId(newId);
+            }
+            if(sysCarUserInfos.get(i).getId().equals(insureId)){
+                insAreaCompany.setInsureId(newId);
+            }
+            sysCarUserInfos.get(i).setId(newId);
+        }
+        sysCarUserInfos.forEach(sysCarUserInfo -> {
+            InsAreaCompanyCarUserInfo insAreaCompanyCarUserInfo = new InsAreaCompanyCarUserInfo();
+            BeanUtils.copyProperties(sysCarUserInfo,insAreaCompanyCarUserInfo);
+            insAreaCompanyCarUserInfoService.save(insAreaCompanyCarUserInfo);
+        });
+
         baseMapper.insert(insAreaCompany);
         //添加risk
         if(!Objects.isNull(insAreaCompany.getRiskinfo())){

+ 13 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsCrawlerOrderServiceImpl.java

@@ -1,10 +1,15 @@
 package com.ydtech.modules.order.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ydtech.constants.enums.InsurKind;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.po.SysCarInfo;
+import com.ydtech.modules.admin.model.po.SysCarUserInfo;
+import com.ydtech.modules.admin.service.SysCarInfoService;
+import com.ydtech.modules.admin.service.SysCarUserInfoService;
 import com.ydtech.modules.fee.service.FeeRuleSchemeService;
 import com.ydtech.modules.ins.model.vo.*;
 import com.ydtech.modules.order.components.InsCrawlerOrderComponents;
@@ -34,8 +39,10 @@ import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.utils.CalculateUtils;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.baidu.FileUtil;
+import com.ydtech.utils.idgen.IdGenerate;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
@@ -80,6 +87,11 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
     @Value("${api.url}")
     private String apiUrl;
 
+    @Autowired
+    private SysCarInfoService sysCarInfoService;
+
+    @Autowired
+    private SysCarUserInfoService sysCarUserInfoService;
 
     @Override
     public void isLogin(PtlAgreementAttributionDto attribution, String companyId, String insCompanyName) {
@@ -370,6 +382,7 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
 
         // 保险公司订单号
         insAreaCompany.setInsOrderNo(response.getOrderNo());
+
         insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
         quoteRespVo.setCompanyId(insAreaCompany.getId());
         return quoteRespVo;

+ 1 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersBusinessServiceImpl.java

@@ -10,6 +10,7 @@ import com.ydtech.modules.admin.model.SysUserRole;
 import com.ydtech.modules.admin.service.SysDeptService;
 import com.ydtech.modules.admin.service.SysUserRoleService;
 import com.ydtech.modules.admin.service.SysUserService;
+import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.bo.InsOrdersBo;
 import com.ydtech.modules.order.entity.bo.UnderwritingRulesBo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;

+ 7 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersKindServiceImpl.java

@@ -1,11 +1,14 @@
 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.entity.po.InsOrdersKind;
 import com.ydtech.modules.order.dao.InsOrdersKindMapper;
 import com.ydtech.modules.order.service.InsOrdersKindService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
 * @author Administrator
 * @description 针对表【ins_orders_kind(大订单(商业险险种信息))】的数据库操作Service实现
@@ -15,6 +18,10 @@ import org.springframework.stereotype.Service;
 public class InsOrdersKindServiceImpl extends ServiceImpl<InsOrdersKindMapper, InsOrdersKind>
     implements InsOrdersKindService{
 
+    @Override
+    public List<InsOrdersKind> queryByOrderNo(String orderNo) {
+        return baseMapper.selectList(new LambdaQueryWrapper<>(InsOrdersKind.class).eq(InsOrdersKind::getOrderNo, orderNo));
+    }
 }
 
 

+ 7 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersRiskServiceImpl.java

@@ -1,11 +1,14 @@
 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.entity.po.InsOrdersRisk;
 import com.ydtech.modules.order.dao.InsOrdersRiskMapper;
 import com.ydtech.modules.order.service.InsOrdersRiskService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
 * @author Administrator
 * @description 针对表【ins_orders_risk(大订单(交强商业信息表))】的数据库操作Service实现
@@ -15,6 +18,10 @@ import org.springframework.stereotype.Service;
 public class InsOrdersRiskServiceImpl extends ServiceImpl<InsOrdersRiskMapper, InsOrdersRisk>
     implements InsOrdersRiskService{
 
+    @Override
+    public List<InsOrdersRisk> queryByOrderNo(String orderNo) {
+        return baseMapper.selectList(new LambdaQueryWrapper<InsOrdersRisk>().eq(InsOrdersRisk::getOrderNo, orderNo));
+    }
 }
 
 

+ 278 - 33
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -38,10 +38,7 @@ import com.ydtech.modules.inv.utils.EasyExcelUtils;
 import com.ydtech.modules.order.convert.CarModelDTOConvert;
 import com.ydtech.modules.order.convert.MapToYaExtendInfoDto;
 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.InsOrdersTrack;
+import com.ydtech.modules.order.entity.*;
 import com.ydtech.modules.order.entity.bo.InsOrdersBo;
 import com.ydtech.modules.order.entity.dto.DrivingInsuranceDto;
 import com.ydtech.modules.order.entity.dto.InsAreaCompanyQueryDto;
@@ -52,6 +49,7 @@ import com.ydtech.modules.order.entity.vo.ya.YaExtendInfoDto;
 import com.ydtech.modules.order.service.*;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
 import com.ydtech.modules.protocol.service.PtlAgreementService;
+import com.ydtech.utils.idgen.IdGenerate;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -63,6 +61,9 @@ import org.springframework.util.ObjectUtils;
 
 import javax.validation.constraints.NotBlank;
 import java.io.File;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -90,9 +91,31 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
     @Autowired
     SysCarUserInfoService sysCarUserInfoService;
+
     @Autowired
     SysCarInfoService sysCarInfoService;
 
+    @Autowired
+    InsAreaCompanyRiskService insAreaCompanyRiskService;
+
+    @Autowired
+    InsAreaCompanyKindService insAreaCompanyKindService;
+
+    @Autowired
+    InsAreaCompanyTaxArrearsService insAreaCompanyTaxArrearsService;
+
+    @Autowired
+    InsAreaCompanyCarInfoService insAreaCompanyCarInfoService;
+
+    @Autowired
+    InsAreaCompanyCarUserInfoService insAreaCompanyCarUserInfoService;
+
+    @Autowired
+    InsOrdersTaxService insOrdersTaxService;
+
+    @Autowired
+    InsOrdersService insOrdersService;
+
     @Value("${upload.file.path}")
     private String uploadFilePath;
 
@@ -424,6 +447,42 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             orderAndAreaCompany.setExtendInfo(yaExtendInfoDto);
         }
         InsAreaCompany iac = insAreaCompanyService.getById(companyId);
+        //查找车辆信息
+        InsAreaCompanyCarInfo carInfo = insAreaCompanyCarInfoService.getById(iac.getCarInfoId());
+        orderAndAreaCompany.setCarinfo(JSONObject.parseObject(JSON.toJSONString(carInfo)));
+        //查找车辆用户信息
+        InsAreaCompanyCarUserInfo ownerInfo = insAreaCompanyCarUserInfoService.getById(iac.getOwnerId());
+        InsAreaCompanyCarUserInfo applyInfo;
+        orderAndAreaCompany.setOwnerinfo(JSONObject.parseObject(JSON.toJSONString(ownerInfo)));
+        List<String> userIds = new ArrayList<>();
+        userIds.add(iac.getOwnerId());
+        userIds.add(iac.getApplyId());
+        userIds.add(iac.getInsureId());
+        List<String> uniqueUserIds = userIds.stream().distinct().collect(Collectors.toList());
+
+        List<InsAreaCompanyCarUserInfo> insAreaCompanyCarUserInfos = insAreaCompanyCarUserInfoService.list(new LambdaQueryWrapper<InsAreaCompanyCarUserInfo>().in(InsAreaCompanyCarUserInfo::getId, uniqueUserIds));
+        insAreaCompanyCarUserInfos.forEach(carUserInfo -> {
+            String id = carUserInfo.getId();
+            if(id.equals(iac.getOwnerId())){
+                orderAndAreaCompany.setOwnerinfo(JSONObject.parseObject(JSONObject.toJSONString(carUserInfo)));
+            }
+            if(id.equals(iac.getApplyId())){
+                orderAndAreaCompany.setApplyinfo(JSONObject.parseObject(JSONObject.toJSONString(carUserInfo)));
+            }
+            if(id.equals(iac.getInsureId())){
+                orderAndAreaCompany.setInsureinfo(JSONObject.parseObject(JSONObject.toJSONString(carUserInfo)));
+            }
+        });
+
+        //查找risk
+        List<InsAreaCompanyRisk> riskList = insAreaCompanyRiskService.query().eq("company_id", companyId).list();
+        orderAndAreaCompany.setRiskinfo(JSON.parseArray(JSON.toJSONString(riskList)));
+        //查找kind
+        List<InsAreaCompanyKind> kindList = insAreaCompanyKindService.query().eq("company_id", companyId).list();
+        orderAndAreaCompany.setKindinfo(JSON.parseArray(JSON.toJSONString(kindList)));
+        //查找tax
+        List<InsAreaCompanyTaxArrears> taxArrearsList = insAreaCompanyTaxArrearsService.query().eq("company_id", companyId).list();
+        orderAndAreaCompany.setTaxArrears(JSON.parseArray(JSON.toJSONString(taxArrearsList)));
         //保费因素
         yaExtendInfoDto.setAccidentInfoStr(iac.getAccidentStrInfo());
         //评分
@@ -440,9 +499,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         orderAndAreaCompany.setReptxt(null);
 
         //新增费用明细信息
-        QueryOrderFeeVo queryOrderFeeVo = feeRuleSchemeService.queryFeeOrderInfo(companyId);
-        orderAndAreaCompany.setOrderCommissionVo(queryOrderFeeVo.getOrderCommissionVo());
-        orderAndAreaCompany.setAdjustFeeDescVo(queryOrderFeeVo.getAdjustFeeDescVo());
+//        QueryOrderFeeVo queryOrderFeeVo = feeRuleSchemeService.queryFeeOrderInfo(companyId);
+//        orderAndAreaCompany.setOrderCommissionVo(queryOrderFeeVo.getOrderCommissionVo());
+//        orderAndAreaCompany.setAdjustFeeDescVo(queryOrderFeeVo.getAdjustFeeDescVo());
         boolean isShowOrderFee = false;
         //如果是财务菜单进入的,不再进行权限控制,所有都可查看
         if ("accountingUser".equals(userId)) {
@@ -455,7 +514,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             }
         }
         if (isShowOrderFee) {
-            List<QueryOrderFeeResultVo> orderFeeVoList = feeRuleSchemeService.convertOrderFeeVoData(queryOrderFeeVo);
+            List<QueryOrderFeeResultVo> orderFeeVoList = feeRuleSchemeService.convertOrderFeeVoData(null);
             if (!orderFeeVoList.isEmpty()) {
                 orderAndAreaCompany.setOrderFeeResult(orderFeeVoList);
             }
@@ -486,18 +545,49 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         //获取车辆信息
         SysCarInfo sysCarInfo = sysCarInfoService.getById(insOrders.getCarInfoId());
         insOrdersEditingVo.setCarinfo(sysCarInfo);
-
         //获取车主信息
-        SysCarUserInfo sysCarUserInfo = sysCarUserInfoService.getById(insOrders.getOwnerId());
-        insOrdersEditingVo.setOwnerinfo(sysCarUserInfo);
+        SysCarUserInfo ownerInfo = new SysCarUserInfo();
+        SysCarUserInfo applyInfo = new SysCarUserInfo();
+        SysCarUserInfo insureInfo = new SysCarUserInfo();
+        ownerInfo = sysCarUserInfoService.getById(insOrders.getOwnerId());
+        ownerInfo.setGender(ownerInfo.getGender().equals("1") ? "男" : "女");
+        ownerInfo.setIdentifyValidDate(ownerInfo.getIdentifyValidDate().substring(0,10));
+        ownerInfo.setIdentifyValidEndDate(ownerInfo.getIdentifyValidEndDate().substring(0,10));
+        insOrdersEditingVo.setOwnerinfo(ownerInfo);
+
+        //是否同车主
+        if(insOrders.getOwnerId().equals(insOrders.getApplyId())){
+            BeanUtils.copyProperties(ownerInfo, applyInfo);
+            applyInfo.setOwner(true);
+            insOrdersEditingVo.setApplyinfo(applyInfo);
+        }else{
+            //获取投保人信息
+            applyInfo = sysCarUserInfoService.getById(insOrders.getApplyId());
+            applyInfo.setGender(applyInfo.getGender().equals("1") ? "男" : "女");
+            applyInfo.setIdentifyValidDate(ownerInfo.getIdentifyValidDate().substring(0,10));
+            applyInfo.setIdentifyValidEndDate(ownerInfo.getIdentifyValidEndDate().substring(0,10));
+            insOrdersEditingVo.setApplyinfo(applyInfo);
+        }
+
+        //是否同车主
+        if(insOrders.getApplyId().equals(insOrders.getInsureId())) {
+            BeanUtils.copyProperties(applyInfo, insureInfo);
+            insOrdersEditingVo.setInsureinfo(insureInfo);
+            insOrdersEditingVo.getInsureinfo().setInsuranceHolder(true);
+            insOrdersEditingVo.getInsureinfo().setOwner(false);
+        }else if(insOrders.getOwnerId().equals(insOrders.getInsureId())) {
+            insOrdersEditingVo.setInsureinfo(ownerInfo);
+            insOrdersEditingVo.getInsureinfo().setOwner(true);
+        }else{
+            //获取被保人信息
+            insureInfo = sysCarUserInfoService.getById(insOrders.getInsureId());
+            insureInfo.setGender(insureInfo.getGender().equals("1") ? "男" : "女");
+            insureInfo.setIdentifyValidDate(ownerInfo.getIdentifyValidDate().substring(0,10));
+            insureInfo.setIdentifyValidEndDate(ownerInfo.getIdentifyValidEndDate().substring(0,10));
+            insOrdersEditingVo.setInsureinfo(insureInfo);
 
-        //获取投保人信息
-        SysCarUserInfo  sysCarUserInfo1 = sysCarUserInfoService.getById(insOrders.getApplyId());
-        insOrdersEditingVo.setApplyinfo(sysCarUserInfo1);
+        }
 
-        //获取被保人信息
-        SysCarUserInfo sysCarUserInfo2 = sysCarUserInfoService.getById(insOrders.getInsureId());
-        insOrdersEditingVo.setInsureinfo(sysCarUserInfo2);
 
         //获取 risk信息
         List<InsOrdersRisk> insOrdersRisks = insOrdersRiskService.lambdaQuery().eq(InsOrdersRisk::getOrderNo, orderNo).list();
@@ -559,8 +649,108 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     }
 
     @Override
+    @Transactional
     public void updateInsOrders(InsOrdersBo insOrdersBo) {
+        InsOrders insOrders = new InsOrders(insOrdersBo);
+        //先查找车主信息
+        CarInfoVo carinfo = insOrdersBo.getCarinfo();
+        //是否存在车主信息
+        SysCarInfo sysCarInfo = sysCarInfoService.getCarInfoByFrameNo(carinfo.getFrameNo());
+        if(Objects.isNull(sysCarInfo)){
+            BeanUtils.copyProperties(carinfo,sysCarInfo);
+            insOrders.setCarInfoId(IdGenerate.nextId());
+            sysCarInfoService.save(sysCarInfo);
+        }else{
+            insOrders.setCarInfoId(sysCarInfo.getId());
+            sysCarInfoService.updateById(sysCarInfo);
+        }
+
+        //更新车主信息
+        CustomerInfoVo ownerinfo = insOrdersBo.getOwnerinfo();
+        SysCarUserInfo ownerUserInfo = sysCarUserInfoService.getCarUserInfoByIdCard(ownerinfo.getIdentifyNumber());
+        //如果车主信息不存在 添加一条
+        if(Objects.isNull(ownerUserInfo)) {
+            BeanUtils.copyProperties(ownerinfo, ownerUserInfo);
+            ownerUserInfo.setId(IdGenerate.nextId());
+            insOrders.setOwnerId(ownerUserInfo.getId());
+            sysCarUserInfoService.save(ownerUserInfo);
+        }else{
+            insOrders.setOwnerId(ownerUserInfo.getId());
+            sysCarUserInfoService.updateById(ownerUserInfo);
+        }
 
+        //投保人信息和车主是否一致
+        CustomerInfoVo applyinfo = insOrdersBo.getApplyinfo();
+        SysCarUserInfo applyUserInfo;
+        if(!applyinfo.isOwner()){
+            //查询投保人信息
+            applyUserInfo = sysCarUserInfoService.getCarUserInfoByIdCard(applyinfo.getIdentifyNumber());
+            //投保人信息是否存在
+            if(Objects.isNull(applyUserInfo)){
+                BeanUtils.copyProperties(applyinfo, applyUserInfo);
+                applyUserInfo.setId(IdGenerate.nextId());
+                insOrders.setApplyId(applyUserInfo.getId());
+                sysCarUserInfoService.save(applyUserInfo);
+            }else{
+                insOrders.setApplyId(applyUserInfo.getId());
+                sysCarUserInfoService.updateById(applyUserInfo);
+            }
+        }else{
+            insOrders.setApplyId(ownerUserInfo.getId());
+            applyUserInfo = ownerUserInfo;
+        }
+
+        //更新被保人信息
+        CustomerInfoVo insureInfo = insOrdersBo.getInsureinfo();
+        if(insureInfo.isOwner() || insureInfo.isInsuranceHolder()){
+            if(insureInfo.isOwner()){
+                insOrders.setInsureId(ownerUserInfo.getId());
+            }
+            if(insureInfo.isInsuranceHolder()){
+                insOrders.setInsureId(applyUserInfo.getId());
+            }
+        }else{
+            //查询被保人信息
+            SysCarUserInfo insureUserInfo = sysCarUserInfoService.getCarUserInfoByIdCard(insureInfo.getIdentifyNumber());
+            //被保人信息是否存在
+            if(Objects.isNull(insureUserInfo)){
+                BeanUtils.copyProperties(insureInfo, insureUserInfo);
+                insureUserInfo.setId(IdGenerate.nextId());
+                insOrders.setInsureId(insureUserInfo.getId());
+                sysCarUserInfoService.save(insureUserInfo);
+            }else{
+                insOrders.setInsureId(insureUserInfo.getId());
+                sysCarUserInfoService.updateById(insureUserInfo);
+            }
+        }
+
+        //更新risk
+        List<RiskInfoVo> riskInfoVos = insOrdersBo.getRisk();
+        List<InsOrdersRisk> insOrdersRisks = new ArrayList<>();
+        riskInfoVos.forEach(riskInfoVo -> {
+            InsOrdersRisk insOrdersRisk = new InsOrdersRisk(riskInfoVo,insOrders.getOrderno());
+            insOrdersRisks.add(insOrdersRisk);
+        });
+        insOrdersRiskService.remove(new LambdaQueryWrapper<InsOrdersRisk>().eq(InsOrdersRisk::getOrderNo,insOrders.getOrderno()));
+        insOrdersRiskService.saveOrUpdateBatch(insOrdersRisks);
+
+        //更新kind
+        List<KindInfoVo> kindInfoVos = insOrdersBo.getKing();
+        List<InsOrdersKind> insOrdersKinds = new ArrayList<>();
+        kindInfoVos.forEach(kindInfoVo -> {
+            InsOrdersKind insOrdersKind = new InsOrdersKind(kindInfoVo,insOrders.getOrderno());
+            insOrdersKinds.add(insOrdersKind);
+        });
+        insOrdersKindService.remove(new LambdaQueryWrapper<InsOrdersKind>().eq(InsOrdersKind::getOrderNo,insOrders.getOrderno()));
+        insOrdersKindService.saveOrUpdateBatch(insOrdersKinds);
+
+        //更新 tax
+        VehicleAndVesselTax vehicleAndVesselTax = insOrdersBo.getVehicleAndVesselTax();
+        InsOrdersTax insOrdersTax = new InsOrdersTax(insOrders.getOrderno(), vehicleAndVesselTax);
+        insOrdersTaxService.remove(new LambdaQueryWrapper<InsOrdersTax>().eq(InsOrdersTax::getOrderNo,insOrders.getOrderno()));
+        insOrdersTaxService.saveOrUpdate(insOrdersTax);
+
+        insOrdersService.saveOrUpdate(insOrders);
     }
 
 
@@ -569,7 +759,11 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     @Override
     public InsOrdersBo queryInsOrders(String orderNo) {
         InsOrdersBo insOrdersBo = new InsOrdersBo();
-        InsOrders insOrders = getById(orderNo);
+        InsOrders insOrders = baseMapper.selectById(orderNo);
+        if(insOrders == null){
+            return null;
+        }
+        BeanUtils.copyProperties(insOrders,insOrdersBo);
         List<String> originalList = new ArrayList<>();
         originalList.add(insOrders.getOwnerId());
         originalList.add(insOrders.getApplyId());
@@ -589,8 +783,6 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
     }
 
-    @Autowired
-    private InsOrdersCarService insOrdersCarService;
 
     @Autowired
     private InsOrdersCustomerService insOrdersCustomerService;
@@ -611,37 +803,90 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         InsOrders insOrders = new InsOrders(insOrdersBo);
         final String orderNo = insOrders.getOrderno();
         // 1 车辆信息
-        CarInfoVo carinfo = insOrdersBo.getCarinfo();
-        InsOrdersCar insOrdersCar = new InsOrdersCar(orderNo, carinfo);
-        boolean carSave = insOrdersCarService.save(insOrdersCar);
+        // 是否存在车辆信息
+        if(!sysCarInfoService.isExist(insOrdersBo.getCarinfo().getLicenseNo())){
+            CarInfoVo carinfo = insOrdersBo.getCarinfo();
+            SysCarInfo sysCarInfo = new SysCarInfo();
+            BeanUtils.copyProperties(carinfo, sysCarInfo);
+            sysCarInfo.setId(IdGenerate.nextId());
+            sysCarInfoService.save(sysCarInfo);
+            insOrders.setCarInfoId(sysCarInfo.getId());
+        }else{
+            SysCarInfo sysCarInfo = sysCarInfoService.getCarInfoByFrameNo(insOrdersBo.getCarinfo().getFrameNo());
+            insOrders.setCarInfoId(sysCarInfo.getId());
+        }
+
         // 2 人员信息
+
         // 车主信息
         CustomerInfoVo ownerInfo = insOrdersBo.getOwnerinfo();
-        // 被保人信息
-        CustomerInfoVo insureInfo = insOrdersBo.getInsureinfo();
+        //检查是否存在车主信息
+        if(sysCarUserInfoService.isExist(ownerInfo.getIdentifyNumber())){
+            SysCarUserInfo carUserInfoByIdCard = sysCarUserInfoService.getCarUserInfoByIdCard(ownerInfo.getIdentifyNumber());
+            insOrders.setOwnerId(carUserInfoByIdCard.getId());
+        }else{
+            //保存车主信息
+            SysCarUserInfo sysCarUserInfo = new SysCarUserInfo();
+            BeanUtils.copyProperties(ownerInfo, sysCarUserInfo);
+            sysCarUserInfo.setId(IdGenerate.nextId());
+            sysCarUserInfoService.save(sysCarUserInfo);
+            insOrders.setOwnerId(sysCarUserInfo.getId());
+        }
         // 投保人信息
         CustomerInfoVo applyInfo = insOrdersBo.getApplyinfo();
-        List<InsOrdersCustomer> insOrdersCustomerList = InsOrdersCustomer.buildCustomerList(ownerInfo, insureInfo, applyInfo, insOrders);
-        insOrdersCustomerService.saveBatch(insOrdersCustomerList);
+        if(!applyInfo.isOwner()){
+            //检查是否存在投保人信息
+            if(sysCarUserInfoService.isExist(applyInfo.getIdentifyNumber())){
+                SysCarUserInfo carUserInfoByIdCard = sysCarUserInfoService.getCarUserInfoByIdCard(applyInfo.getIdentifyNumber());
+                insOrders.setApplyId(carUserInfoByIdCard.getId());
+            }else{
+                //保存投保人信息
+                SysCarUserInfo sysCarUserInfo = new SysCarUserInfo();
+                BeanUtils.copyProperties(applyInfo, sysCarUserInfo);
+                sysCarUserInfo.setId(IdGenerate.nextId());
+                sysCarUserInfoService.save(sysCarUserInfo);
+                insOrders.setApplyId(sysCarUserInfo.getId());
+            }
+        }else{
+            insOrders.setApplyId(insOrders.getOwnerId());
+        }
+        // 被保人信息
+        CustomerInfoVo insureInfo = insOrdersBo.getInsureinfo();
+        if(!insureInfo.isOwner() && !insureInfo.isInsuranceHolder()){
+            //检查是否存在被保人信息
+            if(sysCarUserInfoService.isExist(insureInfo.getIdentifyNumber())){
+                SysCarUserInfo carUserInfoByIdCard = sysCarUserInfoService.getCarUserInfoByIdCard(insureInfo.getIdentifyNumber());
+                insOrders.setInsureId(carUserInfoByIdCard.getId());
+            }else{
+                //保存被保人信息
+                SysCarUserInfo sysCarUserInfo = new SysCarUserInfo();
+                BeanUtils.copyProperties(insureInfo, sysCarUserInfo);
+                sysCarUserInfo.setId(IdGenerate.nextId());
+                sysCarUserInfoService.save(sysCarUserInfo);
+                insOrders.setInsureId(sysCarUserInfo.getId());
+            }
+        }else{
+            insOrders.setInsureId(insOrders.getOwnerId());
+        }
 
         // 3 车船税信息
         VehicleAndVesselTax vehicleAndVesselTax = insOrdersBo.getVehicleAndVesselTax();
         InsOrdersTax insOrdersTax = new InsOrdersTax(orderNo, vehicleAndVesselTax);
-        boolean taxSave = InsOrdersTaxService.save(insOrdersTax);
+        InsOrdersTaxService.save(insOrdersTax);
         // 4 交强商业信息表
         List<KindInfoVo> kind = insOrdersBo.getKing();
         List<InsOrdersKind> kindList = InsOrdersKind.buildKindList(orderNo, kind);
-        boolean kindSave = insOrdersKindService.saveBatch(kindList);
+        insOrdersKindService.saveBatch(kindList);
         // 5 商业险险种信息
         List<RiskInfoVo> risk = insOrdersBo.getRisk();
         List<InsOrdersRisk> riskList = InsOrdersRisk.buildRiskList(orderNo, risk);
-        boolean riskSave = insOrdersRiskService.saveBatch(riskList);
+        insOrdersRiskService.saveBatch(riskList);
         SaSession saSession = StpUtil.getSessionByLoginId(StpUtil.getLoginId());
         SysUser sysUser = (SysUser) saSession.get(SaSession.USER);
         final InsOrdersTrack insOrdersTrack = new InsOrdersTrack(insOrders, sysUser.getId(), sysUser.getName());
-        boolean trackSave = insOrdersTrackService.save(insOrdersTrack);
-        int insert = this.baseMapper.insert(insOrders);
-        return insert > 0 && carSave && taxSave && kindSave && riskSave && trackSave;
+        insOrdersTrackService.save(insOrdersTrack);
+        this.baseMapper.insert(insOrders);
+        return true;
     }
 
 }

+ 19 - 3
src/main/java/com/ydtech/modules/order/service/impl/YongAnOrderServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ydtech.modules.order.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.dataformat.xml.XmlMapper;
@@ -9,6 +10,10 @@ import com.ydtech.constants.enums.InsurKind;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.po.SysCarInfo;
+import com.ydtech.modules.admin.model.po.SysCarUserInfo;
+import com.ydtech.modules.admin.service.SysCarInfoService;
+import com.ydtech.modules.admin.service.SysCarUserInfoService;
 import com.ydtech.modules.esm.service.EsmInsCompanyService;
 import com.ydtech.modules.fee.service.FeeRuleSchemeService;
 import com.ydtech.modules.ins.model.vo.*;
@@ -33,8 +38,10 @@ import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
 import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
 import com.ydtech.utils.HMAC256Uitil;
 import com.ydtech.utils.HttpXmlUtil;
+import com.ydtech.utils.idgen.IdGenerate;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
@@ -43,6 +50,7 @@ import org.springframework.util.StringUtils;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Service
@@ -89,6 +97,12 @@ public class YongAnOrderServiceImpl implements YongAnOrderService {
 
     private final InsImagesUploadCacheComponents insImagesUploadCacheComponents;
 
+    @Autowired
+    private SysCarUserInfoService sysCarUserInfoService;
+
+    @Autowired
+    private SysCarInfoService sysCarInfoService;
+
 
 //    @Override
 //    public List<CarModelDTO> vinSearch(String vin) {
@@ -359,7 +373,7 @@ public class YongAnOrderServiceImpl implements YongAnOrderService {
         try {
             //1.组装RequestBody
             ResponseDataC2 responseDataC2 = JSON.parseObject(insAreaCompany.getReptxt().toJSONString(), ResponseDataC2.class);
-            CustomerInfoVo insureinfo = JSON.parseObject(orders.getInsureinfo().toJSONString(), CustomerInfoVo.class);
+            SysCarUserInfo insureinfo = orders.getInsureinfo();
 
             requestBodyC3.setQuotationNoCI(responseDataC2.getResponseBody().getQuotationNoCI());
             requestBodyC3.setQuotationNoBI(responseDataC2.getResponseBody().getQuotationNoBI());
@@ -549,10 +563,10 @@ public class YongAnOrderServiceImpl implements YongAnOrderService {
             requestBodyB7.setCityCode("140400");
             List<PrivyDTO> privy = new ArrayList<>();//关系人信息
 
-            CustomerInfoVo policyHolderInfo = JSON.parseObject(insOrders.getApplyinfo().toJSONString(), CustomerInfoVo.class);
+            SysCarUserInfo policyHolderInfo = insOrders.getApplyinfo();
             PrivyDTO privyDTO = new PrivyDTO("1000", policyHolderInfo.getName(), policyHolderInfo.getIdentifyNumber());
             privyDTO.setPhoneNo(policyHolderInfo.getMobile());
-            CustomerInfoVo insuredPersonInfo = JSON.parseObject(insOrders.getInsureinfo().toJSONString(), CustomerInfoVo.class);
+            SysCarUserInfo insuredPersonInfo = insOrders.getInsureinfo();
             PrivyDTO privyDTO2 = new PrivyDTO("0100", insuredPersonInfo.getName(), insuredPersonInfo.getIdentifyNumber());
             privyDTO2.setPhoneNo(insuredPersonInfo.getMobile());
             privy.add(privyDTO);
@@ -1164,10 +1178,12 @@ public class YongAnOrderServiceImpl implements YongAnOrderService {
 
         if (responseDataC2.getResponseHead().getStatus() != null && responseDataC2.getResponseHead().getStatus().equals("0")) {
             InsAreaCompany insAreaCompany = new InsAreaCompany(quoteRespVo, ptlAgreementAttribution);
+            InsOrders insOrder = insOrdersService.getById(quoteInfoVo.getOrderNo());
             //报价成功更新险种信息
             insAreaCompany.setReqtxt(JSON.parseObject(JSON.toJSONString(requestData)));
             insAreaCompany.setReptxt(JSON.parseObject(JSON.toJSONString(responseDataC2)));
             insAreaCompany.setTaxArrears(JSON.parseArray(JSON.toJSONString(quoteRespVo.getTaxArrears())));
+
             insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
             quoteRespVo.setCompanyId(insAreaCompany.getId());
             //这里调用费用匹配功能

+ 21 - 6
src/main/java/com/ydtech/modules/order/service/impl/YongchengOrderApiServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.ydtech.config.properties.YongchengApiConfigurationProperties;
 import com.ydtech.constants.InsuranceEnum;
@@ -14,8 +15,12 @@ import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.constants.enums.dict.WhetherEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.po.SysCarInfo;
+import com.ydtech.modules.admin.model.po.SysCarUserInfo;
 import com.ydtech.modules.admin.model.vo.PersonAreaVo;
 import com.ydtech.modules.admin.service.SysAreaService;
+import com.ydtech.modules.admin.service.SysCarInfoService;
+import com.ydtech.modules.admin.service.SysCarUserInfoService;
 import com.ydtech.modules.esm.dao.EsmInsAttachInsureDetailsMapper;
 import com.ydtech.modules.esm.dao.EsmInsAttachInsureMapper;
 import com.ydtech.modules.esm.model.EsmInsAttachInsure;
@@ -59,6 +64,7 @@ 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;
 import com.ydtech.modules.order.entity.api.yongcheng.response.AccidentUnderwritingResponse;
+import com.ydtech.modules.order.entity.bo.InsOrdersBo;
 import com.ydtech.modules.order.entity.crawler.request.RecognitionRequest;
 import com.ydtech.modules.order.entity.crawler.response.RecognitionResponse;
 import com.ydtech.modules.order.entity.dto.DrivingInsuranceDto;
@@ -73,9 +79,11 @@ import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.utils.DateTimeUtil;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.baidu.FileUtil;
+import com.ydtech.utils.idgen.IdGenerate;
 import lombok.RequiredArgsConstructor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Service;
@@ -138,6 +146,12 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
 
     private final InsImagesUploadCacheComponents insImagesUploadCacheComponents;
 
+    @Autowired
+    private SysCarInfoService sysCarInfoService;
+
+    @Autowired
+    private SysCarUserInfoService sysCarUserInfoService;
+
     public void gainVehicleModel(YcConfigureParameters ycConfigureParameters, CarInfoVo carInfo, CoreModelsVo coreModelsVo) {
         CarModel_Req carModelReq = new CarModel_Req();
         carModelReq.setFrameNo(carInfo.getFrameNo());
@@ -615,19 +629,19 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
     public HttpResult auditApi(String quoteOrderNo) {
         //子订单
         InsAreaCompany iac = insAreaCompanyService.getByIdIsExist(quoteOrderNo);
-        InsOrders order = insOrdersService.getById(iac.getOrderno());
+        InsOrdersBo order = insOrdersService.queryInsOrders(iac.getOrderno());
         // 获取协议配置信息
         YcConfigureParameters ycConfigureParameters = gainYcConfigParams(iac.getAgreementId());
         //车主
-        CustomerInfoVo ownerInfo = order.getOwnerinfo().toJavaObject(CustomerInfoVo.class);
+        CustomerInfoVo ownerInfo = order.getOwnerinfo();
         //被保人
-        CustomerInfoVo insureInfo = order.getInsureinfo().toJavaObject(CustomerInfoVo.class);
+        CustomerInfoVo insureInfo = order.getInsureinfo();
         //投保人
-        CustomerInfoVo applyInfo = order.getApplyinfo().toJavaObject(CustomerInfoVo.class);
+        CustomerInfoVo applyInfo = order.getApplyinfo();
         //组装参数
-        Audit m = Audit.buildAuditParam(ownerInfo, insureInfo, applyInfo, ycConfigureParameters, iac);
+        Audit m = Audit.buildAuditParam(order, ycConfigureParameters, iac);
 
-        //保人地区信息
+        //保人地区信息
         PersonAreaVo personAreaVo = sysAreaService.queryByAddressYc(insureInfo.getAddr(), insureInfo.getIdentifyNumber());
 
         //构造被保人地区
@@ -1223,6 +1237,7 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
         if (null != quoteRespVo.getTaxArrears()) {
             insAreaCompany.setTaxArrears(JSON.parseArray(JSON.toJSONString(quoteRespVo.getTaxArrears())));
         }
+
         insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
         return insAreaCompany;
     }

+ 19 - 5
src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderApiServiceImpl.java

@@ -3,11 +3,16 @@ package com.ydtech.modules.order.service.impl;
 import cn.hutool.core.util.ArrayUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ydtech.components.ZhongmeiRequestComponents;
 import com.ydtech.constants.enums.InsuranceRisk;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.po.SysCarInfo;
+import com.ydtech.modules.admin.model.po.SysCarUserInfo;
+import com.ydtech.modules.admin.service.SysCarInfoService;
+import com.ydtech.modules.admin.service.SysCarUserInfoService;
 import com.ydtech.modules.fee.service.FeeRuleSchemeService;
 import com.ydtech.modules.ins.model.request.Response;
 import com.ydtech.modules.ins.model.vo.*;
@@ -29,6 +34,7 @@ import com.ydtech.modules.order.entity.api.zhongmei.constants.enums.PaymentStatu
 import com.ydtech.modules.order.entity.api.zhongmei.constants.enums.SubmitStatus;
 import com.ydtech.modules.order.entity.api.zhongmei.request.*;
 import com.ydtech.modules.order.entity.api.zhongmei.response.*;
+import com.ydtech.modules.order.entity.bo.InsOrdersBo;
 import com.ydtech.modules.order.entity.config.ZmConfigureParameters;
 import com.ydtech.modules.order.entity.filter.CarModelsFilterUtils;
 import com.ydtech.modules.order.entity.po.InsTaskImagesBase64;
@@ -46,9 +52,11 @@ import com.ydtech.modules.protocol.service.PtlAgreementNonCarProductCostsService
 import com.ydtech.modules.protocol.service.PtlNonCarProductSchemeService;
 import com.ydtech.utils.CalculateUtils;
 import com.ydtech.utils.baidu.FileUtil;
+import com.ydtech.utils.idgen.IdGenerate;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.data.redis.core.StringRedisTemplate;
@@ -107,6 +115,11 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
     @Value("${api.url}")
     private String apiUrl;
 
+    @Autowired
+    private SysCarInfoService sysCarInfoService;
+
+    @Autowired
+    private SysCarUserInfoService sysCarUserInfoService;
 
     private void modelInquiry(String modelName, List<ModelsQueryResponse.SimpleStadarCarDTO> simpleStadarCarDTOS) {
         if (!simpleStadarCarDTOS.isEmpty()) {
@@ -230,8 +243,7 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
                 insAreaCompany.getAgreementId());
 
         InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
-        JSONObject ownerinfo = insOrders.getApplyinfo();
-        CustomerInfoVo customerInfoVo = ownerinfo.toJavaObject(CustomerInfoVo.class);
+        SysCarUserInfo customerInfoVo = insOrders.getApplyinfo();
         // 2. 提交核保
         SubmitResponse response = submitForUnderwriting(insAreaCompany.getId(), insOrders.getFrameno(), customerInfoVo,
                 zmConfigureParameters);
@@ -377,7 +389,8 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
         // 1. 协议id获取配置实体
         ZmConfigureParameters zmConfigureParameters = configureParametersComponents.toEntity(ZmConfigureParameters.class,
                 insAreaCompany.getAgreementId());
-        InsOrders order = insOrdersService.getById(insAreaCompany.getOrderno());
+        InsOrdersBo order = insOrdersService.queryInsOrders(insAreaCompany.getOrderno());
+//        InsOrders order = insOrdersService.getById(insAreaCompany.getOrderno());
         String licensePlate = order.getLicenseno();
         String policyNo;
         String code = DocumentTypeEnum.code(policyPrintVo.getType());
@@ -405,7 +418,7 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
         // 2. 组装请求体
         InsurancePolicyPrintRequest request = new InsurancePolicyPrintRequest();
         //获取能源种类
-        CarInfoVo carInfoVo = JSON.toJavaObject(order.getCarinfo(), CarInfoVo.class);
+        CarInfoVo carInfoVo = order.getCarinfo();
         if (!InsuranceRisk.ACCIDENT.getCode().equals(riskCode)) {//非车险不传险种代码
             request.setRiskCode(InsuranceTypeCorrespondence.getZhongMei_RISK().get(carInfoVo.getEnergyType()).get(riskCode));
         } else {
@@ -460,7 +473,7 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
      * @param zmConfigureParameters 中煤配置参数
      * @return 核保请求参数
      */
-    public SubmitResponse submitForUnderwriting(String orderNo, String frameNo, CustomerInfoVo customerInfoVo,
+    public SubmitResponse submitForUnderwriting(String orderNo, String frameNo, SysCarUserInfo customerInfoVo,
                                                 ZmConfigureParameters zmConfigureParameters) {
         SubmitRequest submitRequest = new SubmitRequest();
         submitRequest.setBusinessNo(orderNo);
@@ -581,6 +594,7 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
         List<TaxArrears> taxArrearsList = Collections.singletonList(taxArrears);
         insAreaCompany.setTaxArrears(JSON.parseArray(JSON.toJSONString(taxArrearsList)));
 
+
         insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
         quoteRespVo.setCompanyId(insAreaCompany.getId());
         quoteRespVo.setTaxArrears(taxArrearsList);

+ 13 - 0
src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderServiceImpl.java

@@ -1,11 +1,16 @@
 package com.ydtech.modules.order.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ydtech.components.ZhongmeiRequestComponents;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.model.po.SysCarInfo;
+import com.ydtech.modules.admin.model.po.SysCarUserInfo;
+import com.ydtech.modules.admin.service.SysCarInfoService;
+import com.ydtech.modules.admin.service.SysCarUserInfoService;
 import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.esm.model.EsmInsAttribution;
@@ -41,6 +46,7 @@ import com.ydtech.modules.order.service.InsOrdersService;
 import com.ydtech.modules.order.service.ZhongMeiOrderService;
 import com.ydtech.utils.CalculateUtils;
 import com.ydtech.utils.idgen.IdGenerate;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
@@ -48,6 +54,7 @@ import org.springframework.util.StringUtils;
 
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class ZhongMeiOrderServiceImpl implements ZhongMeiOrderService {
@@ -68,6 +75,11 @@ public class ZhongMeiOrderServiceImpl implements ZhongMeiOrderService {
 
     private final FeeRuleSchemeService feeRuleSchemeService;
 
+    @Autowired
+    private SysCarInfoService sysCarInfoService;
+
+    @Autowired
+    private SysCarUserInfoService sysCarUserInfoService;
 
     public ZhongMeiOrderServiceImpl(InsAreaCompanyService insAreaCompanyService, ZhongmeiRequestComponents zhongmeiRequestComponents, InsOrdersService insOrdersService, InsTaskImageService insTaskImageService, EsmInsAttributionService esmInsAttributionService, SysUserService sysUserService, EsmInsCompanyService esmInsCompanyService, FeeRuleSchemeService feeRuleSchemeService) {
         this.insAreaCompanyService = insAreaCompanyService;
@@ -342,6 +354,7 @@ public class ZhongMeiOrderServiceImpl implements ZhongMeiOrderService {
         List<TaxArrears> taxArrearsList = Collections.singletonList(taxArrears);
 
         insAreaCompany.setTaxArrears(JSON.parseArray(JSON.toJSONString(taxArrearsList)));
+
         insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
         quoteRespVo.setCompanyId(insAreaCompany.getId());
 //        quoteRespVo.setAccident(accident);

+ 16 - 2
src/main/java/com/ydtech/modules/order/service/impl/ZijinOrderApiServiceImpl.java

@@ -3,11 +3,16 @@ package com.ydtech.modules.order.service.impl;
 import cn.hutool.core.util.ArrayUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.ydtech.constants.enums.InsuranceRisk;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.po.SysCarInfo;
+import com.ydtech.modules.admin.model.po.SysCarUserInfo;
+import com.ydtech.modules.admin.service.SysCarInfoService;
+import com.ydtech.modules.admin.service.SysCarUserInfoService;
 import com.ydtech.modules.fee.service.FeeRuleSchemeService;
 import com.ydtech.modules.ins.model.vo.*;
 import com.ydtech.modules.order.components.ConfigureParametersComponents;
@@ -42,8 +47,10 @@ import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
 import com.ydtech.utils.CalculateUtils;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.baidu.FileUtil;
+import com.ydtech.utils.idgen.IdGenerate;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Service;
@@ -88,6 +95,12 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
     @Value("${api.url}")
     private String apiUrl;
 
+    @Autowired
+    private SysCarInfoService sysCarInfoService;
+
+    @Autowired
+    private SysCarUserInfoService sysCarUserInfoService;
+
     @Override
     public HttpResult<List<QueryVehicProductsResponse.ProductDtoListDTO>> queryVehicleProducts(ZjVehicleProductsQueryVo zjVehicleProductsQueryVo) {
         // 1 通过 协议id获取配置实体
@@ -299,8 +312,8 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
         // 车牌号
         String licensePlate = insOrders.getLicenseno();
         // 被保人信息
-        JSONObject ownerInfo = insOrders.getInsureinfo();
-        CustomerInfoVo customerInfoVo = ownerInfo.toJavaObject(CustomerInfoVo.class);
+        SysCarUserInfo customerInfoVo = insOrders.getInsureinfo();
+//        CustomerInfoVo customerInfoVo = ownerInfo.toJavaObject(CustomerInfoVo.class);
         String busNo;
         BusType busType;
         String identifyNo = customerInfoVo.getIdentifyNumber();
@@ -569,6 +582,7 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
                 Double.parseDouble(carShipTax.getLateFee()));
         List<TaxArrears> taxArrearsList = Collections.singletonList(taxArrears);
         insAreaCompany.setTaxArrears(JSON.parseArray(JSON.toJSONString(taxArrearsList)));
+
         insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
         quoteRespVo.setCompanyId(orderNo);
         //添加调用费用匹配功能

+ 215 - 156
src/main/java/com/ydtech/modules/xxl/handler/SyncCarInfoHandler.java

@@ -1,7 +1,9 @@
 package com.ydtech.modules.xxl.handler;
 
+import cn.hutool.core.util.IdcardUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import com.ydtech.modules.admin.model.po.SysCarInfo;
 import com.ydtech.modules.admin.model.po.SysCarUserInfo;
@@ -10,17 +12,22 @@ import com.ydtech.modules.admin.service.SysCarUserInfoService;
 import com.ydtech.modules.ins.model.vo.KindInfoVo;
 import com.ydtech.modules.ins.model.vo.RiskInfoVo;
 import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.InsOrdersOld;
 import com.ydtech.modules.order.entity.po.InsOrdersKind;
 import com.ydtech.modules.order.entity.po.InsOrdersRisk;
-import com.ydtech.modules.order.service.InsOrdersKindService;
-import com.ydtech.modules.order.service.InsOrdersRiskService;
-import com.ydtech.modules.order.service.InsOrdersService;
+import com.ydtech.modules.order.entity.po.InsOrdersTax;
+import com.ydtech.modules.order.service.*;
+import com.ydtech.utils.IDCardUtils;
 import com.ydtech.utils.idgen.IdGenerate;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 
@@ -34,172 +41,224 @@ public class SyncCarInfoHandler {
 
     @Autowired
     private InsOrdersService insOrdersService;
-
     @Autowired
     private SysCarUserInfoService sysCarUserInfoService;
-
     @Autowired
     private SysCarInfoService sysCarInfoService;
-
     @Autowired
     private InsOrdersRiskService insOrdersRiskService;
     @Autowired
     private InsOrdersKindService insOrdersKindService;
+    @Autowired
+    private InsOrdersOldService insOrdersOldService;
+    @Autowired
+    private InsOrdersTaxService insOrdersTaxService;
+
+
+    public static String validateAndFormatDate(String inputDateStr) {
+        try {
+            // 尝试解析日期
+            SimpleDateFormat sdfInput = new SimpleDateFormat("yyyy-MM-dd");
+            sdfInput.setLenient(false); // 不宽松解析
+            Date inputDate = sdfInput.parse(inputDateStr);
+
+            // 格式化为所需的日期格式
+            SimpleDateFormat sdfOutput = new SimpleDateFormat("yyyy-MM-dd");
+            return sdfOutput.format(inputDate);
+        } catch (Exception e) {
+            return null; // 返回空字符串
+        }
+    }
+
+
+    public static InsOrdersTax validateAndFormatTaxDate(JSONObject insOrdersTaxJson) {
+        try {
+            InsOrdersTax insOrdersTax = insOrdersTaxJson.toJavaObject(InsOrdersTax.class);
+            return insOrdersTax;
+        } catch (Exception e) {
+            return null; // 返回空字符串
+        }
+    }
 
     //同步用户信息
     @XxlJob("SyncCarInfoHandler")
     public void SyncCarInfoHandler() {
+        int current = 1;
+        //全局存储 用户信息
+        List<SysCarUserInfo> globalSysCarUserInfos = new ArrayList<>();
+        while(true) {
+            Page<InsOrdersOld> page = insOrdersOldService.page(new Page<>(current, 1000));
+            if (page.getRecords().size() > 0) {
+                List<InsOrdersOld> list = page.getRecords();
+                List<InsOrders> insOrdersList = new ArrayList<>();
+                //需要保存的车主用户数据
+                List<SysCarUserInfo> sysCarUserInfos = new ArrayList<>();
+                List<SysCarInfo> sysCarInfos = new ArrayList<>();
+                List<InsOrdersRisk> insOrdersRisks = new ArrayList<>();
+                List<InsOrdersKind> insOrdersKinds = new ArrayList<>();
+                List<InsOrdersTax> insOrdersTaxes = new ArrayList<>();
+                list.forEach(insOrdersOld -> {
+                    InsOrders insOrders = new InsOrders();
+                    BeanUtils.copyProperties(insOrdersOld, insOrders);
+                    JSONObject ownerInfo = insOrdersOld.getOwnerinfo();
+                    JSONObject applyinfo = insOrdersOld.getApplyinfo();
+                    JSONObject insureInfo = insOrdersOld.getInsureinfo();
+                    //车主信息是否存在
+                    if (globalSysCarUserInfos.stream().filter(x -> x.getIdentifyNumber().equals(ownerInfo.getString("identifyNumber"))).count() > 0) {
+                        List<SysCarUserInfo> identifyNumber = globalSysCarUserInfos.stream().filter(x -> x.getIdentifyNumber().equals(ownerInfo.getString("identifyNumber"))).collect(Collectors.toList());
+                        System.out.printf("identifyNumber" + identifyNumber);
+                        String id = identifyNumber.get(0).getId();
+                        insOrders.setOwnerId(id);
+                        insOrders.setInsureId(id);
+                        insOrders.setApplyId(id);
+                    } else {
+                        SysCarUserInfo sysCarUserInfo1 = ownerInfo.toJavaObject(SysCarUserInfo.class);
+                        sysCarUserInfo1.setId(IdGenerate.nextId());
+                        sysCarUserInfos.add(sysCarUserInfo1);
+                        globalSysCarUserInfos.add(sysCarUserInfo1);
+                        sysCarUserInfo1.setIdentifyValidDate(validateAndFormatDate(sysCarUserInfo1.getIdentifyValidDate()));
+                        sysCarUserInfo1.setIdentifyValidEndDate(validateAndFormatDate(sysCarUserInfo1.getIdentifyValidEndDate()));
+                        sysCarUserInfo1.setGender(String.valueOf(IdcardUtil.getGenderByIdCard(sysCarUserInfo1.getIdentifyNumber())));
+                        sysCarUserInfo1.setAge(String.valueOf(IdcardUtil.getAgeByIdCard(sysCarUserInfo1.getIdentifyNumber())));
+                        insOrders.setOwnerId(sysCarUserInfo1.getId());
+                        insOrders.setInsureId(sysCarUserInfo1.getId());
+                        insOrders.setApplyId(sysCarUserInfo1.getId());
+                    }
+                    //投保人是否同车主
+                    if (!applyinfo.getString("identifyNumber").equals(ownerInfo.getString("identifyNumber"))) {
+                        //查看全局 用户信息是否存在
+                        long count = globalSysCarUserInfos.stream().filter(x -> x.getIdentifyNumber().equals(applyinfo.getString("identifyNumber"))).count();
+                        if(count > 0) {
+                            List<SysCarUserInfo> identifyNumber = globalSysCarUserInfos.stream().filter(x -> x.getIdentifyNumber().equals(applyinfo.getString("identifyNumber"))).collect(Collectors.toList());
+                            System.out.printf("identifyNumber" + identifyNumber);
+                            insOrders.setApplyId(identifyNumber.get(0).getId());
+                        }else {
+                            SysCarUserInfo sysCarUserInfo = applyinfo.toJavaObject(SysCarUserInfo.class);
+                            sysCarUserInfo.setIdentifyValidDate(validateAndFormatDate(sysCarUserInfo.getIdentifyValidDate()));
+                            sysCarUserInfo.setIdentifyValidEndDate(validateAndFormatDate(sysCarUserInfo.getIdentifyValidEndDate()));
+                            sysCarUserInfo.setGender(String.valueOf(IdcardUtil.getGenderByIdCard(sysCarUserInfo.getIdentifyNumber())));
+                            sysCarUserInfo.setAge(String.valueOf(IdcardUtil.getAgeByIdCard(sysCarUserInfo.getIdentifyNumber())));
+                            sysCarUserInfo.setId(IdGenerate.nextId());
+                            sysCarUserInfos.add(sysCarUserInfo);
+                            globalSysCarUserInfos.add(sysCarUserInfo);
+                            insOrders.setApplyId(sysCarUserInfo.getId());
+                        }
+                    }
+                    //被保人是否同车主
+                    if (!applyinfo.getString("identifyNumber").equals(insureInfo.getString("identifyNumber")) &&
+                            !ownerInfo.getString("identifyNumber").equals(insureInfo.getString("identifyNumber"))) {
+
+                        //查看全局 用户信息是否存在
+                        long count = globalSysCarUserInfos.stream().filter(x -> x.getIdentifyNumber().equals(insureInfo.getString("identifyNumber"))).count();
+                        if(count > 0) {
+                            List<SysCarUserInfo> identifyNumber = globalSysCarUserInfos.stream().filter(x -> x.getIdentifyNumber().equals(insureInfo.getString("identifyNumber"))).collect(Collectors.toList());
+                            System.out.printf("identifyNumber" + identifyNumber);
+                            insOrders.setInsureId(identifyNumber.get(0).getId());
+                        }else {
+                            SysCarUserInfo sysCarUserInfo = insureInfo.toJavaObject(SysCarUserInfo.class);
+                            sysCarUserInfo.setIdentifyValidDate(validateAndFormatDate(sysCarUserInfo.getIdentifyValidDate()));
+                            sysCarUserInfo.setIdentifyValidEndDate(validateAndFormatDate(sysCarUserInfo.getIdentifyValidEndDate()));
+                            sysCarUserInfo.setGender(String.valueOf(IdcardUtil.getGenderByIdCard(sysCarUserInfo.getIdentifyNumber())));
+                            sysCarUserInfo.setAge(String.valueOf(IdcardUtil.getAgeByIdCard(sysCarUserInfo.getIdentifyNumber())));
+                            sysCarUserInfo.setId(IdGenerate.nextId());
+                            sysCarUserInfos.add(sysCarUserInfo);
+                            globalSysCarUserInfos.add(sysCarUserInfo);
+                            insOrders.setInsureId(sysCarUserInfo.getId());
+                        }
+                    }else if(applyinfo.getString("identifyNumber").equals(insureInfo.getString("identifyNumber"))){
+                        insOrders.setInsureId(insOrders.getApplyId());
+                    }else if(ownerInfo.getString("identifyNumber").equals(insureInfo.getString("identifyNumber"))){
+                        insOrders.setInsureId(insOrders.getOwnerId());
+                    }
+
+                    JSONObject carInfo = insOrdersOld.getCarinfo();
+                    //车辆信息
+                    if (sysCarInfos.stream().filter(x -> x.getLicenseNo().equals(carInfo.getString("licenseNo"))).count() > 0) {
+                        List<SysCarInfo> collect = sysCarInfos.stream().filter(x -> x.getLicenseNo().equals(carInfo.getString("licenseNo"))).collect(Collectors.toList());
+                        System.out.printf("licenseNo" + carInfo.getString("licenseNo"));
+                        String id = collect.get(0).getId();
+                        insOrders.setCarInfoId(id);
+                    } else {
+                        SysCarInfo sysCarInfo = carInfo.toJavaObject(SysCarInfo.class);
+                        sysCarInfo.setRegisterDate(validateAndFormatDate(sysCarInfo.getRegisterDate()));
+                        sysCarInfo.setIssueDate(validateAndFormatDate(sysCarInfo.getIssueDate()));
+                        sysCarInfo.setId(IdGenerate.nextId());
+                        sysCarInfos.add(sysCarInfo);
+                        insOrders.setCarInfoId(sysCarInfo.getId());
+                    }
+
+                    //risk  kind
+                    JSONArray risk = insOrdersOld.getRisk();
+                    JSONArray kind = insOrdersOld.getKing();
+
+                    for (int i = 0; i < risk.size(); i++) {
+                        JSONObject jsonObject = risk.getJSONObject(i);
+                        RiskInfoVo riskInfoVo = jsonObject.toJavaObject(RiskInfoVo.class);
+                        InsOrdersRisk insOrdersRisk = new InsOrdersRisk(riskInfoVo, insOrders.getOrderno());
+                        insOrdersRisks.add(insOrdersRisk);
+                    }
+
+                    for (int i = 0; i < kind.size(); i++) {
+                        JSONObject jsonObject = kind.getJSONObject(i);
+                        KindInfoVo javaObject = jsonObject.toJavaObject(KindInfoVo.class);
+                        InsOrdersKind insOrdersKind = new InsOrdersKind(javaObject, insOrders.getOrderno());
+                        insOrdersKinds.add(insOrdersKind);
+                    }
+
+                    if (insOrdersOld.getVehicleAndVesselTax() != null) {
+                        InsOrdersTax insOrdersTax = validateAndFormatTaxDate(insOrdersOld.getVehicleAndVesselTax());
+                        insOrdersTax.setOrderNo(insOrders.getOrderno());
+//                InsOrdersTax insOrdersTax = insOrdersOld.getVehicleAndVesselTax().toJavaObject(InsOrdersTax.class);
+                        if (!Objects.isNull(insOrdersTax)) {
+                            insOrdersTaxes.add(insOrdersTax);
+                        }
+                    }
+                    insOrdersList.add(insOrders);
+                });
+
+                List<SysCarUserInfo> sysCarUserInfoList = sysCarUserInfos.stream()
+                        .collect(Collectors.toMap(
+                                SysCarUserInfo::getIdentifyNumber, // 使用 licenseNo 作为 key
+                                user -> user, // 直接使用用户信息作为 value
+                                (existing, replacement) -> existing // 若有重复的 licenseNo,则保留第一个出现的用户信息
+                        ))
+                        .values()
+                        .stream()
+                        .collect(Collectors.toList());
+                sysCarUserInfoService.saveBatch(sysCarUserInfoList);
+
+                List<SysCarInfo> sysCarInfoList = sysCarInfos.stream()
+                        .collect(Collectors.toMap(
+                                SysCarInfo::getLicenseNo, // 使用 licenseNo 作为 key
+                                user -> user, // 直接使用用户信息作为 value
+                                (existing, replacement) -> existing // 若有重复的 licenseNo,则保留第一个出现的用户信息
+                        ))
+                        .values()
+                        .stream()
+                        .collect(Collectors.toList());
+
+                sysCarInfoService.saveBatch(sysCarInfoList);
+
+                for (InsOrdersRisk insOrdersRisk : insOrdersRisks) {
+                    insOrdersRisk.setId(IdGenerate.nextId());
+                    insOrdersRisk.setStartDate(validateAndFormatDate(insOrdersRisk.getStartDate()));
+                    insOrdersRisk.setEndDate(validateAndFormatDate(insOrdersRisk.getEndDate()));
+                }
+
+                for (InsOrdersKind insOrdersKind : insOrdersKinds) {
+                    insOrdersKind.setId(IdGenerate.nextId());
+                }
+
+                insOrdersRiskService.saveBatch(insOrdersRisks);
+                insOrdersKindService.saveBatch(insOrdersKinds);
+                insOrdersTaxService.saveBatch(insOrdersTaxes);
+                insOrdersService.saveOrUpdateBatch(insOrdersList);
+                current++;
+            }else{
+                break;
+            }
+        }
 
-//        List<InsOrders> list = insOrdersService.list();
-//        //需要保存的车主用户数据
-//        List<SysCarUserInfo> sysCarUserInfos = new ArrayList<>();
-//        List<SysCarInfo> sysCarInfos = new ArrayList<>();
-//        List<InsOrdersRisk> insOrdersRisks = new ArrayList<>();
-//        List<InsOrdersKind> insOrdersKinds = new ArrayList<>();
-//        list.forEach(insOrders -> {
-//            JSONObject ownerInfo = insOrders.getOwnerinfo();
-//            JSONObject applyinfo = insOrders.getApplyinfo();
-//            JSONObject insureInfo = insOrders.getInsureinfo();
-//            //车主信息是否存在
-//            if(sysCarUserInfos.stream().filter(x->x.getIdentifyNumber().equals(ownerInfo.getString("identifyNumber"))).count() > 0){
-//                List<SysCarUserInfo> identifyNumber = sysCarUserInfos.stream().filter(x -> x.getIdentifyNumber().equals(ownerInfo.getString("identifyNumber"))).collect(Collectors.toList());
-//                String id = identifyNumber.get(0).getId();
-//                insOrders.setOwnerId(id);
-//                insOrders.setInsureId(id);
-//                insOrders.setApplyId(id);
-//            }else {
-//                SysCarUserInfo sysCarUserInfo1 = ownerInfo.toJavaObject(SysCarUserInfo.class);
-//                sysCarUserInfo1.setId(IdGenerate.nextId());
-//                sysCarUserInfos.add(sysCarUserInfo1);
-//                insOrders.setOwnerId(sysCarUserInfo1.getId());
-//                insOrders.setInsureId(sysCarUserInfo1.getId());
-//                insOrders.setApplyId(sysCarUserInfo1.getId());
-//            }
-//            //同车主
-//            if(!applyinfo.getBoolean("owner")){
-//                SysCarUserInfo sysCarUserInfo = applyinfo.toJavaObject(SysCarUserInfo.class);
-//                sysCarUserInfo.setId(IdGenerate.nextId());
-//                sysCarUserInfos.add(sysCarUserInfo);
-//                insOrders.setApplyId(sysCarUserInfo.getId());
-//            }
-//            //同被保人 或 车主
-//            if(!insureInfo.getBoolean("insuranceHolder") && !insureInfo.getBoolean("owner")){
-//                SysCarUserInfo sysCarUserInfo = insureInfo.toJavaObject(SysCarUserInfo.class);
-//                sysCarUserInfo.setId(IdGenerate.nextId());
-//                sysCarUserInfos.add(sysCarUserInfo);
-//                insOrders.setInsureId(sysCarUserInfo.getId());
-//            }
-//
-//            JSONObject carInfo = insOrders.getCarinfo();
-//            //车辆信息
-//            if(sysCarInfos.stream().filter(x->x.getLicenseNo().equals(carInfo.getString("licenseNo"))).count() > 0){
-//                List<SysCarInfo> collect = sysCarInfos.stream().filter(x -> x.getLicenseNo().equals(carInfo.getString("licenseNo"))).collect(Collectors.toList());
-//                String id = collect.get(0).getId();
-//                insOrders.setCarInfoId(id);
-//            }else{
-//                SysCarInfo sysCarInfo = carInfo.toJavaObject(SysCarInfo.class);
-//                sysCarInfo.setId(IdGenerate.nextId());
-//                sysCarInfos.add(sysCarInfo);
-//                insOrders.setCarInfoId(sysCarInfo.getId());
-//            }
-//
-//            //risk  kind
-//            JSONArray risk = insOrders.getRisk();
-//            JSONArray kind = insOrders.getKing();
-//
-//            for(int i=0;i<risk.size();i++){
-//                JSONObject jsonObject = risk.getJSONObject(i);
-//                RiskInfoVo riskInfoVo = jsonObject.toJavaObject(RiskInfoVo.class);
-//                InsOrdersRisk insOrdersRisk = new InsOrdersRisk(riskInfoVo, insOrders.getOrderno());
-//                insOrdersRisks.add(insOrdersRisk);
-//            }
-//
-//            for(int i=0;i<kind.size();i++){
-//                JSONObject jsonObject = kind.getJSONObject(i);
-//                KindInfoVo javaObject = jsonObject.toJavaObject(KindInfoVo.class);
-//                InsOrdersKind insOrdersKind = new InsOrdersKind(javaObject, insOrders.getOrderno());
-//                insOrdersKinds.add(insOrdersKind);
-//            }
-//
-//        });
-//
-//        List<SysCarUserInfo> sysCarUserInfoList = sysCarUserInfos.stream()
-//                .collect(Collectors.toMap(
-//                        SysCarUserInfo::getIdentifyNumber, // 使用 licenseNo 作为 key
-//                        user -> user, // 直接使用用户信息作为 value
-//                        (existing, replacement) -> existing // 若有重复的 licenseNo,则保留第一个出现的用户信息
-//                ))
-//                .values()
-//                .stream()
-//                .collect(Collectors.toList());
-//        sysCarUserInfoService.saveBatch(sysCarUserInfoList);
-//
-//        List<SysCarInfo> sysCarInfoList = sysCarInfos.stream()
-//                .collect(Collectors.toMap(
-//                        SysCarInfo::getLicenseNo, // 使用 licenseNo 作为 key
-//                        user -> user, // 直接使用用户信息作为 value
-//                        (existing, replacement) -> existing // 若有重复的 licenseNo,则保留第一个出现的用户信息
-//                ))
-//                .values()
-//                .stream()
-//                .collect(Collectors.toList());
-//
-//        //转换transfer_flag
-//        sysCarInfoList.forEach(sysCarInfo -> {
-//            if(sysCarInfo.getTransferFlag().equals("true")){
-//                sysCarInfo.setTransferFlag("1");
-//            }else{
-//                sysCarInfo.setTransferFlag("0");
-//            }
-//        });
-//        //转换 no_license_flag
-//        sysCarInfoList.forEach(sysCarInfo -> {
-//            if(sysCarInfo.getNoLicenseFlag().equals("true")){
-//                sysCarInfo.setNoLicenseFlag("1");
-//            }else{
-//                sysCarInfo.setNoLicenseFlag("0");
-//            }
-//        });
-//        //转换 loan_status
-//        sysCarInfoList.forEach(sysCarInfo -> {
-//            if(sysCarInfo.getLoanStatus().equals("true")){
-//                sysCarInfo.setLoanStatus("1");
-//            }else{
-//                sysCarInfo.setLoanStatus("0");
-//            }
-//        });
-//
-//        //转换used_car
-//        sysCarInfoList.forEach(sysCarInfo -> {
-//            if(sysCarInfo.getUsedCar().equals("true")){
-//                sysCarInfo.setUsedCar("1");
-//            }else{
-//                sysCarInfo.setUsedCar("0");
-//            }
-//        });
-//
-//        //转换out_of_insurance
-//        sysCarInfoList.forEach(sysCarInfo -> {
-//            if(sysCarInfo.getOutOfInsurance().equals("true")){
-//                sysCarInfo.setOutOfInsurance("1");
-//            }else{
-//                sysCarInfo.setOutOfInsurance("0");
-//            }
-//        });
-//
-//        sysCarInfoService.saveBatch(sysCarInfoList);
-//
-//        for (InsOrdersRisk insOrdersRisk : insOrdersRisks) {
-//            insOrdersRisk.setId(IdGenerate.nextId());
-//        }
-//
-//        for(InsOrdersKind insOrdersKind : insOrdersKinds){
-//            insOrdersKind.setId(IdGenerate.nextId());
-//        }
-//
-//        insOrdersRiskService.saveBatch(insOrdersRisks);
-//        insOrdersKindService.saveBatch(insOrdersKinds);
-//        insOrdersService.saveOrUpdateBatch(list);
     }
 
 

+ 58 - 73
src/main/java/com/ydtech/modules/xxl/handler/SyncInsAreaCompany.java

@@ -1,7 +1,7 @@
 package com.ydtech.modules.xxl.handler;
 
-import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import com.ydtech.modules.admin.model.po.SysCarInfo;
@@ -9,9 +9,7 @@ import com.ydtech.modules.admin.model.po.SysCarUserInfo;
 import com.ydtech.modules.admin.service.SysCarInfoService;
 import com.ydtech.modules.admin.service.SysCarUserInfoService;
 import com.ydtech.modules.order.entity.*;
-import com.ydtech.modules.order.entity.po.InsOrdersTax;
 import com.ydtech.modules.order.service.*;
-import com.ydtech.modules.xxl.model.InsAreaCompanyOld;
 import com.ydtech.modules.xxl.model.vo.InsAreaCompanyVo;
 import com.ydtech.modules.xxl.service.InsAreaCompanyOldService;
 import com.ydtech.utils.idgen.IdGenerate;
@@ -19,9 +17,12 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 @Component
 public class SyncInsAreaCompany {
@@ -53,79 +54,64 @@ public class SyncInsAreaCompany {
     @Autowired
     private InsAreaCompanyService insAreaCompanyService;
 
-    public void workThread(int current,long count){
-        Page page = new Page<>(current,count);
-        List<InsAreaCompanyVo> insAreaCompanyOldList = insAreaCompanyOldService.queryAll(page);
+    public Runnable workThread(InsAreaCompanyVo insAreaCompanyOld) throws IOException {
+        try {
+
 //            List<InsAreaCompany> insAreaCompanies = new ArrayList<>();
-        insAreaCompanyOldList.forEach(insAreaCompanyOld -> {
+
             InsAreaCompany insAreaCompany = new InsAreaCompany();
-            if(Objects.isNull(insAreaCompanyOld)){
+            if (Objects.isNull(insAreaCompanyOld)) {
                 System.out.printf("insAreaCompanyOld is null");
             }
-            BeanUtils.copyProperties(insAreaCompanyOld,insAreaCompany);
+            BeanUtils.copyProperties(insAreaCompanyOld, insAreaCompany);
             //1 处理车主信息
 //                sysCarInfoService.getCarInfoByFrameNo(insAreaCompanyOld.getFrameNo());
             SysCarInfo sysCarInfo = sysCarInfoService.getById(insAreaCompanyOld.getCarInfoId());
             InsAreaCompanyCarInfo carInfo = new InsAreaCompanyCarInfo();
-            if(Objects.isNull(sysCarInfo)){
-                System.out.printf("sysCarInfo is null");
-            }
-            BeanUtils.copyProperties(sysCarInfo,carInfo);
+            BeanUtils.copyProperties(sysCarInfo, carInfo);
             insAreaCompanyCarInfoService.saveOrUpdate(carInfo);
             insAreaCompany.setCarInfoId(carInfo.getId());
             insAreaCompany.setId(IdGenerate.nextId());
 
             //2 处理车险用户信息
-            //先获取车主信息
-            SysCarUserInfo ownerInfo = sysCarUserInfoService.getById(insAreaCompanyOld.getOwnerId());
-            InsAreaCompanyCarUserInfo ownerUserInfo = new InsAreaCompanyCarUserInfo();
-            if(Objects.isNull(ownerInfo)){
-                System.out.printf("ownerInfo is null");
-            }
-            BeanUtils.copyProperties(ownerInfo,ownerUserInfo);
-            ownerUserInfo.setId(IdGenerate.nextId());
-            insAreaCompanyCarUserInfoService.save(ownerUserInfo);
-            insAreaCompany.setOwnerId(ownerUserInfo.getId());
-
-            //再获取投保人信息
-            if(!insAreaCompanyOld.getApplyId().equals(insAreaCompanyOld.getOwnerId())) {
-                //投保人和车主不是同一个人
-                SysCarUserInfo applyInfo = sysCarUserInfoService.getById(insAreaCompanyOld.getApplyId());
-                InsAreaCompanyCarUserInfo applyUserInfo = new InsAreaCompanyCarUserInfo();
-                if(Objects.isNull(applyInfo)){
-                    System.out.printf("applyInfo is null");
-                    System.out.printf(insAreaCompanyOld.getApplyId()+"\n");
-                    System.out.printf(insAreaCompanyOld.getOrderno()+"\n");
+            List<String> userIds = new ArrayList<>();
+            userIds.add(insAreaCompanyOld.getOwnerId());
+            userIds.add(insAreaCompanyOld.getApplyId());
+            userIds.add(insAreaCompanyOld.getInsureId());
+            List<SysCarUserInfo> userInfoList = sysCarUserInfoService.list(new LambdaQueryWrapper<>(SysCarUserInfo.class).in(SysCarUserInfo::getId, userIds));
+
+            List<InsAreaCompanyCarUserInfo> insAreaCompanyCarUserInfos = new ArrayList<>();
+            userInfoList.forEach(item->{
+                String id = item.getId();
+                boolean isOwner = false,isApply = false,isInsure = false;
+                if(id.equals(insAreaCompanyOld.getOwnerId())){
+                    isOwner = true;
                 }
-                BeanUtils.copyProperties(applyInfo,applyUserInfo);
-                applyUserInfo.setId(IdGenerate.nextId());
-                insAreaCompanyCarUserInfoService.saveOrUpdate(applyUserInfo);
-            }else{
-                insAreaCompany.setApplyId(ownerUserInfo.getId());
-            }
-            //再获取被保人信息
-            if(!insAreaCompanyOld.getInsureId().equals(insAreaCompanyOld.getOwnerId()) && !insAreaCompanyOld.getInsureId().equals(insAreaCompanyOld.getApplyId())){
-                //被保人和车主、投保人都不是同一个人
-                SysCarUserInfo insureInfo = sysCarUserInfoService.getById(insAreaCompanyOld.getInsureId());
-                InsAreaCompanyCarUserInfo insureUserInfo = new InsAreaCompanyCarUserInfo();
-                if(Objects.isNull(insureInfo)){
-                    System.out.printf("insureInfo is null");
+                if(id.equals(insAreaCompanyOld.getApplyId())){
+                    isApply = true;
                 }
-                BeanUtils.copyProperties(insureInfo,insureUserInfo);
-                insureUserInfo.setId(IdGenerate.nextId());
-                insAreaCompanyCarUserInfoService.saveOrUpdate(insureUserInfo);
-                insAreaCompany.setInsureId(insureUserInfo.getId());
-            }else{
-                if(insAreaCompanyOld.getInsureId().equals(insAreaCompanyOld.getOwnerId())){
-                    insAreaCompany.setInsureId(ownerUserInfo.getId());
-                }else{
-                    insAreaCompany.setInsureId(insAreaCompany.getApplyId());
+                if(id.equals(insAreaCompanyOld.getInsureId())){
+                    isInsure = true;
                 }
-            }
+                InsAreaCompanyCarUserInfo userInfo = new InsAreaCompanyCarUserInfo();
+                BeanUtils.copyProperties(item, userInfo);
+                userInfo.setId(IdGenerate.nextId());
+                if(isOwner){
+                    insAreaCompany.setOwnerId(userInfo.getId());
+                }
+                if(isApply){
+                    insAreaCompany.setApplyId(userInfo.getId());
+                }
+                if(isInsure){
+                    insAreaCompany.setInsureId(userInfo.getId());
+                }
+                insAreaCompanyCarUserInfos.add(userInfo);
+            });
+            insAreaCompanyCarUserInfoService.saveOrUpdateBatch(insAreaCompanyCarUserInfos);
 
             //3 处理 risk
             List<InsAreaCompanyRisk> insAreaCompanyRisks = new ArrayList<>();
-            if(insAreaCompanyOld.getRiskinfo() != null) {
+            if (insAreaCompanyOld.getRiskinfo() != null) {
                 insAreaCompanyOld.getRiskinfo().forEach(riskObj -> {
                     InsAreaCompanyRisk insAreaCompanyRisk = new InsAreaCompanyRisk();
                     JSONObject risk = (JSONObject) riskObj;
@@ -153,7 +139,7 @@ public class SyncInsAreaCompany {
             }
             //5 处理 task
             List<InsAreaCompanyTaxArrears> insAreaCompanyTaxArrears = new ArrayList<>();
-            if(insAreaCompanyOld.getTaxArrears() != null) {
+            if (insAreaCompanyOld.getTaxArrears() != null) {
                 insAreaCompanyOld.getTaxArrears().forEach(taskObj -> {
                     InsAreaCompanyTaxArrears insAreaCompanyTaxArrear = new InsAreaCompanyTaxArrears();
                     JSONObject task = (JSONObject) taskObj;
@@ -165,24 +151,23 @@ public class SyncInsAreaCompany {
                 insAreaCompanyTaxArrearsService.saveBatch(insAreaCompanyTaxArrears);
             }
             insAreaCompanyService.saveOrUpdate(insAreaCompany);
-        });
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return null;
     }
 
     @XxlJob("SyncInsAreaCompany")
-    public void SyncInsAreaCompany() {
-
+    public void SyncInsAreaCompany() throws IOException, InterruptedException {
         long count = insAreaCompanyOldService.count();
-        count = count/32;
-
-        long finalCount = count;
-        for(int i=1;i<=32;i++) {
-            int finalI = i;
-            new Thread(new Runnable() {
-                public void run() {
-                    workThread(finalI, finalCount);
-                }
-            }).start();
-        }
-
+        //查出全部数据
+        List<InsAreaCompanyVo> list = insAreaCompanyOldService.queryAll(new Page(1,count));
+        list.forEach(item->{
+            try {
+                workThread(item);
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
+        });
     }
 }

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

@@ -163,14 +163,14 @@
     <select id="getOrderAndAreaCompany" parameterType="java.lang.String" resultMap="OrderResultMap">
         select o.orderno,
                o.quoteno,
-               o.carinfo,
+               o.car_info_id,
                o.userid,
                o.username,
                o.deptid,
                o.deptname,
-               o.ownerinfo,
-               o.applyinfo,
-               o.insureinfo,
+               o.owner_id,
+               o.apply_id,
+               o.insure_id,
                o.agreeid,
                o.productid,
                o.product,
@@ -191,8 +191,6 @@
                iac.jqpolicyno,
                iac.syapplyno,
                iac.sypolicyno,
-               iac.riskinfo,
-               iac.kindinfo,
                iac.jqpremium,
                iac.sypremium,
                iac.jypremium,
@@ -211,7 +209,6 @@
                iac.createtime,
                iac.payment_link,
                iac.accident_info,
-               iac.tax_arrears,
                iac.cross_insurance
         from ins_orders as o
                  join ins_area_company iac on o.orderno = iac.orderno