785834757 2 ani în urmă
părinte
comite
6391e904c2

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

@@ -8,10 +8,10 @@ public interface InsOrdersCarInfoService extends IService<InsOrdersCarInfo> {
 
     /**
      * 是否存在车辆信息
-     * @param idCard 身份证
+     * @param frameNo 车架
      * @return
      */
-    InsOrdersCarInfo isExist(String idCard);
+    InsOrdersCarInfo isExist(String frameNo);
 
     InsOrdersCarInfo getCarInfoByFrameNo(String frameNo);
 

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

@@ -16,12 +16,12 @@ public class InsOrdersCarInfoServiceImpl extends ServiceImpl<InsOrdersCarInfoMap
         implements InsOrdersCarInfoService {
 
     /**
-     * 是否存在车主用户信息
-     * @param licenseNo 身份证号
+     * 是否存在车信息
+     * @param frameNo 车架好
      * @return
      */
-    public InsOrdersCarInfo isExist(String licenseNo){
-        LambdaQueryWrapper<InsOrdersCarInfo> eq = new LambdaQueryWrapper<InsOrdersCarInfo>().eq(InsOrdersCarInfo::getLicenseNo, licenseNo);
+    public InsOrdersCarInfo isExist(String frameNo){
+        LambdaQueryWrapper<InsOrdersCarInfo> eq = new LambdaQueryWrapper<InsOrdersCarInfo>().eq(InsOrdersCarInfo::getFrameNo, frameNo);
         List<InsOrdersCarInfo> insOrdersCarInfo = baseMapper.selectList(eq);
         if(insOrdersCarInfo.size() > 0)
             return insOrdersCarInfo.get(0);

+ 102 - 163
src/main/java/com/ydtech/modules/xxl/handler/SyncCarInfoHandler.java

@@ -3,6 +3,7 @@ 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.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import com.ydtech.modules.order.entity.po.InsOrdersCarInfo;
@@ -31,10 +32,10 @@ import java.util.stream.Collectors;
 
 
 /**
-*@author: tz
-*@description: 订单数据中的车辆信息 同步 sys_car_info表
-*@create: 2024年3月7日15:13:57
-*/
+ * @author: tz
+ * @description: 订单数据中的车辆信息 同步 sys_car_info表
+ * @create: 2024年3月7日15:13:57
+ */
 @Component
 public class SyncCarInfoHandler {
 
@@ -65,7 +66,8 @@ public class SyncCarInfoHandler {
             SimpleDateFormat sdfOutput = new SimpleDateFormat("yyyy-MM-dd");
             return sdfOutput.format(inputDate);
         } catch (Exception e) {
-            return null; // 返回空字符串
+            SimpleDateFormat sdfOutput = new SimpleDateFormat("yyyy-MM-dd");
+            return sdfOutput.format(new Date());
         }
     }
 
@@ -82,13 +84,11 @@ public class SyncCarInfoHandler {
     //同步用户信息
     @XxlJob("SyncCarInfoHandler")
     public void SyncCarInfoHandler() {
-        int current = 1;
-        //全局存储 用户信息
-        List<InsOrdersCarUserInfo> globalInsOrdersCarUserInfos = new ArrayList<>();
-        while(true) {
-            Page<InsOrdersOld> page = insOrdersOldService.page(new Page<>(current, 1000));
-            if (page.getRecords().size() > 0) {
-                List<InsOrdersOld> list = page.getRecords();
+        try {
+            //全局存储 用户信息
+            List<InsOrdersCarUserInfo> globalInsOrdersCarUserInfos = new ArrayList<>();
+            List<InsOrdersOld> page = insOrdersOldService.list();
+            page.forEach(item -> {
                 List<InsOrders> insOrdersList = new ArrayList<>();
                 //需要保存的车主用户数据
                 List<InsOrdersCarUserInfo> insOrdersCarUserInfos = new ArrayList<>();
@@ -96,169 +96,108 @@ public class SyncCarInfoHandler {
                 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 (globalInsOrdersCarUserInfos.stream().filter(x -> x.getIdentifyNumber().equals(ownerInfo.getString("identifyNumber"))).count() > 0) {
-                        List<InsOrdersCarUserInfo> identifyNumber = globalInsOrdersCarUserInfos.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 {
-                        InsOrdersCarUserInfo insOrdersCarUserInfo1 = ownerInfo.toJavaObject(InsOrdersCarUserInfo.class);
-                        insOrdersCarUserInfo1.setId(IdGenerate.nextId());
-                        insOrdersCarUserInfos.add(insOrdersCarUserInfo1);
-                        globalInsOrdersCarUserInfos.add(insOrdersCarUserInfo1);
-                        insOrdersCarUserInfo1.setIdentifyValidDate(validateAndFormatDate(insOrdersCarUserInfo1.getIdentifyValidDate()));
-                        insOrdersCarUserInfo1.setIdentifyValidEndDate(validateAndFormatDate(insOrdersCarUserInfo1.getIdentifyValidEndDate()));
-                        insOrdersCarUserInfo1.setGender(String.valueOf(IdcardUtil.getGenderByIdCard(insOrdersCarUserInfo1.getIdentifyNumber())));
-                        insOrdersCarUserInfo1.setAge(String.valueOf(IdcardUtil.getAgeByIdCard(insOrdersCarUserInfo1.getIdentifyNumber())));
-                        insOrders.setOwnerId(insOrdersCarUserInfo1.getId());
-                        insOrders.setInsureId(insOrdersCarUserInfo1.getId());
-                        insOrders.setApplyId(insOrdersCarUserInfo1.getId());
-                    }
-                    //投保人是否同车主
-                    if (!applyinfo.getString("identifyNumber").equals(ownerInfo.getString("identifyNumber"))) {
-                        //查看全局 用户信息是否存在
-                        long count = globalInsOrdersCarUserInfos.stream().filter(x -> x.getIdentifyNumber().equals(applyinfo.getString("identifyNumber"))).count();
-                        if(count > 0) {
-                            List<InsOrdersCarUserInfo> identifyNumber = globalInsOrdersCarUserInfos.stream().filter(x -> x.getIdentifyNumber().equals(applyinfo.getString("identifyNumber"))).collect(Collectors.toList());
-                            System.out.printf("identifyNumber" + identifyNumber);
-                            insOrders.setApplyId(identifyNumber.get(0).getId());
-                        }else {
-                            InsOrdersCarUserInfo insOrdersCarUserInfo = applyinfo.toJavaObject(InsOrdersCarUserInfo.class);
-                            insOrdersCarUserInfo.setIdentifyValidDate(validateAndFormatDate(insOrdersCarUserInfo.getIdentifyValidDate()));
-                            insOrdersCarUserInfo.setIdentifyValidEndDate(validateAndFormatDate(insOrdersCarUserInfo.getIdentifyValidEndDate()));
-                            insOrdersCarUserInfo.setGender(String.valueOf(IdcardUtil.getGenderByIdCard(insOrdersCarUserInfo.getIdentifyNumber())));
-                            insOrdersCarUserInfo.setAge(String.valueOf(IdcardUtil.getAgeByIdCard(insOrdersCarUserInfo.getIdentifyNumber())));
-                            insOrdersCarUserInfo.setId(IdGenerate.nextId());
-                            insOrdersCarUserInfos.add(insOrdersCarUserInfo);
-                            globalInsOrdersCarUserInfos.add(insOrdersCarUserInfo);
-                            insOrders.setApplyId(insOrdersCarUserInfo.getId());
-                        }
-                    }
-                    //被保人是否同车主
-                    if (!applyinfo.getString("identifyNumber").equals(insureInfo.getString("identifyNumber")) &&
-                            !ownerInfo.getString("identifyNumber").equals(insureInfo.getString("identifyNumber"))) {
-
-                        //查看全局 用户信息是否存在
-                        long count = globalInsOrdersCarUserInfos.stream().filter(x -> x.getIdentifyNumber().equals(insureInfo.getString("identifyNumber"))).count();
-                        if(count > 0) {
-                            List<InsOrdersCarUserInfo> identifyNumber = globalInsOrdersCarUserInfos.stream().filter(x -> x.getIdentifyNumber().equals(insureInfo.getString("identifyNumber"))).collect(Collectors.toList());
-                            System.out.printf("identifyNumber" + identifyNumber);
-                            insOrders.setInsureId(identifyNumber.get(0).getId());
-                        }else {
-                            InsOrdersCarUserInfo insOrdersCarUserInfo = insureInfo.toJavaObject(InsOrdersCarUserInfo.class);
-                            insOrdersCarUserInfo.setIdentifyValidDate(validateAndFormatDate(insOrdersCarUserInfo.getIdentifyValidDate()));
-                            insOrdersCarUserInfo.setIdentifyValidEndDate(validateAndFormatDate(insOrdersCarUserInfo.getIdentifyValidEndDate()));
-                            insOrdersCarUserInfo.setGender(String.valueOf(IdcardUtil.getGenderByIdCard(insOrdersCarUserInfo.getIdentifyNumber())));
-                            insOrdersCarUserInfo.setAge(String.valueOf(IdcardUtil.getAgeByIdCard(insOrdersCarUserInfo.getIdentifyNumber())));
-                            insOrdersCarUserInfo.setId(IdGenerate.nextId());
-                            insOrdersCarUserInfos.add(insOrdersCarUserInfo);
-                            globalInsOrdersCarUserInfos.add(insOrdersCarUserInfo);
-                            insOrders.setInsureId(insOrdersCarUserInfo.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 (insOrdersCarInfos.stream().filter(x -> x.getLicenseNo().equals(carInfo.getString("licenseNo"))).count() > 0) {
-                        List<InsOrdersCarInfo> collect = insOrdersCarInfos.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 {
-                        InsOrdersCarInfo insOrdersCarInfo = carInfo.toJavaObject(InsOrdersCarInfo.class);
-                        insOrdersCarInfo.setRegisterDate(validateAndFormatDate(insOrdersCarInfo.getRegisterDate()));
-                        insOrdersCarInfo.setIssueDate(validateAndFormatDate(insOrdersCarInfo.getIssueDate()));
-                        insOrdersCarInfo.setId(IdGenerate.nextId());
-                        insOrdersCarInfos.add(insOrdersCarInfo);
-                        insOrders.setCarInfoId(insOrdersCarInfo.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<InsOrdersCarUserInfo> insOrdersCarUserInfoList = insOrdersCarUserInfos.stream()
-                        .collect(Collectors.toMap(
-                                InsOrdersCarUserInfo::getIdentifyNumber, // 使用 licenseNo 作为 key
-                                user -> user, // 直接使用用户信息作为 value
-                                (existing, replacement) -> existing // 若有重复的 licenseNo,则保留第一个出现的用户信息
-                        ))
-                        .values()
-                        .stream()
-                        .collect(Collectors.toList());
-                insOrdersCarUserInfoService.saveBatch(insOrdersCarUserInfoList);
-
-                List<InsOrdersCarInfo> insOrdersCarInfoList = insOrdersCarInfos.stream()
-                        .collect(Collectors.toMap(
-                                InsOrdersCarInfo::getLicenseNo, // 使用 licenseNo 作为 key
-                                user -> user, // 直接使用用户信息作为 value
-                                (existing, replacement) -> existing // 若有重复的 licenseNo,则保留第一个出现的用户信息
-                        ))
-                        .values()
-                        .stream()
-                        .collect(Collectors.toList());
-
-                insOrdersCarInfoService.saveBatch(insOrdersCarInfoList);
+                InsOrders insOrders = new InsOrders();
+                BeanUtils.copyProperties(item, insOrders);
+                JSONObject ownerInfo = item.getOwnerinfo();
+                JSONObject applyinfo = item.getApplyinfo();
+                JSONObject insureInfo = item.getInsureinfo();
+                JSONObject carInfo = item.getCarinfo();
+                JSONArray risk = item.getRisk();
+                JSONArray kind = item.getKing();
+                JSONObject tax = item.getVehicleAndVesselTax();
+                //车辆信息
+                InsOrdersCarInfo insOrdersCarInfo = insOrdersCarInfoService.getCarInfoByFrameNo(carInfo.getString("frameNo"));
+                if (insOrdersCarInfo == null) {
+                    //新增
+                    insOrdersCarInfo = JSONObject.parseObject(carInfo.toJSONString(), InsOrdersCarInfo.class);
+                    insOrdersCarInfo.setId(IdGenerate.nextId());
+                    insOrdersCarInfo.setRegisterDate(validateAndFormatDate(insOrdersCarInfo.getRegisterDate()));
+                    insOrdersCarInfo.setIssueDate(validateAndFormatDate(insOrdersCarInfo.getIssueDate()));
+                    insOrdersCarInfoService.save(insOrdersCarInfo);
+                }
+                insOrders.setCarInfoId(insOrdersCarInfo.getId());
+
+                //车主信息
+                InsOrdersCarUserInfo owner = insOrdersCarUserInfoService.getOne(new LambdaQueryWrapper<InsOrdersCarUserInfo>().eq(InsOrdersCarUserInfo::getIdentifyNumber, ownerInfo.getString("identifyNumber")));
+                if (owner == null) {
+                    owner = JSONObject.parseObject(ownerInfo.toJSONString(), InsOrdersCarUserInfo.class);
+                    owner.setId(IdGenerate.nextId());
+                    owner.setIdentifyValidDate(validateAndFormatDate(owner.getIdentifyValidDate()));
+                    owner.setIdentifyValidEndDate(validateAndFormatDate(owner.getIdentifyValidEndDate()));
+                    owner.setGender(String.valueOf(IdcardUtil.getGenderByIdCard(owner.getIdentifyNumber()) == 1?"男":"女"));
+                    owner.setAge(String.valueOf(IdcardUtil.getAgeByIdCard(owner.getIdentifyNumber())));
+                    insOrdersCarUserInfoService.save(owner);
+                }
+                insOrders.setOwnerId(owner.getId());
+
+                //投保人信息
+                InsOrdersCarUserInfo apply = insOrdersCarUserInfoService.getOne(new LambdaQueryWrapper<InsOrdersCarUserInfo>().eq(InsOrdersCarUserInfo::getIdentifyNumber, applyinfo.getString("identifyNumber")));
+                if (apply == null) {
+                    apply = JSONObject.parseObject(applyinfo.toJSONString(), InsOrdersCarUserInfo.class);
+                    apply.setId(IdGenerate.nextId());
+                    apply.setIdentifyValidDate(validateAndFormatDate(apply.getIdentifyValidDate()));
+                    apply.setIdentifyValidEndDate(validateAndFormatDate(apply.getIdentifyValidEndDate()));
+                    apply.setGender(String.valueOf(IdcardUtil.getGenderByIdCard(apply.getIdentifyNumber()) == 1?"男":"女"));
+                    apply.setAge(String.valueOf(IdcardUtil.getAgeByIdCard(apply.getIdentifyNumber())));
+                    insOrdersCarUserInfoService.save(apply);
+                }
+                insOrders.setApplyId(apply.getId());
+
+                //被保人信息
+                InsOrdersCarUserInfo insure = insOrdersCarUserInfoService.getOne(new LambdaQueryWrapper<InsOrdersCarUserInfo>().eq(InsOrdersCarUserInfo::getIdentifyNumber, insureInfo.getString("identifyNumber")));
+                if (insure == null) {
+                    insure = JSONObject.parseObject(insureInfo.toJSONString(), InsOrdersCarUserInfo.class);
+                    insure.setId(IdGenerate.nextId());
+                    insure.setIdentifyValidDate(validateAndFormatDate(insure.getIdentifyValidDate()));
+                    insure.setIdentifyValidEndDate(validateAndFormatDate(insure.getIdentifyValidEndDate()));
+                    insure.setGender(String.valueOf(IdcardUtil.getGenderByIdCard(insure.getIdentifyNumber()) == 1?"男":"女"));
+                    insure.setAge(String.valueOf(IdcardUtil.getAgeByIdCard(insure.getIdentifyNumber())));
+                    insOrdersCarUserInfoService.save(insure);
+                }
+                insOrders.setInsureId(insure.getId());
 
-                for (InsOrdersRisk insOrdersRisk : insOrdersRisks) {
+                //risk
+                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());
                     insOrdersRisk.setId(IdGenerate.nextId());
                     insOrdersRisk.setStartDate(validateAndFormatDate(insOrdersRisk.getStartDate()));
                     insOrdersRisk.setEndDate(validateAndFormatDate(insOrdersRisk.getEndDate()));
+                    insOrdersRisks.add(insOrdersRisk);
                 }
+                insOrdersRiskService.saveBatch(insOrdersRisks);
 
-                for (InsOrdersKind insOrdersKind : insOrdersKinds) {
+                //kind
+                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());
                     insOrdersKind.setId(IdGenerate.nextId());
+                    insOrdersKinds.add(insOrdersKind);
                 }
-
-                insOrdersRiskService.saveBatch(insOrdersRisks);
                 insOrdersKindService.saveBatch(insOrdersKinds);
+
+                //tax
+                if (item.getVehicleAndVesselTax() != null) {
+                    InsOrdersTax insOrdersTax = validateAndFormatTaxDate(item.getVehicleAndVesselTax());
+                    insOrdersTax.setOrderNo(insOrders.getOrderno());
+//                InsOrdersTax insOrdersTax = insOrdersOld.getVehicleAndVesselTax().toJavaObject(InsOrdersTax.class);
+                    if (!Objects.isNull(insOrdersTax)) {
+                        insOrdersTaxes.add(insOrdersTax);
+                    }
+                }
                 insOrdersTaxService.saveBatch(insOrdersTaxes);
-                insOrdersService.saveOrUpdateBatch(insOrdersList);
-                current++;
-            }else{
-                break;
-            }
-        }
 
-    }
 
+                insOrdersService.save(insOrders);
+            });
+        }catch(Exception e){
+            System.out.printf("出现异常");
+            System.out.printf(e.getMessage());
+            System.out.printf(e.getStackTrace().toString());
+        }
+    }
 
 }