yaozhixue преди 1 година
родител
ревизия
19ab02bdad

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

@@ -65,7 +65,7 @@ public class GLPPWXGQueryAdd {
 
         log.info("开始同步获取网点师傅证件信息: \uF0B7{}",sdf.format(new Date()));
         try {
-            glppwxgQueryAddService.extractedCertInfo();
+            // glppwxgQueryAddService.extractedCertInfo();
             log.info("同步获取网点师傅证件信息结束: \uF0B7{}",sdf.format(new Date()));
         } catch (Exception ex) {
             ex.printStackTrace();

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

@@ -2,6 +2,7 @@ package com.zfire.jiasm.syncdata.service;
 
 public interface GLPPWXGQueryAddService {
 
+    void extractedCertInfoBak() throws Exception;
     void extractedCertInfo() throws Exception;
 
     void extractedAddCategory() throws Exception;

+ 7 - 1
src/main/java/com/zfire/jiasm/syncdata/service/impl/AddInstallBusinessImpl.java

@@ -1365,6 +1365,11 @@ public class AddInstallBusinessImpl implements AddInstallBusiness {
 
     @NotNull
     private OrderBase getOrderBaseUp(OrderBase old, ItfTblAzAssignLcLsDownload item, OrderBase lclsNew) {
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        log.info("平台表数据时间 {}",sdf.format(old.getUpdateTime()));
+        log.info("云售后表数据时间 {}",sdf.format(item.getLastModifiedDate()));
+
         // 本地订单已关闭 且总部的最后修改时间在本地数据修改时间之前 不可修改
         if (old.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G10.getCode()) &&
                 (old.getUpdateTime()==null || item.getLastModifiedDate().compareTo(old.getUpdateTime())<0)){
@@ -1373,8 +1378,9 @@ public class AddInstallBusinessImpl implements AddInstallBusiness {
             return old;
         }
 
-        // 1.安装工单主表基础信息更新
+        // 1.安装工单主表基础信息更新 需进行最后修改时间比较
         if (old.getUpdateTime()==null || item.getLastModifiedDate().compareTo(old.getUpdateTime())>0){
+            log.info("修改工单主表基础信息");
             upBase(old, item, lclsNew);
         }
 

+ 16 - 16
src/main/java/com/zfire/jiasm/syncdata/service/impl/AddRepairBusinessServiceImpl.java

@@ -22,6 +22,7 @@ import com.zfire.jiasm.syncdata.service.OrderService;
 import com.zfire.jiasm.syncdata.service.PublicService;
 import com.zfire.jiasm.syncdata.utils.MyBeanUtils;
 import com.zfire.jiasm.syncdata.utils.ResponseHelper;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.jetbrains.annotations.NotNull;
@@ -200,8 +201,8 @@ public class AddRepairBusinessServiceImpl implements AddRepairBusinessService {
         OrderBase order = generateOrderApi(brand, item, yds,its);
         // 生成工单师傅对像
         orderWorker = publicService.getOrderWorkerApi(order);
-        // 获取工单扩展信息
-        getOrderInstallApi(item, order, sysDictRefXLMapXq,or);
+        // 获取工单扩展信息 需求大小类在这里处理
+        getOrderInstallApi(item, order, sysDictRefDLMapXq, sysDictRefXLMapXq,or);
         // 处理维修单明细表 TL_SynDataFrom_tbl_assign_mx
         generateMxApi(brand, item, order, sysDictRefDLMap, sysDictRefXLMap, sysDictRefXiLieMap, addmx, ups);
         // 处理维修单过程反馈表 放入操作日志表 TL_SynDataFrom_tbl_assign_fkmx
@@ -271,7 +272,7 @@ public class AddRepairBusinessServiceImpl implements AddRepairBusinessService {
         // upOrderWorker(order);
         orderWorker = publicService.getOrderWorkerApi(order);
         // 工单扩展信息更新
-        getOrderInstallApi(item, order,sysDictRefXLMapXq,or);
+        getOrderInstallApi(item, order,sysDictRefDLMapXq,sysDictRefXLMapXq,or);
         // 维修单明细表更新 TL_SynDataFrom_tbl_assign_mx
         generateMxUpdateApi(brand, item, order, sysDictRefDLMap, sysDictRefXLMap, sysDictRefXiLieMap, addmx, upMxd );
         // 处理维修单过程反馈(只新增不修改)  放入操作日志表 TL_SynDataFrom_tbl_assign_fkmx
@@ -2354,17 +2355,17 @@ public class AddRepairBusinessServiceImpl implements AddRepairBusinessService {
         orderRepairService.saveOrUpdate(or);
     }
 
-    private void getOrderInstallApi(ItfTblAssignDownload item, OrderBase order,
+    private void getOrderInstallApi(ItfTblAssignDownload item, OrderBase order,Map<String, List<SysDictRef>> sysDictRefDLMapXq,
                                  Map<String, List<SysDictRef>> sysDictRefXLMapXq,OrderRepair or) {
-        // 查看是否存在
-        OrderRepair oldor = orderRepairService.lambdaQuery()
+        // 查看是否存在 这里不需自生成表数据,去掉
+        /*OrderRepair oldor = orderRepairService.lambdaQuery()
                 .eq(OrderRepair::getOrderBaseId,order.getId())
                 .last("limit 1")
                 .one();
 
         if (oldor !=null){
             or.setId(oldor.getId());
-        }
+        }*/
 
         or.setOrderBaseId(order.getId());
         or.setCxyzm(item.getCxyzm());
@@ -2374,24 +2375,23 @@ public class AddRepairBusinessServiceImpl implements AddRepairBusinessService {
         or.setZptype(item.getZptype());
         or.setYhif(item.getYhif());
         or.setTsdengji(item.getTsdengji());
-        // 需求大类 未找到放原有的值
-        or.setDemandTypeId(String.valueOf(item.getSpid()));
-        or.setDemandTypeName(item.getSpmc());
 
-        if (sysDictRefXLMapXq.containsKey(String.valueOf(item.getSpid()))){
-            or.setDemandTypeId(sysDictRefXLMapXq.get(String.valueOf(item.getSpid())).get(0).getDictCode());
-            or.setDemandTypeName(sysDictRefXLMapXq.get(String.valueOf(item.getSpid())).get(0).getDictValue());
+        // 需求大类 未找到放原有的值
+        or.setDemandTypeId("");
+        or.setDemandTypeName("");
+        if (item.getXxlbid() !=null && sysDictRefDLMapXq.containsKey(String.valueOf(item.getXxlbid()))){
+            or.setDemandTypeId(sysDictRefDLMapXq.get(String.valueOf(item.getXxlbid())).get(0).getDictCode());
+            or.setDemandTypeName(sysDictRefDLMapXq.get(String.valueOf(item.getXxlbid())).get(0).getDictValue());
         }
 
         // 需求小类
         or.setDemandSmallTypeId("");
         or.setDemandSmallTypeName("");
-        if (!item.getXqxiaolei().equals(0L) && sysDictRefXLMapXq.containsKey(item.getXqxiaolei())) {
+        if (StringUtils.isNotEmpty(item.getXqxiaolei()) && sysDictRefXLMapXq.containsKey(item.getXqxiaolei())) {
             or.setDemandSmallTypeId(sysDictRefXLMapXq.get(item.getXqxiaolei()).get(0).getDictCode());
             or.setDemandSmallTypeName(sysDictRefXLMapXq.get(item.getXqxiaolei()).get(0).getDictValue());
-        } else {
-
         }
+
         or.setExtendField1(item.getExtjson1());
         or.setExtendField2(item.getExtjson2());
         or.setExtendField3(item.getExtjson3());

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

@@ -89,9 +89,6 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
     InsureWorkerCommercialFileService insureWorkerCommercialFileService;
     @Resource
     OrderDetailFileService orderDetailFileService;
-    @Resource
-    OrderInstallDetailCodeService orderInstallDetailCodeService;
-
 
 
     @Override
@@ -107,6 +104,143 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
         List<String> workerIdandNames = new ArrayList<>();
         List<InsureWorkerCommercial> insurecs = new ArrayList<>();
         List<InsureWorkerCommercialFile> insurefiles = new ArrayList<>();
+        List<String> bxWorkerIdWebsitIds = new ArrayList<>();
+        Map<String,List<WebsitWorker>> websitWorderwidwdidMap = new HashMap<>();
+        Map<String,List<WebsitWorker>> addBxWorkers = new HashMap<>();
+        List<WebsitWorker> websitWorkers = new ArrayList<>();
+
+                // 提取品牌信息
+        Brand brand = baseService.getBrand();
+        if (brand == null) {
+            return;
+        }
+
+        List<Worker> oldWorkerRec =  workerService.lambdaQuery()
+                .select(Worker::getIdcard,Worker::getWorkerId,Worker::getWorkerName,Worker::getMobile).list();
+        if (CollectionUtils.isNotEmpty(oldWorkerRec)){
+            workerIdcardMap = oldWorkerRec.stream().collect(Collectors.groupingBy(Worker::getIdcard));
+            workerWorkeridMap = oldWorkerRec.stream().collect(Collectors.groupingBy(Worker::getWorkerId));
+            oldWorkerRec.clear();
+        }
+
+        // 提取待同步获取保险信息的师傅数据
+        /*List<WebsitWorker> websitWorkers = websitWorkerService.lambdaQuery()
+                .eq(WebsitWorker::getOutZjlj,WebsitWorker::getWebsitId,WebsitWorker::getWebsitWorkerId)
+                .list();*/
+
+
+
+        List<WebsitWorker> iwcs = websitWorkerService.lambdaQuery()
+                .eq(WebsitWorker::getInsureStatus,2).list();
+        if (CollectionUtils.isNotEmpty(iwcs)){
+            iwcs.stream().forEach(event->{
+                bxWorkerIdWebsitIds.add(event.getWorkerId()+event.getWebsitId());
+            });
+            iwcs.clear();
+        }
+
+        Insure insure = publicService.getWebsitWorkerByWorkerAndWebsit("意外险");
+
+        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,
+                        ItfTblWangdianWxgDownload::getWxgno,
+                        ItfTblWangdianWxgDownload::getWdno,
+                        ItfTblWangdianWxgDownload::getSfzen,
+                        ItfTblWangdianWxgDownload::getWxgmc,
+                        ItfTblWangdianWxgDownload::getYddh,
+                        ItfTblWangdianWxgDownload::getFlag)
+                // .eq(ItfTblWangdianWxgDownload::getSfzen,"431003199803271316")// 测试用
+                .like(ItfTblWangdianWxgDownload::getWdno,"S%").list();
+
+        // 提取现有已存在的证件信息的师傅信息(待回传同步的证件不处理)
+        List<WorkerCert> wc = workerCertService.lambdaQuery()
+                .eq(WorkerCert::getOutSyncStatus,1).list();
+        if (CollectionUtils.isNotEmpty(wc)){
+            WorkerCertWorkerIdMaps = wc.stream().collect(Collectors.groupingBy(WorkerCert::getWorkerId));
+            wc.clear();
+        }
+
+
+        for (ItfTblWangdianWxgDownload wxg :wxgDownladRecs){
+            // 无效的数据不新增
+            if (wxg.getFlag() != null){
+                if (!wxg.getFlag().trim().equals(DictTypeEnum.DICT_TYPE_FLAG_ON.getCode())){
+                    continue;
+                }
+            }
+            // 平台师傅信息不包含格力总部的数据不处理(包含的为格力的师傅信息同步时已生成了worker)
+            // 这里用身份证来做包含关系(测试环境身份证隐藏* 需加名称及手机号)
+            String workerId = checkIsGreeWroker(workerIdcardMap, wxg);
+            if (workerId.length()<1) {
+                continue;
+            }
+
+            // 有证件信息的师傅不再新增
+            /*if (WorkerCertWorkerIdMaps.containsKey(workerId)){
+                continue;
+            }*/
+
+            // 参数 获取网点维修工信息
+            getParameter(wxg.getWdno(), wxg.getWxgno(), req);
+
+            try {
+                // 格力总部查询工程师信息
+                GreeResponseHelper response = greeLogic.greePost(wdqyapi, JSONObject.toJSONString(req), publicService.getCompanyId(wxg.getWdno()));
+                // 失败不处理
+                if (response.getStatus() == 200){
+                    WxgQueryInfo resultDatax = JSONObject.parseObject(response.getData().toString(), WxgQueryInfo.class);
+                    // 无证件不处理
+                    if ( resultDatax.getWangdianWxgVos().size()<1){
+                        continue;
+                    }
+
+                    wvos = resultDatax.getWangdianWxgVos().get(0);
+
+                    log.info("总部获取的工程师证件照信息wvos:{}", JSONObject.toJSONString(wvos));
+                    // 同步-新增证件信息
+                    getCertInfo(wvos, addList, workerId, WorkerCertWorkerIdMaps,wxg.getWdno(),workerIdandNames,
+                            workerWorkeridMap,insurecs,insurefiles, bxWorkerIdWebsitIds,websitWorderwidwdidMap, insure);
+                    // 新增或修改(证件)
+                    addDataCert(addList);
+                    // 修改保险信息
+                    addBxInfo(insurecs, insurefiles);
+
+                    log.info("工程师证件照信息同步成功-师傅证件信息:{}", wxg.getSfzen());
+                } else {
+                    log.info("获取工程师证件照信息失败-师傅证件信息:{}", wxg.getSfzen());
+                    log.info("msg:{}", response.getMsg());
+                }
+            } catch (Exception ex) {
+                addDataCert(addList);
+                upWebsitWorker(websitWorkerUp);
+                addBxInfo(insurecs, insurefiles);
+                ex.printStackTrace();
+                log.info("工程师证件照信息同步失败-师傅证件信息:{}", wxg.getSfzen());
+            }
+        }
+
+    }
+
+    @Override
+    public void extractedCertInfoBak(){
+        WangdianWxgVos wvos = new WangdianWxgVos();
+        List<WorkerCert> addList = new ArrayList<>();
+        Map<String,Object> req = new HashMap<>();
+        Map<String,List<Worker>> workerIdcardMap = new HashMap<>();
+        Map<String,List<Worker>> workerWorkeridMap = new HashMap<>();
+        Map<String,List<WorkerCert>> WorkerCertWorkerIdMaps = new HashMap<>();
+        List<ItfTblWangdianWxgDownload> wxgDownladRecs = new ArrayList<>();
+        List<WebsitWorker> websitWorkerUp = new ArrayList<>();
+        List<String> workerIdandNames = new ArrayList<>();
+        List<InsureWorkerCommercial> insurecs = new ArrayList<>();
+        List<InsureWorkerCommercialFile> insurefiles = new ArrayList<>();
         List<String> insureworkeridandWebsitids = new ArrayList<>();
         Map<String,List<WebsitWorker>> websitWorderwidwdidMap = new HashMap<>();
 
@@ -1019,7 +1153,7 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
     }
 
 
-    private void getCertInfo(WangdianWxgVos wvos, List<WorkerCert> addList, String workerId,
+    private void getCertInfoBak(WangdianWxgVos wvos, List<WorkerCert> addList, String workerId,
                              Map<String,List<WorkerCert>> WorkerCertWorkerIdMaps,
                              String wdno, List<String> workerIdandNames,Map<String,List<Worker>> workerWorkeridMap,
                              List<InsureWorkerCommercial> insurecs,
@@ -1046,6 +1180,33 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
         }
     }
 
+    private void getCertInfo(WangdianWxgVos wvos, List<WorkerCert> addList, String workerId,
+                             Map<String,List<WorkerCert>> WorkerCertWorkerIdMaps,
+                             String wdno, List<String> workerIdandNames,Map<String,List<Worker>> workerWorkeridMap,
+                             List<InsureWorkerCommercial> insurecs,
+                             List<InsureWorkerCommercialFile> insurefiles,
+                             List<String> bxWorkerIdWebsitIds,
+                             Map<String,List<WebsitWorker>> websitWorderwidwdidMap, Insure insure) throws ParseException {
+        // 同步-新增证件信息
+        for (ZJInfo zj: wvos.getZjInfoList()){
+            // 保除证
+            if (zj.getZjmc().trim().equals("保险证")){
+                if (insure == null){
+                    continue;
+                }
+                if (produceBXInfo(workerId, wdno, workerWorkeridMap, insurecs, insurefiles,
+                        bxWorkerIdWebsitIds, zj,websitWorderwidwdidMap, insure)){
+                    continue;
+                }
+
+                continue;
+            }
+
+            // 生成其他证件信息
+            produceCert(wvos, addList, workerId, WorkerCertWorkerIdMaps, workerIdandNames, workerWorkeridMap, zj);
+        }
+    }
+
     private void produceCert(WangdianWxgVos wvos, List<WorkerCert> addList, String workerId, Map<String,
             List<WorkerCert>> WorkerCertWorkerIdMaps, List<String> workerIdandNames,
                              Map<String, List<Worker>> workerWorkeridMap, ZJInfo zj) throws ParseException {
@@ -1082,7 +1243,7 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
      *
      * 统一入商用保险,有多少份入多少份
      */
-    private boolean produceBXInfo(String workerId, String wdno, Map<String, List<Worker>> workerWorkeridMap,
+    private boolean produceBXInfoBak(String workerId, String wdno, Map<String, List<Worker>> workerWorkeridMap,
                                   List<InsureWorkerCommercial> insurecs, List<InsureWorkerCommercialFile> insurefiles,
                                   List<String> insureworkeridandWebsitids, ZJInfo zj,
                                   Map<String, List<WebsitWorker>> websitWorderwidwdidMap, Insure insure) throws ParseException {
@@ -1116,6 +1277,40 @@ public class GLPPWXGQueryAddServiceImpl implements GLPPWXGQueryAddService {
         return false;
     }
 
+    private boolean produceBXInfo(String workerId, String wdno, Map<String, List<Worker>> workerWorkeridMap,
+                                  List<InsureWorkerCommercial> insurecs, List<InsureWorkerCommercialFile> insurefiles,
+                                  List<String> bxWorkerIdWebsitIds, ZJInfo zj,
+                                  Map<String, List<WebsitWorker>> websitWorderwidwdidMap, Insure insure) throws ParseException {
+        // 提取商户售后网点对应的平台售后网点信息 存在一对多的关系 无对应关系退出不处理
+        List<WebsitOrderSign> wos = publicService.shShwdToptshwdByBrandWebsitNo(wdno);
+        if (CollectionUtils.isEmpty(wos)){
+            return true;
+        }
+
+        // 生成商用保险对像 网点多对1时每个网点放一份
+        for (WebsitOrderSign item : wos){
+            // 防重
+            if (bxWorkerIdWebsitIds.contains(workerId +item.getWebsitId())){
+                continue;
+            }
+
+            // 对于在商户网点师傅都为无效的状态时在平台网点师傅表中可能是不存在的 需要排除掉
+            String websitWorkerId = checkWebsitWorker(workerId, websitWorderwidwdidMap, item);
+            if (websitWorkerId == null) {
+                continue;
+            }
+
+            // 生成商用保险对像
+            InsureWorkerCommercial a = getInsureWorkerCommercial(workerId, workerWorkeridMap, insurecs, zj, item,websitWorkerId, insure);
+
+            // 生成附件对像
+            getInsureWorkerCommercialFile(insurefiles, zj, a);
+
+            bxWorkerIdWebsitIds.add(workerId +item.getWebsitId());
+        }
+        return false;
+    }
+
     @Nullable
     private String checkWebsitWorker(String workerId, Map<String, List<WebsitWorker>> websitWorderwidwdidMap, WebsitOrderSign item) {
         String websitWorkerId="";