yaozhixue 1 سال پیش
والد
کامیت
ea1414bab3

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/service/PublicService.java

@@ -124,7 +124,7 @@ public interface PublicService {
     Boolean checkWebsitSyncFlagT(String orderNo,String tableName,String recordId);
 
     // 获取平台网点师傅信息 平台师傅ID,平台网点编号
-    WebsitWorker getWebsitWorkerByWorkerAndWebsit(String workerId,String websitId);
+    List<WebsitWorker> getWebsitWorkerByWorkerAndWebsit();
 
     // 获取平台商用保险合同 保险类型
     Insure getWebsitWorkerByWorkerAndWebsit(String type);

+ 47 - 9
src/main/java/com/zfire/jiasm/syncdata/service/impl/GLPPWXGQueryAddServiceImpl.java

@@ -24,6 +24,7 @@ import com.zfire.jiasm.syncdata.utils.oss.OSSUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -102,6 +103,7 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
         List<InsureWorkerCommercial> insurecs = new ArrayList<>();
         List<InsureWorkerCommercialFile> insurefiles = new ArrayList<>();
         List<String> insureworkeridandWebsitids = new ArrayList<>();
+        Map<String,List<WebsitWorker>> websitWorderwidwdidMap = new HashMap<>();
 
         // 提取品牌信息
         Brand brand = baseService.getBrand();
@@ -124,10 +126,17 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
             iwcs.stream().forEach(event->{
                 insureworkeridandWebsitids.add(event.getWorkerId()+event.getWebsitId());
             });
-
             iwcs.clear();
         }
 
+
+
+        List<WebsitWorker> wws = publicService.getWebsitWorkerByWorkerAndWebsit();
+        if (CollectionUtils.isNotEmpty(wws)){
+            websitWorderwidwdidMap = wws.stream().collect(Collectors.groupingBy(WebsitWorker::getWorkerId));
+            wws.clear();
+        }
+
         // 提取格力现有的网点师傅数据信息
         wxgDownladRecs =  itfTblWangdianWxgDownloadService.lambdaQuery()
                 .select(ItfTblWangdianWxgDownload::getWxgid,
@@ -187,7 +196,7 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
                     log.info("总部获取的工程师证件照信息wvos:{}", JSONObject.toJSONString(wvos));
                     // 同步-新增证件信息
                     getCertInfo(wvos, addList, workerId, WorkerCertWorkerIdMaps,wxg.getWdno(),workerIdandNames,
-                            workerWorkeridMap,insurecs,insurefiles, insureworkeridandWebsitids);
+                            workerWorkeridMap,insurecs,insurefiles, insureworkeridandWebsitids,websitWorderwidwdidMap);
                     // 新增或修改(证件)
                     addDataCert(addList);
                     // 修改保险信息
@@ -929,12 +938,14 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
                              String wdno, List<String> workerIdandNames,Map<String,List<Worker>> workerWorkeridMap,
                              List<InsureWorkerCommercial> insurecs,
                              List<InsureWorkerCommercialFile> insurefiles,
