yaozhixue 1 year ago
parent
commit
d5470f8202

+ 23 - 0
src/main/java/com/zfire/jiasm/syncdata/request/ZJInfoBX.java

@@ -0,0 +1,23 @@
+package com.zfire.jiasm.syncdata.request;
+
+import com.zfire.jiasm.syncdata.plus.entity.WebsitWorker;
+import com.zfire.jiasm.syncdata.plus.entity.WorkerCert;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author yaozx
+ * @version 1.0
+ * @description 介绍
+ * @date 2023-08-28
+ */
+@Data
+public class ZJInfoBX {
+
+    @ApiModelProperty(value = "师傅保险信息")
+    private WebsitWorker websitWorker;
+
+    @ApiModelProperty(value = "师傅证件")
+    private ZJInfo zjInfo;
+
+}

+ 125 - 5
src/main/java/com/zfire/jiasm/syncdata/service/impl/GLPPWXGQueryAddServiceImpl.java

@@ -12,6 +12,7 @@ import com.zfire.jiasm.syncdata.plus.entity.*;
 import com.zfire.jiasm.syncdata.plus.service.*;
 import com.zfire.jiasm.syncdata.request.SignSplb;
 import com.zfire.jiasm.syncdata.request.ZJInfo;
+import com.zfire.jiasm.syncdata.request.ZJInfoBX;
 import com.zfire.jiasm.syncdata.request.ZJInfoC;
 import com.zfire.jiasm.syncdata.response.WangdianWxgVos;
 import com.zfire.jiasm.syncdata.response.WxgQueryInfo;
@@ -77,6 +78,10 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
     ItfTblWangdianPositionDownloadService itfTblWangdianPositionDownloadService;
     @Resource
     PublicService publicService;
+    @Resource
+    WebsitWorkerService websitWorkerService;
+    @Resource
+    WebsitOrderSignService websitOrderSignService;
 
 
 
@@ -89,6 +94,8 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
         Map<String,List<Worker>> workerWorkeridMap = new HashMap<>();
         Map<String,List<WorkerCert>> WorkerCertWorkerIdMaps = new HashMap<>();
         List<ItfTblWangdianWxgDownload> wxgDownladRecs = new ArrayList<>();
+        List<WebsitWorker> websitWorkerUp = new ArrayList<>();
+        Map<String,List<WebsitWorker>> websitWorkerWorkerIdMap = new HashMap<>();
 
         // 提取品牌信息
         Brand brand = baseService.getBrand();
@@ -101,6 +108,13 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
         if (CollectionUtils.isNotEmpty(oldWorkerRec)){
             workerIdcardMap = oldWorkerRec.stream().collect(Collectors.groupingBy(Worker::getIdcard));
             workerWorkeridMap = oldWorkerRec.stream().collect(Collectors.groupingBy(Worker::getWorkerId));
+            oldWorkerRec.clear();
+        }
+
+        List<WebsitWorker> wws = websitWorkerService.lambdaQuery().list();
+        if (CollectionUtils.isNotEmpty(wws)){
+            websitWorkerWorkerIdMap = wws.stream().collect(Collectors.groupingBy(WebsitWorker::getWorkerId));
+            wws.clear();
         }
 
         // 提取格力现有的网点师傅数据信息
@@ -112,7 +126,7 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
                         ItfTblWangdianWxgDownload::getWxgmc,
                         ItfTblWangdianWxgDownload::getYddh,
                         ItfTblWangdianWxgDownload::getFlag)
-                .eq(ItfTblWangdianWxgDownload::getSfzen,"441827198312116217")// 测试用
+                .eq(ItfTblWangdianWxgDownload::getSfzen,"141082198206230032")// 测试用
                 .like(ItfTblWangdianWxgDownload::getWdno,"S%").list();
 
         // 提取现有已存在的证件信息的师傅信息(待回传同步的证件不处理)
