yaozhixue 2 years ago
parent
commit
b31bf1f9a0
100 changed files with 3249 additions and 832 deletions
  1. 14 0
      src/main/java/com/zfire/jiasm/syncdata/dao/mapper/AzGDLcLsDownloadMapper.java
  2. 0 677
      src/main/java/com/zfire/jiasm/syncdata/download/GLPPWXGQuery.java
  3. 5 4
      src/main/java/com/zfire/jiasm/syncdata/download/basedata/GLPPGFWebsit.java
  4. 371 14
      src/main/java/com/zfire/jiasm/syncdata/download/basedata/GLPPGFWebsitWorker.java
  5. 3 3
      src/main/java/com/zfire/jiasm/syncdata/download/basedata/GLPPGuZhandDaiMa.java
  6. 5 5
      src/main/java/com/zfire/jiasm/syncdata/download/basedata/GLPPLeiBie.java
  7. 3 3
      src/main/java/com/zfire/jiasm/syncdata/download/basedata/GLPPXSLXDownload.java
  8. 4 4
      src/main/java/com/zfire/jiasm/syncdata/download/basedata/GLPPXuQiuLeiBie.java
  9. 6 6
      src/main/java/com/zfire/jiasm/syncdata/download/basedata/GLPPYHSXXXQD.java
  10. 5 5
      src/main/java/com/zfire/jiasm/syncdata/download/basedata/ProvinceCityAreaTown.java
  11. 1329 0
      src/main/java/com/zfire/jiasm/syncdata/download/order/AnzhuangGongDanBusiness.java
  12. 6 10
      src/main/java/com/zfire/jiasm/syncdata/download/order/AnzhuangGongDanDownload.java
  13. 880 0
      src/main/java/com/zfire/jiasm/syncdata/download/worker/GLPPWXGQueryAdd.java
  14. 517 0
      src/main/java/com/zfire/jiasm/syncdata/download/worker/GLPPWXGQueryUpdate.java
  15. 16 16
      src/main/java/com/zfire/jiasm/syncdata/gree/GreeLogic.java
  16. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminFastEntryPlusTempController.java
  17. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminFieldPlusTempController.java
  18. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminModuleFavoritesPlusTempController.java
  19. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminModulePlusTempController.java
  20. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminRolePlusTempController.java
  21. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminUserModuleRelaPlusTempController.java
  22. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminUserPlusTempController.java
  23. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminUserRoleRelaPlusTempController.java
  24. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminWebsitPlusTempController.java
  25. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminWebsitProductTypeRelaPlusTempController.java
  26. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminWebsitSlavePlusTempController.java
  27. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AreaPlusTempController.java
  28. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/BrandLbsRelatePlusTempController.java
  29. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/BrandPlusTempController.java
  30. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/BrandWebsitPlusTempController.java
  31. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/CityPlusTempController.java
  32. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ComDetailLogPlusTempController.java
  33. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ComDetailPlusTempController.java
  34. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ComListPlusTempController.java
  35. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/CommonFilePlusTempController.java
  36. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/CompanyCaAuthPlusTempController.java
  37. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/CompanyRecordManagePlusTempController.java
  38. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ContractTemplatePlusTempController.java
  39. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/CustomerInformationCategoryPlusTempController.java
  40. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/CustomerInformationPlusTempController.java
  41. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/CustomerInformationWebsitPlusTempController.java
  42. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ImgCarouselManagePlusTempController.java
  43. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/InstallChargeConfigPlusTempController.java
  44. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsureAgreePlusTempController.java
  45. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsureEmailPlusTempController.java
  46. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsureEmailRecordPlusTempController.java
  47. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsurePlusTempController.java
  48. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsureRangePlusTempController.java
  49. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsureWorkerCommercialFilePlusTempController.java
  50. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsureWorkerCommercialPlusTempController.java
  51. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsureWorkerRecordPlusTempController.java
  52. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralDoublePlusTempController.java
  53. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralGradeConfigurePlusTempController.java
  54. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralGradeExplainPlusTempController.java
  55. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralGradeSkillPlusTempController.java
  56. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralOffsetPlusTempController.java
  57. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralScorePlusTempController.java
  58. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralSkillLabelPlusTempController.java
  59. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralWorkerApplyPlusTempController.java
  60. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblAssignGzdmDowloadPlusTempController.java
  61. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblAssignXqxlDowloadPlusTempController.java
  62. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblAssignXxlbDowloadPlusTempController.java
  63. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblAssignXxlyDowloadPlusTempController.java
  64. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblAssignXxqdDowloadPlusTempController.java
  65. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblAssignYhsxWxDowloadPlusTempController.java
  66. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblAzAssignXslxDowloadPlusTempController.java
  67. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblCityDownloadPlusTempController.java
  68. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblCityJdxzDownloadPlusTempController.java
  69. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblCountyDownloadPlusTempController.java
  70. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblProvinceDownloadPlusTempController.java
  71. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblSplbDaleiDownloadPlusTempController.java
  72. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblSplbJixinDownloadPlusTempController.java
  73. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblSplbXiaoleiDownloadPlusTempController.java
  74. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblSplbXilieDownloadPlusTempController.java
  75. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblWangdianWxgDownloadPlusTempController.java
  76. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblXinWangdianDownloadPlusTempController.java
  77. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblYhsxViprankDowloadPlusTempController.java
  78. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/LabelCurrencyPlusTempController.java
  79. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/LabelPlusTempController.java
  80. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/LbsAmapPlusTempController.java
  81. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/NoticePlusTempController.java
  82. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/NoticeRecordPlusTempController.java
  83. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/OperationLogPlusTempController.java
  84. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ProductPlusTempController.java
  85. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ProductSeriesPlusTempController.java
  86. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ProvincePlusTempController.java
  87. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/QualificationsManagePlusTempController.java
  88. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/RepairBugPlusTempController.java
  89. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/RepairProjectPlusTempController.java
  90. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/SmsRecordPlusTempController.java
  91. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/StreetPlusTempController.java
  92. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/SysDictPlusTempController.java
  93. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/SysDictRefPlusTempController.java
  94. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/SysDictTypePlusTempController.java
  95. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ToolPlusTempController.java
  96. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/UserFeedbackPlusTempController.java
  97. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/UserPlusTempController.java
  98. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/WebsitEnclosureFilePlusTempController.java
  99. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/WebsitExamineRecordPlusTempController.java
  100. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/WebsitFilePlusTempController.java

+ 14 - 0
src/main/java/com/zfire/jiasm/syncdata/dao/mapper/AzGDLcLsDownloadMapper.java

@@ -0,0 +1,14 @@
+package com.zfire.jiasm.syncdata.dao.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zfire.jiasm.syncdata.plus.entity.ItfTblAzAssignLcLsDownload;
+import com.zfire.jiasm.syncdata.plus.entity.OrderBase;
+
+/**
+ * 安装工单主表 Mapper 接口
+ * @author yaozx
+ * @since 2023-02-17
+ */
+public interface AzGDLcLsDownloadMapper extends BaseMapper<ItfTblAzAssignLcLsDownload> {
+    OrderBase getOrderBase(Long synReqId);
+}

+ 0 - 677
src/main/java/com/zfire/jiasm/syncdata/download/GLPPWXGQuery.java

@@ -1,677 +0,0 @@
-package com.zfire.jiasm.syncdata.download;
-
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.toolkit.IdWorker;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.zfire.jiasm.syncdata.base.BaseService;
-import com.zfire.jiasm.syncdata.constant.DictTypeEnum;
-import com.zfire.jiasm.syncdata.constant.ServiceCategoryEnum;
-import com.zfire.jiasm.syncdata.gree.GreeLogic;
-import com.zfire.jiasm.syncdata.helper.GreeResponseHelper;
-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.response.WangdianWxgVos;
-import com.zfire.jiasm.syncdata.response.WxgQueryInfo;
-import com.zfire.jiasm.syncdata.utils.oss.OSSUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.annotation.Resource;
-import java.io.File;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 格力品牌维修工图片信息同步到本地
- * 扫描下载表
- */
-@Slf4j
-@Component
-public class GLPPWXGQuery {
-    String wdqyapi = "/outapp/wxg/list";
-
-
-    @Resource
-    BaseService baseService;
-    @Resource
-    GreeLogic greeLogic;
-    @Resource
-    OSSUtil ossUtil;
-    @Resource
-    ItfTblWangdianWxgDownloadService itfTblWangdianWxgDownloadService;
-    @Resource
-    WorkerBrandAccountService workerBrandAccountService;
-    @Resource
-    WorkerCertService workerCertService;
-    @Resource
-    WorkerStreetService workerStreetService;
-    @Resource
-    ProvinceService provinceService;
-    @Resource
-    CityService cityService;
-    @Resource
-    AreaService areaService;
-    @Resource
-    StreetService streetService;
-    @Resource
-    BrandLbsRelateService brandLbsRelateService;
-    @Resource
-    WorkerServiceCategoryService workerServiceCategoryService;
-    @Resource
-    WorkerServiceCategoryDetailService workerServiceCategoryDetailService;
-    @Resource
-    SysDictRefService sysDictRefService;
-    @Resource
-    SysDictService sysDictService;
-
-
-    /**
-     * 按网点查询工程师信息并同步-只处理新增(证件,师傅地理位置,师傅服务的类目)
-     */
-    @Scheduled(fixedDelay = 3 * 60 * 1000)
-    public void wxgQueryAdd() throws Exception {
-        /*if (1==1){
-            return;
-        }*/
-
-        WangdianWxgVos wvos = new WangdianWxgVos();
-        List<WorkerCert> updateList = new ArrayList<>();
-        List<WorkerCert> addList = new ArrayList<>();
-        Map<String,Object> req = new HashMap<>();
-        List<WorkerServiceCategory> wscList = new ArrayList<>();
-        List<WorkerServiceCategoryDetail> wscdList = new ArrayList<>();
-        List<WorkerStreet> ws = new ArrayList<>();
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
-        // 提取品牌信息
-        Brand brand = baseService.getBrand();
-        if (brand == null) {
-            return;
-        }
-
-        // 字典表中查出ID 格力只有-家电售后
-        SysDict sysDict =  sysDictService.lambdaQuery().
-                eq(SysDict::getDictType,ServiceCategoryEnum.DICT_TYPE_SERVICE_CATEGORY.getCode())
-                .eq(SysDict::getDictValue,ServiceCategoryEnum.DICT_TYPE_SERVICE_CATEGORY.getText()).one();
-        if (sysDict == null) {
-            return;
-        }
-
-        // 提取现有的师傅数据信息
-        List<ItfTblWangdianWxgDownload> wxgRecs =  itfTblWangdianWxgDownloadService.lambdaQuery()
-                .select(ItfTblWangdianWxgDownload::getWxgno,
-                        ItfTblWangdianWxgDownload::getWdno,
-                        ItfTblWangdianWxgDownload::getSfzen)
-                .eq(ItfTblWangdianWxgDownload::getWxgno,"S21A00200023")// 测试用
-                .like(ItfTblWangdianWxgDownload::getWdno,"S%").list();
-
-        log.info("开始同步网点师傅信息: {}",sdf.format(new Date()));
-
-        for (ItfTblWangdianWxgDownload wxg :wxgRecs){
-            // 参数
-            getParameter(wxg.getWdno(), wxg.getWxgno(), req);
-            // 格力总部查询工程师信息
-            GreeResponseHelper response = greeLogic.greePost(wdqyapi, JSONObject.toJSONString(req), 1);
-            if (response.getStatus() == 200){
-                WxgQueryInfo resultDatax = JSONObject.parseObject(response.getData().toString(), WxgQueryInfo.class);
-                wvos = resultDatax.getWangdianWxgVos().get(0);
-
-                // 提取师傅的服务大类信息
-                List<WorkerServiceCategoryDetail> wxgCategoryRecs = workerServiceCategoryDetailService.lambdaQuery()
-                        .eq(WorkerServiceCategoryDetail::getWorkerId, wxg.getSfzen()).list();
-
-                // 服务类型 INSTALL=安装 REPAIR=维修  DELIVERY=配送
-                Map<String, List<WorkerServiceCategoryDetail>> wxgCategoryTypeRecs = wxgCategoryRecs.stream().
-                        collect(Collectors.groupingBy(WorkerServiceCategoryDetail::getType));
-
-                // 本地提取商户师傅信息 按品牌,网点,师傅编号    师傅离职的情况不再处理 todo
-                WorkerBrandAccount workerBrandAccount = workerBrandAccountService.lambdaQuery()
-                        .eq(WorkerBrandAccount::getBrandId, brand.getBrandId())
-                        .eq(WorkerBrandAccount::getBrandWebsitNumber, wxg.getWdno())
-                        .eq(WorkerBrandAccount::getBrandWorkerNumber, wxg.getWxgno())
-                        .one();
-                try {
-                    // 新增
-                    if (workerBrandAccount == null){
-                        // 新增 WorkerBrandAccount todo
-
-
-
-                        // 同步-新增证件信息
-                        List<WorkerCert> wc = workerCertService.lambdaQuery()
-                                .eq(WorkerCert::getWorkerId, workerBrandAccount.getWorkerId())
-                                .list();
-                        // 不存在新增
-                        if (wc ==null || wc.size()<1){
-                            // 同步-新增证件信息
-                            for (ZJInfo zj:wvos.getZjInfoList()){
-                                workercertAdd(wvos, addList, workerBrandAccount, zj);
-                            }
-                        }
-
-                        // 同步-新增师傅地理位置
-                        // 师傅省市区街道信息
-                        List<WorkerStreet> wsOld = workerStreetService.lambdaQuery()
-                                .eq(WorkerStreet::getWorkerId, workerBrandAccount.getWorkerId()).list();
-                        // 不存在新增
-                        if (wsOld ==null || wsOld.size()<1){
-                            addWorkerStreet(wvos,brand.getBrandId(),ws);
-                        }
-
-                        // 同步-新增师傅服务的类目信息
-
-
-
-
-
-                        // 同步-师傅服务的类目信息 无则插入
-                        getServiceCategory(wvos, wscList, wscdList, brand, sysDict, wxg, wxgCategoryTypeRecs);
-
-                        // 新增或修改(证件,师傅地理位置,师傅服务的类目)
-                        addOrUpdate(updateList, addList, wscList, wscdList, ws);
-                    } else {
-                        // 新增
-
-                    }
-                } catch (Exception ex) {
-                    log.info("工程师信息同步失败:{}", ex);
-                }
-            }
-        }
-        log.info("同步网点师傅信息结束: {}",sdf.format(new Date()));
-    }
-
-
-    /**
-     * 按网点查询工程师信息并同步-只处理存在进行修改 (证件,师傅地理位置,师傅服务的类目)
-     *     格力总部获取师傅信息
-     *     本地提取商户师傅信息 只修改不新增
-     *
-     */
-    @Scheduled(fixedDelay = 3 * 60 * 1000)
-    public void wxgQueryUpdate() throws Exception {
-        if (1==1){
-            return;
-        }
-
-        WangdianWxgVos wvos = new WangdianWxgVos();
-        List<WorkerCert> updateList = new ArrayList<>();
-        List<WorkerCert> addList = new ArrayList<>();
-        Map<String,Object> req = new HashMap<>();
-        List<WorkerServiceCategory> wscList = new ArrayList<>();
-        List<WorkerServiceCategoryDetail> wscdList = new ArrayList<>();
-        List<WorkerStreet> ws = new ArrayList<>();
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
-        // 提取品牌信息
-        Brand brand = baseService.getBrand();
-        if (brand == null) {
-            return;
-        }
-
-        // 字典表中查出ID 格力只有-家电售后
-        SysDict sysDict =  sysDictService.lambdaQuery().
-                eq(SysDict::getDictType,ServiceCategoryEnum.DICT_TYPE_SERVICE_CATEGORY.getCode())
-                .eq(SysDict::getDictValue,ServiceCategoryEnum.DICT_TYPE_SERVICE_CATEGORY.getText()).one();
-        if (sysDict == null) {
-            return;
-        }
-
-        // 提取现有的师傅数据信息
-        List<ItfTblWangdianWxgDownload> wxgRecs =  itfTblWangdianWxgDownloadService.lambdaQuery()
-                .select(ItfTblWangdianWxgDownload::getWxgno,
-                        ItfTblWangdianWxgDownload::getWdno,
-                        ItfTblWangdianWxgDownload::getSfzen)
-                .eq(ItfTblWangdianWxgDownload::getWxgno,"S21A00200023")// 测试用
-                .like(ItfTblWangdianWxgDownload::getWdno,"S%").list();
-
-        log.info("开始同步网点师傅信息: {}",sdf.format(new Date()));
-
-        for (ItfTblWangdianWxgDownload wxg :wxgRecs){
-            // 参数
-            getParameter(wxg.getWdno(), wxg.getWxgno(), req);
-            // 格力总部查询工程师信息
-            GreeResponseHelper response = greeLogic.greePost(wdqyapi, JSONObject.toJSONString(req), 1);
-            if (response.getStatus() == 200){
-                WxgQueryInfo resultDatax = JSONObject.parseObject(response.getData().toString(), WxgQueryInfo.class);
-                wvos = resultDatax.getWangdianWxgVos().get(0);
-
-                // 提取师傅的服务大类信息
-                List<WorkerServiceCategoryDetail> wxgCategoryRecs = workerServiceCategoryDetailService.lambdaQuery()
-                        .eq(WorkerServiceCategoryDetail::getWorkerId, wxg.getSfzen()).list();
-
-                // 服务类型 INSTALL=安装 REPAIR=维修  DELIVERY=配送
-                Map<String, List<WorkerServiceCategoryDetail>> wxgCategoryTypeRecs = wxgCategoryRecs.stream().
-                        collect(Collectors.groupingBy(WorkerServiceCategoryDetail::getType));
-
-                // 本地提取商户师傅信息 按品牌,网点,师傅编号    师傅离职的情况不再处理 todo
-                WorkerBrandAccount workerBrandAccount = workerBrandAccountService.lambdaQuery()
-                        .eq(WorkerBrandAccount::getBrandId, brand.getBrandId())
-                        .eq(WorkerBrandAccount::getBrandWebsitNumber, wxg.getWdno())
-                        .eq(WorkerBrandAccount::getBrandWorkerNumber, wxg.getWxgno())
-                        .one();
-                try {
-                    // 存在修改 不存在不处理
-                    if (workerBrandAccount != null){
-                        // 证件同步
-                        for (ZJInfo zj:wvos.getZjInfoList()){
-                            // 同步-新增或修改证件信息
-                            workercertUpdataOrAdd(wvos, updateList, addList, workerBrandAccount, zj);
-                        }
-                        // 同步-师傅地理位置
-                        updateWorkerStreet(wvos,workerBrandAccount.getWorkerId(),brand.getBrandId(),ws);
-
-                        // 同步-师傅服务的类目信息 无则插入
-                        getServiceCategory(wvos, wscList, wscdList, brand, sysDict, wxg, wxgCategoryTypeRecs);
-
-                        // 新增或修改(证件,师傅地理位置,师傅服务的类目)
-                        addOrUpdate(updateList, addList, wscList, wscdList, ws);
-                    } else {
-                        // 新增
-
-                    }
-                } catch (Exception ex) {
-                    log.info("工程师信息同步失败:{}", ex);
-                }
-            }
-        }
-        log.info("同步网点师傅信息结束: {}",sdf.format(new Date()));
-    }
-
-
-    @Transactional(rollbackFor = Exception.class)
-    public void addOrUpdate(List<WorkerCert> updateList, List<WorkerCert> addList, List<WorkerServiceCategory> wscList, List<WorkerServiceCategoryDetail> wscdList, List<WorkerStreet> ws) {
-        // 证件同步
-        if (updateList.size()>0){
-            workerCertService.saveOrUpdate(updateList.get(0));
-        }
-        if (addList.size()>0){
-            workerCertService.saveOrUpdate(addList.get(0));
-        }
-
-        // 同步-师傅地理位置
-        if (ws.size()>0){
-            workerStreetService.updateBatchById(ws);
-        }
-
-        // 师傅服务类目新增
-        if (wscList.size()>0){
-            workerServiceCategoryService.saveBatch(wscList);
-        }
-        if (wscdList.size()>0){
-            workerServiceCategoryDetailService.saveBatch(wscdList);
-        }
-
-        updateList.clear();
-        addList.clear();
-        ws.clear();
-        wscList.clear();
-        wscdList.clear();
-    }
-
-    private void getServiceCategory(WangdianWxgVos wvos, List<WorkerServiceCategory> wscList, List<WorkerServiceCategoryDetail> wscdList,
-                                    Brand brand, SysDict sysDict, ItfTblWangdianWxgDownload wxg,
-                                    Map<String, List<WorkerServiceCategoryDetail>> wxgCategoryTypeRecs) {
-        List<String> complete = new ArrayList<>();
-        // 先处理商用
-        for (SignSplb syitem: wvos.getSySignSplbList()){
-            // 扫描每个大类
-            for (String s :syitem.getFwlbList()){
-                // 师傅服务的大类中查看是否存在 不存在新增
-                extracted(wscList, wscdList, complete, brand, sysDict, wxg, wxgCategoryTypeRecs,
-                        syitem, s,ServiceCategoryEnum.COMMERCIAL_TYPE.getCode());
-            }
-        }
-        complete.clear();
-
-        // 处理家用
-        for (SignSplb syitem: wvos.getJySignSplbList()){
-            // 扫描每个大类
-            for (String s :syitem.getFwlbList()){
-                // 师傅服务的大类中查看是否存在 不存在新增
-                extracted(wscList, wscdList, complete, brand, sysDict, wxg, wxgCategoryTypeRecs,
-                        syitem, s,ServiceCategoryEnum.HOME_TYPE.getCode());
-            }
-        }
-    }
-
-    private void extracted(List<WorkerServiceCategory> wscList, List<WorkerServiceCategoryDetail> wscdList, List<String> complete,
-                           Brand brand, SysDict sysDict, ItfTblWangdianWxgDownload wxg, Map<String,
-            List<WorkerServiceCategoryDetail>> wxgCategoryTypeRecs, SignSplb syitem, String s, String type) {
-        if ( !complete.contains(s + syitem.getSpdl())){
-            // 提取品牌商对应的大类信息
-            SysDictRef sysDictRef =  sysDictRefService.lambdaQuery()
-                    .select(SysDictRef::getDictCode,SysDictRef::getDictValue)
-                    .eq(SysDictRef::getBrandId, brand.getBrandId())
-                    .eq(SysDictRef::getDictType, DictTypeEnum.DICT_TYPE_MAIN_TYPE.getCode())
-                    .in(SysDictRef::getRefDictCode, syitem.getSpdl()).one();
-
-            if (s.equals(ServiceCategoryEnum.INSTALL_TYPE.getText())){
-                getAddInfo(wscList, wscdList, sysDict, wxg, wxgCategoryTypeRecs,
-                        sysDictRef,ServiceCategoryEnum.INSTALL_TYPE.getCode(),type);
-            } else if (s.equals(ServiceCategoryEnum.REPAIR_TYPE.getText())){
-                getAddInfo(wscList, wscdList, sysDict, wxg, wxgCategoryTypeRecs,
-                        sysDictRef,ServiceCategoryEnum.REPAIR_TYPE.getCode(),type);
-            } else if (s.equals(ServiceCategoryEnum.DELIVERY_TYPE.getText())){
-                getAddInfo(wscList, wscdList, sysDict, wxg, wxgCategoryTypeRecs,
-                        sysDictRef,ServiceCategoryEnum.DELIVERY_TYPE.getCode(),type);
-            }
-            // 新增过的无需再次新增
-            complete.add(s + syitem.getSpdl());
-        }
-    }
-
-    private void getAddInfo(List<WorkerServiceCategory> wscList, List<WorkerServiceCategoryDetail> wscdList, SysDict sysDict,
-                            ItfTblWangdianWxgDownload wxg, Map<String, List<WorkerServiceCategoryDetail>> wxgCategoryTypeRecs,
-                            SysDictRef sysDictRef, String code, String type) {
-        Boolean include = Boolean.FALSE;
-        // 看师傅是否已有(服务类型 INSTALL=安装 REPAIR=维修  DELIVERY=配送)对应的大类信息 如有不做任何处理
-        for (WorkerServiceCategoryDetail category : wxgCategoryTypeRecs.get(code)){
-            if (category.getMainId().equals(sysDictRef.getDictCode())){
-                include = Boolean.TRUE;
-                break;
-            }
-        }
-        if (!include){
-            // 新增
-            // 看 worker_service_category 有无数据,无数据新增
-            if (wxgCategoryTypeRecs.get(code).size() ==0 ){
-                WorkerServiceCategory wsc = new WorkerServiceCategory();
-                wsc.setId(IdWorker.getIdStr());
-                wsc.setWorkerId(String.valueOf(wxg.getWxgid()));
-                wsc.setServiceCategoryId(sysDict.getDictCode());
-                wsc.setServiceCategoryName(sysDict.getDictValue());
-                wsc.setType(code);
-                wsc.setCreateTime(new Date());
-                wscList.add(wsc);
-
-                // WorkerServiceCategoryDetail 新增
-                WorkerServiceCategoryDetail wscd = new WorkerServiceCategoryDetail();
-                wscd.setId(IdWorker.getIdStr());
-                wscd.setWorkerServiceCategoryId(wsc.getId());
-                wscd.setWorkerId(String.valueOf(wxg.getWxgid()));
-                wscd.setServiceCategoryId(sysDict.getDictCode());
-                wscd.setServiceCategoryName(sysDict.getDictValue());
-                wscd.setFlag(type);
-                wscd.setType(code);
-                wscd.setMainId(sysDictRef.getDictCode());
-                wscd.setMainName(sysDictRef.getDictValue());
-                wscd.setCreateTime(new Date());
-
-                wscdList.add(wscd);
-
-            } else {
-                // WorkerServiceCategoryDetail 新增
-                WorkerServiceCategoryDetail wscd = new WorkerServiceCategoryDetail();
-                wscd.setId(IdWorker.getIdStr());
-                wscd.setWorkerServiceCategoryId(wxgCategoryTypeRecs.get(code).get(0).getServiceCategoryId());
-                wscd.setWorkerId(String.valueOf(wxg.getWxgid()));
-                wscd.setServiceCategoryId(sysDict.getDictCode());
-                wscd.setServiceCategoryName(sysDict.getDictValue());
-                wscd.setFlag(type);
-                wscd.setType(code);
-                wscd.setMainId(sysDictRef.getDictCode());
-                wscd.setMainName(sysDictRef.getDictValue());
-                wscd.setCreateTime(new Date());
-                wscdList.add(wscd);
-            }
-        }
-    }
-
-    private void workercertAdd(WangdianWxgVos wvos, List<WorkerCert> addList, WorkerBrandAccount workerBrandAccount,
-                               ZJInfo zj) throws Exception {
-        // 新增
-        getAdd(addList, workerBrandAccount.getWorkerId(), zj.getZjmc(), wvos.getXingb(), zj);
-        // 上传图片
-        addUload(addList);
-    }
-
-    private void addWorkerStreet(WangdianWxgVos wvos, String brandId, List<WorkerStreet> ws) {
-        WorkerStreet n = new WorkerStreet();
-        n.setId(UUID.randomUUID().toString());
-        n.setProvinceId("");
-        n.setCityId("");
-        n.setAreaId("");
-        n.setStreetId("");
-
-        // 提取省信息
-        if (StringUtils.isNotEmpty(wvos.getSfen())){
-            Province province = provinceService.lambdaQuery()
-                    .eq(Province::getProvince, wvos.getSfen()).one();
-            if (province !=null){
-                List<BrandLbsRelate> bra = brandLbsRelateService.lambdaQuery()
-                        .eq(BrandLbsRelate::getProvinceId,province.getProvinceId())
-                        .eq(BrandLbsRelate::getBrandId,brandId).list();
-                if (bra != null && bra.size()>0){
-                    for (BrandLbsRelate br :bra){
-                        if (StringUtils.isNotEmpty(br.getLbsProvinceId()) && StringUtils.isEmpty(n.getProvinceId())){
-                            n.setProvinceId(br.getLbsProvinceId());
-                            n.setProvince(br.getLbsProvinceName());
-                        }
-                        if (StringUtils.isNotEmpty(br.getLbsCityId()) && StringUtils.isEmpty(n.getCityId())){
-                            n.setCityId(br.getLbsCityId());
-                            n.setCity(br.getLbsCityName());
-                        }
-                        if (StringUtils.isNotEmpty(br.getLbsDistrictId()) && StringUtils.isEmpty(n.getAreaId())){
-                            n.setAreaId(br.getLbsDistrictId());
-                            n.setArea(br.getLbsDistrictName());
-                        }
-                        if (StringUtils.isNotEmpty(br.getLbsStreetId()) && StringUtils.isEmpty(n.getStreetId())){
-                            n.setStreet(br.getLbsStreetId());
-                            n.setStreetId(br.getLbsStreetName());
-                            break;
-                        }
-                    }
-                }
-            }
-        }
-
-        ws.add(n);
-    }
-
-    private void updateWorkerStreet(WangdianWxgVos wvos, String workerId, String brandId, List<WorkerStreet> ws) {
-        // 师傅省市区街道信息
-        WorkerStreet old = workerStreetService.lambdaQuery()
-                .eq(WorkerStreet::getWorkerId, workerId).one();
-
-        Boolean flag = Boolean.FALSE;
-        WorkerStreet n = new WorkerStreet();
-        n.setId(old.getId());
-        n.setProvinceId("");
-        n.setCityId("");
-        n.setAreaId("");
-        n.setStreetId("");
-
-        // 提取省信息
-        if (StringUtils.isNotEmpty(wvos.getSfen())){
-            Province province = provinceService.lambdaQuery()
-                    .eq(Province::getProvince, wvos.getSfen()).one();
-            if (province !=null){
-                List<BrandLbsRelate> bra = brandLbsRelateService.lambdaQuery()
-                        .eq(BrandLbsRelate::getProvinceId,province.getProvinceId())
-                        .eq(BrandLbsRelate::getBrandId,brandId).list();
-                if (bra != null && bra.size()>0){
-                    for (BrandLbsRelate br :bra){
-                        if (StringUtils.isNotEmpty(br.getLbsProvinceId()) && StringUtils.isEmpty(n.getProvinceId())){
-                            n.setProvinceId(br.getLbsProvinceId());
-                            n.setProvince(br.getLbsProvinceName());
-                        }
-                        if (StringUtils.isNotEmpty(br.getLbsCityId()) && StringUtils.isEmpty(n.getCityId())){
-                            n.setCityId(br.getLbsCityId());
-                            n.setCity(br.getLbsCityName());
-                        }
-                        if (StringUtils.isNotEmpty(br.getLbsDistrictId()) && StringUtils.isEmpty(n.getAreaId())){
-                            n.setAreaId(br.getLbsDistrictId());
-                            n.setArea(br.getLbsDistrictName());
-                        }
-                        if (StringUtils.isNotEmpty(br.getLbsStreetId()) && StringUtils.isEmpty(n.getStreetId())){
-                            n.setStreet(br.getLbsStreetId());
-                            n.setStreetId(br.getLbsStreetName());
-                            break;
-                        }
-                    }
-                }
-            }
-        }
-
-
-        if (!old.getProvinceId().equals(n.getProvinceId())){
-            flag = Boolean.TRUE;
-        }
-        if (!old.getCityId().equals(n.getCityId())){
-            flag = Boolean.TRUE;
-        }
-        if (!old.getAreaId().equals(n.getAreaId())){
-            flag = Boolean.TRUE;
-        }
-        if (!old.getStreetId().equals(n.getStreetId())){
-            flag = Boolean.TRUE;
-        }
-        if (flag) {
-            ws.add(n);
-        }
-    }
-
-    private void workercertUpdataOrAdd(WangdianWxgVos wvos, List<WorkerCert> updateList,
-                                       List<WorkerCert> addList, WorkerBrandAccount workerBrandAccount,
-                                       ZJInfo zj) throws Exception {
-        // 师傅证件信息 按证件名提取
-        WorkerCert old = workerCertService.lambdaQuery()
-                .eq(WorkerCert::getWorkerId, workerBrandAccount.getWorkerId())
-                .eq(WorkerCert::getCertName, zj.getZjmc())
-                .one();
-
-        if (old !=null){
-            // 修改
-            getUpdate(updateList, zj, old);
-        } else {
-            // 新增
-            getAdd(addList, workerBrandAccount.getWorkerId(), zj.getZjmc(), wvos.getXingb(), zj);
-        }
-        // 上传图片
-        if (updateList.size()>0){
-            updateUpload(updateList);
-        }
-        if (addList.size()>0){
-            addUload(addList);
-        }
-    }
-
-
-    private void addUload(List<WorkerCert> addList) throws Exception {
-        if (StringUtils.isNotEmpty(addList.get(0).getOutFileUrl())) {
-            String id = IdWorker.getIdStr() + ".jpeg";
-            baseService.saveToFile(greeLogic.greeFileUrl(addList.get(0).getOutFileUrl()), id);
-            String file = id;
-            ossUtil.uploadFile(id, new File(file));
-            addList.get(0).setFileUrl(id);
-            // new File(file).delete();
-        }
-        if (StringUtils.isNotEmpty(addList.get(0).getOutFileUrl2())) {
-            String id = IdWorker.getIdStr() + ".jpeg";
-            baseService.saveToFile(greeLogic.greeFileUrl(addList.get(0).getOutFileUrl2()), id);
-            String file = id;
-            ossUtil.uploadFile(id, new File(file));
-            addList.get(0).setFileUrl2(id);
-            // new File(file).delete();
-        }
-    }
-
-    private void updateUpload(List<WorkerCert> updateList) throws Exception {
-        if (StringUtils.isNotEmpty(updateList.get(0).getOutFileUrl())) {
-            String id = IdWorker.getIdStr() + ".jpeg";
-            baseService.saveToFile(greeLogic.greeFileUrl(updateList.get(0).getOutFileUrl()), id);
-            String file = id;
-            ossUtil.uploadFile(file, new File(file));
-            updateList.get(0).setFileUrl(id);
-            new File(file).delete();
-        }
-        if (StringUtils.isNotEmpty(updateList.get(0).getOutFileUrl2())) {
-            String id = IdWorker.getIdStr() + ".jpeg";
-            baseService.saveToFile(greeLogic.greeFileUrl(updateList.get(0).getOutFileUrl2()), id);
-            String file = id;
-            ossUtil.uploadFile(file, new File(file));
-            updateList.get(0).setFileUrl2(id);
-            new File(file).delete();
-        }
-    }
-
-
-    private void getAdd(List<WorkerCert> addList, String workerId, String zjmc,String xingb,  ZJInfo zj) throws ParseException {
-        WorkerCert add = new WorkerCert();
-        add.setId(UUID.randomUUID().toString());
-        add.setWorkerId(workerId);
-        add.setCertName(zjmc);
-        if (zj.getZjlj().contains(",")){
-            List<String> result = Arrays.asList(zj.getZjlj().split(","));
-            add.setOutFileUrl(result.get(0));
-            add.setOutFileUrl2(result.get(1));
-        } else {
-            add.setOutFileUrl(zj.getZjlj());
-        }
-        if (zj.getZjbh().contains("/")){
-            List<String> result = Arrays.asList(zj.getZjbh().split("/"));
-            add.setCertNo(result.get(1));
-        } else {
-            add.setCertNo(zj.getZjbh());
-        }
-        add.setExpireTime(baseService.utcToDateStr(zj.getZjyxq()));
-        add.setReviewTime(baseService.utcToDateStr(zj.getZjfssj()));
-        add.setExamineStatus("OK");
-        add.setSex(xingb);
-        add.setOutSyncStatus(1);
-        add.setOutSyncTime(new Date());
-
-        addList.add(add);
-    }
-
-
-
-    private void getUpdate(List<WorkerCert> updateList,ZJInfo zj,WorkerCert old){
-        Boolean flag = Boolean.FALSE;
-        WorkerCert up = new WorkerCert();
-        if (zj.getZjlj().contains(",")){
-            List<String> result = Arrays.asList(zj.getZjlj().split(","));
-            if ((!old.getOutFileUrl().equals(result.get(0)) && !old.getOutFileUrl2().equals(result.get(0)))
-                    || (!old.getOutFileUrl().equals(result.get(1)) && !old.getOutFileUrl2().equals(result.get(1)))){
-                up.setId(old.getId());
-                up.setOutFileUrl(result.get(0));
-                up.setOutFileUrl2(result.get(1));
-                flag = Boolean.TRUE;
-            }
-        } else {
-            if (!old.getOutFileUrl().equals(zj.getZjlj()) && !old.getOutFileUrl2().equals(zj.getZjlj())) {
-                up.setId(old.getId());
-                up.setOutFileUrl(zj.getZjlj());
-                flag = Boolean.TRUE;
-            }
-        }
-        if (flag){
-            up.setOutSyncTime(new Date());
-            updateList.add(up);
-        }
-    }
-
-    private void getParameter(String wdno, String wxgno, Map<String, Object> req) {
-        req.put("wdno", wdno);
-        req.put("wxgno", wxgno);
-        req.put("page", 1);
-        req.put("size", 20);
-        req.put("xsgsshstat", 2);
-    }
-
-
-  /*  private GreeResponseHelper getWxgInfo(String apiPath, String wdno, String wxgno) throws Exception {
-        Map<String,Object> req = new HashMap<>();
-        getParameter(wdno, wxgno, req, 1);
-        return greeLogic.greePost(apiPath, JSONObject.toJSONString(req), 1);
-    }*/
-
-
-}