-                             List<String> insureworkeridandWebsitids) throws ParseException {
+                             List<String> insureworkeridandWebsitids,
+                             Map<String,List<WebsitWorker>> websitWorderwidwdidMap) throws ParseException {
         // 同步-新增证件信息
         for (ZJInfo zj: wvos.getZjInfoList()){
             // 保除证
             if (zj.getZjmc().trim().equals("保险证")){
-                if (produceBXInfo(workerId, wdno, workerWorkeridMap, insurecs, insurefiles, insureworkeridandWebsitids, zj)){
+                if (produceBXInfo(workerId, wdno, workerWorkeridMap, insurecs, insurefiles,
+                        insureworkeridandWebsitids, zj,websitWorderwidwdidMap)){
                     continue;
                 }
             }
@@ -982,7 +993,8 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
      */
     private boolean produceBXInfo(String workerId, String wdno, Map<String, List<Worker>> workerWorkeridMap,
                                   List<InsureWorkerCommercial> insurecs, List<InsureWorkerCommercialFile> insurefiles,
-                                  List<String> insureworkeridandWebsitids, ZJInfo zj) throws ParseException {
+                                  List<String> insureworkeridandWebsitids, ZJInfo zj,
+                                  Map<String, List<WebsitWorker>> websitWorderwidwdidMap) throws ParseException {
         // 提取商户售后网点对应的平台售后网点信息 存在一对多的关系 无对应关系退出不处理
         List<WebsitOrderSign> wos = publicService.shShwdToptshwdByBrandWebsitNo(wdno);
         if (CollectionUtils.isEmpty(wos)){
@@ -995,8 +1007,15 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
             if (insureworkeridandWebsitids.contains(workerId +item.getWebsitId())){
                 continue;
             }
+
+            // 对于在商户网点师傅都为无效的状态时在平台网点师傅表中可能是不存在的 需要排除掉
+            String websitWorkerId = checkWebsitWorker(workerId, websitWorderwidwdidMap, item);
+            if (websitWorkerId == null) {
+                continue;
+            }
+
             // 生成商用保险对像
-            InsureWorkerCommercial a = getInsureWorkerCommercial(workerId, workerWorkeridMap, insurecs, zj, item);
+            InsureWorkerCommercial a = getInsureWorkerCommercial(workerId, workerWorkeridMap, insurecs, zj, item,websitWorkerId);
 
             // 生成附件对像
             getInsureWorkerCommercialFile(insurefiles, zj, a);
@@ -1006,17 +1025,36 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
         return false;
     }
 
+    @Nullable
+    private String checkWebsitWorker(String workerId, Map<String, List<WebsitWorker>> websitWorderwidwdidMap, WebsitOrderSign item) {
+        String websitWorkerId="";
+        if (!websitWorderwidwdidMap.containsKey(workerId)){
+            return null;
+        }
+        // 提取 websitWorkerId
+        for (WebsitWorker w : websitWorderwidwdidMap.get(workerId)){
+            if (w.getWebsitId().equals(item.getWebsitId())){
+                websitWorkerId=w.getWebsitWorkerId();
+                break;
+            }
+        }
+        if (StringUtils.isEmpty(websitWorkerId)){
+            return null;
+        }
+        return websitWorkerId;
+    }
+
     @NotNull
     private InsureWorkerCommercial getInsureWorkerCommercial(String workerId, Map<String, List<Worker>> workerWorkeridMap,
-                                                             List<InsureWorkerCommercial> insurecs, ZJInfo zj, WebsitOrderSign item) throws ParseException {
+                                                             List<InsureWorkerCommercial> insurecs, ZJInfo zj,
+                                                             WebsitOrderSign item, String websitWorkerId) throws ParseException {
         InsureWorkerCommercial a = new InsureWorkerCommercial();
         a.setId(IdWorker.getIdStr());
         a.setWorkerId(workerId);
         a.setWorkerName(workerWorkeridMap.get(workerId).get(0).getWorkerName());
         a.setWorkerMobile(workerWorkeridMap.get(workerId).get(0).getMobile());
         a.setWebsitId(item.getWebsitId());
-        WebsitWorker websitWorker = publicService.getWebsitWorkerByWorkerAndWebsit(workerId, item.getWebsitId());
-        a.setWebsitWorkerId(websitWorker.getWebsitWorkerId());
+        a.setWebsitWorkerId(websitWorkerId);
         a.setIdcard(workerWorkeridMap.get(workerId).get(0).getIdcard());
         if (StringUtils.isNotEmpty(zj.getZjyxq())){
             a.setStartTime(baseService.utcToDateStr(zj.getZjyxq()));

+ 5 - 7
src/main/java/com/zfire/jiasm/syncdata/service/impl/PublicServiceImpl.java

@@ -1426,13 +1426,11 @@ public class PublicServiceImpl implements PublicService {
 
     // 获取平台网点师傅信息
     @Override
-    public WebsitWorker getWebsitWorkerByWorkerAndWebsit(String workerId,String websitId){
-        WebsitWorker ww = websitWorkerService.lambdaQuery()
-                .eq(WebsitWorker::getWorkerId,workerId)
-                .eq(WebsitWorker::getWebsitId,websitId)
-                .last("limit 1")
-                .one();
-        return ww;
+    public List<WebsitWorker> getWebsitWorkerByWorkerAndWebsit(){
+        List<WebsitWorker> wws = websitWorkerService.lambdaQuery()
+                .select(WebsitWorker::getWorkerId,WebsitWorker::getWebsitId,WebsitWorker::getWebsitWorkerId)
+                .list();
+        return wws;
     }
 
     @Override