@@ -120,6 +134,7 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
                 .eq(WorkerCert::getOutSyncStatus,1).list();
         if (CollectionUtils.isNotEmpty(wc)){
             WorkerCertWorkerIdMaps = wc.stream().collect(Collectors.groupingBy(WorkerCert::getWorkerId));
+            wc.clear();
         }
 
 
@@ -160,9 +175,12 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
 
                     log.info("总部获取的工程师证件照信息wvos:{}", JSONObject.toJSONString(wvos));
                     // 同步-新增证件信息
-                    getCertInfo(wvos, addList, workerId, workerWorkeridMap.get(workerId).get(0).getWorkerName(), WorkerCertWorkerIdMaps);
+                    getCertInfo(wvos, addList, workerId, workerWorkeridMap.get(workerId).get(0).getWorkerName(),
+                            WorkerCertWorkerIdMaps, websitWorkerUp,wxg.getWdno(), websitWorkerWorkerIdMap);
                     // 新增或修改(证件)
                     addDataCert(addList);
+                    // 修改保险信息
+                    upWebsitWorker(websitWorkerUp);
                     log.info("工程师证件照信息同步成功-师傅证件信息:{}", wxg.getSfzen());
                 } else {
                     log.info("获取工程师证件照信息失败-师傅证件信息:{}", wxg.getSfzen());
@@ -170,6 +188,7 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
                 }
             } catch (Exception ex) {
                 addDataCert(addList);
+                upWebsitWorker(websitWorkerUp);
                 ex.printStackTrace();
                 log.info("工程师证件照信息同步失败-师傅证件信息:{}", wxg.getSfzen());
             }
@@ -177,6 +196,13 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
 
     }
 