+ 5 - 4
src/main/java/com/zfire/jiasm/syncdata/download/GLPPGFWebsit.java → src/main/java/com/zfire/jiasm/syncdata/download/basedata/GLPPGFWebsit.java

@@ -1,4 +1,4 @@
-package com.zfire.jiasm.syncdata.download;
+package com.zfire.jiasm.syncdata.download.basedata;
 
 import cn.hutool.core.bean.BeanUtil;
 import com.alibaba.fastjson.JSON;
@@ -115,7 +115,7 @@ public class GLPPGFWebsit {
      * X2100000 广州销售网点基础资料下载
      * @return
      */
-    @Scheduled(fixedDelay = 1 * 90 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     @Transactional(rollbackFor = Exception.class)
     public void processGZXSWDTask() throws Exception {
         if (1==1){
@@ -169,7 +169,7 @@ public class GLPPGFWebsit {
      * S9219807 佛山售后网点基础资料下载
      * @return
      */
-    @Scheduled(fixedDelay = 2 * 60 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     @Transactional(rollbackFor = Exception.class)
     public void processFSSHWDTask() throws Exception {
         if (1==1){
@@ -225,7 +225,7 @@ public class GLPPGFWebsit {
      * S9219801 广州售后网点基础资料下载
      * @return
      */
-    @Scheduled(fixedDelay = 3 * 60 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     @Transactional(rollbackFor = Exception.class)
     public void processGZSHWDTask() throws Exception {
         if (1==1){
@@ -862,6 +862,7 @@ public class GLPPGFWebsit {
         for (int i = 0; i < jsonArray.size(); i++) {
             JSONObject aData = jsonArray.getJSONObject(i);
             ItfTblXinWangdianDownload item = JSON.toJavaObject(aData,ItfTblXinWangdianDownload.class);
+
             // 新增或修改数据
             flag = Boolean.FALSE;
             // 修改

+ 371 - 14
src/main/java/com/zfire/jiasm/syncdata/download/GLPPGFWebsitWorker.java → src/main/java/com/zfire/jiasm/syncdata/download/basedata/GLPPGFWebsitWorker.java

@@ -1,4 +1,4 @@
-package com.zfire.jiasm.syncdata.download;
+package com.zfire.jiasm.syncdata.download.basedata;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -92,7 +92,7 @@ public class GLPPGFWebsitWorker {
      * X2100000 广州销售网点维修工基础资料下载
      * @return
      */
-    @Scheduled(fixedDelay = 1 * 90 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     @Transactional(rollbackFor = Exception.class)
     public void processGZXSWDTask() throws Exception {
         if (1==1){
@@ -137,7 +137,7 @@ public class GLPPGFWebsitWorker {
      * S9219807 佛山售后网点维修工基础资料下载
      * @return
      */
-    @Scheduled(fixedDelay = 2 * 60 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     @Transactional(rollbackFor = Exception.class)
     public void processFSSHWDTask() throws Exception {
         if (1==1){
@@ -182,7 +182,7 @@ public class GLPPGFWebsitWorker {
      * S9219801 广州售后网点维修工基础资料下载
      * @return
      */
-    @Scheduled(fixedDelay = 3 * 60 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     @Transactional(rollbackFor = Exception.class)
     public void processGZSHWDTask() throws Exception {
         if (1==1){
@@ -229,13 +229,13 @@ public class GLPPGFWebsitWorker {
 
         // 获取新增的
         if (addRec.size()>0){
-            extractedWorkerAdd(addRec, addWorkerRec);
+            extractedWorkerAddNew(addRec, addWorkerRec);
         }
 
-        // 获取修改的
-        if (updateRec.size()>0){
-            extractedWorkerUpdate(updateRec, updateWorkerRec);
-        }
+        // 获取修改的   取消修改
+        /*if (updateRec.size()>0){
+            extractedWorkerUpdateNew(updateRec, updateWorkerRec);
+        }*/
 
         // 新增的插入到表
         if (addWorkerRec.size()>0){
@@ -249,6 +249,26 @@ public class GLPPGFWebsitWorker {
         }
     }
 
+    private void extractedWorkerUpdateNew(List<ItfTblWangdianWxgDownload> updateRec, List<Worker> updateWorkerRec) {
+        Boolean flag;
+        // 提取原有的信息
+        List<Worker> oldWorkerRec =  workerService.lambdaQuery().list();
+        Map<String, List<Worker>> oldRecMap = oldWorkerRec.stream().collect(Collectors.groupingBy(Worker::getWorkerId));
+
+        for (ItfTblWangdianWxgDownload m : updateRec){
+            flag = Boolean.FALSE;
+            Worker o = oldRecMap.get(String.valueOf(m.getSfzen())).get(0);
+            // 网点编号不相同不修改
+            if (!o.getWebsitNumber().equals(m.getWdno())){
+                continue;
+            }
+            getUpdateInfo(updateWorkerRec, flag, m, o);
+        }
+    }
+
+
+
+    // 备份不用
     private void extractedWorkerUpdate(List<ItfTblWangdianWxgDownload> updateRec, List<Worker> updateWorkerRec) {
         Boolean flag;
         // 提取原有的信息
@@ -257,7 +277,7 @@ public class GLPPGFWebsitWorker {
 
         for (ItfTblWangdianWxgDownload m : updateRec){
             flag = Boolean.FALSE;
-            Worker o = oldRecMap.get(String.valueOf(m.getWxgid())).get(0);
+            Worker o = oldRecMap.get(String.valueOf(m.getSfzen())).get(0);
             Worker v = new Worker();
             v.setWorkerId(o.getWorkerId());
 
@@ -269,10 +289,7 @@ public class GLPPGFWebsitWorker {
             if (m.getLastModifiedDate() != null){
                 v.setUpdateTime(m.getLastModifiedDate());
             }
-            /*if (StringUtils.isNotEmpty(m.getWxgno()) && !o.getWorkerNo().equals(m.getWxgno())){
-                v.setWorkerNo(m.getWxgno());
-                flag = Boolean.TRUE;
-            }*/
+
             if (!o.getWorkerName().equals(m.getWxgmc())){
                 v.setWorkerName(m.getWxgmc());
                 flag = Boolean.TRUE;
@@ -491,6 +508,346 @@ public class GLPPGFWebsitWorker {
         }
     }
 
+    private void extractedWorkerAddNew(List<ItfTblWangdianWxgDownload> addRec, List<Worker> addWorkerRec) {
+        // 提取原有的信息
+        List<Worker> oldWorkerRec =  workerService.lambdaQuery()
+                .select(Worker::getWorkerId).list();
+        Map<String, List<Worker>> oldRecMap = oldWorkerRec.stream().collect(Collectors.groupingBy(Worker::getWorkerId));
+        List<String> sfzens = new ArrayList<>();
+
+        for (ItfTblWangdianWxgDownload m : addRec){
+            // 已存在不再添加
+            if (oldRecMap.containsKey(m.getSfzen()) || sfzens.contains(m.getSfzen())){
+                continue;
+            }
+
+            // 无效的数据不新增
+            if (m.getFlag() != null){
+                if (!m.getFlag().trim().equals(DictTypeEnum.DICT_TYPE_FLAG_ON.getCode())){
+                    continue;
+                }
+            }
+
+            // 生成对象
+            getWorker(addWorkerRec, sfzens, m);
+
+            // 新增的插入到表
+            if (addWorkerRec.size()>=3000){
+                workerService.saveBatch(addWorkerRec);
+                log.info("本地网点维修工人员信息表新增插入了{}条数据", addWorkerRec.size());
+                addWorkerRec.clear();
+            }
+        }
+    }
+
+    private void getWorker(List<Worker> addWorkerRec, List<String> sfzens, ItfTblWangdianWxgDownload m) {
+        Worker v = new Worker();
+         v.setSyncFlag(1);
+        v.setWorkerId(String.valueOf(m.getSfzen()));
+        //v.setIsReal("YES");
+        // v.setFddReal("NO");
+        // v.setFddSerialNo();
+        // v.setIsApplyOver("NO");
+        v.setCreateBy("system");
+        v.setUpdateBy("system");
+        v.setCreateTime(new Date());
+        v.setUpdateTime(new Date());
+            /*if (m.getCreatedBy() != null){
+                v.setCreateBy(m.getCreatedBy());
+            }
+            if (m.getCreatedDate() != null){
+                v.setCreateTime(m.getCreatedDate());
+            }
+            if (m.getLastModifiedBy() != null){
+                v.setUpdateBy(m.getLastModifiedBy());
+            }
+            if (m.getLastModifiedDate() != null){
+                v.setUpdateTime(m.getLastModifiedDate());
+            }*/
+        v.setWorkerName(m.getWxgmc());
+        // v.setStatus(DictTypeEnum.DICT_TYPE_ON.getCode());
+            /*if (m.getFlag() != null){
+                if (!m.getFlag().trim().equals(DictTypeEnum.DICT_TYPE_FLAG_ON.getCode())){
+                    v.setStatus(DictTypeEnum.DICT_TYPE_OFF.getCode());
+                }
+            }*/
+
+        // 工程师类型
+        // v.setWorkerType();
+        // v.setBirthDate();
+        v.setGender(m.getXingb());
+        v.setMobile(m.getYddh());
+        v.setIdcard(m.getSfzen());
+        v.setAge(m.getNianl());
+        // v.setNameLevel();
+        // v.setIntegralLevel();
+        // v.setUserNameLevel();
+        // v.setIntegralFree()
+        v.setEducation(m.getXueli());
+
+
+
+
+        // v.setAddress();
+        /*v.setIsSmsNotice(DictTypeEnum.RECEIVE_TYPE_NO.getCode());
+        if (m.getIfmessage() != null){
+            if (!m.getIfmessage().trim().equals(DictTypeEnum.RECEIVE_TYPE_YES.getText())){
+                v.setIsSmsNotice(DictTypeEnum.RECEIVE_TYPE_YES.getCode());
+            }
+        }
+        v.setIsBlackList(DictTypeEnum.HMD_TYPE_NO.getCode());
+        if (m.getSfhmd() != null){
+            if (!m.getSfhmd().trim().equals(DictTypeEnum.HMD_TYPE_YES.getText())){
+                v.setIsBlackList(DictTypeEnum.HMD_TYPE_YES.getCode());
+            }
+        }
+        v.setBlackListRemark(m.getHmdbz());
+        v.setExamineStatus(v.getStatus());*/
+
+        v.setNvq(m.getZgzh());
+        // v.setWebsitNumber(m.getWdno());
+        v.setSafeNo(m.getGmbxdh());
+        // v.setTrain(m.getPxqk());
+        v.setSkillLevel(m.getJsdj());
+        v.setRemark(m.getBeiz());
+
+        // 不能用
+        // v.setAdminUserId(m.getUsid());
+
+        v.setIsZst(DictTypeEnum.ZST_TYPE_NO.getCode());
+        if (m.getSfzst() != null){
+            if (!m.getSfzst().trim().equals(DictTypeEnum.ZST_TYPE_YES.getText())){
+                v.setIsZst(DictTypeEnum.ZST_TYPE_YES.getCode());
+            }
+        }
+        v.setZstExamineRemark(m.getShyj());
+        v.setZstTime(m.getZstsj());
+
+        v.setSafeCompany(m.getGmbxgs());
+        v.setGmbxyxq(m.getGmbxyxq());
+
+        v.setTrainStatus(Boolean.FALSE);
+        if (m.getSfpxhg()>0){
+            v.setTrainStatus(Boolean.TRUE);
+        }
+        v.setNewOldFlag(m.getXjflag());
+        v.setCollectNum(m.getMrcjgdl());
+        v.setCollectEnginNum(m.getMrcjgcjgdl());
+        v.setCollectLimitNum(m.getYxcjgdl());
+        v.setCollectEnginLimitNum(m.getYxcjgcjgdl());
+        v.setMrdate(m.getMrdate());
+        v.setSaleExamineBy(m.getXsgsshren());
+        v.setSaleExamineTime(m.getXsgsshsj());
+        v.setSaleExamineStatus(m.getXsgsshstat());
+        v.setSaleExamineRemark(m.getXsgsshbeiz());
+        v.setSaleZstExamineBy(m.getZstshren());
+        v.setScore(m.getWxfensu());
+        v.setOldMobile(m.getYddhold());
+ /*       v.setHasFace(m.getHasface());
+        v.setFacePath(m.getFacepath());
+        v.setFaceCheck(m.getFacecheck());*/
+        v.setCarNo(m.getCphm());
+        v.setGpsMachineId(m.getGpsid());
+        v.setVipFlag(m.getVipflag());
+
+
+
+        addWorkerRec.add(v);
+        sfzens.add(m.getSfzen());
+    }
+
+    private void getUpdateInfo(List<Worker> updateWorkerRec, Boolean flag, ItfTblWangdianWxgDownload m, Worker o) {
+        Worker v = new Worker();
+        v.setWorkerId(o.getWorkerId());
+
+
+        v.setUpdateBy("system");
+        v.setUpdateTime(new Date());
+        if (m.getLastModifiedBy() != null){
+            v.setUpdateBy(m.getLastModifiedBy());
+        }
+        if (m.getLastModifiedDate() != null){
+            v.setUpdateTime(m.getLastModifiedDate());
+        }
+
+        if (!o.getWorkerName().equals(m.getWxgmc())){
+            v.setWorkerName(m.getWxgmc());
+            flag = Boolean.TRUE;
+        }
+        if (!o.getGender().equals(m.getXingb())){
+            v.setGender(m.getXingb());
+            flag = Boolean.TRUE;
+        }
+        if (m.getSfzen() !=null && !o.getIdcard().equals(m.getSfzen())){
+            v.setIdcard(m.getSfzen());
+            flag = Boolean.TRUE;
+        }
+        if (m.getXueli() !=null && !o.getEducation().equals(m.getXueli())){
+            v.setEducation(m.getXueli());
+            flag = Boolean.TRUE;
+        }
+        if (!o.getAge().equals(m.getNianl())){
+            v.setAge(m.getNianl());
+            flag = Boolean.TRUE;
+        }
+        if (m.getYddh() !=null && !o.getMobile().equals(m.getYddh())){
+            v.setMobile(m.getYddh());
+            flag = Boolean.TRUE;
+        }
+
+        if (m.getZgzh() !=null && !o.getNvq().equals(m.getZgzh())){
+            v.setNvq(m.getZgzh());
+            flag = Boolean.TRUE;
+        }
+        if (m.getGmbxdh() !=null && !o.getSafeNo().equals(m.getGmbxdh())){
+            v.setSafeNo(m.getGmbxdh());
+            flag = Boolean.TRUE;
+        }
+
+        if (m.getJsdj() !=null && !o.getSkillLevel().equals(m.getJsdj())){
+            v.setSkillLevel(m.getJsdj());
+            flag = Boolean.TRUE;
+        }
+        if (m.getBeiz() !=null && !o.getRemark().equals(m.getBeiz())){
+            v.setRemark(m.getBeiz());
+            flag = Boolean.TRUE;
+        }
+
+        if (m.getSfzst().trim().equals(DictTypeEnum.ZST_TYPE_YES.getText())) {
+            if (!o.getIsZst().equals(DictTypeEnum.ZST_TYPE_YES.getCode())){
+                v.setIsZst(DictTypeEnum.ZST_TYPE_YES.getCode());
+                flag = Boolean.TRUE;
+            }
+        } else {
+            if (!o.getIsZst().equals(DictTypeEnum.ZST_TYPE_NO.getCode())){
+                v.setIsZst(DictTypeEnum.ZST_TYPE_NO.getCode());
+                flag = Boolean.TRUE;
+            }
+        }
+        if (m.getShyj() !=null && !o.getZstExamineRemark().equals(m.getShyj())){
+            v.setZstExamineRemark(m.getShyj());
+            flag = Boolean.TRUE;
+        }
+        if (m.getZstsj() !=null && !o.getZstTime().equals(m.getZstsj())){
+            v.setZstTime(m.getZstsj());
+            flag = Boolean.TRUE;
+        }
+        if (m.getSfhmd().trim().equals(DictTypeEnum.HMD_TYPE_YES.getText())) {
+            if (!o.getIsBlackList().equals(DictTypeEnum.HMD_TYPE_YES.getCode())){
+                v.setIsBlackList(DictTypeEnum.HMD_TYPE_YES.getCode());
+                flag = Boolean.TRUE;
+            }
+        } else {
+            if (!o.getIsBlackList().equals(DictTypeEnum.HMD_TYPE_NO.getCode())){
+                v.setIsBlackList(DictTypeEnum.HMD_TYPE_NO.getCode());
+                flag = Boolean.TRUE;
+            }
+        }
+        if (m.getGmbxgs() !=null && !o.getSafeCompany().equals(m.getGmbxgs())){
+            v.setSafeCompany(m.getGmbxgs());
+            flag = Boolean.TRUE;
+        }
+        if (m.getGmbxyxq() !=null && !o.getGmbxyxq().equals(m.getGmbxyxq())){
+            v.setGmbxyxq(m.getGmbxyxq());
+            flag = Boolean.TRUE;
+        }
+        if (m.getHmdbz() !=null && !o.getBlackListRemark().equals(m.getHmdbz())){
+            v.setBlackListRemark(m.getHmdbz());
+            flag = Boolean.TRUE;
+        }
+        if (m.getSfpxhg()>0){
+            if (!o.getTrainStatus()){
+                v.setTrainStatus(Boolean.TRUE);
+                flag = Boolean.TRUE;
+            }
+        } else {
+            if (o.getTrainStatus()){
+                v.setTrainStatus(Boolean.FALSE);
+                flag = Boolean.TRUE;
+            }
+        }
+        if (!o.getNewOldFlag().equals(m.getXjflag())){
+            v.setNewOldFlag(m.getXjflag());
+            flag = Boolean.TRUE;
+        }
+        if (!o.getCollectNum().equals(m.getMrcjgdl())){
+            v.setCollectNum(m.getMrcjgdl());
+            flag = Boolean.TRUE;
+        }
+        if (!o.getCollectEnginNum().equals(m.getMrcjgcjgdl())){
+            v.setCollectEnginNum(m.getMrcjgcjgdl());
+            flag = Boolean.TRUE;
+        }
+        if (!o.getCollectLimitNum().equals(m.getYxcjgdl())){
+            v.setCollectLimitNum(m.getYxcjgdl());
+            flag = Boolean.TRUE;
+        }
+        if (!o.getCollectEnginLimitNum().equals(m.getYxcjgcjgdl())){
+            v.setCollectEnginLimitNum(m.getYxcjgcjgdl());
+            flag = Boolean.TRUE;
+        }
+        if (m.getMrdate() !=null && !o.getMrdate().equals(m.getMrdate())){
+            v.setMrdate(m.getMrdate());
+            flag = Boolean.TRUE;
+        }
+        if (m.getXsgsshren() !=null && !o.getSaleExamineBy().equals(m.getXsgsshren())){
+            v.setSaleExamineBy(m.getXsgsshren());
+            flag = Boolean.TRUE;
+        }
+        if (m.getXsgsshsj() !=null && !o.getSaleExamineTime().equals(m.getXsgsshsj())){
+            v.setSaleExamineTime(m.getXsgsshsj());
+            flag = Boolean.TRUE;
+        }
+        if (!o.getSaleExamineStatus().equals(m.getXsgsshstat())){
+            v.setSaleExamineStatus(m.getXsgsshstat());
+            flag = Boolean.TRUE;
+        }
+        if (m.getXsgsshbeiz() !=null && !o.getSaleExamineRemark().equals(m.getXsgsshbeiz())){
+            v.setSaleExamineRemark(m.getXsgsshbeiz());
+            flag = Boolean.TRUE;
+        }
+        if (m.getZstshren() !=null && !o.getSaleZstExamineBy().equals(m.getZstshren())){
+            v.setSaleZstExamineBy(m.getZstshren());
+            flag = Boolean.TRUE;
+        }
+        if (!o.getScore().equals(m.getWxfensu())){
+            v.setScore(m.getWxfensu());
+            flag = Boolean.TRUE;
+        }
+        if (m.getYddhold() !=null && !o.getOldMobile().equals(m.getYddhold())){
+            v.setOldMobile(m.getYddhold());
+            flag = Boolean.TRUE;
+        }
+        if (!o.getHasFace().equals(m.getHasface())){
+            v.setHasFace(m.getHasface());
+            flag = Boolean.TRUE;
+        }
+        if (m.getFacepath() !=null && !o.getFacePath().equals(m.getFacepath())){
+            v.setFacePath(m.getFacepath());
+            flag = Boolean.TRUE;
+        }
+        if (!o.getFaceCheck().equals(m.getFacecheck())){
+            v.setFaceCheck(m.getFacecheck());
+            flag = Boolean.TRUE;
+        }
+        if (m.getCphm() !=null && !o.getCarNo().equals(m.getCphm())){
+            v.setCarNo(m.getCphm());
+            flag = Boolean.TRUE;
+        }
+        if (m.getGpsid() !=null && !o.getGpsMachineId().equals(m.getGpsid())){
+            v.setGpsMachineId(m.getGpsid());
+            flag = Boolean.TRUE;
+        }
+        if (m.getVipflag() !=null && !o.getVipFlag().equals(m.getVipflag())){
+            v.setVipFlag(m.getVipflag());
+            flag = Boolean.TRUE;
+        }
+        if (flag){
+            updateWorkerRec.add(v);
+        }
+    }
+
+    // 备份不用
     private void extractedWorkerAdd(List<ItfTblWangdianWxgDownload> addRec, List<Worker> addWorkerRec) {
         for (ItfTblWangdianWxgDownload m : addRec){
             Worker v = new Worker();

+ 3 - 3
src/main/java/com/zfire/jiasm/syncdata/download/GLPPGuZhandDaiMaTask.java → src/main/java/com/zfire/jiasm/syncdata/download/basedata/GLPPGuZhandDaiMa.java

@@ -1,4 +1,4 @@
-package com.zfire.jiasm.syncdata.download;
+package com.zfire.jiasm.syncdata.download.basedata;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -34,7 +34,7 @@ import java.util.stream.Collectors;
  */
 @Slf4j
 @Component
-public class GLPPGuZhandDaiMaTask {
+public class GLPPGuZhandDaiMa {
     @Value("${baseurl}")
     private String baseurl = "";
 
@@ -57,7 +57,7 @@ public class GLPPGuZhandDaiMaTask {
      * 格力品牌固障代码资料信息同步
      * @return
      */
-    @Scheduled(fixedDelay = 1 * 30 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     @Transactional(rollbackFor = Exception.class)
     public void processGZDMTask() throws Exception {
         if (1==1){

+ 5 - 5
src/main/java/com/zfire/jiasm/syncdata/download/GLPPLeiBieTask.java → src/main/java/com/zfire/jiasm/syncdata/download/basedata/GLPPLeiBie.java

@@ -1,4 +1,4 @@
-package com.zfire.jiasm.syncdata.download;
+package com.zfire.jiasm.syncdata.download.basedata;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -28,7 +28,7 @@ import java.util.stream.Collectors;
  */
 @Slf4j
 @Component
-public class GLPPLeiBieTask {
+public class GLPPLeiBie {
     @Value("${baseurl}")
     private String baseurl = "";
 
@@ -60,7 +60,7 @@ public class GLPPLeiBieTask {
      * 格力品牌大类基础资料信息同步
      * @return
      */
-    @Scheduled(fixedDelay = 1 * 30 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     @Transactional(rollbackFor = Exception.class)
     public void processDLTask() throws Exception {
         if (1==1){
@@ -172,7 +172,7 @@ public class GLPPLeiBieTask {
      * 格力品牌系列基础资料信息同步
      * @return
      */
-    @Scheduled(fixedDelay = 1 * 90 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     @Transactional(rollbackFor = Exception.class)
     public void processPPXLTask() throws Exception {
         if (1==1){
@@ -227,7 +227,7 @@ public class GLPPLeiBieTask {
      * 格力品牌机型基础资料信息同步
      * @return
      */
-    @Scheduled(fixedDelay = 2 * 60 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     @Transactional(rollbackFor = Exception.class)
     public void processPPJXTask() throws Exception {
         if (1==1){

+ 3 - 3
src/main/java/com/zfire/jiasm/syncdata/download/GLPPXSLXTask.java → src/main/java/com/zfire/jiasm/syncdata/download/basedata/GLPPXSLXDownload.java

@@ -1,4 +1,4 @@
-package com.zfire.jiasm.syncdata.download;
+package com.zfire.jiasm.syncdata.download.basedata;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -29,7 +29,7 @@ import java.util.stream.Collectors;
  */
 @Slf4j
 @Component
-public class GLPPXSLXTask {
+public class GLPPXSLXDownload {
     @Value("${baseurl}")
     private String baseurl = "";
 
@@ -47,7 +47,7 @@ public class GLPPXSLXTask {
      * 格力品牌安装销售类型信息同步
      * @return
      */
-    @Scheduled(fixedDelay = 1 * 30 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     @Transactional(rollbackFor = Exception.class)
     public void processXSLXTask() throws Exception {
         if (1==1){

+ 4 - 4
src/main/java/com/zfire/jiasm/syncdata/download/GLPPXQLBTask.java → src/main/java/com/zfire/jiasm/syncdata/download/basedata/GLPPXuQiuLeiBie.java

@@ -1,4 +1,4 @@
-package com.zfire.jiasm.syncdata.download;
+package com.zfire.jiasm.syncdata.download.basedata;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -27,7 +27,7 @@ import java.util.stream.Collectors;
  */
 @Slf4j
 @Component
-public class GLPPXQLBTask {
+public class GLPPXuQiuLeiBie {
     @Value("${baseurl}")
     private String baseurl = "";
 
@@ -50,7 +50,7 @@ public class GLPPXQLBTask {
      * 格力品牌需求大类基础资料信息同步
      * @return
      */
-    @Scheduled(fixedDelay = 1 * 30 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     @Transactional(rollbackFor = Exception.class)
     public void processXQDLTask() throws Exception {
         if (1==1){
@@ -107,7 +107,7 @@ public class GLPPXQLBTask {
      * 格力品牌需求小类基础资料信息同步
      * @return
      */
-    @Scheduled(fixedDelay = 1 * 30 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     @Transactional(rollbackFor = Exception.class)
     public void processXQXLTask() throws Exception {
         if (1==1){

+ 6 - 6
src/main/java/com/zfire/jiasm/syncdata/download/GLPPYHSXTask.java → src/main/java/com/zfire/jiasm/syncdata/download/basedata/GLPPYHSXXXQD.java

@@ -1,4 +1,4 @@
-package com.zfire.jiasm.syncdata.download;
+package com.zfire.jiasm.syncdata.download.basedata;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -27,7 +27,7 @@ import java.util.stream.Collectors;
  */
 @Slf4j
 @Component
-public class GLPPYHSXTask {
+public class GLPPYHSXXXQD {
     @Value("${baseurl}")
     private String baseurl = "";
 
@@ -54,7 +54,7 @@ public class GLPPYHSXTask {
      * 格力品牌用户属性信息同步
      * @return
      */
-    @Scheduled(fixedDelay = 1 * 30 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     @Transactional(rollbackFor = Exception.class)
     public void processYHSXTask() throws Exception {
         if (1==1){
@@ -99,7 +99,7 @@ public class GLPPYHSXTask {
      * 格力品牌用户等级信息同步
      * @return
      */
-    @Scheduled(fixedDelay = 1 * 30 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     @Transactional(rollbackFor = Exception.class)
     public void processYHDJTask() throws Exception {
         if (1==1){
@@ -145,7 +145,7 @@ public class GLPPYHSXTask {
      * 格力品牌信息渠道信息同步
      * @return
      */
-    @Scheduled(fixedDelay = 1 * 30 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     @Transactional(rollbackFor = Exception.class)
     public void processXXQDTask() throws Exception {
         if (1==1){
@@ -191,7 +191,7 @@ public class GLPPYHSXTask {
      * 格力品牌信息来源信息同步
      * @return
      */
-    @Scheduled(fixedDelay = 1 * 30 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     @Transactional(rollbackFor = Exception.class)
     public void processXXLYTask() throws Exception {
         if (1==1){

+ 5 - 5
src/main/java/com/zfire/jiasm/syncdata/download/ProvinceCityAreaTownTask.java → src/main/java/com/zfire/jiasm/syncdata/download/basedata/ProvinceCityAreaTown.java

@@ -1,4 +1,4 @@
-package com.zfire.jiasm.syncdata.download;
+package com.zfire.jiasm.syncdata.download.basedata;
 
 import cn.hutool.extra.pinyin.PinyinUtil;
 import com.alibaba.fastjson.JSON;
@@ -31,7 +31,7 @@ import java.util.stream.Collectors;
  */
 @Slf4j
 @Component
-public class ProvinceCityAreaTownTask {
+public class ProvinceCityAreaTown {
     @Value("${baseurl}")
     private String baseurl = "";
 
@@ -60,7 +60,7 @@ public class ProvinceCityAreaTownTask {
      * 省份基础资料信息同步
      * @return
      */
-    @Scheduled(fixedDelay = 1 * 30 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     @Transactional(rollbackFor = Exception.class)
     public void processProvinceTask() throws IOException {
         try{
@@ -176,7 +176,7 @@ public class ProvinceCityAreaTownTask {
      * 区基础资料信息同步
      * @return
      */
-    @Scheduled(fixedDelay = 1 * 90 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     @Transactional(rollbackFor = Exception.class)
     public void processCountyTask() throws IOException {
         try{
@@ -227,7 +227,7 @@ public class ProvinceCityAreaTownTask {
      * 乡镇基础资料信息同步
      * @return
      */
-    @Scheduled(fixedDelay = 2 * 60 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     @Transactional(rollbackFor = Exception.class)
     public void processCityJDTask() throws IOException {
         try{

+ 1329 - 0
src/main/java/com/zfire/jiasm/syncdata/download/order/AnzhuangGongDanBusiness.java

@@ -0,0 +1,1329 @@
+package com.zfire.jiasm.syncdata.download.order;
+
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.zfire.jiasm.syncdata.base.BaseService;
+import com.zfire.jiasm.syncdata.constant.ESInstallEnum;
+import com.zfire.jiasm.syncdata.dao.mapper.AzGDLcLsDownloadMapper;
+import com.zfire.jiasm.syncdata.data.Token;
+import com.zfire.jiasm.syncdata.plus.entity.*;
+import com.zfire.jiasm.syncdata.plus.service.*;
+import com.zfire.jiasm.syncdata.utils.DataUtil;
+import com.zfire.jiasm.syncdata.utils.HttpUtil;
+import com.zfire.jiasm.syncdata.utils.JSONResult;
+import com.zfire.jiasm.syncdata.utils.TokenCenter;
+import lombok.extern.slf4j.Slf4j;
+import org.jetbrains.annotations.NotNull;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * 格力品牌安装工单下载后落本地数据表
+ * 3:落业务表
+ *:4:修改下载主表处理结果
+ * 3-4需增加单独任务,确保中断异常
+ */
+@Slf4j
+@Component
+public class AnzhuangGongDanBusiness {
+    @Value("${baseurl}")
+    private String baseurl = "";
+
+    @Autowired
+    private TokenCenter tokenCenter;
+    @Resource
+    ItfInstallBatchDownloadRecService itfInstallBatchDownloadRecService;
+    @Resource
+    ItfTblAzAssignLcLsDownloadService itfTblAzAssignLcLsDownloadService;
+    @Resource
+    ItfTblAzAssignMxDownloadService itfTblAzAssignMxDownloadService;
+    @Resource
+    ItfTblAzAssignFkmxDownloadService itfTblAzAssignFkMxDownloadService;
+    @Resource
+    ItfTblAzAssignFeeDownloadService itfTblAzAssignFeeDownloadService;
+    @Resource
+    ItfTblAzAssignAppointmentDownloadService itfTblAzAssignAppointmentDownloadService;
+    @Resource
+    ItfTblAzAssignLcFzryDownloadService itfTblAzAssignLcFzryDownloadService;
+    @Resource
+    ItfTblAzAssignSatisfactionDownloadService itfTblAzAssignSatisfactionDownloadService;
+    @Resource
+    ItfTblAzAssignPlatformDownloadService itfTblAzAssignPlatformDownloadService;
+    @Resource
+    AzGDLcLsDownloadMapper azGDLcLsDownloadMapper;
+    @Resource
+    BaseService baseService;
+
+
+    // 3:工单落入本地表
+    @Scheduled(fixedDelay = 1 * 30 * 1000)
+    public void inputOrderInstall() throws Exception {
+
+        if (1 == 1) {
+            return;
+        }
+
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        List<ItfTblAzAssignLcLsDownload> lcls = new ArrayList<>();
+        OrderBase orderBase = new OrderBase();
+
+        log.info("安装工单落本地表开始处理: {}",sdf.format(new Date()));
+
+        lcls = itfTblAzAssignLcLsDownloadService.lambdaQuery()
+                .eq(ItfTblAzAssignLcLsDownload::getSynStatus,0)
+                .eq(ItfTblAzAssignLcLsDownload::getSynReqId,1)
+                .list();
+        // 按单处理
+        for (ItfTblAzAssignLcLsDownload item: lcls) {
+            // 处理安装工单主表
+            extractedOrderInstall(item);
+
+            // 省市区单独处理
+            /*select aa.area,aa.area_id,aa.city_id,aa.province_id,
+                    bb.lbs_province_id,bb.lbs_province_name,bb.lbs_city_id,bb.lbs_city_name,bb.lbs_district_id,bb.lbs_district_name
+            from area aa
+            left join brand_lbs_relate bb on aa.area_id=bb.area_id and bb.lbs_district_id is not null
+            where area = '天河区' limit 1;*/
+
+
+
+        }
+
+        log.info("安装工单落本地表完成: {}",sdf.format(new Date()));
+
+
+    }
+
+    private Boolean extractedOrderInstall(ItfTblAzAssignLcLsDownload item) {
+        OrderBase orderBase = new OrderBase();
+        // 提取品牌信息
+        Brand brand = baseService.getBrand();
+        if (brand == null) {
+            return Boolean.FALSE;
+        }
+
+
+        // 生成工单基础表 对象
+        orderBase = azGDLcLsDownloadMapper.getOrderBase(item.getSynReqId());
+
+        // 重置部分数据
+        // 品牌信息
+        orderBase.setBrandId(brand.getBrandId());
+        orderBase.setBrandName(brand.getBrand());
+
+
+
+
+        return Boolean.TRUE;
+    }
+
+/*
+    // 3:工单落入本地表
+    @Scheduled(fixedDelay = 1 * 30 * 1000)
+    public void inputOrderInstall() throws Exception {
+        if (1 == 1) {
+            return;
+        }
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        List<ItfTblAzAssignLcLsDownload> lcls = new ArrayList<>();
+
+        log.info("安装工单落本地表开始处理: {}",sdf.format(new Date()));
+
+        lcls = itfTblAzAssignLcLsDownloadService.lambdaQuery()
+                .eq(ItfTblAzAssignLcLsDownload::getSynStatus,0)
+                .eq(ItfTblAzAssignLcLsDownload::getSynReqId,167)
+                .list();
+        // 按单处理
+        for (ItfTblAzAssignLcLsDownload item: lcls) {
+            // 处理安装工单主表
+            extractedOrderInstall(item);
+
+
+
+        }
+
+        log.info("安装工单落本地表完成: {}",sdf.format(new Date()));
+    }
+
+    private Boolean extractedOrderInstall(ItfTblAzAssignLcLsDownload item) {
+        List<OrderInstallDetail> recs = new ArrayList<>();
+        Boolean flag = Boolean.FALSE;
+        Boolean lclsAddFlag = Boolean.FALSE;
+        OrderApplyDispatch orderapp = null;
+        OrderApplyDispatch orderApplyDispatch = null;
+        OrderInstallOperatingLog recLog = null;
+        Integer orderState = 0;
+        String workerOrderNo = "";
+        String azwdno ="";
+        Integer cjDownloadFlag = -1;
+        Integer yjhxDownloadFlag = 0;
+        String xslx = null;
+        String mainName = null;
+        Long sxlxid = 0l;
+        recLog = null;
+        orderapp = null;
+        orderApplyDispatch = null;
+        sxlxid = 1l;
+
+        // 获取销售类型 ID
+        sxlxid = getxslxid(item);
+        azwdno = getAzwdno(item);
+        xslx = null;
+        if (BeanUtil.isNotEmpty(item.getXslx())){
+            xslx = item.getXslx().trim();
+        }
+
+        // 判断安装网点编号是否为空或者为公司,如果为空或为公司,就写入接收派工网点
+
+        // 看安装工单是否存在
+        OrderInstall orderItem = orderInstallService.lambdaQuery()
+                .eq(OrderInstall::getPgguid, item.getPgguid()).one();
+
+        if (orderItem !=null){
+            flag = Boolean.FALSE;
+            lclsAddFlag = Boolean.FALSE;
+
+            // 工单已关闭不再做更新操作
+            if (orderItem.getOrderState().equals(10) && item.getLastModifiedDate().compareTo(orderItem.getUpdatetime())<0){
+                item.setSynStatus(99);
+                item.setSynTime(new Date());
+                item.setSynErrMsg("广州系统已关闭或作废忽略更新");
+                itfTblAzAssignLcLsDownloadService.updateById(item);
+                return Boolean.FALSE;
+            }
+
+            Date reservebegin = orderItem.getReserveBegin();
+            cjDownloadFlag = orderItem.getCjDownloadFlag();
+            mainName = null;
+            if (BeanUtil.isNotEmpty(orderItem.getMainName())){
+                mainName = orderItem.getMainName().trim();
+            }
+
+            yjhxDownloadFlag = 0;
+            if (BeanUtil.isNotEmpty(orderItem.getYjhxDownloadFlag())){
+                yjhxDownloadFlag = orderItem.getYjhxDownloadFlag();
+            }
+
+            // 判断京东虚拟号是否总部有更新
+            if (BeanUtil.isNotEmpty(item.getFjhm())){
+                orderItem.setGreeVirtualnumber(item.getFjhm());
+                flag = Boolean.TRUE;
+            }
+
+            // 1:总部工单的修改时间时间晚于系统修改时间需更新系统订单信息
+            flag = updateOldOrder(item, orderItem,sxlxid);
+
+            // 2:网点修改
+            flag = updateOldOrderWD(orderState, item, orderItem);
+
+            // 3:预约时间更新
+            flag = getUpdateOrderYYSJ(flag, item, orderItem, reservebegin);
+
+            // 4:状态信息更新 获取安装工单的状态是否允许更新
+            flag = getupdateStatus(flag, item, orderItem, orderState);
+
+            // 5:预派工标志更新
+            flag = getaBooleanFlag(flag, item, orderItem);
+
+        } else {
+            flag = Boolean.TRUE;
+            // 新增
+            lclsAddFlag = Boolean.TRUE;
+
+            // 生成订单主表对象
+            orderItem = getOrderInstall(item,sxlxid);
+            if (orderItem == null){
+                return Boolean.FALSE;
+            }
+
+            // 分销商城订单 写入fa_order_install_operating_log表
+            getOrderInstallLog(item, orderItem, recLog);
+        }
+
+        orderState = orderItem.getOrderState();
+        workerOrderNo = orderItem.getWorkerOrderNo();
+
+        // 处理1121,1125时判断after_number是否为中心,如果不是则order_state = '3';
+        // 总部下来的关闭工单要修改最后更新时间,否则不会产生结算完工数据
+        extractedOther(orderState, workerOrderNo, item, orderItem);
+
+        // 改派处理
+        orderApplyDispatch = getOrderApplyDispatch(orderapp, workerOrderNo, item, orderItem);
+
+        // 处理跨区,如果接收派工网点与所属区域有差异时,直接修改
+        extractedOrderJD(item, orderItem);
+
+        BrandWebsit brandWebsit = null;
+        if (azwdno.equals("99999999")){
+            brandWebsit = brandWebsitService.lambdaQuery()
+                    .eq(BrandWebsit::getBrandWebsitNumber,azwdno)
+                    .eq(BrandWebsit::getType,"professionazwdno").one();
+        } else {
+            brandWebsit = brandWebsitService.lambdaQuery()
+                    .eq(BrandWebsit::getBrandWebsitNumber, item.getJspgwdno()).one();
+        }
+        // 修改销售公司信息  需确认网点信息表 修改订单主表 todo
+
+        //增加处理采集数据下载
+        OrderInstallDetail orderDetailRec = null;
+        OrderInstallDetail delorderDetailRec = null;
+        if ((item.getDqjd().equals(1304L) || item.getDqjd().equals(1309L)) && cjDownloadFlag == 0){
+            orderDetailRec = orderInstallDetailService.lambdaQuery()
+                    .eq(OrderInstallDetail::getWorkerOrderNo,workerOrderNo)
+                    .eq(OrderInstallDetail::getStatus,1).one();
+            // 存在状态为"已采集"的记录暂时忽略下载
+            if (orderDetailRec !=null && item.getDqjd().equals(1309L) && orderDetailRec.getDetailSource().equals(1)){
+                orderItem.setUploadNotifyFlag(1);
+            }
+        } else {
+            // 清除本地的采集数据
+            delorderDetailRec = orderInstallDetailService.lambdaQuery()
+                    .eq(OrderInstallDetail::getWorkerOrderNo,workerOrderNo)
+                    .eq(OrderInstallDetail::getStatus,0).one();
+            if (orderDetailRec !=null){
+                orderInstallDetailService.removeById(delorderDetailRec);
+            }
+
+            // 仅向表 itf_gree_to_fa_download_task_list 写数据需确认,暂不处理 todo
+            if (BeanUtil.isNotEmpty(mainName)
+                    && (mainName.equals("家用空调") || mainName.equals("家用空气能热水器") || mainName.equals("驻车空调"))){
+
+            }
+
+        }
+
+        // 仅向表 itf_gree_to_fa_download_task_list 写数据需确认,暂不处理 todo
+        if (BeanUtil.isNotEmpty(xslx) && (xslx.equals("以旧换新") || xslx.equals("格力商城-以旧换新") || xslx.equals("格力商城-以旧换新2"))
+                && (yjhxDownloadFlag == 0)) {
+
+        }
+        // // 仅向表 itf_gree_to_fa_download_task_list 写数据需确认,暂不处理 todo
+        if (BeanUtil.isNotEmpty(xslx) && (xslx.equals("以旧换新") || xslx.equals("格力商城-以旧换新") || xslx.equals("格力商城-以旧换新2"))) {
+
+        }
+
+        // 数据插入或修改 事务统一处理
+        insertOrUpdate(flag, lclsAddFlag, orderapp, orderApplyDispatch, recLog, item, orderItem);
+
+        return Boolean.TRUE;
+    }
+
+    private Boolean getaBooleanFlag(Boolean flag, ItfTblAzAssignLcLsDownload item, OrderInstall orderItem) {
+        if (orderItem.getIsReservation().equals("1") && item.getSfwcps().equals("已配送")
+                && (item.getDqjd().equals(1100) || item.getDqjd().equals(1122) || item.getDqjd().equals(1130))){
+            orderItem.setIsReservation("0");
+            flag = Boolean.TRUE;
+        }
+        return flag;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void insertOrUpdate(Boolean flag, Boolean lclsAddFlag, OrderApplyDispatch orderapp, OrderApplyDispatch orderApplyDispatch, OrderInstallOperatingLog recLog, ItfTblAzAssignLcLsDownload item, OrderInstall orderItem) {
+        // 数据落表
+        // 工单主表
+        if (flag){
+            if (lclsAddFlag){
+                orderInstallService.save(orderItem);
+                log.info("新增安装工单完成-工单号: {}", orderItem.getPgid());
+            } else {
+                orderInstallService.updateById(orderItem);
+                log.info("修改安装工单完成-工单号: {}", orderItem.getPgid());
+            }
+        }
+
+        // 分销商城订单 写入fa_order_install_operating_log表
+        if (recLog != null){
+            orderInstallOperatingLogService.save(recLog);
+        }
+
+        // 改派
+        if (orderapp !=null){
+            orderApplyDispatchService.save(orderapp);
+        }
+        if (orderApplyDispatch != null){
+            orderApplyDispatchService.updateById(orderApplyDispatch);
+        }
+
+        // 修改下截的安装工单主表 - 处理完成
+        upLcLsDownLoad(item);
+    }
+
+    private void upLcLsDownLoad(ItfTblAzAssignLcLsDownload item) {
+        item.setSynStatus(1);
+        item.setSynTime(new Date());
+        item.setSynErrMsg("新增数据成功");
+        itfTblAzAssignLcLsDownloadService.updateById(item);
+    }
+
+    private void extractedOrderJD(ItfTblAzAssignLcLsDownload item, OrderInstall orderItem) {
+        if (item.getJspgwdno().equals("S9219801")
+                && (!item.getSsqy().equals("广州") || !item.getSsqy().equals("S9219801"))){
+            orderItem.setBelongCompanyId(2);
+            orderItem.setBelongCompany("S9219801");
+            orderItem.setOrderState(getState(item.getDqjd()));
+            orderItem.setLastAppointState(getAState(item.getDqjd()));
+        } else if (item.getJspgwdno().equals("S9219807")
+                && (!item.getSsqy().equals("广州") || !item.getSsqy().equals("S9219807"))){
+            orderItem.setBelongCompanyId(1);
+            orderItem.setBelongCompany("S9219807");
+            orderItem.setOrderState(getState(item.getDqjd()));
+            orderItem.setLastAppointState(getAState(item.getDqjd()));
+        }
+    }
+
+    @Nullable
+    private OrderApplyDispatch getOrderApplyDispatch(OrderApplyDispatch orderapp, String workerOrderNo, ItfTblAzAssignLcLsDownload item, OrderInstall orderItem) {
+        OrderApplyDispatch orderApplyDispatch;
+        if (item.getDqjd().equals(1135)){
+            orderApplyDispatch = orderApplyDispatchService.lambdaQuery()
+                    .eq(OrderApplyDispatch::getWorkerOrderNo, workerOrderNo)
+                    .eq(OrderApplyDispatch::getAuditState,"0").one();
+            if (orderApplyDispatch == null){
+                BeanUtil.copyProperties(orderItem, orderapp);
+                // 工单类型:install=安装工单,repair=维修工单
+                orderapp.setType("install");
+                orderapp.setWebsitNumber(orderItem.getAfterNumber());
+                orderapp.setWebsitName(orderItem.getAfterWname());
+                orderapp.setApplyContent("申请改派");
+                orderapp.setCustomerName(orderItem.getUserName());
+                orderapp.setCustomerPhone(orderItem.getContactPhone());
+                orderapp.setCreatetime(new Date());
+                orderapp.setUpdatetime(new Date());
+            }
+        } else {
+            // 判断是否有正在改派的工单,如果没有就更新改派请求
+            orderApplyDispatch = orderApplyDispatchService.lambdaQuery()
+                    .eq(OrderApplyDispatch::getWorkerOrderNo, workerOrderNo)
+                    .eq(OrderApplyDispatch::getAuditState,"0").one();
+            if (orderApplyDispatch !=null){
+                orderApplyDispatch.setAuditState("2");
+                orderApplyDispatch.setAuditDesc("无效申请记录,系统自动拒绝");
+            }
+        }
+        return orderApplyDispatch;
+    }
+
+    private void extractedOther(Integer orderState, String workerOrderNo, ItfTblAzAssignLcLsDownload item, OrderInstall orderItem) {
+        // 处理1121,1125时判断after_number是否为中心,如果不是则order_state = '3';
+        if (item.getDqjd().equals(1121) || item.getDqjd().equals(1125)){
+            // 这里的判断需要再增加条件
+            if (!(orderItem.getAfterNumber().equals("S9219801")
+                    || orderItem.getAfterNumber().equals("S9219807")) && (orderState <6) ){
+                // 修改
+                orderItem.setOrderState(3);
+                orderItem.setAppointState(0);
+            }
+            // 修改时这里需要再处理
+            if (item.getDqjd().equals(1125) && !orderItem.getInstallWid().equals(orderItem.getAfterWid())){
+                orderItem.setInstallWid(Integer.valueOf(orderItem.getAfterWid()));
+                orderItem.setInstallNumber(orderItem.getAfterNumber());
+                orderItem.setInstallName(orderItem.getAfterWname());
+            }
+        }
+        if (item.getDqjd().equals(1129) || item.getDqjd().equals(1135)){
+            OrderInstall oldrec = orderInstallService.lambdaQuery().eq(OrderInstall::getPgguid, item.getPgguid()).one();
+            if (oldrec.getAfterNumber().equals("S9219801") || oldrec.getAfterNumber().equals("S9219807")){
+                // 修改
+                oldrec.setOrderState(2);
+                oldrec.setAppointState(0);
+                orderInstallService.updateById(oldrec);
+            }
+        }
+        // 总部下来的关闭工单要修改最后更新时间,否则不会产生结算完工数据
+        // 采集明细 有历史单再处理
+        if (item.getDqjd().equals(1309)){
+            List<OrderInstallDetail>  recs = orderInstallDetailService.lambdaQuery()
+                    .eq(OrderInstallDetail::getWorkerOrderNo, workerOrderNo)
+                    .eq(OrderInstallDetail::getStatus,1).list();
+            if (recs.size()>0 && recs.size()== orderItem.getMachineNum()){
+                orderItem.setOrderState(10);
+                orderItem.setAppointState(4);
+            }
+        }
+    }
+
+
+    private String getAzwdno (ItfTblAzAssignLcLsDownload item){
+        String azwdno ="";
+        if (BeanUtil.isNotEmpty(item.getAzwdno())){
+            azwdno = item.getAzwdno();
+        }
+        if (StringUtils.isEmpty(azwdno) || azwdno.equals("S9219801") || azwdno.equals("S9219807")){
+            azwdno = item.getJspgwdno();
+        }
+
+        return azwdno;
+    }
+
+    private void getOrderInstallLog(ItfTblAzAssignLcLsDownload item, OrderInstall rec, OrderInstallOperatingLog recLog) {
+        if (item.getShopno().equals("88888888")){
+            recLog = new OrderInstallOperatingLog();
+
+            recLog.setBelongCompanyId(rec.getBelongCompanyId());
+            recLog.setBelongCompany(rec.getBelongCompany());
+            recLog.setWebsitNumber(rec.getSalesNumber());
+            recLog.setWorkerOrderNo(rec.getWorkerOrderNo());
+            recLog.setBeforeOrderState(0);
+            recLog.setBeforeAppointState(0);
+            recLog.setOrderState(0);
+            recLog.setAppointState(0);
+            recLog.setType("创建工单");
+            recLog.setContent("[GF](家用空调)分销商城新增工单,操作网点:"+ rec.getSalesNumber());
+            recLog.setFeedback("保存");
+            recLog.setOperator(rec.getSalesWname());
+            recLog.setOperateWebsit(rec.getSalesNumber());
+            recLog.setStatus("1");
+            recLog.setCreatetime(new Date());
+            recLog.setUpdatetime(new Date());
+            recLog.setPgguid(rec.getPgguid());
+            recLog.setPgid(rec.getPgid());
+            recLog.setDataSource("2");
+            recLog.setUploadNotifyFlag(1);
+        }
+    }
+
+    private boolean getupdateStatus(Boolean flag, ItfTblAzAssignLcLsDownload item, OrderInstall oldOrder, Integer orderState) {
+        Boolean orderf = getOrderStatFlag(oldOrder, orderState, item);
+
+        if (orderf && item.getLastModifiedDate().compareTo(oldOrder.getUpdatetime())>0){
+            oldOrder.setLastOrderState(getState(item.getSyjd()));
+            oldOrder.setLastAppointState(getAState(item.getSyjd()));
+
+            if (getOrderUpdatef(orderState, item.getDqjd())){
+                oldOrder.setOrderState(getState(item.getDqjd()));
+            }
+            if (!item.getDqjd().equals(1301)){
+                oldOrder.setAppointState(getAState(item.getDqjd()));
+            }
+
+            flag = Boolean.TRUE;
+        }
+
+        return flag;
+    }
+
+    private Boolean getOrderUpdatef(Integer orderState, Long dqjd){
+        Boolean f = Boolean.FALSE;
+        if (orderState>4 && (dqjd.equals(1304) || dqjd.equals(1306) || dqjd.equals(1307)
+                || dqjd.equals(1308) || dqjd.equals(1309) || dqjd.equals(1135))){
+            f = Boolean.TRUE;
+        }
+        if (orderState.equals(5) && dqjd.equals(1301)){
+            f = Boolean.TRUE;
+        }
+        if (orderState <=4 ){
+            f = Boolean.TRUE;
+        }
+        if (orderState.equals(9) && (dqjd.equals(1121) || dqjd.equals(1125) || dqjd.equals(1129))){
+            f = Boolean.TRUE;
+        }
+        return f;
+    }
+
+    // 工单状态:1=已保存工单,2=待分部派工,3=待分中心派工,4=待网点派工,5=待审批改派,6=待服务人员处理,7=服务人员报完工,8=申请售后处理,9=已作废工单,10=已关闭工单,99=非广佛作废
+    private Integer getState(Long i){
+        Integer outf = 1;
+        if (i.equals(1100)){
+            outf = 1;
+        } else if (i.equals(1101)){
+            outf = 1;
+        } else if (i.equals(1121)){
+            outf = 2;
+        } else if (i.equals(1122)){
+            outf = 2;
+        } else if (i.equals(1125)){
+            outf = 3;
+        } else if (i.equals(1129)){
+            outf = 4;
+        } else if (i.equals(1130)){
+            outf = 4;
+        } else if (i.equals(1135)){
+            outf = 5;
+        } else if (i.equals(1301)){
+            outf = 6;
+        } else if (i.equals(1304)){
+            outf = 7;
+        } else if (i.equals(1307)){
+            outf = 8;
+        } else if (i.equals(1308)){
+            outf = 9;
+        } else if (i.equals(1309)){
+            outf = 10;
+        }
+        return outf;
+    }
+
+    private Integer getAState(Long i){
+        Integer outf = 0;
+        if (i.equals(1100) || i.equals(1101) || i.equals(1121) || i.equals(1122) || i.equals(1125)
+                || i.equals(1129) || i.equals(1130) || i.equals(1135) || i.equals(1301)
+                || i.equals(1307) || i.equals(1308)){
+            outf = 0;
+        } else if (i.equals(1304) || i.equals(1309)){
+            outf = 4;
+        }
+
+        return outf;
+    }
+
+
+
+    // 判断广州本地的安装工单的状态是否允许更新
+    private Boolean getOrderStatFlag(OrderInstall oldOrder, Integer orderState, ItfTblAzAssignLcLsDownload item){
+        Boolean orderf = Boolean.FALSE;
+        Integer curAppointState = oldOrder.getAppointState();
+
+        if (orderState.equals(1) || orderState.equals(2) || orderState.equals(3)){
+            curAppointState = 0;
+        } else {
+            orderf = Boolean.TRUE;
+        }
+        if (orderState.equals(3) && curAppointState.equals(0)
+                && (item.getDqjd().equals(1125) || item.getDqjd().equals(1129) || item.getDqjd().equals(1301))){
+            orderf = Boolean.TRUE;
+        }
+        if (orderState.equals(4) && curAppointState.equals(0)
+                && (item.getDqjd().equals(1304) || item.getDqjd().equals(1306)
+                || item.getDqjd().equals(1307) || item.getDqjd().equals(1308) || item.getDqjd().equals(1309))){
+            orderf = Boolean.TRUE;
+        }
+        if (orderState.equals(6)
+                && (curAppointState.equals(0) || curAppointState.equals(1)
+                || curAppointState.equals(2) || curAppointState.equals(3))
+                && (item.getDqjd().equals(1304) || item.getDqjd().equals(1306)
+                || item.getDqjd().equals(1307) || item.getDqjd().equals(1308) || item.getDqjd().equals(1309))){
+            orderf = Boolean.TRUE;
+        }
+        if (orderState.equals(7) && curAppointState.equals(4)
+                && (item.getDqjd().equals(1307) || item.getDqjd().equals(1308) || item.getDqjd().equals(1309))){
+            orderf = Boolean.TRUE;
+        }
+        if (orderState.equals(5) && curAppointState.equals(5)
+                && (item.getDqjd().equals(1307) || item.getDqjd().equals(1308) || item.getDqjd().equals(1309))){
+            orderf = Boolean.TRUE;
+        }
+        if (orderState.equals(2) && curAppointState.equals(2)
+                && (item.getDqjd().equals(1125) || item.getDqjd().equals(1129)
+                || item.getDqjd().equals(1301) || item.getDqjd().equals(1308))){
+            orderf = Boolean.TRUE;
+        }
+        if (orderState.equals(9) || orderState.equals(10)|| orderState.equals(99)){
+            if (item.getDqjd().equals(1121) || item.getDqjd().equals(1125) || item.getDqjd().equals(1129)){
+                orderf = Boolean.TRUE;
+            } else {
+                orderf = Boolean.FALSE;
+            }
+        } else {
+            orderf = Boolean.TRUE;
+        }
+        if (orderState.equals(6) && curAppointState.equals(2)
+                && (item.getDqjd().equals(1121) || item.getDqjd().equals(1125) || item.getDqjd().equals(1301))){
+            orderf = Boolean.FALSE;
+        }
+
+        return orderf;
+    }
+
+
+
+
+
+
+    private Boolean getUpdateOrderYYSJ(Boolean flag, ItfTblAzAssignLcLsDownload item, OrderInstall oldOrder, Date reservebegin) {
+        Integer isReserve =-1;
+        Date yysj = new Date();
+        Date orderReservebegin = new Date();
+        Date orderReserveEnd = new Date();
+
+        if (BeanUtil.isNotEmpty(oldOrder.getIsReserve())){
+            isReserve=oldOrder.getIsReserve();
+        }
+
+        // 预约时间(优先以预约安装时间为准,不存在时取用户期望上门开始时间)
+        if (StringUtils.isEmpty(item.getYyazsj())){
+            yysj = item.getYhqwkssj();
+            orderReservebegin = item.getYhqwkssj();
+            orderReserveEnd = item.getYhqwjssj();
+        } else {
+            yysj = item.getYyazsj();
+            orderReservebegin = item.getYyazsj();
+            orderReserveEnd = item.getYyazsj();
+        }
+
+        // 已做用户预约不能更新 (0=未预约,1=已预约)
+        if (isReserve.equals(0)){
+            if (BeanUtil.isNotEmpty(item.getYyazsj())){
+                oldOrder.setReserveDatetime(item.getYyazsj());
+            }
+            oldOrder.setReservePeriod(MyBeanUtils.getDateXS(yysj));
+            oldOrder.setReserveBegin(orderReservebegin);
+            oldOrder.setReserveEnd(orderReserveEnd);
+            flag = Boolean.TRUE;
+        }
+        // 天猫工单,允许天猫自已预约
+        if (BeanUtil.isNotEmpty(item.getYyazsj()) && item.getQqlymc().equals("TBL_TMALL_ORDERINFO")
+        && reservebegin.compareTo(orderReservebegin) !=0 ){
+            oldOrder.setIsReserve(1);
+            if (BeanUtil.isNotEmpty(item.getYyazsj())){
+                oldOrder.setReserveDatetime(item.getYyazsj());
+            }
+            oldOrder.setReservePeriod(MyBeanUtils.getDateXS(yysj));
+            oldOrder.setReserveBegin(orderReservebegin);
+            oldOrder.setReserveEnd(orderReserveEnd);
+            flag = Boolean.TRUE;
+        }
+        return flag;
+    }
+
+
+    private Boolean updateOldOrderWD(Integer orderState, ItfTblAzAssignLcLsDownload item, OrderInstall oldOrder) {
+        // 需排除个例(如果广佛已待服务人员处理,不允更新网点)
+        if (!(orderState.equals(6) || orderState.equals(7) || orderState.equals(10))){
+            oldOrder.setAfterNumber(item.getJspgwdno());
+            oldOrder.setAfterWname(item.getJspgwdmc());
+            oldOrder.setAfterXtbh(item.getJspgwdxtbh());
+            oldOrder.setInstallNumber(item.getAzwdno());
+            oldOrder.setInstallName(item.getAzwdmc());
+            oldOrder.setInstallXtbh(item.getAzwdxtbh());
+            return Boolean.TRUE;
+        }
+
+        return Boolean.FALSE;
+    }
+
+    private Boolean updateOldOrder(ItfTblAzAssignLcLsDownload item, OrderInstall oldOrder, Long sxlxid) {
+        if (item.getLastModifiedDate().compareTo(oldOrder.getUpdatetime())>0){
+            oldOrder.setLastUpdSynReqId(String.valueOf(item.getSynReqId()));
+            oldOrder.setLastUpdSynTime(new Date());
+            oldOrder.setUserPhone("");
+            if (StringUtils.isEmpty(item.getYddh())){
+                if (StringUtils.isEmpty(item.getYddh2())){
+                    oldOrder.setUserPhone(item.getYddh2());
+                }
+            } else {
+                oldOrder.setUserPhone(item.getYddh());
+            }
+            oldOrder.setUserPhone2("");
+            if (BeanUtil.isNotEmpty(item.getYddh2())){
+                oldOrder.setUserPhone2(item.getYddh2());
+            }
+            oldOrder.setUserName("");
+            if (BeanUtil.isNotEmpty(item.getYhmc())){
+                oldOrder.setUserName(item.getYhmc());
+            }
+            oldOrder.setUserContact("");
+            if (BeanUtil.isNotEmpty(item.getLxren())){
+                oldOrder.setUserContact(item.getLxren());
+            }
+            oldOrder.setAreacode("");
+            if (BeanUtil.isNotEmpty(item.getQuhao())){
+                oldOrder.setAreacode(item.getQuhao());
+            }
+            oldOrder.setContactPhone("");
+            if (BeanUtil.isNotEmpty(item.getDhhm())){
+                oldOrder.setContactPhone(item.getDhhm());
+            }
+            oldOrder.setGreeVirtualnumber("");
+            if (BeanUtil.isNotEmpty(item.getFjhm())){
+                oldOrder.setGreeVirtualnumber(item.getFjhm());
+            }
+            oldOrder.setGreeVirtualnumber("");
+            if (BeanUtil.isNotEmpty(item.getFjhm())){
+                oldOrder.setGreeVirtualnumber(item.getFjhm());
+            }
+            /// 再添加成员变量
+            oldOrder.setSalesTypeId(Integer.valueOf(sxlxid.toString()));
+
+            return Boolean.TRUE;
+        }
+
+        return Boolean.FALSE;
+    }
+
+    private Long getxslxid(ItfTblAzAssignLcLsDownload item) {
+        Long sxlxid = 1l;
+        if (StringUtils.isEmpty(item.getXslxid()) || item.getXslxid() == 0) {
+            SalesType rec = salesTypeService.lambdaQuery().eq(SalesType::getXslxmc, item.getXslx()).one();
+            if (rec != null) {
+                sxlxid = rec.getXslxid();
+            } else {
+                sxlxid = 1l;
+            }
+            if (sxlxid == 0 || StringUtils.isEmpty(sxlxid)) {
+                sxlxid = 1l;
+            }
+        } else {
+            sxlxid = item.getXslxid();
+        }
+        return sxlxid;
+    }
+
+    @NotNull
+    private OrderInstall getOrderInstall(ItfTblAzAssignLcLsDownload item,Long sxlxid) {
+        OrderInstall rec = new OrderInstall();
+        String workerOrderNo = UUID.randomUUID().toString();
+
+        // shopno: 销售网点编号 88888888为分销商城特殊单号 todo
+        if (item.getShopno().equals("88888888")){
+            ItfFxInstallReq itfFxInstallReq = itfFxInstallReqService.lambdaQuery().eq(ItfFxInstallReq::getPgguid,item.getPgguid()).one();
+            if (itfFxInstallReq ==null || StringUtils.isEmpty(itfFxInstallReq.getWorkerOrderNo())){
+                log.info("分销商城订单生成失败,工单号为空:{}",item.getPgguid());
+                return null;
+            }
+            workerOrderNo = itfFxInstallReq.getWorkerOrderNo();
+        }
+
+        rec.setWorkerOrderNo(workerOrderNo);
+        rec.setUploadNotifyFlag(0);
+        rec.setLastUpdSynReqId(String.valueOf(item.getSynReqId()));
+        rec.setLastUpdSynTime(new Date());
+        //  所属公司编号Id belongCompanyId,belongCompany
+        getBelongCompany(item, rec);
+        // 销售网点id
+        setSalesWid(item, rec);
+
+        if (BeanUtil.isNotEmpty(item.getXsdwno())){
+            rec.setSalesNumber(item.getXsdwno());
+        }
+        if (BeanUtil.isNotEmpty(item.getXswdmc())){
+            rec.setSalesWname(item.getXswdmc());
+        }
+        if (BeanUtil.isNotEmpty(item.getXsdwxtbh())){
+            rec.setSalesXtbh(item.getXsdwxtbh());
+        }
+        // 接收派工网点id
+        setAfterWid(item, rec);
+        if (BeanUtil.isNotEmpty(item.getJspgwdno())){
+            rec.setAfterNumber(item.getJspgwdno());
+        }
+        if (BeanUtil.isNotEmpty(item.getJspgwdmc())){
+            rec.setAfterWname(item.getJspgwdmc());
+        }
+        if (BeanUtil.isNotEmpty(item.getJspgwdxtbh())){
+            rec.setAfterXtbh(item.getJspgwdxtbh());
+        }
+
+        rec.setAfterTime(item.getJspgwdsj());
+        // 创建工单的网点
+        setCreateWid(item, rec);
+
+        rec.setCreatedUserNumber(item.getCjren());
+        rec.setCreatedRealName(item.getCjrmc());
+        rec.setSalesOrderNo(item.getXsdh());
+        rec.setUserPhone(item.getYddh());
+        rec.setUserName(item.getYhmc());
+        rec.setMachineNum(item.getAzsl());
+        rec.setPgguid(item.getPgguid());
+        rec.setPgid(item.getPgid());
+
+        rec.setIsReservation("0");
+        if (item.getDqjd().equals(1100) || item.getDqjd().equals(1122) || item.getDqjd().equals(1130)){
+            rec.setIsReservation("1");
+        }
+
+        rec.setAfterNumber("");
+        if (!StringUtils.isEmpty(item.getJspgwdno())){
+            rec.setAfterNumber(item.getJspgwdno());
+        }
+
+        rec.setOrderState(getDqjd(item));
+        rec.setAppointState(getDqjd(item));
+        if (StringUtils.isEmpty(item.getYhsxid())){
+            rec.setUserTypeId(1);
+        } else {
+            if (item.getYhsxid().equals(0L)){
+                rec.setUserTypeId(1);
+            } else {
+                rec.setUserTypeId(Integer.valueOf(item.getYhsxid().toString()));
+            }
+        }
+
+
+
+
+        // 增加参数  todo
+        rec.setSalesTypeId(Integer.valueOf(sxlxid.toString()));
+
+
+        // 接收派工网点是否为中心,且下传的当前节点是不是1129或1301,如果是就更新为2待分部派工
+        if ((item.getJspgwdno().equals("S9219801") || item.getJspgwdno().equals("S9219807"))
+                && (item.getDqjd().equals(1129) || item.getDqjd().equals(1301))){
+            rec.setOrderState(2);
+        }
+
+
+
+        return rec;
+    }
+
+    private void setCreateWid(ItfTblAzAssignLcLsDownload item, OrderInstall rec) {
+        QueryWrapper<BrandWebsit> paytypeServiceQueryWrapper = new QueryWrapper<BrandWebsit>()
+                .select("brand_websit_id")
+                .eq("brand_websit_number", item.getCjwdno())
+                .and(v -> v.eq("type",InterFaceTypeEnum.XS_WEBSIT_TYPE.getCode())
+                        .or()
+                        .eq("type", InterFaceTypeEnum.SH_WEBSIT_TYPE.getCode())
+                        .ne("brand_websit_number", "99999999"));
+        List<BrandWebsit> brandWebsits = brandWebsitService.list(paytypeServiceQueryWrapper);
+        if (brandWebsits !=null || brandWebsits.size()>0){
+            if (BeanUtil.isNotEmpty(brandWebsits.get(0).getBrandWebsitId())){
+                rec.setCreateWid(brandWebsits.get(0).getBrandWebsitId());
+            }
+        }
+    }
+
+    private void setAfterWid(ItfTblAzAssignLcLsDownload item, OrderInstall rec) {
+        BrandWebsit oldWebsitRec =  brandWebsitService.lambdaQuery()
+                .eq(BrandWebsit::getBrandWebsitNumber, item.getJspgwdno()).one();
+        if (oldWebsitRec !=null){
+            if (BeanUtil.isNotEmpty(oldWebsitRec.getBrandWebsitId())){
+                rec.setAfterWid(oldWebsitRec.getBrandWebsitId());
+            }
+
+
+        }
+    }
+
+    private void setSalesWid(ItfTblAzAssignLcLsDownload item, OrderInstall rec) {
+        BrandWebsit oldWebsitRec =  brandWebsitService.lambdaQuery()
+                .eq(BrandWebsit::getBrandWebsitNumber, item.getXsdwno())
+                .eq(BrandWebsit::getType, InterFaceTypeEnum.XS_WEBSIT_TYPE.getCode())
+                .one();
+        if (oldWebsitRec !=null){
+            if (BeanUtil.isNotEmpty(oldWebsitRec.getBrandWebsitId())){
+                rec.setSalesWid(oldWebsitRec.getBrandWebsitId());
+            }
+        }
+    }
+
+    private void getBelongCompany(ItfTblAzAssignLcLsDownload item, OrderInstall rec) {
+        BrandWebsit oldWebsitRec =  brandWebsitService.lambdaQuery()
+                .eq(BrandWebsit::getBrandWebsitNumber, item.getJspgwdno()).one();
+        if (oldWebsitRec !=null){
+            if (BeanUtil.isNotEmpty(oldWebsitRec.getBelongCompanyId())){
+                rec.setBelongCompanyId(oldWebsitRec.getBelongCompanyId());
+            }
+            if (BeanUtil.isNotEmpty(oldWebsitRec.getBelongCompany())){
+                rec.setBelongCompany(oldWebsitRec.getBelongCompany());
+            }
+        } else {
+            rec.setBelongCompanyId(0);
+            rec.setBelongCompany("0");
+        }
+    }*/
+
+    @NotNull
+    private Integer getDqjd(ItfTblAzAssignLcLsDownload item) {
+        Integer dqjd;
+        if (item.getDqjd() == 1100) {
+            dqjd = 1;
+        } else if (item.getDqjd() == 1101) {
+            dqjd = 1;
+        } else if (item.getDqjd() == 1121) {
+            dqjd = 2;
+        } else if (item.getDqjd() == 1122) {
+            dqjd = 2;
+        } else if (item.getDqjd() == 1125) {
+            dqjd = 3;
+        } else if (item.getDqjd() == 1129) {
+            dqjd = 4;
+        } else if (item.getDqjd() == 1130) {
+            dqjd = 4;
+        } else if (item.getDqjd() == 1135) {
+            dqjd = 5;
+        } else if (item.getDqjd() == 1301) {
+            dqjd = 6;
+        } else if (item.getDqjd() == 1304) {
+            dqjd = 7;
+        } else if (item.getDqjd() == 1306) {
+            dqjd = 7;
+        } else if (item.getDqjd() == 1307) {
+            dqjd = 8;
+        } else if (item.getDqjd() == 1308) {
+            dqjd = 9;
+        } else if (item.getDqjd() == 1309) {
+            dqjd = 10;
+        } else {
+            dqjd = 1;
+        }
+        return dqjd;
+    }
+
+
+    // 与总部进行状态同步下次获取时不再拉取数据
+    private void updateStatus() {
+        try {
+            List<ItfInstallBatchDownloadRec> recs = new ArrayList<>();
+            // greeStatSynStatus:总部同步标志是否已成功更新 0=否 1=是 99=其他
+            recs = itfInstallBatchDownloadRecService.lambdaQuery()
+                    .eq(ItfInstallBatchDownloadRec::getGreeStatSynStatus,0)
+                    .or()
+                    .eq(ItfInstallBatchDownloadRec::getGreeStatSynStatus,99)
+                    .le(ItfInstallBatchDownloadRec::getSynTimes,5)
+                    .list();
+            if (recs.size()>0){
+                log.info("需要与总部同步安装工单下载状态记录数: {}",recs.size());
+                Token token = tokenCenter.getCurrentToken();
+                String url = baseurl + "tblAzAssignLcLs" + "/updateExtendfiled5";
+                for (ItfInstallBatchDownloadRec item :recs){
+                    log.info("与总部同步下装状态的派工单号: {}",item.getPgid());
+                    String pgguid = item.getPgguid();
+                    Date lastModifiedDate = item.getLastModifiedDate();
+                    Map<String, Object> paramMap = new HashMap<String, Object>();
+                    paramMap.put("pgguid", pgguid);
+                    paramMap.put("lastModifiedDate", lastModifiedDate);
+                    JSONResult jsonResult = HttpUtil.httpRequestWithToken(url, "POST",
+                            JSON.toJSONStringWithDateFormat(paramMap, "yyyy-MM-dd HH:mm:ss"), token);
+                    // 与总部进行状态同步
+                    syncStatus(item, jsonResult);
+                }
+            }
+            log.info("与总部同步安装工单下载状态完成");
+        } catch (Exception ex) {
+            log.error("与总部同步更新安装工单下载状态失败", ex);
+        }
+    }
+
+    private void syncStatus(ItfInstallBatchDownloadRec item, JSONResult jsonResult) {
+        ItfInstallBatchDownloadRec update = new ItfInstallBatchDownloadRec();
+        update.setSynReqId(item.getSynReqId());
+        update.setGreeStatSynTime(new Date());
+        update.setSynTimes(item.getSynTimes()+1);
+
+        if (jsonResult.isOK()) {
+            update.setGreeStatSynStatus(1);
+        } else {
+            update.setGreeStatSynStatus(99);
+            update.setGreeStatSynErrMsg(jsonResult.getMsg());
+        }
+        itfInstallBatchDownloadRecService.updateById(update);
+    }
+
+
+    @Transactional(rollbackFor = Exception.class)
+    public void downloadAdd(List<ItfInstallBatchDownloadRec> rec, List<ItfTblAzAssignLcLsDownload> lcls, List<ItfTblAzAssignMxDownload> mx, List<ItfTblAzAssignFkmxDownload> fk, List<ItfTblAzAssignFeeDownload> fe, List<ItfTblAzAssignAppointmentDownload> app, List<ItfTblAzAssignLcFzryDownload> fz, List<ItfTblAzAssignSatisfactionDownload> sa, List<ItfTblAzAssignPlatformDownload> pla) {
+        if (rec.size()>0){
+            itfInstallBatchDownloadRecService.saveBatch(rec);
+        }
+        if (lcls.size()>0){
+            itfTblAzAssignLcLsDownloadService.saveBatch(lcls);
+        }
+        if (mx.size()>0){
+            itfTblAzAssignMxDownloadService.saveBatch(mx);
+        }
+        if (fk.size()>0){
+            itfTblAzAssignFkMxDownloadService.saveBatch(fk);
+        }
+        if (fe.size()>0){
+            itfTblAzAssignFeeDownloadService.saveBatch(fe);
+        }
+        if (app.size()>0){
+            itfTblAzAssignAppointmentDownloadService.saveBatch(app);
+        }
+        if (fz.size()>0){
+            itfTblAzAssignLcFzryDownloadService.saveBatch(fz);
+        }
+        if (sa.size()>0){
+            itfTblAzAssignSatisfactionDownloadService.saveBatch(sa);
+        }
+        if (pla.size()>0){
+            itfTblAzAssignPlatformDownloadService.saveBatch(pla);
+        }
+    }
+
+    private void putLogInfo(JSONArray datas) {
+        StringBuffer str = new StringBuffer();
+        str.append("安装工单下载数据日志销售单号-派工单号:【");
+        for (int i = 0; i < datas.size(); i++) {
+            JSONObject sheet = datas.getJSONObject(i);
+            // 提取主表数据
+            JSONArray mainTableData = sheet.getJSONArray("TBL_AZ_ASSIGN_LC_LS");
+            if (mainTableData != null && mainTableData.size() > 0) {
+                JSONArray tableData = new JSONArray();
+                tableData = sheet.getJSONArray(ESInstallEnum.TBL_AZ_ASSIGN_LC_LS.getCode());
+                for (int j = 0; j < tableData.size(); j++) {
+                    // 生成安装工单主表对象
+                    ItfTblAzAssignLcLsDownload item = JSON.toJavaObject(tableData.getJSONObject(j),ItfTblAzAssignLcLsDownload.class);
+                    str.append("("+item.getXsdh()+"-"+ item.getPgid()+")");
+                }
+            }
+        }
+        str.append("】");
+        log.info(str.toString());
+    }
+
+    public void parseData(JSONObject sheet, String downloadTaskNo, String downloadBatchNo, List<ItfInstallBatchDownloadRec> rec) throws Exception {
+        List<ItfTblAzAssignLcLsDownload> lcls = new ArrayList<>();
+        List<ItfTblAzAssignMxDownload> mx = new ArrayList<>();
+        List<ItfTblAzAssignFkmxDownload> fk = new ArrayList<>();
+        List<ItfTblAzAssignFeeDownload> fe = new ArrayList<>();
+        List<ItfTblAzAssignAppointmentDownload> app = new ArrayList<>();
+        List<ItfTblAzAssignLcFzryDownload> fz = new ArrayList<>();
+        List<ItfTblAzAssignSatisfactionDownload> sa = new ArrayList<>();
+        List<ItfTblAzAssignPlatformDownload> pla = new ArrayList<>();
+
+        try {
+            // 获取报文对应数据信息
+            getDataInfo(sheet, downloadTaskNo, downloadBatchNo, lcls, mx, fk, fe, app, fz, sa, pla);
+
+            // 打印预落表安装工单信息方便查询出错的订单信息
+            logAZGDInfo(lcls);
+
+            // 数据同步落到同步信息表 事务处理
+            downloadAdd(rec, lcls, mx, fk, fe, app, fz, sa, pla);
+
+            log.info("落表成功");
+
+        } catch (Exception ex) {
+            log.error("安装工单落表失败:{}", ex);
+        }
+    }
+
+    private void logAZGDInfo(List<ItfTblAzAssignLcLsDownload> lcls) {
+        StringBuffer str = new StringBuffer();
+        str.append("预落表安装工单信息销售单号-派工单号:【");
+        if (lcls.size()>0){
+            for (ItfTblAzAssignLcLsDownload item : lcls){
+                str.append("("+item.getXsdh()+"-"+ item.getPgid()+")");
+            }
+            str.append("】");
+            log.info(str.toString());
+
+            for (ItfTblAzAssignLcLsDownload item : lcls){
+                log.info("item: {}",item);
+            }
+        }
+    }
+
+    private void getDataInfo(JSONObject sheet, String downloadTaskNo, String downloadBatchNo, List<ItfTblAzAssignLcLsDownload> lcls, List<ItfTblAzAssignMxDownload> mx, List<ItfTblAzAssignFkmxDownload> fk, List<ItfTblAzAssignFeeDownload> fe, List<ItfTblAzAssignAppointmentDownload> app, List<ItfTblAzAssignLcFzryDownload> fz, List<ItfTblAzAssignSatisfactionDownload> sa, List<ItfTblAzAssignPlatformDownload> pla) throws Exception {
+        JSONArray tableData = new JSONArray();
+        // 报文中提取安装工单主表数据 itf_tbl_az_assign_lc_ls_download
+        tableData = sheet.getJSONArray(ESInstallEnum.TBL_AZ_ASSIGN_LC_LS.getCode());
+        for (int j = 0; j < tableData.size(); j++) {
+            // 生成安装工单主表对象
+            parseTblAzAssignLcLsData(downloadBatchNo, downloadTaskNo, tableData.getJSONObject(j), lcls);
+        }
+
+        // 安装工单明细表 itf_tbl_az_assign_lc_ls_download
+        tableData = sheet.getJSONArray(ESInstallEnum.TBL_AZ_ASSIGN_MX.getCode());
+        for (int j = 0; j < tableData.size(); j++) {
+            // 生成安装工单明细主表对象
+            parseTblAzAssignMxData(downloadBatchNo, downloadTaskNo, tableData.getJSONObject(j), mx);
+        }
+        // 安装反馈明细表 itf_tbl_az_assign_fkmx_download
+        tableData = sheet.getJSONArray(ESInstallEnum.TBL_AZ_ASSIGN_FKMX.getCode());
+        for (int j = 0; j < tableData.size(); j++) {
+            // 生成安装反馈明细表对象
+            parseTblAzAssignFkMXData(downloadBatchNo, downloadTaskNo, tableData.getJSONObject(j), fk);
+        }
+        // 安装费用清单表 itf_tbl_az_assign_fee_download
+        tableData = sheet.getJSONArray(ESInstallEnum.TBL_AZ_ASSIGN_FEE.getCode());
+        for (int j = 0; j < tableData.size(); j++) {
+            // 生成安装费用清单表对象
+            parseTblAzAssignFeeData(downloadBatchNo, downloadTaskNo, tableData.getJSONObject(j), fe);
+        }
+        // 用户预约改约表 itf_tbl_az_assign_appointment_download
+        tableData = sheet.getJSONArray(ESInstallEnum.TBL_AZ_ASSIGN_APPOINTMENT.getCode());
+        for (int j = 0; j < tableData.size(); j++) {
+            // 生成用户预约改约表对象
+            parseTblAzAssignAppointmentData(downloadBatchNo, downloadTaskNo, tableData.getJSONObject(j), app);
+        }
+        // 安装辅助人员表 itf_tbl_az_assign_lc_fzry_download
+        tableData = sheet.getJSONArray(ESInstallEnum.TBL_AZ_ASSIGN_LC_FZRY.getCode());
+        for (int j = 0; j < tableData.size(); j++) {
+            // 生成安装辅助人员表对象
+            parseTblAzAssignLcFzryData(downloadBatchNo, downloadTaskNo, tableData.getJSONObject(j), fz);
+        }
+        // 客户评价表 itf_tbl_az_assign_satisfaction_download
+        tableData = sheet.getJSONArray(ESInstallEnum.TBL_AZ_ASSIGN_SATISFACTION.getCode());
+        for (int j = 0; j < tableData.size(); j++) {
+            // 生成客户评价表对象
+            parseTblAzAssignSatisfactionData(downloadBatchNo, downloadTaskNo, tableData.getJSONObject(j) , sa);
+        }
+        // 第三方平台订单信息表 itf_tbl_az_assign_platform_download
+        tableData = sheet.getJSONArray(ESInstallEnum.TBL_AZ_ASSIGN_PLATFORM.getCode());
+        for (int j = 0; j < tableData.size(); j++) {
+            // 生成第三方平台订单信息表对象
+            parseTblAzAssignPlatformData(downloadBatchNo, downloadTaskNo, tableData.getJSONObject(j), pla);
+        }
+    }
+
+    // itf_tbl_az_assign_platform_download
+    private void parseTblAzAssignPlatformData(String downloadBatchNo, String downloadTaskNo, JSONObject aData,
+                                              List<ItfTblAzAssignPlatformDownload> pla) throws Exception {
+        ItfTblAzAssignPlatformDownload item = JSON.toJavaObject(aData,ItfTblAzAssignPlatformDownload.class);
+        item.setDownloadBatchNo(downloadBatchNo);
+        item.setDownloadTaskNo(downloadTaskNo);
+        pla.add(item);
+
+    }
+
+    // itf_tbl_az_assign_satisfaction_download
+    private void parseTblAzAssignSatisfactionData(String downloadBatchNo, String downloadTaskNo, JSONObject aData ,
+                                                  List<ItfTblAzAssignSatisfactionDownload> sa) throws Exception {
+        ItfTblAzAssignSatisfactionDownload item = JSON.toJavaObject(aData,ItfTblAzAssignSatisfactionDownload.class);
+        item.setDownloadBatchNo(downloadBatchNo);
+        item.setDownloadTaskNo(downloadTaskNo);
+        sa.add(item);
+    }
+
+
+    // itf_tbl_az_assign_lc_fzry_download
+    private void parseTblAzAssignLcFzryData(String downloadBatchNo, String downloadTaskNo, JSONObject aData,
+                                            List<ItfTblAzAssignLcFzryDownload> fz) throws Exception {
+        ItfTblAzAssignLcFzryDownload item = JSON.toJavaObject(aData,ItfTblAzAssignLcFzryDownload.class);
+        item.setDownloadBatchNo(downloadBatchNo);
+        item.setDownloadTaskNo(downloadTaskNo);
+        fz.add(item);
+    }
+
+    // itf_tbl_az_assign_appointment_download
+    private void parseTblAzAssignAppointmentData(String downloadBatchNo, String downloadTaskNo, JSONObject aData,
+                                                 List<ItfTblAzAssignAppointmentDownload> app) throws Exception {
+        ItfTblAzAssignAppointmentDownload item = JSON.toJavaObject(aData,ItfTblAzAssignAppointmentDownload.class);
+        item.setDownloadBatchNo(downloadBatchNo);
+        item.setDownloadTaskNo(downloadTaskNo);
+        app.add(item);
+    }
+
+    // itf_tbl_az_assign_fkmx_download
+    private void parseTblAzAssignFeeData(String downloadBatchNo, String downloadTaskNo, JSONObject aData,
+                                         List<ItfTblAzAssignFeeDownload> fe) throws Exception {
+        ItfTblAzAssignFeeDownload item = JSON.toJavaObject(aData,ItfTblAzAssignFeeDownload.class);
+        item.setDownloadBatchNo(downloadBatchNo);
+        item.setDownloadTaskNo(downloadTaskNo);
+        fe.add(item);
+    }
+
+    // itf_tbl_az_assign_fkmx_download
+    private void parseTblAzAssignFkMXData(String downloadBatchNo, String downloadTaskNo, JSONObject aData,
+                                          List<ItfTblAzAssignFkmxDownload> fk) throws Exception {
+        ItfTblAzAssignFkmxDownload item = JSON.toJavaObject(aData,ItfTblAzAssignFkmxDownload.class);
+        item.setDownloadBatchNo(downloadBatchNo);
+        item.setDownloadTaskNo(downloadTaskNo);
+        fk.add(item);
+    }
+
+    // itf_tbl_az_assign_mx_download
+    private void parseTblAzAssignMxData(String downloadBatchNo, String downloadTaskNo, JSONObject aData,
+                                        List<ItfTblAzAssignMxDownload> mx) throws Exception {
+        ItfTblAzAssignMxDownload item = JSON.toJavaObject(aData,ItfTblAzAssignMxDownload.class);
+        item.setDownloadBatchNo(downloadBatchNo);
+        item.setDownloadTaskNo(downloadTaskNo);
+        mx.add(item);
+    }
+
+    // itf_tbl_az_assign_lc_ls_download
+    private void parseTblAzAssignLcLsData(String downloadBatchNo, String downloadTaskNo, JSONObject aData, List<ItfTblAzAssignLcLsDownload> lcls) throws Exception {
+        ItfTblAzAssignLcLsDownload item = JSON.toJavaObject(aData,ItfTblAzAssignLcLsDownload.class);
+        item.setDownloadBatchNo(downloadBatchNo);
+        item.setDownloadTaskNo(downloadTaskNo);
+        lcls.add(item);
+    }
+
+    /**
+     * 查看下载记录表有无数据
+     * 无数据,插入一条记录
+     * 有数据
+     *    还未做处理时不做插入动作    总部同步标志是否已成功更新 0=否
+     *    其他插一条数据,做单独说明
+     */
+    public boolean insertInstallRecData(JSONObject aData, String downloadBatchNo, String downloadTaskNo,
+                                        List<ItfInstallBatchDownloadRec> rec, String salesWebsitNumber) throws Exception {
+        List<ItfInstallBatchDownloadRec> oldRec = new ArrayList<>();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        // 下载记录表查看数据 同一修改时间同一订单 itf_install_batch_download_rec
+        oldRec = itfInstallBatchDownloadRecService.lambdaQuery()
+                .eq(ItfInstallBatchDownloadRec::getPgguid,aData.getString("pgguid"))
+                .eq(ItfInstallBatchDownloadRec::getLastModifiedDate,sdf.parse(aData.getString("lastModifiedDate")))
+                .list();
+        boolean duplicate = (oldRec.size() > 0);
+        // 下载记录表中存在数据
+        if (duplicate) {
+            // 相同修改时间、相同订单存在待同步的数据,不再插入
+            if (!recHasNoUploadStatus(oldRec)) {
+                // 数据处理失败的 插一条新数据再次同步并做说明
+                ItfInstallBatchDownloadRec item = getItfInstallBatchDownloadRec(Boolean.TRUE,aData, downloadBatchNo, downloadTaskNo, salesWebsitNumber);
+                rec.add(item);
+            }
+            return Boolean.FALSE;
+        } else {
+            // 无数据插入新记录 生成对象
+            ItfInstallBatchDownloadRec item = getItfInstallBatchDownloadRec(Boolean.FALSE,aData, downloadBatchNo, downloadTaskNo, salesWebsitNumber);
+            rec.add(item);
+            return Boolean.TRUE;
+        }
+    }
+
+    @NotNull
+    private ItfInstallBatchDownloadRec getItfInstallBatchDownloadRec(Boolean flag, JSONObject aData, String downloadBatchNo, String downloadTaskNo, String salesWebsitNumber) {
+        ItfInstallBatchDownloadRec item = new ItfInstallBatchDownloadRec();
+        item.setSalesWebsitNumber(salesWebsitNumber);
+        item.setDownloadBatchNo(downloadBatchNo);
+        item.setDownloadTaskNo(downloadTaskNo);
+        item.setPgguid(aData.getString("pgguid"));
+        item.setCreatedBy(aData.getString("createdBy"));
+        item.setCreatedDate(aData.getDate("createdDate"));
+        item.setLastModifiedBy(aData.getString("lastModifiedBy"));
+        item.setLastModifiedDate(aData.getDate("lastModifiedDate"));
+        item.setPgid(aData.getString("pgid"));
+        item.setExtendfiled1(aData.getString("extendfiled1"));
+        item.setExtendfiled2(aData.getString("extendfiled2"));
+        item.setExtendfiled3(aData.getString("extendfiled3"));
+        item.setExtendfiled4(aData.getString("extendfiled4"));
+        item.setExtendfiled5(aData.getString("extendfiled5"));
+        if (flag){
+            item.setGreeStatSynErrMsg("任务已经存在,不再产生下载数据");
+        }
+        return item;
+    }
+
+
+    private boolean recHasNoUploadStatus(List<ItfInstallBatchDownloadRec> rec) {
+        for (ItfInstallBatchDownloadRec data: rec){
+            if (data.getGreeStatSynStatus() == 0){
+                return true;
+            }
+        }
+        return false;
+    }
+
+
+
+
+    private JSONArray getDownloadData(String downloadBatchNo, String salesWebsitNumber) throws Exception {
+
+        Token token = tokenCenter.getCurrentToken();
+        String url = baseurl + "api/install/search/batch?ssxsgs=" + salesWebsitNumber;
+        // log.info("url[" + url + "],downloadBatchNo[" + downloadBatchNo + "],send[]");
+        JSONObject jsonResult = HttpUtil.httpRequestGetPgid(url, "GET", token, downloadBatchNo, null);
+        String statusCode = jsonResult.getString("statusCode");
+        if ("200".equals(statusCode)) {
+            JSONArray datas = jsonResult.getJSONArray("data");
+            return datas;
+        } else {
+            String errorMessage = jsonResult.getString("message");
+            if (errorMessage == null || errorMessage.trim().length() == 0) {
+                errorMessage = "失败";
+            }
+            log.info(errorMessage);
+            throw new Exception(errorMessage);
+        }
+
+    }
+
+
+}

+ 6 - 10
src/main/java/com/zfire/jiasm/syncdata/download/AnzhuangGongDan.java → src/main/java/com/zfire/jiasm/syncdata/download/order/AnzhuangGongDanDownload.java

@@ -1,4 +1,4 @@
-package com.zfire.jiasm.syncdata.download;
+package com.zfire.jiasm.syncdata.download.order;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -30,15 +30,11 @@ import java.util.*;
  * 用户预约改约表、安装辅助人员表、客户评价表、三方平台订单信息表
  * 1:先放本地download表
  * 2:与总部同下载状态
- * 3:落业务表
- *:4:修改下载主表处理结果
- * 3-4需增加单独任务,确保中断异常
+ * 3:AnzhuangGongDanBusiness 类处理,数据落本地数所表
  */
-
-
 @Slf4j
 @Component
-public class AnzhuangGongDan {
+public class AnzhuangGongDanDownload {
     @Value("${baseurl}")
     private String baseurl = "";
 
@@ -81,7 +77,7 @@ public class AnzhuangGongDan {
 
 
     // 1:下载安装工单数据
-    @Scheduled(fixedDelay = 1 * 30 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     public void process() throws Exception {
         if (1 == 1) {
             return;
@@ -134,7 +130,7 @@ public class AnzhuangGongDan {
     }
 
     // 2:与总部同步安装工单下载状态 下次获取时不再拉取数据  单独开任务确保效率更好,
-    @Scheduled(fixedDelay = 1 * 30 * 1000)
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
     public void syncDownStat() throws Exception {
         if (1 == 1) {
             return;
@@ -1276,7 +1272,7 @@ public class AnzhuangGongDan {
             }
             return Boolean.FALSE;
         } else {
-            // 无数据插入新记录 生成对
+            // 无数据插入新记录 生成对
             ItfInstallBatchDownloadRec item = getItfInstallBatchDownloadRec(Boolean.FALSE,aData, downloadBatchNo, downloadTaskNo, salesWebsitNumber);
             rec.add(item);
             return Boolean.TRUE;

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

@@ -0,0 +1,880 @@
+package com.zfire.jiasm.syncdata.download.worker;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.zfire.jiasm.syncdata.base.BaseService;
+import com.zfire.jiasm.syncdata.constant.DictTypeEnum;
+import com.zfire.jiasm.syncdata.constant.ServiceCategoryEnum;
+import com.zfire.jiasm.syncdata.gree.GreeLogic;
+import com.zfire.jiasm.syncdata.helper.GreeResponseHelper;
+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.response.WangdianWxgVos;
+import com.zfire.jiasm.syncdata.response.WxgQueryInfo;
+import com.zfire.jiasm.syncdata.utils.oss.OSSUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.jetbrains.annotations.NotNull;
+import org.springframework.beans.BeanUtils;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 格力品牌网点维修工 证件照,服务类目,新增同步 初始化进来
+ *     后期不做新增同步,只做修改同步
+ * 扫描下载表
+ */
+@Slf4j
+@Component
+public class GLPPWXGQueryAdd {
+
+    String wdqyapi = "/outapp/wxg/list";
+
+
+    @Resource
+    BaseService baseService;
+    @Resource
+    GreeLogic greeLogic;
+    @Resource
+    OSSUtil ossUtil;
+    @Resource
+    ItfTblWangdianWxgDownloadService itfTblWangdianWxgDownloadService;
+    @Resource
+    ItfTblXinWangdianDownloadService itfTblXinWangdianDownloadService;
+    @Resource
+    WorkerBrandAccountService workerBrandAccountService;
+    @Resource
+    WorkerCertService workerCertService;
+    @Resource
+    WorkerStreetService workerStreetService;
+    @Resource
+    ProvinceService provinceService;
+    @Resource
+    BrandLbsRelateService brandLbsRelateService;
+    @Resource
+    WorkerServiceCategoryService workerServiceCategoryService;
+    @Resource
+    WorkerServiceCategoryDetailService workerServiceCategoryDetailService;
+    @Resource
+    SysDictRefService sysDictRefService;
+    @Resource
+    SysDictService sysDictService;
+    @Resource
+    CustomerInformationWebsitService customerInformationWebsitService;
+    @Resource
+    WebsitService websitService;
+    @Resource
+    WorkerService workerService;
+    @Resource
+    ItfTblWangdianPositionDownloadService itfTblWangdianPositionDownloadService;
+
+    /**
+     * 同步师傅的证件照 新增
+     *   师傅状态离职不同步
+     *
+     */
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
+    public void wxgQueryAddCertInfo() throws Exception {
+        if (1==1){
+            return;
+        }
+
+        WangdianWxgVos wvos = new WangdianWxgVos();
+        List<WorkerCert> addList = new ArrayList<>();
+        Map<String,Object> req = new HashMap<>();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        // 提取品牌信息
+        Brand brand = baseService.getBrand();
+        if (brand == null) {
+            return;
+        }
+
+        List<Worker> oldWorkerRec =  workerService.lambdaQuery()
+                .select(Worker::getWorkerId).list();
+        List<String> oldWorkers = oldWorkerRec.stream().map(Worker::getWorkerId).collect(Collectors.toList());
+
+        // 提取格力现有的网点师傅数据信息
+        List<ItfTblWangdianWxgDownload> wxgRecs =  itfTblWangdianWxgDownloadService.lambdaQuery()
+                .select(ItfTblWangdianWxgDownload::getWxgid,
+                        ItfTblWangdianWxgDownload::getWxgno,
+                        ItfTblWangdianWxgDownload::getWdno,
+                        ItfTblWangdianWxgDownload::getSfzen)
+                .like(ItfTblWangdianWxgDownload::getWdno,"S%").list();
+
+        // 提取现有已存在的证件信息的师傅信息
+        List<WorkerCert> wc = workerCertService.lambdaQuery()
+                .select(WorkerCert::getWorkerId).list();
+        List<String> wcMaps = wc.stream().map(WorkerCert::getWorkerId).collect(Collectors.toList());
+
+        log.info("开始同步师傅证件照信息: {}",sdf.format(new Date()));
+
+        for (ItfTblWangdianWxgDownload wxg :wxgRecs){
+            // 无效的数据不新增
+            if (wxg.getFlag() != null){
+                if (!wxg.getFlag().trim().equals(DictTypeEnum.DICT_TYPE_FLAG_ON.getCode())){
+                    continue;
+                }
+            }
+            if (!oldWorkers.contains(wxg.getSfzen())){
+                continue;
+            }
+            // 有证件信息的师傅不现新增
+            if (wcMaps.contains(wxg.getSfzen())){
+                continue;
+            }
+
+            // 参数 获取网点维修工信息
+            getParameter(wxg.getWdno(), wxg.getWxgno(), req);
+            // 格力总部查询工程师信息
+            GreeResponseHelper response = greeLogic.greePost(wdqyapi, JSONObject.toJSONString(req), 1);
+            if (response.getStatus() == 200){
+                WxgQueryInfo resultDatax = JSONObject.parseObject(response.getData().toString(), WxgQueryInfo.class);
+                // 无证件不处理
+                if ( resultDatax.getWangdianWxgVos().size()<1){
+                    continue;
+                }
+
+                wvos = resultDatax.getWangdianWxgVos().get(0);
+
+                try {
+                    // 同步-新增证件信息
+                    getCertInfo(wvos, addList, wxg.getSfzen());
+                    // 新增或修改(证件)
+                    addDataCert(addList);
+                } catch (Exception ex) {
+                    log.info("工程师证件照信息同步失败-师傅证件信息:{}", wxg.getSfzen());
+                }
+            }
+        }
+        log.info("同步师傅证件照信息结束: {}",sdf.format(new Date()));
+    }
+
+
+    /**
+     * 新增 师傅服务类目信息
+     *
+     *
+     */
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
+    public void wxgQueryAddCategory() throws Exception {
+        if (1==1){
+            return;
+        }
+
+        WangdianWxgVos wvos = new WangdianWxgVos();
+        List<WorkerBrandAccount> wbarecs = new ArrayList<>();
+        Map<String,Object> req = new HashMap<>();
+        List<WorkerServiceCategory> wscList = new ArrayList<>();
+        List<WorkerServiceCategoryDetail> wscdList = new ArrayList<>();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Map<String, List<WorkerServiceCategoryDetail>> wxgCategoryTypeRecs = new HashMap<>();
+
+        // 提取品牌信息
+        Brand brand = baseService.getBrand();
+        if (brand == null) {
+            return;
+        }
+
+        // 提取品牌商对应的大类信息
+        List<SysDictRef> sysDictRef =  sysDictRefService.lambdaQuery()
+                .select(SysDictRef::getDictCode,SysDictRef::getDictValue,SysDictRef::getRefDictCode)
+                .eq(SysDictRef::getBrandId, brand.getBrandId())
+                .eq(SysDictRef::getDictType, DictTypeEnum.DICT_TYPE_MAIN_TYPE.getCode())
+                .list();
+        Map<String, List<SysDictRef>> sysDictRefMap = sysDictRef.stream().
+                collect(Collectors.groupingBy(SysDictRef::getRefDictCode));
+
+
+        // 字典表中查出ID 格力只有-家电售后
+        SysDict sysDict =  sysDictService.lambdaQuery()
+                .eq(SysDict::getDictType, ServiceCategoryEnum.DICT_TYPE_SERVICE_CATEGORY.getCode())
+                .eq(SysDict::getDictValue,ServiceCategoryEnum.DICT_TYPE_SERVICE_CATEGORY.getText()).one();
+        if (sysDict == null) {
+            return;
+        }
+
+        List<Worker> oldWorkerRec =  workerService.lambdaQuery()
+                .select(Worker::getWorkerId).list();
+        List<String> oldWorkers = oldWorkerRec.stream().map(Worker::getWorkerId).collect(Collectors.toList());
+
+        // 提取格力现有的网点师傅数据信息
+        List<ItfTblWangdianWxgDownload> wxgRecs =  itfTblWangdianWxgDownloadService.lambdaQuery()
+                .select(ItfTblWangdianWxgDownload::getWxgid,
+                        ItfTblWangdianWxgDownload::getWxgno,
+                        ItfTblWangdianWxgDownload::getWdno,
+                        ItfTblWangdianWxgDownload::getSfzen)
+                //.eq(ItfTblWangdianWxgDownload::getWxgno,"S21A00200023")// 测试用 todo
+                .like(ItfTblWangdianWxgDownload::getWdno,"S%").list();
+
+
+        //本地提取商户师傅网点信息
+        wbarecs = workerBrandAccountService.lambdaQuery()
+                .eq(WorkerBrandAccount::getBrandId, brand.getBrandId())
+                .isNotNull(WorkerBrandAccount::getBrandWorkerNumber)
+                .isNotNull(WorkerBrandAccount::getBrandWebsitNumber)
+                .list();
+
+        // 提取所有师傅的服务大类信息 先内存中查询
+        List<WorkerServiceCategoryDetail> wxgCategoryRec = workerServiceCategoryDetailService.lambdaQuery().list();
+        Map<String, List<WorkerServiceCategoryDetail>> oldWxgCategoryRecMap = wxgCategoryRec.stream().collect(Collectors.groupingBy(WorkerServiceCategoryDetail::getWorkerId));
+
+        log.info("开始同步网点师傅服务类目信息: {}",sdf.format(new Date()));
+
+        for (ItfTblWangdianWxgDownload wxg :wxgRecs){
+            // 无效的数据不新增
+            if (wxg.getFlag() != null){
+                if (!wxg.getFlag().trim().equals(DictTypeEnum.DICT_TYPE_FLAG_ON.getCode())){
+                    continue;
+                }
+            }
+            if (!oldWorkers.contains(wxg.getSfzen())){
+                continue;
+            }
+
+            // 提取本地商户师傅信息 按品牌,网点,师傅编号  存在对象不处理 修改处已做了处理
+            WorkerBrandAccount workerBrandAccount = getWorkerBrandAccountData(wbarecs, wxg);
+            if (workerBrandAccount != null) {
+                continue;
+            }
+
+            // 参数 获取网点维修工信息
+            getParameter(wxg.getWdno(), wxg.getWxgno(), req);
+            log.info("req: {}",req);
+            // 格力总部查询工程师信息
+            GreeResponseHelper response = greeLogic.greePost(wdqyapi, JSONObject.toJSONString(req), 1);
+            if (response.getStatus() == 200){
+                WxgQueryInfo resultDatax = JSONObject.parseObject(response.getData().toString(), WxgQueryInfo.class);
+                // 无信息不处理
+                if ( resultDatax.getWangdianWxgVos().size()<1){
+                    continue;
+                }
+
+                wvos = resultDatax.getWangdianWxgVos().get(0);
+
+                // 提取师傅的服务大类信息 先内存中查询
+                if (oldWxgCategoryRecMap.containsKey(wxg.getSfzen())){
+                    wxgCategoryTypeRecs = oldWxgCategoryRecMap.get(wxg.getSfzen()).stream().
+                            collect(Collectors.groupingBy(WorkerServiceCategoryDetail::getType));
+
+                } else {
+                    List<WorkerServiceCategoryDetail> wxgCategoryRecs = workerServiceCategoryDetailService.lambdaQuery()
+                            .eq(WorkerServiceCategoryDetail::getWorkerId, wxg.getSfzen()).list();
+
+                    // 服务类型 INSTALL=安装 REPAIR=维修  DELIVERY=配送
+                    wxgCategoryTypeRecs = wxgCategoryRecs.stream().
+                            collect(Collectors.groupingBy(WorkerServiceCategoryDetail::getType));
+                }
+
+                try {
+                    // 同步-师傅服务的类目信息 无则插入
+                    getServiceCategory(wvos, wscList, wscdList, sysDict, wxg, wxgCategoryTypeRecs, sysDictRefMap);
+
+                    // 新增或修改(师傅服务的类目)
+                    addDataCategory(wscList, wscdList);
+
+                    // 清理缓存,把新增的服务类目加到缓存中
+                    extractedCaretory(wscList, wscdList, oldWxgCategoryRecMap, wxg);
+
+
+                } catch (Exception ex) {
+                    log.info("工程师信息同步失败:{}", ex);
+                }
+            }
+        }
+        log.info("同步同步网点师傅服务类目信息结束: {}",sdf.format(new Date()));
+    }
+
+
+    /**
+     * 新增师傅地理位置  不再执行 由 wxgQueryAddWXGInfo 来完成
+     */
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
+    public void wxgQueryAdd() throws Exception {
+        if (1==1){
+            return;
+        }
+
+        WangdianWxgVos wvos = new WangdianWxgVos();
+        List<WorkerBrandAccount> wbaaddList = new ArrayList<>();
+        List<WorkerBrandAccount> wbarecs = new ArrayList<>();
+        Map<String,Object> req = new HashMap<>();
+        List<WorkerStreet> ws = new ArrayList<>();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Map<String, List<WorkerServiceCategoryDetail>> wxgCategoryTypeRecs = new HashMap<>();
+
+        // 提取品牌信息
+        Brand brand = baseService.getBrand();
+        if (brand == null) {
+            return;
+        }
+
+        // 网点对应关系
+        List<CustomerInformationWebsit> ciws = customerInformationWebsitService.lambdaQuery()
+                .select(CustomerInformationWebsit::getWebsitId,
+                        CustomerInformationWebsit::getRefWebsitId)
+                .eq(CustomerInformationWebsit::getBrandId,brand.getBrandId()).list();
+        if (ciws ==null || ciws.size()<1){
+            return;
+        }
+
+        List<Worker> oldWorkerRec =  workerService.lambdaQuery()
+                .select(Worker::getWorkerId).list();
+        List<String> oldWorkers = oldWorkerRec.stream().map(Worker::getWorkerId).collect(Collectors.toList());
+
+        // 提取对应的服务商网点信息
+        List<Websit> websits = websitService.lambdaQuery()
+                .select(Websit::getWebsitId,
+                        Websit::getWebsitName)
+                .in(Websit::getWebsitId,ciws.stream().map(CustomerInformationWebsit::getWebsitId).collect(Collectors.toList()))
+                .list();
+
+        // 提取格力所有的网点信息
+        List<ItfTblXinWangdianDownload> wdRecs = itfTblXinWangdianDownloadService.lambdaQuery()
+                .select(ItfTblXinWangdianDownload::getPkGuid,
+                        ItfTblXinWangdianDownload::getWdno).list();
+        Map<String, List<ItfTblXinWangdianDownload>> mapWdRes = wdRecs.stream().
+                collect(Collectors.groupingBy(ItfTblXinWangdianDownload::getWdno));
+
+        // 提取格力现有的网点师傅数据信息
+        List<ItfTblWangdianWxgDownload> wxgRecs =  itfTblWangdianWxgDownloadService.lambdaQuery()
+                .select(ItfTblWangdianWxgDownload::getWxgid,
+                        ItfTblWangdianWxgDownload::getWxgno,
+                        ItfTblWangdianWxgDownload::getWdno,
+                        ItfTblWangdianWxgDownload::getSfzen)
+                // .eq(ItfTblWangdianWxgDownload::getWxgno,"S21A00200023")// 测试用 todo
+                .like(ItfTblWangdianWxgDownload::getWdno,"S%").list();
+
+        //本地提取商户师傅网点信息
+        wbarecs = workerBrandAccountService.lambdaQuery()
+                .eq(WorkerBrandAccount::getBrandId, brand.getBrandId())
+                .isNotNull(WorkerBrandAccount::getBrandWorkerNumber)
+                .isNotNull(WorkerBrandAccount::getBrandWebsitNumber)
+                .list();
+
+        // 提取品牌商对应的大类信息
+        List<SysDictRef> sysDictRef =  sysDictRefService.lambdaQuery()
+                .select(SysDictRef::getDictCode,SysDictRef::getDictValue,SysDictRef::getRefDictCode)
+                .eq(SysDictRef::getBrandId, brand.getBrandId())
+                .eq(SysDictRef::getDictType, DictTypeEnum.DICT_TYPE_MAIN_TYPE.getCode())
+                .list();
+        Map<String, List<SysDictRef>> sysDictRefMap = sysDictRef.stream().
+                collect(Collectors.groupingBy(SysDictRef::getRefDictCode));
+
+        // 提取所有师傅的服务大类信息 先内存中查询
+        List<WorkerServiceCategoryDetail> wxgCategoryRec = workerServiceCategoryDetailService.lambdaQuery().list();
+        Map<String, List<WorkerServiceCategoryDetail>> oldWxgCategoryRecMap = wxgCategoryRec.stream().collect(Collectors.groupingBy(WorkerServiceCategoryDetail::getWorkerId));
+
+        log.info("开始同步网点师傅地理位置信息: {}",sdf.format(new Date()));
+
+        for (ItfTblWangdianWxgDownload wxg :wxgRecs){
+            // 无效的数据不新增
+            if (wxg.getFlag() != null){
+                if (!wxg.getFlag().trim().equals(DictTypeEnum.DICT_TYPE_FLAG_ON.getCode())){
+                    continue;
+                }
+            }
+            if (!oldWorkers.contains(wxg.getSfzen())){
+                continue;
+            }
+
+            // 提取本地商户师傅信息 按品牌,网点,师傅编号  存在对象不处理
+            WorkerBrandAccount workerBrandAccount = getWorkerBrandAccountData(wbarecs, wxg);
+            if (workerBrandAccount != null) {
+                continue;
+            }
+
+            // 参数 获取网点维修工信息
+            getParameter(wxg.getWdno(), wxg.getWxgno(), req);
+            // 格力总部查询工程师信息
+            GreeResponseHelper response = greeLogic.greePost(wdqyapi, JSONObject.toJSONString(req), 1);
+            if (response.getStatus() == 200){
+                WxgQueryInfo resultDatax = JSONObject.parseObject(response.getData().toString(), WxgQueryInfo.class);
+                // 无信息不处理
+                if ( resultDatax.getWangdianWxgVos().size()<1){
+                    continue;
+                }
+
+                wvos = resultDatax.getWangdianWxgVos().get(0);
+
+                // 提取师傅的服务大类信息 先内存中查询
+                if (oldWxgCategoryRecMap.containsKey(wxg.getSfzen())){
+                    wxgCategoryTypeRecs = oldWxgCategoryRecMap.get(wxg.getSfzen()).stream().
+                            collect(Collectors.groupingBy(WorkerServiceCategoryDetail::getType));
+
+                } else {
+                    List<WorkerServiceCategoryDetail> wxgCategoryRecs = workerServiceCategoryDetailService.lambdaQuery()
+                            .eq(WorkerServiceCategoryDetail::getWorkerId, wxg.getSfzen()).list();
+
+                    // 服务类型 INSTALL=安装 REPAIR=维修  DELIVERY=配送
+                    wxgCategoryTypeRecs = wxgCategoryRecs.stream().
+                            collect(Collectors.groupingBy(WorkerServiceCategoryDetail::getType));
+                }
+
+                try {
+
+                    // 生成师傅所在品牌商网点信息
+                    if (getwbaInfo(wvos, wbaaddList, brand, ciws, websits, wxg, mapWdRes)) {
+                        continue;
+                    }
+
+                    // 同步-新增师傅地理位置 生成对象失败不处理
+                    if (getwz(wvos, ws, brand, wxg.getSfzen())){
+                        continue;
+                    }
+
+                    // 新增或修改(证件,师傅地理位置,师傅服务的类目)
+                    addData(wbaaddList, ws);
+
+                } catch (Exception ex) {
+                    log.info("工程师信息同步失败:{}", ex);
+                }
+            }
+        }
+        log.info("同步网点师傅地理位置信息结束: {}",sdf.format(new Date()));
+    }
+
+
+    /**
+     * 新增格力网点维修工数据
+     */
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
+    public void wxgQueryAddWXGInfo() throws Exception {
+        if (1 == 1) {
+            return;
+        }
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Map<String,Object> req = new HashMap<>();
+        WangdianWxgVos wvos = new WangdianWxgVos();
+        List<ItfTblWangdianPositionDownload> wdwxgadd = new ArrayList<>();
+
+        List<Worker> oldWorkerRec =  workerService.lambdaQuery()
+                .select(Worker::getWorkerId).list();
+        List<String> oldWorkers = oldWorkerRec.stream().map(Worker::getWorkerId).collect(Collectors.toList());
+
+        // 提取格力现有的网点师傅数据信息
+        List<ItfTblWangdianWxgDownload> wxgRecs =  itfTblWangdianWxgDownloadService.lambdaQuery()
+                .select(ItfTblWangdianWxgDownload::getWxgid,
+                        ItfTblWangdianWxgDownload::getWxgno,
+                        ItfTblWangdianWxgDownload::getWdno,
+                        ItfTblWangdianWxgDownload::getSfzen)
+                .like(ItfTblWangdianWxgDownload::getWdno,"S%").list();
+
+        log.info("开始同步网点维修工数据信息: {}",sdf.format(new Date()));
+        try {
+            for (ItfTblWangdianWxgDownload wxg :wxgRecs) {
+                // 无效的数据不新增
+                if (wxg.getFlag() != null) {
+                    if (!wxg.getFlag().trim().equals(DictTypeEnum.DICT_TYPE_FLAG_ON.getCode())) {
+                        continue;
+                    }
+                }
+                if (!oldWorkers.contains(wxg.getSfzen())) {
+                    continue;
+                }
+                // 参数 获取网点维修工信息
+                getParameter(wxg.getWdno(), wxg.getWxgno(), req);
+                // 格力总部查询工程师信息
+                GreeResponseHelper response = greeLogic.greePost(wdqyapi, JSONObject.toJSONString(req), 1);
+                if (response.getStatus() == 200) {
+                    WxgQueryInfo resultDatax = JSONObject.parseObject(response.getData().toString(), WxgQueryInfo.class);
+                    // 无信息不处理
+                    if (resultDatax.getWangdianWxgVos().size() < 1) {
+                        continue;
+                    }
+                    wvos = resultDatax.getWangdianWxgVos().get(0);
+
+                    // 新增
+                    getwdwxdInfo(wvos, wdwxgadd);
+
+                }
+            }
+            // 新增
+            if (wdwxgadd.size() > 0) {
+                itfTblWangdianPositionDownloadService.saveBatch(wdwxgadd);
+                wdwxgadd.clear();
+            }
+        } catch (Exception ex) {
+            log.info("同步网点维修工数据信息失败:{}", ex);
+        }
+
+        log.info("同步网点维修工数据信息结束: {}",sdf.format(new Date()));
+    }
+
+    private void getwdwxdInfo(WangdianWxgVos wvos, List<ItfTblWangdianPositionDownload> wdwxgadd) {
+        ItfTblWangdianPositionDownload item = new ItfTblWangdianPositionDownload();
+        BeanUtils.copyProperties(wvos,item);
+        wdwxgadd.add(item);
+        if (wdwxgadd.size()>100){
+            itfTblWangdianPositionDownloadService.saveBatch(wdwxgadd);
+            wdwxgadd.clear();
+        }
+    }
+
+
+    private void getParameter(String wdno, String wxgno, Map<String, Object> req) {
+        req.put("wdno", wdno);
+        req.put("wxgno", wxgno);
+        req.put("page", 1);
+        req.put("size", 20);
+        req.put("xsgsshstat", 2);
+    }
+
+    private void getCertInfo(WangdianWxgVos wvos, List<WorkerCert> addList, String sfzen) throws Exception {
+        // 同步-新增证件信息
+        for (ZJInfo zj: wvos.getZjInfoList()){
+            workercertAdd(wvos, addList, sfzen, zj);
+        }
+    }
+
+    private void workercertAdd(WangdianWxgVos wvos, List<WorkerCert> addList, String sfzen, ZJInfo zj) throws Exception {
+        // 新增
+        WorkerCert add = new WorkerCert();
+        add.setId(UUID.randomUUID().toString());
+        add.setWorkerId(sfzen);
+        add.setCertName(zj.getZjmc());
+
+        if (zj.getZjlj().contains(",")){
+            List<String> result = Arrays.asList(zj.getZjlj().split(","));
+            add.setOutFileUrl(result.get(0));
+            add.setOutFileUrl2(result.get(1));
+            // 上传图片
+            String id = putCert(result.get(0));
+            add.setFileUrl(id);
+            String id2 = putCert(result.get(1));
+            add.setFileUrl2(id2);
+            new File(id).delete();
+            new File(id2).delete();
+        } else {
+            add.setOutFileUrl(zj.getZjlj());
+            String id = putCert(zj.getZjlj());
+            add.setFileUrl(id);
+            new File(id).delete();
+        }
+        if (zj.getZjbh().contains("/")){
+            List<String> result = Arrays.asList(zj.getZjbh().split("/"));
+            add.setCertNo(result.get(1));
+        } else {
+            add.setCertNo(zj.getZjbh());
+        }
+        if (StringUtils.isNotEmpty(zj.getZjyxq())){
+            add.setExpireTime(baseService.utcToDateStr(zj.getZjyxq()));
+        }
+        if (StringUtils.isNotEmpty(zj.getZjfssj())){
+            add.setReviewTime(baseService.utcToDateStr(zj.getZjfssj()));
+        }
+
+        add.setExamineStatus("OK");
+        add.setSex(wvos.getXingb());
+        add.setOutSyncStatus(1);
+        add.setOutSyncTime(new Date());
+
+        addList.add(add);
+    }
+
+    @NotNull
+    private String putCert(String image) throws Exception {
+        String id = IdWorker.getIdStr()+".jpeg";
+        baseService.saveToFile(greeLogic.greeFileUrl(image), id);
+        String file = id;
+        ossUtil.uploadFile(id, new File(file));
+
+        return id;
+    }
+
+    public void addDataCert(List<WorkerCert> addList) {
+        // 证件同步
+        if (addList.size()>0){
+            workerCertService.saveBatch(addList);
+            addList.clear();
+        }
+    }
+
+    private WorkerBrandAccount getWorkerBrandAccountData(List<WorkerBrandAccount> wbarecs, ItfTblWangdianWxgDownload wxg){
+        WorkerBrandAccount workerBrandAccount = null;
+
+        for (WorkerBrandAccount wba: wbarecs){
+            if (wba.getBrandWebsitNumber().equals(wxg.getWdno())
+                    && wba.getBrandWorkerNumber().equals(wxg.getWxgno())){
+                workerBrandAccount = wba;
+                break;
+            }
+        }
+
+        if (workerBrandAccount == null){
+            return null;
+        }
+
+        return workerBrandAccount;
+    }
+
+    private void getServiceCategory(WangdianWxgVos wvos, List<WorkerServiceCategory> wscList, List<WorkerServiceCategoryDetail> wscdList,
+                                    SysDict sysDict, ItfTblWangdianWxgDownload wxg,
+                                    Map<String,List<WorkerServiceCategoryDetail>> wxgCategoryTypeRecs,
+                                    Map<String, List<SysDictRef>> sysDictRefMap) {
+        List<String> complete = new ArrayList<>();
+        // 先处理商用
+        for (SignSplb syitem: wvos.getSySignSplbList()){
+            // 扫描每个大类
+            for (String s :syitem.getFwlbList()){
+                // 师傅服务的大类中查看是否存在 不存在新增
+                extracted(wscList, wscdList, complete, sysDict, wxg, wxgCategoryTypeRecs,
+                        syitem, s,ServiceCategoryEnum.COMMERCIAL_TYPE.getCode(), sysDictRefMap);
+            }
+        }
+        complete.clear();
+
+        // 处理家用
+        for (SignSplb syitem: wvos.getJySignSplbList()){
+            // 扫描每个大类
+            for (String s :syitem.getFwlbList()){
+                // 师傅服务的大类中查看是否存在 不存在新增
+                extracted(wscList, wscdList, complete, sysDict, wxg, wxgCategoryTypeRecs,
+                        syitem, s,ServiceCategoryEnum.HOME_TYPE.getCode(), sysDictRefMap);
+            }
+        }
+    }
+
+    private void extracted(List<WorkerServiceCategory> wscList, List<WorkerServiceCategoryDetail> wscdList,
+                           List<String> complete, SysDict sysDict, ItfTblWangdianWxgDownload wxg,
+                           Map<String,List<WorkerServiceCategoryDetail>> wxgCategoryTypeRecs, SignSplb syitem,
+                           String s, String type,Map<String, List<SysDictRef>> sysDictRefMap) {
+        if ( !complete.contains(s + syitem.getSpdl())){
+            // 提取品牌商对应的大类信息
+            SysDictRef sysDictRef = sysDictRefMap.get(String.valueOf(syitem.getSpdl())).get(0);
+
+            if (s.equals(ServiceCategoryEnum.INSTALL_TYPE.getText())){
+                getAddInfo(wscList, wscdList, sysDict, wxg, wxgCategoryTypeRecs,
+                        sysDictRef,ServiceCategoryEnum.INSTALL_TYPE.getCode(),type);
+            } else if (s.equals(ServiceCategoryEnum.REPAIR_TYPE.getText())){
+                getAddInfo(wscList, wscdList, sysDict, wxg, wxgCategoryTypeRecs,
+                        sysDictRef,ServiceCategoryEnum.REPAIR_TYPE.getCode(),type);
+            } else if (s.equals(ServiceCategoryEnum.DELIVERY_TYPE.getText())){
+                getAddInfo(wscList, wscdList, sysDict, wxg, wxgCategoryTypeRecs,
+                        sysDictRef,ServiceCategoryEnum.DELIVERY_TYPE.getCode(),type);
+            }
+            // 新增过的无需再次新增
+            complete.add(s + syitem.getSpdl());
+        }
+    }
+
+    private void getAddInfo(List<WorkerServiceCategory> wscList, List<WorkerServiceCategoryDetail> wscdList, SysDict sysDict,
+                            ItfTblWangdianWxgDownload wxg, Map<String, List<WorkerServiceCategoryDetail>> wxgCategoryTypeRecs,
+                            SysDictRef sysDictRef, String code, String type) {
+        Boolean include = Boolean.FALSE;
+        // 看师傅是否已有(服务类型 INSTALL=安装 REPAIR=维修  DELIVERY=配送)对应的大类信息 如有不做任何处理
+        if (wxgCategoryTypeRecs !=null && wxgCategoryTypeRecs.size()>0){
+            if (wxgCategoryTypeRecs.containsKey(code)){
+                for (WorkerServiceCategoryDetail category : wxgCategoryTypeRecs.get(code)){
+                    if (category.getMainId().equals(sysDictRef.getDictCode())){
+                        include = Boolean.TRUE;
+                        break;
+                    }
+                }
+            }
+        }
+
+        if (!include){
+            // 新增
+            // 看 worker_service_category 有无数据,无数据新增
+            if (wxgCategoryTypeRecs ==null || wxgCategoryTypeRecs.size()<1 || !wxgCategoryTypeRecs.containsKey(code) ){
+                WorkerServiceCategory wsc = new WorkerServiceCategory();
+                wsc.setId(IdWorker.getIdStr());
+                wsc.setWorkerId(String.valueOf(wxg.getSfzen()));
+                wsc.setServiceCategoryId(sysDict.getDictCode());
+                wsc.setServiceCategoryName(sysDict.getDictValue());
+                wsc.setFlag(type);
+                wsc.setType(code);
+                wsc.setCreateTime(new Date());
+                wscList.add(wsc);
+
+                // WorkerServiceCategoryDetail 新增
+                WorkerServiceCategoryDetail wscd = new WorkerServiceCategoryDetail();
+                wscd.setId(IdWorker.getIdStr());
+                wscd.setWorkerServiceCategoryId(wsc.getId());
+                wscd.setWorkerId(String.valueOf(wxg.getSfzen()));
+                wscd.setServiceCategoryId(sysDict.getDictCode());
+                wscd.setServiceCategoryName(sysDict.getDictValue());
+                wscd.setFlag(type);
+                wscd.setType(code);
+                wscd.setMainId(sysDictRef.getDictCode());
+                wscd.setMainName(sysDictRef.getDictValue());
+                wscd.setCreateTime(new Date());
+
+                wscdList.add(wscd);
+
+            } else {
+                // WorkerServiceCategoryDetail 新增
+                WorkerServiceCategoryDetail wscd = new WorkerServiceCategoryDetail();
+                wscd.setId(IdWorker.getIdStr());
+                wscd.setWorkerServiceCategoryId(wxgCategoryTypeRecs.get(code).get(0).getServiceCategoryId());
+                wscd.setWorkerId(String.valueOf(wxg.getSfzen()));
+                wscd.setServiceCategoryId(sysDict.getDictCode());
+                wscd.setServiceCategoryName(sysDict.getDictValue());
+                wscd.setFlag(type);
+                wscd.setType(code);
+                wscd.setMainId(sysDictRef.getDictCode());
+                wscd.setMainName(sysDictRef.getDictValue());
+                wscd.setCreateTime(new Date());
+                wscdList.add(wscd);
+            }
+        }
+    }
+
+    public void addDataCategory(List<WorkerServiceCategory> wscList, List<WorkerServiceCategoryDetail> wscdList) {
+
+        // 师傅服务类目新增
+        if (wscList.size()>0){
+            workerServiceCategoryService.saveBatch(wscList);
+        }
+        if (wscdList.size()>0){
+            workerServiceCategoryDetailService.saveBatch(wscdList);
+        }
+    }
+
+    private void extractedCaretory(List<WorkerServiceCategory> wscList, List<WorkerServiceCategoryDetail> wscdList,
+                                   Map<String, List<WorkerServiceCategoryDetail>> oldWxgCategoryRecMap, ItfTblWangdianWxgDownload wxg) {
+        if (oldWxgCategoryRecMap.containsKey(wxg.getSfzen())){
+            oldWxgCategoryRecMap.get(wxg.getSfzen()).addAll(wscdList);
+        }
+
+        wscList.clear();
+        wscdList.clear();
+    }
+
+    private boolean getwbaInfo(WangdianWxgVos wvos, List<WorkerBrandAccount> wbaaddList, Brand brand,
+                               List<CustomerInformationWebsit> ciws, List<Websit> websits,
+                               ItfTblWangdianWxgDownload wxg, Map<String, List<ItfTblXinWangdianDownload>> mapWdRes) {
+        String websitId ="";
+        String websitName ="";
+
+        // 品牌网点与商户网点对关系表中提取品牌方的网点信息  无数据不处理,对应关系需要人为操作
+        for (CustomerInformationWebsit wd: ciws){
+            if (wd.getRefWebsitId().equals(wxg.getWdno())){
+                websitId=wd.getWebsitId();
+            }
+        }
+        if (StringUtils.isEmpty(websitId)){
+            return true;
+        }
+
+        for (Websit wets: websits){
+            if (wets.getWebsitId().equals(websitId)){
+                websitName = wets.getWebsitName();
+                break;
+            }
+        }
+
+        // 新增 WorkerBrandAccount todo
+        WorkerBrandAccount n = new WorkerBrandAccount();
+        n.setId(IdWorker.getIdStr());
+        n.setWorkerId(wxg.getSfzen());
+        n.setWebsitId(websitId);
+        n.setWebsitName(websitName);
+        n.setBrandId(brand.getBrandId());
+        n.setBrandWorkerId(String.valueOf(wxg.getWxgid()));
+        n.setBrandWorkerNumber(wxg.getWxgno());
+        if (mapWdRes.get(wxg.getWdno()).size()>0){
+            n.setBrandWebsitId(mapWdRes.get(wxg.getWdno()).get(0).getPkGuid());
+        }
+        n.setBrandWebsitNumber(wxg.getWdno());
+        n.setBrandWorkerStatus("ON");
+        if (wvos.getFlag().equals("无效")){
+            n.setBrandWorkerStatus("OFF");
+        }
+        n.setExpireTime(new Date());
+        n.setCreateTime(new Date());
+        n.setCreateBy("system");
+        wbaaddList.add(n);
+        return false;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void addData(List<WorkerBrandAccount> wbaaddList, List<WorkerStreet> ws) {
+        // 师傅所在品牌商网点信息同步
+        if (wbaaddList.size()>0){
+            workerBrandAccountService.saveBatch(wbaaddList);
+        }
+
+        // 同步-师傅地理位置
+        if (ws.size()>0){
+            workerStreetService.saveBatch(ws);
+        }
+
+        wbaaddList.clear();
+        ws.clear();
+    }
+
+    private Boolean getwz(WangdianWxgVos wvos, List<WorkerStreet> ws, Brand brand, String sfzen) {
+        // 师傅省市区街道信息
+        List<WorkerStreet> wsOld = workerStreetService.lambdaQuery()
+                .eq(WorkerStreet::getWorkerId, sfzen).list();
+        // 不存在新增
+        if (wsOld ==null || wsOld.size()<1){
+            addWorkerStreet(wvos, brand.getBrandId(), ws,sfzen);
+            if (ws.size()<1){
+                return Boolean.TRUE;
+            }
+        }
+        return Boolean.FALSE;
+    }
+
+
+    private void addWorkerStreet(WangdianWxgVos wvos, String brandId, List<WorkerStreet> ws, String sfzen) {
+        WorkerStreet n = new WorkerStreet();
+        n.setId(UUID.randomUUID().toString());
+        n.setProvinceId("");
+        n.setCityId("");
+        n.setAreaId("");
+        n.setStreetId("");
+        n.setWorkerId(sfzen);
+        n.setCreateTime(new Date());
+        n.setCreateBy("system");
+
+
+        // 提取省信息
+        if (StringUtils.isNotEmpty(wvos.getSfen())){
+            Province province = provinceService.lambdaQuery()
+                    .eq(Province::getProvince, wvos.getSfen()).one();
+            if (province !=null){
+                List<BrandLbsRelate> bra = brandLbsRelateService.lambdaQuery()
+                        .eq(BrandLbsRelate::getProvinceId,province.getProvinceId())
+                        .eq(BrandLbsRelate::getBrandId,brandId).list();
+                if (bra != null && bra.size()>0){
+                    for (BrandLbsRelate br :bra){
+                        if (StringUtils.isNotEmpty(br.getLbsProvinceId()) && StringUtils.isEmpty(n.getProvinceId())){
+                            n.setProvinceId(br.getLbsProvinceId());
+                            n.setProvince(br.getLbsProvinceName());
+                        }
+                        if (StringUtils.isNotEmpty(br.getLbsCityId()) && StringUtils.isEmpty(n.getCityId())){
+                            n.setCityId(br.getLbsCityId());
+                            n.setCity(br.getLbsCityName());
+                        }
+                        if (StringUtils.isNotEmpty(br.getLbsDistrictId()) && StringUtils.isEmpty(n.getAreaId())){
+                            n.setAreaId(br.getLbsDistrictId());
+                            n.setArea(br.getLbsDistrictName());
+                        }
+                        if (StringUtils.isNotEmpty(br.getLbsStreetId()) && StringUtils.isEmpty(n.getStreetId())){
+                            n.setStreet(br.getLbsStreetId());
+                            n.setStreetId(br.getLbsStreetName());
+                            break;
+                        }
+                    }
+                    ws.add(n);
+                }
+            }
+        }
+    }
+
+}

+ 517 - 0
src/main/java/com/zfire/jiasm/syncdata/download/worker/GLPPWXGQueryUpdate.java

@@ -0,0 +1,517 @@
+package com.zfire.jiasm.syncdata.download.worker;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.zfire.jiasm.syncdata.base.BaseService;
+import com.zfire.jiasm.syncdata.constant.DictTypeEnum;
+import com.zfire.jiasm.syncdata.constant.ServiceCategoryEnum;
+import com.zfire.jiasm.syncdata.gree.GreeLogic;
+import com.zfire.jiasm.syncdata.helper.GreeResponseHelper;
+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.response.WangdianWxgVos;
+import com.zfire.jiasm.syncdata.response.WxgQueryInfo;
+import com.zfire.jiasm.syncdata.utils.oss.OSSUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 格力品牌维修工证件照、地理位置、服务类目修改同步
+ * 扫描下载表
+ */
+@Slf4j
+@Component
+public class GLPPWXGQueryUpdate {
+    String wdqyapi = "/outapp/wxg/list";
+
+
+    @Resource
+    BaseService baseService;
+    @Resource
+    GreeLogic greeLogic;
+    @Resource
+    OSSUtil ossUtil;
+    @Resource
+    ItfTblWangdianWxgDownloadService itfTblWangdianWxgDownloadService;
+    @Resource
+    ItfTblXinWangdianDownloadService itfTblXinWangdianDownloadService;
+    @Resource
+    WorkerBrandAccountService workerBrandAccountService;
+    @Resource
+    WorkerCertService workerCertService;
+    @Resource
+    WorkerStreetService workerStreetService;
+    @Resource
+    ProvinceService provinceService;
+    @Resource
+    BrandLbsRelateService brandLbsRelateService;
+    @Resource
+    WorkerServiceCategoryService workerServiceCategoryService;
+    @Resource
+    WorkerServiceCategoryDetailService workerServiceCategoryDetailService;
+    @Resource
+    SysDictRefService sysDictRefService;
+    @Resource
+    SysDictService sysDictService;
+    @Resource
+    CustomerInformationWebsitService customerInformationWebsitService;
+    @Resource
+    WebsitService websitService;
+    @Resource
+    WorkerService workerService;
+
+
+    /** 只处理存在的-即师傅在商户网点信息已存本地数据中 WorkerBrandAccount   师傅地理位置不再处理
+     * 按网点查询工程师信息并同步-只处理存在进行修改 (证件,师傅地理位置,师傅服务的类目)
+     *     格力总部获取师傅信息
+     *     本地提取商户师傅信息 只修改不新增
+     *
+     */
+    @Scheduled(fixedDelay = 1 * 60 * 1000)
+    public void wxgQueryUpdate() throws Exception {
+        if (1==1){
+            return;
+        }
+
+        WangdianWxgVos wvos = new WangdianWxgVos();
+        List<WorkerCert> updateList = new ArrayList<>();
+        List<WorkerCert> addList = new ArrayList<>();
+        List<WorkerBrandAccount> wbarecs = new ArrayList<>();
+        Map<String,Object> req = new HashMap<>();
+        List<WorkerServiceCategory> wscList = new ArrayList<>();
+        List<WorkerServiceCategoryDetail> wscdList = new ArrayList<>();
+        List<WorkerStreet> ws = new ArrayList<>();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        // 提取品牌信息
+        Brand brand = baseService.getBrand();
+        if (brand == null) {
+            return;
+        }
+
+        // 字典表中查出ID 格力只有-家电售后
+        SysDict sysDict =  sysDictService.lambdaQuery().
+                eq(SysDict::getDictType,ServiceCategoryEnum.DICT_TYPE_SERVICE_CATEGORY.getCode())
+                .eq(SysDict::getDictValue,ServiceCategoryEnum.DICT_TYPE_SERVICE_CATEGORY.getText()).one();
+        if (sysDict == null) {
+            return;
+        }
+
+        // 提取品牌商对应的大类信息
+        List<SysDictRef> sysDictRef =  sysDictRefService.lambdaQuery()
+                .select(SysDictRef::getDictCode,SysDictRef::getDictValue,SysDictRef::getRefDictCode)
+                .eq(SysDictRef::getBrandId, brand.getBrandId())
+                .eq(SysDictRef::getDictType, DictTypeEnum.DICT_TYPE_MAIN_TYPE.getCode())
+                .list();
+        Map<String, List<SysDictRef>> sysDictRefMap = sysDictRef.stream().
+                collect(Collectors.groupingBy(SysDictRef::getRefDictCode));
+
+        // 提取现有的师傅数据信息 师傅离职的情况不再处理
+        List<ItfTblWangdianWxgDownload> wxgRecs =  itfTblWangdianWxgDownloadService.lambdaQuery()
+                .select(ItfTblWangdianWxgDownload::getWxgno,
+                        ItfTblWangdianWxgDownload::getWdno,
+                        ItfTblWangdianWxgDownload::getSfzen)
+                .eq(ItfTblWangdianWxgDownload::getWxgno,"S21A00200023")// 测试用
+                .like(ItfTblWangdianWxgDownload::getWdno,"S%").list();
+
+        //本地提取商户师傅网点信息
+        wbarecs = workerBrandAccountService.lambdaQuery()
+                .eq(WorkerBrandAccount::getBrandId, brand.getBrandId()).list();
+
+        log.info("开始同步网点师傅信息: {}",sdf.format(new Date()));
+
+        for (ItfTblWangdianWxgDownload wxg :wxgRecs){
+            // 本地提取商户师傅信息 按品牌,网点,师傅编号 不存在不处理
+            WorkerBrandAccount workerBrandAccount = getWorkerBrandAccount(wbarecs, wxg);
+            if (workerBrandAccount == null) {
+                continue;
+            }
+
+            // 参数
+            getParameter(wxg.getWdno(), wxg.getWxgno(), req);
+            // 格力总部查询工程师信息
+            GreeResponseHelper response = greeLogic.greePost(wdqyapi, JSONObject.toJSONString(req), 1);
+            if (response.getStatus() == 200){
+                WxgQueryInfo resultDatax = JSONObject.parseObject(response.getData().toString(), WxgQueryInfo.class);
+                // 无数据不处理
+                if (resultDatax.getWangdianWxgVos().size()<1){
+                    continue;
+                }
+                wvos = resultDatax.getWangdianWxgVos().get(0);
+
+                // 提取师傅的服务大类信息
+                List<WorkerServiceCategoryDetail> wxgCategoryRecs = workerServiceCategoryDetailService.lambdaQuery()
+                        .eq(WorkerServiceCategoryDetail::getWorkerId, wxg.getSfzen()).list();
+
+                // 服务类型 INSTALL=安装 REPAIR=维修  DELIVERY=配送
+                Map<String, List<WorkerServiceCategoryDetail>> wxgCategoryTypeRecs = wxgCategoryRecs.stream().
+                        collect(Collectors.groupingBy(WorkerServiceCategoryDetail::getType));
+
+
+                try {
+                    // 证件同步
+                    for (ZJInfo zj:wvos.getZjInfoList()){
+                        // 同步-新增或修改证件信息
+                        workercertUpdataOrAdd(wvos, updateList, addList, workerBrandAccount, zj);
+                    }
+                    // 同步-师傅地理位置
+                    // updateWorkerStreet(wvos,workerBrandAccount.getWorkerId(),brand.getBrandId(),ws);
+
+                    // 同步-师傅服务的类目信息 无则插入
+                    getServiceCategory(wvos, wscList, wscdList, sysDict, wxg, wxgCategoryTypeRecs, sysDictRefMap);
+
+                    // 新增或修改(证件,师傅地理位置,师傅服务的类目)
+                    addOrUpdate(updateList, addList, wscList, wscdList, ws);
+                } catch (Exception ex) {
+                    log.info("工程师信息同步失败:{}", ex);
+                }
+            }
+        }
+        log.info("同步网点师傅信息结束: {}",sdf.format(new Date()));
+    }
+
+
+    @Nullable
+    private WorkerBrandAccount getWorkerBrandAccount(List<WorkerBrandAccount> wbarecs, ItfTblWangdianWxgDownload wxg) {
+        WorkerBrandAccount workerBrandAccount = null;
+
+        for (WorkerBrandAccount wba: wbarecs){
+            if (wba.getBrandWebsitNumber().equals(wxg.getWdno())
+                    && wba.getBrandWorkerNumber().equals(wxg.getWxgno())){
+                workerBrandAccount = wba;
+                break;
+            }
+        }
+
+        if (workerBrandAccount == null){
+            return null;
+        }
+
+        // 师傅离职的情况不再处理
+        if (wxg.getFlag() != null){
+            if (!wxg.getFlag().trim().equals(DictTypeEnum.DICT_TYPE_FLAG_ON.getCode())
+            && workerBrandAccount.getBrandWorkerStatus().equals("OFF")){
+                return null;
+            }
+        }
+        return workerBrandAccount;
+    }
+
+
+    @Transactional(rollbackFor = Exception.class)
+    public void addData(List<WorkerBrandAccount> wbaaddList,List<WorkerCert> updateList, List<WorkerCert> addList,
+                        List<WorkerServiceCategory> wscList, List<WorkerServiceCategoryDetail> wscdList,
+                        List<WorkerStreet> ws) {
+        // 师傅所在品牌商网点信息同步
+        if (wbaaddList.size()>0){
+            workerBrandAccountService.saveBatch(wbaaddList);
+        }
+        // 证件同步
+        if (updateList.size()>0){
+            workerCertService.saveBatch(updateList);
+        }
+        if (addList.size()>0){
+            workerCertService.saveBatch(addList);
+        }
+
+        // 同步-师傅地理位置
+        if (ws.size()>0){
+            workerStreetService.saveBatch(ws);
+        }
+
+        // 师傅服务类目新增
+        if (wscList.size()>0){
+            workerServiceCategoryService.saveBatch(wscList);
+        }
+        if (wscdList.size()>0){
+            workerServiceCategoryDetailService.saveBatch(wscdList);
+        }
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void addOrUpdate(List<WorkerCert> updateList, List<WorkerCert> addList, List<WorkerServiceCategory> wscList, List<WorkerServiceCategoryDetail> wscdList, List<WorkerStreet> ws) {
+        // 证件同步
+        if (updateList.size()>0){
+            workerCertService.saveBatch(updateList);
+        }
+        if (addList.size()>0){
+            workerCertService.saveBatch(addList);
+        }
+
+        // 同步-师傅地理位置
+        if (ws.size()>0){
+            workerStreetService.updateBatchById(ws);
+        }
+
+        // 师傅服务类目新增
+        if (wscList.size()>0){
+            workerServiceCategoryService.saveBatch(wscList);
+        }
+        if (wscdList.size()>0){
+            workerServiceCategoryDetailService.saveBatch(wscdList);
+        }
+
+        updateList.clear();
+        addList.clear();
+        ws.clear();
+        wscList.clear();
+        wscdList.clear();
+    }
+
+    private void getServiceCategory(WangdianWxgVos wvos, List<WorkerServiceCategory> wscList, List<WorkerServiceCategoryDetail> wscdList,
+                                    SysDict sysDict, ItfTblWangdianWxgDownload wxg,
+                                    Map<String,List<WorkerServiceCategoryDetail>> wxgCategoryTypeRecs,
+                                    Map<String, List<SysDictRef>> sysDictRefMap) {
+        List<String> complete = new ArrayList<>();
+        // 先处理商用
+        for (SignSplb syitem: wvos.getSySignSplbList()){
+            // 扫描每个大类
+            for (String s :syitem.getFwlbList()){
+                // 师傅服务的大类中查看是否存在 不存在新增
+                extracted(wscList, wscdList, complete, sysDict, wxg, wxgCategoryTypeRecs,
+                        syitem, s,ServiceCategoryEnum.COMMERCIAL_TYPE.getCode(), sysDictRefMap);
+            }
+        }
+        complete.clear();
+
+        // 处理家用
+        for (SignSplb syitem: wvos.getJySignSplbList()){
+            // 扫描每个大类
+            for (String s :syitem.getFwlbList()){
+                // 师傅服务的大类中查看是否存在 不存在新增
+                extracted(wscList, wscdList, complete, sysDict, wxg, wxgCategoryTypeRecs,
+                        syitem, s,ServiceCategoryEnum.HOME_TYPE.getCode(), sysDictRefMap);
+            }
+        }
+    }
+
+    private void extracted(List<WorkerServiceCategory> wscList, List<WorkerServiceCategoryDetail> wscdList,
+                           List<String> complete, SysDict sysDict, ItfTblWangdianWxgDownload wxg,
+                           Map<String,List<WorkerServiceCategoryDetail>> wxgCategoryTypeRecs, SignSplb syitem,
+                           String s, String type,Map<String, List<SysDictRef>> sysDictRefMap) {
+        if ( !complete.contains(s + syitem.getSpdl())){
+            // 提取品牌商对应的大类信息
+            SysDictRef sysDictRef = sysDictRefMap.get(String.valueOf(syitem.getSpdl())).get(0);
+
+            if (s.equals(ServiceCategoryEnum.INSTALL_TYPE.getText())){
+                getAddInfo(wscList, wscdList, sysDict, wxg, wxgCategoryTypeRecs,
+                        sysDictRef,ServiceCategoryEnum.INSTALL_TYPE.getCode(),type);
+            } else if (s.equals(ServiceCategoryEnum.REPAIR_TYPE.getText())){
+                getAddInfo(wscList, wscdList, sysDict, wxg, wxgCategoryTypeRecs,
+                        sysDictRef,ServiceCategoryEnum.REPAIR_TYPE.getCode(),type);
+            } else if (s.equals(ServiceCategoryEnum.DELIVERY_TYPE.getText())){
+                getAddInfo(wscList, wscdList, sysDict, wxg, wxgCategoryTypeRecs,
+                        sysDictRef,ServiceCategoryEnum.DELIVERY_TYPE.getCode(),type);
+            }
+            // 新增过的无需再次新增
+            complete.add(s + syitem.getSpdl());
+        }
+    }
+
+
+    private void getAddInfo(List<WorkerServiceCategory> wscList, List<WorkerServiceCategoryDetail> wscdList, SysDict sysDict,
+                            ItfTblWangdianWxgDownload wxg, Map<String, List<WorkerServiceCategoryDetail>> wxgCategoryTypeRecs,
+                            SysDictRef sysDictRef, String code, String type) {
+        Boolean include = Boolean.FALSE;
+        // 看师傅是否已有(服务类型 INSTALL=安装 REPAIR=维修  DELIVERY=配送)对应的大类信息 如有不做任何处理
+        if (wxgCategoryTypeRecs !=null && wxgCategoryTypeRecs.size()>0){
+            if (wxgCategoryTypeRecs.containsKey(code)){
+                for (WorkerServiceCategoryDetail category : wxgCategoryTypeRecs.get(code)){
+                    if (category.getMainId().equals(sysDictRef.getDictCode())){
+                        include = Boolean.TRUE;
+                        break;
+                    }
+                }
+            }
+        }
+
+        if (!include){
+            // 新增
+            // 看 worker_service_category 有无数据,无数据新增
+            if (wxgCategoryTypeRecs ==null || wxgCategoryTypeRecs.size()<1 || !wxgCategoryTypeRecs.containsKey(code) ){
+                WorkerServiceCategory wsc = new WorkerServiceCategory();
+                wsc.setId(IdWorker.getIdStr());
+                wsc.setWorkerId(String.valueOf(wxg.getSfzen()));
+                wsc.setServiceCategoryId(sysDict.getDictCode());
+                wsc.setServiceCategoryName(sysDict.getDictValue());
+                wsc.setFlag(type);
+                wsc.setType(code);
+                wsc.setCreateTime(new Date());
+                wscList.add(wsc);
+
+                // WorkerServiceCategoryDetail 新增
+                WorkerServiceCategoryDetail wscd = new WorkerServiceCategoryDetail();
+                wscd.setId(IdWorker.getIdStr());
+                wscd.setWorkerServiceCategoryId(wsc.getId());
+                wscd.setWorkerId(String.valueOf(wxg.getSfzen()));
+                wscd.setServiceCategoryId(sysDict.getDictCode());
+                wscd.setServiceCategoryName(sysDict.getDictValue());
+                wscd.setFlag(type);
+                wscd.setType(code);
+                wscd.setMainId(sysDictRef.getDictCode());
+                wscd.setMainName(sysDictRef.getDictValue());
+                wscd.setCreateTime(new Date());
+
+                wscdList.add(wscd);
+
+            } else {
+                // WorkerServiceCategoryDetail 新增
+                WorkerServiceCategoryDetail wscd = new WorkerServiceCategoryDetail();
+                wscd.setId(IdWorker.getIdStr());
+                wscd.setWorkerServiceCategoryId(wxgCategoryTypeRecs.get(code).get(0).getServiceCategoryId());
+                wscd.setWorkerId(String.valueOf(wxg.getSfzen()));
+                wscd.setServiceCategoryId(sysDict.getDictCode());
+                wscd.setServiceCategoryName(sysDict.getDictValue());
+                wscd.setFlag(type);
+                wscd.setType(code);
+                wscd.setMainId(sysDictRef.getDictCode());
+                wscd.setMainName(sysDictRef.getDictValue());
+                wscd.setCreateTime(new Date());
+                wscdList.add(wscd);
+            }
+        }
+    }
+
+    private void workercertUpdataOrAdd(WangdianWxgVos wvos, List<WorkerCert> updateList,
+                                       List<WorkerCert> addList, WorkerBrandAccount workerBrandAccount,
+                                       ZJInfo zj) throws Exception {
+        // 师傅证件信息 按证件名提取
+        WorkerCert old = workerCertService.lambdaQuery()
+                .eq(WorkerCert::getWorkerId, workerBrandAccount.getWorkerId())
+                .eq(WorkerCert::getCertName, zj.getZjmc())
+                .one();
+
+        if (old !=null){
+            // 修改
+            getUpdate(updateList, zj, old);
+        } else {
+            // 新增
+            getAdd(addList, workerBrandAccount.getWorkerId(), zj.getZjmc(), wvos.getXingb(), zj);
+        }
+        // 上传图片
+        /*if (updateList.size()>0){
+            updateUpload(updateList);
+        }
+        if (addList.size()>0){
+            addUload(addList);
+        }*/
+    }
+
+    private void getAdd(List<WorkerCert> addList, String sfzen, String zjmc,String xingb,  ZJInfo zj) throws Exception {
+        WorkerCert add = new WorkerCert();
+        add.setId(UUID.randomUUID().toString());
+        add.setWorkerId(sfzen);
+        add.setCertName(zjmc);
+
+        if (zj.getZjlj().contains(",")){
+            List<String> result = Arrays.asList(zj.getZjlj().split(","));
+            add.setOutFileUrl(result.get(0));
+            add.setOutFileUrl2(result.get(1));
+            // 上传图片
+            String id = putCert(result.get(0));
+            add.setFileUrl(id);
+            String id2 = putCert(result.get(1));
+            add.setFileUrl2(id2);
+            new File(id).delete();
+            new File(id2).delete();
+        } else {
+            add.setOutFileUrl(zj.getZjlj());
+            String id = putCert(zj.getZjlj());
+            add.setFileUrl(id);
+            new File(id).delete();
+        }
+        if (zj.getZjbh().contains("/")){
+            List<String> result = Arrays.asList(zj.getZjbh().split("/"));
+            add.setCertNo(result.get(1));
+        } else {
+            add.setCertNo(zj.getZjbh());
+        }
+        if (StringUtils.isNotEmpty(zj.getZjyxq())){
+            add.setExpireTime(baseService.utcToDateStr(zj.getZjyxq()));
+        }
+        if (StringUtils.isNotEmpty(zj.getZjfssj())){
+            add.setReviewTime(baseService.utcToDateStr(zj.getZjfssj()));
+        }
+
+        add.setExamineStatus("OK");
+        add.setSex(xingb);
+        add.setOutSyncStatus(1);
+        add.setOutSyncTime(new Date());
+
+        addList.add(add);
+    }
+
+    @NotNull
+    private String putCert(String image) throws Exception {
+        String id = IdWorker.getIdStr()+".jpeg";
+        baseService.saveToFile(greeLogic.greeFileUrl(image), id);
+        String file = id;
+        ossUtil.uploadFile(id, new File(file));
+
+
+        return id;
+    }
+
+
+    private void getUpdate(List<WorkerCert> updateList,ZJInfo zj,WorkerCert old) throws Exception {
+        Boolean flag = Boolean.FALSE;
+        WorkerCert up = new WorkerCert();
+        if (zj.getZjlj().contains(",")){
+            List<String> result = Arrays.asList(zj.getZjlj().split(","));
+            if ((!old.getOutFileUrl().equals(result.get(0)) && !old.getOutFileUrl2().equals(result.get(0)))
+                    || (!old.getOutFileUrl().equals(result.get(1)) && !old.getOutFileUrl2().equals(result.get(1)))){
+                up.setId(old.getId());
+                up.setOutFileUrl(result.get(0));
+                up.setOutFileUrl2(result.get(1));
+
+                // 上传图片
+                String id = putCert(result.get(0));
+                up.setFileUrl(id);
+                String id2 = putCert(result.get(1));
+                up.setFileUrl2(id2);
+
+                new File(id).delete();
+                new File(id2).delete();
+
+                flag = Boolean.TRUE;
+            }
+        } else {
+            if (!old.getOutFileUrl().equals(zj.getZjlj()) && !old.getOutFileUrl2().equals(zj.getZjlj())) {
+                up.setId(old.getId());
+                up.setOutFileUrl(zj.getZjlj());
+                // 上传图片
+                String id = putCert(zj.getZjlj());
+                up.setFileUrl(id);
+
+                new File(id).delete();
+                flag = Boolean.TRUE;
+            }
+        }
+        if (flag){
+            up.setOutSyncTime(new Date());
+            updateList.add(up);
+        }
+    }
+
+    private void getParameter(String wdno, String wxgno, Map<String, Object> req) {
+        req.put("wdno", wdno);
+        req.put("wxgno", wxgno);
+        req.put("page", 1);
+        req.put("size", 20);
+        req.put("xsgsshstat", 2);
+    }
+
+}

+ 16 - 16
src/main/java/com/zfire/jiasm/syncdata/gree/GreeLogic.java

@@ -125,11 +125,11 @@ public class GreeLogic {
      * @throws RemoteServiceException
      */
     public String getAccessToken() throws RemoteServiceException {
-        /*String redisKey = Constant.RedisPrefix.TOKEN_GREE;
+        String redisKey = Constant.RedisPrefix.TOKEN_GREE;
         String token = (String)redisUtil.get(redisKey);
         if(token != null){
             return token;
-        }*/
+        }
         MultiValueMap<String, String> forms= new LinkedMultiValueMap<String, String>();
 
         forms.put("client_id", Collections.singletonList(clientId));
@@ -140,9 +140,9 @@ public class GreeLogic {
         log.info("【获取总部token】response:{}",s);
         JSONObject jsonObject = JSONObject.parseObject(s);
         String accessToken = jsonObject.getString("access_token");
-        /*if(StringUtils.isNotEmpty(accessToken)) {
+        if(StringUtils.isNotEmpty(accessToken)) {
             redisUtil.set(Constant.RedisPrefix.TOKEN_GREE, accessToken, 2 * 60 * 60);
-        }*/
+        }
         return accessToken;
     }
 
@@ -181,11 +181,11 @@ public class GreeLogic {
         OutAppDefaultReq outAppDefaultReq = commonLogic.supplyParam(commonParam);
         Map<String,String> header = new HashMap<>();
         header.put("authorization","Bearer "+this.getAccessToken());
-        log.info("accessToken:{}", "Bearer "+this.getAccessToken());
+        //log.info("accessToken:{}", "Bearer "+this.getAccessToken());
 
-        log.info("【请求总部接口】request:{}",JSONObject.toJSONString(outAppDefaultReq));
+        //log.info("【请求总部接口】request:{}",JSONObject.toJSONString(outAppDefaultReq));
         String s = HttpUtils.requestPostBody(uploadbaseurl, JSONObject.toJSONString(outAppDefaultReq), header);
-        log.info("【请求总部接口】response:{}",s);
+        //log.info("【请求总部接口】response:{}",s);
         GreeResponseHelper greeResponseHelper = JSONObject.parseObject(s, GreeResponseHelper.class);
         if(greeResponseHelper.getStatus() != 200){
             throw new RemoteServiceException("对接失败总部接口失败:"+greeResponseHelper.getMsg());
@@ -237,7 +237,7 @@ public class GreeLogic {
         OutAppDefaultReq outAppDefaultReq = commonLogic.supplyParam(commonParam);
         Map<String,String> header = new HashMap<>();
         header.put("authorization","Bearer "+this.getAccessToken());
-        log.info("【请求总部接口】request:{}",JSONObject.toJSONString(outAppDefaultReq));
+        // log.info("【请求总部接口】request:{}",JSONObject.toJSONString(outAppDefaultReq));
 
         // 设置请求头
         HttpHeaders headers = new HttpHeaders();
@@ -252,7 +252,7 @@ public class GreeLogic {
         //获取返回数据
         try {
             String body = restTemplate.postForObject(uploadbaseurl, httpEntity, String.class);
-            log.info("【请求总部接口】response:{}",body);
+            //log.info("【请求总部接口】response:{}",body);
             return JSONObject.parseObject(body, GreeResponseHelper.class);
         }catch(HttpStatusCodeException ex) {
             log.error("rawStatusCode = {}",ex.getRawStatusCode());
@@ -289,7 +289,7 @@ public class GreeLogic {
         //获取返回数据
         try {
             String body = restTemplate.postForObject(sevefileurl, httpEntity, String.class);
-            log.info("【请求总部接口保存文件】response:{}",body);
+            //log.info("【请求总部接口保存文件】response:{}",body);
             greeResponseHelper = JSONObject.parseObject(body, GreeFileSaveHelper.class);
 
             return greeResponseHelper;
@@ -362,9 +362,9 @@ public class GreeLogic {
 
         header.put("authorization","Bearer ");
 
-        log.info("【请求总部接口】request:{}",JSONObject.toJSONString(outAppDefaultReq));
-        log.info("imageurl:{}",imageurl);
-        log.info("apiPath:{}",apiPath);
+        //log.info("【请求总部接口】request:{}",JSONObject.toJSONString(outAppDefaultReq));
+        //log.info("imageurl:{}",imageurl);
+        //log.info("apiPath:{}",apiPath);
 
         // 设置请求头
         HttpHeaders headers = new HttpHeaders();
@@ -379,7 +379,7 @@ public class GreeLogic {
         //获取返回数据
         try {
             String body = restTemplate.postForObject(imageurl, httpEntity, String.class);
-            log.info("【请求总部接口】response:{}",body);
+            //log.info("【请求总部接口】response:{}",body);
             return JSONObject.parseObject(body, GreeResponseHelper.class);
         }catch(HttpStatusCodeException ex) {
             log.error("rawStatusCode = {}",ex.getRawStatusCode());
@@ -414,7 +414,7 @@ public class GreeLogic {
          byte[] fileBinary = getBytesFile(fileName);
         // String fileBinary = getFileBinary(fileName);
 
-        // 生成对
+        // 生成对
         getReq(data, req, fileBinary);
         sub.setName("key");
         sub.setContents(data.getDir());
@@ -928,7 +928,7 @@ public class GreeLogic {
             inputStream.close();
             httpUrlConn.disconnect();
             String result = buffer.toString();
-            log.info("【请求总部接口】response:{}", result);
+            //log.info("【请求总部接口】response:{}", result);
             greeResponseHelper = JSONObject.parseObject(result, GreeFileResponseHelper.class);
             return greeResponseHelper;
         } catch (HttpStatusCodeException ex) {

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminFastEntryPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/admin-fast-entry")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminFieldPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/admin-field")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminModuleFavoritesPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/admin-module-favorites")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminModulePlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/admin-module")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminRolePlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/admin-role")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminUserModuleRelaPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/admin-user-module-rela")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminUserPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/admin-user")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminUserRoleRelaPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/admin-user-role-rela")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminWebsitPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/admin-websit")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminWebsitProductTypeRelaPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/admin-websit-product-type-rela")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminWebsitSlavePlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/admin-websit-slave")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/AreaPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/area")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/BrandLbsRelatePlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/brand-lbs-relate")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/BrandPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/brand")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/BrandWebsitPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/brand-websit")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/CityPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/city")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ComDetailLogPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/com-detail-log")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ComDetailPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/com-detail")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ComListPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/com-list")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/CommonFilePlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/common-file")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/CompanyCaAuthPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/company-ca-auth")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/CompanyRecordManagePlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/company-record-manage")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ContractTemplatePlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/contract-template")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/CustomerInformationCategoryPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/customer-information-category")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/CustomerInformationPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/customer-information")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/CustomerInformationWebsitPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/customer-information-websit")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ImgCarouselManagePlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/img-carousel-manage")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/InstallChargeConfigPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/install-charge-config")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsureAgreePlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/insure-agree")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsureEmailPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/insure-email")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsureEmailRecordPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/insure-email-record")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsurePlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/insure")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsureRangePlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/insure-range")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsureWorkerCommercialFilePlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/insure-worker-commercial-file")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsureWorkerCommercialPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/insure-worker-commercial")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsureWorkerRecordPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/insure-worker-record")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralDoublePlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/integral-double")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralGradeConfigurePlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/integral-grade-configure")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralGradeExplainPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/integral-grade-explain")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralGradeSkillPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/integral-grade-skill")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralOffsetPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/integral-offset")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralScorePlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/integral-score")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralSkillLabelPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/integral-skill-label")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralWorkerApplyPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/integral-worker-apply")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblAssignGzdmDowloadPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/itf-tbl-assign-gzdm-dowload")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblAssignXqxlDowloadPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/itf-tbl-assign-xqxl-dowload")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblAssignXxlbDowloadPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/itf-tbl-assign-xxlb-dowload")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblAssignXxlyDowloadPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/itf-tbl-assign-xxly-dowload")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblAssignXxqdDowloadPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/itf-tbl-assign-xxqd-dowload")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblAssignYhsxWxDowloadPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/itf-tbl-assign-yhsx-wx-dowload")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblAzAssignXslxDowloadPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/itf-tbl-az-assign-xslx-dowload")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblCityDownloadPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/itf-tbl-city-download")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblCityJdxzDownloadPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/itf-tbl-city-jdxz-download")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblCountyDownloadPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/itf-tbl-county-download")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblProvinceDownloadPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/itf-tbl-province-download")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblSplbDaleiDownloadPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/itf-tbl-splb-dalei-download")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblSplbJixinDownloadPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/itf-tbl-splb-jixin-download")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblSplbXiaoleiDownloadPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/itf-tbl-splb-xiaolei-download")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblSplbXilieDownloadPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/itf-tbl-splb-xilie-download")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblWangdianWxgDownloadPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/itf-tbl-wangdian-wxg-download")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblXinWangdianDownloadPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/itf-tbl-xin-wangdian-download")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblYhsxViprankDowloadPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/itf-tbl-yhsx-viprank-dowload")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/LabelCurrencyPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/label-currency")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/LabelPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/label")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/LbsAmapPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/lbs-amap")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/NoticePlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/notice")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/NoticeRecordPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/notice-record")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/OperationLogPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/operation-log")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ProductPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/product")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ProductSeriesPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/product-series")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ProvincePlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/province")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/QualificationsManagePlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/qualifications-manage")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/RepairBugPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/repair-bug")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/RepairProjectPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/repair-project")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/SmsRecordPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/sms-record")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/StreetPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/street")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/SysDictPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/sys-dict")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/SysDictRefPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/sys-dict-ref")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/SysDictTypePlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/sys-dict-type")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/ToolPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/tool")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/UserFeedbackPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/user-feedback")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/UserPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/user")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/WebsitEnclosureFilePlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/websit-enclosure-file")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/WebsitExamineRecordPlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/websit-examine-record")

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/plus/controller/WebsitFilePlusTempController.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Controller;
  * </p>
  *
  * @author gejiang
- * @since 2023-02-15
+ * @since 2023-02-17
  */
 @Controller
 @RequestMapping("/plus/websit-file")

Some files were not shown because too many files changed in this diff