yaozhixue 1 year ago
parent
commit
274c447cdb

+ 4 - 2
src/main/java/com/zfire/jiasm/syncdata/download/worker/GLPPWXGQueryAdd.java

@@ -42,7 +42,9 @@ public class GLPPWXGQueryAdd {
 
     @Scheduled(fixedDelayString = "${zjzxx}")
     public void process() throws Exception {
-        // 从格力总部同步师傅的证件照 只用来新增 这里只用同步数据,并不生成图片信息
+        // 从格力总部同步师傅的证件照
+        // 只做新增(王总的要求)
+        // 这里只同步证件照数据,不生成平台图片信息
         wxgQueryAddCertInfo();
 
         // 新增 师傅服务类目信息
@@ -60,7 +62,7 @@ public class GLPPWXGQueryAdd {
         }
 
        // 创建目录
-        SimpleDateFormat sdfs = new SimpleDateFormat("yyyyMMd/");
+        SimpleDateFormat sdfs = new SimpleDateFormat("yyyyMM/");
         File file =new File(sdfs.format(new Date()));
         if  (!file .exists()  && !file .isDirectory()){
             file .mkdir();

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

@@ -99,6 +99,9 @@ public interface PublicService {
     // 商户售后网点对应平台售后网点 同步使用 只找对应关系
     List<WebsitOrderSign> SyncshshwdToptshwd();
 
+    // 商户售后网点对应平台售后网点 找对应关系
+    List<WebsitOrderSign> shShwdToptshwdByBrandWebsitNo(String wdno);
+
     SatisfactionList getAppraiseStatus(String pjly);
 
     // 获取安装工单对应的师傅信息
@@ -120,5 +123,11 @@ public interface PublicService {
     Boolean checkWebsitSyncFlag(String orderNo,String tableName,Long recordId);
     Boolean checkWebsitSyncFlagT(String orderNo,String tableName,String recordId);
 
+    // 获取平台网点师傅信息 平台师傅ID,平台网点编号
+    WebsitWorker getWebsitWorkerByWorkerAndWebsit(String workerId,String websitId);
+
+    // 获取平台商用保险合同 保险类型
+    Insure getWebsitWorkerByWorkerAndWebsit(String type);
+
 
 }

+ 97 - 10
src/main/java/com/zfire/jiasm/syncdata/service/impl/GLPPWXGQueryAddServiceImpl.java

@@ -82,7 +82,9 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
     @Resource
     WebsitWorkerService websitWorkerService;
     @Resource
-    WebsitOrderSignService websitOrderSignService;
+    InsureWorkerCommercialService insureWorkerCommercialService;
+    @Resource
+    InsureWorkerCommercialFileService insureWorkerCommercialFileService;
 
 
 
@@ -98,6 +100,8 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
         List<WebsitWorker> websitWorkerUp = new ArrayList<>();
         Map<String,List<WebsitWorker>> websitWorkerWorkerIdMap = new HashMap<>();
         List<String> workerIdandNames = new ArrayList<>();
+        List<InsureWorkerCommercial> insurecs = new ArrayList<>();
+        List<InsureWorkerCommercialFile> insurefiles = new ArrayList<>();
 
         // 提取品牌信息
         Brand brand = baseService.getBrand();
@@ -177,12 +181,14 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
 
                     log.info("总部获取的工程师证件照信息wvos:{}", JSONObject.toJSONString(wvos));
                     // 同步-新增证件信息
-                    getCertInfo(wvos, addList, workerId, workerWorkeridMap.get(workerId).get(0).getWorkerName(),
-                            WorkerCertWorkerIdMaps, websitWorkerUp,wxg.getWdno(), websitWorkerWorkerIdMap,workerIdandNames);
+                    getCertInfo(wvos, addList, workerId, WorkerCertWorkerIdMaps, websitWorkerUp,wxg.getWdno(),
+                            websitWorkerWorkerIdMap,workerIdandNames, workerWorkeridMap,insurecs,insurefiles);
                     // 新增或修改(证件)
                     addDataCert(addList);
                     // 修改保险信息
                     upWebsitWorker(websitWorkerUp);
+                    addBxInfo(insurecs, insurefiles);
+
                     log.info("工程师证件照信息同步成功-师傅证件信息:{}", wxg.getSfzen());
                 } else {
                     log.info("获取工程师证件照信息失败-师傅证件信息:{}", wxg.getSfzen());
@@ -191,6 +197,7 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
             } catch (Exception ex) {
                 addDataCert(addList);
                 upWebsitWorker(websitWorkerUp);
+                addBxInfo(insurecs, insurefiles);
                 ex.printStackTrace();
                 log.info("工程师证件照信息同步失败-师傅证件信息:{}", wxg.getSfzen());
             }
@@ -198,6 +205,18 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
 
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    public void addBxInfo(List<InsureWorkerCommercial> insurecs, List<InsureWorkerCommercialFile> insurefiles) {
+        if (insurecs.size()>0){
+            insureWorkerCommercialService.saveOrUpdateBatch(insurecs);
+            insurecs.clear();
+        }
+        if (insurefiles.size()>0){
+            insureWorkerCommercialFileService.saveOrUpdateBatch(insurefiles);
+            insurefiles.clear();
+        }
+    }
+
 
     @Override
     public void extractedCert() throws Exception{
@@ -839,6 +858,7 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
             // 商用 insure_worker_commercial 商用才操作,最有效期最后的那个
             // websit_worker
 
+
                 if (zj.getZjmc().trim().equals("保险证")){
                     ZJInfoBX bx = checkBxCertInfo(workerId, websitWorkerWorkerIdMap,zj, wdno);
                     if (bx == null){
@@ -857,10 +877,11 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
 
 
     private void getCertInfo(WangdianWxgVos wvos, List<WorkerCert> addList, String workerId,
-                             String workerName, Map<String,List<WorkerCert>> WorkerCertWorkerIdMaps,
+                             Map<String,List<WorkerCert>> WorkerCertWorkerIdMaps,
                              List<WebsitWorker> websitWorkerUp,String wdno,
                              Map<String,List<WebsitWorker>> websitWorkerWorkerIdMap,
-                             List<String> workerIdandNames) throws Exception {
+                             List<String> workerIdandNames,Map<String,List<Worker>> workerWorkeridMap,
+                             List<InsureWorkerCommercial> insurecs,List<InsureWorkerCommercialFile> insurefiles) throws Exception {
         // 同步-新增证件信息
         for (ZJInfo zj: wvos.getZjInfoList()){
             Boolean addFlag = Boolean.FALSE;
@@ -869,8 +890,24 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
             // 家用 insure_worker_record
             // 商用 insure_worker_commercial 商用才操作,最有效期最后的那个
             // websit_worker
-            // 保除证也跳过
+            // 统一入商用保险,有多少份入多少份
+
+            // 保除证先跳过
             if (zj.getZjmc().trim().equals("保险证")){
+                // 提取商户售后网点对应的平台售后网点信息 存在一对多的关系 无对应关系退出不处理
+                List<WebsitOrderSign> wos = publicService.shShwdToptshwdByBrandWebsitNo(wdno);
+                if (CollectionUtils.isEmpty(wos)){
+                    continue;
+                }
+
+                // 生成商用保险对像 网点多对1时每个网点放一份
+                for (WebsitOrderSign item : wos){
+                    // 生成商用保险对像
+                    InsureWorkerCommercial a = getInsureWorkerCommercial(workerId, workerWorkeridMap, insurecs, zj, item);
+
+                    // 生成附件对像
+                    getInsureWorkerCommercialFile(insurefiles, zj, a);
+                }
                 continue;
             }
 
@@ -894,7 +931,59 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
                 continue;
             }
             // 新增
-            addNewWorkerCert(wvos, addList, workerId, workerName, workerIdandNames, zj);
+            addNewWorkerCert(wvos, addList, workerId, workerWorkeridMap.get(workerId).get(0).getWorkerName(), workerIdandNames, zj);
+        }
+    }
+
+    @NotNull
+    private InsureWorkerCommercial getInsureWorkerCommercial(String workerId, Map<String, List<Worker>> workerWorkeridMap, List<InsureWorkerCommercial> insurecs, ZJInfo zj, WebsitOrderSign item) 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.setIdcard(workerWorkeridMap.get(workerId).get(0).getIdcard());
+        if (StringUtils.isNotEmpty(zj.getZjyxq())){
+            a.setStartTime(baseService.utcToDateStr(zj.getZjyxq()));
+            a.setEndTime(baseService.utcToDateStr(zj.getZjyxq()));
+        }
+        a.setExamineStatus("OK");
+        Insure insure = publicService.getWebsitWorkerByWorkerAndWebsit("意外险");
+
+        if (insure !=null){
+            a.setInsureBill(insure.getId());
+            a.setInsureName(insure.getName());
+        } else {
+            if (zj.getZjbh().contains("/")){
+                List<String> result = Arrays.asList(zj.getZjbh().split("/"));
+                a.setInsureName(result.get(0));
+                a.setInsureBill(result.get(1));
+            } else {
+                a.setInsureBill(zj.getZjbh());
+            }
+        }
+        insurecs.add(a);
+        return a;
+    }
+
+    private void getInsureWorkerCommercialFile(List<InsureWorkerCommercialFile> insurefiles, ZJInfo zj, InsureWorkerCommercial a) {
+        List<String> zjs = new ArrayList<>();
+        if (zj.getZjlj().contains(",")){
+            zjs = Arrays.asList(zj.getZjlj().split(","));
+        } else {
+            zjs.add(zj.getZjlj());
+        }
+        for (String fileurl:zjs){
+            InsureWorkerCommercialFile icf = new InsureWorkerCommercialFile();
+            icf.setId(IdWorker.getIdStr());
+            icf.setInsureWorkerCommercialId(a.getWorkerId());
+            icf.setCreateBy("system");
+            icf.setCreateTime(new Date());
+            icf.setOutZjlj(fileurl);
+            insurefiles.add(icf);
         }
     }
 
@@ -942,9 +1031,7 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
         zjinfo.setZjInfo(zj);
 
         // 提取商户售后网点对应的平台售后网点信息 存在一对多的关系
-        List<WebsitOrderSign> wos = websitOrderSignService.lambdaQuery()
-                .eq(WebsitOrderSign::getBrandWebsitId, wdno)
-                .list();
+        List<WebsitOrderSign> wos = publicService.shShwdToptshwdByBrandWebsitNo(wdno);
         // 找不到对应关系时不再处理保险证数据
         if (CollectionUtils.isEmpty(wos)){
             return null;

+ 31 - 0
src/main/java/com/zfire/jiasm/syncdata/service/impl/PublicServiceImpl.java

@@ -103,6 +103,10 @@ public class PublicServiceImpl implements PublicService {
     private SynUploadWebsitService synUploadWebsitService;
     @Resource
     private UploadService uploadService;
+    @Resource
+    WebsitWorkerService websitWorkerService;
+    @Resource
+    InsureService insureService;
 
 
     private static String ALISMS_RESERVE = "尊敬的客户,您好!师傅上门时间为%s,服务网点电话:%s,如本次上门时间与您的安排有冲突,请拨打服务网点电话联系,我们将竭诚为您服务!";
@@ -1231,6 +1235,15 @@ public class PublicServiceImpl implements PublicService {
         return wos;
     }
 
+    @Override
+    public List<WebsitOrderSign> shShwdToptshwdByBrandWebsitNo(String wdno){
+        // 提取商户售后网点对应的平台售后网点信息 存在一对多的关系
+        List<WebsitOrderSign> wos = new ArrayList<>();
+        wos = websitOrderSignService.lambdaQuery()
+                .eq(WebsitOrderSign::getBrandWebsitId,wdno).list();
+        return wos;
+    }
+
 
     // 安装工单的省市区对应关系
     @Override
@@ -1410,6 +1423,24 @@ public class PublicServiceImpl implements PublicService {
         return Boolean.TRUE;
     }
 
+    // 获取平台网点师傅信息
+    @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;
+    }
+
+    @Override
+    public Insure getWebsitWorkerByWorkerAndWebsit(String type){
+        Insure insure = insureService.lambdaQuery()
+                .eq(Insure::getTypeName,type).last("limit 1").one();
+        return insure;
+    }
+
     private void setLocationByAddress(OrderBase orderBase) {
         if (StringUtils.isEmpty(orderBase.getLng()) || StringUtils.isEmpty(orderBase.getLat())) {
             String add = "";