+    private void upWebsitWorker(List<WebsitWorker> websitWorkerUp) {
+        if (websitWorkerUp.size()>0){
+            websitWorkerService.saveOrUpdateBatch(websitWorkerUp);
+            websitWorkerUp.clear();
+        }
+    }
+
     private String checkIsGreeWroker(Map<String, List<Worker>> workerIdcardMap, ItfTblWangdianWxgDownload wxg) {
         String workerId="";
         if (workerIdcardMap.containsKey(wxg.getSfzen())){
@@ -640,7 +666,36 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
         return fileId;
     }
 
-    private void workercertAdd(WangdianWxgVos wvos, List<WorkerCert> addList, String workerId, ZJInfoC zjinfo, String workerName) throws Exception {
+    private void workerBXAdd(ZJInfoBX bx, List<WebsitWorker> websitWorkerUp) throws Exception {
+        ZJInfo zj = new ZJInfo();
+        zj=bx.getZjInfo();
+
+        // 保单号+名称
+        if (zj.getZjbh().contains("/")){
+            List<String> result = Arrays.asList(zj.getZjbh().split("/"));
+            bx.getWebsitWorker().setSafeCompany(result.get(0));
+            bx.getWebsitWorker().setSafeNo(result.get(1));
+        } else {
+            bx.getWebsitWorker().setSafeNo(zj.getZjbh());
+        }
+
+        // 有效期
+        if (StringUtils.isNotEmpty(zj.getZjyxq())){
+            bx.getWebsitWorker().setGmbxyxq(baseService.utcToDateStr(zj.getZjyxq()));
+        }
+
+        // 保险照
+        String id = putCert(zj.getZjlj());
+        if (StringUtils.isNotEmpty(id)){
+            bx.getWebsitWorker().setOutInsureCert(id);
+        }
+        new File(id).delete();
+
+        websitWorkerUp.add(bx.getWebsitWorker());
+    }
+
+    private void workercertAdd(WangdianWxgVos wvos, List<WorkerCert> addList, String workerId,
+                               ZJInfoC zjinfo, String workerName) throws Exception {
         ZJInfo zj = new ZJInfo();
         zj=zjinfo.getZjInfo();
 
@@ -705,10 +760,22 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
     }
 
 
-    private void getCertInfo(WangdianWxgVos wvos, List<WorkerCert> addList, String workerId,String workerName,
-                             Map<String,List<WorkerCert>> WorkerCertWorkerIdMaps) throws Exception {
+    private void getCertInfo(WangdianWxgVos wvos, List<WorkerCert> addList, String workerId,
+                             String workerName, Map<String,List<WorkerCert>> WorkerCertWorkerIdMaps,
+                             List<WebsitWorker> websitWorkerUp,String wdno,
+                             Map<String,List<WebsitWorker>> websitWorkerWorkerIdMap) throws Exception {
         // 同步-新增证件信息
         for (ZJInfo zj: wvos.getZjInfoList()){
+            // 保险证单独处理 只有修改无需新增操作
+            if (zj.getZjmc().trim().equals("保险证")){
+                ZJInfoBX bx = checkBxCertInfo(workerId, websitWorkerWorkerIdMap,zj, wdno);
+                if (bx == null){
+                    continue;
+                }
+                workerBXAdd(bx, websitWorkerUp);
+                // continue; 先测试下
+            }
+
             // 校验证件是否需要新增同步
             ZJInfoC addZj =checkCertInfo(workerId,WorkerCertWorkerIdMaps,zj);
             if (addZj.getZjInfo()!=null){
@@ -717,6 +784,59 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
         }
     }
 
+    // 返回null时不处理
+    private ZJInfoBX checkBxCertInfo(String workerId, Map<String,List<WebsitWorker>> websitWorkerWorkerIdMap,
+                                     ZJInfo zj, String wdno) {
+        ZJInfo resultZjinfo = new ZJInfo();
+        ZJInfoBX zjinfo = new ZJInfoBX();
+        Map<String,List<WebsitOrderSign>> wosWebsitidMap = new HashMap<>();
+        WebsitWorker item = null;
+
+        // 装入总部同步的保险数据
+        zjinfo.setZjInfo(zj);
+
+        // 提取商户售后网点对应的平台售后网点信息 存在一对多的关系
+        List<WebsitOrderSign> wos = websitOrderSignService.lambdaQuery()
+                .eq(WebsitOrderSign::getBrandWebsitId, wdno)
+                .list();
+        // 找不到对应关系时不再处理保险证数据
+        if (CollectionUtils.isEmpty(wos)){
+            return null;
+        }
+        wosWebsitidMap = wos.stream().collect(Collectors.groupingBy(WebsitOrderSign::getWebsitId));
+        wos.clear();
+
+        // 找出师傅所在网点的保险证记录数据
+        for (WebsitWorker i:websitWorkerWorkerIdMap.get(workerId)){
+            if (wosWebsitidMap.containsKey(i.getWebsitId())){
+                MyBeanUtils.copyProperties(i,item);
+                break;
+            }
+        }
+
+        // 无保险记录时也不需要处理,这里不用关心记录的事,网点服务人员下载时已生成了数据
+        if (item == null){
+            return null;
+        }
+
+        // 有保险数据不处理
+        if (StringUtils.isNotEmpty(item.getOutInsureCert())){
+            return null;
+        }
+
+        //取保险记录
+        zjinfo.setWebsitWorker(item);
+
+        if (zj.getZjlj().contains(",")){
+            List<String> result = Arrays.asList(zj.getZjlj().split(","));
+            MyBeanUtils.copyProperties(zj,resultZjinfo);
+            resultZjinfo.setZjlj(result.get(0));
+            zjinfo.setZjInfo(resultZjinfo);
+        }
+
+        return zjinfo;
+    }
+
     private ZJInfoC checkCertInfo(String workerId,Map<String,List<WorkerCert>> WorkerCertWorkerIdMaps,ZJInfo zj) {
         ZJInfo resultZjinfo = new ZJInfo();
         ZJInfoC zjinfo = new ZJInfoC();