yaozhixue hai 1 ano
pai
achega
ede3eebea8
Modificáronse 42 ficheiros con 6913 adicións e 7488 borrados
  1. 5 7
      src/main/java/com/zfire/jiasm/syncdata/download/basedata/GLPPXuQiuLeiBie.java
  2. 3 1306
      src/main/java/com/zfire/jiasm/syncdata/download/order/InstallDownload.java
  3. 0 10
      src/main/java/com/zfire/jiasm/syncdata/download/order/RecycleDownload.java
  4. 4 6
      src/main/java/com/zfire/jiasm/syncdata/download/order/RepairBusiness.java
  5. 4 4
      src/main/java/com/zfire/jiasm/syncdata/download/order/RepairBusinessApi.java
  6. 5 370
      src/main/java/com/zfire/jiasm/syncdata/download/order/RepairDownload.java
  7. 4 397
      src/main/java/com/zfire/jiasm/syncdata/download/order/RepairDownloadGD.java
  8. 0 2
      src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleAssignLogic.java
  9. 1 1
      src/main/java/com/zfire/jiasm/syncdata/service/AddRepairBusinessService.java
  10. 7 7
      src/main/java/com/zfire/jiasm/syncdata/service/DetailDownloadService.java
  11. 5 0
      src/main/java/com/zfire/jiasm/syncdata/service/InstallDownloadService.java
  12. 7 0
      src/main/java/com/zfire/jiasm/syncdata/service/InstallProduceDataUploadService.java
  13. 6 0
      src/main/java/com/zfire/jiasm/syncdata/service/InstallProduceUploadListService.java
  14. 7 0
      src/main/java/com/zfire/jiasm/syncdata/service/RepairDownloadGDService.java
  15. 5 0
      src/main/java/com/zfire/jiasm/syncdata/service/RepairDownloadService.java
  16. 6 0
      src/main/java/com/zfire/jiasm/syncdata/service/RepairProduceDataUploadService.java
  17. 6 0
      src/main/java/com/zfire/jiasm/syncdata/service/RepairProduceUploadListService.java
  18. 6 0
      src/main/java/com/zfire/jiasm/syncdata/service/UploadWorkeCertificateService.java
  19. 6 0
      src/main/java/com/zfire/jiasm/syncdata/service/UploadWorkerTOGreeService.java
  20. 0 3
      src/main/java/com/zfire/jiasm/syncdata/service/impl/AddInstallBusinessImpl.java
  21. 3 7
      src/main/java/com/zfire/jiasm/syncdata/service/impl/AddRepairBusinessServiceImpl.java
  22. 0 1
      src/main/java/com/zfire/jiasm/syncdata/service/impl/DetailDownloadServiceImpl.java
  23. 0 3
      src/main/java/com/zfire/jiasm/syncdata/service/impl/GLPPWXGQueryUpdateServiceImpl.java
  24. 4 1
      src/main/java/com/zfire/jiasm/syncdata/service/impl/GLPPXuQiuLeiBieServiceImpl.java
  25. 480 0
      src/main/java/com/zfire/jiasm/syncdata/service/impl/InstallDownloadServiceImpl.java
  26. 1436 0
      src/main/java/com/zfire/jiasm/syncdata/service/impl/InstallProduceDataUploadServiceImpl.java
  27. 293 0
      src/main/java/com/zfire/jiasm/syncdata/service/impl/InstallProduceUploadListServiceImpl.java
  28. 0 2
      src/main/java/com/zfire/jiasm/syncdata/service/impl/JiasmApiImpl.java
  29. 0 1
      src/main/java/com/zfire/jiasm/syncdata/service/impl/OrderBaseInstallCjOrWgServiceImpl.java
  30. 0 1
      src/main/java/com/zfire/jiasm/syncdata/service/impl/PublicServiceImpl.java
  31. 424 0
      src/main/java/com/zfire/jiasm/syncdata/service/impl/RepairDownloadGDServiceImpl.java
  32. 397 0
      src/main/java/com/zfire/jiasm/syncdata/service/impl/RepairDownloadServiceImpl.java
  33. 1789 0
      src/main/java/com/zfire/jiasm/syncdata/service/impl/RepairProduceDataUploadServiceImpl.java
  34. 391 0
      src/main/java/com/zfire/jiasm/syncdata/service/impl/RepairProduceUploadListServiceImpl.java
  35. 377 0
      src/main/java/com/zfire/jiasm/syncdata/service/impl/UploadWorkeCertificateServiceImpl.java
  36. 1199 0
      src/main/java/com/zfire/jiasm/syncdata/service/impl/UploadWorkerTOGreeServiceImpl.java
  37. 6 1407
      src/main/java/com/zfire/jiasm/syncdata/upload/order/InstallProduceDataUpload.java
  38. 5 281
      src/main/java/com/zfire/jiasm/syncdata/upload/order/InstallProduceUploadList.java
  39. 4 1760
      src/main/java/com/zfire/jiasm/syncdata/upload/order/RepairProduceDataUpload.java
  40. 4 376
      src/main/java/com/zfire/jiasm/syncdata/upload/order/RepairProduceUploadList.java
  41. 7 360
      src/main/java/com/zfire/jiasm/syncdata/upload/worker/UploadWorkeCertificate.java
  42. 7 1175
      src/main/java/com/zfire/jiasm/syncdata/upload/worker/UploadWorkerTOGree.java

+ 5 - 7
src/main/java/com/zfire/jiasm/syncdata/download/basedata/GLPPXuQiuLeiBie.java

@@ -2,13 +2,11 @@ package com.zfire.jiasm.syncdata.download.basedata;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.zfire.jiasm.syncdata.constant.DictTypeEnum;
 import com.zfire.jiasm.syncdata.constant.InterFaceTypeEnum;
 import com.zfire.jiasm.syncdata.constant.TaskConfigEnum;
 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.plus.entity.Brand;
+import com.zfire.jiasm.syncdata.plus.service.BrandService;
 import com.zfire.jiasm.syncdata.service.GLPPXuQiuLeiBieService;
 import com.zfire.jiasm.syncdata.utils.HttpUtil;
 import com.zfire.jiasm.syncdata.utils.JSONResult;
@@ -17,12 +15,12 @@ import lombok.extern.slf4j.Slf4j;
 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.*;
-import java.util.stream.Collectors;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * 格力品牌 需求类别 - 需求类别基础资料下载(需求大类、需求小类)

+ 3 - 1306
src/main/java/com/zfire/jiasm/syncdata/download/order/InstallDownload.java

@@ -1,29 +1,12 @@
 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.conditions.query.LambdaQueryWrapper;
-import com.zfire.jiasm.syncdata.constant.ESInstallEnum;
 import com.zfire.jiasm.syncdata.constant.TaskConfigEnum;
-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 com.zfire.jiasm.syncdata.service.InstallDownloadService;
 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.*;
 
 
 /**
@@ -37,1308 +20,22 @@ import java.util.*;
 @Slf4j
 @Component
 public class InstallDownload {
-    @Value("${baseurl}")
-    private String baseurl = "";
     @Value("${netfsxc}")
     private String netfsxc = "";
 
-    @Resource
-    InstallDownload installDownload;
     @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;
-
+    InstallDownloadService installDownloadService;
 
 
 
     // 1:下载安装工单数据
     @Scheduled(fixedDelayString = "${installdown}")
     public void download() throws Exception {
-
         if (netfsxc.equals(TaskConfigEnum.FALSE.getCode())){
             return;
         }
 
-        List<ItfInstallBatchDownloadRec> rec = new ArrayList<>();
-
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
-        log.info("开始下载安装工单: \uF0B7{}",sdf.format(new Date()));
-        String downloadBatchNo = UUID.randomUUID().toString();
-
-        // 按批次-获取数据
-        JSONArray datas = getDownloadData(downloadBatchNo, ESInstallEnum.SALES_WEBSIT_NUMBER.getCode());
-        log.info("安装工单下载了{}条数据",datas.size());
-
-        // 写销售单号-派工单号 方便日志查询
-        if (datas.size()>0){
-            putLogInfo(datas);
-        }
-
-        // 按单来处理 数据源为数组(每一个成员为一个订单)
-        for (int i = 0; i < datas.size(); i++) {
-            try{
-                JSONObject sheet = datas.getJSONObject(i);
-                // 提取主表数据 主表无数据时不处理
-                JSONArray mainTableData = sheet.getJSONArray("TBL_AZ_ASSIGN_LC_LS");
-                if (mainTableData != null && mainTableData.size() > 0) {
-                    String downloadTaskNo = UUID.randomUUID().toString();
-                    // 最后修改日期不能为空处理
-                    DataUtil.initLastModifiedDate(mainTableData.getJSONObject(0),"lastModifiedDate");
-                    // 添加数据
-                    installDownload.addData(rec, downloadBatchNo, sheet, mainTableData, downloadTaskNo);
-                } else {
-                    log.info("安装工单找不到主表数据不做处理 mainTableData:{}" ,mainTableData);
-                }
-            } catch (Exception ex) {
-                ex.printStackTrace();
-                log.info("安装工单落本地表失败");
-            }
-        }
-
-        log.info("安装工单下载完成 \uF0B7{}",sdf.format(new Date()));
-        updateStatus();
-        // log.info("安装工单处理完成: {}",sdf.format(new Date()));
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public void addData(List<ItfInstallBatchDownloadRec> rec, String downloadBatchNo, JSONObject sheet, JSONArray mainTableData, String downloadTaskNo) throws Exception {
-        // 查看安装数据批量下载记录内是否已存在
-        //     已存在不再下载,
-        //     无数据时落本地表
-        Boolean flag = Boolean.FALSE;
-        flag = insertInstallRecData(mainTableData.getJSONObject(0), downloadBatchNo, downloadTaskNo, rec,
-                ESInstallEnum.SALES_WEBSIT_NUMBER.getCode());
-        // 历史下载记录中无数据时数据落表,有数据时不再下载
-        if (flag){
-            parseData(sheet, downloadTaskNo, downloadBatchNo, rec);
-        }
-    }
-
-    // 2:与总部同步安装工单下载状态 下次获取时不再拉取数据  单独开任务确保效率更好,
-/*    @Scheduled(fixedDelay = 1 * 60 * 1000)
-    public void syncDownStat() throws Exception {
-        if (1 == 1) {
-            return;
-        }
-        updateStatus();
-    }*/
-/*
-
-    // 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=其他
-             LambdaQueryWrapper<ItfInstallBatchDownloadRec> queryWrapper = new LambdaQueryWrapper<ItfInstallBatchDownloadRec>()
-                     .eq(ItfInstallBatchDownloadRec::getGreeStatSynStatus,0)
-                     .or(wrapper->wrapper.eq(ItfInstallBatchDownloadRec::getGreeStatSynStatus,99)
-                             .le(ItfInstallBatchDownloadRec::getSynTimes,5))
-                     .orderByAsc(ItfInstallBatchDownloadRec::getSynReqId);
-             recs = itfInstallBatchDownloadRecService.list(queryWrapper);
-
-             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);
-    }
-
-    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);
-            rec.clear();
-        }
-        if (lcls.size()>0){
-            itfTblAzAssignLcLsDownloadService.saveBatch(lcls);
-            lcls.clear();
-        }
-        if (mx.size()>0){
-            itfTblAzAssignMxDownloadService.saveBatch(mx);
-            mx.clear();
-        }
-        if (fk.size()>0){
-            itfTblAzAssignFkMxDownloadService.saveBatch(fk);
-            fk.clear();
-        }
-        if (fe.size()>0){
-            itfTblAzAssignFeeDownloadService.saveBatch(fe);
-            fe.clear();
-        }
-        if (app.size()>0){
-            itfTblAzAssignAppointmentDownloadService.saveBatch(app);
-            app.clear();
-        }
-        if (fz.size()>0){
-            itfTblAzAssignLcFzryDownloadService.saveBatch(fz);
-            fz.clear();
-        }
-        if (sa.size()>0){
-            itfTblAzAssignSatisfactionDownloadService.saveBatch(sa);
-            sa.clear();
-        }
-        if (pla.size()>0){
-            itfTblAzAssignPlatformDownloadService.saveBatch(pla);
-            pla.clear();
-        }
-    }
-
-    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<>();
-
-        // 获取报文对应数据信息
-        getDataInfo(sheet, downloadTaskNo, downloadBatchNo, lcls, mx, fk, fe, app, fz, sa, pla);
-
-        // 打印预落表安装工单信息方便查询出错的订单信息
-        logAZGDInfo(lcls);
-
-        // 数据同步落到同步信息表 事务处理
-        downloadAdd(rec, lcls, mx, fk, fe, app, fz, sa, pla);
-    }
-
-    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);
-        }
-
+        installDownloadService.processInstallDownload();
     }
 
 

+ 0 - 10
src/main/java/com/zfire/jiasm/syncdata/download/order/RecycleDownload.java

@@ -44,8 +44,6 @@ public class RecycleDownload {
      */
     @Scheduled(fixedDelayString = "${recycledown}")
     public void download() throws Exception {
-
-
         if (recycledownc.equals(TaskConfigEnum.FALSE.getCode())){
             return;
         }
@@ -69,8 +67,6 @@ public class RecycleDownload {
      */
     @Scheduled(fixedDelayString = "${recyclefkdown}")
     private void updateFkmx() throws Exception {
-
-
         if (recyclefkdownc.equals(TaskConfigEnum.FALSE.getCode())){
             return;
         }
@@ -88,8 +84,6 @@ public class RecycleDownload {
      */
     @Scheduled(fixedDelayString = "${recyclecjdown}")
     private void updateAcquisition() {
-
-
         if (recyclecjdownc.equals(TaskConfigEnum.FALSE.getCode())){
             return;
         }
@@ -112,8 +106,6 @@ public class RecycleDownload {
      */
     @Scheduled(fixedDelayString = "${recycleverifydown}")
     private void updateExtend() throws Exception {
-
-
         if (recycleverifydownc.equals(TaskConfigEnum.FALSE.getCode())){
             return;
         }
@@ -128,8 +120,6 @@ public class RecycleDownload {
      */
     @Scheduled(fixedDelayString = "${recyclein}")
     private void updateRecycleAssignDownloadEntity2Business() {
-
-
         if (recycleinc.equals(TaskConfigEnum.FALSE.getCode())){
             return;
         }

+ 4 - 6
src/main/java/com/zfire/jiasm/syncdata/download/order/RepairBusiness.java

@@ -8,7 +8,7 @@ import com.zfire.jiasm.syncdata.plus.entity.OrderBase;
 import com.zfire.jiasm.syncdata.plus.entity.SysDictRef;
 import com.zfire.jiasm.syncdata.plus.service.ItfTblAssignDownloadService;
 import com.zfire.jiasm.syncdata.plus.service.OrderBaseService;
-import com.zfire.jiasm.syncdata.service.AddRepairBusiness;
+import com.zfire.jiasm.syncdata.service.AddRepairBusinessService;
 import com.zfire.jiasm.syncdata.service.PublicService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
@@ -43,7 +43,7 @@ public class RepairBusiness {
     @Resource
     PublicService publicService;
     @Resource
-    AddRepairBusiness addRepairBusiness;
+    AddRepairBusinessService addRepairBusinessService;
 
 
 
@@ -51,8 +51,6 @@ public class RepairBusiness {
     // 1:工单落入本地表 TL_SynDataFrom_tbl_assign_batch
     @Scheduled(fixedDelayString = "${repairin}")
     public void inputOrder() {
-
-
         if (repairinc.equals(TaskConfigEnum.FALSE.getCode())){
             return;
         }
@@ -107,11 +105,11 @@ public class RepairBusiness {
             try{
                 if (orderBaselist.contains(String.valueOf(item.getPgid()))){
                     // 修改
-                    addRepairBusiness.updateRapairOrder(brand, sysDictRefDLMap, sysDictRefXLMap, sysDictRefXiLieMap, item,
+                    addRepairBusinessService.updateRapairOrder(brand, sysDictRefDLMap, sysDictRefXLMap, sysDictRefXiLieMap, item,
                             sysDictRefDLMapXq, sysDictRefXLMapXq);
                 } else {
                     // 新增 TL_SynDataFrom_tbl_assign_batch
-                    addRepairBusiness.addRapairOrder(brand, item, sysDictRefDLMap, sysDictRefXLMap, sysDictRefXiLieMap,
+                    addRepairBusinessService.addRapairOrder(brand, item, sysDictRefDLMap, sysDictRefXLMap, sysDictRefXiLieMap,
                             sysDictRefDLMapXq, sysDictRefXLMapXq);
                     orderBaselist.add(String.valueOf(item.getPgid()));
 

+ 4 - 4
src/main/java/com/zfire/jiasm/syncdata/download/order/RepairBusinessApi.java

@@ -8,7 +8,7 @@ import com.zfire.jiasm.syncdata.plus.entity.OrderBase;
 import com.zfire.jiasm.syncdata.plus.entity.SysDictRef;
 import com.zfire.jiasm.syncdata.plus.service.ItfTblAssignDownloadService;
 import com.zfire.jiasm.syncdata.plus.service.OrderBaseService;
-import com.zfire.jiasm.syncdata.service.AddRepairBusiness;
+import com.zfire.jiasm.syncdata.service.AddRepairBusinessService;
 import com.zfire.jiasm.syncdata.service.PublicService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
@@ -43,7 +43,7 @@ public class RepairBusinessApi {
     @Resource
     PublicService publicService;
     @Resource
-    AddRepairBusiness addRepairBusiness;
+    AddRepairBusinessService addRepairBusinessService;
 
 
 
@@ -108,11 +108,11 @@ public class RepairBusinessApi {
             try{
                 if (orderBaselist.contains(String.valueOf(item.getPgid()))){
                     // 修改
-                    addRepairBusiness.updateRepairOrderApi(brand, sysDictRefDLMap, sysDictRefXLMap, sysDictRefXiLieMap, item,
+                    addRepairBusinessService.updateRepairOrderApi(brand, sysDictRefDLMap, sysDictRefXLMap, sysDictRefXiLieMap, item,
                             sysDictRefDLMapXq, sysDictRefXLMapXq,Boolean.FALSE);
                 } else {
                     // 新增 TL_SynDataFrom_tbl_assign_batch
-                    if (addRepairBusiness.addRapairOrderApi(brand, item, sysDictRefDLMap, sysDictRefXLMap, sysDictRefXiLieMap,
+                    if (addRepairBusinessService.addRapairOrderApi(brand, item, sysDictRefDLMap, sysDictRefXLMap, sysDictRefXiLieMap,
                             sysDictRefDLMapXq, sysDictRefXLMapXq,Boolean.TRUE)){
                         orderBaselist.add(String.valueOf(item.getPgid()));
                     }

+ 5 - 370
src/main/java/com/zfire/jiasm/syncdata/download/order/RepairDownload.java

@@ -1,32 +1,12 @@
 package com.zfire.jiasm.syncdata.download.order;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
 import com.zfire.jiasm.syncdata.constant.TaskConfigEnum;
-import com.zfire.jiasm.syncdata.data.Token;
-import com.zfire.jiasm.syncdata.plus.entity.ItfGreeToFaRepairSynRule;
-import com.zfire.jiasm.syncdata.plus.service.ItfGreeToFaRepairSynRuleService;
-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 com.zfire.jiasm.syncdata.service.RepairDownloadService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.dao.DataAccessException;
-import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.StringUtils;
-
-import javax.annotation.Resource;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.*;
 
 /**
  * 格力品牌维修工单下载
@@ -34,369 +14,24 @@ import java.util.*;
 @Slf4j
 @Component
 public class RepairDownload {
-    @Value("${baseurl}")
-    private String baseurl = "";
-    @Value("${nullCols}")
-    private String nullCols;
     @Value("${repairdownc}")
     private String repairdownc = "";
 
-
-    @Resource
-    RepairDownload repairDownload;
-    @Autowired
-    TokenCenter tokenCenter;
-    @Resource
-    ItfGreeToFaRepairSynRuleService itfGreeToFaRepairSynRuleService;
     @Autowired
-    private JdbcTemplate jdbcTemplate;
-    private Set<String> nullDateCols;
+    RepairDownloadService repairDownloadService;
+
+
 
     // 下载维修工单数据
     @Scheduled(fixedDelayString = "${repairdown}")
     public void download() throws Exception {
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
-
         if (repairdownc.equals(TaskConfigEnum.FALSE.getCode())){
             return;
         }
 
-
-        try {
-            ItfGreeToFaRepairSynRule synRule = itfGreeToFaRepairSynRuleService.lambdaQuery()
-                    .orderByAsc(ItfGreeToFaRepairSynRule::getId).one();
-            if (synRule==null){
-                return;
-            }
-
-            log.info("开始下载维修工单: \uF0B7{}",sdf.format(new Date()));
-
-            // 数据源表名
-            String srcTabNames = synRule.getSrcTabName();
-            String[] srcTabnameArray = srcTabNames.trim().split("\\Q|\\E");
-
-            // 数据源表列
-            String srcTabColLists = synRule.getSrcTabColList();
-            String[] srcTabColListArray = srcTabColLists.trim().split("\\Q|\\E");
-
-            // 数据目的表名
-            String destTabNames = synRule.getDestTabName();
-            String[] destTabNameArray = destTabNames.trim().split("\\Q|\\E");
-
-            // 数据目的表列
-            String destTabColLists = synRule.getDestTabColList();
-            String[] destTabColListArray = destTabColLists.trim().split("\\Q|\\E");
-
-            // 销售公司编码
-            String salesWebsitNumber = synRule.getSalesWebsitNumber();
-            String downloadBatchNo = UUID.randomUUID().toString();
-            // 获取数据
-            JSONArray datas = downloadData(downloadBatchNo, salesWebsitNumber);
-
-            log.info("维修工单下载了{}条数据",datas.size());
-
-            for (int i = 0; i < datas.size(); i++) {
-                JSONObject sheet = datas.getJSONObject(i);
-                try{
-                    // 维修工单主表必须存在
-                    JSONObject mainTableData = sheet.getJSONObject("tblAssign");
-                    if (mainTableData != null) {
-                        String downloadTaskNo = UUID.randomUUID().toString();
-                        DataUtil.initLastModifiedDate(mainTableData,"last_modified_date");
-                        repairDownload.addRepairData(mainTableData, downloadBatchNo, downloadTaskNo, sheet,
-                                srcTabnameArray, srcTabColListArray, destTabNameArray, destTabColListArray,
-                                salesWebsitNumber);
-                    } else {
-                        log.error("维修工单找不到主表数据,downloadBatchNo[" + downloadBatchNo + "]");
-                    }
-                } catch (Exception ex) {
-                    log.info("维修工单下载落download表失败:{}" ,JSONObject.toJSONString(sheet));
-                    ex.printStackTrace();
-                }
-
-
-            }
-
-            log.info("维修工单同步下载状态");
-            // 与总部同步下载状态,修改本地下载记录表状态 gree_stat_syn_status =1
-            updateStatus();
-
-            log.info("维修工单下载完成");
-        } catch (Exception ex) {
-            log.error("从总部取维修工单失败", ex);
-        }
-
-    }
-
-    private void updateStatus() {
-        try {
-            List<Map<String, Object>> result = getNeedUpdateTaskData("itf_repair_batch_download_rec");
-            Token token = tokenCenter.getCurrentToken();
-            String url = baseurl + "tblAssign" + "/updateExtjson5";
-            for (Map<String, Object> row : result) {
-                Long synReqId = (Long) row.get("syn_req_id");
-
-                try {
-                    String pgid = row.get("pgid").toString();
-                    Date lastModifiedDate = (Date) row.get("last_modified_date");
-
-                    Map<String, Object> paramMap = new HashMap<String, Object>();
-                    paramMap.put("pgid", pgid);
-                    paramMap.put("lastModifiedDate", lastModifiedDate);
-
-                    JSONResult jsonResult = HttpUtil.httpRequestWithToken(url, "POST",
-                            JSON.toJSONStringWithDateFormat(paramMap, "yyyy-MM-dd HH:mm:ss"), token);
-
-                    if (jsonResult.isOK()) {
-                        updateSuccess(synReqId, "itf_repair_batch_download_rec");
-                    } else {
-                        updateError(synReqId, jsonResult.getMsg(), "itf_repair_batch_download_rec");
-                    }
-                } catch (Exception ex) {
-                    log.error("ES更新维修主表下载状态失败syn_req_id=" + synReqId, ex);
-                    updateError(synReqId, ex.getMessage(), "itf_repair_batch_download_rec");
-                }
-            }
-        } catch (Exception ex) {
-            log.error("ES更新维修主表下载状态失败", ex);
-        }
-    }
-
-    public void updateError(Long synReqId, String errorMessage, String tabName) {
-        jdbcTemplate.update(
-                "update " + tabName + " set gree_stat_syn_status=99,gree_stat_syn_err_msg=? where syn_req_id=?",
-                new Object[] { errorMessage, synReqId });
-    }
-
-    public void updateSuccess(Long synReqId, String tabName) {
-        jdbcTemplate.update("update " + tabName + " set gree_stat_syn_status=1,gree_stat_syn_time=? where syn_req_id=?",
-                new Object[] { new Date(System.currentTimeMillis()), synReqId });
-    }
-
-    public List<Map<String, Object>> getNeedUpdateTaskData(String tabName) {
-        List<Map<String, Object>> result = jdbcTemplate
-                .queryForList("SELECT * from " + tabName + " where gree_stat_syn_status=0 order by syn_req_id ");
-        return result;
-    }
-
-    private JSONArray downloadData(String downloadBatchNo, String salesWebsitNumber) throws Exception {
-
-        Token token = tokenCenter.getCurrentToken();
-        String url = baseurl + "api/repair/batchsearch/repairorders?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 = "失败";
-            }
-            throw new Exception(errorMessage);
-        }
-
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public void addRepairData(JSONObject mainTableData, String downloadBatchNo, String downloadTaskNo, JSONObject sheet,
-                              String[] srcTabnameArray, String[] srcTabColListArray, String[] destTabNameArray,
-                              String[] destTabColListArray, String salesWebsitNumber) throws Exception {
-        // 查看同一时间同一工单是否存在下载记录表 存在不再保存本次的同步数据
-        if (insertRepairRecData(mainTableData, downloadBatchNo, downloadTaskNo, salesWebsitNumber)) {
-            parseData(sheet, srcTabnameArray, srcTabColListArray, destTabNameArray, destTabColListArray, downloadTaskNo,
-                    false, downloadBatchNo);
-        }
-    }
-
-    private boolean insertRepairRecData(JSONObject aData, String downloadBatchNo, String downloadTaskNo,
-                                        String salesWebsitNumber) throws Exception {
-
-        // 查看 相同时间同一单数据
-        List<Map<String, Object>> rec = isRepairDuplicate(aData);
-
-
-        boolean duplicate = (rec.size() > 0);
-
-        String sql = "insert into itf_repair_batch_download_rec (sales_websit_number,download_batch_no,download_task_no,"
-                + "created_by,created_date,last_modified_by,last_modified_date,pgid,"
-                + "extjson1,extjson2,extjson3,extjson4,extjson5" + (duplicate ? ",gree_stat_syn_err_msg" : "")
-                + ") values (" + "?,?,?,?,?,?,?,?,?,?,?,?,?" + (duplicate ? ",?" : "") + ") ";
-
-        // 存在 说明重复获取,不再保存数据
-        if (duplicate) {
-            if (!recHasNoUploadStatus(rec)) {
-                jdbcTemplate.update(sql,
-                        new Object[] { salesWebsitNumber, downloadBatchNo, downloadTaskNo,
-                                aData.getString("created_by"), aData.getString("created_date"),
-                                aData.getString("last_modified_by"), aData.getString("last_modified_date"),
-                                aData.getString("pgid"), aData.getString("extjson1"), aData.getString("extjson2"),
-                                aData.getString("extjson3"), aData.getString("extjson4"), aData.getString("extjson5"),
-                                "任务已经存在,不再产生下载数据" });
-            }
-            return false;
-        } else {
-            jdbcTemplate.update(sql,
-                    new Object[] { salesWebsitNumber, downloadBatchNo, downloadTaskNo, aData.getString("created_by"),
-                            aData.getString("created_date"), aData.getString("last_modified_by"),
-                            aData.getString("last_modified_date"), aData.getString("pgid"), aData.getString("extjson1"),
-                            aData.getString("extjson2"), aData.getString("extjson3"), aData.getString("extjson4"),
-                            aData.getString("extjson5") });
-            return true;
-        }
-
-    }
-
-    private List<Map<String, Object>> isRepairDuplicate(JSONObject aData) throws DataAccessException, ParseException {
-
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
-        List<Map<String, Object>> result = jdbcTemplate.queryForList(
-                "select * from itf_repair_batch_download_rec where pgid=? and last_modified_date=?",
-                new Object[] { aData.getString("pgid"), sdf.parse(aData.getString("last_modified_date")) });
-
-        return result;
-    }
-
-    private boolean recHasNoUploadStatus(List<Map<String, Object>> rec) {
-        for (Map<String, Object> data : rec) {
-            int greeStatSynStatus = (Integer) data.get("gree_stat_syn_status");
-            if (greeStatSynStatus == 0) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    private void parseData(JSONObject sheet, String[] srcTabnameArray, String[] srcTabColListArray,
-                           String[] destTabNameArray, String[] destTabColListArray, String downloadTaskNo, boolean isInstall,
-                           String downloadBatchNo) throws Exception {
-
-        for (int i = 0; i < srcTabnameArray.length; i++) {
-
-            String srcTabname = srcTabnameArray[i];
-            String srcTabColList = srcTabColListArray[i];
-            String destTabName = destTabNameArray[i];
-            String destTabColList = destTabColListArray[i];
-
-            String[] arySrcTabCol = srcTabColList.split("\\Q,\\E");
-
-            JSONArray tableData = new JSONArray();
-
-            if (isInstall) {
-                tableData = sheet.getJSONArray(srcTabname.toUpperCase());
-            } else {
-                if ("tblAssign".equalsIgnoreCase(DataUtil.fromDbName2ServiceName(srcTabname))) {
-                    tableData = new JSONArray();
-                    tableData.add(sheet.getJSONObject("tblAssign"));
-                } else {
-                    tableData = sheet.getJSONArray(DataUtil.fromDbName2ServiceName(srcTabname));
-                }
-
-            }
-
-            if (tableData == null){
-                continue;
-            }
-
-            for (int j = 0; j < tableData.size(); j++) {
-                parseAData(isInstall, downloadBatchNo, downloadTaskNo, destTabName, destTabColList, arySrcTabCol,
-                        tableData.getJSONObject(j));
-            }
-        }
-    }
-
-    public void parseAData(boolean isInstall, String downloadBatchNo, String downloadTaskNo, String destTabName,
-                            String destTabColList, String[] arySrcTabCol, JSONObject aData) throws Exception {
-        String table = "itf_tbl_az_assign_platform_download";
-        String daijian = "itf_tbl_assign_daijian_download";
-        String yd = "itf_tbl_assign_xzyd_download";
-
-        String[] arySrcTabColValue = new String[arySrcTabCol.length];
-
-        for (int j = 0; j < arySrcTabCol.length; j++) {
-            if (isInstall) {
-                if (destTabName.equals(table) && (j==2 || j== 4 || j==9)){
-                    if (StringUtils.isEmpty(DataUtil.findValue(DataUtil.fromDbName2ServiceName(arySrcTabCol[j].trim()),aData))){
-                        arySrcTabColValue[j] = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
-                        continue;
-                    }
-                }
-                arySrcTabColValue[j] = DataUtil.findValue(DataUtil.fromDbName2ServiceName(arySrcTabCol[j].trim()),
-                        aData);
-            } else {
-                if (destTabName.equals(daijian)){
-                    //创建时间 cjdt
-                    DataUtil.initLastModifiedDate(aData,"cjdt");
-                    // 商品大类 splb
-                    DataUtil.initOther(aData,"splb");
-                    // 替换编码销售公司库存 thbmxsgsnum
-                    DataUtil.initOther(aData,"thbmxsgsnum");
-                    // 替换编码区域库存 thbmqynum
-                    DataUtil.initOther(aData,"thbmqynum");
-                    // 替换编码网点库存 thbmwdnum
-                    DataUtil.initOther(aData,"thbmwdnum");
-                    // 配件系统处理标识 pjxtflag
-                    DataUtil.initOther(aData,"pjxtflag");
-                    // 区域配件库存 djquyunum
-                    DataUtil.initOther(aData,"djquyunum");
-                    // 销售公司配件库存 djxsgsnum
-                    DataUtil.initOther(aData,"djxsgsnum");
-                    // 网点配件库存 djwdnum
-                    DataUtil.initOther(aData,"djwdnum");
-                } else if (destTabName.equals(yd)){
-                    DataUtil.initOther(aData,"cshu");
-                    DataUtil.initOther(aData,"ydbz");
-                }
-
-                String colName = arySrcTabCol[j].trim();
-                arySrcTabColValue[j] = DataUtil.findValue(colName, aData);
-                if (getNullColSet().contains(colName)) {
-                    if ("".equals(arySrcTabColValue[j])) {
-                        arySrcTabColValue[j] = null;
-                    }
-                }
-            }
-        }
-
-        insertAData(downloadBatchNo, downloadTaskNo, destTabName, destTabColList, arySrcTabColValue);
+        repairDownloadService.processRepairDownload();
     }
 
-    public void insertAData(String downloadBatchNo, String downloadTaskNo, String destTabName, String destTabColList,
-                             Object[] arySrcTabColValue) throws Exception {
-
-        StringBuffer mark = new StringBuffer();
-        for (int i = 0; i < arySrcTabColValue.length; i++) {
-            if (mark.length() > 0) {
-                mark.append(",");
-            }
-            mark.append("?");
-        }
-
-        String sql = "insert into " + destTabName + " (download_batch_no,download_task_no," + destTabColList
-                + ") values (?,?," + mark + ") ";
-
-        Object[] insertValue = new Object[arySrcTabColValue.length + 2];
-        insertValue[0] = downloadBatchNo;
-        insertValue[1] = downloadTaskNo;
-        System.arraycopy(arySrcTabColValue, 0, insertValue, 2, arySrcTabColValue.length);
-        jdbcTemplate.update(sql, insertValue);
-
-    }
-
-    private synchronized Set<String> getNullColSet(){
-        if(nullDateCols==null) {
-            nullDateCols=new HashSet<String>();
-            String[] nullColArray=nullCols.split("\\Q,\\E");
-            for(String value:nullColArray) {
-                nullDateCols.add(value);
-            }
-        }
-        return nullDateCols;
-    }
 
 
 }

+ 4 - 397
src/main/java/com/zfire/jiasm/syncdata/download/order/RepairDownloadGD.java

@@ -1,30 +1,10 @@
 package com.zfire.jiasm.syncdata.download.order;
 
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.zfire.jiasm.syncdata.data.Token;
-import com.zfire.jiasm.syncdata.plus.entity.ItfGreeToFaRepairSynRule;
-import com.zfire.jiasm.syncdata.plus.service.ItfGreeToFaRepairSynRuleService;
-import com.zfire.jiasm.syncdata.pojo.bo.DownRepairOrderGD;
-import com.zfire.jiasm.syncdata.utils.DataUtil;
-import com.zfire.jiasm.syncdata.utils.HttpUtil;
-import com.zfire.jiasm.syncdata.utils.TokenCenter;
+import com.zfire.jiasm.syncdata.service.RepairDownloadGDService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.dao.DataAccessException;
-import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.StringUtils;
-
-import javax.annotation.Resource;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.*;
 
 /**
  * 从工单系统下载维修工单中的清洗保养工单,其他不要(工单系统下存放了有清洗保养工单的数据)
@@ -33,393 +13,20 @@ import java.util.*;
 @Slf4j
 @Component
 public class RepairDownloadGD {
-    @Value("${gdbaseurl}")
-    private String baseurl = "";
-    @Value("${nullCols}")
-    private String nullCols;
-
-    @Resource
-    RepairDownloadGD repairDownloadgd;
-    @Autowired
-    TokenCenter tokenCenter;
-    @Resource
-    ItfGreeToFaRepairSynRuleService itfGreeToFaRepairSynRuleService;
     @Autowired
-    private JdbcTemplate jdbcTemplate;
-    private Set<String> nullDateCols;
+    RepairDownloadGDService repairDownloadGDService;
+
 
     // 下载维修工单数据
     @Scheduled(fixedDelayString = "${repairdown}")
     public void download() throws Exception {
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        DownRepairOrderGD data = new DownRepairOrderGD();
-        JSONArray datas = new JSONArray();
-
         if (1 == 1) {
             return;
         }
 
-        try {
-            ItfGreeToFaRepairSynRule synRule = itfGreeToFaRepairSynRuleService.lambdaQuery()
-                    .orderByAsc(ItfGreeToFaRepairSynRule::getId).one();
-            if (synRule==null){
-                return;
-            }
-
-            log.info("开始从工单系统获取清洗保养工单: \uF0B7{}",sdf.format(new Date()));
-
-            // 数据源表名
-            String srcTabNames = synRule.getSrcTabName();
-            String[] srcTabnameArray = srcTabNames.trim().split("\\Q|\\E");
-
-            // 数据源表列
-            String srcTabColLists = synRule.getSrcTabColList();
-            String[] srcTabColListArray = srcTabColLists.trim().split("\\Q|\\E");
-
-            // 数据目的表名
-            String destTabNames = synRule.getDestTabName();
-            String[] destTabNameArray = destTabNames.trim().split("\\Q|\\E");
-
-            // 数据目的表列
-            String destTabColLists = synRule.getDestTabColList();
-            String[] destTabColListArray = destTabColLists.trim().split("\\Q|\\E");
-
-            // 销售公司编码
-            String salesWebsitNumber = synRule.getSalesWebsitNumber();
-            String downloadBatchNo = UUID.randomUUID().toString();
-            int id = 0;
-            // 获取数据 这里的数据为数组,会有多个工单的情况
-            data = downloadDataGD();
-            id = data.getId();
-            datas = data.getData();
-
-            log.info("从工单系统获取清洗保养工单下载了{}条数据",datas.size());
-
-            for (int i = 0; i < datas.size(); i++) {
-                JSONObject sheet = datas.getJSONObject(i);
-                try{
-                    // 维修工单主表必须存在
-                    JSONObject mainTableData = sheet.getJSONObject("tblAssign");
-                    if (mainTableData != null) {
-                        // 这里只同步维修工单中的 清洗保养工单 (从工单系统获取的维修工单一定有清洗保养工单)
-                        if (StringUtils.isEmpty(mainTableData.getString("xxlb")) ||
-                                !mainTableData.getString("xxlb").equals("清洗保养")){
-                            continue;
-                        }
-
-                        String downloadTaskNo = UUID.randomUUID().toString();
-                        DataUtil.initLastModifiedDate(mainTableData,"last_modified_date");
-                        repairDownloadgd.addRepairData(mainTableData, downloadBatchNo, downloadTaskNo, sheet,
-                                srcTabnameArray, srcTabColListArray, destTabNameArray, destTabColListArray,
-                                salesWebsitNumber,id);
-                    } else {
-                        log.error("维修工单找不到主表数据,downloadBatchNo[" + downloadBatchNo + "]");
-                    }
-                } catch (Exception ex) {
-                    log.info("维修工单下载落download表失败:{}" ,JSONObject.toJSONString(sheet));
-                    ex.printStackTrace();
-                }
-            }
-
-            log.info("维修工单同步下载状态");
-            // 与总部同步下载状态,修改本地下载记录表状态 gree_stat_syn_status =1
-            updateStatus();
-
-            log.info("维修工单下载完成");
-        } catch (Exception ex) {
-            log.error("从工单系统获取清洗保养工单失败", ex);
-        }
-
-    }
-
-    private void updateStatus() {
-        try {
-            List<Map<String, Object>> result = getNeedUpdateTaskData("itf_repair_batch_download_rec");
-            String url = baseurl + "sync/repairorderup";
-            for (Map<String, Object> row : result) {
-                Long synReqId = (Long) row.get("syn_req_id");
-                Integer gdid = (Integer) row.get("gdid");
-                try {
-                    Map<String, Object> paramMap = new HashMap<String, Object>();
-                    paramMap.put("id", gdid);
-                    JSONObject jsonResult = HttpUtil.httpRequestWithGD(url, "POST",JSONObject.toJSONString(paramMap));
-
-                    String code = jsonResult.getString("code");
-                    if ("200".equals(code)) {
-                        updateSuccess(synReqId, "itf_repair_batch_download_rec");
-                    } else {
-                        updateError(synReqId, "与工单系统同步失败", "itf_repair_batch_download_rec");
-                    }
-                } catch (Exception ex) {
-                    log.error("工单系统更新维修主表下载状态失败syn_req_id=" + synReqId, ex);
-                    updateError(synReqId, ex.getMessage(), "itf_repair_batch_download_rec");
-                }
-            }
-        } catch (Exception ex) {
-            log.error("工单系统更新维修主表下载状态失败", ex);
-        }
-    }
-
-    public void updateError(Long synReqId, String errorMessage, String tabName) {
-        jdbcTemplate.update(
-                "update " + tabName + " set gree_stat_syn_status=99,gree_stat_syn_err_msg=? where syn_req_id=?",
-                new Object[] { errorMessage, synReqId });
-    }
-
-    public void updateSuccess(Long synReqId, String tabName) {
-        jdbcTemplate.update("update " + tabName + " set gree_stat_syn_status=1,gree_stat_syn_time=? where syn_req_id=?",
-                new Object[] { new Date(System.currentTimeMillis()), synReqId });
-    }
-
-    public List<Map<String, Object>> getNeedUpdateTaskData(String tabName) {
-        List<Map<String, Object>> result = jdbcTemplate
-                .queryForList("SELECT * from " + tabName
-                        + " where gree_stat_syn_status=0 and gdid>-1 order by syn_req_id ");
-        return result;
-    }
-
-    private JSONArray downloadData(String downloadBatchNo, String salesWebsitNumber) throws Exception {
-
-        Token token = tokenCenter.getCurrentToken();
-        String url = baseurl + "api/repair/batchsearch/repairorders?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 = "失败";
-            }
-            throw new Exception(errorMessage);
-        }
-
+        repairDownloadGDService.processRepairDownload();
     }
 
-    private DownRepairOrderGD downloadDataGD() throws Exception {
-        int id;
-        DownRepairOrderGD datas = new DownRepairOrderGD();
-        String url = baseurl + "sync/repairorder";
-        JSONObject jsonResult = HttpUtil.httpRequestGetPgidGD(url, "GET", null);
-
-        String code = jsonResult.getString("code");
-        if ("200".equals(code)) {
-            JSONArray data = jsonResult.getJSONArray("data");
-            id =Integer.valueOf((String)jsonResult.getString("id"));
-            datas.setId(id);
-            datas.setData(data);
-
-            return datas;
-        } else {
-            String errorMessage = jsonResult.getString("message");
-            if (errorMessage == null || errorMessage.trim().length() == 0) {
-                errorMessage = "失败";
-            }
-            throw new Exception(errorMessage);
-        }
-
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public void addRepairData(JSONObject mainTableData, String downloadBatchNo, String downloadTaskNo, JSONObject sheet,
-                              String[] srcTabnameArray, String[] srcTabColListArray, String[] destTabNameArray,
-                              String[] destTabColListArray, String salesWebsitNumber, int id) throws Exception {
-        // 查看同一时间同一工单是否存在下载记录表 存在不再保存本次的同步数据
-        if (insertRepairRecData(mainTableData, downloadBatchNo, downloadTaskNo, salesWebsitNumber, id)) {
-            parseData(sheet, srcTabnameArray, srcTabColListArray, destTabNameArray, destTabColListArray, downloadTaskNo,
-                    false, downloadBatchNo);
-        }
-    }
-
-    private boolean insertRepairRecData(JSONObject aData, String downloadBatchNo, String downloadTaskNo,
-                                        String salesWebsitNumber, Integer id) throws Exception {
-
-        // 查看 相同时间同一单数据
-        List<Map<String, Object>> rec = isRepairDuplicate(aData);
-
-
-        boolean duplicate = (rec.size() > 0);
-
-        String sql = "insert into itf_repair_batch_download_rec (sales_websit_number,download_batch_no,download_task_no,"
-                + "created_by,created_date,last_modified_by,last_modified_date,pgid,"
-                + "extjson1,extjson2,extjson3,extjson4,extjson5,gdid" + (duplicate ? ",gree_stat_syn_err_msg" : "")
-                + ") values (" + "?,?,?,?,?,?,?,?,?,?,?,?,?,?" + (duplicate ? ",?" : "") + ") ";
-
-        // 存在 说明重复获取,不再保存数据
-        if (duplicate) {
-            if (!recHasNoUploadStatus(rec)) {
-                jdbcTemplate.update(sql,
-                        new Object[] { salesWebsitNumber, downloadBatchNo, downloadTaskNo,
-                                aData.getString("created_by"), aData.getString("created_date"),
-                                aData.getString("last_modified_by"), aData.getString("last_modified_date"),
-                                aData.getString("pgid"), aData.getString("extjson1"), aData.getString("extjson2"),
-                                aData.getString("extjson3"), aData.getString("extjson4"),
-                                aData.getString("extjson5"), id,
-                                "任务已经存在,不再产生下载数据" });
-            }
-            return false;
-        } else {
-            jdbcTemplate.update(sql,
-                    new Object[] { salesWebsitNumber, downloadBatchNo, downloadTaskNo, aData.getString("created_by"),
-                            aData.getString("created_date"), aData.getString("last_modified_by"),
-                            aData.getString("last_modified_date"), aData.getString("pgid"), aData.getString("extjson1"),
-                            aData.getString("extjson2"), aData.getString("extjson3"), aData.getString("extjson4"),
-                            aData.getString("extjson5"),id });
-            return true;
-        }
-
-    }
-
-    private List<Map<String, Object>> isRepairDuplicate(JSONObject aData) throws DataAccessException, ParseException {
-
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
-        List<Map<String, Object>> result = jdbcTemplate.queryForList(
-                "select * from itf_repair_batch_download_rec where pgid=? and last_modified_date=?",
-                new Object[] { aData.getString("pgid"), sdf.parse(aData.getString("last_modified_date")) });
-
-        return result;
-    }
-
-    private boolean recHasNoUploadStatus(List<Map<String, Object>> rec) {
-        for (Map<String, Object> data : rec) {
-            int greeStatSynStatus = (Integer) data.get("gree_stat_syn_status");
-            if (greeStatSynStatus == 0) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    private void parseData(JSONObject sheet, String[] srcTabnameArray, String[] srcTabColListArray,
-                           String[] destTabNameArray, String[] destTabColListArray, String downloadTaskNo, boolean isInstall,
-                           String downloadBatchNo) throws Exception {
-
-        for (int i = 0; i < srcTabnameArray.length; i++) {
-
-            String srcTabname = srcTabnameArray[i];
-            String srcTabColList = srcTabColListArray[i];
-            String destTabName = destTabNameArray[i];
-            String destTabColList = destTabColListArray[i];
-
-            String[] arySrcTabCol = srcTabColList.split("\\Q,\\E");
-
-            JSONArray tableData = new JSONArray();
-
-            if (isInstall) {
-                tableData = sheet.getJSONArray(srcTabname.toUpperCase());
-            } else {
-                if ("tblAssign".equalsIgnoreCase(DataUtil.fromDbName2ServiceName(srcTabname))) {
-                    tableData = new JSONArray();
-                    tableData.add(sheet.getJSONObject("tblAssign"));
-                } else {
-                    tableData = sheet.getJSONArray(DataUtil.fromDbName2ServiceName(srcTabname));
-                }
-
-            }
-
-            if (tableData == null){
-                continue;
-            }
-
-            for (int j = 0; j < tableData.size(); j++) {
-                parseAData(isInstall, downloadBatchNo, downloadTaskNo, destTabName, destTabColList, arySrcTabCol,
-                        tableData.getJSONObject(j));
-            }
-        }
-    }
-
-    public void parseAData(boolean isInstall, String downloadBatchNo, String downloadTaskNo, String destTabName,
-                            String destTabColList, String[] arySrcTabCol, JSONObject aData) throws Exception {
-        String table = "itf_tbl_az_assign_platform_download";
-        String daijian = "itf_tbl_assign_daijian_download";
-        String yd = "itf_tbl_assign_xzyd_download";
-
-        String[] arySrcTabColValue = new String[arySrcTabCol.length];
-
-        for (int j = 0; j < arySrcTabCol.length; j++) {
-            if (isInstall) {
-                if (destTabName.equals(table) && (j==2 || j== 4 || j==9)){
-                    if (StringUtils.isEmpty(DataUtil.findValue(DataUtil.fromDbName2ServiceName(arySrcTabCol[j].trim()),aData))){
-                        arySrcTabColValue[j] = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
-                        continue;
-                    }
-                }
-                arySrcTabColValue[j] = DataUtil.findValue(DataUtil.fromDbName2ServiceName(arySrcTabCol[j].trim()),
-                        aData);
-            } else {
-                if (destTabName.equals(daijian)){
-                    //创建时间 cjdt
-                    DataUtil.initLastModifiedDate(aData,"cjdt");
-                    // 商品大类 splb
-                    DataUtil.initOther(aData,"splb");
-                    // 替换编码销售公司库存 thbmxsgsnum
-                    DataUtil.initOther(aData,"thbmxsgsnum");
-                    // 替换编码区域库存 thbmqynum
-                    DataUtil.initOther(aData,"thbmqynum");
-                    // 替换编码网点库存 thbmwdnum
-                    DataUtil.initOther(aData,"thbmwdnum");
-                    // 配件系统处理标识 pjxtflag
-                    DataUtil.initOther(aData,"pjxtflag");
-                    // 区域配件库存 djquyunum
-                    DataUtil.initOther(aData,"djquyunum");
-                    // 销售公司配件库存 djxsgsnum
-                    DataUtil.initOther(aData,"djxsgsnum");
-                    // 网点配件库存 djwdnum
-                    DataUtil.initOther(aData,"djwdnum");
-                } else if (destTabName.equals(yd)){
-                    DataUtil.initOther(aData,"cshu");
-                    DataUtil.initOther(aData,"ydbz");
-                }
-
-                String colName = arySrcTabCol[j].trim();
-                arySrcTabColValue[j] = DataUtil.findValue(colName, aData);
-                if (getNullColSet().contains(colName)) {
-                    if ("".equals(arySrcTabColValue[j])) {
-                        arySrcTabColValue[j] = null;
-                    }
-                }
-            }
-        }
-
-        insertAData(downloadBatchNo, downloadTaskNo, destTabName, destTabColList, arySrcTabColValue);
-    }
-
-    public void insertAData(String downloadBatchNo, String downloadTaskNo, String destTabName, String destTabColList,
-                             Object[] arySrcTabColValue) throws Exception {
-
-        StringBuffer mark = new StringBuffer();
-        for (int i = 0; i < arySrcTabColValue.length; i++) {
-            if (mark.length() > 0) {
-                mark.append(",");
-            }
-            mark.append("?");
-        }
-
-        String sql = "insert into " + destTabName + " (download_batch_no,download_task_no," + destTabColList
-                + ") values (?,?," + mark + ") ";
-
-        Object[] insertValue = new Object[arySrcTabColValue.length + 2];
-        insertValue[0] = downloadBatchNo;
-        insertValue[1] = downloadTaskNo;
-        System.arraycopy(arySrcTabColValue, 0, insertValue, 2, arySrcTabColValue.length);
-        jdbcTemplate.update(sql, insertValue);
-
-    }
-
-    private synchronized Set<String> getNullColSet(){
-        if(nullDateCols==null) {
-            nullDateCols=new HashSet<String>();
-            String[] nullColArray=nullCols.split("\\Q,\\E");
-            for(String value:nullColArray) {
-                nullDateCols.add(value);
-            }
-        }
-        return nullDateCols;
-    }
 
 
 }

+ 0 - 2
src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleAssignLogic.java

@@ -13,7 +13,6 @@ import com.zfire.jiasm.syncdata.plus.service.*;
 import io.jsonwebtoken.lang.Collections;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -21,7 +20,6 @@ import org.springframework.transaction.annotation.Transactional;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
-import java.math.BigDecimal;
 
 @Slf4j
 @Service

+ 1 - 1
src/main/java/com/zfire/jiasm/syncdata/service/AddRepairBusiness.java → src/main/java/com/zfire/jiasm/syncdata/service/AddRepairBusinessService.java

@@ -7,7 +7,7 @@ import com.zfire.jiasm.syncdata.plus.entity.SysDictRef;
 import java.util.List;
 import java.util.Map;
 
-public interface AddRepairBusiness {
+public interface AddRepairBusinessService {
     void addRapairOrder(Brand brand, ItfTblAssignDownload item,
                   Map<String, List<SysDictRef>> sysDictRefDLMap,
                   Map<String, List<SysDictRef>> sysDictRefXLMap,

+ 7 - 7
src/main/java/com/zfire/jiasm/syncdata/service/DetailDownloadService.java

@@ -9,18 +9,18 @@ import java.util.Map;
 
 public interface DetailDownloadService {
 	
-	public List<Map<String, Object>> getTaskTypeInstall();
+	List<Map<String, Object>> getTaskTypeInstall();
 	
-	public List<Map<String, Object>> getTaskTypeRepair();
+	List<Map<String, Object>> getTaskTypeRepair();
 	
-	public List<Map<String, Object>> getTaskDataInstall(int downloadTaskType);
+	List<Map<String, Object>> getTaskDataInstall(int downloadTaskType);
 	
-	public List<Map<String, Object>> getTaskDataRepair(int downloadTaskType);
+	List<Map<String, Object>> getTaskDataRepair(int downloadTaskType);
 	
-	public List<Map<String, Object>> getTaskTables(int downloadTaskType);
+	List<Map<String, Object>> getTaskTables(int downloadTaskType);
 	
-	public void insertData(String downloadTaskNo,List<DetailDownloadData> detailDownloadDatas,
+	void insertData(String downloadTaskNo,List<DetailDownloadData> detailDownloadDatas,
 						   int downloadTaskType, String pgguid,Map<String, List<SysDict>> sysDictRefDLMap) throws Exception;
 	
-	public void updateError(String downloadTaskNo, Integer downloadTimes,String errMessage);
+	void updateError(String downloadTaskNo, Integer downloadTimes,String errMessage);
 }

+ 5 - 0
src/main/java/com/zfire/jiasm/syncdata/service/InstallDownloadService.java

@@ -0,0 +1,5 @@
+package com.zfire.jiasm.syncdata.service;
+
+public interface InstallDownloadService {
+    void processInstallDownload() throws Exception;
+}

+ 7 - 0
src/main/java/com/zfire/jiasm/syncdata/service/InstallProduceDataUploadService.java

@@ -0,0 +1,7 @@
+package com.zfire.jiasm.syncdata.service;
+
+public interface InstallProduceDataUploadService {
+
+    void processProduce();
+
+}

+ 6 - 0
src/main/java/com/zfire/jiasm/syncdata/service/InstallProduceUploadListService.java

@@ -0,0 +1,6 @@
+package com.zfire.jiasm.syncdata.service;
+
+public interface InstallProduceUploadListService {
+
+    void processUploadList();
+}

+ 7 - 0
src/main/java/com/zfire/jiasm/syncdata/service/RepairDownloadGDService.java

@@ -0,0 +1,7 @@
+package com.zfire.jiasm.syncdata.service;
+
+public interface RepairDownloadGDService {
+
+    void processRepairDownload() throws Exception;
+
+}

+ 5 - 0
src/main/java/com/zfire/jiasm/syncdata/service/RepairDownloadService.java

@@ -0,0 +1,5 @@
+package com.zfire.jiasm.syncdata.service;
+
+public interface RepairDownloadService {
+    void processRepairDownload() throws Exception;
+}

+ 6 - 0
src/main/java/com/zfire/jiasm/syncdata/service/RepairProduceDataUploadService.java

@@ -0,0 +1,6 @@
+package com.zfire.jiasm.syncdata.service;
+
+public interface RepairProduceDataUploadService {
+
+    void processRepairProduceDataUpload() throws Exception;
+}

+ 6 - 0
src/main/java/com/zfire/jiasm/syncdata/service/RepairProduceUploadListService.java

@@ -0,0 +1,6 @@
+package com.zfire.jiasm.syncdata.service;
+
+public interface RepairProduceUploadListService {
+
+    void processproduceList() throws Exception;
+}

+ 6 - 0
src/main/java/com/zfire/jiasm/syncdata/service/UploadWorkeCertificateService.java

@@ -0,0 +1,6 @@
+package com.zfire.jiasm.syncdata.service;
+
+public interface UploadWorkeCertificateService {
+
+    void procesUploadWorkeCert() throws Exception;
+}

+ 6 - 0
src/main/java/com/zfire/jiasm/syncdata/service/UploadWorkerTOGreeService.java

@@ -0,0 +1,6 @@
+package com.zfire.jiasm.syncdata.service;
+
+public interface UploadWorkerTOGreeService {
+
+    void procesUploadWorker() throws Exception;
+}

+ 0 - 3
src/main/java/com/zfire/jiasm/syncdata/service/impl/AddInstallBusinessImpl.java

@@ -1,6 +1,5 @@
 package com.zfire.jiasm.syncdata.service.impl;
 
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.zfire.jiasm.syncdata.api.OrderAddBeanDTO;
@@ -17,14 +16,12 @@ import com.zfire.jiasm.syncdata.service.JiasmApi;
 import com.zfire.jiasm.syncdata.service.OrderService;
 import com.zfire.jiasm.syncdata.service.PublicService;
 import com.zfire.jiasm.syncdata.utils.MyBeanUtils;
-import com.zfire.jiasm.syncdata.utils.RedisUtil;
 import com.zfire.jiasm.syncdata.utils.ResponseHelper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 

+ 3 - 7
src/main/java/com/zfire/jiasm/syncdata/service/impl/AddRepairBusinessImpl.java → src/main/java/com/zfire/jiasm/syncdata/service/impl/AddRepairBusinessServiceImpl.java

@@ -1,14 +1,11 @@
 package com.zfire.jiasm.syncdata.service.impl;
 
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.zfire.jiasm.syncdata.api.OrderAddBeanDTO;
-import com.zfire.jiasm.syncdata.constant.Constant;
 import com.zfire.jiasm.syncdata.constant.DictTypeEnum;
 import com.zfire.jiasm.syncdata.constant.GDOrderStatusEnum;
-import com.zfire.jiasm.syncdata.service.JiasmApi;
 import com.zfire.jiasm.syncdata.constant.OrderTypeEnum;
 import com.zfire.jiasm.syncdata.dao.mapper.*;
 import com.zfire.jiasm.syncdata.parameter.OrderPar;
@@ -16,17 +13,16 @@ import com.zfire.jiasm.syncdata.parameter.ReAppointment;
 import com.zfire.jiasm.syncdata.plus.entity.*;
 import com.zfire.jiasm.syncdata.plus.service.*;
 import com.zfire.jiasm.syncdata.response.WebsitFWS;
-import com.zfire.jiasm.syncdata.service.AddRepairBusiness;
+import com.zfire.jiasm.syncdata.service.AddRepairBusinessService;
+import com.zfire.jiasm.syncdata.service.JiasmApi;
 import com.zfire.jiasm.syncdata.service.OrderService;
 import com.zfire.jiasm.syncdata.service.PublicService;
 import com.zfire.jiasm.syncdata.utils.MyBeanUtils;
-import com.zfire.jiasm.syncdata.utils.RedisUtil;
 import com.zfire.jiasm.syncdata.utils.ResponseHelper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -37,7 +33,7 @@ import java.util.stream.Collectors;
 
 @Slf4j
 @Service
-public class AddRepairBusinessImpl implements AddRepairBusiness {
+public class AddRepairBusinessServiceImpl implements AddRepairBusinessService {
     @Resource
     ItfTblAssignDownloadService itfTblAssignDownloadService;
     @Resource

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

@@ -22,7 +22,6 @@ import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
-import javax.jws.WebResult;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;

+ 0 - 3
src/main/java/com/zfire/jiasm/syncdata/service/impl/GLPPWXGQueryUpdateServiceImpl.java

@@ -7,7 +7,6 @@ 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.constant.TaskConfigEnum;
 import com.zfire.jiasm.syncdata.gree.GreeLogic;
 import com.zfire.jiasm.syncdata.helper.GreeResponseHelper;
 import com.zfire.jiasm.syncdata.plus.entity.*;
@@ -21,13 +20,11 @@ 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.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 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;
 

+ 4 - 1
src/main/java/com/zfire/jiasm/syncdata/service/impl/GLPPXuQiuLeiBieServiceImpl.java

@@ -5,7 +5,10 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.zfire.jiasm.syncdata.constant.DictTypeEnum;
 import com.zfire.jiasm.syncdata.plus.entity.*;
-import com.zfire.jiasm.syncdata.plus.service.*;
+import com.zfire.jiasm.syncdata.plus.service.ItfTblAssignXqxlDowloadService;
+import com.zfire.jiasm.syncdata.plus.service.ItfTblAssignXxlbDowloadService;
+import com.zfire.jiasm.syncdata.plus.service.SysDictRefService;
+import com.zfire.jiasm.syncdata.plus.service.SysDictService;
 import com.zfire.jiasm.syncdata.service.GLPPXuQiuLeiBieService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;

+ 480 - 0
src/main/java/com/zfire/jiasm/syncdata/service/impl/InstallDownloadServiceImpl.java

@@ -0,0 +1,480 @@
+package com.zfire.jiasm.syncdata.service.impl;
+
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zfire.jiasm.syncdata.constant.ESInstallEnum;
+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.service.InstallDownloadService;
+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.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+@Slf4j
+@Service
+public class InstallDownloadServiceImpl implements InstallDownloadService {
+    @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;
+
+
+
+    @Override
+    public void processInstallDownload() throws Exception {
+        List<ItfInstallBatchDownloadRec> rec = new ArrayList<>();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        log.info("开始下载安装工单: \uF0B7{}",sdf.format(new Date()));
+
+        String downloadBatchNo = UUID.randomUUID().toString();
+        // 按批次-获取数据
+        JSONArray datas = getDownloadData(downloadBatchNo, ESInstallEnum.SALES_WEBSIT_NUMBER.getCode());
+        log.info("安装工单下载了{}条数据",datas.size());
+
+        // 写销售单号-派工单号 方便日志查询
+        if (datas.size()>0){
+            putLogInfo(datas);
+        }
+
+        // 按单来处理 数据源为数组(每一个成员为一个订单)
+        for (int i = 0; i < datas.size(); i++) {
+            try{
+                JSONObject sheet = datas.getJSONObject(i);
+                // 提取主表数据 主表无数据时不处理
+                JSONArray mainTableData = sheet.getJSONArray("TBL_AZ_ASSIGN_LC_LS");
+                if (mainTableData != null && mainTableData.size() > 0) {
+                    String downloadTaskNo = UUID.randomUUID().toString();
+                    // 最后修改日期不能为空处理
+                    DataUtil.initLastModifiedDate(mainTableData.getJSONObject(0),"lastModifiedDate");
+                    // 添加数据
+                    addData(rec, downloadBatchNo, sheet, mainTableData, downloadTaskNo);
+                } else {
+                    log.info("安装工单找不到主表数据不做处理 mainTableData:{}" ,mainTableData);
+                }
+            } catch (Exception ex) {
+                ex.printStackTrace();
+                log.info("安装工单落本地表失败");
+            }
+        }
+
+        log.info("安装工单下载完成 \uF0B7{}",sdf.format(new Date()));
+        updateStatus();
+    }
+
+
+    @Transactional(rollbackFor = Exception.class)
+    public void addData(List<ItfInstallBatchDownloadRec> rec, String downloadBatchNo, JSONObject sheet, JSONArray mainTableData, String downloadTaskNo) throws Exception {
+        // 查看安装数据批量下载记录内是否已存在
+        //     已存在不再下载,
+        //     无数据时落本地表
+        Boolean flag = Boolean.FALSE;
+        flag = insertInstallRecData(mainTableData.getJSONObject(0), downloadBatchNo, downloadTaskNo, rec,
+                ESInstallEnum.SALES_WEBSIT_NUMBER.getCode());
+        // 历史下载记录中无数据时数据落表,有数据时不再下载
+        if (flag){
+            parseData(sheet, downloadTaskNo, downloadBatchNo, rec);
+        }
+    }
+
+
+
+    // 与总部进行状态同步下次获取时不再拉取数据
+    private void updateStatus() {
+        try {
+            List<ItfInstallBatchDownloadRec> recs = new ArrayList<>();
+            // greeStatSynStatus:总部同步标志是否已成功更新 0=否 1=是 99=其他
+            LambdaQueryWrapper<ItfInstallBatchDownloadRec> queryWrapper = new LambdaQueryWrapper<ItfInstallBatchDownloadRec>()
+                    .eq(ItfInstallBatchDownloadRec::getGreeStatSynStatus,0)
+                    .or(wrapper->wrapper.eq(ItfInstallBatchDownloadRec::getGreeStatSynStatus,99)
+                            .le(ItfInstallBatchDownloadRec::getSynTimes,5))
+                    .orderByAsc(ItfInstallBatchDownloadRec::getSynReqId);
+            recs = itfInstallBatchDownloadRecService.list(queryWrapper);
+
+            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);
+    }
+
+    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);
+            rec.clear();
+        }
+        if (lcls.size()>0){
+            itfTblAzAssignLcLsDownloadService.saveBatch(lcls);
+            lcls.clear();
+        }
+        if (mx.size()>0){
+            itfTblAzAssignMxDownloadService.saveBatch(mx);
+            mx.clear();
+        }
+        if (fk.size()>0){
+            itfTblAzAssignFkMxDownloadService.saveBatch(fk);
+            fk.clear();
+        }
+        if (fe.size()>0){
+            itfTblAzAssignFeeDownloadService.saveBatch(fe);
+            fe.clear();
+        }
+        if (app.size()>0){
+            itfTblAzAssignAppointmentDownloadService.saveBatch(app);
+            app.clear();
+        }
+        if (fz.size()>0){
+            itfTblAzAssignLcFzryDownloadService.saveBatch(fz);
+            fz.clear();
+        }
+        if (sa.size()>0){
+            itfTblAzAssignSatisfactionDownloadService.saveBatch(sa);
+            sa.clear();
+        }
+        if (pla.size()>0){
+            itfTblAzAssignPlatformDownloadService.saveBatch(pla);
+            pla.clear();
+        }
+    }
+
+    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<>();
+
+        // 获取报文对应数据信息
+        getDataInfo(sheet, downloadTaskNo, downloadBatchNo, lcls, mx, fk, fe, app, fz, sa, pla);
+
+        // 打印预落表安装工单信息方便查询出错的订单信息
+        logAZGDInfo(lcls);
+
+        // 数据同步落到同步信息表 事务处理
+        downloadAdd(rec, lcls, mx, fk, fe, app, fz, sa, pla);
+    }
+
+    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);
+        }
+
+    }
+}

+ 1436 - 0
src/main/java/com/zfire/jiasm/syncdata/service/impl/InstallProduceDataUploadServiceImpl.java

@@ -0,0 +1,1436 @@
+package com.zfire.jiasm.syncdata.service.impl;
+
+
+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.GDAppointStatusEnum;
+import com.zfire.jiasm.syncdata.constant.GDOrderStatusEnum;
+import com.zfire.jiasm.syncdata.constant.OrderTypeEnum;
+import com.zfire.jiasm.syncdata.dao.mapper.*;
+import com.zfire.jiasm.syncdata.gree.GreeLogic;
+import com.zfire.jiasm.syncdata.helper.GreeFileResponseHelper;
+import com.zfire.jiasm.syncdata.helper.GreeFileSaveHelper;
+import com.zfire.jiasm.syncdata.http.PostObjectSample;
+import com.zfire.jiasm.syncdata.parameter.*;
+import com.zfire.jiasm.syncdata.plus.entity.*;
+import com.zfire.jiasm.syncdata.plus.service.*;
+import com.zfire.jiasm.syncdata.response.ResultData;
+import com.zfire.jiasm.syncdata.response.WebsitFWS;
+import com.zfire.jiasm.syncdata.response.WebsitPP;
+import com.zfire.jiasm.syncdata.response.WebsitSH;
+import com.zfire.jiasm.syncdata.service.InstallProduceDataUploadService;
+import com.zfire.jiasm.syncdata.service.OrderService;
+import com.zfire.jiasm.syncdata.service.PublicService;
+import com.zfire.jiasm.syncdata.upload.order.InstallProduceDataUpload;
+import com.zfire.jiasm.syncdata.utils.MyBeanUtils;
+import com.zfire.jiasm.syncdata.utils.RemoteServiceException;
+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.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Service
+public class InstallProduceDataUploadServiceImpl implements InstallProduceDataUploadService {
+    @Value("${azuploadyscc}")
+    private String azuploadyscc = "";
+
+
+    @Resource
+    InstallProduceDataUpload installProduceDataUpload;
+    @Resource
+    OutJiasmToGreeUploadTaskTypeService outJiasmToGreeUploadTaskTypeService;
+    @Resource
+    OutJiasmToGreeUploadTaskListService outJiasmToGreeUploadTaskListService;
+    @Resource
+    OrderBaseService orderBaseService;
+    @Resource
+    GDOrderBaseMapper gdOrderBaseMapper;
+    @Resource
+    BaseService baseService;
+    @Resource
+    ItfTblAzAssignLcLsUploadService itfTblAzAssignLcLsUploadService;
+    @Resource
+    OrderInstallDetailService orderInstallDetailService;
+    @Resource
+    DetailOrderInstallMapper detailOrderInstallMapper;
+    @Resource
+    SysDictRefService sysDictRefService;
+    @Resource
+    BrandWebsitService brandWebsitService;
+    @Resource
+    ItfTblWangdianWxgDownloadService itfTblWangdianWxgDownloadService;
+    @Resource
+    FileOrderDetailMapper fileOrderDetailMapper;
+    @Resource
+    OrderDetailFileService orderDetailFileService;
+    @Resource
+    ItfTblAzWgmxJyktFjUploadService itfTblAzWgmxJyktFjUploadService;
+    @Resource
+    ItfTblAzWgmxSyktFjUploadService itfTblAzWgmxSyktFjUploadService;
+    @Resource
+    ItfTblAzWgmxQitaFjUploadService itfTblAzWgmxQitaFjUploadService;
+    @Resource
+    ItfTblAzWgmxJyktUploadService itfTblAzWgmxJyktUploadService;
+    @Resource
+    ItfTblAzWgmxSyktUploadService itfTblAzWgmxSyktUploadService;
+    @Resource
+    ItfTblAzWgmxQitaUploadService itfTblAzWgmxQitaUploadService;
+    @Resource
+    CodeOrderInstallDetailMapper codeOrderInstallDetailMapper;
+    @Resource
+    OrderInstallDetailCodeService orderInstallDetailCodeService;
+    @Resource
+    ItfTblAzWgmxJyktTmmxUploadService itfTblAzWgmxJyktTmmxUploadService;
+    @Resource
+    ItfTblAzWgmxSyktTmmxLsUploadService itfTblAzWgmxSyktTmmxLsUploadService;
+    @Resource
+    ItfTblAzWgmxQitaTmmxUploadService itfTblAzWgmxQitaTmmxUploadService;
+    @Resource
+    ItfMessagehuifangentityService itfMessagehuifangentityService;
+    @Resource
+    OrderPayOutlayItemService orderPayOutlayItemService;
+    @Resource
+    OrderInstallService orderInstallService;
+    @Resource
+    ItfTblAzAssignFeeUploadService itfTblAzAssignFeeUploadService;
+    @Resource
+    OperatingLogOrderInstallMapper operatingLogOrderInstallMapper;
+    @Resource
+    ItfTblAzAssignFkmxUploadService itfTblAzAssignFkmxUploadService;
+    @Resource
+    ReAppointmentOrderMapper reAppointmentOrderMapper;
+    @Resource
+    ItfTblAzAssignAppointmentUploadService itfTblAzAssignAppointmentUploadService;
+    @Resource
+    PublicService publicService;
+    @Resource
+    OrderProductService orderProductService;
+    @Resource
+    GetOrderProductMapper getOrderProductMapper;
+    @Resource
+    ItfTblAzAssignMxUploadService itfTblAzAssignMxUploadService;
+    @Resource
+    OSSUtil ossUtil;
+    @Resource
+    GreeLogic greeLogic;
+    @Resource
+    ItfTblazwgmxjyktfjService itfTblazwgmxjyktfjService;
+    @Resource
+    ItfTblazwgmxjyktfjCJMapper itfTblazwgmxjyktfjCJMapper;
+    @Resource
+    ItfTblazwgmxsyktfjService itfTblazwgmxsyktfjService;
+    @Resource
+    ItfTblazwgmxqitafjService itfTblazwgmxqitafjService;
+    @Resource
+    ItfTblazwgmxqitafjCJMapper itfTblazwgmxqitafjCJMapper;
+    @Resource
+    com.zfire.jiasm.syncdata.service.orderBaseInstallCjOrWgService orderBaseInstallCjOrWgService;
+    @Resource
+    OrderInformationService orderInformationService;
+    @Resource
+    OrderInformationNewMapper orderInformationNewMapper;
+    @Resource
+    ItfTblAzAssignXzydUploadService itfTblAzAssignXzydUploadService;
+    @Resource
+    OrderService orderService;
+
+
+
+    @Override
+    public void processProduce() {
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String cjOrWg = "";
+
+        // 提取品牌信息
+        Brand brand = baseService.getBrand();
+        if (brand == null) {
+            return;
+        }
+
+        // 提取大类信息
+        List<SysDictRef> sysDictRefRecs =  sysDictRefService.lambdaQuery()
+                .select(SysDictRef::getRefDictName,
+                        SysDictRef::getDictCode)
+                .eq(SysDictRef::getBrandId, brand.getBrandId())
+                .eq(SysDictRef::getDictType, DictTypeEnum.DICT_TYPE_MAIN_TYPE.getCode())
+                .list();
+        Map<String, List<SysDictRef>> CategoryRefmap = sysDictRefRecs.stream().collect(Collectors.groupingBy(SysDictRef::getDictCode));
+
+        log.info("开始生成需要上传的安装工单数据: \uF0B7{}",sdf.format(new Date()));
+
+        // 数据准备类型定义表中提取所有数据
+        List<OutJiasmToGreeUploadTaskType> ojtutts = outJiasmToGreeUploadTaskTypeService.lambdaQuery()
+                .orderByAsc(OutJiasmToGreeUploadTaskType::getId).list();
+        try{
+            for (OutJiasmToGreeUploadTaskType item:ojtutts){
+                // 任务类型
+                int uploadTaskType = item.getUploadTaskType();
+
+                // 数据上传任务表提取对应的任务类型数据
+                List<OutJiasmToGreeUploadTaskList> ojtutls = outJiasmToGreeUploadTaskListService.lambdaQuery()
+                        .eq(OutJiasmToGreeUploadTaskList::getSynStatus,0)
+                        .eq(OutJiasmToGreeUploadTaskList::getUploadTaskType,uploadTaskType)
+                        .orderByAsc(OutJiasmToGreeUploadTaskList::getSynReqId).list();
+                for (OutJiasmToGreeUploadTaskList ojtutl:ojtutls){
+                    try{
+                        // 安装工单数据生成
+                        // 同步任务表中的主键,安装工单号,源表主键
+                        // TL_PrePareSynDataby_fa_order_install_test
+                        // 安装工单 基础表数据同步
+                        if (ojtutl.getTableName().equals("order_base") &&
+                                ojtutl.getOrderType().equals(OrderTypeEnum.ORDER_TYPE_INSTALL.getCode())){
+                            // 22 - TL_PrePareSynDataby_fa_order_install_test
+                            // 221 - TL_PrePareSynDataby_az_assign_cj
+                            // 222 - TL_PrePareSynDataby_az_assign_wg
+
+                            if (uploadTaskType==22){
+                                if (!orderBaseInstall(brand, ojtutl, CategoryRefmap)) {
+                                    continue;
+                                }
+                            } else if (uploadTaskType==221){
+                                cjOrWg="cj";
+                                if (!orderBaseInstallCjOrWgService.orderBaseInstallCjOrWg(cjOrWg, brand, ojtutl, CategoryRefmap)) {
+                                    continue;
+                                }
+                            } else if (uploadTaskType==222){
+                                cjOrWg="wg";
+                                if (!orderBaseInstallCjOrWgService.orderBaseInstallCjOrWg(cjOrWg, brand, ojtutl, CategoryRefmap)) {
+                                    continue;
+                                }
+                            }
+                        }
+                        // 安装工单操作明细 TL_PrePareSynDataby_fa_order_install_operating_log
+                        if (ojtutl.getTableName().equals("order_install_operating_log") &&
+                                ojtutl.getOrderType().equals(OrderTypeEnum.ORDER_TYPE_INSTALL.getCode())){
+                            getFkmx(brand, ojtutl);
+                        }
+                        // 安装工单用户改约明细 与操作明细最好放在一起,因表设计分开,所以独立开来处理
+                        if (ojtutl.getTableName().equals("order_re_appointment") &&
+                                ojtutl.getOrderType().equals(OrderTypeEnum.ORDER_TYPE_INSTALL.getCode())){
+                            getAppointment(ojtutl);
+                        }
+                        // 生成安装工单明细数据 TL_PrePareSynDataby_fa_order_install_product
+                        if (ojtutl.getTableName().equals("order_product") &&
+                                ojtutl.getOrderType().equals(OrderTypeEnum.ORDER_TYPE_INSTALL.getCode())){
+                            generateAzMx(brand, ojtutl);
+                        }
+                        // 生成安装工单子信息数据 TL_PrePareSynDataby_fa_order_install_information
+                        if (ojtutl.getTableName().equals("order_information") &&
+                                ojtutl.getOrderType().equals(OrderTypeEnum.ORDER_TYPE_INSTALL.getCode())){
+                            generateInformation(ojtutl);
+                        }
+                    } catch (Exception ex) {
+                        ex.printStackTrace();
+                        log.info("out_jiasm_to_gree_upload_task_list syn_req_id={} table={} order_base_id={} id={}",
+                                ojtutl.getSynReqId(),ojtutl.getTableName(),ojtutl.getOrderNo(),ojtutl.getId());
+                        publicService.updateUploadTaskLisError(ojtutl,ex.getMessage());
+                        log.info("开始预处理生成需要上传的安装工单数据出错");
+                    }
+
+                }
+            }
+
+            log.info("生成需要上传的安装工单数据结束: \uF0B7{}",sdf.format(new Date()));
+
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            log.info("开始预处理生成需要上传的安装工单数据出错");
+        }
+    }
+
+
+    @Transactional(rollbackFor = Exception.class)
+    public void generateInformation(OutJiasmToGreeUploadTaskList ojtutl) {
+        WebsitFWS websitFWS = new WebsitFWS();
+
+        // 提取对应的子信息
+        OrderInformation oi = orderInformationService.lambdaQuery()
+                .eq(OrderInformation::getId, ojtutl.getId()).one();
+        if (oi!=null){
+            // 更新 pgguid,pgid 因该表无这两个字段,从工单主表中取即可
+            // 修改内部序
+            upOutId(ojtutl);
+
+            // 生成待同步表数据
+            OrderPar orderPar = new OrderPar();
+            orderPar.setId(ojtutl.getId());
+            ItfTblAzAssignXzydUpload rec = orderInformationNewMapper.getOrderInformation(orderPar);
+            OrderBase orderBase = orderBaseService.lambdaQuery()
+                    .eq(OrderBase::getId,rec.getWorkerOrderNo()).one();
+            rec.setPgguid(orderBase.getPgguid());
+            rec.setPgid(orderBase.getPgid());
+
+            websitFWS = publicService.shshwdToptshwd(rec.getWdno(),orderBase);
+            if (StringUtils.isEmpty(websitFWS.getWebsitId())){
+                websitFWS = publicService.shxswdToptxswd(rec.getWdno(),orderBase);
+            }
+
+            rec.setWdno(websitFWS.getWebsitId());
+            itfTblAzAssignXzydUploadService.save(rec);
+        }
+        // 修改数据上传任务表中的状态 单号,id,同步状态,类型
+        publicService.updateUploadTaskListStatus(ojtutl.getOrderNo(), ojtutl.getSynReqId(),1, ojtutl.getUploadTaskType());
+    }
+
+    private void upOutId(OutJiasmToGreeUploadTaskList ojtutl) {
+        List<OrderInformation> upList = new ArrayList<>();
+        List<OrderInformation> detaillist = orderInformationService.lambdaQuery()
+                .eq(OrderInformation::getOrderBaseId, ojtutl.getOrderNo())
+                .orderByAsc(OrderInformation::getCreateTime).list();
+        // 找出为空的序
+        if (detaillist!=null && detaillist.size()>0){
+            for (OrderInformation ite:detaillist){
+                if (StringUtils.isEmpty(ite.getOutId())){
+                    OrderInformation n = new OrderInformation();
+                    n.setId(ite.getId());
+                    n.setOutId(UUID.randomUUID().toString());
+                    upList.add(n);
+                }
+            }
+            // 修改序
+            if (upList.size()>0){
+                orderInformationService.updateBatchById(upList);
+                upList.clear();
+            }
+            detaillist.clear();
+        }
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void generateAzMx(Brand brand, OutJiasmToGreeUploadTaskList ojtutl) {
+        OrderBase orderBase = orderBaseService.lambdaQuery()
+                .eq(OrderBase::getId, ojtutl.getOrderNo()).one();
+        // 提取工单机型数据
+        OrderProduct op = orderProductService.lambdaQuery()
+                .eq(OrderProduct::getId, ojtutl.getId()).one();
+        if (op==null){
+            throw new RemoteServiceException("order_product找不到记录id="+ojtutl.getId());
+        }
+        if (StringUtils.isEmpty(op.getPgguid())){
+            // 更新pgguid
+            upPgid(ojtutl, orderBase);
+            op.setPgguid(orderBase.getPgguid());
+        }
+        // 更新pgmxid
+        upPgmix(ojtutl, op);
+        // 生成数据
+        generateMx(brand, ojtutl, op,orderBase);
+        // 修改数据上传任务表中的状态 单号,id,同步状态,类型
+        publicService.updateUploadTaskListStatus(ojtutl.getOrderNo(), ojtutl.getSynReqId(),1, ojtutl.getUploadTaskType());
+    }
+
+    private void upPgmix(OutJiasmToGreeUploadTaskList ojtutl, OrderProduct op) {
+        OrderPar orderPar = new OrderPar();
+        orderPar.setOrderNo(ojtutl.getOrderNo());
+        orderPar.setPgid(UUID.randomUUID().toString());
+        orderPar.setId(op.getId());
+        getOrderProductMapper.upPgmxid(orderPar);
+        op.setPgmxid(orderPar.getPgid());
+    }
+
+    private void generateMx(Brand brand, OutJiasmToGreeUploadTaskList ojtutl, OrderProduct op,OrderBase orderBase) {
+        OrderPar orderPar = new OrderPar();
+        WebsitSH websitSH = new WebsitSH();
+
+        orderPar.setId(op.getId());
+        orderPar.setBrandId(brand.getBrandId());
+        orderPar.setId(op.getId());
+        orderPar.setOrderNo(ojtutl.getOrderNo());
+        ItfTblAzAssignMxUpload mx = getOrderProductMapper.getItfTblAzAssignMxUpload(orderPar);
+        if (mx.getDanw().length()>6){
+            mx.setDanw(mx.getDanw().substring(0,6));
+        }
+        // 服务单位处理 售后网点处理
+        websitSH = publicService.ptshwdToshshwd(orderBase.getReceWebsitId(), orderBase.getMainId());
+        mx.setCzwd(websitSH.getWdId());
+
+
+        mx.setWorkerOrderNo(op.getOrderBaseId());
+        itfTblAzAssignMxUploadService.save(mx);
+    }
+
+    private void upPgid(OutJiasmToGreeUploadTaskList ojtutl, OrderBase orderBase) {
+        // 更新pgguid
+        OrderPar orderPar = new OrderPar();
+        orderPar.setPgid(orderBase.getPgguid());
+        orderPar.setOrderNo(ojtutl.getOrderNo());
+        getOrderProductMapper.upPgguid(orderPar);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public  void getAppointment(OutJiasmToGreeUploadTaskList ojtutl) {
+        OrderBase orderBase = orderBaseService.lambdaQuery()
+                .eq(OrderBase::getId, ojtutl.getOrderNo()).one();
+        if (orderBase !=null ){
+            ReAppointment request = new ReAppointment();
+            request.setOrderNo(ojtutl.getOrderNo());
+            request.setId(ojtutl.getId());
+            ItfTblAzAssignAppointmentUpload add = reAppointmentOrderMapper.getReAppointment(request);
+            // 开始时间与结束时间 先取最大改约审核成功的,如无再取最大预约的
+            /*List<OrderReAppointment> recs = orderReAppointmentService.lambdaQuery()
+                    .eq(OrderReAppointment::getOrderBaseId,ojtutl.getOrderNo())
+                    .eq(OrderReAppointment::getFlag,0)
+                    .eq(OrderReAppointment::getExamineStatus,"OK")
+                    .orderByDesc(OrderReAppointment::getId).list();
+            if(CollectionUtils.isNotEmpty(recs)){
+                add.setKssj(recs.get(0).getNewAppointmentTime());
+                add.setJssj(recs.get(0).getNewAppointmentEndTime());
+            } else {
+                List<OrderReAppointment> rs = orderReAppointmentService.lambdaQuery()
+                        .eq(OrderReAppointment::getOrderBaseId,ojtutl.getOrderNo())
+                        .eq(OrderReAppointment::getFlag,1)
+                        .orderByDesc(OrderReAppointment::getId).list();
+                add.setKssj(recs.get(0).getOldAppointmentTime());
+                add.setJssj(recs.get(0).getOldAppointmentEndTime());
+            }*/
+
+            itfTblAzAssignAppointmentUploadService.save(add);
+        }
+
+        // 修改数据上传任务表中的状态 单号,id,同步状态,类型
+        publicService.updateUploadTaskListStatus(ojtutl.getOrderNo(), ojtutl.getSynReqId(),1, ojtutl.getUploadTaskType());
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void getFkmx(Brand brand, OutJiasmToGreeUploadTaskList ojtutl) {
+        OrderBase orderBase = orderBaseService.lambdaQuery()
+                .eq(OrderBase::getId, ojtutl.getOrderNo()).one();
+        if (orderBase !=null ){
+            // 修改fikd
+            OperatingLog request = new OperatingLog();
+            request.setFkid(UUID.randomUUID().toString());
+            request.setId(ojtutl.getId());
+            operatingLogOrderInstallMapper.upLogfkid(request);
+
+            // 修改pgguid
+            OperatingLog up = new OperatingLog();
+            up.setOrderNo(ojtutl.getOrderNo());
+            up.setPgguid(orderBase.getPgguid());
+            operatingLogOrderInstallMapper.upLogpgguid(up);
+
+            OperatingLog que = new OperatingLog();
+            que.setOrderNo(ojtutl.getOrderNo());
+            que.setId(ojtutl.getId());
+            ItfTblAzAssignFkmxUpload add = operatingLogOrderInstallMapper.getOperatingLog(que);
+            add.setUploadTaskSynReqId(ojtutl.getSynReqId());
+
+            // 反馈人取了网点编号需单独处理 fkren   网点编号+01
+            // 反馈网点编号 做同样处理
+            WebsitPP resultData = getPPWebsitInfo(add.getFkren(), orderBase);
+            add.setFkren(resultData.getWdno()+"01");
+            add.setXtwdbh(resultData.getXtwdno());
+            add.setWdno(resultData.getWdno());
+            add.setWdmc(resultData.getWdmc());
+            itfTblAzAssignFkmxUploadService.save(add);
+        }
+
+        // 修改数据上传任务表中的状态 单号,id,同步状态,类型
+        publicService.updateUploadTaskListStatus(ojtutl.getOrderNo(), ojtutl.getSynReqId(),1, ojtutl.getUploadTaskType());
+    }
+
+
+    private WebsitPP getPPWebsitInfo(String websitId, OrderBase orderBase){
+        WebsitPP resultData = new WebsitPP();
+        WebsitSH websitSH = new WebsitSH();
+
+        resultData.setXtwdno("");
+        resultData.setWdno("");
+        resultData.setWdmc("");
+
+        // 售后网点处理
+        websitSH = publicService.ptshwdToshshwd(websitId, orderBase.getMainId());
+        if (StringUtils.isEmpty(websitSH.getWdId())){
+            websitSH = publicService.ptxswdToshxswd(websitId, orderBase.getMainId());
+        }
+
+        resultData.setWdno(websitSH.getWdId());
+        resultData.setWdmc(websitSH.getWdmc());
+        resultData.setXtwdno(websitSH.getBrandSysWebsitNumber());
+
+        return resultData;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public boolean orderBaseInstall(Brand brand, OutJiasmToGreeUploadTaskList ojtutl, Map<String, List<SysDictRef>> CategoryRefmap) {
+        OrderBase orderBase = orderBaseService.lambdaQuery()
+                .eq(OrderBase::getId, ojtutl.getId()).one();
+
+        if (orderBase !=null ){
+            // 若工单被删除不再同步 不写生成数据
+
+            // 条件判断
+            if (!checkPare(ojtutl, orderBase)) {
+                return Boolean.FALSE;
+            }
+
+            // 安装工单产品信息,操作日志,完工明细,完工明细附件 以主表的pgguid统一修改
+            // 生成待同步的工单主表数据
+            ItfTblAzAssignLcLsUpload lcls = getItfTblAzAssignLcLsUpload(brand, ojtutl, orderBase);
+            // 1: 插入工单主表数据
+            if (!itfTblAzAssignLcLsUploadService.save(lcls)){
+                return Boolean.FALSE;
+            }
+
+            // 2 :生成安装辅材费用数据
+            if (!getFeeUpload(orderBase)){
+                return Boolean.FALSE;
+            }
+
+            //3 :生成采集数据 采集明细,采集附件,采集条码(及家用,商用、其他)
+            if (!generateCJData(brand, CategoryRefmap, orderBase, lcls)){
+                return Boolean.FALSE;
+            }
+
+            // 生成评价短信 只写一次
+            if (!getPJmessage(orderBase, lcls, brand)){
+                return Boolean.FALSE;
+            }
+        }
+
+        // 修改数据上传任务表中的状态   这里固定值 22
+        publicService.updateUploadTaskListStatus(ojtutl.getOrderNo(),ojtutl.getSynReqId(),1,22);
+
+        return Boolean.TRUE;
+    }
+
+    private Boolean getFeeUpload(OrderBase orderBase) {
+        // 根据辅材订单支付表存在支付时生成安装费用数据
+        List<OrderPayOutlayItem> pitems = orderPayOutlayItemService.lambdaQuery()
+                .eq(OrderPayOutlayItem::getOrderBaseId, orderBase.getId()).list();
+        if (pitems!=null && pitems.size()>0){
+            BigDecimal totalAmount=BigDecimal.ZERO;
+            for (OrderPayOutlayItem ps :pitems){
+                totalAmount = totalAmount.add(ps.getTotalAmount());
+            }
+
+            ItfTblAzAssignFeeUpload feeUpload = new ItfTblAzAssignFeeUpload();
+            // 从工单扩展表提取辅材信息
+            OrderInstall orderInstall =orderInstallService.lambdaQuery()
+                    .eq(OrderInstall::getOrderBaseId, orderBase.getId()).one();
+            if (orderInstall !=null){
+                feeUpload.setWorkerOrderNo(orderBase.getId());
+                feeUpload.setId(orderBase.getPgguid());
+                feeUpload.setCreatedBy("guangfo");
+                feeUpload.setCreatedDate(orderInstall.getCreateTime());
+                feeUpload.setLastModifiedBy("guangfo");
+                feeUpload.setLastModifiedDate(orderInstall.getUpdateTime());
+                feeUpload.setOtherfee(String.valueOf(totalAmount));
+                feeUpload.setTotalfee(String.valueOf(totalAmount));
+                feeUpload.setAjia(orderInstall.getBracket());
+                feeUpload.setJcguan(orderInstall.getPipe());
+                feeUpload.setKqkg(orderInstall.getSwithFlag());
+                feeUpload.setGkzy(orderInstall.getHighAltitude());
+                feeUpload.setYccxqk(orderInstall.getHole());
+                feeUpload.setFlbz(orderBase.getId());
+            } else {
+                feeUpload.setWorkerOrderNo(orderBase.getId());
+                feeUpload.setId(orderBase.getPgguid());
+                feeUpload.setCreatedBy("guangfo");
+                feeUpload.setCreatedDate(orderBase.getCreateTime());
+                feeUpload.setLastModifiedBy("guangfo");
+                feeUpload.setLastModifiedDate(orderBase.getUpdateTime());
+                feeUpload.setOtherfee(String.valueOf(totalAmount));
+                feeUpload.setTotalfee(String.valueOf(totalAmount));
+                feeUpload.setFlbz(orderBase.getId());
+            }
+            return itfTblAzAssignFeeUploadService.save(feeUpload);
+        }
+
+        return Boolean.TRUE;
+    }
+
+    private Boolean getPJmessage(OrderBase orderBase, ItfTblAzAssignLcLsUpload lcls,Brand brand) {
+        WebsitSH websitSH = new WebsitSH();
+
+        // 生成评价短信 不能写在产品中要写在表头,只写一次 派工状态为4(1304,1309与工单状态相同) 完工或已关闭的单
+        if ((orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G7.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G10.getCode())) &&
+                (orderBase.getDispatchStatus().equals(GDAppointStatusEnum.INSTALL_STATUS_A4_0.getCode()) ||
+                        orderBase.getDispatchStatus().equals(GDAppointStatusEnum.INSTALL_STATUS_A4_1.getCode()))) {
+            // 查看是否已发送 工单号,只能插入一次
+            ItfMessagehuifangentity message = itfMessagehuifangentityService.lambdaQuery()
+                    .eq(ItfMessagehuifangentity::getOrderBaseId, orderBase.getId()).one();
+
+            // 自建工单 这里可放在定时任务中执行,代码是不会走这里的
+            if (!orderBase.getUploadFlag()){
+                if (message == null){
+                    // 生成短信数据
+                    OrderPar orderPar = new OrderPar();
+                    orderPar.setBrandId(brand.getBrandId());
+                    orderPar.setOrderNo(orderBase.getId());
+                    ItfMessagehuifangentity addms = gdOrderBaseMapper.getAZItfMessagehuifangentity(orderPar);
+                    if (addms==null){
+                        return Boolean.TRUE;
+                    }
+                    // 售后网点处理 fjwd
+                    websitSH = publicService.ptshwdToshshwd(addms.getFjwd(), orderBase.getMainId());
+                    addms.setFjwd(websitSH.getWdId());
+
+                    String id = UUID.randomUUID().toString();
+                    if (id.length()>32){
+                        addms.setSynTaskNo(id.substring(0,32));
+                    } else {
+                        addms.setSynTaskNo(id);
+                    }
+                    addms.setFsma(publicService.getfsma(addms.getSjid()));
+                    addms.setFsnr("尊敬的用户:请对本次服务评价:满意回复1;一般回复2;不满意回复3。并注明原因!关注官微“格力售后服务”,为您提供更优质服务!");
+                    addms.setDxguid(UUID.randomUUID().toString());
+                    return publicService.addItfMessagehuifangentity(addms,orderBase.getOrderType(),6);
+                }
+            } else if ((orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G7.getCode()) ||
+                    orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G10.getCode())) &&
+                    !orderBase.getSaleType().equals("工程机"))  {
+                if (message == null){
+                    // 生成短信数据 sendtype (1=原总部接口发送,2=用联通的接口进行发送) 默认为1
+                    OrderPar orderPar = new OrderPar();
+                    orderPar.setBrandId(brand.getBrandId());
+                    orderPar.setOrderNo(orderBase.getId());
+                    ItfMessagehuifangentity addms = gdOrderBaseMapper.getAZItfMessagehuifangentityT(orderPar);
+                    if (addms==null){
+                        return Boolean.TRUE;
+                    }
+                    String id = UUID.randomUUID().toString();
+                    if (id.length()>32){
+                        addms.setSynTaskNo(id.substring(0,32));
+                    } else {
+                        addms.setSynTaskNo(id);
+                    }
+                    addms.setFsnr("尊敬的用户:请对本次服务评价:满意回复1;一般回复2;不满意回复3。并注明原因!关注官微“格力售后服务”,为您提供更优质服务!");
+                    addms.setFsma(publicService.getfsma(addms.getSjid()));
+                    return publicService.addItfMessagehuifangentity(addms,orderBase.getOrderType(),6);
+                }
+            }
+        }
+        return Boolean.TRUE;
+    }
+
+
+    private Boolean generateCJData(Brand brand, Map<String, List<SysDictRef>> CategoryRefmap, OrderBase orderBase, ItfTblAzAssignLcLsUpload lcls) {
+        // 工单状态order_status 6, 7, 9, 10 且为非预派工订单
+        if ((orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G6.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G7.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G9.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G10.getCode())) &&
+                orderBase.getIsReservation().equals(0)){
+            // 提取采集的数据
+            List<OrderInstallDetail> orderInstallDetails = orderInstallDetailService.lambdaQuery()
+                    .eq(OrderInstallDetail::getOrderBaseId, orderBase.getId())
+                    .orderByAsc(OrderInstallDetail::getId)
+                    .list();
+            Map<String, Integer> val = new HashMap<String,Integer>();
+            // 根据产品类别名称 生成不同的完工明细数据
+            String mainName = CategoryRefmap.get(orderBase.getMainId()).get(0).getRefDictName();
+
+            if (orderInstallDetails !=null && orderInstallDetails.size()>0){
+                for (OrderInstallDetail detail :orderInstallDetails){
+                    // 状态:3=临时保存;2=作废,1=已采集,0=未采集
+                    // 临时保存与未采集的记录不处理
+                    if (detail.getStatus().equals(0) || detail.getStatus().equals(3)){
+                        continue;
+                    }
+
+                    // 获取完工采集明细数据 (家用空调、商用空调、其他)
+                    getCJMXData(brand, CategoryRefmap, orderBase, lcls, detail,mainName);
+
+                    // 获取采集附件数据 (家用、商用、其他)
+                    getcjfjdata(orderBase, detail, mainName);
+
+                    // 生成条码明细数据
+                    getDetailCode(orderBase, detail, mainName);
+                }
+            }
+        }
+
+        return Boolean.TRUE;
+    }
+
+    private void getDetailCode(OrderBase orderBase, OrderInstallDetail detail, String mainName) {
+        String oldFile ="";
+        String newFile ="";
+
+        // 获取条码采集明细id
+        InstalDetailCode instalDetailCode = new InstalDetailCode();
+        instalDetailCode.setOrderNo(detail.getOrderBaseId());
+        instalDetailCode.setId(detail.getId());
+        List<OrderInstallDetailCode> codes = codeOrderInstallDetailMapper.getId(instalDetailCode);
+        // 处理条码明细
+        for (OrderInstallDetailCode code :codes){
+            if (StringUtils.isEmpty(code.getPath())){
+                continue;
+            }
+            if (StringUtils.isEmpty(code.getGreeImageId())){
+                // 上传图片
+                if (!uploadImage(orderBase, code)) {
+                    continue;
+                }
+            }
+
+            if (StringUtils.isEmpty(code.getTmguid())){
+                OrderInstallDetailCode upCode = new OrderInstallDetailCode();
+                upCode.setId(code.getId());
+                upCode.setTmguid(UUID.randomUUID().toString());
+                orderInstallDetailCodeService.updateById(upCode);
+            }
+            // 采集明细表中取pgwcmxid
+            OrderInstallDetail orderInstallDetail = orderInstallDetailService.lambdaQuery()
+                    .eq(OrderInstallDetail::getOrderBaseId,code.getOrderBaseId())
+                    .eq(OrderInstallDetail::getId,code.getOrderDetailId()).one();
+            if (orderInstallDetail == null || StringUtils.isEmpty(orderInstallDetail.getPgwcmxid())){
+                continue;
+            } else {
+                OrderInstallDetailCode upCode = new OrderInstallDetailCode();
+                upCode.setId(code.getId());
+                upCode.setPgwcmxid(orderInstallDetail.getPgwcmxid());
+                orderInstallDetailCodeService.updateById(upCode);
+            }
+
+            // 生成采集条码表数据
+            generateDetailCode(orderBase, code, mainName);
+        }
+    }
+
+    private boolean uploadImage(OrderBase orderBase, OrderInstallDetailCode code) {
+        String oldFile;
+        String newFile;
+        oldFile = IdWorker.getIdStr() + ".jpeg";
+
+        baseService.saveToFile(ossUtil.getUrlWw(code.getPath()),oldFile);
+        // 获取文件
+        newFile = oldFile;
+        WebsitFWS websitFWS = publicService.shshwdToptshwd(orderBase.getWebsitId(),orderBase);
+
+        Boolean flag = uploadBarCodeexc(newFile, oldFile,websitFWS.getWebsitId(), code);
+        new File(newFile).delete();
+        if (!flag) {
+            return Boolean.FALSE;
+        }
+        return Boolean.TRUE;
+    }
+
+    private void generateDetailCode(OrderBase orderBase, OrderInstallDetailCode code, String mainName) {
+        // 采集条码表中的pgguid 统一改成工单基础表的pgguid
+        InstalDetailCode upcode = new InstalDetailCode();
+        upcode.setOrderNo(code.getOrderBaseId());
+        upcode.setPgguId(orderBase.getPgguid());
+        codeOrderInstallDetailMapper.updateCodePgguid(upcode);
+
+        InstalDetailCode codep = new InstalDetailCode();
+        codep.setOrderNo(code.getOrderBaseId());
+        codep.setId(code.getId());
+
+        if (mainName.equals("家用空调") ||
+                mainName.equals("家用空气能热水器") ||
+                mainName.equals("驻车空调")) {
+            // 家用空调 完工明细 数据生成(完工采集条码数据)
+            ItfTblAzWgmxJyktTmmxUpload jy = codeOrderInstallDetailMapper.getJyCode(codep);
+            if (jy != null){
+                itfTblAzWgmxJyktTmmxUploadService.save(jy);
+            }
+        } else if (mainName.equals("商用空调")){
+            // 家用空调 完工明细 数据生成(完工采集条码数据)
+            ItfTblAzWgmxSyktTmmxLsUpload sy = codeOrderInstallDetailMapper.getSyCode(codep);
+            if (sy != null){
+                itfTblAzWgmxSyktTmmxLsUploadService.save(sy);
+            }
+        } else {
+            ItfTblAzWgmxQitaTmmxUpload other = codeOrderInstallDetailMapper.getOtherCode(codep);
+            if (other != null){
+                itfTblAzWgmxQitaTmmxUploadService.save(other);
+            }
+        }
+    }
+
+    @Nullable
+    private void getCJMXData(Brand brand, Map<String, List<SysDictRef>> CategoryRefmap, OrderBase orderBase,
+                             ItfTblAzAssignLcLsUpload lcls, OrderInstallDetail detail,String mainName) {
+        // 修改采集明细的序 pgwcmxid 生成格力总部-采集明细序号
+        if (StringUtils.isEmpty(detail.getPgwcmxid())){
+            upCerrentRec(detail);
+        }
+        // 采集表中的pgguid 统一改成工单基础表的pgguid
+        upInstallDetailPgguid(orderBase);
+
+        // 采集表与采集条码表ID超范围 - 采集表及采集明细表中的outid统一修改
+        upOutId(detail);
+
+
+        // 采集标志 1100:保存,1110:作废,1120:转结算
+        Integer cjstat = 1100;
+
+        if (orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G7.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G10.getCode())){
+            cjstat = 1120;
+        }
+        if (detail.getStatus().equals(2)){
+            cjstat = 1110;
+        }
+
+        InstallDetail request = new InstallDetail();
+        request.setOrderNo(detail.getOrderBaseId());
+        request.setId(detail.getId());
+        request.setBrandId(brand.getBrandId());
+        // 为空时为 家用空调
+        if (StringUtils.isEmpty(mainName) ||
+                mainName.equals("家用空调") || mainName.equals("家用空气能热水器") || mainName.equals("驻车空调")){
+            // 家用空调 完工明细 数据生成(完工采集数据)
+            ItfTblAzWgmxJyktUpload mxup = detailOrderInstallMapper.getOrderInstallUpload(request);
+            if (mxup != null){
+                // 部分参数单独处理
+                setParm(brand, orderBase, lcls, cjstat, mxup, detail);
+                itfTblAzWgmxJyktUploadService.save(mxup);
+            }
+        } else if (mainName.equals("商用空调")){
+            // 商用空调 完工明细数据生成(完工采集数据)
+            ItfTblAzWgmxSyktUpload mxup = detailOrderInstallMapper.getSyOrderInstallUpload(request);
+            if (mxup != null){
+                // 部分参数单独处理
+                setSyParm(orderBase, lcls, cjstat, mxup, detail, brand);
+                itfTblAzWgmxSyktUploadService.save(mxup);
+            }
+        } else {
+            // 其他 完工明细数据生成
+            // 获取家用空调完工明细(完工采集数据)
+            ItfTblAzWgmxQitaUpload mxup = detailOrderInstallMapper.getOtherOrderInstallUpload(request);
+            if (mxup != null){
+                // 部分参数单独处理
+                setOtherParm(orderBase, lcls, cjstat, mxup, detail, brand);
+                itfTblAzWgmxQitaUploadService.save(mxup);
+            }
+        }
+    }
+
+    private void upOutId(OrderInstallDetail detail) {
+        List<OrderInstallDetail> upList = new ArrayList<>();
+        List<OrderInstallDetail> detaillist = orderInstallDetailService.lambdaQuery()
+                .eq(OrderInstallDetail::getOrderBaseId, detail.getOrderBaseId())
+                .orderByAsc(OrderInstallDetail::getCreateTime).list();
+        // 找出最大的序 默认值为0
+        int outId=0;
+        if (detaillist!=null && detaillist.size()>0){
+            for (OrderInstallDetail item:detaillist){
+                if (outId<item.getOutId()){
+                    outId = item.getOutId();
+                }
+            }
+            for (OrderInstallDetail ite:detaillist){
+                if (ite.getOutId() == 0){
+                    outId++;
+                    OrderInstallDetail n = new OrderInstallDetail();
+                    n.setId(ite.getId());
+                    n.setOutId(outId);
+                    upList.add(n);
+                }
+            }
+            // 修改序
+            if (upList.size()>0){
+                orderInstallDetailService.updateBatchById(upList);
+                upList.clear();
+            }
+
+            detaillist.clear();
+        }
+
+        // 采集条码码 outid统一修改
+        // 采集表与采集条码表ID超范围 - 采集表及采集明细表中的outid统一修改
+        List<OrderInstallDetailCode> codelist = orderInstallDetailCodeService.lambdaQuery()
+                .eq(OrderInstallDetailCode::getOrderBaseId, detail.getOrderBaseId())
+                .eq(OrderInstallDetailCode::getOutId,0).list();
+        if (codelist!=null && codelist.size()>0){
+            InstalDetailCode codep = new InstalDetailCode();
+            codep.setOrderNo(detail.getOrderBaseId());
+            codeOrderInstallDetailMapper.updateCodeOutId(codep);
+        }
+    }
+
+    // 处理附件采集数据上传
+    public Boolean getcjfjdata(OrderBase orderBase, OrderInstallDetail detail, String mainName) {
+        String oldFile ="";
+        String newFile ="";
+
+        // 附件上传总部标识判断
+        if (orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G7.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G10.getCode())){
+            // 安装工单采集附件表提取数据
+            InstallCJDetailFile installCJDetailFile = new InstallCJDetailFile();
+            installCJDetailFile.setOrderNo(detail.getOrderBaseId());
+            installCJDetailFile.setId(detail.getId());
+            List<OrderDetailFile> detailFiles = fileOrderDetailMapper.getId(installCJDetailFile);
+            for (OrderDetailFile file:detailFiles){
+                // 工单号, file的id即附件表的id,uuid统一值
+                // path未准备上传被忽略
+                if (StringUtils.isEmpty(file.getFilePath())){
+                    continue;
+                }
+                // 品牌方fileindex未获取上传被忽略
+                if (StringUtils.isEmpty(file.getBrandFilePath())){
+                    // 上传图片
+                    oldFile = IdWorker.getIdStr() + ".jpeg";
+                    baseService.saveToFile(ossUtil.getUrlWw(file.getFilePath()),oldFile);
+                    // 获取文件
+                    newFile = oldFile;
+                    WebsitFWS websitFWS = publicService.shshwdToptshwd(orderBase.getWebsitId(),orderBase);
+                    Boolean flag = uploadFileexc(newFile, oldFile,websitFWS.getWebsitId(), file);
+                    new File(newFile).delete();
+                    if (!flag) {
+                        continue;
+                    }
+                }
+                // 提取获取采集明细表数据中获取pgwcmxid(生成格力总部-采集明细序号)
+                OrderInstallDetail detailone = orderInstallDetailService.lambdaQuery()
+                        .eq(OrderInstallDetail::getOrderBaseId,file.getOrderBaseId())
+                        .eq(OrderInstallDetail::getId,file.getOrderDetailId()).one();
+
+                // 获取完工明细数据(采集附件表) 家用、商用、其他
+                getwgmxData(mainName, file, detailone);
+            }
+        }
+
+        return Boolean.TRUE;
+    }
+
+    private void getSaveFileInfo(String id1, ResultData resultData, Map<String, String> req) {
+        req.put("bizAppId","flydiy-auto-sit-default-front-greeshmerge");
+        req.put("bizTable","default");
+        req.put("bizType","default");
+        req.put("accessType","auth");
+        req.put("url", resultData.getExtData().getDir());
+        req.put("name", id1 +".jpeg");
+    }
+
+    private Boolean uploadFileexc(String newFile, String oldFile,String wdno,OrderDetailFile file) {
+        try{
+            // 1: 获取签名信息
+            GreeFileResponseHelper response =  greeLogic.ossGetSignt(wdno,"GET");
+            if (response.getStatusCode() == 200){
+                ResultData resultData = JSONObject.parseObject(response.getData().toString(), ResultData.class);
+                resultData.getExtData().setDir(resultData.getExtData().getDir()+"/"+oldFile);
+                // 2:文件上传
+                PostObjectSample ossPostObject = new PostObjectSample();
+                String result = ossPostObject.PostObject(newFile, resultData.getExtData());
+                // 3: 保存文件
+                if (org.apache.commons.lang3.StringUtils.isEmpty(result.trim())){
+                    Map<String,String>req = new HashMap<>();
+                    // 生成对象
+                    getSaveFileInfo(oldFile, resultData, req);
+                    GreeFileSaveHelper responses = greeLogic.greePostSaveFile(req);
+
+                    if (responses.getStatusCode() == 200){
+                        file.setBrandFilePath(responses.getData().getId());
+                        orderDetailFileService.updateById(file);
+                    } else {
+                        // 失败
+                        return Boolean.FALSE;
+                    }
+                } else {
+                    // 上传图片到OSS失败
+                    return Boolean.FALSE;
+                }
+            } else {
+                //  获取签名信息失败
+                return Boolean.FALSE;
+            }
+            return Boolean.TRUE;
+        } catch (Exception ex) {
+            return Boolean.FALSE;
+        }
+    }
+
+    private Boolean uploadBarCodeexc(String newFile, String oldFile,String wdno,OrderInstallDetailCode code) {
+        try{
+            // 1: 获取签名信息
+            GreeFileResponseHelper response =  greeLogic.ossGetSignt(wdno,"GET");
+            if (response.getStatusCode() == 200){
+                ResultData resultData = JSONObject.parseObject(response.getData().toString(), ResultData.class);
+                resultData.getExtData().setDir(resultData.getExtData().getDir()+"/"+oldFile);
+                // 2:文件上传
+                PostObjectSample ossPostObject = new PostObjectSample();
+                String result = ossPostObject.PostObject(newFile, resultData.getExtData());
+                // 3: 保存文件
+                if (org.apache.commons.lang3.StringUtils.isEmpty(result.trim())){
+                    Map<String,String>req = new HashMap<>();
+                    // 生成对象
+                    getSaveFileInfo(oldFile, resultData, req);
+                    GreeFileSaveHelper responses = greeLogic.greePostSaveFile(req);
+
+                    if (responses.getStatusCode() == 200){
+                        code.setGreeImageId(responses.getData().getId());
+                        codeOrderInstallDetailMapper.updateById(code);
+                    } else {
+                        // 失败
+                        return Boolean.FALSE;
+                    }
+                } else {
+                    // 上传图片到OSS失败
+                    return Boolean.FALSE;
+                }
+            } else {
+                //  获取签名信息失败
+                return Boolean.FALSE;
+            }
+            return Boolean.TRUE;
+        } catch (Exception ex) {
+            return Boolean.FALSE;
+        }
+    }
+
+    public void getwgmxData(String mainName, OrderDetailFile file, OrderInstallDetail detailone) {
+        // 修改附件的pgwcmxid
+        if (detailone != null){
+            OrderDetailFile upf = new OrderDetailFile();
+            upf.setId(file.getId());
+            upf.setPgwcmxid(detailone.getPgwcmxid());
+            orderDetailFileService.updateById(upf);
+        }
+        // 采集附件表中的pgguid 统一改成工单基础表的pgguid 可以不用,从主表取即可 无pgguid字段
+        /*InstallCJDetailFile upfile = new InstallCJDetailFile();
+        upfile.setOrderNo(file.getOrderBaseId());
+        upfile.setPgguId(orderBase.getPgguid());
+        fileOrderDetailMapper.updateFilePgguid(upfile);*/
+
+
+        // 修改附件的fjguid
+        if (detailone != null && StringUtils.isEmpty(file.getFjguid())){
+            OrderDetailFile upf = new OrderDetailFile();
+            upf.setId(file.getId());
+            upf.setFjguid(UUID.randomUUID().toString());
+            orderDetailFileService.updateById(upf);
+        }
+
+        InstallCJDetailFile request = new InstallCJDetailFile();
+        request.setOrderNo(file.getOrderBaseId());
+        request.setId(file.getId());
+
+        // 生成家用空调 数据采集附件上传记录
+        if (mainName.equals("家用空调") ||
+                mainName.equals("家用空气能热水器") ||
+                mainName.equals("驻车空调")){
+            // 家用空调 完工明细 数据生成
+            ItfTblAzWgmxJyktFjUpload jyktfj = fileOrderDetailMapper.getFileUpload(request);
+            if (jyktfj !=null){
+                itfTblAzWgmxJyktFjUploadService.save(jyktfj);
+            }
+        } else if (mainName.equals("商用空调")){
+            // 商用空调 完工明细 数据生成
+            ItfTblAzWgmxSyktFjUpload syktfj = fileOrderDetailMapper.getSyFileUpload(request);
+            if (syktfj !=null){
+                itfTblAzWgmxSyktFjUploadService.save(syktfj);
+            }
+        } else {
+            // 其他 完工明细 数据生成
+            ItfTblAzWgmxQitaFjUpload otherfj = fileOrderDetailMapper.getOtherFileUpload(request);
+            if (otherfj != null){
+                itfTblAzWgmxQitaFjUploadService.save(otherfj);
+            }
+        }
+    }
+
+    private void upItfTblazwgmxqitafj(OrderDetailFile file, String taskno) {
+        InstallDetail req = new InstallDetail();
+        req.setOrderNo(file.getOrderBaseId());
+        req.setId(taskno);
+        itfTblazwgmxqitafjCJMapper.updateType(req);
+        itfTblazwgmxqitafjCJMapper.updateType1(req);
+        itfTblazwgmxqitafjCJMapper.updateType2(req);
+    }
+
+    private Boolean saveItfTblazwgmxqitafj(String taskno, ItfTblAzWgmxQitaFjUpload otherfj) {
+        ItfTblazwgmxqitafj fj = new ItfTblazwgmxqitafj();
+        MyBeanUtils.copyProperties(otherfj,fj);
+        fj.setSynTaskNo(taskno);
+        fj.setId(otherfj.getFjguid());
+        return itfTblazwgmxqitafjService.save(fj);
+    }
+
+    private Boolean getItfTblazwgmxsyktfj(String taskno, ItfTblAzWgmxSyktFjUpload syktfj) {
+        ItfTblazwgmxsyktfj fj = new ItfTblazwgmxsyktfj();
+        MyBeanUtils.copyProperties(syktfj,fj);
+        fj.setSynTaskNo(taskno);
+        fj.setId(syktfj.getFjguid());
+        fj.setRelationid(syktfj.getPgwcmxid());
+        return itfTblazwgmxsyktfjService.save(fj);
+    }
+
+    private Boolean processItfTblazwgmxjyktfj(String mainName, OrderDetailFile file, String taskno, ItfTblAzWgmxJyktFjUpload jyktfj) {
+        if (! getItfTblazwgmxjyktfj(taskno, jyktfj)){
+            return Boolean.FALSE;
+        }
+        // 空气能热水器转换图片类型
+        // 原内机其他4 ,改为 12,原上墙改为12,且fjindex=2 原外机其他改为13选填图片
+        if (mainName.equals("家用空气能热水器")){
+            // 修改
+            modifyItfTblazwgmxjyktfj(file, taskno);
+        }
+        return Boolean.TRUE;
+    }
+
+    private void modifyItfTblazwgmxjyktfj(OrderDetailFile file, String taskno) {
+        InstallDetail req = new InstallDetail();
+        req.setOrderNo(file.getOrderBaseId());
+        req.setId(taskno);
+        itfTblazwgmxjyktfjCJMapper.updateType(req);
+        itfTblazwgmxjyktfjCJMapper.updateType1(req);
+        itfTblazwgmxjyktfjCJMapper.updateType2(req);
+        itfTblazwgmxjyktfjCJMapper.updateType3(req);
+        itfTblazwgmxjyktfjCJMapper.updateType4(req);
+        itfTblazwgmxjyktfjCJMapper.updateType5(req);
+    }
+
+    private Boolean getItfTblazwgmxjyktfj(String taskno, ItfTblAzWgmxJyktFjUpload jyktfj) {
+        ItfTblazwgmxjyktfj fj = new ItfTblazwgmxjyktfj();
+        MyBeanUtils.copyProperties(jyktfj,fj);
+        fj.setSynTaskNo(taskno);
+        fj.setId(jyktfj.getFjguid());
+        return itfTblazwgmxjyktfjService.save(fj);
+    }
+
+    private void setParm(Brand brand, OrderBase orderBase, ItfTblAzAssignLcLsUpload lcls, Integer cjstat,
+                         ItfTblAzWgmxJyktUpload mxup, OrderInstallDetail detail) {
+        WebsitSH websitSH = new WebsitSH();
+
+        setJysWdno(orderBase, mxup);
+        mxup.setCjren(orderBase.getCreateBy());
+        mxup.setCjrmc(orderBase.getCreateName());
+        // 售后网点处理
+        websitSH = publicService.ptshwdToshshwd(mxup.getCzwd(), orderBase.getMainId());
+        mxup.setCzwd(websitSH.getWdId());
+
+        // 提取安装师傅的账号信息
+        mxup.setAzrenid(publicService.getBrandWorkerId(orderBase.getWorkerId(),websitSH.getWdId(),brand.getBrandId(),orderBase.getWebsitId()));
+
+        mxup.setStat(cjstat);
+        if (cjstat.equals("1120")){
+            if (orderBase.getOverTime()!=null){
+                mxup.setWcsj(orderBase.getOverTime());
+            } else {
+                mxup.setWcsj(mxup.getLastModifiedDate());
+            }
+        }
+        mxup.setAzwdno(lcls.getAzwdno());
+        mxup.setAzwdmc(lcls.getAzwdmc());
+        mxup.setAzwdxtbh(lcls.getAzwdxtbh());
+        if (StringUtils.isEmpty(mxup.getSjcjgps())){
+            if (orderBase.getAddress().length()>140){
+                mxup.setSjcjgps(orderBase.getAddress().substring(0,140));
+            } else {
+                mxup.setSjcjgps(orderBase.getAddress());
+            }
+        }
+        mxup.setGmsj(orderBase.getBuyTime());
+        mxup.setCjwdno(mxup.getAzwdno());
+        mxup.setZjczwd(mxup.getAzwdno());
+        if (StringUtils.isNotEmpty(orderBase.getLat()) && orderBase.getLat().length()>12){
+            mxup.setSjcjjd(orderBase.getLat().substring(0,12));
+        }
+        if (StringUtils.isNotEmpty(orderBase.getLng()) && orderBase.getLng().length()>12){
+            mxup.setSjcjwd(orderBase.getLng().substring(0,12));
+        }
+        mxup.setSjcjjwdu(mxup.getSjcjjd()+","+ mxup.getSjcjwd());
+
+        // 网点维修工ID单独处理
+        // 先找出网点编号对应的品牌商网点编号
+        // 先从售后网点查
+        websitSH = publicService.ptshwdToshshwd(detail.getWebsitId(), orderBase.getMainId());
+        if (StringUtils.isEmpty(websitSH.getWdId())){
+            websitSH = publicService.ptxswdToshxswd(detail.getWebsitId(), orderBase.getMainId());
+        }
+
+        ItfTblWangdianWxgDownload wxg = itfTblWangdianWxgDownloadService.lambdaQuery()
+                .eq(ItfTblWangdianWxgDownload::getSfzen,mxup.getAzrenid())
+                .eq(ItfTblWangdianWxgDownload::getWdno,websitSH.getWdId()).one();
+
+        if (wxg !=null){
+            mxup.setAzrenid(wxg.getWxgid());
+        }
+
+    }
+
+    private void setOtherParm(OrderBase orderBase, ItfTblAzAssignLcLsUpload lcls, Integer cjstat,
+                              ItfTblAzWgmxQitaUpload mxup, OrderInstallDetail detail, Brand brand) {
+        WebsitSH websitSH = new WebsitSH();
+
+        setOtherWdno(orderBase, mxup);
+        mxup.setCjren(orderBase.getCreateBy());
+        mxup.setCjrmc(orderBase.getCreateName());
+        // 售后网点处理
+        websitSH = publicService.ptshwdToshshwd(mxup.getCzwd(), orderBase.getMainId());
+        mxup.setCzwd(websitSH.getWdId());
+
+        // 提取安装师傅的账号信息
+        mxup.setAzrenid(publicService.getBrandWorkerId(orderBase.getWorkerId(),websitSH.getWdId(),brand.getBrandId(),orderBase.getWebsitId()));
+
+        mxup.setStat(cjstat);
+        if (cjstat.equals("1120")){
+            if (orderBase.getOverTime()!=null){
+                mxup.setWcsj(orderBase.getOverTime());
+            } else {
+                mxup.setWcsj(mxup.getLastModifiedDate());
+            }
+        }
+        mxup.setAzwdno(lcls.getAzwdno());
+        mxup.setAzwdmc(lcls.getAzwdmc());
+        mxup.setAzwdxtbh(lcls.getAzwdxtbh());
+        if (StringUtils.isEmpty(mxup.getSjcjgps())){
+            if (orderBase.getAddress().length()>140){
+                mxup.setSjcjgps(orderBase.getAddress().substring(0,140));
+            } else {
+                mxup.setSjcjgps(orderBase.getAddress());
+            }
+        }
+        mxup.setGmsj(orderBase.getBuyTime());
+        mxup.setCjwdno(mxup.getAzwdno());
+        mxup.setZjczwd(mxup.getAzwdno());
+        if (StringUtils.isNotEmpty(orderBase.getLat()) && orderBase.getLat().length()>12){
+            mxup.setSjcjjd(orderBase.getLat().substring(0,12));
+        }
+        if (StringUtils.isNotEmpty(orderBase.getLng()) && orderBase.getLng().length()>12){
+            mxup.setSjcjwd(orderBase.getLng().substring(0,12));
+        }
+        mxup.setSjcjjwdu(mxup.getSjcjjd()+","+ mxup.getSjcjwd());
+
+        // 网点维修工ID单独处理
+        // 先找出网点编号对应的品牌商网点编号
+        // 先从售后网点查
+        websitSH = publicService.ptshwdToshshwd(detail.getWebsitId(), orderBase.getMainId());
+        if (StringUtils.isEmpty(websitSH.getWdId())){
+            websitSH = publicService.ptxswdToshxswd(detail.getWebsitId(), orderBase.getMainId());
+        }
+
+        ItfTblWangdianWxgDownload wxg = itfTblWangdianWxgDownloadService.lambdaQuery()
+                .eq(ItfTblWangdianWxgDownload::getSfzen,mxup.getAzrenid())
+                .eq(ItfTblWangdianWxgDownload::getWdno,websitSH.getWdId()).one();
+
+        if (wxg !=null){
+            mxup.setAzrenid(wxg.getWxgid());
+        }
+
+    }
+
+    private void setSyParm(OrderBase orderBase, ItfTblAzAssignLcLsUpload lcls, Integer cjstat,
+                           ItfTblAzWgmxSyktUpload mxup, OrderInstallDetail detail, Brand brand) {
+        WebsitSH websitSH = new WebsitSH();
+
+        setSyWdno(orderBase, mxup);
+        mxup.setCjren(orderBase.getCreateBy());
+        mxup.setCjrmc(orderBase.getCreateName());
+
+        // 售后网点处理
+        websitSH = publicService.ptshwdToshshwd(mxup.getCzwd(), orderBase.getMainId());
+        mxup.setCzwd(websitSH.getWdId());
+
+        // 提取安装师傅的账号信息
+        mxup.setAzrenid(publicService.getBrandWorkerId(orderBase.getWorkerId(),websitSH.getWdId(),brand.getBrandId(),orderBase.getWebsitId()));
+
+        mxup.setStat(cjstat);
+        if (cjstat.equals("1120")){
+            if (orderBase.getOverTime()!=null){
+                mxup.setWcsj(orderBase.getOverTime());
+            } else {
+                mxup.setWcsj(mxup.getLastModifiedDate());
+            }
+        }
+        mxup.setAzwdno(lcls.getAzwdno());
+        mxup.setAzwdmc(lcls.getAzwdmc());
+        mxup.setAzwdxtbh(lcls.getAzwdxtbh());
+        if (StringUtils.isEmpty(mxup.getSjcjgps())){
+            if (orderBase.getAddress().length()>140){
+                mxup.setSjcjgps(orderBase.getAddress().substring(0,140));
+            } else {
+                mxup.setSjcjgps(orderBase.getAddress());
+            }
+        }
+        mxup.setGmsj(orderBase.getBuyTime());
+        mxup.setCjwdno(mxup.getAzwdno());
+        mxup.setZjczwd(mxup.getAzwdno());
+        if (StringUtils.isNotEmpty(orderBase.getLat()) && orderBase.getLat().length()>12){
+            mxup.setSjcjjd(orderBase.getLat().substring(0,12));
+        }
+        if (StringUtils.isNotEmpty(orderBase.getLng()) && orderBase.getLng().length()>12){
+            mxup.setSjcjwd(orderBase.getLng().substring(0,12));
+        }
+        mxup.setSjcjjwdu(mxup.getSjcjjd()+","+ mxup.getSjcjwd());
+
+        // 网点维修工ID单独处理
+        // 先找出网点编号对应的品牌商网点编号
+        // 先从售后网点查
+        websitSH = publicService.ptshwdToshshwd(detail.getWebsitId(), orderBase.getMainId());
+        if (StringUtils.isEmpty(websitSH.getWdId())){
+            websitSH = publicService.ptxswdToshxswd(detail.getWebsitId(), orderBase.getMainId());
+        }
+
+        ItfTblWangdianWxgDownload wxg = itfTblWangdianWxgDownloadService.lambdaQuery()
+                .eq(ItfTblWangdianWxgDownload::getSfzen,mxup.getAzrenid())
+                .eq(ItfTblWangdianWxgDownload::getWdno,websitSH.getWdId()).one();
+
+        if (wxg !=null){
+            mxup.setAzrenid(wxg.getWxgid());
+        }
+
+    }
+
+    private void setJysWdno(OrderBase orderBase, ItfTblAzWgmxJyktUpload mxup) {
+        WebsitSH websitSH = new WebsitSH();
+
+        // 先从售后网点查
+        websitSH = publicService.ptshwdToshshwd(mxup.getZjczwdxtbh(), orderBase.getMainId());
+        if (StringUtils.isEmpty(websitSH.getWdId())){
+            websitSH = publicService.ptxswdToshxswd(mxup.getZjczwdxtbh(), orderBase.getMainId());
+        } else {
+            mxup.setJsdwxtbh(websitSH.getBrandSysWebsitNumber());
+        }
+        mxup.setZjczwdxtbh(websitSH.getBrandSysWebsitNumber());
+    }
+
+    private void setSyWdno(OrderBase orderBase, ItfTblAzWgmxSyktUpload mxup) {
+        WebsitSH websitSH = new WebsitSH();
+
+        // 先从售后网点查
+        websitSH = publicService.ptshwdToshshwd(mxup.getZjczwdxtbh(), orderBase.getMainId());
+        if (StringUtils.isEmpty(websitSH.getWdId())){
+            websitSH = publicService.ptxswdToshxswd(mxup.getZjczwdxtbh(), orderBase.getMainId());
+        } else {
+            mxup.setJsdwxtbh(websitSH.getBrandSysWebsitNumber());
+        }
+        mxup.setZjczwdxtbh(websitSH.getBrandSysWebsitNumber());
+    }
+
+    private void setOtherWdno(OrderBase orderBase, ItfTblAzWgmxQitaUpload mxup) {
+        WebsitSH websitSH = new WebsitSH();
+
+        // 先从售后网点查
+        websitSH = publicService.ptshwdToshshwd(mxup.getZjczwdxtbh(), orderBase.getMainId());
+        if (StringUtils.isEmpty(websitSH.getWdId())){
+            websitSH = publicService.ptxswdToshxswd(mxup.getZjczwdxtbh(), orderBase.getMainId());
+        } else {
+            mxup.setJsdwxtbh(websitSH.getBrandSysWebsitNumber());
+        }
+        mxup.setZjczwdxtbh(websitSH.getBrandSysWebsitNumber());
+    }
+
+    public void upInstallDetailPgguid(OrderBase orderBase) {
+        InstallDetail installDetail = new InstallDetail();
+        installDetail.setOrderNo(orderBase.getId());
+        installDetail.setPgguId(orderBase.getPgguid());
+        detailOrderInstallMapper.installUpdatePgguid(installDetail);
+    }
+
+    public void upCerrentRec(OrderInstallDetail detail) {
+        OrderInstallDetail updetail = new OrderInstallDetail();
+        updetail.setId(detail.getId());
+        updetail.setPgwcmxid(UUID.randomUUID().toString());
+        orderInstallDetailService.updateById(updetail);
+    }
+
+    @NotNull
+    private ItfTblAzAssignLcLsUpload getItfTblAzAssignLcLsUpload(@NotNull Brand brand, OutJiasmToGreeUploadTaskList ojtutl,
+                                                                 OrderBase orderBase) {
+        WebsitSH websitSH = new WebsitSH();
+        OrderPar orderPar = new OrderPar();
+        orderPar.setBrandId(brand.getBrandId());
+        orderPar.setOrderNo(ojtutl.getId());
+        ItfTblAzAssignLcLsUpload lcls = gdOrderBaseMapper.getAzOrderBase(orderPar);
+        lcls.setUploadTaskSynReqId(ojtutl.getSynReqId());
+
+        // 销售单位处理 xsdwno
+        websitSH = publicService.ptxswdToshxswd(lcls.getXsdwno(), orderBase.getMainId());
+        lcls.setXsdwno(websitSH.getWdId());
+        lcls.setXswdmc(websitSH.getWdmc());
+        lcls.setXsdwxtbh(websitSH.getBrandSysWebsitNumber());
+        lcls.setServicewdno(websitSH.getWdId());
+        lcls.setShopno(websitSH.getWdId());
+        lcls.setShopname(websitSH.getWdmc());
+
+
+        // 售后网点处理
+        websitSH = publicService.ptshwdToshshwd(lcls.getAzwdno(), orderBase.getMainId());
+        lcls.setAzwdno(websitSH.getWdId());
+        lcls.setAzwdmc(websitSH.getWdmc());
+        lcls.setAzwdxtbh(websitSH.getBrandSysWebsitNumber());
+        lcls.setCjwdno(websitSH.getWdId());
+        lcls.setCjwdxtbh(websitSH.getBrandSysWebsitNumber());
+        lcls.setZjczwd(websitSH.getWdId());
+        lcls.setZjczwdxtbh(websitSH.getBrandSysWebsitNumber());
+        // 提取安装师傅的账号信息
+        lcls.setAzrenid(publicService.getBrandWorkerId(orderBase.getWorkerId(),websitSH.getWdId(),brand.getBrandId(),orderBase.getWebsitId()));
+
+        // 接收派工网点也可认为是售后网点处理
+        lcls.setJspgwdno(websitSH.getWdId());
+        lcls.setJspgwdmc(websitSH.getWdmc());
+        lcls.setJspgwdxtbh(websitSH.getBrandSysWebsitNumber());
+        // 所属区域处理
+        BrandWebsit bb = brandWebsitService.lambdaQuery()
+                .eq(BrandWebsit::getGroupCompanyId,brand.getBrandId())
+                .eq(BrandWebsit::getBrandWebsitNumber,lcls.getJspgwdno()).one();
+        lcls.setSsqy("其他");
+        if (bb!=null){
+            if (bb.getBelongCompany().equals("X2300000") || bb.getBelongCompany().equals("S9219807")) {
+                lcls.setSsqy("佛山");
+            } else if (bb.getBelongCompany().equals("X2100000") || bb.getBelongCompany().equals("S9219801")) {
+                lcls.setSsqy("广州");
+            }
+        }
+        if (StringUtils.isEmpty(lcls.getQuhao())){
+            if (bb!=null){
+                if (bb.getBelongCompany().equals("S9219807")){
+                    lcls.setQuhao("0756");
+                } else if (bb.getBelongCompany().equals("S9219801")){
+                    lcls.setQuhao("020");
+                }
+            }
+        }
+        // 省市等信息单独处理
+        orderService.tpPositionTosh(lcls);
+        return lcls;
+    }
+
+    public void addAndUpdate(OutJiasmToGreeUploadTaskList ojtutl, ItfTblAzAssignLcLsUpload lcls) {
+
+        // 插入工单主表数据
+        itfTblAzAssignLcLsUploadService.save(lcls);
+
+        // 修改数据上传任务表中的状态
+        // updateUploadTaskList(ojtutl);
+    }
+
+
+    private boolean checkPare(OutJiasmToGreeUploadTaskList ojtutl, OrderBase orderBase) {
+        // 接收派工网点为空上传忽略
+        if (StringUtils.isEmpty(orderBase.getReceWebsitId()) || orderBase.getReceWebsitId().equals("0")){
+            stopUpload(ojtutl, "接收派工网点为空上传忽略");
+            return Boolean.FALSE;
+        }
+        if (StringUtils.isEmpty(orderBase.getPgguid()) || orderBase.getPgguid().equals("0")){
+            stopUpload(ojtutl, "pgguid异常上传忽略");
+            return Boolean.FALSE;
+        }
+        if (StringUtils.isEmpty(orderBase.getPgid()) || orderBase.getPgid().equals("0")){
+            stopUpload(ojtutl, "pgid异常上传忽略");
+            return Boolean.FALSE;
+        }
+        return Boolean.TRUE;
+    }
+
+
+    private void stopUpload(@NotNull OutJiasmToGreeUploadTaskList ojtutl, String msg) {
+        OutJiasmToGreeUploadTaskList up = new OutJiasmToGreeUploadTaskList();
+        up.setSynReqId(ojtutl.getSynReqId());
+        up.setSynStatus(99);
+        up.setSynTime(new Date());
+        up.setSynErrMsg(msg);
+        outJiasmToGreeUploadTaskListService.updateById(up);
+    }
+}

+ 293 - 0
src/main/java/com/zfire/jiasm/syncdata/service/impl/InstallProduceUploadListServiceImpl.java

@@ -0,0 +1,293 @@
+package com.zfire.jiasm.syncdata.service.impl;
+
+import com.zfire.jiasm.syncdata.constant.GDOrderStatusEnum;
+import com.zfire.jiasm.syncdata.constant.OrderTypeEnum;
+import com.zfire.jiasm.syncdata.plus.entity.*;
+import com.zfire.jiasm.syncdata.plus.service.*;
+import com.zfire.jiasm.syncdata.service.InstallProduceUploadListService;
+import com.zfire.jiasm.syncdata.service.PrepareService;
+import com.zfire.jiasm.syncdata.service.PublicService;
+import com.zfire.jiasm.syncdata.utils.DataUtil;
+import com.zfire.jiasm.syncdata.utils.PrepareTaskLog;
+import lombok.extern.slf4j.Slf4j;
+import org.jetbrains.annotations.NotNull;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+@Slf4j
+@Service
+public class InstallProduceUploadListServiceImpl implements InstallProduceUploadListService {
+    @Value("${azuploadscc}")
+    private String azuploadscc = "";
+
+    @Resource
+    PrepareService prepareService;
+    @Resource
+    OutJiasmToGreeUploadTaskListService outJiasmToGreeUploadTaskListService;
+    @Resource
+    OrderBaseService orderBaseService;
+    @Resource
+    OutJiasmToGreeUploadnotifylistService outJiasmToGreeUploadnotifylistService;
+    @Resource
+    OrderInstallOperatingLogService orderInstallOperatingLogService;
+    @Resource
+    OrderReAppointmentService orderReAppointmentService;
+    @Resource
+    PublicService publicService;
+    @Resource
+    OrderProductService orderProductService;
+    @Resource
+    OrderInformationService orderInformationService;
+
+
+
+    @Override
+    public void processUploadList() {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        List<OutJiasmToGreeUploadTaskList> ojtgutls = new ArrayList<>();
+
+        log.info("开始预处理需要上传的工单数据: \uF0B7{}",sdf.format(new Date()));
+
+        // 从需要上传的订单数据表中提取数据
+        List<OutJiasmToGreeUploadnotifylist> taskResults = outJiasmToGreeUploadnotifylistService.lambdaQuery()
+                .eq(OutJiasmToGreeUploadnotifylist::getSynStatus,0)
+                .orderByAsc(OutJiasmToGreeUploadnotifylist::getSynReqId).list();
+
+        try {
+            for (OutJiasmToGreeUploadnotifylist item : taskResults) {
+                Long itemSynReqId = item.getSynReqId();
+                // 同步的表名
+                String itemTableName = item.getTableName();
+                // 同步表中的工单号
+                String itemOrderNo = item.getOrderNo();
+                // 同步表中的主键id
+                String itemTableNameId = item.getId();
+                String itemOrderType = item.getOrderType();
+
+                // 数据同步预处理规则表中提取对应表名的规则
+                Map<String, Object> row = prepareService.getTaskInfo(itemTableName);
+                int taskId = (Integer) row.get("id");
+                String srcTabName = (String) row.get("src_tab_name");
+
+                String errorMessage = null;
+                try {
+                    // 根据表名获取表中指定工单的数据
+                    // 规则表中表名,同步表中的单号,同步表中的id(同步表中的表名的主键)
+                    // Map<String, Object> sourceData = prepareService.getTaskDataDetail(srcTabName, orderNo,topOrderId);
+
+                    // 过程名,规则表中的ID,源表中的数据最后修改时间,需同步的表中的工单号,需同步的表中的主键id,空值,false
+                    // prepareService.prepareData(procName, taskId, date, sOrderNo, orderId, newDykh, isNeedGenRemoteId);
+                    // 工单表执行 TL_PrePare_task_by_fa_order_install 过程
+
+                    // 数据上传任务表OutJiasmToGreeUploadTaskList 生成数据
+
+                    // 安装工单处理 22,221,222
+                    if (itemTableName.equals("order_base") &&
+                            itemOrderType.equals(OrderTypeEnum.ORDER_TYPE_INSTALL.getCode())){
+                        orderBaseProess(itemTableNameId, ojtgutls, item.getSynReqId(), itemTableName, itemOrderType);
+                    }
+                    // 安装工单操作日志 23
+                    if (itemTableName.equals("order_install_operating_log")){
+                        orderInstallOperatingLog(item, itemTableName, itemOrderType);
+                    }
+                    // 安装工单用户预约、改约明细 230 同时向发短信表插入一条数据
+                    if (itemTableName.equals("order_re_appointment") &&
+                            itemOrderType.equals(OrderTypeEnum.ORDER_TYPE_INSTALL.getCode())){
+                        OrderReAppointment(item, itemTableName, itemOrderType);
+                    }
+                    // 安装工单产品信息 24
+                    if (itemTableName.equals("order_product") &&
+                            itemOrderType.equals(OrderTypeEnum.ORDER_TYPE_INSTALL.getCode())){
+                        // TL_PrePare_task_by_fa_order_install_product 24
+                        orderProductProess(item, itemTableName, itemOrderNo, itemTableNameId);
+                    }
+                    // 安装工单子信息  26
+                    if (itemTableName.equals("order_information") &&
+                            itemOrderType.equals(OrderTypeEnum.ORDER_TYPE_INSTALL.getCode())){
+                        // TL_PrePare_task_by_fa_order_install_information
+                        orderInformationProess(item, itemTableName, itemOrderNo, itemTableNameId);
+                    }
+                } catch (Exception ex) {
+                    errorMessage = ex.getMessage();
+                    updateError(errorMessage, item);
+                } finally {
+                    PrepareTaskLog.writeMessage(genInfoData(taskId, srcTabName, false, errorMessage));
+                }
+            }
+            log.info("预处理需要上传的安装工单数据完成: \uF0B7{}",sdf.format(new Date()));
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            log.info("开始预处理需要上传的工单数据出错");
+        }
+    }
+
+
+    @Transactional(rollbackFor = Exception.class)
+    public void orderInformationProess(OutJiasmToGreeUploadnotifylist item, String itemTableName, String itemOrderNo, String itemTableNameId) {
+        // 提取对应的子信息
+        OrderInformation oi = orderInformationService.lambdaQuery()
+                .eq(OrderInformation::getId, itemTableNameId).one();
+        if (oi!=null){
+            // 生成26类型上传任务数据
+            // 单号,主键,同步任务生成时间,同步的表名,工单类型,任务类型
+            OutJiasmToGreeUploadTaskList add = publicService.getUploadTaskList(itemOrderNo, itemTableNameId,oi.getUpdateTime(), itemTableName,
+                    OrderTypeEnum.ORDER_TYPE_INSTALL.getCode(),26);
+            outJiasmToGreeUploadTaskListService.save(add);
+
+        }
+
+
+        // 需要上传的订单数据表中处理状态同步为已处理
+        OutJiasmToGreeUploadnotifylist upn = getOutJiasmToGreeUploadnotifylist(item.getSynReqId());
+        outJiasmToGreeUploadnotifylistService.updateById(upn);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void orderProductProess(OutJiasmToGreeUploadnotifylist item, String itemTableName, String itemOrderNo, String itemTableNameId) {
+        // 提取工单机型
+        OrderProduct op = orderProductService.lambdaQuery()
+                .eq(OrderProduct::getId, itemTableNameId).one();
+        if (op!=null){
+            // 生成24类型上传任务数据
+            // 单号,主键,同步任务生成时间,同步的表名,工单类型,任务类型
+            OutJiasmToGreeUploadTaskList add = publicService.getUploadTaskList(itemOrderNo, itemTableNameId,op.getUpdateTime(), itemTableName,
+                    OrderTypeEnum.ORDER_TYPE_INSTALL.getCode(),24);
+            outJiasmToGreeUploadTaskListService.save(add);
+        }
+
+        // 需要上传的订单数据表中处理状态同步为已处理
+        OutJiasmToGreeUploadnotifylist upn = getOutJiasmToGreeUploadnotifylist(item.getSynReqId());
+        outJiasmToGreeUploadnotifylistService.updateById(upn);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public  void OrderReAppointment(OutJiasmToGreeUploadnotifylist item, String itemTableName, String itemOrderType) {
+        OrderReAppointment rea = orderReAppointmentService.lambdaQuery()
+                .eq(OrderReAppointment::getId, item.getId()).one();
+        // 同步任务增加一条数据
+        if (rea !=null){
+            OutJiasmToGreeUploadTaskList add = publicService.getUploadTaskList(item.getOrderNo(), item.getId(),
+                    rea.getCreateTime(), itemTableName, itemOrderType, 230);
+            outJiasmToGreeUploadTaskListService.save(add);
+            // 向发短信表插入一条数据,短信表ID同预约改约表ID相同
+            publicService.addFaOrderSms(rea);
+        }
+
+        // 需要上传的订单数据表中处理状态同步为已处理
+        OutJiasmToGreeUploadnotifylist up = getOutJiasmToGreeUploadnotifylist(item.getSynReqId());
+        outJiasmToGreeUploadnotifylistService.updateById(up);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void orderInstallOperatingLog(OutJiasmToGreeUploadnotifylist item, String itemTableName, String itemOrderType) {
+        OrderInstallOperatingLog logInfo = orderInstallOperatingLogService.lambdaQuery()
+                .eq(OrderInstallOperatingLog::getId, item.getId()).one();
+        // 同步任务增加一条数据
+        if (logInfo !=null){
+            OutJiasmToGreeUploadTaskList add = publicService.getUploadTaskList(item.getOrderNo(), item.getId(),
+                    logInfo.getCreateTime(), itemTableName, itemOrderType, 23);
+            outJiasmToGreeUploadTaskListService.save(add);
+        }
+
+        // 需要上传的订单数据表中处理状态同步为已处理
+        OutJiasmToGreeUploadnotifylist up = getOutJiasmToGreeUploadnotifylist(item.getSynReqId());
+        outJiasmToGreeUploadnotifylistService.updateById(up);
+    }
+
+
+    public void updateError(String errMessage, OutJiasmToGreeUploadnotifylist item) {
+        if (errMessage != null && errMessage.trim().length() > 255) {
+            errMessage = errMessage.substring(0, 255);
+        }
+        OutJiasmToGreeUploadnotifylist up = new OutJiasmToGreeUploadnotifylist();
+        up.setSynReqId(item.getSynReqId());
+        up.setSynTimes(item.getSynTimes()+1);
+        up.setSynErrMsg(errMessage);
+        up.setSynReqTime(new Date());
+        outJiasmToGreeUploadnotifylistService.updateById(up);
+    }
+
+    @NotNull
+    private OutJiasmToGreeUploadnotifylist getOutJiasmToGreeUploadnotifylist(Long synReqId) {
+        OutJiasmToGreeUploadnotifylist up = new OutJiasmToGreeUploadnotifylist();
+        up.setSynReqId(synReqId);
+        up.setSynStatus(1);
+        up.setSynReqTime(new Date());
+        return up;
+    }
+
+
+    @Transactional(rollbackFor = Exception.class)
+    public void orderBaseProess(String itemTableNameId, List<OutJiasmToGreeUploadTaskList> ojtgutls, Long synReqId, String itemTableName, String itemOrderType) {
+        OrderBase orderBase = orderBaseService.lambdaQuery()
+                .eq(OrderBase::getId,itemTableNameId).one();
+
+        // 安装工单处理
+        if (orderBase !=null){
+            InstallOrderBase(itemTableNameId, orderBase.getUpdateTime(), orderBase, ojtgutls, itemTableName, itemOrderType);
+        }
+
+        if (ojtgutls.size()>0){
+            outJiasmToGreeUploadTaskListService.saveBatch(ojtgutls);
+            ojtgutls.clear();
+        }
+        // 需要上传的订单数据表中处理状态同步为已处理
+        OutJiasmToGreeUploadnotifylist up = getOutJiasmToGreeUploadnotifylist(synReqId);
+        outJiasmToGreeUploadnotifylistService.updateById(up);
+    }
+
+    private void InstallOrderBase(String orderNo, Date updateTime, OrderBase orderBase, List<OutJiasmToGreeUploadTaskList> ojtgutls,
+                                  String itemTableName, String itemOrderType) {
+        // 若工单被删除不再同步 不写上传记录表
+
+        // 生成一条22类型的上传记录  out_jiasm_to_gree_upload_task_list
+        OutJiasmToGreeUploadTaskList add = publicService.getUploadTaskList(orderNo, orderBase.getId(), updateTime, itemTableName, itemOrderType, 22);
+        ojtgutls.add(add);
+        // 工单状态order_status 6, 7, 9, 10
+        if (orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G6.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G7.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G9.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G10.getCode())){
+            if (orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G6.getCode())){
+                OutJiasmToGreeUploadTaskList addo = publicService.getUploadTaskList(orderNo, orderBase.getId(), updateTime, itemTableName, itemOrderType, 221);
+                ojtgutls.add(addo);
+            } else if (orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G7.getCode()) ||
+                    orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G9.getCode())){
+                OutJiasmToGreeUploadTaskList addt = publicService.getUploadTaskList(orderNo, orderBase.getId(), updateTime, itemTableName, itemOrderType, 221);
+                ojtgutls.add(addt);
+                OutJiasmToGreeUploadTaskList addtt = publicService.getUploadTaskList(orderNo, orderBase.getId(), orderBase.getUpdateTime(), itemTableName, itemOrderType, 222);
+                ojtgutls.add(addtt);
+            } else {
+                OutJiasmToGreeUploadTaskList addttt = publicService.getUploadTaskList(orderNo, orderBase.getId(), updateTime, itemTableName, itemOrderType, 222);
+                ojtgutls.add(addttt);
+            }
+        }
+    }
+
+
+    private String genInfoData(int taskId, String srcTabName, boolean isTimeOut, String errorMessage) {
+        String result = "预处理任务[" + taskId + "," + srcTabName + "] " + (isTimeOut ? "超时!!!!" : "正常") + " "
+                + (errorMessage != null ? "错误:[" + errorMessage + "]" : "");
+        return result;
+    }
+
+    private Map<String, Object> genDataMapFromSource(String localKeyList, String serverKeyList,
+                                                     Map<String, Object> sourceData) {
+        Map<String, Object> paramMap = new HashMap<String, Object>();
+        String[] localKeys = localKeyList.split("\\Q,\\E");
+        String[] serverKeys = serverKeyList.split("\\Q,\\E");
+        for (int i = 0; i < localKeys.length; i++) {
+            String localKey = localKeys[i];
+            String serverKey = serverKeys[i];
+            Object value = sourceData.get(localKey.trim());
+            paramMap.put(DataUtil.fromDbName2ServiceName(serverKey.trim()), value);
+        }
+
+        return paramMap;
+    }
+}

+ 0 - 2
src/main/java/com/zfire/jiasm/syncdata/service/impl/JiasmApiImpl.java

@@ -1,10 +1,8 @@
 package com.zfire.jiasm.syncdata.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.zfire.jiasm.syncdata.api.OrderAddBeanDTO;
 import com.zfire.jiasm.syncdata.constant.Constant;
-import com.zfire.jiasm.syncdata.helper.GreeFileSaveHelper;
 import com.zfire.jiasm.syncdata.plus.entity.AdminUser;
 import com.zfire.jiasm.syncdata.plus.service.AdminUserService;
 import com.zfire.jiasm.syncdata.service.JiasmApi;

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

@@ -14,7 +14,6 @@ import com.zfire.jiasm.syncdata.parameter.*;
 import com.zfire.jiasm.syncdata.plus.entity.*;
 import com.zfire.jiasm.syncdata.plus.service.*;
 import com.zfire.jiasm.syncdata.response.ResultData;
-import com.zfire.jiasm.syncdata.response.WebsitFWS;
 import com.zfire.jiasm.syncdata.response.WebsitSH;
 import com.zfire.jiasm.syncdata.service.OrderService;
 import com.zfire.jiasm.syncdata.service.PublicService;

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

@@ -4,7 +4,6 @@ import cn.hutool.http.HttpUtil;
 import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.sun.corba.se.spi.orbutil.threadpool.Work;
 import com.zfire.jiasm.syncdata.constant.Constant;
 import com.zfire.jiasm.syncdata.constant.DictTypeEnum;
 import com.zfire.jiasm.syncdata.constant.InterFaceTypeEnum;

+ 424 - 0
src/main/java/com/zfire/jiasm/syncdata/service/impl/RepairDownloadGDServiceImpl.java

@@ -0,0 +1,424 @@
+package com.zfire.jiasm.syncdata.service.impl;
+
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.zfire.jiasm.syncdata.data.Token;
+import com.zfire.jiasm.syncdata.download.order.RepairDownloadGD;
+import com.zfire.jiasm.syncdata.plus.entity.ItfGreeToFaRepairSynRule;
+import com.zfire.jiasm.syncdata.plus.service.ItfGreeToFaRepairSynRuleService;
+import com.zfire.jiasm.syncdata.pojo.bo.DownRepairOrderGD;
+import com.zfire.jiasm.syncdata.service.RepairDownloadGDService;
+import com.zfire.jiasm.syncdata.utils.DataUtil;
+import com.zfire.jiasm.syncdata.utils.HttpUtil;
+import com.zfire.jiasm.syncdata.utils.TokenCenter;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.dao.DataAccessException;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
+
+import javax.annotation.Resource;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+
+@Slf4j
+@Service
+public class RepairDownloadGDServiceImpl implements RepairDownloadGDService {
+    @Value("${gdbaseurl}")
+    private String baseurl = "";
+    @Value("${nullCols}")
+    private String nullCols;
+
+    @Resource
+    RepairDownloadGD repairDownloadgd;
+    @Autowired
+    TokenCenter tokenCenter;
+    @Resource
+    ItfGreeToFaRepairSynRuleService itfGreeToFaRepairSynRuleService;
+    @Autowired
+    private JdbcTemplate jdbcTemplate;
+    private Set<String> nullDateCols;
+
+
+
+    @Override
+    public void processRepairDownload() throws Exception {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        DownRepairOrderGD data = new DownRepairOrderGD();
+        JSONArray datas = new JSONArray();
+
+        if (1 == 1) {
+            return;
+        }
+
+        try {
+            ItfGreeToFaRepairSynRule synRule = itfGreeToFaRepairSynRuleService.lambdaQuery()
+                    .orderByAsc(ItfGreeToFaRepairSynRule::getId).one();
+            if (synRule==null){
+                return;
+            }
+
+            log.info("开始从工单系统获取清洗保养工单: \uF0B7{}",sdf.format(new Date()));
+
+            // 数据源表名
+            String srcTabNames = synRule.getSrcTabName();
+            String[] srcTabnameArray = srcTabNames.trim().split("\\Q|\\E");
+
+            // 数据源表列
+            String srcTabColLists = synRule.getSrcTabColList();
+            String[] srcTabColListArray = srcTabColLists.trim().split("\\Q|\\E");
+
+            // 数据目的表名
+            String destTabNames = synRule.getDestTabName();
+            String[] destTabNameArray = destTabNames.trim().split("\\Q|\\E");
+
+            // 数据目的表列
+            String destTabColLists = synRule.getDestTabColList();
+            String[] destTabColListArray = destTabColLists.trim().split("\\Q|\\E");
+
+            // 销售公司编码
+            String salesWebsitNumber = synRule.getSalesWebsitNumber();
+            String downloadBatchNo = UUID.randomUUID().toString();
+            int id = 0;
+            // 获取数据 这里的数据为数组,会有多个工单的情况
+            data = downloadDataGD();
+            id = data.getId();
+            datas = data.getData();
+
+            log.info("从工单系统获取清洗保养工单下载了{}条数据",datas.size());
+
+            for (int i = 0; i < datas.size(); i++) {
+                JSONObject sheet = datas.getJSONObject(i);
+                try{
+                    // 维修工单主表必须存在
+                    JSONObject mainTableData = sheet.getJSONObject("tblAssign");
+                    if (mainTableData != null) {
+                        // 这里只同步维修工单中的 清洗保养工单 (从工单系统获取的维修工单一定有清洗保养工单)
+                        if (StringUtils.isEmpty(mainTableData.getString("xxlb")) ||
+                                !mainTableData.getString("xxlb").equals("清洗保养")){
+                            continue;
+                        }
+
+                        String downloadTaskNo = UUID.randomUUID().toString();
+                        DataUtil.initLastModifiedDate(mainTableData,"last_modified_date");
+                        addRepairData(mainTableData, downloadBatchNo, downloadTaskNo, sheet,
+                                srcTabnameArray, srcTabColListArray, destTabNameArray, destTabColListArray,
+                                salesWebsitNumber,id);
+                    } else {
+                        log.error("维修工单找不到主表数据,downloadBatchNo[" + downloadBatchNo + "]");
+                    }
+                } catch (Exception ex) {
+                    log.info("维修工单下载落download表失败:{}" ,JSONObject.toJSONString(sheet));
+                    ex.printStackTrace();
+                }
+            }
+
+            log.info("维修工单同步下载状态");
+            // 与总部同步下载状态,修改本地下载记录表状态 gree_stat_syn_status =1
+            updateStatus();
+
+            log.info("维修工单下载完成");
+        } catch (Exception ex) {
+            log.error("从工单系统获取清洗保养工单失败", ex);
+        }
+
+    }
+
+
+    private void updateStatus() {
+        try {
+            List<Map<String, Object>> result = getNeedUpdateTaskData("itf_repair_batch_download_rec");
+            String url = baseurl + "sync/repairorderup";
+            for (Map<String, Object> row : result) {
+                Long synReqId = (Long) row.get("syn_req_id");
+                Integer gdid = (Integer) row.get("gdid");
+                try {
+                    Map<String, Object> paramMap = new HashMap<String, Object>();
+                    paramMap.put("id", gdid);
+                    JSONObject jsonResult = HttpUtil.httpRequestWithGD(url, "POST",JSONObject.toJSONString(paramMap));
+
+                    String code = jsonResult.getString("code");
+                    if ("200".equals(code)) {
+                        updateSuccess(synReqId, "itf_repair_batch_download_rec");
+                    } else {
+                        updateError(synReqId, "与工单系统同步失败", "itf_repair_batch_download_rec");
+                    }
+                } catch (Exception ex) {
+                    log.error("工单系统更新维修主表下载状态失败syn_req_id=" + synReqId, ex);
+                    updateError(synReqId, ex.getMessage(), "itf_repair_batch_download_rec");
+                }
+            }
+        } catch (Exception ex) {
+            log.error("工单系统更新维修主表下载状态失败", ex);
+        }
+    }
+
+    public void updateError(Long synReqId, String errorMessage, String tabName) {
+        jdbcTemplate.update(
+                "update " + tabName + " set gree_stat_syn_status=99,gree_stat_syn_err_msg=? where syn_req_id=?",
+                new Object[] { errorMessage, synReqId });
+    }
+
+    public void updateSuccess(Long synReqId, String tabName) {
+        jdbcTemplate.update("update " + tabName + " set gree_stat_syn_status=1,gree_stat_syn_time=? where syn_req_id=?",
+                new Object[] { new Date(System.currentTimeMillis()), synReqId });
+    }
+
+    public List<Map<String, Object>> getNeedUpdateTaskData(String tabName) {
+        List<Map<String, Object>> result = jdbcTemplate
+                .queryForList("SELECT * from " + tabName
+                        + " where gree_stat_syn_status=0 and gdid>-1 order by syn_req_id ");
+        return result;
+    }
+
+    private JSONArray downloadData(String downloadBatchNo, String salesWebsitNumber) throws Exception {
+
+        Token token = tokenCenter.getCurrentToken();
+        String url = baseurl + "api/repair/batchsearch/repairorders?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 = "失败";
+            }
+            throw new Exception(errorMessage);
+        }
+
+    }
+
+    private DownRepairOrderGD downloadDataGD() throws Exception {
+        int id;
+        DownRepairOrderGD datas = new DownRepairOrderGD();
+        String url = baseurl + "sync/repairorder";
+        JSONObject jsonResult = HttpUtil.httpRequestGetPgidGD(url, "GET", null);
+
+        String code = jsonResult.getString("code");
+        if ("200".equals(code)) {
+            JSONArray data = jsonResult.getJSONArray("data");
+            id =Integer.valueOf((String)jsonResult.getString("id"));
+            datas.setId(id);
+            datas.setData(data);
+
+            return datas;
+        } else {
+            String errorMessage = jsonResult.getString("message");
+            if (errorMessage == null || errorMessage.trim().length() == 0) {
+                errorMessage = "失败";
+            }
+            throw new Exception(errorMessage);
+        }
+
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void addRepairData(JSONObject mainTableData, String downloadBatchNo, String downloadTaskNo, JSONObject sheet,
+                              String[] srcTabnameArray, String[] srcTabColListArray, String[] destTabNameArray,
+                              String[] destTabColListArray, String salesWebsitNumber, int id) throws Exception {
+        // 查看同一时间同一工单是否存在下载记录表 存在不再保存本次的同步数据
+        if (insertRepairRecData(mainTableData, downloadBatchNo, downloadTaskNo, salesWebsitNumber, id)) {
+            parseData(sheet, srcTabnameArray, srcTabColListArray, destTabNameArray, destTabColListArray, downloadTaskNo,
+                    false, downloadBatchNo);
+        }
+    }
+
+    private boolean insertRepairRecData(JSONObject aData, String downloadBatchNo, String downloadTaskNo,
+                                        String salesWebsitNumber, Integer id) throws Exception {
+
+        // 查看 相同时间同一单数据
+        List<Map<String, Object>> rec = isRepairDuplicate(aData);
+
+
+        boolean duplicate = (rec.size() > 0);
+
+        String sql = "insert into itf_repair_batch_download_rec (sales_websit_number,download_batch_no,download_task_no,"
+                + "created_by,created_date,last_modified_by,last_modified_date,pgid,"
+                + "extjson1,extjson2,extjson3,extjson4,extjson5,gdid" + (duplicate ? ",gree_stat_syn_err_msg" : "")
+                + ") values (" + "?,?,?,?,?,?,?,?,?,?,?,?,?,?" + (duplicate ? ",?" : "") + ") ";
+
+        // 存在 说明重复获取,不再保存数据
+        if (duplicate) {
+            if (!recHasNoUploadStatus(rec)) {
+                jdbcTemplate.update(sql,
+                        new Object[] { salesWebsitNumber, downloadBatchNo, downloadTaskNo,
+                                aData.getString("created_by"), aData.getString("created_date"),
+                                aData.getString("last_modified_by"), aData.getString("last_modified_date"),
+                                aData.getString("pgid"), aData.getString("extjson1"), aData.getString("extjson2"),
+                                aData.getString("extjson3"), aData.getString("extjson4"),
+                                aData.getString("extjson5"), id,
+                                "任务已经存在,不再产生下载数据" });
+            }
+            return false;
+        } else {
+            jdbcTemplate.update(sql,
+                    new Object[] { salesWebsitNumber, downloadBatchNo, downloadTaskNo, aData.getString("created_by"),
+                            aData.getString("created_date"), aData.getString("last_modified_by"),
+                            aData.getString("last_modified_date"), aData.getString("pgid"), aData.getString("extjson1"),
+                            aData.getString("extjson2"), aData.getString("extjson3"), aData.getString("extjson4"),
+                            aData.getString("extjson5"),id });
+            return true;
+        }
+
+    }
+
+    private List<Map<String, Object>> isRepairDuplicate(JSONObject aData) throws DataAccessException, ParseException {
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        List<Map<String, Object>> result = jdbcTemplate.queryForList(
+                "select * from itf_repair_batch_download_rec where pgid=? and last_modified_date=?",
+                new Object[] { aData.getString("pgid"), sdf.parse(aData.getString("last_modified_date")) });
+
+        return result;
+    }
+
+    private boolean recHasNoUploadStatus(List<Map<String, Object>> rec) {
+        for (Map<String, Object> data : rec) {
+            int greeStatSynStatus = (Integer) data.get("gree_stat_syn_status");
+            if (greeStatSynStatus == 0) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private void parseData(JSONObject sheet, String[] srcTabnameArray, String[] srcTabColListArray,
+                           String[] destTabNameArray, String[] destTabColListArray, String downloadTaskNo, boolean isInstall,
+                           String downloadBatchNo) throws Exception {
+
+        for (int i = 0; i < srcTabnameArray.length; i++) {
+
+            String srcTabname = srcTabnameArray[i];
+            String srcTabColList = srcTabColListArray[i];
+            String destTabName = destTabNameArray[i];
+            String destTabColList = destTabColListArray[i];
+
+            String[] arySrcTabCol = srcTabColList.split("\\Q,\\E");
+
+            JSONArray tableData = new JSONArray();
+
+            if (isInstall) {
+                tableData = sheet.getJSONArray(srcTabname.toUpperCase());
+            } else {
+                if ("tblAssign".equalsIgnoreCase(DataUtil.fromDbName2ServiceName(srcTabname))) {
+                    tableData = new JSONArray();
+                    tableData.add(sheet.getJSONObject("tblAssign"));
+                } else {
+                    tableData = sheet.getJSONArray(DataUtil.fromDbName2ServiceName(srcTabname));
+                }
+
+            }
+
+            if (tableData == null){
+                continue;
+            }
+
+            for (int j = 0; j < tableData.size(); j++) {
+                parseAData(isInstall, downloadBatchNo, downloadTaskNo, destTabName, destTabColList, arySrcTabCol,
+                        tableData.getJSONObject(j));
+            }
+        }
+    }
+
+    public void parseAData(boolean isInstall, String downloadBatchNo, String downloadTaskNo, String destTabName,
+                           String destTabColList, String[] arySrcTabCol, JSONObject aData) throws Exception {
+        String table = "itf_tbl_az_assign_platform_download";
+        String daijian = "itf_tbl_assign_daijian_download";
+        String yd = "itf_tbl_assign_xzyd_download";
+
+        String[] arySrcTabColValue = new String[arySrcTabCol.length];
+
+        for (int j = 0; j < arySrcTabCol.length; j++) {
+            if (isInstall) {
+                if (destTabName.equals(table) && (j==2 || j== 4 || j==9)){
+                    if (StringUtils.isEmpty(DataUtil.findValue(DataUtil.fromDbName2ServiceName(arySrcTabCol[j].trim()),aData))){
+                        arySrcTabColValue[j] = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+                        continue;
+                    }
+                }
+                arySrcTabColValue[j] = DataUtil.findValue(DataUtil.fromDbName2ServiceName(arySrcTabCol[j].trim()),
+                        aData);
+            } else {
+                if (destTabName.equals(daijian)){
+                    //创建时间 cjdt
+                    DataUtil.initLastModifiedDate(aData,"cjdt");
+                    // 商品大类 splb
+                    DataUtil.initOther(aData,"splb");
+                    // 替换编码销售公司库存 thbmxsgsnum
+                    DataUtil.initOther(aData,"thbmxsgsnum");
+                    // 替换编码区域库存 thbmqynum
+                    DataUtil.initOther(aData,"thbmqynum");
+                    // 替换编码网点库存 thbmwdnum
+                    DataUtil.initOther(aData,"thbmwdnum");
+                    // 配件系统处理标识 pjxtflag
+                    DataUtil.initOther(aData,"pjxtflag");
+                    // 区域配件库存 djquyunum
+                    DataUtil.initOther(aData,"djquyunum");
+                    // 销售公司配件库存 djxsgsnum
+                    DataUtil.initOther(aData,"djxsgsnum");
+                    // 网点配件库存 djwdnum
+                    DataUtil.initOther(aData,"djwdnum");
+                } else if (destTabName.equals(yd)){
+                    DataUtil.initOther(aData,"cshu");
+                    DataUtil.initOther(aData,"ydbz");
+                }
+
+                String colName = arySrcTabCol[j].trim();
+                arySrcTabColValue[j] = DataUtil.findValue(colName, aData);
+                if (getNullColSet().contains(colName)) {
+                    if ("".equals(arySrcTabColValue[j])) {
+                        arySrcTabColValue[j] = null;
+                    }
+                }
+            }
+        }
+
+        insertAData(downloadBatchNo, downloadTaskNo, destTabName, destTabColList, arySrcTabColValue);
+    }
+
+    public void insertAData(String downloadBatchNo, String downloadTaskNo, String destTabName, String destTabColList,
+                            Object[] arySrcTabColValue) throws Exception {
+
+        StringBuffer mark = new StringBuffer();
+        for (int i = 0; i < arySrcTabColValue.length; i++) {
+            if (mark.length() > 0) {
+                mark.append(",");
+            }
+            mark.append("?");
+        }
+
+        String sql = "insert into " + destTabName + " (download_batch_no,download_task_no," + destTabColList
+                + ") values (?,?," + mark + ") ";
+
+        Object[] insertValue = new Object[arySrcTabColValue.length + 2];
+        insertValue[0] = downloadBatchNo;
+        insertValue[1] = downloadTaskNo;
+        System.arraycopy(arySrcTabColValue, 0, insertValue, 2, arySrcTabColValue.length);
+        jdbcTemplate.update(sql, insertValue);
+
+    }
+
+    private synchronized Set<String> getNullColSet(){
+        if(nullDateCols==null) {
+            nullDateCols=new HashSet<String>();
+            String[] nullColArray=nullCols.split("\\Q,\\E");
+            for(String value:nullColArray) {
+                nullDateCols.add(value);
+            }
+        }
+        return nullDateCols;
+    }
+
+}

+ 397 - 0
src/main/java/com/zfire/jiasm/syncdata/service/impl/RepairDownloadServiceImpl.java

@@ -0,0 +1,397 @@
+package com.zfire.jiasm.syncdata.service.impl;
+
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.zfire.jiasm.syncdata.data.Token;
+import com.zfire.jiasm.syncdata.download.order.RepairDownload;
+import com.zfire.jiasm.syncdata.plus.entity.ItfGreeToFaRepairSynRule;
+import com.zfire.jiasm.syncdata.plus.service.ItfGreeToFaRepairSynRuleService;
+import com.zfire.jiasm.syncdata.service.RepairDownloadService;
+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.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.dao.DataAccessException;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
+
+import javax.annotation.Resource;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+
+@Slf4j
+@Service
+public class RepairDownloadServiceImpl implements RepairDownloadService {
+    @Value("${baseurl}")
+    private String baseurl = "";
+    @Value("${nullCols}")
+    private String nullCols;
+    @Value("${repairdownc}")
+    private String repairdownc = "";
+
+
+    @Resource
+    RepairDownload repairDownload;
+    @Autowired
+    TokenCenter tokenCenter;
+    @Resource
+    ItfGreeToFaRepairSynRuleService itfGreeToFaRepairSynRuleService;
+    @Autowired
+    private JdbcTemplate jdbcTemplate;
+    private Set<String> nullDateCols;
+
+
+
+    @Override
+    public void processRepairDownload() throws Exception {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        try {
+            ItfGreeToFaRepairSynRule synRule = itfGreeToFaRepairSynRuleService.lambdaQuery()
+                    .orderByAsc(ItfGreeToFaRepairSynRule::getId).one();
+            if (synRule==null){
+                return;
+            }
+
+            log.info("开始下载维修工单: \uF0B7{}",sdf.format(new Date()));
+
+            // 数据源表名
+            String srcTabNames = synRule.getSrcTabName();
+            String[] srcTabnameArray = srcTabNames.trim().split("\\Q|\\E");
+
+            // 数据源表列
+            String srcTabColLists = synRule.getSrcTabColList();
+            String[] srcTabColListArray = srcTabColLists.trim().split("\\Q|\\E");
+
+            // 数据目的表名
+            String destTabNames = synRule.getDestTabName();
+            String[] destTabNameArray = destTabNames.trim().split("\\Q|\\E");
+
+            // 数据目的表列
+            String destTabColLists = synRule.getDestTabColList();
+            String[] destTabColListArray = destTabColLists.trim().split("\\Q|\\E");
+
+            // 销售公司编码
+            String salesWebsitNumber = synRule.getSalesWebsitNumber();
+            String downloadBatchNo = UUID.randomUUID().toString();
+            // 获取数据
+            JSONArray datas = downloadData(downloadBatchNo, salesWebsitNumber);
+
+            log.info("维修工单下载了{}条数据",datas.size());
+
+            for (int i = 0; i < datas.size(); i++) {
+                JSONObject sheet = datas.getJSONObject(i);
+                try{
+                    // 维修工单主表必须存在
+                    JSONObject mainTableData = sheet.getJSONObject("tblAssign");
+                    if (mainTableData != null) {
+                        String downloadTaskNo = UUID.randomUUID().toString();
+                        DataUtil.initLastModifiedDate(mainTableData,"last_modified_date");
+                        addRepairData(mainTableData, downloadBatchNo, downloadTaskNo, sheet,
+                                srcTabnameArray, srcTabColListArray, destTabNameArray, destTabColListArray,
+                                salesWebsitNumber);
+                    } else {
+                        log.error("维修工单找不到主表数据,downloadBatchNo[" + downloadBatchNo + "]");
+                    }
+                } catch (Exception ex) {
+                    log.info("维修工单下载落download表失败:{}" ,JSONObject.toJSONString(sheet));
+                    ex.printStackTrace();
+                }
+
+
+            }
+
+            log.info("维修工单同步下载状态");
+            // 与总部同步下载状态,修改本地下载记录表状态 gree_stat_syn_status =1
+            updateStatus();
+
+            log.info("维修工单下载完成");
+        } catch (Exception ex) {
+            log.error("从总部取维修工单失败", ex);
+        }
+
+    }
+
+
+    private void updateStatus() {
+        try {
+            List<Map<String, Object>> result = getNeedUpdateTaskData("itf_repair_batch_download_rec");
+            Token token = tokenCenter.getCurrentToken();
+            String url = baseurl + "tblAssign" + "/updateExtjson5";
+            for (Map<String, Object> row : result) {
+                Long synReqId = (Long) row.get("syn_req_id");
+
+                try {
+                    String pgid = row.get("pgid").toString();
+                    Date lastModifiedDate = (Date) row.get("last_modified_date");
+
+                    Map<String, Object> paramMap = new HashMap<String, Object>();
+                    paramMap.put("pgid", pgid);
+                    paramMap.put("lastModifiedDate", lastModifiedDate);
+
+                    JSONResult jsonResult = HttpUtil.httpRequestWithToken(url, "POST",
+                            JSON.toJSONStringWithDateFormat(paramMap, "yyyy-MM-dd HH:mm:ss"), token);
+
+                    if (jsonResult.isOK()) {
+                        updateSuccess(synReqId, "itf_repair_batch_download_rec");
+                    } else {
+                        updateError(synReqId, jsonResult.getMsg(), "itf_repair_batch_download_rec");
+                    }
+                } catch (Exception ex) {
+                    log.error("ES更新维修主表下载状态失败syn_req_id=" + synReqId, ex);
+                    updateError(synReqId, ex.getMessage(), "itf_repair_batch_download_rec");
+                }
+            }
+        } catch (Exception ex) {
+            log.error("ES更新维修主表下载状态失败", ex);
+        }
+    }
+
+    public void updateError(Long synReqId, String errorMessage, String tabName) {
+        jdbcTemplate.update(
+                "update " + tabName + " set gree_stat_syn_status=99,gree_stat_syn_err_msg=? where syn_req_id=?",
+                new Object[] { errorMessage, synReqId });
+    }
+
+    public void updateSuccess(Long synReqId, String tabName) {
+        jdbcTemplate.update("update " + tabName + " set gree_stat_syn_status=1,gree_stat_syn_time=? where syn_req_id=?",
+                new Object[] { new Date(System.currentTimeMillis()), synReqId });
+    }
+
+    public List<Map<String, Object>> getNeedUpdateTaskData(String tabName) {
+        List<Map<String, Object>> result = jdbcTemplate
+                .queryForList("SELECT * from " + tabName + " where gree_stat_syn_status=0 order by syn_req_id ");
+        return result;
+    }
+
+    private JSONArray downloadData(String downloadBatchNo, String salesWebsitNumber) throws Exception {
+
+        Token token = tokenCenter.getCurrentToken();
+        String url = baseurl + "api/repair/batchsearch/repairorders?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 = "失败";
+            }
+            throw new Exception(errorMessage);
+        }
+
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void addRepairData(JSONObject mainTableData, String downloadBatchNo, String downloadTaskNo, JSONObject sheet,
+                              String[] srcTabnameArray, String[] srcTabColListArray, String[] destTabNameArray,
+                              String[] destTabColListArray, String salesWebsitNumber) throws Exception {
+        // 查看同一时间同一工单是否存在下载记录表 存在不再保存本次的同步数据
+        if (insertRepairRecData(mainTableData, downloadBatchNo, downloadTaskNo, salesWebsitNumber)) {
+            parseData(sheet, srcTabnameArray, srcTabColListArray, destTabNameArray, destTabColListArray, downloadTaskNo,
+                    false, downloadBatchNo);
+        }
+    }
+
+    private boolean insertRepairRecData(JSONObject aData, String downloadBatchNo, String downloadTaskNo,
+                                        String salesWebsitNumber) throws Exception {
+
+        // 查看 相同时间同一单数据
+        List<Map<String, Object>> rec = isRepairDuplicate(aData);
+
+
+        boolean duplicate = (rec.size() > 0);
+
+        String sql = "insert into itf_repair_batch_download_rec (sales_websit_number,download_batch_no,download_task_no,"
+                + "created_by,created_date,last_modified_by,last_modified_date,pgid,"
+                + "extjson1,extjson2,extjson3,extjson4,extjson5" + (duplicate ? ",gree_stat_syn_err_msg" : "")
+                + ") values (" + "?,?,?,?,?,?,?,?,?,?,?,?,?" + (duplicate ? ",?" : "") + ") ";
+
+        // 存在 说明重复获取,不再保存数据
+        if (duplicate) {
+            if (!recHasNoUploadStatus(rec)) {
+                jdbcTemplate.update(sql,
+                        new Object[] { salesWebsitNumber, downloadBatchNo, downloadTaskNo,
+                                aData.getString("created_by"), aData.getString("created_date"),
+                                aData.getString("last_modified_by"), aData.getString("last_modified_date"),
+                                aData.getString("pgid"), aData.getString("extjson1"), aData.getString("extjson2"),
+                                aData.getString("extjson3"), aData.getString("extjson4"), aData.getString("extjson5"),
+                                "任务已经存在,不再产生下载数据" });
+            }
+            return false;
+        } else {
+            jdbcTemplate.update(sql,
+                    new Object[] { salesWebsitNumber, downloadBatchNo, downloadTaskNo, aData.getString("created_by"),
+                            aData.getString("created_date"), aData.getString("last_modified_by"),
+                            aData.getString("last_modified_date"), aData.getString("pgid"), aData.getString("extjson1"),
+                            aData.getString("extjson2"), aData.getString("extjson3"), aData.getString("extjson4"),
+                            aData.getString("extjson5") });
+            return true;
+        }
+
+    }
+
+    private List<Map<String, Object>> isRepairDuplicate(JSONObject aData) throws DataAccessException, ParseException {
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        List<Map<String, Object>> result = jdbcTemplate.queryForList(
+                "select * from itf_repair_batch_download_rec where pgid=? and last_modified_date=?",
+                new Object[] { aData.getString("pgid"), sdf.parse(aData.getString("last_modified_date")) });
+
+        return result;
+    }
+
+    private boolean recHasNoUploadStatus(List<Map<String, Object>> rec) {
+        for (Map<String, Object> data : rec) {
+            int greeStatSynStatus = (Integer) data.get("gree_stat_syn_status");
+            if (greeStatSynStatus == 0) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private void parseData(JSONObject sheet, String[] srcTabnameArray, String[] srcTabColListArray,
+                           String[] destTabNameArray, String[] destTabColListArray, String downloadTaskNo, boolean isInstall,
+                           String downloadBatchNo) throws Exception {
+
+        for (int i = 0; i < srcTabnameArray.length; i++) {
+
+            String srcTabname = srcTabnameArray[i];
+            String srcTabColList = srcTabColListArray[i];
+            String destTabName = destTabNameArray[i];
+            String destTabColList = destTabColListArray[i];
+
+            String[] arySrcTabCol = srcTabColList.split("\\Q,\\E");
+
+            JSONArray tableData = new JSONArray();
+
+            if (isInstall) {
+                tableData = sheet.getJSONArray(srcTabname.toUpperCase());
+            } else {
+                if ("tblAssign".equalsIgnoreCase(DataUtil.fromDbName2ServiceName(srcTabname))) {
+                    tableData = new JSONArray();
+                    tableData.add(sheet.getJSONObject("tblAssign"));
+                } else {
+                    tableData = sheet.getJSONArray(DataUtil.fromDbName2ServiceName(srcTabname));
+                }
+
+            }
+
+            if (tableData == null){
+                continue;
+            }
+
+            for (int j = 0; j < tableData.size(); j++) {
+                parseAData(isInstall, downloadBatchNo, downloadTaskNo, destTabName, destTabColList, arySrcTabCol,
+                        tableData.getJSONObject(j));
+            }
+        }
+    }
+
+    public void parseAData(boolean isInstall, String downloadBatchNo, String downloadTaskNo, String destTabName,
+                           String destTabColList, String[] arySrcTabCol, JSONObject aData) throws Exception {
+        String table = "itf_tbl_az_assign_platform_download";
+        String daijian = "itf_tbl_assign_daijian_download";
+        String yd = "itf_tbl_assign_xzyd_download";
+
+        String[] arySrcTabColValue = new String[arySrcTabCol.length];
+
+        for (int j = 0; j < arySrcTabCol.length; j++) {
+            if (isInstall) {
+                if (destTabName.equals(table) && (j==2 || j== 4 || j==9)){
+                    if (StringUtils.isEmpty(DataUtil.findValue(DataUtil.fromDbName2ServiceName(arySrcTabCol[j].trim()),aData))){
+                        arySrcTabColValue[j] = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+                        continue;
+                    }
+                }
+                arySrcTabColValue[j] = DataUtil.findValue(DataUtil.fromDbName2ServiceName(arySrcTabCol[j].trim()),
+                        aData);
+            } else {
+                if (destTabName.equals(daijian)){
+                    //创建时间 cjdt
+                    DataUtil.initLastModifiedDate(aData,"cjdt");
+                    // 商品大类 splb
+                    DataUtil.initOther(aData,"splb");
+                    // 替换编码销售公司库存 thbmxsgsnum
+                    DataUtil.initOther(aData,"thbmxsgsnum");
+                    // 替换编码区域库存 thbmqynum
+                    DataUtil.initOther(aData,"thbmqynum");
+                    // 替换编码网点库存 thbmwdnum
+                    DataUtil.initOther(aData,"thbmwdnum");
+                    // 配件系统处理标识 pjxtflag
+                    DataUtil.initOther(aData,"pjxtflag");
+                    // 区域配件库存 djquyunum
+                    DataUtil.initOther(aData,"djquyunum");
+                    // 销售公司配件库存 djxsgsnum
+                    DataUtil.initOther(aData,"djxsgsnum");
+                    // 网点配件库存 djwdnum
+                    DataUtil.initOther(aData,"djwdnum");
+                } else if (destTabName.equals(yd)){
+                    DataUtil.initOther(aData,"cshu");
+                    DataUtil.initOther(aData,"ydbz");
+                }
+
+                String colName = arySrcTabCol[j].trim();
+                arySrcTabColValue[j] = DataUtil.findValue(colName, aData);
+                if (getNullColSet().contains(colName)) {
+                    if ("".equals(arySrcTabColValue[j])) {
+                        arySrcTabColValue[j] = null;
+                    }
+                }
+            }
+        }
+
+        insertAData(downloadBatchNo, downloadTaskNo, destTabName, destTabColList, arySrcTabColValue);
+    }
+
+    public void insertAData(String downloadBatchNo, String downloadTaskNo, String destTabName, String destTabColList,
+                            Object[] arySrcTabColValue) throws Exception {
+
+        StringBuffer mark = new StringBuffer();
+        for (int i = 0; i < arySrcTabColValue.length; i++) {
+            if (mark.length() > 0) {
+                mark.append(",");
+            }
+            mark.append("?");
+        }
+
+        String sql = "insert into " + destTabName + " (download_batch_no,download_task_no," + destTabColList
+                + ") values (?,?," + mark + ") ";
+
+        Object[] insertValue = new Object[arySrcTabColValue.length + 2];
+        insertValue[0] = downloadBatchNo;
+        insertValue[1] = downloadTaskNo;
+        System.arraycopy(arySrcTabColValue, 0, insertValue, 2, arySrcTabColValue.length);
+        jdbcTemplate.update(sql, insertValue);
+
+    }
+
+    private synchronized Set<String> getNullColSet(){
+        if(nullDateCols==null) {
+            nullDateCols=new HashSet<String>();
+            String[] nullColArray=nullCols.split("\\Q,\\E");
+            for(String value:nullColArray) {
+                nullDateCols.add(value);
+            }
+        }
+        return nullDateCols;
+    }
+
+
+
+}

+ 1789 - 0
src/main/java/com/zfire/jiasm/syncdata/service/impl/RepairProduceDataUploadServiceImpl.java

@@ -0,0 +1,1789 @@
+package com.zfire.jiasm.syncdata.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+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.GDAppointStatusEnum;
+import com.zfire.jiasm.syncdata.constant.GDOrderStatusEnum;
+import com.zfire.jiasm.syncdata.constant.OrderTypeEnum;
+import com.zfire.jiasm.syncdata.constant.TaskConfigEnum;
+import com.zfire.jiasm.syncdata.dao.mapper.*;
+import com.zfire.jiasm.syncdata.data.Token;
+import com.zfire.jiasm.syncdata.parameter.InstallCJDetailFile;
+import com.zfire.jiasm.syncdata.parameter.OrderPar;
+import com.zfire.jiasm.syncdata.parameter.ReAppointment;
+import com.zfire.jiasm.syncdata.plus.entity.*;
+import com.zfire.jiasm.syncdata.plus.service.*;
+import com.zfire.jiasm.syncdata.response.WebsitSH;
+import com.zfire.jiasm.syncdata.service.PublicService;
+import com.zfire.jiasm.syncdata.service.RepairProduceDataUploadService;
+import com.zfire.jiasm.syncdata.utils.*;
+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.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+
+@Slf4j
+@Service
+public class RepairProduceDataUploadServiceImpl implements RepairProduceDataUploadService {
+    @Value("${baseurl4pgid}")
+    private String baseurl4pgid;
+    @Value("${baseurl}")
+    private String baseurl;
+    @Value("${wxuploadyscc}")
+    private String wxuploadyscc = "";
+
+
+
+    @Autowired
+    private TokenCenter tokenCenter;
+    @Resource
+    BaseService baseService;
+    @Resource
+    OutJiasmToGreeUploadTaskTypeService outJiasmToGreeUploadTaskTypeService;
+    @Resource
+    OutJiasmToGreeUploadTaskListService outJiasmToGreeUploadTaskListService;
+    @Resource
+    OrderBaseService orderBaseService;
+    @Resource
+    OrderProductService orderProductService;
+    @Resource
+    OrderRepairOperatingLogService orderRepairOperatingLogService;
+    @Resource
+    FaGreeSmsService faGreeSmsService;
+    @Resource
+    GDOrderBaseMapper gdOrderBaseMapper;
+    @Resource
+    OrderRepairService orderRepairService;
+    @Resource
+    PublicService publicService;
+    @Resource
+    BrandLbsRelateService brandLbsRelateService;
+    @Resource
+    StreetService streetService;
+    @Resource
+    AreaService areaService;
+    @Resource
+    ItfTblAssignUploadService itfTblAssignUploadService;
+    @Resource
+    ItfMessagehuifangentityService itfMessagehuifangentityService;
+    @Resource
+    FileOrderDetailMapper fileOrderDetailMapper;
+    @Resource
+    OrderRepairDetailService orderRepairDetailService;
+    @Resource
+    DetailOrderRepairMapper detailOrderRepairMapper;
+    @Resource
+    ItfTblWxjsJyktUploadService itfTblWxjsJyktUploadService;
+    @Resource
+    OrderRepairDetailReasonService orderRepairDetailReasonService;
+    @Resource
+    ItfTblWxjsXxyyJyktUploadService itfTblWxjsXxyyJyktUploadService;
+    @Resource
+    OrderDetailFileService orderDetailFileService;
+    @Resource
+    ItfTblWxjsFjJyktUploadService itfTblWxjsFjJyktUploadService;
+    @Resource
+    OrderRepairDetailItemService orderRepairDetailItemService;
+    @Resource
+    ReasonOrderRepairDetailMapper reasonOrderRepairDetailMapper;
+    @Resource
+    ItfTblWxjsWxxmJyktUploadService itfTblWxjsWxxmJyktUploadService;
+    @Resource
+    ItfTblAssignFeeUploadService itfTblAssignFeeUploadService;
+    @Resource
+    ItfTblWxjsPjmxJyktUploadService itfTblWxjsPjmxJyktUploadService;
+    @Resource
+    WxjsJyktUploadMapper wxjsJyktUploadMapper;
+    @Resource
+    ItfTblwxjsjyktService itfTblwxjsjyktService;
+    @Resource
+    ItfTblwxjsxxyyjyktService itfTblwxjsxxyyjyktService;
+    @Resource
+    ItfTblwxjswxxmjyktService itfTblwxjswxxmjyktService;
+    @Resource
+    ItfTblwxjspjmxjyktService itfTblwxjspjmxjyktService;
+    @Resource
+    ItfTblwxjsfjjyktService itfTblwxjsfjjyktService;
+    @Resource
+    GetOrderProductMapper getOrderProductMapper;
+    @Resource
+    ItfTblAssignMxUploadService itfTblAssignMxUploadService;
+    @Resource
+    RepairLogMapper repairLogMapper;
+    @Resource
+    ItfTblAssignFkmxUploadService itfTblAssignFkmxUploadService;
+    @Resource
+    ItfTblAssignAppointmentUploadService itfTblAssignAppointmentUploadService;
+    @Resource
+    FaGreeSmsWorkerService faGreeSmsWorkerService;
+    @Resource
+    OrderReAppointmentService orderReAppointmentService;
+    @Resource
+    BrandWebsitService brandWebsitService;
+    @Resource
+    ReAppointmentOrderMapper reAppointmentOrderMapper;
+
+
+
+    @Override
+    public void processRepairProduceDataUpload() throws Exception {
+
+        if (wxuploadyscc.equals(TaskConfigEnum.FALSE.getCode())){
+            return;
+        }
+
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        // 提取品牌信息
+        Brand brand = baseService.getBrand();
+        if (brand == null) {
+            return;
+        }
+
+        // 提取品牌商对应的需求小类信息
+        Map<String, List<SysDictRef>> sysDictRefXLMapXq = publicService.getListMapXqtoPP(brand);
+
+        log.info("开始生成需要上传的修修工单数据: \uF0B7{}",sdf.format(new Date()));
+
+        Token token = tokenCenter.getCurrentToken();
+
+        // 1:类型定义表中提取数据
+        List<OutJiasmToGreeUploadTaskType> taskTypes = outJiasmToGreeUploadTaskTypeService.lambdaQuery()
+                .orderByAsc(OutJiasmToGreeUploadTaskType::getId).list();
+        try{
+            for (OutJiasmToGreeUploadTaskType taskType:taskTypes){
+                // 任务类型
+                int uploadTaskType = taskType.getUploadTaskType();
+                // 需从格力系统获取的列名
+                String greekeyName = taskType.getGreekeyName();
+                // 获取列名对应的表名
+                String srcTabNameForGreekey = taskType.getSrcTabNameForGreekey();
+                // 列名(greekeyName)的获取方式
+                String greekeyGetMode = taskType.getGreekeyGetMode();
+
+                String greeInsColList = (String) taskType.getGreeInsColList();
+                if (greeInsColList == null) {
+                    greeInsColList = "";
+                }
+                // 2:数据上传任务清单表中提取对应任务类型的需要上传的数据
+                List<OutJiasmToGreeUploadTaskList> result = outJiasmToGreeUploadTaskListService.lambdaQuery()
+                        .eq(OutJiasmToGreeUploadTaskList::getSynStatus,0)
+                        .eq(OutJiasmToGreeUploadTaskList::getUploadTaskType,uploadTaskType)
+                        .orderByAsc(OutJiasmToGreeUploadTaskList::getSynReqId).list();
+                // 相同任务类型的数据逐个处理
+                for (OutJiasmToGreeUploadTaskList row: result){
+                    Long taskId = row.getSynReqId();
+                    try {
+                        OutJiasmToGreeUploadTaskList sourceData = outJiasmToGreeUploadTaskListService.lambdaQuery()
+                                .eq(OutJiasmToGreeUploadTaskList::getSynReqId,taskId).one();
+                        if (!sourceData.getSynStatus().equals(0)){
+                            continue;
+                        }
+
+                        String newDykh = "";
+                        // 需从格力总部获取相对列值  维修工单的pgid从格力总部获取
+                        if (greekeyName != null && greekeyName.trim().length() > 0 && srcTabNameForGreekey != null
+                                && srcTabNameForGreekey.trim().length() > 0) {
+                            newDykh = getpgid(token, uploadTaskType, srcTabNameForGreekey, greekeyGetMode, row, newDykh);
+                        }
+
+                        // 过程名称,同步任务表中的id,同步任务表中的工单号,同步任务表中的需同步的表的主键,newDykh(pgid-主键),true
+                        // 66 - TL_PrePareSynDataby_fa_order_repair_test
+                        // 维修工单 基础表数据同步
+                        if (row.getTableName().equals("order_base") &&
+                                row.getOrderType().equals(OrderTypeEnum.ORDER_TYPE_REPAIR.getCode())){
+                            if (uploadTaskType==66){
+                                generateItfTblAssignUpload(brand, sysDictRefXLMapXq, taskId,
+                                        sourceData, newDykh, row);
+                            } else if (uploadTaskType==661){
+                                // 661 - TL_PrePareSynDataby_assign_cj
+                                generateItfTblAssignUploadTow(brand, row, sourceData, newDykh);
+                            }
+                        } else if (row.getTableName().equals("order_product") &&
+                                row.getOrderType().equals(OrderTypeEnum.ORDER_TYPE_REPAIR.getCode())){
+                            // 生成维修单明细数据 TL_PrePareSynDataby_fa_order_repair_product    68
+                            generateOrderProduct(brand, uploadTaskType, row, sourceData, newDykh);
+                        } else if (row.getTableName().equals("order_repair_operating_log")){
+                            // 生成维修单过程反馈数据 TL_PrePareSynDataby_fa_order_repair_operating_log   67
+                            // 原预约改约在这里处理 现移到下面 order_re_appointment
+                            generateItfTblAssignFkmxUpload(brand, uploadTaskType,row, taskId, sourceData, newDykh);
+                        } else if (row.getTableName().equals("order_re_appointment") &&
+                                row.getOrderType().equals(OrderTypeEnum.ORDER_TYPE_REPAIR.getCode())){
+                            // 安装工单用户改约明细 与操作明细最好放在一起,因表设计分开,所以独立开来处理
+                            getAppointment(row);
+                        }
+                    } catch (Exception ex) {
+                        ex.printStackTrace();
+                        log.info("开始预处理生成需要上传的维修工单数据出错: "+taskId);
+                    }
+                    // 修改 itf_fa_to_gree_upload_task_list
+                }
+            }
+            log.info("生成需要上传的维修工单数据结束: \uF0B7{}",sdf.format(new Date()));
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            log.info("开始预处理生成需要上传的维修工单数据出错");
+        }
+    }
+
+
+    @Transactional(rollbackFor = Exception.class)
+    public void generateItfTblAssignFkmxUpload(Brand brand, int uploadTaskType, OutJiasmToGreeUploadTaskList row, Long taskId,
+                                               OutJiasmToGreeUploadTaskList sourceData, String newDykh) {
+        // 提取工单数据
+        OrderBase orderBase = orderBaseService.lambdaQuery()
+                .eq(OrderBase::getId, sourceData.getOrderNo()).one();
+        if (StringUtils.isEmpty(orderBase.getPgid())){
+            publicService.updateUploadTaskLisError(sourceData,"order_base表pgid为空暂不同步");
+            return;
+        }
+
+        // 修改日志表pgid   getpgid方法已处理
+        // 修改当前ID的 fkid该值通过接口获取的
+        upfkid(sourceData,newDykh);
+        // 修改日志表内部序列outid + 自生成 fkmxguid
+        upOrderRepairOperatingLogOutId(orderBase);
+        // 生成维修单过程反馈数据
+        getItfTblAssignFkmxUpload(brand, taskId, sourceData,orderBase);
+        // 改约或者预约时增加写 itf_tbl_assign_appointment_upload 这里不再处理移动外面单独处理
+        // getItfTblAssignAppointmentUpload(sourceData);
+
+        // 修改数据上传任务表中的状态   这里固定值 68
+        publicService.updateUploadTaskListStatus(row.getOrderNo(), row.getSynReqId(),1, uploadTaskType);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public  void getAppointment(OutJiasmToGreeUploadTaskList ojtutl) {
+        OrderBase orderBase = orderBaseService.lambdaQuery()
+                .eq(OrderBase::getId, ojtutl.getOrderNo()).one();
+
+        if (orderBase !=null ){
+            // 修改内部序列outid
+            upOutId(orderBase);
+
+            ReAppointment request = new ReAppointment();
+            request.setOrderNo(ojtutl.getOrderNo());
+            request.setId(ojtutl.getId());
+            ItfTblAssignAppointmentUpload add = reAppointmentOrderMapper.getAppointment(request);
+            itfTblAssignAppointmentUploadService.save(add);
+        }
+
+        // 修改数据上传任务表中的状态 单号,id,同步状态,类型
+        publicService.updateUploadTaskListStatus(ojtutl.getOrderNo(), ojtutl.getSynReqId(),1, ojtutl.getUploadTaskType());
+    }
+
+    private void upOutId(OrderBase orderBase) {
+        List<OrderReAppointment> upList = new ArrayList<>();
+
+        List<OrderReAppointment> detaillist = orderReAppointmentService.lambdaQuery()
+                .eq(OrderReAppointment::getOrderBaseId, orderBase.getId())
+                .orderByAsc(OrderReAppointment::getCreateTime).list();
+
+        int outId=0;
+        if (detaillist!=null && detaillist.size()>0){
+            // 找出最大的序 默认值为0
+            for (OrderReAppointment item:detaillist){
+                if (outId<item.getOutId()){
+                    outId = item.getOutId();
+                }
+            }
+
+            for (OrderReAppointment ite:detaillist){
+                if (ite.getOutId() == 0){
+                    outId++;
+                    OrderReAppointment n = new OrderReAppointment();
+                    n.setId(ite.getId());
+                    n.setOutId(outId);
+                    n.setUpdateTime(new Date());
+                    upList.add(n);
+                }
+            }
+            // 修改序
+            if (upList.size()>0){
+                orderReAppointmentService.updateBatchById(upList);
+                upList.clear();
+            }
+        }
+    }
+
+    private void upOrderRepairOperatingLogOutId(OrderBase orderBase) {
+        List<OrderRepairOperatingLog> upList = new ArrayList<>();
+        List<OrderRepairOperatingLog> upfkmxList = new ArrayList<>();
+
+        List<OrderRepairOperatingLog> detaillist = orderRepairOperatingLogService.lambdaQuery()
+                .eq(OrderRepairOperatingLog::getOrderBaseId, orderBase.getId())
+                .orderByAsc(OrderRepairOperatingLog::getCreateTime).list();
+        // 找出最大的序 默认值为0
+        int outId=0;
+        if (detaillist!=null && detaillist.size()>0){
+            for (OrderRepairOperatingLog item:detaillist){
+                if (outId<item.getOutId()){
+                    outId = item.getOutId();
+                }
+                if (StringUtils.isEmpty(item.getFkmxguid())){
+                    OrderRepairOperatingLog n = new OrderRepairOperatingLog();
+                    n.setId(item.getId());
+                    n.setFkmxguid(IdWorker.getIdStr());
+                    n.setUpdateTime(new Date());
+                    upfkmxList.add(n);
+                }
+            }
+            for (OrderRepairOperatingLog ite:detaillist){
+                if (ite.getOutId() == 0){
+                    outId++;
+                    OrderRepairOperatingLog n = new OrderRepairOperatingLog();
+                    n.setId(ite.getId());
+                    n.setOutId(outId);
+                    n.setUpdateTime(new Date());
+                    upList.add(n);
+                }
+            }
+            // 修改序
+            if (upList.size()>0){
+                orderRepairOperatingLogService.updateBatchById(upList);
+                upList.clear();
+            }
+            detaillist.clear();
+            if (upfkmxList.size()>0){
+                orderRepairOperatingLogService.updateBatchById(upfkmxList);
+                upfkmxList.clear();
+            }
+        }
+    }
+
+    private void upfkid(OutJiasmToGreeUploadTaskList sourceData,String newDykh) {
+        OrderPar request = new OrderPar();
+        request.setId(sourceData.getId());
+        request.setOrderNo(sourceData.getOrderNo());
+        request.setFkid(newDykh);
+        repairLogMapper.upRepairLogFkid(request);
+    }
+
+    private void getItfTblAssignAppointmentUpload(OutJiasmToGreeUploadTaskList sourceData) {
+        OrderPar req = new OrderPar();
+        req.setId(sourceData.getId());
+        req.setOrderNo(sourceData.getOrderNo());
+        ItfTblAssignAppointmentUpload app = repairLogMapper.getItfTblAssignAppointmentUpload(req);
+        if (app != null){
+            itfTblAssignAppointmentUploadService.save(app);
+        }
+    }
+
+    @NotNull
+    private void getItfTblAssignFkmxUpload(Brand brand, Long taskId, OutJiasmToGreeUploadTaskList sourceData, OrderBase orderBase) {
+        OrderPar req = new OrderPar();
+        WebsitSH websitSH = new WebsitSH();
+        req.setId(sourceData.getId());
+        req.setOrderNo(sourceData.getOrderNo());
+        req.setBrandId(brand.getBrandId());
+        ItfTblAssignFkmxUpload fkmx = repairLogMapper.getItfTblAssignFkmxUpload(req);
+        // 售后网点处理
+        websitSH = publicService.ptshwdToshshwd(fkmx.getFkwdno(), orderBase.getMainId());
+        fkmx.setFkwdno(websitSH.getWdId());
+        fkmx.setFkwdmc(websitSH.getWdmc());
+
+
+        fkmx.setUploadTaskSynReqId(taskId);
+        fkmx.setWorkerOrderNo(sourceData.getOrderNo());
+        itfTblAssignFkmxUploadService.save(fkmx);
+    }
+
+    /**
+     * 过程名称,out_jiasm_to_gree_upload_task_list同步任务表中的id,
+     * 同步任务表中的工单号,需同步的表的主键,newDykh(OrderProduct.pgmxid品牌方主键),true
+     * TL_PrePareSynDataby_fa_order_repair_product
+     * @param brand
+     * @param uploadTaskType
+     * @param row
+     * @param sourceData
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void generateOrderProduct(Brand brand, int uploadTaskType, OutJiasmToGreeUploadTaskList row,
+                                     OutJiasmToGreeUploadTaskList sourceData, String newDykh) {
+        // 提取工单数据
+        OrderProduct op = orderProductService.lambdaQuery()
+                .eq(OrderProduct::getId,row.getId()).one();
+        if (op == null){
+            publicService.updateUploadTaskLisError(sourceData,"找不到对应记录:"+row.getId());
+            return;
+        }
+        if (StringUtils.isEmpty(op.getPgid())){
+            publicService.updateUploadTaskLisError(sourceData,"order_product表pgid为空不同步");
+            return;
+        }
+
+        // order_product.pgmxid是直接在表内取出来的 无值的话调接口获取
+        // 修改对应ID的pgmxid
+        upPgmxid(row, sourceData, newDykh);
+
+        // 修改内部序
+        upOrderProductOutId(sourceData);
+
+        // 生成数据
+        getItfTblAssignMxUpload(brand, sourceData);
+
+        // 修改数据上传任务表中的状态   这里固定值 68
+        publicService.updateUploadTaskListStatus(row.getOrderNo(), row.getSynReqId(),1, uploadTaskType);
+    }
+
+    private void upOrderProductOutId(OutJiasmToGreeUploadTaskList sourceData) {
+        List<OrderProduct> upList = new ArrayList<>();
+        List<OrderProduct> oplist = orderProductService.lambdaQuery()
+                .eq(OrderProduct::getOrderBaseId, sourceData.getOrderNo())
+                .orderByAsc(OrderProduct::getCreateTime).list();
+        // 找出最大的序 默认值为0
+        int outId=0;
+        if (oplist!=null && oplist.size()>0){
+            for (OrderProduct item:oplist){
+                if (outId<item.getOutId()){
+                    outId = item.getOutId();
+                }
+            }
+            for (OrderProduct ite:oplist){
+                if (ite.getOutId() == 0){
+                    outId++;
+                    OrderProduct n = new OrderProduct();
+                    n.setId(ite.getId());
+                    n.setOutId(outId);
+                    n.setUpdateTime(new Date());
+                    upList.add(n);
+                }
+            }
+            // 修改序
+            if (upList.size()>0){
+                orderProductService.updateBatchById(upList);
+                upList.clear();
+            }
+            oplist.clear();
+        }
+    }
+
+    private void getItfTblAssignMxUpload(Brand brand, OutJiasmToGreeUploadTaskList sourceData) {
+        OrderPar request = new OrderPar();
+        WebsitSH websitSH = new WebsitSH();
+        OrderBase orderBase = orderBaseService.lambdaQuery()
+                .eq(OrderBase::getId,sourceData.getOrderNo()).one();
+
+        request.setBrandId(brand.getBrandId());
+        request.setId(sourceData.getId());
+        request.setOrderNo(sourceData.getOrderNo());
+        ItfTblAssignMxUpload mx = getOrderProductMapper.getItfTblAssignMxUpload(request);
+        mx.setWorkerOrderNo(sourceData.getOrderNo());
+        // 销售单位处理
+        websitSH = publicService.ptxswdToshxswd(mx.getXsdw(),orderBase.getMainId());
+        mx.setXsdw(websitSH.getWdId());
+        // 服务单位处理 售后网点处理
+        websitSH = publicService.ptshwdToshshwd(orderBase.getReceWebsitId(),orderBase.getMainId());
+        mx.setFwdw(websitSH.getWdId());
+        mx.setCzwd(websitSH.getWdId());
+
+
+        itfTblAssignMxUploadService.save(mx);
+    }
+
+    private void upPgmxid(OutJiasmToGreeUploadTaskList row, OutJiasmToGreeUploadTaskList sourceData, String newDykh) {
+        OrderPar orderPar = new OrderPar();
+        orderPar.setOrderNo(sourceData.getOrderNo());
+        orderPar.setPgid(newDykh);
+        orderPar.setId(row.getId());
+        getOrderProductMapper.upPgmxid(orderPar);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void generateItfTblAssignUploadTow(Brand brand, OutJiasmToGreeUploadTaskList row, OutJiasmToGreeUploadTaskList sourceData, String newDykh) {
+        // 过程名称,同步任务表中的id,同步任务表中的工单号,同步任务表中的需同步的表的主键,newDykh(pgid-主键),true
+        // 同步任务表中的id,同步任务表中的工单号,同步任务表中的需同步的表的主键,newDykh(pgid-主键)
+        // 661 - TL_PrePareSynDataby_assign_cj
+
+        // 提取工单数据
+        OrderBase orderBase = orderBaseService.lambdaQuery()
+                .eq(OrderBase::getId, sourceData.getOrderNo()).one();
+        // 删除工单更新被忽略
+        // 修改工单的pgid,pgguid
+        uppare(newDykh, orderBase);
+
+        // 如果无附件则忽略结算数据上传处理
+        if (checkFile(row, orderBase)) {
+            return ;
+        }
+        // 生成数据
+        if (generateData(brand, orderBase)) {
+            return ;
+        }
+        // 修改数据上传任务表中的状态   这里固定值 661
+        publicService.updateUploadTaskListStatus(row.getOrderNo(), row.getSynReqId(),1,661);
+        return ;
+    }
+
+    private boolean generateData(Brand brand, OrderBase orderBase) {
+        // 工单,采集表id,uuid, TL_fa_order_repair_detail_js
+        // j_syn_task_no 统一uuid
+        String j_syn_task_no = UUID.randomUUID().toString();
+        // 提取所有采集数据
+        List<OrderRepairDetail> ords = orderRepairDetailService.lambdaQuery()
+                .eq(OrderRepairDetail::getOrderBaseId, orderBase.getId()).list();
+        for (OrderRepairDetail item :ords){
+            // 状态:0=待采集,1=采集中,2=已采集,3=已完成
+            if (item.getStatus().equals(0)){
+                // 有一个待采全部不再处理
+                return true;
+            }
+            // 生成维修结算数据 itf_tbl_wxjs_jykt_upload
+            Long synReqId = generateJyktData(brand, orderBase, item);
+            // 生成维修结算2表数据
+            generateJyktDataTow(orderBase, item, synReqId,j_syn_task_no);
+            // 生成维修现象+维修现象2表数据 TL_fa_order_repair_fault_info_js
+            generateItfTblwxjsxxyyjyktAndTow(j_syn_task_no, item);
+            //  生成附件数据+附件数据2表数据 TL_fa_order_repair_annex_js
+            if (generateInstallCJDetailFileAndTow(orderBase, j_syn_task_no, item)) {
+                return true;
+            }
+            // 生成维修项目现象、维修项目现象2数据 TL_fa_order_repair_data_info_js
+            if (generateItfTblWxjsWxxmJyktUploadAndTow(orderBase, j_syn_task_no, item)){
+                return true;
+            }
+            // 生成配件、配件2表数据 TL_fa_order_repair_part_info_js
+            generateItfTblWxjsPjmxJyktUploadAndTow(orderBase, j_syn_task_no, item);
+        }
+        return false;
+    }
+
+    private boolean checkFile(OutJiasmToGreeUploadTaskList row, OrderBase orderBase) {
+        // 提取附件数据
+        List<OrderDetailFile> files = orderDetailFileService.lambdaQuery()
+                .eq(OrderDetailFile::getOrderBaseId, orderBase.getId()).list();
+        if (files !=null && files.size()>0){
+            // 检查附件的完整性 不完整取消上传
+            if (checkFiles(orderBase)) {
+                // 结束
+                return true;
+            }
+        } else {
+            // 修改数据上传任务表中的状态   这里固定值 661
+            publicService.updateUploadTaskListStatus(row.getOrderNo(), row.getSynReqId(),1,661);
+            return true;
+        }
+        return false;
+    }
+
+    private void uppare(String newDykh, OrderBase orderBase) {
+        if (StringUtils.isEmpty(orderBase.getPgid()) || StringUtils.isEmpty(orderBase.getPgguid())){
+            OrderBase up = new OrderBase();
+            up.setId(orderBase.getId());
+            if (StringUtils.isEmpty(orderBase.getPgid())){
+                up.setPgid(newDykh);
+                orderBase.setPgguid(newDykh);
+            }
+            if (StringUtils.isEmpty(orderBase.getPgguid())){
+                up.setPgguid(UUID.randomUUID().toString());
+                orderBase.setPgguid(up.getPgguid());
+            }
+            orderBaseService.updateById(up);
+        }
+    }
+
+    private void generateItfTblWxjsPjmxJyktUploadAndTow(OrderBase orderBase, String j_syn_task_no, OrderRepairDetail item) {
+        // 提取配置件数据
+        List<OrderRepairDetailReason> reasons =  orderRepairDetailReasonService.lambdaQuery()
+                .eq(OrderRepairDetailReason::getOrderRepairDetailId, item.getId()).list();
+        for (OrderRepairDetailReason rs:reasons){
+            // 生成配件数据
+            ItfTblWxjsPjmxJyktUpload pj = generateItfTblWxjsPjmxJyktUpload(orderBase, rs);
+            // 配件2表数据
+            generateItfTblwxjspjmxjykt(j_syn_task_no, pj);
+        }
+    }
+
+    @NotNull
+    private ItfTblWxjsPjmxJyktUpload generateItfTblWxjsPjmxJyktUpload(OrderBase orderBase, OrderRepairDetailReason rs) {
+        OrderPar request = new OrderPar();
+        request.setId(rs.getId());
+        ItfTblWxjsPjmxJyktUpload pj = reasonOrderRepairDetailMapper.getItfTblWxjsPjmxJyktUpload(request);
+        pj.setWorkerOrderNo(orderBase.getId());
+        pj.setSynStatus(44);
+        itfTblWxjsPjmxJyktUploadService.save(pj);
+        return pj;
+    }
+
+    private void generateItfTblwxjspjmxjykt(String j_syn_task_no, ItfTblWxjsPjmxJyktUpload pj) {
+        ItfTblwxjspjmxjykt pjt = new ItfTblwxjspjmxjykt();
+        MyBeanUtils.copyProperties(pj,pjt);
+        pjt.setSynTaskNo(j_syn_task_no);
+        pjt.setId(pj.getWxjsmxguid());
+        itfTblwxjspjmxjyktService.save(pjt);
+    }
+
+    private boolean generateItfTblWxjsWxxmJyktUploadAndTow(OrderBase orderBase, String j_syn_task_no, OrderRepairDetail item) {
+        // 提取维修项目数据
+        List<OrderRepairDetailItem> ordList =  orderRepairDetailItemService.lambdaQuery()
+                .eq(OrderRepairDetailItem::getOrderRepairDetailId, item.getId()).list();
+        for (OrderRepairDetailItem ord: ordList){
+            // 确保采集现象表数据存在数据
+            OrderRepairDetailReason ordr =  orderRepairDetailReasonService.lambdaQuery()
+                    .eq(OrderRepairDetailReason::getOrderRepairDetailId, ord.getOrderRepairDetailId())
+                    .one();
+            if (ordr == null){
+                // 有一个有问题全部不处理
+                return true;
+            }
+            // 修改wxjsguid与明细表数据相同
+            if (StringUtils.isEmpty(ord.getWxjsguid())){
+                OrderRepairDetailItem up = new OrderRepairDetailItem();
+                up.setId(ord.getId());
+                up.setWxjsguid(ordr.getWxjsguid());
+                ord.setWxjsguid(ordr.getWxjsguid());
+            }
+            // 生成维修项目现象数据
+            ItfTblWxjsWxxmJyktUpload wxxm = generateItfTblWxjsWxxmJyktUpload(orderBase, ord);
+            // 生成维修项目现象2表数据
+            generateItfTblwxjswxxmjykt(j_syn_task_no, wxxm);
+        }
+        return false;
+    }
+
+    @NotNull
+    private ItfTblWxjsWxxmJyktUpload generateItfTblWxjsWxxmJyktUpload(OrderBase orderBase, OrderRepairDetailItem ord) {
+        OrderPar request = new OrderPar();
+        request.setId(ord.getId());
+        ItfTblWxjsWxxmJyktUpload wxxm = reasonOrderRepairDetailMapper.getItfTblWxjsWxxmJyktUpload(request);
+        wxxm.setWorkerOrderNo(orderBase.getId());
+        wxxm.setSynStatus(44);
+        itfTblWxjsWxxmJyktUploadService.save(wxxm);
+        return wxxm;
+    }
+
+    private void generateItfTblwxjswxxmjykt(String j_syn_task_no, ItfTblWxjsWxxmJyktUpload wxxm) {
+        // 查看维修结算2表数据有无插入成功
+        ItfTblwxjsjykt jskt = itfTblwxjsjyktService.lambdaQuery()
+                .eq(ItfTblwxjsjykt::getSynTaskNo, j_syn_task_no).one();
+        if (jskt !=null){
+            ItfTblwxjswxxmjykt xmt = new ItfTblwxjswxxmjykt();
+            MyBeanUtils.copyProperties(wxxm,xmt);
+            xmt.setSynTaskNo(j_syn_task_no);
+            xmt.setId(wxxm.getWxjsguid());
+            itfTblwxjswxxmjyktService.save(xmt);
+        }
+    }
+
+    private boolean generateInstallCJDetailFileAndTow(OrderBase orderBase, String j_syn_task_no, OrderRepairDetail item) {
+        // 提取数据采集附件数据
+        List<OrderDetailFile> odfs =  orderDetailFileService.lambdaQuery()
+                .eq(OrderDetailFile::getOrderBaseId, orderBase.getId())
+                .eq(OrderDetailFile::getOrderDetailId, item.getId()).list();
+        for (OrderDetailFile file:odfs){
+            // path未准备上传被忽略 有一个有问题全部不处理
+            if (StringUtils.isEmpty(file.getFilePath())){
+                return true;
+            }
+            // 品牌方fileindex未获取上传被忽略
+            if (StringUtils.isEmpty(file.getBrandFileIndex())){
+                return true;
+            }
+            // 修改附件的fjguid
+            if (StringUtils.isEmpty(file.getFjguid())){
+                OrderDetailFile upf = new OrderDetailFile();
+                upf.setId(file.getId());
+                upf.setFjguid(UUID.randomUUID().toString());
+                orderDetailFileService.updateById(upf);
+                file.setFjguid(upf.getFjguid());
+            }
+            // 修改采集明细序号 wxmxguid
+            if (StringUtils.isEmpty(file.getPgwcmxid())){
+                OrderDetailFile upf = new OrderDetailFile();
+                upf.setId(file.getId());
+                upf.setPgwcmxid(UUID.randomUUID().toString());
+                orderDetailFileService.updateById(upf);
+                file.setPgwcmxid(upf.getPgwcmxid());
+            }
+            // 生成附件数据
+            ItfTblWxjsFjJyktUpload fj = generateInstallCJDetailFile(orderBase, file);
+            // 生成附件2表数据
+            generateInstallCJDetailFileTow(j_syn_task_no, fj);
+        }
+        return false;
+    }
+
+    private void generateInstallCJDetailFileTow(String j_syn_task_no, ItfTblWxjsFjJyktUpload fj) {
+        ItfTblwxjsfjjykt fjt = new ItfTblwxjsfjjykt();
+        MyBeanUtils.copyProperties(fj,fjt);
+        fjt.setSynTaskNo(j_syn_task_no);
+        fjt.setCreatedBy(fj.getCreatedBy());
+        fjt.setCreatedDate(fj.getCreatedDate());
+        fjt.setFjIndex(fj.getFjIndex());
+        fjt.setId(fj.getFjguid());
+        fjt.setLastModifiedBy(fj.getLastModifiedBy());
+        fjt.setLastModifiedDate(fj.getLastModifiedDate());
+        itfTblwxjsfjjyktService.save(fjt);
+    }
+
+    @NotNull
+    private ItfTblWxjsFjJyktUpload generateInstallCJDetailFile(OrderBase orderBase, OrderDetailFile file) {
+        InstallCJDetailFile request = new InstallCJDetailFile();
+        request.setOrderNo(orderBase.getId());
+        request.setId(file.getId());
+        ItfTblWxjsFjJyktUpload fj = fileOrderDetailMapper.getItfTblWxjsFjJyktUpload(request);
+        fj.setFjIndex(fj.getFaOrderRepairAnnexId());
+        fj.setSynStatus(44);
+        itfTblWxjsFjJyktUploadService.save(fj);
+        return fj;
+    }
+
+    private void generateItfTblwxjsxxyyjyktAndTow(String j_syn_task_no, OrderRepairDetail item) {
+        // 维修数据采集故障现象表
+        // 提取维修数据采集故障现象数据  数据采集明细表的所有id
+        List<OrderRepairDetailReason> reasons =  orderRepairDetailReasonService.lambdaQuery()
+                .eq(OrderRepairDetailReason::getOrderRepairDetailId, item.getId()).list();
+        for (OrderRepairDetailReason r : reasons){
+            // 父级故障现象数据忽略上传
+            if (StringUtils.isEmpty(r.getRepairBugParentId()) || StringUtils.isEmpty(r.getNumber())){
+                continue;
+            }
+            // 修改 维修现象主键、维修明细主键
+            upxxyyguid(r);
+            // 生成维修现象数据
+            ItfTblWxjsXxyyJyktUpload add = generateJyktUT(item, r);
+            // 生成维修现象2表数据
+            generateItfTblwxjsxxyyjykt(j_syn_task_no, add);
+        }
+    }
+
+    private void generateItfTblwxjsxxyyjykt(String j_syn_task_no, ItfTblWxjsXxyyJyktUpload add) {
+        // 查看维修结算2表数据有无插入成功
+        ItfTblwxjsjykt jskt = itfTblwxjsjyktService.lambdaQuery()
+                .eq(ItfTblwxjsjykt::getSynTaskNo, j_syn_task_no).one();
+        if (jskt !=null){
+            ItfTblwxjsxxyyjykt ad = new ItfTblwxjsxxyyjykt();
+            ad.setSynTaskNo(j_syn_task_no);
+            ad.setWorkerOrderNo(add.getWorkerOrderNo());
+            ad.setCjsj(add.getCjsj());
+            ad.setCreatedBy(add.getCreatedBy());
+            ad.setCreatedDate(add.getCreatedDate());
+            ad.setGzpx(add.getGzpx());
+            ad.setId(add.getWxjsguid());
+            ad.setLastModifiedBy(add.getLastModifiedBy());
+            ad.setLastModifiedDate(ad.getLastModifiedDate());
+            ad.setMshu(add.getMshu());
+            ad.setWxjsguid(add.getWxjsguid());
+            ad.setWxjsmxguid(add.getWxjsmxguid());
+            ad.setXxyyh(add.getXxyyh());
+            ad.setXxyyhmc(add.getXxyyhmc());
+            itfTblwxjsxxyyjyktService.save(ad);
+        }
+    }
+
+    private void generateJyktDataTow(OrderBase orderBase, OrderRepairDetail item, Long synReqId, String j_syn_task_no) {
+        OrderPar request = new OrderPar();
+        request.setOrderNo(orderBase.getId());
+        request.setId(item.getId());
+        request.setSynReqId(synReqId);
+        ItfTblwxjsjykt jsjy = wxjsJyktUploadMapper.getItfTblWxjsJykt(request);
+        jsjy.setSynTaskNo(j_syn_task_no);
+        // 省市等信息单独处理
+        setssxcInfo(jsjy);
+        itfTblwxjsjyktService.save(jsjy);
+    }
+
+    private void setssxcInfo(ItfTblwxjsjykt jsjy) {
+        List<BrandLbsRelate> br;
+        // 街道处理
+        if (StringUtils.isNotEmpty(jsjy.getXzhen())){
+            br = brandLbsRelateService.lambdaQuery()
+                    .eq(BrandLbsRelate::getLbsStreetId, jsjy.getXzhen())
+                    .eq(BrandLbsRelate::getDel,0)
+                    .isNotNull(BrandLbsRelate::getStreetId).list();
+            if (br !=null && br.size()>0){
+                jsjy.setXzhen(br.get(0).getStreetId());
+                jsjy.setXian(br.get(0).getAreaId());
+                jsjy.setCshi(br.get(0).getCityId());
+                jsjy.setSfen(br.get(0).getProvinceId());
+
+                Street street = streetService.lambdaQuery()
+                        .eq(Street::getStatus, 1)
+                        .eq(Street::getProvinceId, jsjy.getSfen())
+                        .eq(Street::getCityId, jsjy.getCshi())
+                        .eq(Street::getAreaId, jsjy.getXian())
+                        .eq(Street::getStreetId, jsjy.getXzhen()).one();
+                if (street !=null){
+                    jsjy.setXzhen(street.getStreet());
+                    jsjy.setSfen(street.getProvince());
+                    jsjy.setCshi(street.getCity());
+                    jsjy.setXian(street.getArea());
+                    return;
+                }
+            }
+        }
+
+        // 总部区必选
+        br = brandLbsRelateService.lambdaQuery()
+                .eq(BrandLbsRelate::getLbsDistrictId, jsjy.getXian())
+                .eq(BrandLbsRelate::getDel,0)
+                .isNotNull(BrandLbsRelate::getAreaId).list();
+        if (br !=null && br.size()>0){
+            jsjy.setXian(br.get(0).getAreaId());
+        }
+
+        Area area = areaService.lambdaQuery()
+                .eq(Area::getAreaId, jsjy.getXian()).one();
+        if (area !=null){
+            jsjy.setSfen(area.getProvince());
+            jsjy.setCshi(area.getCity());
+            jsjy.setXian(area.getArea());
+        }
+    }
+
+    private Long generateJyktData(Brand brand, OrderBase orderBase, OrderRepairDetail item) {
+        ItfTblWxjsJyktUpload jykt = generateJykt(brand, orderBase, item);
+        jykt.setSynStatus(44);
+        itfTblWxjsJyktUploadService.save(jykt);
+        return jykt.getSynReqId();
+    }
+
+    private boolean checkFiles(OrderBase orderBase) {
+        // 检查内机条码附件完整性
+        InstallCJDetailFile installCJDetailFile = new InstallCJDetailFile();
+        installCJDetailFile.setOrderNo(orderBase.getId());
+        installCJDetailFile.setType(1);
+        OrderDetailFile detailFiles = fileOrderDetailMapper.getIdReT(installCJDetailFile);
+        if (detailFiles !=null){
+            // 采集表中提取数据
+            OrderRepairDetail ord = orderRepairDetailService.lambdaQuery()
+                    .eq(OrderRepairDetail::getId,detailFiles.getOrderDetailId()).one();
+            if (!ord.getType().equals("INSIDE")){
+                // 清理附件表
+                OrderDetailFile del = new OrderDetailFile();
+                del.setId(detailFiles.getId());
+                orderDetailFileService.removeById(del);
+            } else {
+                // 内机不完整上传被忽略
+                return true;
+            }
+        }
+        // 检查外机条码附件完整性
+        installCJDetailFile.setType(2);
+        detailFiles = fileOrderDetailMapper.getIdReT(installCJDetailFile);
+        if (detailFiles !=null){
+            // 采集表中提取数据
+            OrderRepairDetail ord = orderRepairDetailService.lambdaQuery()
+                    .eq(OrderRepairDetail::getId,detailFiles.getOrderDetailId()).one();
+
+            if (!ord.getType().equals("OUT")){
+                // 清理附件表
+                OrderDetailFile del = new OrderDetailFile();
+                del.setId(detailFiles.getId());
+                orderDetailFileService.removeById(del);
+            } else {
+                // 外机不完整上传被忽略
+                return true;
+            }
+        }
+        // 再次判断完整性
+        List<OrderDetailFile> odfs = fileOrderDetailMapper.getIdRe(installCJDetailFile);
+        if (odfs !=null && odfs.size()>0){
+            // 不完整上传被忽略
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 1: 生成维修工单主表数据
+     * 2:发短信评价
+     * 3:生成采集明细数据
+     *    维修数据采集故障现象表
+     *
+     *
+     *
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void generateItfTblAssignUpload(Brand brand, Map<String, List<SysDictRef>> sysDictRefXLMapXq,
+                                           Long taskId, OutJiasmToGreeUploadTaskList sourceData, String newDykh,
+                                           OutJiasmToGreeUploadTaskList row) {
+        // 提取工单数据
+        OrderBase orderBase = orderBaseService.lambdaQuery()
+                .eq(OrderBase::getId, sourceData.getOrderNo()).one();
+        // 删除工单更新被忽略
+        // 接收派工网点为空上传被忽略
+        if (StringUtils.isEmpty(orderBase.getReceWebsitId()) || orderBase.getReceWebsitId().equals("0")){
+            publicService.updateUploadTaskListStatus(row.getOrderNo(),row.getSynReqId(),1,66);
+            return ;
+        }
+        // 生成待同步的工单主表数据
+        getItfTblAssignUpload(brand, sysDictRefXLMapXq, taskId, sourceData, newDykh, orderBase);
+        // 生成短信评价发送数据
+        generateMessage(brand, sourceData, newDykh, orderBase);
+        // 检查附件完整性
+        if (checkFile(sourceData.getOrderNo(),row.getSynReqId())){
+            return ;
+        }
+        // 处理采集明细数据(生成维修结算+生成维修现象数据)    TL_PrePareSynDataby_fa_order_repair_detail
+        generateRepairDetailOrReason(brand, orderBase);
+
+
+        // 修改数据上传任务表中的状态   这里固定值 66
+        publicService.updateUploadTaskListStatus(row.getOrderNo(),row.getSynReqId(),1,66);
+        return ;
+    }
+
+
+    private Boolean checkFile(String orderNo, Long synReqId){
+        InstallCJDetailFile installCJDetailFile = new InstallCJDetailFile();
+        installCJDetailFile.setOrderNo(orderNo);
+        List<OrderDetailFile> detailFiles = fileOrderDetailMapper.getIdRe(installCJDetailFile);
+        if (detailFiles !=null && detailFiles.size()>0){
+            // 修改数据上传任务表中的状态
+            updateUploadTaskList(synReqId,9,"总部采集忽略上传或者广佛采集未得到格力图片ID");
+            return Boolean.TRUE;
+        }
+
+        return Boolean.FALSE;
+    }
+
+    private void generateRepairDetailOrReason(Brand brand, OrderBase orderBase) {
+        List<ItfTblWxjsJyktUpload> jykts = new ArrayList<>();
+        List<ItfTblWxjsXxyyJyktUpload>  jyktus = new ArrayList<>();
+        List<ItfTblWxjsFjJyktUpload> fjs = new ArrayList<>();
+        List<ItfTblWxjsWxxmJyktUpload> wxxms = new ArrayList<>();
+        List <ItfTblWxjsPjmxJyktUpload> pjs = new ArrayList<>();
+        List<ItfTblAssignFeeUpload> fees = new ArrayList<>();
+
+        // 提取采集的数据
+        List<OrderRepairDetail> orderRepairDetails = orderRepairDetailService.lambdaQuery()
+                .eq(OrderRepairDetail::getOrderBaseId, orderBase.getId())
+                .orderByAsc(OrderRepairDetail::getId)
+                .list();
+        if (orderRepairDetails !=null && orderRepairDetails.size()>0){
+            for (OrderRepairDetail detail :orderRepairDetails){
+                // status 状态:0=待采集,1=采集中,2=已采集,3=已完成
+                if (detail.getStatus().equals(0)){
+                    continue;
+                }
+                // 生成维修结算数据
+                jykts.add(generateJykt(brand, orderBase, detail));
+                // 生成维修现象数据   TL_PrePareSynDataby_fa_order_repair_fault_info
+                generateReason(jyktus, detail);
+                // 生成维修数据采集附件数据  TL_PrePareSynDataby_fa_order_repair_annex
+                generateFile(orderBase, detail, fjs);
+                // 生成维修项目现象、维修费用数据 TL_PrePareSynDataby_fa_order_repair_data_info
+                generateFee(orderBase, detail,brand, wxxms, fees);
+                // 生成配件数据  TL_PrePareSynDataby_fa_order_repair_part_info
+                generatePj(orderBase, pjs, detail);
+            }
+
+            if (jykts.size()>0){
+                itfTblWxjsJyktUploadService.saveBatch(jykts);
+                jykts.clear();
+            }
+            if (jyktus.size()>0){
+                itfTblWxjsXxyyJyktUploadService.saveBatch(jyktus);
+                jyktus.clear();
+            }
+            if (fjs.size()>0){
+                itfTblWxjsFjJyktUploadService.saveBatch(fjs);
+                fjs.clear();
+            }
+            if (wxxms.size()>0){
+                itfTblWxjsWxxmJyktUploadService.saveBatch(wxxms);
+                wxxms.clear();
+            }
+            if (fees.size()>0){
+                itfTblAssignFeeUploadService.saveBatch(fees);
+                fees.clear();
+            }
+            if (pjs.size()>0){
+                itfTblWxjsPjmxJyktUploadService.saveBatch(pjs);
+                pjs.clear();
+            }
+        }
+    }
+
+    private void generatePj(OrderBase orderBase, List<ItfTblWxjsPjmxJyktUpload> pjs, OrderRepairDetail detail) {
+        // 提取配置件数据
+        List<OrderRepairDetailReason> reasons =  orderRepairDetailReasonService.lambdaQuery()
+                .eq(OrderRepairDetailReason::getOrderRepairDetailId, detail.getId()).list();
+        for (OrderRepairDetailReason rs:reasons){
+            OrderPar request = new OrderPar();
+            request.setId(rs.getId());
+            ItfTblWxjsPjmxJyktUpload pj = reasonOrderRepairDetailMapper.getItfTblWxjsPjmxJyktUpload(request);
+            pj.setWorkerOrderNo(orderBase.getId());
+            pjs.add(pj);
+        }
+    }
+
+    private void generateFee(OrderBase orderBase, OrderRepairDetail detail,Brand brand,
+                             List<ItfTblWxjsWxxmJyktUpload> wxxms,
+                             List<ItfTblAssignFeeUpload> fees){
+        // 提取维修项目数据
+        List<OrderRepairDetailItem> ords =  orderRepairDetailItemService.lambdaQuery()
+                .eq(OrderRepairDetailItem::getOrderRepairDetailId, detail.getId()).list();
+        for (OrderRepairDetailItem ord: ords){
+            // 确保采集现象表数据存在数据
+            OrderRepairDetailReason ordr =  orderRepairDetailReasonService.lambdaQuery()
+                    .eq(OrderRepairDetailReason::getOrderRepairDetailId, ord.getOrderRepairDetailId())
+                    .one();
+            if (ordr == null){
+                return ;
+            }
+            // 修改wxjsguid与明细表数据相同
+            if (StringUtils.isEmpty(ord.getWxjsguid())){
+                OrderRepairDetailItem up = new OrderRepairDetailItem();
+                up.setId(ord.getId());
+                up.setWxjsguid(ordr.getWxjsguid());
+                ord.setWxjsguid(ordr.getWxjsguid());
+            }
+            // 生成维修项目现象数据
+            OrderPar request = new OrderPar();
+            request.setId(ord.getId());
+            ItfTblWxjsWxxmJyktUpload wxxm = reasonOrderRepairDetailMapper.getItfTblWxjsWxxmJyktUpload(request);
+            wxxm.setWorkerOrderNo(orderBase.getId());
+            wxxms.add(wxxm);
+
+            // 生成维修费用数据
+            request.setBrandId(brand.getBrandId());
+            request.setMainId(orderBase.getMainId());
+            ItfTblAssignFeeUpload fee = reasonOrderRepairDetailMapper.getItfTblAssignFeeUpload(request);
+            fee.setWorkerOrderNo(orderBase.getId());
+            fee.setPgid(Long.valueOf(orderBase.getPgid()));
+            fees.add(fee);
+        }
+    }
+
+    private void generateFile(OrderBase orderBase, OrderRepairDetail detail, List<ItfTblWxjsFjJyktUpload> fjs){
+        // 提取数据采集附件数据
+        List<OrderDetailFile> odfs =  orderDetailFileService.lambdaQuery()
+                .eq(OrderDetailFile::getOrderBaseId,orderBase.getId())
+                .eq(OrderDetailFile::getOrderDetailId, detail.getId()).list();
+        for (OrderDetailFile file:odfs){
+            // 工单号, file的id即附件表的id,uuid统一值
+            // path未准备上传被忽略
+            if (StringUtils.isEmpty(file.getFilePath())){
+                continue;
+            }
+            // 品牌方fileindex未获取上传被忽略
+            if (StringUtils.isEmpty(file.getBrandFileIndex())){
+                continue;
+            }
+            // 修改附件的fjguid
+            if (StringUtils.isEmpty(file.getFjguid())){
+                OrderDetailFile upf = new OrderDetailFile();
+                upf.setId(file.getId());
+                upf.setFjguid(UUID.randomUUID().toString());
+                orderDetailFileService.updateById(upf);
+                file.setFjguid(upf.getFjguid());
+            }
+            // 修改采集明细序号 wxmxguid
+            if (StringUtils.isEmpty(file.getPgwcmxid())){
+                OrderDetailFile upf = new OrderDetailFile();
+                upf.setId(file.getId());
+                upf.setPgwcmxid(UUID.randomUUID().toString());
+                orderDetailFileService.updateById(upf);
+                file.setPgwcmxid(upf.getPgwcmxid());
+            }
+
+            // 生成附件数据
+            InstallCJDetailFile request = new InstallCJDetailFile();
+            request.setOrderNo(orderBase.getId());
+            request.setId(file.getId());
+            ItfTblWxjsFjJyktUpload fj = fileOrderDetailMapper.getItfTblWxjsFjJyktUpload(request);
+            fjs.add(fj);
+        }
+    }
+
+
+
+
+
+
+
+    private void generateReason(List<ItfTblWxjsXxyyJyktUpload> jyktus, OrderRepairDetail detail) {
+        // 提取维修数据采集故障现象数据  数据采集明细表的所有id
+        List<OrderRepairDetailReason> reasons =  orderRepairDetailReasonService.lambdaQuery()
+                .eq(OrderRepairDetailReason::getOrderRepairDetailId, detail.getId()).list();
+        for (OrderRepairDetailReason r : reasons){
+            if (StringUtils.isEmpty(r.getRepairBugParentId()) || StringUtils.isEmpty(r.getNumber())){
+                continue;
+            }
+            // 修改 维修现象主键、维修明细主键
+            upxxyyguid(r);
+            // 生成维修现象数据
+            generateJyktU(jyktus, detail, r);
+        }
+    }
+
+    private void generateJyktU(List<ItfTblWxjsXxyyJyktUpload> jyktus, OrderRepairDetail detail, OrderRepairDetailReason r) {
+        ItfTblWxjsXxyyJyktUpload add = new ItfTblWxjsXxyyJyktUpload();
+        add.setWorkerOrderNo(detail.getOrderBaseId());
+        add.setFaOrderRepairFaultInfoId(Integer.valueOf(String.valueOf(r.getCreateTime().getTime())));
+        add.setXxyyguid(r.getXxyyguid());
+        add.setCreatedBy("guangfo");
+        add.setCreatedDate(r.getCreateTime());
+        add.setLastModifiedBy("guangfo");
+        add.setLastModifiedDate(r.getUpdateTime());
+        add.setWxjsguid(detail.getBrandWxjsguid());
+        add.setXxyyh(r.getNumber());
+        if (StringUtils.isNotEmpty(r.getRemark())){
+            add.setMshu(r.getRemark());
+        } else if (StringUtils.isNotEmpty(r.getName())){
+            add.setMshu(r.getName());
+        }
+        add.setWxjsmxguid(r.getWxjsguid());
+        add.setCjsj(r.getCreateTime());
+        add.setXxyyhmc(r.getName());
+        jyktus.add(add);
+    }
+
+    private ItfTblWxjsXxyyJyktUpload generateJyktUT(OrderRepairDetail detail, OrderRepairDetailReason r) {
+        ItfTblWxjsXxyyJyktUpload add = new ItfTblWxjsXxyyJyktUpload();
+        add.setWorkerOrderNo(detail.getOrderBaseId());
+        add.setFaOrderRepairFaultInfoId(Integer.valueOf(String.valueOf(r.getCreateTime().getTime())));
+        add.setXxyyguid(r.getXxyyguid());
+        add.setCreatedBy("guangfo");
+        add.setCreatedDate(r.getCreateTime());
+        add.setLastModifiedBy("guangfo");
+        add.setLastModifiedDate(r.getUpdateTime());
+        add.setWxjsguid(detail.getBrandWxjsguid());
+        add.setXxyyh(r.getNumber());
+        if (StringUtils.isNotEmpty(r.getRemark())){
+            add.setMshu(r.getRemark());
+        } else if (StringUtils.isNotEmpty(r.getName())){
+            add.setMshu(r.getName());
+        }
+        add.setWxjsmxguid(r.getWxjsguid());
+        add.setCjsj(r.getCreateTime());
+        add.setXxyyhmc(r.getName());
+        add.setSynStatus(44);
+        itfTblWxjsXxyyJyktUploadService.save(add);
+        return add;
+    }
+
+    private void upxxyyguid(OrderRepairDetailReason r) {
+        OrderRepairDetailReason up = new OrderRepairDetailReason();
+        up.setId(r.getId());
+        if (StringUtils.isEmpty(r.getXxyyguid())){
+            up.setXxyyguid(UUID.randomUUID().toString());
+            r.setXxyyguid(up.getXxyyguid());
+        }
+        if (StringUtils.isEmpty(r.getWxjsguid())){
+            up.setWxjsguid(UUID.randomUUID().toString());
+            r.setWxjsguid(up.getWxjsguid());
+        }
+        orderRepairDetailReasonService.updateById(up);
+    }
+
+    private ItfTblWxjsJyktUpload generateJykt(Brand brand, OrderBase orderBase, OrderRepairDetail detail) {
+        WebsitSH websitSH = new WebsitSH();
+
+        // 修改序采集单内的序
+        upOrderRepairDetail(orderBase);
+
+        // 格力总部数据采集主键为空时代表为公司采集的数据,未赋值时账值 wxjsguid = brandWxjsguid
+        // 格力总部数据采集主键为空时代表为公司采集的数据,填写UUID
+        upBrandWxjsguid(detail);
+        // 采集明细表全表更新pgid = brand_pgid
+        upBrandPgid(orderBase);
+        // 生成维修结算数据
+        OrderPar request = new OrderPar();
+        request.setOrderNo(orderBase.getId());
+        request.setId(detail.getId());
+        request.setBrandId(brand.getBrandId());
+        ItfTblWxjsJyktUpload jykt = detailOrderRepairMapper.getItfTblWxjsJyktUpload(request);
+        // 售后网点处理
+        websitSH = publicService.ptshwdToshshwd(orderBase.getWebsitId(),orderBase.getMainId());
+        jykt.setAzwdbh(websitSH.getWdId());
+        jykt.setAzwdmc(websitSH.getWdmc());
+        // 维修网点即售后网点处理
+        jykt.setWxwdno(websitSH.getWdId());
+        jykt.setWxwdmc(websitSH.getWdmc());
+        // 提取安装师傅的账号信息
+        jykt.setCzrid(String.valueOf(publicService.getBrandWorkerId(orderBase.getWorkerId(),websitSH.getWdId(),brand.getBrandId(),orderBase.getWebsitId())));
+
+        // 结算网点编号即售后网点处理
+        websitSH = publicService.ptshwdToshshwd(jykt.getJswdno(),orderBase.getMainId());
+        jykt.setJswdno(websitSH.getWdId());
+        jykt.setJswdmc(websitSH.getWdmc());
+
+        jykt.setBxrq(orderBase.getCreateTime());
+        if (orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G8.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G9.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G10.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G11.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G12.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G13.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G14.getCode())){
+            jykt.setStat(1120L);
+        } else {
+            jykt.setStat(1100L);
+        }
+        return jykt;
+    }
+
+    private void upOrderRepairDetail(OrderBase orderBase) {
+        List<OrderRepairDetail> upList = new ArrayList<>();
+        List<OrderRepairDetail> detaillist = orderRepairDetailService.lambdaQuery()
+                .eq(OrderRepairDetail::getOrderBaseId, orderBase.getId())
+                .orderByAsc(OrderRepairDetail::getCreateTime).list();
+        // 找出最大的序 默认值为0
+        int outId=0;
+        if (detaillist!=null && detaillist.size()>0){
+            for (OrderRepairDetail item:detaillist){
+                if (outId<item.getOutId()){
+                    outId = item.getOutId();
+                }
+            }
+            for (OrderRepairDetail ite:detaillist){
+                if (ite.getOutId() == 0){
+                    outId++;
+                    OrderRepairDetail n = new OrderRepairDetail();
+                    n.setId(ite.getId());
+                    n.setOutId(outId);
+                    upList.add(n);
+                }
+            }
+            // 修改序
+            if (upList.size()>0){
+                orderRepairDetailService.updateBatchById(upList);
+                upList.clear();
+            }
+            detaillist.clear();
+        }
+    }
+
+    private void upBrandPgid(OrderBase orderBase) {
+        OrderPar request = new OrderPar();
+        request.setOrderNo(orderBase.getPgid());
+        request.setPgid(orderBase.getPgid());
+
+        detailOrderRepairMapper.updatePgid(request);
+    }
+
+    private void upBrandWxjsguid(OrderRepairDetail detail) {
+        if (StringUtils.isEmpty(detail.getBrandWxjsguid())){
+            // 修改uuid
+            OrderRepairDetail up = new OrderRepairDetail();
+            up.setId(detail.getId());
+            up.setBrandWxjsguid(UUID.randomUUID().toString());
+            orderRepairDetailService.updateById(up);
+            detail.setBrandWxjsguid(up.getBrandWxjsguid());
+        }
+    }
+
+    private void updateUploadTaskList(Long synReqId,Integer synStatus,String msg) {
+        OutJiasmToGreeUploadTaskList upoutgultl = new OutJiasmToGreeUploadTaskList();
+        upoutgultl.setSynReqId(synReqId);
+        upoutgultl.setSynStatus(synStatus);
+        upoutgultl.setSynTime(new Date());
+        upoutgultl.setSynErrMsg(msg);
+        outJiasmToGreeUploadTaskListService.updateById(upoutgultl);
+    }
+
+    private void getItfTblAssignUpload(Brand brand, Map<String, List<SysDictRef>> sysDictRefXLMapXq, Long taskId, OutJiasmToGreeUploadTaskList sourceData, String newDykh, OrderBase orderBase) {
+        // 同步工单的pgid
+        upOrderBasePgid(sourceData, orderBase, newDykh);
+        // 同步工单的pguuid
+        upOrderBasePgguid(sourceData, orderBase);
+        // 同步维修工单产品信息 pgid
+        upOrderProduct(sourceData, newDykh);
+        // 同步维修工单操作日志pgid
+        uporderRepairOperatingLogpgid(sourceData, newDykh);
+        // 同步预约改约-总部短信发送请求fjid
+        upFaGreeSmsFjid(sourceData, newDykh);
+        // 同步派服务人员-短信发送请求fjid
+        upFaGreeSmsWorker(sourceData, newDykh);
+
+        // 数据写入待同步-维修工单上传记录表
+        OrderPar orderPar = new OrderPar();
+        orderPar.setBrandId(brand.getBrandId());
+        orderPar.setOrderNo(sourceData.getOrderNo());
+        ItfTblAssignUpload itass = gdOrderBaseMapper.getItfTblAssignUpload(orderPar);
+
+        // 信息渠道id 取的是info_channel 有问题
+        itass.setUploadTaskSynReqId(taskId);
+        // 部分参数单独处理
+        getpreparOrderPar(sysDictRefXLMapXq, orderBase, itass, sourceData.getOrderNo(),brand);
+        // 保存
+        itfTblAssignUploadService.save(itass);
+    }
+
+    private void upOrderProduct(OutJiasmToGreeUploadTaskList sourceData, String newDykh) {
+        OrderPar orderPar = new OrderPar();
+        orderPar.setOrderNo(sourceData.getOrderNo());
+        orderPar.setPgid(newDykh);
+        getOrderProductMapper.upPgid(orderPar);
+    }
+
+    private void upFaGreeSmsWorker(OutJiasmToGreeUploadTaskList sourceData, String newDykh) {
+        FaGreeSmsWorker up = new FaGreeSmsWorker();
+        up.setFjid(newDykh);
+        QueryWrapper upWrapper = new QueryWrapper<FaGreeSmsWorker>()
+                .eq("worker_order_no", sourceData.getOrderNo())
+                .eq("azorwx",2)
+                .and(wrapper->wrapper.isNull("fjid")
+                        .or().eq("fjid","").or().eq("fjid",0));
+        faGreeSmsWorkerService.update(up,upWrapper);
+    }
+
+    private void generateMessage(Brand brand, OutJiasmToGreeUploadTaskList sourceData, String newDykh, OrderBase orderBase) {
+        WebsitSH websitSH = new WebsitSH();
+
+        if ((orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G8.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G9.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G10.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G11.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G14.getCode())) &&
+                !(orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G1.getCode()) ||
+                        orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G2.getCode()) ||
+                        orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G3.getCode()) ||
+                        orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G4.getCode()) ||
+                        orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G5.getCode()) ||
+                        orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G6.getCode()))){
+            // 不上传总部的工单报完工后全部发评价
+            String pgid="";
+            if (StringUtils.isEmpty(orderBase.getPgid()) || orderBase.getPgid().equals("0")){
+                pgid= newDykh;
+            } else {
+                pgid = orderBase.getPgid();
+            }
+
+            List<ItfMessagehuifangentity> imhs = itfMessagehuifangentityService.lambdaQuery()
+                    .eq(ItfMessagehuifangentity::getOrderBaseId, orderBase.getId()).list();
+
+            // 这里为自建工单,是不会走这里的
+            if (pgid.equals("0")){
+                if (imhs==null || imhs.size()<1){
+                    // 生成短信数据
+                    OrderPar orderPar = new OrderPar();
+                    orderPar.setBrandId(brand.getBrandId());
+                    orderPar.setOrderNo(sourceData.getOrderNo());
+                    ItfMessagehuifangentity addms = gdOrderBaseMapper.getItfMessagehuifangentity(orderPar);
+                    if (addms==null){
+                        return;
+                    }
+                    // 售后网点处理 fjwd
+                    websitSH = publicService.ptshwdToshshwd(addms.getFjwd(), orderBase.getMainId());
+                    addms.setFjwd(websitSH.getWdId());
+
+                    String id = UUID.randomUUID().toString();
+                    if (id.length()>32){
+                        addms.setSynTaskNo(id.substring(0,32));
+                    } else {
+                        addms.setSynTaskNo(id);
+                    }
+
+                    addms.setFsma(publicService.getfsma(addms.getSjid()));
+                    addms.setFsnr("尊敬的用户:请对本次服务评价:满意回复1;一般回复2;不满意回复3。并注明原因!关注官微“格力售后服务”,为您提供更优质服务!");
+                    addms.setDxguid(UUID.randomUUID().toString());
+                    addms.setSjid(orderBase.getUserMobile().replace(" ",""));
+                    publicService.addItfMessagehuifangentity(addms,orderBase.getOrderType(),6);
+                }
+            } else {
+                OrderRepair or = orderRepairService.lambdaQuery()
+                        .eq(OrderRepair::getOrderBaseId, orderBase.getId()).one();
+
+                /**
+                 * 1:短信发送改为一单只发一次
+                 * 2:根据总部规则 特殊用户或投诉工单不发送评价短信
+                 * 3:增加发送评价短信时判断报完工日期与当前日期小于7天才发
+                 */
+                // 2-FIRST,5-特级投诉
+                if ((imhs !=null || imhs.size()>0) ||
+                        (orderBase.getComplaint().equals("FIRST") || orderBase.getComplaint().equals("SUPER")) ||
+                        (orderBase.getUserAttr().equals("特殊用户1") ||
+                                orderBase.getUserAttr().equals("特殊用户2") ||
+                                orderBase.getUserAttr().equals("特殊用户3")) ||
+                        (orderBase.getVip().equals("VIP1") ||
+                                orderBase.getVip().equals("VIP2") ||
+                                orderBase.getVip().equals("VIP3") ||
+                                orderBase.getVip().equals("VIP4")) ||
+                        (or.getDemandSmallTypeName().indexOf("巡检")>=0 ||
+                                or.getDemandSmallTypeName().indexOf("巡视")>=0 ||
+                                or.getDemandSmallTypeName().indexOf("清洗保养")>=0)) {
+                    // 什么都不做
+                } else {
+                    if (imhs==null || imhs.size()<1){
+                        // 生成短信数据
+                        OrderPar orderPar = new OrderPar();
+                        orderPar.setBrandId(brand.getBrandId());
+                        orderPar.setOrderNo(sourceData.getOrderNo());
+                        ItfMessagehuifangentity addms = gdOrderBaseMapper.getItfMessagehuifangentityT(orderPar);
+                        if (addms==null){
+                            return;
+                        }
+
+                        // 售后网点处理 fjwd
+                        websitSH = publicService.ptshwdToshshwd(addms.getFjwd(), orderBase.getMainId());
+                        addms.setFjwd(websitSH.getWdId());
+
+                        String id = UUID.randomUUID().toString();
+                        if (id.length()>32){
+                            addms.setSynTaskNo(id.substring(0,32));
+                        } else {
+                            addms.setSynTaskNo(id);
+                        }
+
+                        addms.setFsma(publicService.getfsma(addms.getSjid()));
+                        addms.setFsnr("尊敬的用户:请对本次服务评价:满意回复1;一般回复2;不满意回复3。并注明原因!关注官微“格力售后服务”,为您提供更优质服务!");
+                        addms.setDxguid(UUID.randomUUID().toString());
+                        publicService.addItfMessagehuifangentity(addms,orderBase.getOrderType(),6);
+                    }
+                }
+            }
+        }
+    }
+
+
+
+    private void getpreparOrderPar(Map<String, List<SysDictRef>> sysDictRefXLMapXq, OrderBase orderBase,
+                                   ItfTblAssignUpload itass, String orderNo, Brand brand) {
+        WebsitSH websitSH = new WebsitSH();
+        // 售后网点处理 wxwdno
+        websitSH = publicService.ptshwdToshshwd(itass.getWxwdno(), orderBase.getMainId());
+
+        itass.setWxwdno(websitSH.getWdId());
+        itass.setWxwdmc(websitSH.getWdmc());
+        // 操作网点处理 即维修网点
+        itass.setZjczwd(websitSH.getWdId());
+        if (StringUtils.isNotEmpty(websitSH.getBrandSysWebsitNumber())){
+            itass.setZjczwdxtbh(Long.valueOf(websitSH.getBrandSysWebsitNumber()));
+        }
+        itass.setCjwdno(websitSH.getWdId());
+        // 接收派工网点也可认为是售后网点处理
+        itass.setXjwdno(websitSH.getWdId());
+        itass.setXjwdmc(websitSH.getWdmc());
+        // 提取安装师傅的账号信息
+        itass.setWxrenid(publicService.getBrandWorkerId(orderBase.getWorkerId(),websitSH.getWdId(),brand.getBrandId(),orderBase.getWebsitId()));
+
+        // 销售单位处理 xsdwno
+        websitSH = publicService.ptxswdToshxswd(itass.getXswdno(), orderBase.getMainId());
+        itass.setXswdno(websitSH.getWdId());
+        itass.setXswdmc(websitSH.getWdmc());
+
+        // 所属区域处理
+        BrandWebsit bb = brandWebsitService.lambdaQuery()
+                .eq(BrandWebsit::getGroupCompanyId,brand.getBrandId())
+                .eq(BrandWebsit::getBrandWebsitNumber,itass.getXjwdno()).one();
+        itass.setSsqy("");
+        if (bb !=null){
+            itass.setSsqy(bb.getBelongCompany());
+        }
+
+        //维修总数量放在了工单子信息总数量中,感觉有问题
+        itass.setWxshul(orderBase.getTotalNum());
+        // 省市等信息单独处理
+        setssxz(itass);
+        // 同步 用户预约网点操作时间  看预约改约表内有无记录
+        setYhyyczsj(itass, orderNo);
+
+        if (orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G1.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G2.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G4.getCode())){
+            itass.setExtjson1("0");
+        } else {
+            itass.setExtjson1("1");
+        }
+
+        OrderRepair or = orderRepairService.lambdaQuery()
+                .eq(OrderRepair::getOrderBaseId,orderNo).one();
+        if (or == null ){
+            return;
+        }
+        itass.setCxyzm(or.getCxyzm());
+        itass.setChaoshiqe(or.getChaoshiqe());
+        itass.setZbby(or.getZbby());
+        itass.setZptype(or.getZptype());
+        itass.setYhif(or.getYhif());
+        itass.setAuthState(orderBase.getOrderStatus());
+        itass.setTsdengji(or.getTsdengji());
+        if (StringUtils.isNotEmpty(or.getDemandSmallTypeId()) &&
+                sysDictRefXLMapXq.containsKey(or.getDemandSmallTypeId())){
+            itass.setXqxiaolei(sysDictRefXLMapXq.get(or.getDemandSmallTypeId()).get(0).getRefDictCode());
+        } else {
+            itass.setXqxiaolei(or.getDemandSmallTypeId());
+        }
+    }
+
+    private void setYhyyczsj(ItfTblAssignUpload itass, String orderNo) {
+        List<OrderReAppointment> yys =  orderReAppointmentService.lambdaQuery()
+                .eq(OrderReAppointment::getOrderBaseId, orderNo)
+                .eq(OrderReAppointment::getFlag,0)
+                .orderByDesc(OrderReAppointment::getCreateTime).list();
+        if (!CollectionUtils.isEmpty(yys)){
+            itass.setYhyyczsj(yys.get(0).getCreateTime());
+        } else {
+            List<OrderReAppointment> yyst =  orderReAppointmentService.lambdaQuery()
+                    .eq(OrderReAppointment::getOrderBaseId, orderNo)
+                    .eq(OrderReAppointment::getFlag,1)
+                    .orderByDesc(OrderReAppointment::getCreateTime).list();
+            if (!CollectionUtils.isEmpty(yyst)){
+                itass.setYhyyczsj(yyst.get(0).getCreateTime());
+            }
+        }
+    }
+
+    private void setssxz(ItfTblAssignUpload itass){
+        List<BrandLbsRelate> br;
+        // 街道处理
+        if (StringUtils.isNotEmpty(itass.getXzhenid())){
+            br = brandLbsRelateService.lambdaQuery()
+                    .eq(BrandLbsRelate::getLbsStreetId, itass.getXzhenid())
+                    .eq(BrandLbsRelate::getDel,0)
+                    .isNotNull(BrandLbsRelate::getStreetId).list();
+            if (br !=null && br.size()>0){
+                itass.setXzhenid(br.get(0).getStreetId());
+
+                Street street = streetService.lambdaQuery()
+                        .eq(Street::getStatus, 1)
+                        .eq(Street::getProvince, itass.getSfenid())
+                        .eq(Street::getCity, itass.getCshiid())
+                        .eq(Street::getArea, itass.getXianid())
+                        .eq(Street::getStreet, itass.getXzhenid()).one();
+                if (street !=null){
+                    itass.setXzhen(street.getStreet());
+                    itass.setSfenid(Long.valueOf(street.getProvinceId()));
+                    itass.setCshiid(Long.valueOf(street.getCityId()));
+                    itass.setXianid(Long.valueOf(street.getAreaId()));
+
+                    itass.setSfen(street.getProvince());
+                    itass.setCshi(street.getCity());
+                    itass.setXian(street.getArea());
+                    return;
+                }
+            }
+        }
+
+        //省
+        br = brandLbsRelateService.lambdaQuery()
+                .eq(BrandLbsRelate::getLbsProvinceId, itass.getSfenid())
+                .eq(BrandLbsRelate::getDel,0)
+                .isNotNull(BrandLbsRelate::getProvinceId).list();
+        if (br !=null && br.size()>0){
+            itass.setSfenid(Long.valueOf(br.get(0).getProvinceId()));
+        }
+        //市
+        br = brandLbsRelateService.lambdaQuery()
+                .eq(BrandLbsRelate::getLbsCityId, itass.getCshiid())
+                .eq(BrandLbsRelate::getDel,0)
+                .isNotNull(BrandLbsRelate::getCityId).list();
+        if (br !=null && br.size()>0){
+            itass.setCshiid(Long.valueOf(br.get(0).getCityId()));
+        }
+        //区
+        br = brandLbsRelateService.lambdaQuery()
+                .eq(BrandLbsRelate::getLbsDistrictId, itass.getXianid())
+                .eq(BrandLbsRelate::getDel,0)
+                .isNotNull(BrandLbsRelate::getAreaId).list();
+        if (br !=null && br.size()>0){
+            itass.setXianid(Long.valueOf(br.get(0).getAreaId()));
+        }
+
+        // 总部区必选
+        Area area = areaService.lambdaQuery()
+                .eq(Area::getAreaId, itass.getXianid()).one();
+        Street st = new Street();
+        if (area !=null){
+            itass.setSfen(area.getProvince());
+            itass.setCshi(area.getCity());
+            itass.setXian(area.getArea());
+        }
+    }
+
+    private String getpgid(Token token, int uploadTaskType, String srcTabNameForGreekey, String greekeyGetMode, OutJiasmToGreeUploadTaskList row, String newDykh) throws Exception {
+        // 获取方式 Qry=从控制表获取 Ins=插入表获取自增列
+        String greeKey;
+        // 这里仅67满足
+        if (greekeyGetMode != null && greekeyGetMode.equalsIgnoreCase("Ins")) {
+            Long pgid = null;
+            if (uploadTaskType == 67) {
+                // 提取工单数据 取pgid
+                OrderBase orderBase = orderBaseService.lambdaQuery()
+                        .eq(OrderBase::getId, row.getOrderNo()).one();
+                if (StringUtils.isNotEmpty(orderBase.getPgid())){
+                    OrderPar request = new OrderPar();
+                    request.setPgid(orderBase.getPgid());
+                    request.setOrderNo(row.getOrderNo());
+                    repairLogMapper.upRepairLogPgid(request);
+                    pgid = Long.valueOf(orderBase.getPgid());
+                }
+            }
+            if (pgid == null || pgid.toString().equals("0")) {
+                throw new Exception("[工单号=" + row.getOrderNo() + "]的pgid为0,暂不传输!");
+            }
+
+            // TL_get_fa_order_repair_operating_log_fkid
+            // 查看日志表对应ID的的fikd 值 荐存在直接返回该值无时通过网点接口做取
+            OrderRepairOperatingLog rlog = orderRepairOperatingLogService.lambdaQuery()
+                    .eq(OrderRepairOperatingLog::getId,row.getId()).one();
+            if (StringUtils.isNotEmpty(rlog.getFkid())){
+                newDykh = rlog.getFkid();
+            } else {
+                while (true) {
+                    String serviceName = DataUtil.fromDbName2ServiceName(srcTabNameForGreekey);
+                    String addDataUrl = baseurl + serviceName + "/add";
+                    JSONResult addResult = HttpUtil.httpRequestWithToken(addDataUrl, "POST",
+                            JSON.toJSONStringWithDateFormat(
+                                    genDataMapFromSource(pgid, row.getTaskExtraInfo(), uploadTaskType),
+                                    "yyyy-MM-dd HH:mm:ss"),
+                            token);
+                    if (!addResult.isOK()) {
+                        throw new Exception(
+                                "新增数据获取主键失败[" + serviceName + "],[" + addResult.getMsg() + "]");
+                    } else {
+                        if (addResult.getData() == null || addResult.getData().equals("")) {
+                            throw new Exception("新增数据获取主键返回空[" + serviceName + "]");
+                        } else {
+                            newDykh = addResult.getData().toString();
+                        }
+                    }
+
+                    // TL_get_fa_order_repair_operating_log_fkid_flag
+                    OrderPar request = new OrderPar();
+                    request.setPgid(newDykh);
+                    OrderRepairOperatingLog r = repairLogMapper.getFkid(request);
+                    if(r != null){
+                        log.info("fkid在总部重复[" + newDykh + "]");
+                    }else {
+                        break;
+                    }
+                }
+            }
+        } else if (uploadTaskType == 66 || uploadTaskType == 661) {
+            // pgid从主表中获取
+            OrderBase ob = orderBaseService.lambdaQuery()
+                    .eq(OrderBase::getId, row.getOrderNo()).one();
+            greeKey = ob.getPgid();
+            if (greeKey == null || greeKey.trim().equals("") || greeKey.trim().equals("0")) {
+                Token token4Pgid = tokenCenter.getCurrentToken4Pgid();
+                String url = baseurl4pgid + "api/repairEnter/getPgidSerial";
+                JSONObject jsonObject = HttpUtil.httpRequestGetPgid(url, "POST", token4Pgid, null,
+                        null);
+                if (jsonObject.getString("statusCode").equals("200")) {
+                    String data = jsonObject.getString("data");
+                    newDykh = data;
+                } else {
+                    String message = jsonObject.getString("message");
+                    if (message == null || message.trim().length() == 0) {
+                        message = "取pgid失败";
+                    }
+                    throw new Exception(message);
+                }
+            } else {
+                newDykh = greeKey;
+            }
+        } else if (uploadTaskType == 68) {
+            // 从工单机型表中取对应ID的 pgmxid
+            OrderProduct op = orderProductService.lambdaQuery()
+                    .eq(OrderProduct::getOrderBaseId, row.getOrderNo())
+                    .eq(OrderProduct::getId, row.getId()).one();
+            greeKey = op.getPgmxid();
+            if (greeKey == null || greeKey.trim().equals("") || greeKey.trim().equals("0")) {
+                Token token4Pgid = tokenCenter.getCurrentToken4Pgid();
+                String url = baseurl4pgid + "api/repairEnter/getMxIdserial";
+                JSONObject jsonObject = HttpUtil.httpRequestGetPgid(url, "POST", token4Pgid, null,
+                        null);
+                if (jsonObject.getString("statusCode").equals("200")) {
+                    String data = jsonObject.getString("data");
+                    newDykh = data;
+                } else {
+                    String message = jsonObject.getString("message");
+                    if (message == null || message.trim().length() == 0) {
+                        message = "取pgmxid失败";
+                    }
+                    throw new Exception(message);
+                }
+
+            } else {
+                newDykh = greeKey;
+            }
+        } else {
+            String url = baseurl + "konghao/getDykh";
+            Map<String, String> paramMap = new HashMap<String, String>();
+            paramMap.put("tabName", srcTabNameForGreekey);
+            JSONResult jsonResult = HttpUtil.httpRequestWithToken(url, "POST",
+                    JSON.toJSONString(paramMap), token);
+            if (!jsonResult.isOK()) {
+                throw new Exception("取dykh失败[" + jsonResult.getMsg() + "]");
+            }
+            JSONObject data = (JSONObject) jsonResult.getData();
+            newDykh = data.getString("newDykh");
+        }
+        return newDykh;
+    }
+
+    private Map<String, Object> genDataMapFromSource(Long pgid, String taskExtraInfo, int uploadTaskType) {
+        Map<String, Object> paramMap = new HashMap<String, Object>();
+        paramMap.put(DataUtil.fromDbName2ServiceName("pgid"), pgid);
+        if (uploadTaskType == 67) {
+            paramMap.put(DataUtil.fromDbName2ServiceName("fklb"), taskExtraInfo);
+        }
+        return paramMap;
+    }
+
+    private void upFaGreeSmsFjid(OutJiasmToGreeUploadTaskList sourceData, String newDykh) {
+        FaGreeSms up = new FaGreeSms();
+        up.setFjid(newDykh);
+        QueryWrapper upWrapper = new QueryWrapper<FaGreeSms>()
+                .eq("worker_order_no", sourceData.getOrderNo())
+                .eq("azorwx",2)
+                .and(wrapper->wrapper.isNull("fjid")
+                        .or().eq("fjid","").or().eq("fjid",0));
+        faGreeSmsService.update(up,upWrapper);
+    }
+
+    private void uporderRepairOperatingLogpgid(OutJiasmToGreeUploadTaskList sourceData, String newDykh) {
+        OrderRepairOperatingLog up = new OrderRepairOperatingLog();
+        up.setPgid(Long.valueOf(newDykh));
+        up.setUpdateTime(new Date());
+        QueryWrapper upWrapper = new QueryWrapper<OrderRepairOperatingLog>()
+                .eq("order_base_id", sourceData.getOrderNo())
+                .and(wrapper->wrapper.isNull("pgid")
+                        .or().eq("pgid",0));
+        orderRepairOperatingLogService.update(up,upWrapper);
+    }
+
+    private void upOrderBasePgguid(OutJiasmToGreeUploadTaskList sourceData, OrderBase orderBase) {
+        if (StringUtils.isEmpty(orderBase.getPgguid()) || orderBase.getPgguid().equals("0")){
+            OrderBase up = new OrderBase();
+            up.setPgguid(UUID.randomUUID().toString());
+            QueryWrapper upWrapper = new QueryWrapper<OrderBase>()
+                    .eq("id", sourceData.getOrderNo())
+                    .and(wrapper->wrapper.isNull("pgguid")
+                            .or().eq("pgguid","").or().eq("pgguid",0));
+            orderBaseService.update(up,upWrapper);
+            orderBase.setPgguid(up.getPgguid());
+        }
+    }
+
+    private void upOrderBasePgid(OutJiasmToGreeUploadTaskList sourceData, @NotNull OrderBase orderBase, String newDykh) {
+        if (StringUtils.isEmpty(orderBase.getPgid()) || orderBase.getPgid().equals("0")){
+            OrderBase up = new OrderBase();
+            up.setPgid(newDykh);
+            QueryWrapper upWrapper = new QueryWrapper<OrderBase>()
+                    .eq("id", sourceData.getOrderNo())
+                    .and(wrapper->wrapper.isNull("pgid")
+                            .or().eq("pgid",0));
+            orderBaseService.update(up,upWrapper);
+            orderBase.setPgid(newDykh);
+        }
+    }
+
+    private void stopUpload(@NotNull OutJiasmToGreeUploadTaskList ojtutl, String msg) {
+        OutJiasmToGreeUploadTaskList up = new OutJiasmToGreeUploadTaskList();
+        up.setSynReqId(ojtutl.getSynReqId());
+        up.setSynStatus(99);
+        up.setSynTime(new Date());
+        up.setSynErrMsg(msg);
+        outJiasmToGreeUploadTaskListService.updateById(up);
+    }
+
+}

+ 391 - 0
src/main/java/com/zfire/jiasm/syncdata/service/impl/RepairProduceUploadListServiceImpl.java

@@ -0,0 +1,391 @@
+package com.zfire.jiasm.syncdata.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.zfire.jiasm.syncdata.constant.GDAppointStatusEnum;
+import com.zfire.jiasm.syncdata.constant.GDOrderStatusEnum;
+import com.zfire.jiasm.syncdata.constant.OrderTypeEnum;
+import com.zfire.jiasm.syncdata.dao.mapper.OrderInformationNewMapper;
+import com.zfire.jiasm.syncdata.data.Token;
+import com.zfire.jiasm.syncdata.parameter.OrderPar;
+import com.zfire.jiasm.syncdata.plus.entity.*;
+import com.zfire.jiasm.syncdata.plus.service.*;
+import com.zfire.jiasm.syncdata.response.WebsitFWS;
+import com.zfire.jiasm.syncdata.service.PrepareService;
+import com.zfire.jiasm.syncdata.service.PublicService;
+import com.zfire.jiasm.syncdata.service.RepairProduceUploadListService;
+import com.zfire.jiasm.syncdata.utils.*;
+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.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+@Slf4j
+@Service
+public class RepairProduceUploadListServiceImpl implements RepairProduceUploadListService {
+    @Value("${baseurl}")
+    private String baseurl = "";
+
+    @Autowired
+    private TokenCenter tokenCenter;
+    @Resource
+    PrepareService prepareService;
+    @Resource
+    OutJiasmToGreeUploadTaskListService outJiasmToGreeUploadTaskListService;
+    @Resource
+    OrderBaseService orderBaseService;
+    @Resource
+    OutJiasmToGreeUploadnotifylistService outJiasmToGreeUploadnotifylistService;
+    @Resource
+    PublicService publicService;
+    @Resource
+    OrderProductService orderProductService;
+    @Resource
+    OrderRepairOperatingLogService orderRepairOperatingLogService;
+    @Resource
+    OrderInformationService orderInformationService;
+    @Resource
+    OrderInformationNewMapper orderInformationNewMapper;
+    @Resource
+    ItfTblAssignXzydUploadService itfTblAssignXzydUploadService;
+    @Resource
+    OrderReAppointmentService orderReAppointmentService;
+
+
+
+
+    @Override
+    public void processproduceList() throws Exception {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        List<OutJiasmToGreeUploadTaskList> ojtgutls = new ArrayList<>();
+
+        log.info("开始预处理需要上传的维修工单数据: \uF0B7{}",sdf.format(new Date()));
+
+        // 从需要上传的订单数据表中提取数据
+        List<OutJiasmToGreeUploadnotifylist> taskResults = outJiasmToGreeUploadnotifylistService.lambdaQuery()
+                .eq(OutJiasmToGreeUploadnotifylist::getSynStatus,0)
+                .orderByAsc(OutJiasmToGreeUploadnotifylist::getSynReqId).list();
+        try{
+            Token token = tokenCenter.getCurrentToken();
+
+            for (OutJiasmToGreeUploadnotifylist item : taskResults) {
+                Long itemSynReqId = item.getSynReqId();
+                // 同步的表名
+                String itemTableName = item.getTableName();
+                // 同步表中的工单号
+                String itemOrderNo = item.getOrderNo();
+                // 同步表中的主键id
+                String itemTableNameId = item.getId();
+                // 工单类型
+                String itemOrderType = item.getOrderType();
+
+                // 数据同步预处理规则表中提取对应表名的规则
+                Map<String, Object> row = prepareService.getTaskInfo(itemTableName);
+                int taskId = (Integer) row.get("id");
+                String srcTabName = (String) row.get("src_tab_name");
+
+                String errorMessage = null;
+                try{
+                    // 维修工单主表处理 66、661
+                    if (itemTableName.equals("order_base") &&
+                            itemOrderType.equals(OrderTypeEnum.ORDER_TYPE_REPAIR.getCode())){
+                        // 过程名,源表中的ID,源表中的数据最后修改时间,源表中的工单号,源表中的id,空值,false
+                        // TL_PrePare_task_by_fa_order_repair
+                        orderBaseProess(itemTableName, itemOrderNo, itemTableNameId, ojtgutls, item.getSynReqId());
+                    }
+                    // 维修工单产品信息 68
+                    if (itemTableName.equals("order_product") &&
+                            itemOrderType.equals(OrderTypeEnum.ORDER_TYPE_REPAIR.getCode())){
+                        // 过程名,源表中的ID,源表中的数据最后修改时间,源表中的工单号,源表中的id,空值,false
+                        // TL_PrePare_task_by_fa_order_repair_product
+                        orderProductProess(item, itemTableName, itemOrderNo, itemTableNameId);
+                    }
+                    // 维修工单操作明细 67
+                    if (itemTableName.equals("order_repair_operating_log")){
+                        // TL_PrePare_task_by_fa_order_repair_operating_log
+                        logProess(item, itemTableName, itemOrderNo, itemTableNameId, itemOrderType);
+                    }
+                    // 维修单用户预约、改约明细 230 同时向发短信表插入一条数据
+                    if (itemTableName.equals("order_re_appointment") &&
+                            itemOrderType.equals(OrderTypeEnum.ORDER_TYPE_REPAIR.getCode())){
+                        OrderReAppointment(item, itemTableName, itemOrderType);
+                    }
+                    // 子信息 TL_PrePareSynDataby_fa_order_repair_information
+                    if (itemTableName.equals("order_information") &&
+                            itemOrderType.equals(OrderTypeEnum.ORDER_TYPE_REPAIR.getCode())){
+                        // 执行 TL_get_fa_order_repair_information_pgid 取pgid 从工单主表中看
+                        orderInformationProess(token, item, itemOrderNo, itemTableNameId, srcTabName);
+                    }
+                } catch (Exception ex) {
+                    errorMessage = ex.getMessage();
+                    updateError(errorMessage, item);
+                } finally {
+                    PrepareTaskLog.writeMessage(genInfoData(taskId, srcTabName, false, errorMessage));
+                }
+            }
+            log.info("预处理需要上传的维修工单数据完成: \uF0B7{}",sdf.format(new Date()));
+
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            log.info("开始预处理需要上传的维修工单数据出错");
+        }
+    }
+
+
+    @Transactional(rollbackFor = Exception.class)
+    public void orderInformationProess(Token token, OutJiasmToGreeUploadnotifylist item, String itemOrderNo,
+                                       String itemTableNameId, String srcTabName) throws Exception {
+        String newDykh = "";
+        // 提取工单数据
+        OrderBase orderBase = orderBaseService.lambdaQuery()
+                .eq(OrderBase::getId, itemOrderNo).one();
+        // 提取对应的子信息
+        OrderInformation oi = orderInformationService.lambdaQuery()
+                .eq(OrderInformation::getId, itemTableNameId).one();
+        // 为空不做处理
+        if (StringUtils.isNotEmpty(orderBase.getPgid())){
+            // 看 xzid 值 不为空取该值 为空时网络获取
+            if (oi != null){
+                // 获取YDID 表中不存在时从接口中获取
+                newDykh = getYdId(token, itemOrderNo, itemTableNameId, srcTabName, orderBase, oi);
+                // 修改 xzid 来自接口
+                upYdid(itemTableNameId, newDykh);
+                // 生成待同步表数据
+                getInformation(itemTableNameId);
+
+                // 需要上传的订单数据表中处理状态同步为已处理
+                OutJiasmToGreeUploadnotifylist upn = getOutJiasmToGreeUploadnotifylist(item.getSynReqId());
+                outJiasmToGreeUploadnotifylistService.updateById(upn);
+            }
+        }
+    }
+
+    private void getInformation(String itemTableNameId) {
+        OrderPar orderPar = new OrderPar();
+        WebsitFWS websitFWS = new WebsitFWS();
+        orderPar.setId(itemTableNameId);
+        ItfTblAssignXzydUpload rec = orderInformationNewMapper.getOrderInformationrepair(orderPar);
+        OrderBase orderBase = orderBaseService.lambdaQuery()
+                .eq(OrderBase::getId,rec.getWorkerOrderNo()).one();
+        rec.setPgid(Long.valueOf(orderBase.getPgid()));
+        websitFWS = publicService.shshwdToptshwd(rec.getWdno(),orderBase);
+        if (StringUtils.isEmpty(websitFWS.getWebsitId())){
+            websitFWS = publicService.shxswdToptxswd(rec.getWdno(),orderBase);
+        }
+
+        rec.setWdno(websitFWS.getWebsitId());
+        itfTblAssignXzydUploadService.save(rec);
+    }
+
+    private void upYdid(String itemTableNameId, String newDykh) {
+        OrderPar orderPar = new OrderPar();
+        orderPar.setId(itemTableNameId);
+        orderPar.setXzid(newDykh);
+        orderInformationNewMapper.upYdid(orderPar);
+    }
+
+    private String getYdId(Token token, String itemOrderNo, String itemTableNameId, String srcTabName, OrderBase orderBase, OrderInformation oi) throws Exception {
+        String newDykh;
+        if (oi.getXzid()>0){
+            // 表中获取
+            newDykh = String.valueOf(oi.getXzid());
+        } else {
+            // 网络获取
+            newDykh = getWebAcquire(token, itemOrderNo, itemTableNameId, srcTabName, orderBase);
+        }
+        return newDykh;
+    }
+
+    private String getWebAcquire(Token token, String itemOrderNo, String itemTableNameId, String srcTabName, OrderBase orderBase) throws Exception {
+        String newDykh;
+        Map<String, Object> sourceData = prepareService.getTaskDataDetail(srcTabName, itemOrderNo,
+                itemTableNameId);
+        sourceData.put("pgid", orderBase.getPgid());
+
+        String serviceName = DataUtil.fromDbName2ServiceName("tbl_assign_xzyd");
+        String addDataUrl = baseurl + serviceName + "/add";
+
+        JSONResult addResult = HttpUtil.httpRequestWithToken(addDataUrl, "POST",
+                JSON.toJSONStringWithDateFormat(
+                        genDataMapFromSource("pgid", "pgid", sourceData),
+                        "yyyy-MM-dd HH:mm:ss"),
+                token);
+        if (!addResult.isOK()) {
+            throw new Exception("新增数据获取主键失败[" + serviceName + "],[" + addResult.getMsg() + "]");
+        } else {
+            if (addResult.getData() == null || addResult.getData().equals("")) {
+                throw new Exception("新增数据获取主键返回空[" + serviceName + "]");
+            } else {
+                newDykh = addResult.getData().toString();
+            }
+        }
+        return newDykh;
+    }
+
+    private Map<String, Object> genDataMapFromSource(String localKeyList, String serverKeyList,
+                                                     Map<String, Object> sourceData) {
+        Map<String, Object> paramMap = new HashMap<String, Object>();
+        String[] localKeys = localKeyList.split("\\Q,\\E");
+        String[] serverKeys = serverKeyList.split("\\Q,\\E");
+        for (int i = 0; i < localKeys.length; i++) {
+            String localKey = localKeys[i];
+            String serverKey = serverKeys[i];
+            Object value = sourceData.get(localKey.trim());
+            paramMap.put(DataUtil.fromDbName2ServiceName(serverKey.trim()), value);
+        }
+
+        return paramMap;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void logProess(OutJiasmToGreeUploadnotifylist item, String itemTableName, String itemOrderNo, String itemTableNameId,String itemOrderType) {
+        // 提取日志数据
+        OrderRepairOperatingLog org = orderRepairOperatingLogService.lambdaQuery()
+                .eq(OrderRepairOperatingLog::getId, itemTableNameId).one();
+        if (org !=null){
+            // 生成67类型上传任务数据
+            // 单号,主键,同步任务生成时间,同步的表名,工单类型,任务类型
+            OutJiasmToGreeUploadTaskList add = publicService.getUploadTaskListLog(itemOrderNo, itemTableNameId,org.getUpdateTime(), itemTableName,
+                    itemOrderType,67);
+            outJiasmToGreeUploadTaskListService.save(add);
+
+            // 需要上传的订单数据表中处理状态同步为已处理
+            OutJiasmToGreeUploadnotifylist upn = getOutJiasmToGreeUploadnotifylist(item.getSynReqId());
+            outJiasmToGreeUploadnotifylistService.updateById(upn);
+        }
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public  void OrderReAppointment(OutJiasmToGreeUploadnotifylist item, String itemTableName, String itemOrderType) {
+        OrderReAppointment rea = orderReAppointmentService.lambdaQuery()
+                .eq(OrderReAppointment::getId, item.getId()).one();
+        // 同步任务增加一条数据
+        if (rea !=null){
+            OutJiasmToGreeUploadTaskList add = publicService.getUploadTaskList(item.getOrderNo(), item.getId(),
+                    rea.getCreateTime(), itemTableName, itemOrderType, 230);
+            outJiasmToGreeUploadTaskListService.save(add);
+            // 向发短信表插入一条数据,短信表ID同预约改约表ID相同
+            publicService.addFaOrderSms(rea);
+        }
+
+        // 需要上传的订单数据表中处理状态同步为已处理
+        OutJiasmToGreeUploadnotifylist up = getOutJiasmToGreeUploadnotifylist(item.getSynReqId());
+        outJiasmToGreeUploadnotifylistService.updateById(up);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void orderProductProess(OutJiasmToGreeUploadnotifylist item, String itemTableName, String itemOrderNo, String itemTableNameId) {
+        // 提取工单机型
+        OrderProduct op = orderProductService.lambdaQuery()
+                .eq(OrderProduct::getId, itemTableNameId).one();
+        if (op!=null){
+            // 生成68类型上传任务数据
+            // 单号,主键,同步任务生成时间,同步的表名,工单类型,任务类型
+            OutJiasmToGreeUploadTaskList add = publicService.getUploadTaskList(itemOrderNo, itemTableNameId,op.getUpdateTime(), itemTableName,
+                    OrderTypeEnum.ORDER_TYPE_REPAIR.getCode(),68);
+            outJiasmToGreeUploadTaskListService.save(add);
+
+            // 需要上传的订单数据表中处理状态同步为已处理
+            OutJiasmToGreeUploadnotifylist upn = getOutJiasmToGreeUploadnotifylist(item.getSynReqId());
+            outJiasmToGreeUploadnotifylistService.updateById(upn);
+        }
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void orderBaseProess(String itemTableName, String itemOrderNo, String itemTableNameId,
+                                List<OutJiasmToGreeUploadTaskList> ojtgutls, Long synReqId) {
+        // 提取工单数据
+        OrderBase orderBase = orderBaseService.lambdaQuery()
+                .eq(OrderBase::getId, itemOrderNo).one();
+        // 生成任务清单数据
+        if (orderBase != null){
+            // 删除工单更新被忽略
+
+            // 生成66类型上传任务数据
+            // 单号,主键,同步任务生成时间,同步的表名,工单类型,任务类型
+            OutJiasmToGreeUploadTaskList add = publicService.getUploadTaskList(itemOrderNo, itemTableNameId,orderBase.getUpdateTime(), itemTableName,
+                    orderBase.getOrderType(),66);
+
+            ojtgutls.add(add);
+
+            // 生成661类型上传任务数据
+            OrderBase up = generateTaskList(itemTableName, itemOrderNo, itemTableNameId, orderBase, ojtgutls);
+
+
+            if (ojtgutls.size()>0){
+                outJiasmToGreeUploadTaskListService.saveBatch(ojtgutls);
+                ojtgutls.clear();
+            }
+            if (up !=null ){
+                orderBaseService.updateById(up);
+                orderBase.setOutCjDownloadFlag(1);
+            }
+
+            // 需要上传的订单数据表中处理状态同步为已处理
+            OutJiasmToGreeUploadnotifylist upn = getOutJiasmToGreeUploadnotifylist(synReqId);
+            outJiasmToGreeUploadnotifylistService.updateById(upn);
+
+        }
+    }
+
+    @NotNull
+    private OutJiasmToGreeUploadnotifylist getOutJiasmToGreeUploadnotifylist(Long synReqId) {
+        OutJiasmToGreeUploadnotifylist up = new OutJiasmToGreeUploadnotifylist();
+        up.setSynReqId(synReqId);
+        up.setSynStatus(1);
+        up.setSynReqTime(new Date());
+        return up;
+    }
+
+    private OrderBase generateTaskList(String itemTableName, String itemOrderNo, String itemTableNameId, OrderBase orderBase, List<OutJiasmToGreeUploadTaskList> ojtgutls) {
+        // 工单状态(8, 9, 10, 11, 12, 13, 14) 派工状态:(13, 14, 15) 未下载总部采集数据
+        if ((orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G8.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G9.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G10.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G11.getCode()) ||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G12.getCode())||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G13.getCode())||
+                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G14.getCode())) &&
+                (orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G14_0) ||
+                        orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G14_1)||
+                        orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G15_0)||
+                        orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G15_1)||
+                        orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G15_2)) &&
+                orderBase.getOutCjDownloadFlag().equals(0)){
+            OutJiasmToGreeUploadTaskList add = publicService.getUploadTaskList(itemOrderNo, itemTableNameId, itemTableName,
+                    orderBase.getOrderType(),661);
+            ojtgutls.add(add);
+
+            OrderBase up = new OrderBase();
+            up.setId(orderBase.getId());
+            up.setOutCjDownloadFlag(1);
+            return up;
+        }
+        return null;
+    }
+
+    public void updateError(String errMessage, OutJiasmToGreeUploadnotifylist item) {
+        if (errMessage != null && errMessage.trim().length() > 255) {
+            errMessage = errMessage.substring(0, 255);
+        }
+        OutJiasmToGreeUploadnotifylist up = new OutJiasmToGreeUploadnotifylist();
+        up.setSynReqId(item.getSynReqId());
+        up.setSynTimes(item.getSynTimes()+1);
+        up.setSynErrMsg(errMessage);
+        up.setSynReqTime(new Date());
+        outJiasmToGreeUploadnotifylistService.updateById(up);
+    }
+
+    private String genInfoData(int taskId, String srcTabName, boolean isTimeOut, String errorMessage) {
+        String result = "预处理任务[" + taskId + "," + srcTabName + "] " + (isTimeOut ? "超时!!!!" : "正常") + " "
+                + (errorMessage != null ? "错误:[" + errorMessage + "]" : "");
+        return result;
+    }
+
+}

+ 377 - 0
src/main/java/com/zfire/jiasm/syncdata/service/impl/UploadWorkeCertificateServiceImpl.java

@@ -0,0 +1,377 @@
+package com.zfire.jiasm.syncdata.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.zfire.jiasm.syncdata.base.BaseService;
+import com.zfire.jiasm.syncdata.gree.GreeLogic;
+import com.zfire.jiasm.syncdata.helper.GreeFileResponseHelper;
+import com.zfire.jiasm.syncdata.helper.GreeFileSaveHelper;
+import com.zfire.jiasm.syncdata.http.PostObjectSample;
+import com.zfire.jiasm.syncdata.plus.entity.Brand;
+import com.zfire.jiasm.syncdata.plus.entity.WebsitWorker;
+import com.zfire.jiasm.syncdata.plus.entity.WorkerBrandAccount;
+import com.zfire.jiasm.syncdata.plus.entity.WorkerCert;
+import com.zfire.jiasm.syncdata.plus.service.WebsitWorkerService;
+import com.zfire.jiasm.syncdata.plus.service.WorkerBrandAccountService;
+import com.zfire.jiasm.syncdata.plus.service.WorkerCertService;
+import com.zfire.jiasm.syncdata.response.ResultData;
+import com.zfire.jiasm.syncdata.service.UploadWorkeCertificateService;
+import com.zfire.jiasm.syncdata.utils.oss.OSSUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.util.*;
+
+
+@Slf4j
+@Service
+public class UploadWorkeCertificateServiceImpl implements UploadWorkeCertificateService {
+    @Resource
+    OSSUtil ossUtil;
+    @Resource
+    GreeLogic greeLogic;
+    @Resource
+    WorkerCertService workerCertService;
+    @Resource
+    WorkerBrandAccountService workerBrandAccountService;
+    @Resource
+    BaseService baseService;
+    @Resource
+    WebsitWorkerService websitWorkerService;
+
+
+
+    @Override
+    public void procesUploadWorkeCert() throws Exception {
+
+        List<WorkerCert> recs = new ArrayList<>();
+        List<WorkerBrandAccount> workerWdnos = new ArrayList<>();
+        String fileo ="";
+        String filet ="";
+        String fid1 = "";
+        String fid2 = "";
+        String fid3 = "";
+        Integer count = 0;
+
+        // 提取品牌信息 用于多品牌数据同步目前仅格力,可以先不用做
+        Brand brand = baseService.getBrand();
+        if (brand == null) {
+            return;
+        }
+
+        // 获取待同步到格力总部师傅的证件信息
+        recs = getWorkerUploads();
+
+        for (WorkerCert item:recs){
+            fileo ="";
+            filet ="";
+            fid1 = "";
+            fid2 = "";
+            count = 0;
+
+            //  查看师傅是否已选中品牌商网点(这里只提取选中格力品牌商的师傅数据)
+            workerWdnos = workerBrandAccountService.lambdaQuery()
+                    .eq(WorkerBrandAccount::getWorkerId, item.getWorkerId())
+                    .eq(WorkerBrandAccount::getBrandWorkerStatus,"ON")
+                    .eq(WorkerBrandAccount::getDel,0)
+                    .eq(WorkerBrandAccount::getGroupCompanyId, brand.getBrandId()).list();
+
+            // 未选择品牌商
+            if (workerWdnos.size()<1){
+                updateWorkCertificateerror(item.getId(),"师傅未选择格力品牌商信息");
+                continue;
+            }
+
+            //  判断师傅入驻的商户网点
+            count = getCount(workerWdnos, count);
+            if (count.equals(workerWdnos.size())){
+                updateWorkCertificateerror(item.getId(),"师傅未入驻品牌商网点");
+                continue;
+            }
+
+            // 生成图片
+            if (StringUtils.isNotEmpty(item.getFileUrl()) && (StringUtils.isEmpty(item.getOutFileUrl()))){
+                fid1 = IdWorker.getIdStr() + ".jpg";
+                // 下载文件生成新文件 fid1
+                baseService.saveToFile(ossUtil.getUrlWw(item.getFileUrl()),fid1);
+                // 获取文件
+                fileo = fid1;
+            }
+            if (StringUtils.isNotEmpty(item.getFileUrl2()) && (StringUtils.isEmpty(item.getOutFileUrl2()))){
+                fid2 = IdWorker.getIdStr() + ".jpg";
+                // 下载文件生成新文件 fid2
+                baseService.saveToFile(ossUtil.getUrlWw(item.getFileUrl()),fid2);
+                // 获取文件
+                filet = fid2;
+            }
+
+            // 上传图片 按网点上传
+            for (WorkerBrandAccount wdno: workerWdnos){
+                uploadFileexc(fileo, filet, fid1, fid2,wdno.getBrandWebsitId(),item);
+                delfilet(fid3);
+                // 保险数据同步 保险证不在证件表中
+                fid3 = uploadInsureCert(wdno);
+            }
+
+            // 文件清除
+            delfile(fileo, filet, fid1, fid2,fid3);
+        }
+    }
+
+
+    private void delfile(String fileo,String filet,String fid1, String fid2, String file3) {
+        if (StringUtils.isNotEmpty(fileo)){
+            new File(fileo).delete();
+        }
+        if (StringUtils.isNotEmpty(filet)){
+            new File(filet).delete();
+        }
+        if (StringUtils.isNotEmpty(fid1)){
+            new File(fid1).delete();
+        }
+        if (StringUtils.isNotEmpty(fid2)){
+            new File(fid2).delete();
+        }
+        if (StringUtils.isNotEmpty(file3)){
+            new File(file3).delete();
+        }
+    }
+
+    private void delfiletow(String fid1, String fid2) {
+        if (StringUtils.isNotEmpty(fid1)){
+            new File(fid1).delete();
+        }
+        if (StringUtils.isNotEmpty(fid2)){
+            new File(fid2).delete();
+        }
+    }
+
+    private void delfilet(String file3) {
+        if (StringUtils.isNotEmpty(file3)){
+            new File(file3).delete();
+        }
+    }
+
+    /**
+     * 初始化保险数据(可以不买保险)
+     * out_insure_cert 总部保证凭证 为空时
+     *    insure_cert为空  初始化生成
+     *               不为空正常生成
+     */
+    private String uploadInsureCert(WorkerBrandAccount wdno) throws Exception {
+        String fileo ="";
+        String fid1 = "";
+        WebsitWorker wk = websitWorkerService.lambdaQuery()
+                .eq(WebsitWorker::getWebsitWorkerId, wdno.getWebsitWorkerId()).one();
+        if (StringUtils.isEmpty(wk.getOutInsureCert())){
+            // 生成图片
+            if (StringUtils.isEmpty(wk.getInsureCert())){
+                fid1 = "bx.jpeg";
+                baseService.initFile(fid1);
+            } else {
+                fid1 = IdWorker.getIdStr() + ".jpeg12";
+                baseService.saveToFile(ossUtil.getUrlWw(wk.getInsureCert()),fid1);
+            }
+            fileo = fid1;
+            uploadInitFileexc(fileo, fid1, wdno.getBrandWebsitId(),wk);
+        }
+        return fid1;
+    }
+
+    private Boolean uploadFileexc(String fileo, String filet, String fid1, String fid2,String wdno,WorkerCert item) throws Exception {
+        Boolean uploadfile = Boolean.TRUE;
+        Boolean onlyone = Boolean.FALSE;
+        String msg = "";
+
+        if (StringUtils.isEmpty(wdno)){
+            return Boolean.TRUE;
+        }
+
+        // 先上传第一个图片
+        if (StringUtils.isNotEmpty(fileo)){
+            // 1: 获取签名信息
+            GreeFileResponseHelper response =  greeLogic.ossGetSignt(wdno,"GET");
+            if (response.getStatusCode() == 200){
+                ResultData resultData = JSONObject.parseObject(response.getData().toString(), ResultData.class);
+                resultData.getExtData().setDir(resultData.getExtData().getDir()+"/"+fid1);
+                // 2:文件上传
+                PostObjectSample ossPostObject = new PostObjectSample();
+                String result = ossPostObject.PostObject(fileo, resultData.getExtData());
+
+                // 3: 保存文件
+                if (StringUtils.isEmpty(result.trim())){
+                    Map<String,String> req = new HashMap<>();
+                    // 生成对象
+                    getSaveFileInfo(fid1, resultData, req);
+                    GreeFileSaveHelper responses = greeLogic.greePostSaveFile(req);
+                    if (responses.getStatusCode() == 200){
+                        // 保存文件ID   responses.getData().getId()
+                        if (StringUtils.isEmpty(filet)){
+                            // 说明只有第一个图片
+                            onlyone = Boolean.TRUE;
+                        }
+                        updateWorkCertificatesave(item,responses.getData().getId(),1,uploadfile,onlyone);
+                    } else {
+                        // 失败
+                        uploadfile = Boolean.FALSE;
+                        msg = "保存证件正面文件到格力总部失败";
+                        if (StringUtils.isNotEmpty(responses.getMsg())){
+                            msg = msg + responses.getMsg();
+                        }
+                        updateWorkCertificateerror(item.getId(),msg);
+                    }
+                } else {
+                    updateWorkCertificateerror(item.getId(),"上传图片到OSS失败");
+                }
+            } else {
+                updateWorkCertificateerror(item.getId(),"获取签名信息失败");
+                return Boolean.TRUE;
+            }
+        }
+
+        if (StringUtils.isNotEmpty(filet)){
+            // 1: 获取签名信息
+            GreeFileResponseHelper response =  greeLogic.ossGetSignt(wdno,"GET");
+            if (response.getStatusCode() == 200){
+                ResultData resultData = JSONObject.parseObject(response.getData().toString(), ResultData.class);
+                resultData.getExtData().setDir(resultData.getExtData().getDir()+"/"+fid2);
+                // 2:文件上传
+                PostObjectSample ossPostObject = new PostObjectSample();
+                String result = ossPostObject.PostObject(filet, resultData.getExtData());
+                // 3: 保存文件
+                if (StringUtils.isEmpty(result.trim())){
+                    Map<String,String>req = new HashMap<>();
+                    // 生成对象
+                    getSaveFileInfo(fid2, resultData, req);
+                    GreeFileSaveHelper responses = greeLogic.greePostSaveFile(req);
+
+                    if (responses.getStatusCode() == 200){
+                        // 保存文件ID   responses.getData().getId()
+                        updateWorkCertificatesave(item,responses.getData().getId(),2,uploadfile,onlyone);
+                    } else {
+                        // 失败
+                        msg = "保存证件正面文件到格力总部失败";
+                        if (StringUtils.isNotEmpty(responses.getMsg())){
+                            msg = msg + responses.getMsg();
+                        }
+                        updateWorkCertificateerror(item.getId(),msg);
+                        return Boolean.TRUE;
+                    }
+                } else {
+                    updateWorkCertificateerror(item.getId(),"上传图片到OSS失败");
+                    return Boolean.TRUE;
+                }
+            } else {
+                updateWorkCertificateerror(item.getId(),"获取签名信息失败");
+                return Boolean.TRUE;
+            }
+        }
+        return Boolean.FALSE;
+    }
+
+    private Boolean uploadInitFileexc(String fileo, String fid1,String wdno,WebsitWorker wk) throws Exception {
+
+        if (StringUtils.isEmpty(wdno)){
+            return Boolean.TRUE;
+        }
+
+        if (StringUtils.isNotEmpty(fileo)){
+            // 1: 获取签名信息
+            GreeFileResponseHelper response =  greeLogic.ossGetSignt(wdno,"GET");
+            if (response.getStatusCode() == 200){
+                ResultData resultData = JSONObject.parseObject(response.getData().toString(), ResultData.class);
+                resultData.getExtData().setDir(resultData.getExtData().getDir()+"/"+fid1);
+                // 2:文件上传
+                PostObjectSample ossPostObject = new PostObjectSample();
+                String result = ossPostObject.PostObject(fileo, resultData.getExtData());
+                // 3: 保存文件
+                if (StringUtils.isEmpty(result.trim())){
+                    Map<String,String>req = new HashMap<>();
+                    // 生成对象
+                    getSaveFileInfo(fid1, resultData, req);
+                    GreeFileSaveHelper responses = greeLogic.greePostSaveFile(req);
+
+                    if (responses.getStatusCode() == 200){
+                        // 保存文件ID   responses.getData().getId()
+                        wk.setOutInsureCert(responses.getData().getId());
+                        websitWorkerService.updateById(wk);
+                    } else {
+                        // 失败
+                        log.info("保存保险证件文件到格力总部失败");
+                    }
+                } else {
+                    log.info("保险证件上传图片到OSS失败");
+                }
+            } else {
+                log.info("获取签名信息失败");
+                return Boolean.TRUE;
+            }
+        }
+
+        return Boolean.FALSE;
+    }
+
+    private Integer getCount(List<WorkerBrandAccount> workerWdnos, Integer count) {
+        for (WorkerBrandAccount w: workerWdnos){
+            if (StringUtils.isEmpty(w.getBrandWebsitId())){
+                count++;
+            }
+        }
+        return count;
+    }
+
+    private void updateWorkCertificateerror(String id, String msg) {
+        WorkerCert v = new WorkerCert();
+        v.setId(id);
+        v.setOutSyncTime(new Date());
+        v.setOutSyncErrorMsg(msg);
+        if (msg.length()>250){
+            v.setOutSyncErrorMsg(msg.substring(0,250));
+        }
+        workerCertService.updateById(v);
+    }
+
+    private void updateWorkCertificatesave(WorkerCert i, String file, Integer flag,
+                                           Boolean bool, Boolean onlyOne) {
+        WorkerCert v = new WorkerCert();
+        v.setId(i.getId());
+        if (flag ==1){
+            v.setOutFileUrl(file);
+            if (onlyOne){
+                v.setOutSyncStatus(1);
+            }
+        } else {
+            v.setOutFileUrl2(file);
+            if (bool){
+                v.setOutSyncStatus(1);
+            }
+        }
+        v.setOutSyncTime(new Date());
+        workerCertService.updateById(v);
+    }
+
+    private void getSaveFileInfo(String id1, ResultData resultData, Map<String, String> req) {
+        req.put("bizAppId","flydiy-auto-sit-default-front-greeshmerge");
+        req.put("bizTable","default");
+        req.put("bizType","default");
+        req.put("accessType","auth");
+        req.put("url", resultData.getExtData().getDir());
+        req.put("name", id1);
+    }
+
+
+    /**
+     * 该表只进行增加数据
+     *     相同类型数据只取最大ID
+     * @return
+     */
+    private List<WorkerCert> getWorkerUploads() {
+        // 同步标志-synStatus(0:待同步;1:已同步;99:同步失败)
+        return workerCertService.lambdaQuery()
+                .eq(WorkerCert::getOutSyncStatus,0)
+                .list();
+    }
+}

+ 1199 - 0
src/main/java/com/zfire/jiasm/syncdata/service/impl/UploadWorkerTOGreeServiceImpl.java

@@ -0,0 +1,1199 @@
+package com.zfire.jiasm.syncdata.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.zfire.jiasm.syncdata.base.BaseService;
+import com.zfire.jiasm.syncdata.base.WorkerCertificateInfo;
+import com.zfire.jiasm.syncdata.constant.DictTypeEnum;
+import com.zfire.jiasm.syncdata.constant.TaskConfigEnum;
+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.WorkUploadInfo;
+import com.zfire.jiasm.syncdata.request.ZJInfo;
+import com.zfire.jiasm.syncdata.response.WebsitQXLB;
+import com.zfire.jiasm.syncdata.response.WorkerUploadResponse;
+import com.zfire.jiasm.syncdata.service.PublicService;
+import com.zfire.jiasm.syncdata.service.UploadWorkerTOGreeService;
+import lombok.extern.slf4j.Slf4j;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+
+@Slf4j
+@Service
+public class UploadWorkerTOGreeServiceImpl implements UploadWorkerTOGreeService {
+    @Resource
+    BaseService baseService;
+    @Resource
+    OutWorkerUploadService outWorkerUploadService;
+    @Resource
+    WorkerService workerService;
+    @Resource
+    WorkerBrandAccountService workerBrandAccountService;
+    @Resource
+    WorkerStreetService workerStreetService;
+    @Resource
+    WorkerCertService workerCertService;
+    @Resource
+    WorkerServiceCategoryDetailService workerServiceCategoryDetailService;
+    @Resource
+    SysDictRefService sysDictRefService;
+    @Resource
+    SysDictService sysDictService;
+    @Resource
+    GreeLogic greeLogic;
+    @Resource
+    ItfTblWangdianPositionDownloadService itfTblWangdianPositionDownloadService;
+    @Resource
+    PublicService publicService;
+    @Resource
+    WebsitWorkerService websitWorkerService;
+
+
+
+
+
+    @Override
+    public void procesUploadWorker() throws Exception {
+        List<OutWorkerUpload> recs = new ArrayList<>();
+        Worker worker = new Worker();
+        List<WorkerBrandAccount> workerBrandAccount = new ArrayList<>();
+        WorkerStreet workerStreet = new WorkerStreet();
+        List<SignSplb> jySignSplbList = new ArrayList<>();
+        List<SignSplb> sySignSplbList = new ArrayList<>();
+        List<SignSplb> jyList = new ArrayList<>();
+        List<SignSplb> syList = new ArrayList<>();
+        WebsitQXLB websitqypl = new WebsitQXLB();
+        List<ItfTblWangdianPositionDownload> wdwxgGl = new ArrayList<>();
+        Map<String,List<ItfTblWangdianPositionDownload>> wdwxgGlMap = new HashMap<>();
+        Map<String,List<Worker>> workersMap = new HashMap<>();
+
+        String wxgaddapi = "/outapp/wxg/add";
+        String wdqyapi = "/outapp/wxg/base";
+
+        // 提取品牌信息
+        Brand brand = baseService.getBrand();
+        if (brand == null) {
+            return;
+        }
+
+        wdwxgGl = itfTblWangdianPositionDownloadService.lambdaQuery().list();
+        wdwxgGlMap = wdwxgGl.stream().
+                collect(Collectors.groupingBy(ItfTblWangdianPositionDownload::getWxgno));
+
+        // 只提取已入驻的师傅信息
+        List<Worker> workers = workerService.lambdaQuery()
+                .eq(Worker::getStatus,"ON").list();
+        if (CollectionUtils.isNotEmpty(workers)){
+            workersMap = workers.stream().
+                    collect(Collectors.groupingBy(Worker::getWorkerId));
+        }
+
+        // 获取待同步数据
+        recs = getWorkerUploads();
+
+        for (OutWorkerUpload item:recs){
+            try{
+                WorkUploadInfo req = new WorkUploadInfo();
+                WorkerCertificateInfo workerCertificateInfo = new WorkerCertificateInfo();
+
+                // 获取师傅信息  需要同步的师傅必须在平台系统中存在
+                if (!workersMap.containsKey(item.getWorkerId())){
+                    // 写入表备注信息
+                    updateWorkerUploadLag(item,"师傅尚未在平台中入驻");
+                    continue;
+                }
+                worker = workersMap.get(item.getWorkerId()).get(0);
+
+                // 查看师傅是否已选中品牌商 同步状态为有效状态
+                // 这里存在一个商户网点对应平台多个网点
+                workerBrandAccount = getWorkerBrandAccount(brand, item, worker);
+                if (CollectionUtils.isEmpty(workerBrandAccount)) {
+                    continue;
+                }
+
+                // 格力一个师傅最多三个有效网点超3个网点不能同步
+                if (checkWebsitSum(workerBrandAccount,item)){
+                    continue;
+                }
+
+                // 这里需要从对应的网点信息中提取师傅服务区域
+                // 查看师傅服务区域 规定随便取一个地址即可
+                workerStreet = getWorkerStreet(item, worker);
+                if (workerStreet == null) {
+                    continue;
+                }
+
+                // 验证师傅的保险证信息 所有网点都验证 这里只验证是否成功上传了图片
+                if (checkBXOutInsureCert(workerBrandAccount)) {
+                    continue;
+                }
+
+                // 按网点同步
+                for (WorkerBrandAccount dot: workerBrandAccount){
+
+                    // 提取师傅证件信息,未同步时不处理
+                    if (getCertificateInfo(workerCertificateInfo, worker.getWorkerId(),dot.getWebsitWorkerId())){
+                        break;
+                    }
+
+                    /**
+                     * 必要条件必须满足,否则不进行数据上传动作 身份证、高空证、保险证
+                     * 师傅信息同步到总部的必要条件:
+                     * 1:身份证、2:保险,3:高空证(复审时间必填)  这三个条件必备否则无法同步
+                     * 制冷证可以没有,如果填了复审时间则必填
+                     */
+                    if (checkNecessary(worker, item, workerCertificateInfo)){
+                        break;
+                    }
+
+                    // 获取签约品类
+                    if (getCategory(brand, jySignSplbList, sySignSplbList, worker, item, dot.getWorkerId())){
+                        break;
+                    }
+
+                    // 生成数据对象 证件
+                    getreq(workerCertificateInfo, req, worker,dot.getWebsitWorkerId());
+
+                    // 师傅所在网点状态
+                    req.setFlag("有效");
+                    if (worker.getStatus().equals("OFF") || dot.getBrandWorkerStatus().equals("OFF")){
+                        req.setFlag("无效");
+                    }
+
+                    //网点未签约品类时该网点师傅信息不同步
+                    GreeResponseHelper response = getwdqylbxx(wdqyapi,dot.getBrandWebsitId());
+                    if (response.getStatus() == 200){
+                        // 获取网点签约的品类信息
+                        websitqypl = JSONObject.parseObject(response.getData().toString(), WebsitQXLB.class);
+                    } else {
+                        // 写入表备注信息
+                        updateWorkerUploadLag(item,"获取网点签约的品类信息失败["+
+                                dot.getBrandWebsitId()+"]-"+
+                                (StringUtils.isEmpty(response.getMsg()) ? "":response.getMsg()));
+                        break;
+                    }
+
+                    // 从网点签约的品类信息中过滤师傅的品类信息
+                    String result = extracted(jySignSplbList, sySignSplbList, jyList, syList, websitqypl,dot.getBrandWebsitId());
+                    if (result.length()>0){
+                        // 写入表备注信息
+                        updateWorkerUploadLag(item,result);
+                        continue;
+                    }
+
+                    // 过滤后无品类,不能上传
+                    if (jyList.size()<1 && syList.size()<1){
+                        // 写入表备注信息
+                        updateWorkerUploadLag(item,"师傅签约品类过滤后不能同时为空");
+                        continue;
+                    }
+
+                    // 按网点过滤师傅的类别信息
+                    req.setJySignSplbList(jyList);
+                    req.setSySignSplbList(syList);
+
+                    // 服务人员编号(不填值为新增,填值为修改)
+                    if (StringUtils.isNotEmpty(dot.getBrandWorkerNumber())){
+                        req.setWxgno(dot.getBrandWorkerNumber());
+                        // 重值部分数据 以格力门店数据为准
+                        resetParameter(wdwxgGlMap, req,workerStreet);
+                    } else {
+                        extractedPCAS(req, workerStreet);
+                    }
+                    // 所属网点
+                    req.setWdno(dot.getBrandWebsitId());
+
+                    // 日志
+                    log.info("报文:{}",JSONObject.toJSONString(req));
+
+                    // 同步
+                    syncData(dot.getId(), wxgaddapi, item, req,dot.getBrandWebsitId());
+
+                    jyList.clear();
+                    syList.clear();
+                }
+            } catch (Exception ex) {
+                String msg ="同步失败";
+                if (ex.getMessage() != null){
+                    msg = ex.getMessage();
+                }
+                if (ex.getMessage() != null && ex.getMessage().trim().length() > 255) {
+                    msg = ex.getMessage().substring(0, 255);
+                }
+                updateWorkerUploadLag(item,msg);
+            }
+        }
+    }
+
+
+
+    // 商户网点与平台网点存在一对多,确保正确,所有平台网点的图片都必须生成
+    private boolean checkBXOutInsureCert(List<WorkerBrandAccount> workerBrandAccount) {
+        List<String> websitworkerids = new ArrayList<>();
+        workerBrandAccount.stream().forEach(wba->{
+            websitworkerids.add(wba.getWebsitId());
+        });
+        List<WebsitWorker> websitWorkers = websitWorkerService.lambdaQuery()
+                .in(WebsitWorker::getWebsitWorkerId,websitworkerids)
+                .eq(WebsitWorker::getOutInsureCert,"").list();
+        if (CollectionUtils.isNotEmpty(websitWorkers)){
+            return true;
+        }
+        return false;
+    }
+
+    private void resetParameter(Map<String, List<ItfTblWangdianPositionDownload>> wdwxgGlMap,
+                                WorkUploadInfo req,
+                                WorkerStreet workerStreet) {
+        if (wdwxgGlMap.containsKey(req.getWxgno())){
+            ItfTblWangdianPositionDownload i = wdwxgGlMap.get(req.getWxgno()).get(0);
+            req.setSfen(i.getSfen());
+            req.setCshi(i.getCshi());
+            req.setCounty(i.getCounty());
+            req.setXzhen(i.getXzhen());
+            req.setFlag(i.getFlag());
+            req.setFwryzpfj(i.getFwryzpfj());
+            req.setGzkkh(i.getGzkkh());
+            req.setHmdbz(i.getHmdbz());
+            req.setIfmessageFlag(i.getIfmessageFlag());
+            req.setPxhgkssj(i.getPxhgkssj());
+            req.setQbaoid(i.getQbaoid());
+            req.setQbcheackFlag(i.getQbcheackFlag());
+            req.setSfdswxgFlag(i.getSfdswxgFlag());
+            req.setSfhmdFlag(i.getSfhmdFlag());
+            req.setVipflag(i.getVipflag());
+            req.setMaxaznum(i.getMaxaznum());
+            req.setMaxwxnum(i.getMaxwxnum());
+        } else {
+            extractedPCAS(req, workerStreet);
+        }
+    }
+
+    private String extracted(List<SignSplb> jySignSplbList, List<SignSplb> sySignSplbList,
+                             List<SignSplb> jyList, List<SignSplb> syList, WebsitQXLB websitqypl,String brandWebsitNumber) {
+        String result = "";
+        List<String> syfwlbList = new ArrayList<>();
+        List<String> jyfwlbList = new ArrayList<>();
+
+        if (websitqypl.getJySignSplbList().size()<1 && websitqypl.getSySignSplbList().size()<1){
+            result="网点【"+brandWebsitNumber+"】暂未签约品类";
+            return result;
+        }
+
+        // 过滤商用品类
+        if (websitqypl.getSySignSplbList().size()>0 && sySignSplbList.size()>0){
+            // 大类名称 取交集
+            websitqypl.getSySignSplbList().get(0).getFwlbList().retainAll(sySignSplbList.get(0).getFwlbList());
+            syfwlbList.addAll(websitqypl.getSySignSplbList().get(0).getFwlbList());
+            // 品类
+            for (SignSplb sy : sySignSplbList){
+                for (SignSplb wdsy: websitqypl.getSySignSplbList()){
+                    if (wdsy.getSpdl().equals(sy.getSpdl())){
+                        /*if (wdsy.getSpxl()==null){
+                            result="网点:【"+brandWebsitNumber+"】商用大类【"+wdsy.getSpdl()+"】下未签约小类";
+                            return result;
+                        }*/
+                        SignSplb one = new SignSplb();
+                        one.setFwlbList(syfwlbList);
+                        one.setSpdl(wdsy.getSpdl());
+                        one.setSpdlName(wdsy.getSpdlName());
+                        if (wdsy.getSpxl()!=null){
+                            one.setSpxl(wdsy.getSpxl());
+                            one.setSpxlName(wdsy.getSpxlName());
+                        }
+                        syList.add(one);
+                    }
+                }
+            }
+        }
+
+        // 过滤家用品类
+        if (websitqypl.getJySignSplbList().size()>0 && jySignSplbList.size()>0){
+            // 大类名称 取交集
+            websitqypl.getJySignSplbList().get(0).getFwlbList().retainAll(jySignSplbList.get(0).getFwlbList());
+            jyfwlbList.addAll(websitqypl.getJySignSplbList().get(0).getFwlbList());
+            // 品类
+            for (SignSplb sy : jySignSplbList){
+                for (SignSplb wdjy: websitqypl.getJySignSplbList()){
+                    if (wdjy.getSpdl().equals(sy.getSpdl()) ){
+                        /*if (wdjy.getSpxl()==null){
+                            result="网点:【"+brandWebsitNumber+"】家用大类【"+wdjy.getSpdl()+"】下未签约小类";
+                            return result;
+                        }*/
+                        SignSplb one = new SignSplb();
+                        one.setFwlbList(jyfwlbList);
+                        one.setSpdl(wdjy.getSpdl());
+                        one.setSpdlName(wdjy.getSpdlName());
+                        if (wdjy.getSpxl()==null){
+                            one.setSpxl(wdjy.getSpxl());
+                            one.setSpxlName(wdjy.getSpxlName());
+                        }
+                        jyList.add(one);
+                    }
+                }
+            }
+        }
+
+        return result;
+    }
+
+    private Boolean checkNecessary(Worker worker, OutWorkerUpload item, WorkerCertificateInfo workerCertificateInfo) {
+        if (StringUtils.isEmpty(workerCertificateInfo.getSfzbh())){
+            updateWorkerUploadLag(item,"师傅缺失身份证信息,不上传");
+            return Boolean.TRUE;
+        }
+        // 可不买保险 虚构保单
+        if (StringUtils.isNotEmpty(workerCertificateInfo.getBxz()) && StringUtils.isEmpty(worker.getSafeNo())){
+            worker.setSafeNo("99999999");
+        }
+
+        if (StringUtils.isEmpty(worker.getSafeNo()) || StringUtils.isEmpty(workerCertificateInfo.getBxz())){
+            updateWorkerUploadLag(item,"师傅缺失保险信息,不上传");
+            return Boolean.TRUE;
+        }
+        if (StringUtils.isEmpty(workerCertificateInfo.getGkzbh())){
+            updateWorkerUploadLag(item,"师傅缺失高空证信息,不上传");
+            return Boolean.TRUE;
+        } else {
+            if (StringUtils.isEmpty(workerCertificateInfo.getGkzfsrq())){
+                updateWorkerUploadLag(item,"师傅高空证缺失证件复审时间:,不上传");
+                return Boolean.TRUE;
+            }
+        }
+        if (StringUtils.isNotEmpty(workerCertificateInfo.getZlgbh())){
+            if (StringUtils.isEmpty(workerCertificateInfo.getZlgfsrq())){
+                updateWorkerUploadLag(item,"师傅制冷证缺失证件复审时间:,不上传");
+                return Boolean.TRUE;
+            }
+        }
+
+        return Boolean.FALSE;
+    }
+
+    private Boolean getCertificateInfo(WorkerCertificateInfo workerCertificateInfo, String workerId, String websitWorkerId) throws ParseException {
+        // 身份证
+        if (getsfz(workerCertificateInfo, workerId)){
+            return Boolean.FALSE;
+        }
+        // 保险证
+        if (getbxz(workerCertificateInfo, workerId, websitWorkerId)){
+            return Boolean.FALSE;
+        }
+        // 高空作业证
+        if (getgkz(workerCertificateInfo, workerId)){
+            return Boolean.FALSE;
+        }
+        // 上岗资格证
+        if (getsgz(workerCertificateInfo, workerId)){
+            return Boolean.TRUE;
+        }
+        // 制冷工证
+        if (getzlz(workerCertificateInfo, workerId)){
+            return Boolean.TRUE;
+        }
+        // 驾驶证
+        if (getjsz(workerCertificateInfo, workerId)){
+            return Boolean.TRUE;
+        }
+
+        return Boolean.FALSE;
+    }
+
+    private Boolean getCertificateInfoWorkerCert(WorkerCertificateInfo workerCertificateInfo, String workerId) throws ParseException {
+        // 提取身份证信息 无不同步
+        if (getsfz(workerCertificateInfo, workerId)){
+            return Boolean.TRUE;
+        }
+
+        // 高空作业证
+        if (getgkz(workerCertificateInfo, workerId)){
+            return Boolean.TRUE;
+        }
+
+        return Boolean.FALSE;
+    }
+
+    // true为有信息
+    private Boolean getjsz(WorkerCertificateInfo workerCertificateInfo, String workerId) throws ParseException {
+        WorkerCert certificate = getCertificateInfo(workerId,"驾驶证");
+        // 无证件不处理
+        if (certificate == null){
+            return Boolean.FALSE;
+        }
+        // 身份证信息未同步,不操作
+        if (!certificate.getOutSyncStatus().equals(1)){
+            return Boolean.TRUE;
+        }
+        if (StringUtils.isNotEmpty(certificate.getOutFileUrl())){
+            workerCertificateInfo.setJszz(certificate.getOutFileUrl());
+        }
+        if (StringUtils.isNotEmpty(certificate.getOutFileUrl2())){
+            workerCertificateInfo.setJszf(certificate.getOutFileUrl2());
+        }
+
+        if (certificate.getExpireTime() !=null){
+            workerCertificateInfo.setJszyxq(datesub(certificate.getExpireTime()));
+        }
+        if (certificate.getReviewTime() !=null){
+            workerCertificateInfo.setJszfsrq(datesub(certificate.getReviewTime()));
+        }
+
+        return Boolean.FALSE;
+    }
+
+    // true为有信息
+    private Boolean getzlz(WorkerCertificateInfo workerCertificateInfo, String workerId) throws ParseException {
+        WorkerCert certificate = getCertificateInfo(workerId,"制冷证");
+        // 无证件不处理
+        if (certificate == null){
+            return Boolean.FALSE;
+        }
+        // 身份证信息未同步,不操作
+        if (!certificate.getOutSyncStatus().equals(1)){
+            return Boolean.TRUE;
+        }
+        if (StringUtils.isNotEmpty(certificate.getOutFileUrl())){
+            workerCertificateInfo.setZlgz(certificate.getOutFileUrl());
+        }
+        if (StringUtils.isNotEmpty(certificate.getOutFileUrl2())){
+            workerCertificateInfo.setZlgf(certificate.getOutFileUrl2());
+        }
+        workerCertificateInfo.setZlgbh(certificate.getCertNo());
+
+        if (certificate.getExpireTime() !=null){
+            workerCertificateInfo.setZlgyxq(datesub(certificate.getExpireTime()));
+        }
+        if (certificate.getReviewTime() !=null){
+            workerCertificateInfo.setZlgfsrq(datesub(certificate.getReviewTime()));
+        }
+
+        return Boolean.FALSE;
+    }
+
+    // true为有证件
+    private Boolean getsgz(WorkerCertificateInfo workerCertificateInfo, String workerId) throws ParseException {
+        WorkerCert certificate = getCertificateInfo(workerId,"上岗证");
+        // 无证件不处理
+        if (certificate == null){
+            return Boolean.FALSE;
+        }
+        // 身份证信息未同步,不操作
+        if (!certificate.getOutSyncStatus().equals(1)){
+            return Boolean.TRUE;
+        }
+        if (StringUtils.isNotEmpty(certificate.getOutFileUrl())){
+            workerCertificateInfo.setSgzgzz(certificate.getOutFileUrl());
+        }
+        if (StringUtils.isNotEmpty(certificate.getOutFileUrl2())){
+            workerCertificateInfo.setSgzgzf(certificate.getOutFileUrl2());
+        }
+        workerCertificateInfo.setSgzgzbh(certificate.getCertNo());
+
+        if (certificate.getExpireTime() !=null){
+            workerCertificateInfo.setSgzgzyxq(datesub(certificate.getExpireTime()));
+        }
+        if (certificate.getReviewTime() !=null){
+            workerCertificateInfo.setSgzgzfsrq(datesub(certificate.getReviewTime()));
+        }
+
+        return Boolean.FALSE;
+    }
+
+    // true为有信息
+    private Boolean getgkz(WorkerCertificateInfo workerCertificateInfo, String workerId) throws ParseException {
+        WorkerCert certificate = getCertificateInfo(workerId,"高空证");
+        // 无证件不处理
+        if (certificate == null){
+            return Boolean.TRUE;
+        }
+        // 身份证信息未同步,不操作
+        if (!certificate.getOutSyncStatus().equals(1)){
+            return Boolean.TRUE;
+        }
+        if (StringUtils.isNotEmpty(certificate.getOutFileUrl())){
+            workerCertificateInfo.setGkzz(certificate.getOutFileUrl());
+        }
+        if (StringUtils.isNotEmpty(certificate.getOutFileUrl2())){
+            workerCertificateInfo.setGkzf(certificate.getOutFileUrl2());
+        }
+        workerCertificateInfo.setGkzbh(certificate.getCertNo());
+
+        if (certificate.getExpireTime() !=null){
+            workerCertificateInfo.setGkzyxq(datesub(certificate.getExpireTime()));
+        }
+        if (certificate.getReviewTime() !=null){
+            workerCertificateInfo.setGkzfsrq(datesub(certificate.getReviewTime()));
+        }
+
+        return Boolean.FALSE;
+    }
+
+    // true为有信息
+    private Boolean getbxz(WorkerCertificateInfo workerCertificateInfo, String workerId, String websitWorkerId) throws ParseException {
+        WebsitWorker wk = websitWorkerService.lambdaQuery()
+                .eq(WebsitWorker::getWebsitWorkerId,websitWorkerId).one();
+
+        // 证件信息未同步,不操作
+        if (StringUtils.isEmpty(wk.getOutInsureCert())){
+            return Boolean.TRUE;
+        }
+        workerCertificateInfo.setBxz(wk.getOutInsureCert());
+        if (wk.getGmbxyxq() !=null){
+            workerCertificateInfo.setBxyxq(datesub(wk.getGmbxyxq()));
+        }
+
+        return Boolean.FALSE;
+    }
+
+    private Boolean getbxzBak(WorkerCertificateInfo workerCertificateInfo, String workerId) throws ParseException {
+        WorkerCert certificate = getCertificateInfo(workerId,"保险证");
+        // 无证件不处理
+        if (certificate == null){
+            return Boolean.TRUE;
+        }
+        // 身份证信息未同步,不操作
+        if (!certificate.getOutSyncStatus().equals(1)){
+            return Boolean.TRUE;
+        }
+        if (StringUtils.isNotEmpty(certificate.getOutFileUrl())){
+            workerCertificateInfo.setBxz(certificate.getOutFileUrl());
+        }
+        if (StringUtils.isNotEmpty(certificate.getOutFileUrl2())){
+            workerCertificateInfo.setBxf(certificate.getOutFileUrl2());
+        }
+
+        if (certificate.getExpireTime() !=null){
+            workerCertificateInfo.setBxyxq(datesub(certificate.getExpireTime()));
+        }
+        if (certificate.getReviewTime() !=null){
+            workerCertificateInfo.setBxfsrq(datesub(certificate.getReviewTime()));
+        }
+
+        return Boolean.FALSE;
+    }
+
+    private Boolean getsfz(WorkerCertificateInfo workerCertificateInfo, String workerId) throws ParseException {
+        WorkerCert certificate = getCertificateInfo(workerId,"身份证");
+        // 无证件不处理
+        if (certificate == null){
+            return Boolean.TRUE;
+        }
+        // 身份证信息未同步,不操作
+        if (!certificate.getOutSyncStatus().equals(1)){
+            return Boolean.TRUE;
+        }
+        if (StringUtils.isNotEmpty(certificate.getOutFileUrl())){
+            workerCertificateInfo.setSfzz(certificate.getOutFileUrl());
+        }
+        if (StringUtils.isNotEmpty(certificate.getOutFileUrl2())){
+            workerCertificateInfo.setSfzf(certificate.getOutFileUrl2());
+        }
+        workerCertificateInfo.setSfzbh(certificate.getCertNo());
+
+        if (certificate.getExpireTime() !=null){
+            workerCertificateInfo.setSfzyxq(datesub(certificate.getExpireTime()));
+        }
+        if (certificate.getReviewTime() !=null){
+            workerCertificateInfo.setSfzfsrq(datesub(certificate.getReviewTime()));
+        }
+
+        return Boolean.FALSE;
+    }
+
+    public String datesub(@NotNull Date d) {
+        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);
+        long localTime = d.getTime()-8*60*60*1000;
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTimeInMillis(localTime);
+        Date utcDate = new Date(calendar.getTimeInMillis());
+        return sf.format(utcDate);
+    }
+
+    public String dateToUTC(Date d) throws ParseException {
+        SimpleDateFormat sdft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format = "yyyy/MM/dd HH:mm:ss";
+        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);
+        SimpleDateFormat sdf = new SimpleDateFormat (format);
+        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
+        Date gmtTime = new Date(sdf.format(d));
+        return sf.format(gmtTime);
+    }
+
+    private WorkerCert getCertificateInfo(String workerId, String certName){
+        List<WorkerCert> recs = new ArrayList<>();
+        recs = workerCertService.lambdaQuery()
+                .eq(WorkerCert::getWorkerId, workerId)
+                .eq(WorkerCert::getCertName, certName)
+                .list();
+
+        // 无证件不处理
+        if (recs.size()<1){
+            return null;
+        }
+        return recs.get(0);
+    }
+
+    // 获取网点签约的品类信息 并过滤师傅的品类信息
+    private GreeResponseHelper getwdqylbxx(String apiPath, String wdno) throws Exception {
+        Map<String,String> req = new HashMap<>();
+
+        req.put("wdno",wdno);
+        GreeResponseHelper response = greeLogic.greePost(apiPath, JSONObject.toJSONString(req), publicService.getCompanyId(wdno));
+        return response;
+    }
+
+    private void syncData(String id, String apiPath, OutWorkerUpload item, WorkUploadInfo req,String brandWebsitId) throws Exception {
+        GreeResponseHelper response = greeLogic.greePost(apiPath, JSONObject.toJSONString(req), publicService.getCompanyId(brandWebsitId));
+
+        if (response.getStatus() == 200){
+            // 成功 修改同步状态
+            updateWorkerUploadSuccess(item);
+            // 修改师傅品牌网点帐号
+            updataWorker(id, response);
+        } else {
+            // 失败 修改同步状态
+            updateWorkerUploadError(item, response);
+        }
+    }
+
+    private void updateWorkerUploadError(OutWorkerUpload item, GreeResponseHelper response) {
+        OutWorkerUpload v = new OutWorkerUpload();
+        v.setSynReqId(item.getSynReqId());
+        v.setSyncStatus(99);
+        v.setSyncTime(new Date());
+        v.setSyncTimes(item.getSyncTimes()+1);
+
+        if (response.getMsg().length()>255){
+            v.setSyncErrorMsg(response.getMsg().substring(0,255));
+        } else {
+            v.setSyncErrorMsg(response.getMsg());
+        }
+
+        outWorkerUploadService.updateById(v);
+    }
+
+    // 这里只有修改
+    private void updataWorker(String id, GreeResponseHelper response) throws JsonProcessingException {
+        WorkerBrandAccount w = new WorkerBrandAccount();
+        w.setId(id);
+        w.setOutSyncTime(new Date());
+        WorkerUploadResponse resultData = JSONObject.parseObject(response.getData().toString(), WorkerUploadResponse.class);
+        w.setBrandWorkerNumber(resultData.getWxgno());
+        w.setBrandWorkerId(String.valueOf(resultData.getId()));
+        workerBrandAccountService.updateById(w);
+    }
+
+    private void updateWorkerUploadSuccess(OutWorkerUpload item) {
+        OutWorkerUpload v = new OutWorkerUpload();
+        v.setSynReqId(item.getSynReqId());
+        v.setSyncStatus(1);
+        v.setSyncTime(new Date());
+        v.setSyncTimes(item.getSyncTimes()+1);
+        v.setSyncErrorMsg("成功");
+        outWorkerUploadService.updateById(v);
+    }
+
+    private void getreq(WorkerCertificateInfo workerCertificateInfo, WorkUploadInfo req, Worker worker,String websitWorkerId) throws Exception {
+        List<ZJInfo> zjInfoList = new ArrayList<>();
+
+        // 证件信息
+        getcert(workerCertificateInfo, zjInfoList, worker, websitWorkerId);
+
+        // 生成数据对象
+        setReq(zjInfoList, req, worker,websitWorkerId);
+    }
+
+    private Boolean extractedPCAS(WorkUploadInfo req, WorkerStreet workerStreet) {
+        req.setSfen(workerStreet.getProvince());
+        req.setCshi(workerStreet.getCity());
+        req.setCounty(workerStreet.getArea());
+        req.setXzhen(workerStreet.getStreet());
+        return Boolean.TRUE;
+    }
+
+    private void setReq(List<ZJInfo> zjInfoList, WorkUploadInfo req, Worker worker, String websitWorkerId) {
+        WebsitWorker wb = websitWorkerService.lambdaQuery()
+                .eq(WebsitWorker::getWebsitWorkerId,websitWorkerId).one();
+        req.setZjInfoList(zjInfoList);
+
+        req.setCsgzns(worker.getJobAge());
+        // 必填
+        req.setDizhi(worker.getAddress());
+        req.setFacecheck(wb.getFaceCheck());
+        req.setFacepath("");
+        if (StringUtils.isNotEmpty(wb.getFacePath())){
+            req.setFacepath(wb.getFacePath());
+        }
+
+        // 必填
+        req.setFwryzpfj("www");
+        if (StringUtils.isNotEmpty(worker.getImgUrl())){
+            req.setFwryzpfj(worker.getImgUrl());
+        }
+        req.setGzkkh("");
+        if (StringUtils.isNotEmpty(worker.getBankAccount())){
+            req.setGzkkh(worker.getBankAccount());
+        }
+        req.setGzkssyh("");
+        if (StringUtils.isNotEmpty(worker.getBankDeposit())){
+            req.setGzkssyh(worker.getBankDeposit());
+        }
+        req.setHasfaceFlag(Boolean.FALSE);
+        if (wb.getHasFace()==1){
+            req.setHasfaceFlag(Boolean.TRUE);
+        }
+        req.setHmdbz("");
+        if (StringUtils.isNotEmpty(worker.getBlackListRemark())){
+            req.setHmdbz(worker.getBlackListRemark());
+        }
+        // 必填
+        req.setIfmessageFlag(Boolean.FALSE);
+        if (worker.getIsSmsNotice().equals("YES")){
+            req.setIfmessageFlag(Boolean.TRUE);
+        }
+        req.setNianl(worker.getAge());
+        req.setPxhgkssj("");
+        /*if (worker.getTrainPassTime() !=null ){
+            req.setPxhgkssj(datesub(worker.getTrainPassTime()));
+        }*/
+        req.setQbaoid("");
+        req.setQbcheackFlag(Boolean.FALSE);
+        req.setSfdswxgFlag(Boolean.FALSE);
+
+        // 必填
+        req.setSfhmdFlag(Boolean.FALSE);
+        if (worker.getIsBlackList().equals("YES")){
+            req.setSfhmdFlag(Boolean.TRUE);
+        }
+        req.setSfpxhgFlag(Boolean.TRUE);
+        /*if (worker.getTrainStatus()){
+            req.setSfpxhgFlag(Boolean.TRUE);
+        }*/
+        // 必填
+        req.setSfzstFlag(Boolean.FALSE);
+        if (worker.getIsZst().equals("YES")){
+            req.setSfzstFlag(Boolean.TRUE);
+        }
+        req.setVipflag(worker.getVipFlag());
+
+        req.setWxfensu(wb.getScore());
+        // 必填
+        req.setWxgmc(worker.getWorkerName());
+        req.setXcsgz("");
+        if (StringUtils.isNotEmpty(worker.getJob())){
+            req.setXcsgz(worker.getJob());
+        }
+        // 必填
+        req.setXingb(worker.getGender());
+
+        // 必填 必须初中以下
+        req.setXueli("中专");
+        if (StringUtils.isNotEmpty(worker.getEducation())){
+            req.setXueli(worker.getEducation());
+        }
+        // 必填
+        if (StringUtils.isNotEmpty(worker.getMobile())){
+            req.setYddh(worker.getMobile());
+        }
+        req.setMaxwxnum(wb.getRepairDayLimit());
+        req.setMaxaznum(wb.getInstallDayLimit());
+    }
+
+    private void getcert(WorkerCertificateInfo workerCertificateInfo,
+                         List<ZJInfo> zjInfoList, Worker worker,String websitWorkerId) throws Exception {
+        // 身份证  必要条件
+        if (StringUtils.isNotEmpty(workerCertificateInfo.getSfzbh())) {
+            ZJInfo zjInfo = new ZJInfo();
+            zjInfo.setZjbh(workerCertificateInfo.getSfzbh());
+            zjInfo.setZjmc("身份证");
+            zjInfo.setZjyxq("");
+
+            // 证件路径 必填
+            if (StringUtils.isNotEmpty(workerCertificateInfo.getSfzz())) {
+                zjInfo.setZjlj(workerCertificateInfo.getSfzz());
+            }
+            if (StringUtils.isNotEmpty(workerCertificateInfo.getSfzf())) {
+                if (StringUtils.isNotEmpty(workerCertificateInfo.getSfzz())) {
+                    zjInfo.setZjlj(zjInfo.getZjlj() + "," + workerCertificateInfo.getSfzf());
+                } else {
+                    zjInfo.setZjlj(workerCertificateInfo.getSfzf());
+                }
+
+            }
+            if (StringUtils.isNotEmpty(workerCertificateInfo.getSfzyxq())) {
+                zjInfo.setZjyxq(workerCertificateInfo.getSfzyxq());
+            }
+            if (StringUtils.isNotEmpty(workerCertificateInfo.getSfzfsrq())) {
+                zjInfo.setZjfssj(workerCertificateInfo.getSfzfsrq());
+            }
+
+            zjInfoList.add(zjInfo);
+        }
+
+        // 保险  必要条件
+        if (StringUtils.isNotEmpty(worker.getSafeNo())){
+            ZJInfo zjInfo = new ZJInfo();
+            WebsitWorker ww = new WebsitWorker();
+            ww = websitWorkerService.lambdaQuery()
+                    .eq(WebsitWorker::getWebsitWorkerId,websitWorkerId).one();
+
+            zjInfo.setZjbh(ww.getSafeCompany()+"/"+ ww.getSafeNo());
+            zjInfo.setZjmc("保险证");
+
+            // 证件路径 必填
+            if (StringUtils.isNotEmpty(workerCertificateInfo.getBxz())) {
+                zjInfo.setZjlj(workerCertificateInfo.getBxz());
+            }
+            if (StringUtils.isNotEmpty(workerCertificateInfo.getBxf())) {
+                if (StringUtils.isNotEmpty(workerCertificateInfo.getBxz())) {
+                    zjInfo.setZjlj(zjInfo.getZjlj() + "," + workerCertificateInfo.getBxf());
+                } else {
+                    zjInfo.setZjlj(workerCertificateInfo.getBxf());
+                }
+            }
+
+            if (StringUtils.isNotEmpty(workerCertificateInfo.getBxyxq())) {
+                zjInfo.setZjyxq(workerCertificateInfo.getBxyxq());
+            }
+            if (StringUtils.isNotEmpty(workerCertificateInfo.getBxfsrq())) {
+                zjInfo.setZjfssj(workerCertificateInfo.getBxfsrq());
+            }
+
+            zjInfoList.add(zjInfo);
+        }
+
+        // 高空作业证  必要条件
+        if (StringUtils.isNotEmpty(workerCertificateInfo.getGkzbh())
+                && StringUtils.isNotEmpty(workerCertificateInfo.getGkzyxq())){
+            ZJInfo zjInfo = new ZJInfo();
+            zjInfo.setZjbh(workerCertificateInfo.getGkzbh());
+            zjInfo.setZjmc("高空作业证");
+            zjInfo.setZjfssj(workerCertificateInfo.getGkzfsrq());
+
+            // 证件路径 必填
+            if (StringUtils.isNotEmpty(workerCertificateInfo.getGkzz())) {
+                zjInfo.setZjlj(workerCertificateInfo.getGkzz());
+            }
+            if (StringUtils.isNotEmpty(workerCertificateInfo.getGkzf())) {
+                if (StringUtils.isNotEmpty(workerCertificateInfo.getGkzz())) {
+                    zjInfo.setZjlj(zjInfo.getZjlj() + "," + workerCertificateInfo.getGkzf());
+                } else {
+                    zjInfo.setZjlj(workerCertificateInfo.getGkzf());
+                }
+            }
+
+            zjInfo.setZjfssj(workerCertificateInfo.getGkzfsrq());
+            zjInfo.setZjyxq(workerCertificateInfo.getGkzyxq());
+            zjInfoList.add(zjInfo);
+        }
+
+        // 上岗资格证
+        if (StringUtils.isNotEmpty(workerCertificateInfo.getSgzgzbh())){
+            ZJInfo zjInfo = new ZJInfo();
+            zjInfo.setZjbh(workerCertificateInfo.getSgzgzbh());
+            zjInfo.setZjmc("上岗资格证");
+
+            // 证件路径 必填
+            if (StringUtils.isNotEmpty(workerCertificateInfo.getSgzgzz())) {
+                zjInfo.setZjlj(workerCertificateInfo.getSgzgzz());
+            }
+            if (StringUtils.isNotEmpty(workerCertificateInfo.getSgzgzf())) {
+                if (StringUtils.isNotEmpty(workerCertificateInfo.getSgzgzz())) {
+                    zjInfo.setZjlj(zjInfo.getZjlj() + "," + workerCertificateInfo.getSgzgzf());
+                } else {
+                    zjInfo.setZjlj(workerCertificateInfo.getSgzgzf());
+                }
+            }
+
+            zjInfo.setZjfssj(workerCertificateInfo.getSgzgzfsrq());
+            zjInfo.setZjyxq(workerCertificateInfo.getSgzgzyxq());
+
+            zjInfoList.add(zjInfo);
+        }
+
+        // 制冷工证
+        if (StringUtils.isNotEmpty(workerCertificateInfo.getZlgbh())){
+            ZJInfo zjInfo = new ZJInfo();
+            zjInfo.setZjbh(workerCertificateInfo.getZlgbh());
+            zjInfo.setZjmc("制冷工证");
+
+            // 证件路径 必填
+            if (StringUtils.isNotEmpty(workerCertificateInfo.getZlgz())) {
+                zjInfo.setZjlj(workerCertificateInfo.getZlgz());
+            }
+            if (StringUtils.isNotEmpty(workerCertificateInfo.getZlgf())) {
+                if (StringUtils.isNotEmpty(workerCertificateInfo.getZlgz())) {
+                    zjInfo.setZjlj(zjInfo.getZjlj() + "," + workerCertificateInfo.getZlgf());
+                } else {
+                    zjInfo.setZjlj(workerCertificateInfo.getZlgf());
+                }
+            }
+
+            zjInfo.setZjfssj(workerCertificateInfo.getZlgfsrq());
+            zjInfo.setZjyxq(workerCertificateInfo.getZlgyxq());
+
+            zjInfoList.add(zjInfo);
+        }
+
+        // 驾驶证
+        if (StringUtils.isNotEmpty(workerCertificateInfo.getCph())){
+            ZJInfo zjInfo = new ZJInfo();
+            zjInfo.setZjbh(workerCertificateInfo.getCph());
+            zjInfo.setZjmc("驾驶证");
+
+            if (StringUtils.isNotEmpty(worker.getGpsMachineId())){
+                zjInfo.setZjbh(workerCertificateInfo.getCph()+"/"+ worker.getGpsMachineId());
+            }
+
+            // 证件路径 必填
+            if (StringUtils.isNotEmpty(workerCertificateInfo.getJszz())) {
+                zjInfo.setZjlj(workerCertificateInfo.getJszz());
+            }
+            if (StringUtils.isNotEmpty(workerCertificateInfo.getJszf())) {
+                if (StringUtils.isNotEmpty(workerCertificateInfo.getJszz())) {
+                    zjInfo.setZjlj(zjInfo.getZjlj() + "," + workerCertificateInfo.getJszf());
+                } else {
+                    zjInfo.setZjlj(workerCertificateInfo.getJszf());
+                }
+            }
+
+            zjInfo.setZjfssj(workerCertificateInfo.getJszfsrq());
+            zjInfo.setZjyxq(workerCertificateInfo.getJszyxq());
+
+            zjInfoList.add(zjInfo);
+        }
+    }
+
+    /**
+     * 签约大类,必须有对应的小类信息,否则无法上传(获取所有的大类对应的小类信息,再从网点本身过滤掉)
+     */
+    private Boolean getCategory(Brand brand, List<SignSplb> jySignSplbList, List<SignSplb> sySignSplbList,
+                                Worker worker, OutWorkerUpload itemi, String workerId) {
+        List<String> SYDictDaleiCode = new ArrayList<>();
+
+        // 提取品牌商所有的商用大类信息
+        List<SysDict> sysDicts = sysDictService.lambdaQuery()
+                .eq(SysDict::getDictType, DictTypeEnum.DICT_TYPE_MAIN_TYPE.getCode())
+                .eq(SysDict::getFlag, DictTypeEnum.DICT_TYPE_FLAG_SY.getCode()).list();
+        if (sysDicts !=null && sysDicts.size()>0){
+            SYDictDaleiCode = sysDicts.stream().map(SysDict::getDictCode).collect(Collectors.toList());
+        }
+
+        // 提取师傅的服务大类信息
+        List<WorkerServiceCategoryDetail> wxgCategoryRecs = workerServiceCategoryDetailService.lambdaQuery()
+                .eq(WorkerServiceCategoryDetail::getWorkerId, worker.getWorkerId())
+                .eq(WorkerServiceCategoryDetail::getWebsitId, workerId).list();
+
+        // 组装类别参数
+        if (wxgCategoryRecs !=null && wxgCategoryRecs.size()>0){
+            getCategoryt(brand, jySignSplbList, sySignSplbList, SYDictDaleiCode, wxgCategoryRecs);
+        }
+
+        if (jySignSplbList.size()<1 && sySignSplbList.size()<1){
+            // 写入表备注信息
+            updateWorkerUploadLag(itemi,"师傅签约的品类不能同时为空");
+            return Boolean.TRUE;
+        }
+
+        return Boolean.FALSE;
+    }
+
+    // 获取类别信息
+    // 师傅的服务类型分,安装、维修、配送等
+    // 格力网点答约的服务类目也要限制师傅的品数参数
+    private void getCategoryt(Brand brand, List<SignSplb> jySignSplbList, List<SignSplb> sySignSplbList,
+                              List<String> SYDictDaleiCode, List<WorkerServiceCategoryDetail> wxgCategoryRecs) {
+        List<SysDictRef> sysDictRefs = new ArrayList<>();
+
+        // 组装参数类别名称信息
+        List<String> fwlbList = getCategoryName(wxgCategoryRecs);
+
+        // 获取师傅在品牌商品对应的类别信息
+        getDictRefs(brand, wxgCategoryRecs, sysDictRefs);
+
+        // 组装品类参数
+        for (SysDictRef item:sysDictRefs){
+            // 大类对应的小类必填
+            // 获取品牌商的大类对应的所有小类信息
+            List<SysDict> categorys = sysDictService.lambdaQuery()
+                    .eq(SysDict::getDictType, DictTypeEnum.DICT_TYPE_SMALL_TYPE.getCode())
+                    .eq(SysDict::getParentDictType, DictTypeEnum.DICT_TYPE_MAIN_TYPE.getCode())
+                    .eq(SysDict::getStatus, DictTypeEnum.DICT_TYPE_ON.getCode())
+                    // .eq(SysDict::getDictCode, "120300") 测试用
+                    .eq(SysDict::getParentDictCode, item.getRefDictCode()).list();
+            if (categorys !=null && categorys.size()>0){
+                for (SysDict category :categorys){
+                    SignSplb v = new SignSplb();
+                    v.setSpdl(Integer.valueOf(item.getRefDictCode()));
+                    v.setSpdlName(item.getRefDictName());
+                    v.setSpxl(Integer.valueOf(category.getDictCode()));
+                    v.setSpxlName(category.getDictValue());
+                    v.setFwlbList(fwlbList);
+                    // 查看是否为商用
+                    if (SYDictDaleiCode.contains(item.getDictCode())){
+                        sySignSplbList.add(v);
+                    } else {
+                        jySignSplbList.add(v);
+                    }
+                }
+            }
+        }
+    }
+
+    @NotNull
+    private List<String> getCategoryName(List<WorkerServiceCategoryDetail> wxgCategoryRecs) {
+        // 服务类型 INSTALL=安装 REPAIR=维修  DELIVERY=配送
+        Map<String,String> serviceFwlbList = new HashMap<>();
+        for (WorkerServiceCategoryDetail w: wxgCategoryRecs){
+            if (w.getType().equals("INSTALL")){
+                serviceFwlbList.put("INSTALL","安装");
+            } else if (w.getType().equals("REPAIR")){
+                serviceFwlbList.put("REPAIR\"","维修");
+            } else if (w.getType().equals("DELIVERY")){
+                serviceFwlbList.put("DELIVERY","配送");
+            }
+        }
+        List<String> fwlbList = new ArrayList<>();
+        Set<String> keySet = serviceFwlbList.keySet();
+        for (String key : keySet){
+            String val = serviceFwlbList.get(key);
+            fwlbList.add(val);
+        }
+        return fwlbList;
+    }
+
+    private void getDictRefs(Brand brand, List<WorkerServiceCategoryDetail> wxgCategoryRecs, List<SysDictRef> sysDictRefs) {
+        List<String> wxgCaregoryIds = wxgCategoryRecs.stream().map(WorkerServiceCategoryDetail::getMainId).collect(Collectors.toList());
+
+        // 提取师傅所在品牌商对应的大类信息
+        List<SysDictRef> sysDictRefRecs =  sysDictRefService.lambdaQuery()
+                .eq(SysDictRef::getBrandId, brand.getBrandId())
+                .eq(SysDictRef::getDictType, DictTypeEnum.DICT_TYPE_MAIN_TYPE.getCode())
+                .in(SysDictRef::getDictCode,wxgCaregoryIds).list();
+
+        // sysDictRefs 内的大类信息需去除无效的大类信息
+        // 提取品牌商所有无效的大类信息
+        List<SysDict> daleis = sysDictService.lambdaQuery()
+                .eq(SysDict::getDictType, DictTypeEnum.DICT_TYPE_MAIN_TYPE.getCode())
+                .eq(SysDict::getStatus, DictTypeEnum.DICT_TYPE_OFF.getCode())
+                .list();
+        if ((daleis !=null && daleis.size()>0) && (sysDictRefRecs!=null && sysDictRefRecs.size()>0)){
+            List<String> daleiCodes = new ArrayList<>();
+            daleiCodes = daleis.stream().map(SysDict::getDictCode).collect(Collectors.toList());
+            for (SysDictRef s: sysDictRefRecs){
+                if (!daleiCodes.contains(s.getDictCode())){
+                    sysDictRefs.add(s);
+                }
+            }
+        } else {
+            sysDictRefs.addAll(sysDictRefRecs);
+        }
+
+    }
+
+
+    @Nullable
+    private WorkerStreet getWorkerStreet(OutWorkerUpload item, Worker worker) {
+        List<WorkerStreet> wss = workerStreetService.lambdaQuery()
+                .eq(WorkerStreet::getWorkerId, worker.getWorkerId()).list();
+        if (wss == null || wss.size()<1){
+            // 写入表备注信息
+            updateWorkerUploadLag(item,"师傅服务区域信息不存在");
+            return null;
+        }
+        WorkerStreet ws = wss.get(0);
+        // 必填参数 省份-城市-区县-乡镇
+        /*if (StringUtils.isEmpty(ws.getProvince()) || StringUtils.isEmpty(ws.getCity())
+        || StringUtils.isEmpty(ws.getArea()) || StringUtils.isEmpty(ws.getStreet())){
+            updateWorkerUploadLag(item,"师傅所在省市区镇信息缺失");
+            return null;
+        }
+*/
+        return ws;
+    }
+
+    private void updateWorkerUploadLag(OutWorkerUpload item, String msg) {
+        OutWorkerUpload v = new OutWorkerUpload();
+        v.setSynReqId(item.getSynReqId());
+        v.setSyncTime(new Date());
+        v.setSyncErrorMsg(msg);
+        if (msg.length()>255){
+            v.setSyncErrorMsg(msg.substring(0,255));
+        }
+        outWorkerUploadService.updateById(v);
+    }
+
+    @Nullable
+    private List<WorkerBrandAccount> getWorkerBrandAccount(Brand brand, OutWorkerUpload item, Worker worker) {
+        List<WorkerBrandAccount> workerBrandAccount = workerBrandAccountService.lambdaQuery()
+                .eq(WorkerBrandAccount::getWorkerId, worker.getWorkerId())
+                .eq(WorkerBrandAccount::getGroupCompanyId, brand.getBrandId())
+                .eq(WorkerBrandAccount::getBrandWorkerStatus,"ON")
+                .eq(WorkerBrandAccount::getDel, 0)
+                .orderByAsc(WorkerBrandAccount::getCreateTime)
+                .list();
+
+        if (CollectionUtils.isEmpty(workerBrandAccount)){
+            // 写入表备注信息
+            updateWorkerUploadLag(item,"师傅未选择品牌商");
+            return null;
+        }
+        return workerBrandAccount;
+    }
+
+
+    private Boolean checkWebsitSum(List<WorkerBrandAccount> workerBrandAccount, OutWorkerUpload item){
+        // 格力一个师傅最多三个有效网点超3个网点不能同步
+        Integer sum = 0;
+        for (WorkerBrandAccount wba :workerBrandAccount){
+            if (wba.getBrandWorkerStatus().equals("ON")){
+                sum ++;
+            }
+        }
+        if (sum>3) {
+            // 写入表备注信息
+            updateWorkerUploadLag(item,"师傅所在有效网点数超过3个无法同步");
+            return Boolean.TRUE;
+        }
+
+        return Boolean.FALSE;
+    }
+
+
+    @Nullable
+    private Worker getWorker(OutWorkerUpload item) {
+        Worker worker = workerService.lambdaQuery()
+                .eq(Worker::getWorkerId, item.getWorkerId())
+                .eq(Worker::getStatus,"ON").one();
+        if (worker ==null){
+            return null;
+        }
+        return worker;
+    }
+
+    private List<OutWorkerUpload> getWorkerUploads() {
+        // 同步标志-synStatus(0:待同步;1:已同步;99:同步失败)
+        List<OutWorkerUpload> recs;
+        LambdaQueryWrapper<OutWorkerUpload> queryWrapper = new LambdaQueryWrapper<OutWorkerUpload>()
+                .eq(OutWorkerUpload::getSyncStatus,0)
+                .or(wrapper->wrapper.eq(OutWorkerUpload::getSyncStatus,99)
+                        .le(OutWorkerUpload::getSyncTimes,10));
+        recs = outWorkerUploadService.list(queryWrapper);
+        return recs;
+    }
+}

+ 6 - 1407
src/main/java/com/zfire/jiasm/syncdata/upload/order/InstallProduceDataUpload.java

@@ -1,42 +1,12 @@
 package com.zfire.jiasm.syncdata.upload.order;
 
-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.*;
-import com.zfire.jiasm.syncdata.dao.mapper.*;
-import com.zfire.jiasm.syncdata.gree.GreeLogic;
-import com.zfire.jiasm.syncdata.helper.GreeFileResponseHelper;
-import com.zfire.jiasm.syncdata.helper.GreeFileSaveHelper;
-import com.zfire.jiasm.syncdata.http.PostObjectSample;
-import com.zfire.jiasm.syncdata.parameter.*;
-import com.zfire.jiasm.syncdata.plus.entity.*;
-import com.zfire.jiasm.syncdata.plus.service.*;
-import com.zfire.jiasm.syncdata.response.ResultData;
-import com.zfire.jiasm.syncdata.response.WebsitFWS;
-import com.zfire.jiasm.syncdata.response.WebsitPP;
-import com.zfire.jiasm.syncdata.response.WebsitSH;
-import com.zfire.jiasm.syncdata.service.OrderService;
-import com.zfire.jiasm.syncdata.service.PublicService;
-import com.zfire.jiasm.syncdata.service.orderBaseInstallCjOrWgService;
-import com.zfire.jiasm.syncdata.utils.MyBeanUtils;
-import com.zfire.jiasm.syncdata.utils.RemoteServiceException;
-import com.zfire.jiasm.syncdata.utils.oss.OSSUtil;
+import com.zfire.jiasm.syncdata.constant.TaskConfigEnum;
+import com.zfire.jiasm.syncdata.service.InstallProduceDataUploadService;
 import lombok.extern.slf4j.Slf4j;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
+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.io.File;
-import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * 生成需要上传的数据
@@ -85,105 +55,8 @@ public class InstallProduceDataUpload {
     @Value("${azuploadyscc}")
     private String azuploadyscc = "";
 
-
-    @Resource
-    InstallProduceDataUpload installProduceDataUpload;
-    @Resource
-    OutJiasmToGreeUploadTaskTypeService outJiasmToGreeUploadTaskTypeService;
-    @Resource
-    OutJiasmToGreeUploadTaskListService outJiasmToGreeUploadTaskListService;
-    @Resource
-    OrderBaseService orderBaseService;
-    @Resource
-    GDOrderBaseMapper gdOrderBaseMapper;
-    @Resource
-    BaseService baseService;
-    @Resource
-    ItfTblAzAssignLcLsUploadService itfTblAzAssignLcLsUploadService;
-    @Resource
-    OrderInstallDetailService orderInstallDetailService;
-    @Resource
-    DetailOrderInstallMapper detailOrderInstallMapper;
-    @Resource
-    SysDictRefService sysDictRefService;
-    @Resource
-    BrandWebsitService brandWebsitService;
-    @Resource
-    ItfTblWangdianWxgDownloadService itfTblWangdianWxgDownloadService;
-    @Resource
-    FileOrderDetailMapper fileOrderDetailMapper;
-    @Resource
-    OrderDetailFileService orderDetailFileService;
-    @Resource
-    ItfTblAzWgmxJyktFjUploadService itfTblAzWgmxJyktFjUploadService;
-    @Resource
-    ItfTblAzWgmxSyktFjUploadService itfTblAzWgmxSyktFjUploadService;
-    @Resource
-    ItfTblAzWgmxQitaFjUploadService itfTblAzWgmxQitaFjUploadService;
-    @Resource
-    ItfTblAzWgmxJyktUploadService itfTblAzWgmxJyktUploadService;
-    @Resource
-    ItfTblAzWgmxSyktUploadService itfTblAzWgmxSyktUploadService;
-    @Resource
-    ItfTblAzWgmxQitaUploadService itfTblAzWgmxQitaUploadService;
-    @Resource
-    CodeOrderInstallDetailMapper codeOrderInstallDetailMapper;
-    @Resource
-    OrderInstallDetailCodeService orderInstallDetailCodeService;
-    @Resource
-    ItfTblAzWgmxJyktTmmxUploadService itfTblAzWgmxJyktTmmxUploadService;
-    @Resource
-    ItfTblAzWgmxSyktTmmxLsUploadService itfTblAzWgmxSyktTmmxLsUploadService;
-    @Resource
-    ItfTblAzWgmxQitaTmmxUploadService itfTblAzWgmxQitaTmmxUploadService;
-    @Resource
-    ItfMessagehuifangentityService itfMessagehuifangentityService;
-    @Resource
-    OrderPayOutlayItemService orderPayOutlayItemService;
-    @Resource
-    OrderInstallService orderInstallService;
-    @Resource
-    ItfTblAzAssignFeeUploadService itfTblAzAssignFeeUploadService;
-    @Resource
-    OperatingLogOrderInstallMapper operatingLogOrderInstallMapper;
-    @Resource
-    ItfTblAzAssignFkmxUploadService itfTblAzAssignFkmxUploadService;
-    @Resource
-    ReAppointmentOrderMapper reAppointmentOrderMapper;
-    @Resource
-    ItfTblAzAssignAppointmentUploadService itfTblAzAssignAppointmentUploadService;
-    @Resource
-    PublicService publicService;
-    @Resource
-    OrderProductService orderProductService;
-    @Resource
-    GetOrderProductMapper getOrderProductMapper;
-    @Resource
-    ItfTblAzAssignMxUploadService itfTblAzAssignMxUploadService;
-    @Resource
-    OSSUtil ossUtil;
-    @Resource
-    GreeLogic greeLogic;
-    @Resource
-    ItfTblazwgmxjyktfjService itfTblazwgmxjyktfjService;
-    @Resource
-    ItfTblazwgmxjyktfjCJMapper itfTblazwgmxjyktfjCJMapper;
-    @Resource
-    ItfTblazwgmxsyktfjService itfTblazwgmxsyktfjService;
-    @Resource
-    ItfTblazwgmxqitafjService itfTblazwgmxqitafjService;
-    @Resource
-    ItfTblazwgmxqitafjCJMapper itfTblazwgmxqitafjCJMapper;
-    @Resource
-    orderBaseInstallCjOrWgService orderBaseInstallCjOrWgService;
-    @Resource
-    OrderInformationService orderInformationService;
-    @Resource
-    OrderInformationNewMapper orderInformationNewMapper;
-    @Resource
-    ItfTblAzAssignXzydUploadService itfTblAzAssignXzydUploadService;
-    @Resource
-    OrderService orderService;
+    @Autowired
+    InstallProduceDataUploadService installProduceDataUploadService;
 
 
 
@@ -193,1284 +66,10 @@ public class InstallProduceDataUpload {
             return;
         }
 
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        String cjOrWg = "";
-
-        // 提取品牌信息
-        Brand brand = baseService.getBrand();
-        if (brand == null) {
-            return;
-        }
-
-        // 提取大类信息
-        List<SysDictRef> sysDictRefRecs =  sysDictRefService.lambdaQuery()
-                .select(SysDictRef::getRefDictName,
-                        SysDictRef::getDictCode)
-                .eq(SysDictRef::getBrandId, brand.getBrandId())
-                .eq(SysDictRef::getDictType, DictTypeEnum.DICT_TYPE_MAIN_TYPE.getCode())
-                .list();
-        Map<String, List<SysDictRef>> CategoryRefmap = sysDictRefRecs.stream().collect(Collectors.groupingBy(SysDictRef::getDictCode));
-
-        log.info("开始生成需要上传的安装工单数据: \uF0B7{}",sdf.format(new Date()));
-
-        // 数据准备类型定义表中提取所有数据
-        List<OutJiasmToGreeUploadTaskType> ojtutts = outJiasmToGreeUploadTaskTypeService.lambdaQuery()
-                .orderByAsc(OutJiasmToGreeUploadTaskType::getId).list();
-        try{
-            for (OutJiasmToGreeUploadTaskType item:ojtutts){
-                // 任务类型
-                int uploadTaskType = item.getUploadTaskType();
+        installProduceDataUploadService.processProduce();
 
-                // 数据上传任务表提取对应的任务类型数据
-                List<OutJiasmToGreeUploadTaskList> ojtutls = outJiasmToGreeUploadTaskListService.lambdaQuery()
-                        .eq(OutJiasmToGreeUploadTaskList::getSynStatus,0)
-                        .eq(OutJiasmToGreeUploadTaskList::getUploadTaskType,uploadTaskType)
-                        .orderByAsc(OutJiasmToGreeUploadTaskList::getSynReqId).list();
-                for (OutJiasmToGreeUploadTaskList ojtutl:ojtutls){
-                    try{
-                        // 安装工单数据生成
-                        // 同步任务表中的主键,安装工单号,源表主键
-                        // TL_PrePareSynDataby_fa_order_install_test
-                        // 安装工单 基础表数据同步
-                        if (ojtutl.getTableName().equals("order_base") &&
-                                ojtutl.getOrderType().equals(OrderTypeEnum.ORDER_TYPE_INSTALL.getCode())){
-                            // 22 - TL_PrePareSynDataby_fa_order_install_test
-                            // 221 - TL_PrePareSynDataby_az_assign_cj
-                            // 222 - TL_PrePareSynDataby_az_assign_wg
 
-                            if (uploadTaskType==22){
-                                if (!installProduceDataUpload.orderBaseInstall(brand, ojtutl, CategoryRefmap)) {
-                                    continue;
-                                }
-                            } else if (uploadTaskType==221){
-                                cjOrWg="cj";
-                                if (!orderBaseInstallCjOrWgService.orderBaseInstallCjOrWg(cjOrWg, brand, ojtutl, CategoryRefmap)) {
-                                    continue;
-                                }
-                            } else if (uploadTaskType==222){
-                                cjOrWg="wg";
-                                if (!orderBaseInstallCjOrWgService.orderBaseInstallCjOrWg(cjOrWg, brand, ojtutl, CategoryRefmap)) {
-                                    continue;
-                                }
-                            }
-                        }
-                        // 安装工单操作明细 TL_PrePareSynDataby_fa_order_install_operating_log
-                        if (ojtutl.getTableName().equals("order_install_operating_log") &&
-                                ojtutl.getOrderType().equals(OrderTypeEnum.ORDER_TYPE_INSTALL.getCode())){
-                            installProduceDataUpload.getFkmx(brand, ojtutl);
-                        }
-                        // 安装工单用户改约明细 与操作明细最好放在一起,因表设计分开,所以独立开来处理
-                        if (ojtutl.getTableName().equals("order_re_appointment") &&
-                                ojtutl.getOrderType().equals(OrderTypeEnum.ORDER_TYPE_INSTALL.getCode())){
-                            installProduceDataUpload.getAppointment(ojtutl);
-                        }
-                        // 生成安装工单明细数据 TL_PrePareSynDataby_fa_order_install_product
-                        if (ojtutl.getTableName().equals("order_product") &&
-                                ojtutl.getOrderType().equals(OrderTypeEnum.ORDER_TYPE_INSTALL.getCode())){
-                            installProduceDataUpload.generateAzMx(brand, ojtutl);
-                        }
-                        // 生成安装工单子信息数据 TL_PrePareSynDataby_fa_order_install_information
-                        if (ojtutl.getTableName().equals("order_information") &&
-                                ojtutl.getOrderType().equals(OrderTypeEnum.ORDER_TYPE_INSTALL.getCode())){
-                            installProduceDataUpload.generateInformation(ojtutl);
-                        }
-                    } catch (Exception ex) {
-                        ex.printStackTrace();
-                        log.info("out_jiasm_to_gree_upload_task_list syn_req_id={} table={} order_base_id={} id={}",
-                                ojtutl.getSynReqId(),ojtutl.getTableName(),ojtutl.getOrderNo(),ojtutl.getId());
-                        publicService.updateUploadTaskLisError(ojtutl,ex.getMessage());
-                        log.info("开始预处理生成需要上传的安装工单数据出错");
-                    }
-
-                }
-            }
-
-            log.info("生成需要上传的安装工单数据结束: \uF0B7{}",sdf.format(new Date()));
-
-        } catch (Exception ex) {
-            ex.printStackTrace();
-            log.info("开始预处理生成需要上传的安装工单数据出错");
-        }
     }
 
-    @Transactional(rollbackFor = Exception.class)
-    public void generateInformation(OutJiasmToGreeUploadTaskList ojtutl) {
-        WebsitFWS websitFWS = new WebsitFWS();
-
-        // 提取对应的子信息
-        OrderInformation oi = orderInformationService.lambdaQuery()
-                .eq(OrderInformation::getId, ojtutl.getId()).one();
-        if (oi!=null){
-            // 更新 pgguid,pgid 因该表无这两个字段,从工单主表中取即可
-            // 修改内部序
-            upOutId(ojtutl);
-
-            // 生成待同步表数据
-            OrderPar orderPar = new OrderPar();
-            orderPar.setId(ojtutl.getId());
-            ItfTblAzAssignXzydUpload rec = orderInformationNewMapper.getOrderInformation(orderPar);
-            OrderBase orderBase = orderBaseService.lambdaQuery()
-                    .eq(OrderBase::getId,rec.getWorkerOrderNo()).one();
-            rec.setPgguid(orderBase.getPgguid());
-            rec.setPgid(orderBase.getPgid());
-
-            websitFWS = publicService.shshwdToptshwd(rec.getWdno(),orderBase);
-            if (StringUtils.isEmpty(websitFWS.getWebsitId())){
-                websitFWS = publicService.shxswdToptxswd(rec.getWdno(),orderBase);
-            }
-
-            rec.setWdno(websitFWS.getWebsitId());
-            itfTblAzAssignXzydUploadService.save(rec);
-        }
-        // 修改数据上传任务表中的状态 单号,id,同步状态,类型
-        publicService.updateUploadTaskListStatus(ojtutl.getOrderNo(), ojtutl.getSynReqId(),1, ojtutl.getUploadTaskType());
-    }
-
-    private void upOutId(OutJiasmToGreeUploadTaskList ojtutl) {
-        List<OrderInformation> upList = new ArrayList<>();
-        List<OrderInformation> detaillist = orderInformationService.lambdaQuery()
-                .eq(OrderInformation::getOrderBaseId, ojtutl.getOrderNo())
-                .orderByAsc(OrderInformation::getCreateTime).list();
-        // 找出为空的序
-        if (detaillist!=null && detaillist.size()>0){
-            for (OrderInformation ite:detaillist){
-                if (StringUtils.isEmpty(ite.getOutId())){
-                    OrderInformation n = new OrderInformation();
-                    n.setId(ite.getId());
-                    n.setOutId(UUID.randomUUID().toString());
-                    upList.add(n);
-                }
-            }
-            // 修改序
-            if (upList.size()>0){
-                orderInformationService.updateBatchById(upList);
-                upList.clear();
-            }
-            detaillist.clear();
-        }
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public void generateAzMx(Brand brand, OutJiasmToGreeUploadTaskList ojtutl) {
-        OrderBase orderBase = orderBaseService.lambdaQuery()
-                .eq(OrderBase::getId, ojtutl.getOrderNo()).one();
-        // 提取工单机型数据
-        OrderProduct op = orderProductService.lambdaQuery()
-                .eq(OrderProduct::getId, ojtutl.getId()).one();
-        if (op==null){
-            throw new RemoteServiceException("order_product找不到记录id="+ojtutl.getId());
-        }
-        if (StringUtils.isEmpty(op.getPgguid())){
-            // 更新pgguid
-            upPgid(ojtutl, orderBase);
-            op.setPgguid(orderBase.getPgguid());
-        }
-        // 更新pgmxid
-        upPgmix(ojtutl, op);
-        // 生成数据
-        generateMx(brand, ojtutl, op,orderBase);
-        // 修改数据上传任务表中的状态 单号,id,同步状态,类型
-        publicService.updateUploadTaskListStatus(ojtutl.getOrderNo(), ojtutl.getSynReqId(),1, ojtutl.getUploadTaskType());
-    }
-
-    private void upPgmix(OutJiasmToGreeUploadTaskList ojtutl, OrderProduct op) {
-        OrderPar orderPar = new OrderPar();
-        orderPar.setOrderNo(ojtutl.getOrderNo());
-        orderPar.setPgid(UUID.randomUUID().toString());
-        orderPar.setId(op.getId());
-        getOrderProductMapper.upPgmxid(orderPar);
-        op.setPgmxid(orderPar.getPgid());
-    }
-
-    private void generateMx(Brand brand, OutJiasmToGreeUploadTaskList ojtutl, OrderProduct op,OrderBase orderBase) {
-        OrderPar orderPar = new OrderPar();
-        WebsitSH websitSH = new WebsitSH();
-
-        orderPar.setId(op.getId());
-        orderPar.setBrandId(brand.getBrandId());
-        orderPar.setId(op.getId());
-        orderPar.setOrderNo(ojtutl.getOrderNo());
-        ItfTblAzAssignMxUpload mx = getOrderProductMapper.getItfTblAzAssignMxUpload(orderPar);
-        if (mx.getDanw().length()>6){
-            mx.setDanw(mx.getDanw().substring(0,6));
-        }
-        // 服务单位处理 售后网点处理
-        websitSH = publicService.ptshwdToshshwd(orderBase.getReceWebsitId(), orderBase.getMainId());
-        mx.setCzwd(websitSH.getWdId());
-
-
-        mx.setWorkerOrderNo(op.getOrderBaseId());
-        itfTblAzAssignMxUploadService.save(mx);
-    }
-
-    private void upPgid(OutJiasmToGreeUploadTaskList ojtutl, OrderBase orderBase) {
-        // 更新pgguid
-        OrderPar orderPar = new OrderPar();
-        orderPar.setPgid(orderBase.getPgguid());
-        orderPar.setOrderNo(ojtutl.getOrderNo());
-        getOrderProductMapper.upPgguid(orderPar);
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public  void getAppointment(OutJiasmToGreeUploadTaskList ojtutl) {
-        OrderBase orderBase = orderBaseService.lambdaQuery()
-                .eq(OrderBase::getId, ojtutl.getOrderNo()).one();
-        if (orderBase !=null ){
-            ReAppointment request = new ReAppointment();
-            request.setOrderNo(ojtutl.getOrderNo());
-            request.setId(ojtutl.getId());
-            ItfTblAzAssignAppointmentUpload add = reAppointmentOrderMapper.getReAppointment(request);
-            // 开始时间与结束时间 先取最大改约审核成功的,如无再取最大预约的
-            /*List<OrderReAppointment> recs = orderReAppointmentService.lambdaQuery()
-                    .eq(OrderReAppointment::getOrderBaseId,ojtutl.getOrderNo())
-                    .eq(OrderReAppointment::getFlag,0)
-                    .eq(OrderReAppointment::getExamineStatus,"OK")
-                    .orderByDesc(OrderReAppointment::getId).list();
-            if(CollectionUtils.isNotEmpty(recs)){
-                add.setKssj(recs.get(0).getNewAppointmentTime());
-                add.setJssj(recs.get(0).getNewAppointmentEndTime());
-            } else {
-                List<OrderReAppointment> rs = orderReAppointmentService.lambdaQuery()
-                        .eq(OrderReAppointment::getOrderBaseId,ojtutl.getOrderNo())
-                        .eq(OrderReAppointment::getFlag,1)
-                        .orderByDesc(OrderReAppointment::getId).list();
-                add.setKssj(recs.get(0).getOldAppointmentTime());
-                add.setJssj(recs.get(0).getOldAppointmentEndTime());
-            }*/
-
-            itfTblAzAssignAppointmentUploadService.save(add);
-        }
-
-        // 修改数据上传任务表中的状态 单号,id,同步状态,类型
-        publicService.updateUploadTaskListStatus(ojtutl.getOrderNo(), ojtutl.getSynReqId(),1, ojtutl.getUploadTaskType());
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public void getFkmx(Brand brand, OutJiasmToGreeUploadTaskList ojtutl) {
-        OrderBase orderBase = orderBaseService.lambdaQuery()
-                .eq(OrderBase::getId, ojtutl.getOrderNo()).one();
-        if (orderBase !=null ){
-            // 修改fikd
-            OperatingLog request = new OperatingLog();
-            request.setFkid(UUID.randomUUID().toString());
-            request.setId(ojtutl.getId());
-            operatingLogOrderInstallMapper.upLogfkid(request);
-
-            // 修改pgguid
-            OperatingLog up = new OperatingLog();
-            up.setOrderNo(ojtutl.getOrderNo());
-            up.setPgguid(orderBase.getPgguid());
-            operatingLogOrderInstallMapper.upLogpgguid(up);
-
-            OperatingLog que = new OperatingLog();
-            que.setOrderNo(ojtutl.getOrderNo());
-            que.setId(ojtutl.getId());
-            ItfTblAzAssignFkmxUpload add = operatingLogOrderInstallMapper.getOperatingLog(que);
-            add.setUploadTaskSynReqId(ojtutl.getSynReqId());
-
-            // 反馈人取了网点编号需单独处理 fkren   网点编号+01
-            // 反馈网点编号 做同样处理
-            WebsitPP resultData = getPPWebsitInfo(add.getFkren(), orderBase);
-            add.setFkren(resultData.getWdno()+"01");
-            add.setXtwdbh(resultData.getXtwdno());
-            add.setWdno(resultData.getWdno());
-            add.setWdmc(resultData.getWdmc());
-            itfTblAzAssignFkmxUploadService.save(add);
-        }
-
-        // 修改数据上传任务表中的状态 单号,id,同步状态,类型
-        publicService.updateUploadTaskListStatus(ojtutl.getOrderNo(), ojtutl.getSynReqId(),1, ojtutl.getUploadTaskType());
-    }
-
-
-    private WebsitPP getPPWebsitInfo(String websitId, OrderBase orderBase){
-        WebsitPP resultData = new WebsitPP();
-        WebsitSH websitSH = new WebsitSH();
-
-        resultData.setXtwdno("");
-        resultData.setWdno("");
-        resultData.setWdmc("");
-
-        // 售后网点处理
-        websitSH = publicService.ptshwdToshshwd(websitId, orderBase.getMainId());
-        if (StringUtils.isEmpty(websitSH.getWdId())){
-            websitSH = publicService.ptxswdToshxswd(websitId, orderBase.getMainId());
-        }
-
-        resultData.setWdno(websitSH.getWdId());
-        resultData.setWdmc(websitSH.getWdmc());
-        resultData.setXtwdno(websitSH.getBrandSysWebsitNumber());
-
-        return resultData;
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public boolean orderBaseInstall(Brand brand, OutJiasmToGreeUploadTaskList ojtutl, Map<String, List<SysDictRef>> CategoryRefmap) {
-        OrderBase orderBase = orderBaseService.lambdaQuery()
-                .eq(OrderBase::getId, ojtutl.getId()).one();
-
-        if (orderBase !=null ){
-            // 若工单被删除不再同步 不写生成数据
-
-            // 条件判断
-            if (!checkPare(ojtutl, orderBase)) {
-                return Boolean.FALSE;
-            }
-
-            // 安装工单产品信息,操作日志,完工明细,完工明细附件 以主表的pgguid统一修改
-            // 生成待同步的工单主表数据
-            ItfTblAzAssignLcLsUpload lcls = getItfTblAzAssignLcLsUpload(brand, ojtutl, orderBase);
-            // 1: 插入工单主表数据
-            if (!itfTblAzAssignLcLsUploadService.save(lcls)){
-                return Boolean.FALSE;
-            }
-
-            // 2 :生成安装辅材费用数据
-            if (!getFeeUpload(orderBase)){
-                return Boolean.FALSE;
-            }
-
-            //3 :生成采集数据 采集明细,采集附件,采集条码(及家用,商用、其他)
-            if (!generateCJData(brand, CategoryRefmap, orderBase, lcls)){
-                return Boolean.FALSE;
-            }
-
-            // 生成评价短信 只写一次
-            if (!getPJmessage(orderBase, lcls, brand)){
-                return Boolean.FALSE;
-            }
-        }
-
-        // 修改数据上传任务表中的状态   这里固定值 22
-        publicService.updateUploadTaskListStatus(ojtutl.getOrderNo(),ojtutl.getSynReqId(),1,22);
-
-        return Boolean.TRUE;
-    }
-
-    private Boolean getFeeUpload(OrderBase orderBase) {
-        // 根据辅材订单支付表存在支付时生成安装费用数据
-        List<OrderPayOutlayItem> pitems = orderPayOutlayItemService.lambdaQuery()
-                .eq(OrderPayOutlayItem::getOrderBaseId, orderBase.getId()).list();
-        if (pitems!=null && pitems.size()>0){
-            BigDecimal totalAmount=BigDecimal.ZERO;
-            for (OrderPayOutlayItem ps :pitems){
-                totalAmount = totalAmount.add(ps.getTotalAmount());
-            }
-
-            ItfTblAzAssignFeeUpload feeUpload = new ItfTblAzAssignFeeUpload();
-            // 从工单扩展表提取辅材信息
-            OrderInstall orderInstall =orderInstallService.lambdaQuery()
-                    .eq(OrderInstall::getOrderBaseId, orderBase.getId()).one();
-            if (orderInstall !=null){
-                feeUpload.setWorkerOrderNo(orderBase.getId());
-                feeUpload.setId(orderBase.getPgguid());
-                feeUpload.setCreatedBy("guangfo");
-                feeUpload.setCreatedDate(orderInstall.getCreateTime());
-                feeUpload.setLastModifiedBy("guangfo");
-                feeUpload.setLastModifiedDate(orderInstall.getUpdateTime());
-                feeUpload.setOtherfee(String.valueOf(totalAmount));
-                feeUpload.setTotalfee(String.valueOf(totalAmount));
-                feeUpload.setAjia(orderInstall.getBracket());
-                feeUpload.setJcguan(orderInstall.getPipe());
-                feeUpload.setKqkg(orderInstall.getSwithFlag());
-                feeUpload.setGkzy(orderInstall.getHighAltitude());
-                feeUpload.setYccxqk(orderInstall.getHole());
-                feeUpload.setFlbz(orderBase.getId());
-            } else {
-                feeUpload.setWorkerOrderNo(orderBase.getId());
-                feeUpload.setId(orderBase.getPgguid());
-                feeUpload.setCreatedBy("guangfo");
-                feeUpload.setCreatedDate(orderBase.getCreateTime());
-                feeUpload.setLastModifiedBy("guangfo");
-                feeUpload.setLastModifiedDate(orderBase.getUpdateTime());
-                feeUpload.setOtherfee(String.valueOf(totalAmount));
-                feeUpload.setTotalfee(String.valueOf(totalAmount));
-                feeUpload.setFlbz(orderBase.getId());
-            }
-            return itfTblAzAssignFeeUploadService.save(feeUpload);
-        }
-
-        return Boolean.TRUE;
-    }
-
-    private Boolean getPJmessage(OrderBase orderBase, ItfTblAzAssignLcLsUpload lcls,Brand brand) {
-        WebsitSH websitSH = new WebsitSH();
-
-        // 生成评价短信 不能写在产品中要写在表头,只写一次 派工状态为4(1304,1309与工单状态相同) 完工或已关闭的单
-        if ((orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G7.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G10.getCode())) &&
-                (orderBase.getDispatchStatus().equals(GDAppointStatusEnum.INSTALL_STATUS_A4_0.getCode()) ||
-                        orderBase.getDispatchStatus().equals(GDAppointStatusEnum.INSTALL_STATUS_A4_1.getCode()))) {
-            // 查看是否已发送 工单号,只能插入一次
-            ItfMessagehuifangentity message = itfMessagehuifangentityService.lambdaQuery()
-                    .eq(ItfMessagehuifangentity::getOrderBaseId, orderBase.getId()).one();
-
-            // 自建工单 这里可放在定时任务中执行,代码是不会走这里的
-            if (!orderBase.getUploadFlag()){
-                if (message == null){
-                    // 生成短信数据
-                    OrderPar orderPar = new OrderPar();
-                    orderPar.setBrandId(brand.getBrandId());
-                    orderPar.setOrderNo(orderBase.getId());
-                    ItfMessagehuifangentity addms = gdOrderBaseMapper.getAZItfMessagehuifangentity(orderPar);
-                    if (addms==null){
-                        return Boolean.TRUE;
-                    }
-                    // 售后网点处理 fjwd
-                    websitSH = publicService.ptshwdToshshwd(addms.getFjwd(), orderBase.getMainId());
-                    addms.setFjwd(websitSH.getWdId());
-
-                    String id = UUID.randomUUID().toString();
-                    if (id.length()>32){
-                        addms.setSynTaskNo(id.substring(0,32));
-                    } else {
-                        addms.setSynTaskNo(id);
-                    }
-                    addms.setFsma(publicService.getfsma(addms.getSjid()));
-                    addms.setFsnr("尊敬的用户:请对本次服务评价:满意回复1;一般回复2;不满意回复3。并注明原因!关注官微“格力售后服务”,为您提供更优质服务!");
-                    addms.setDxguid(UUID.randomUUID().toString());
-                    return publicService.addItfMessagehuifangentity(addms,orderBase.getOrderType(),6);
-                }
-            } else if ((orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G7.getCode()) ||
-                    orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G10.getCode())) &&
-                    !orderBase.getSaleType().equals("工程机"))  {
-                if (message == null){
-                    // 生成短信数据 sendtype (1=原总部接口发送,2=用联通的接口进行发送) 默认为1
-                    OrderPar orderPar = new OrderPar();
-                    orderPar.setBrandId(brand.getBrandId());
-                    orderPar.setOrderNo(orderBase.getId());
-                    ItfMessagehuifangentity addms = gdOrderBaseMapper.getAZItfMessagehuifangentityT(orderPar);
-                    if (addms==null){
-                        return Boolean.TRUE;
-                    }
-                    String id = UUID.randomUUID().toString();
-                    if (id.length()>32){
-                        addms.setSynTaskNo(id.substring(0,32));
-                    } else {
-                        addms.setSynTaskNo(id);
-                    }
-                    addms.setFsnr("尊敬的用户:请对本次服务评价:满意回复1;一般回复2;不满意回复3。并注明原因!关注官微“格力售后服务”,为您提供更优质服务!");
-                    addms.setFsma(publicService.getfsma(addms.getSjid()));
-                    return publicService.addItfMessagehuifangentity(addms,orderBase.getOrderType(),6);
-                }
-            }
-        }
-        return Boolean.TRUE;
-    }
-
-
-    private Boolean generateCJData(Brand brand, Map<String, List<SysDictRef>> CategoryRefmap, OrderBase orderBase, ItfTblAzAssignLcLsUpload lcls) {
-        // 工单状态order_status 6, 7, 9, 10 且为非预派工订单
-        if ((orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G6.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G7.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G9.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G10.getCode())) &&
-                orderBase.getIsReservation().equals(0)){
-            // 提取采集的数据
-            List<OrderInstallDetail> orderInstallDetails = orderInstallDetailService.lambdaQuery()
-                    .eq(OrderInstallDetail::getOrderBaseId, orderBase.getId())
-                    .orderByAsc(OrderInstallDetail::getId)
-                    .list();
-            Map<String, Integer> val = new HashMap<String,Integer>();
-            // 根据产品类别名称 生成不同的完工明细数据
-            String mainName = CategoryRefmap.get(orderBase.getMainId()).get(0).getRefDictName();
-
-            if (orderInstallDetails !=null && orderInstallDetails.size()>0){
-                for (OrderInstallDetail detail :orderInstallDetails){
-                    // 状态:3=临时保存;2=作废,1=已采集,0=未采集
-                    // 临时保存与未采集的记录不处理
-                    if (detail.getStatus().equals(0) || detail.getStatus().equals(3)){
-                        continue;
-                    }
-
-                    // 获取完工采集明细数据 (家用空调、商用空调、其他)
-                    getCJMXData(brand, CategoryRefmap, orderBase, lcls, detail,mainName);
-
-                    // 获取采集附件数据 (家用、商用、其他)
-                    getcjfjdata(orderBase, detail, mainName);
-
-                    // 生成条码明细数据
-                    getDetailCode(orderBase, detail, mainName);
-                }
-            }
-        }
-
-        return Boolean.TRUE;
-    }
-
-    private void getDetailCode(OrderBase orderBase, OrderInstallDetail detail, String mainName) {
-        String oldFile ="";
-        String newFile ="";
-
-        // 获取条码采集明细id
-        InstalDetailCode instalDetailCode = new InstalDetailCode();
-        instalDetailCode.setOrderNo(detail.getOrderBaseId());
-        instalDetailCode.setId(detail.getId());
-        List<OrderInstallDetailCode> codes = codeOrderInstallDetailMapper.getId(instalDetailCode);
-        // 处理条码明细
-        for (OrderInstallDetailCode code :codes){
-            if (StringUtils.isEmpty(code.getPath())){
-                continue;
-            }
-            if (StringUtils.isEmpty(code.getGreeImageId())){
-                // 上传图片
-                if (!uploadImage(orderBase, code)) {
-                    continue;
-                }
-            }
-
-            if (StringUtils.isEmpty(code.getTmguid())){
-                OrderInstallDetailCode upCode = new OrderInstallDetailCode();
-                upCode.setId(code.getId());
-                upCode.setTmguid(UUID.randomUUID().toString());
-                orderInstallDetailCodeService.updateById(upCode);
-            }
-            // 采集明细表中取pgwcmxid
-            OrderInstallDetail orderInstallDetail = orderInstallDetailService.lambdaQuery()
-                    .eq(OrderInstallDetail::getOrderBaseId,code.getOrderBaseId())
-                    .eq(OrderInstallDetail::getId,code.getOrderDetailId()).one();
-            if (orderInstallDetail == null || StringUtils.isEmpty(orderInstallDetail.getPgwcmxid())){
-                continue;
-            } else {
-                OrderInstallDetailCode upCode = new OrderInstallDetailCode();
-                upCode.setId(code.getId());
-                upCode.setPgwcmxid(orderInstallDetail.getPgwcmxid());
-                orderInstallDetailCodeService.updateById(upCode);
-            }
-
-            // 生成采集条码表数据
-            generateDetailCode(orderBase, code, mainName);
-        }
-    }
-
-    private boolean uploadImage(OrderBase orderBase, OrderInstallDetailCode code) {
-        String oldFile;
-        String newFile;
-        oldFile = IdWorker.getIdStr() + ".jpeg";
-
-        baseService.saveToFile(ossUtil.getUrlWw(code.getPath()),oldFile);
-        // 获取文件
-        newFile = oldFile;
-        WebsitFWS websitFWS = publicService.shshwdToptshwd(orderBase.getWebsitId(),orderBase);
-
-        Boolean flag = uploadBarCodeexc(newFile, oldFile,websitFWS.getWebsitId(), code);
-        new File(newFile).delete();
-        if (!flag) {
-            return Boolean.FALSE;
-        }
-        return Boolean.TRUE;
-    }
-
-    private void generateDetailCode(OrderBase orderBase, OrderInstallDetailCode code, String mainName) {
-        // 采集条码表中的pgguid 统一改成工单基础表的pgguid
-        InstalDetailCode upcode = new InstalDetailCode();
-        upcode.setOrderNo(code.getOrderBaseId());
-        upcode.setPgguId(orderBase.getPgguid());
-        codeOrderInstallDetailMapper.updateCodePgguid(upcode);
-
-        InstalDetailCode codep = new InstalDetailCode();
-        codep.setOrderNo(code.getOrderBaseId());
-        codep.setId(code.getId());
-
-        if (mainName.equals("家用空调") ||
-                mainName.equals("家用空气能热水器") ||
-                mainName.equals("驻车空调")) {
-            // 家用空调 完工明细 数据生成(完工采集条码数据)
-            ItfTblAzWgmxJyktTmmxUpload jy = codeOrderInstallDetailMapper.getJyCode(codep);
-            if (jy != null){
-                itfTblAzWgmxJyktTmmxUploadService.save(jy);
-            }
-        } else if (mainName.equals("商用空调")){
-            // 家用空调 完工明细 数据生成(完工采集条码数据)
-            ItfTblAzWgmxSyktTmmxLsUpload sy = codeOrderInstallDetailMapper.getSyCode(codep);
-            if (sy != null){
-                itfTblAzWgmxSyktTmmxLsUploadService.save(sy);
-            }
-        } else {
-            ItfTblAzWgmxQitaTmmxUpload other = codeOrderInstallDetailMapper.getOtherCode(codep);
-            if (other != null){
-                itfTblAzWgmxQitaTmmxUploadService.save(other);
-            }
-        }
-    }
-
-    @Nullable
-    private void getCJMXData(Brand brand, Map<String, List<SysDictRef>> CategoryRefmap, OrderBase orderBase,
-                               ItfTblAzAssignLcLsUpload lcls, OrderInstallDetail detail,String mainName) {
-        // 修改采集明细的序 pgwcmxid 生成格力总部-采集明细序号
-        if (StringUtils.isEmpty(detail.getPgwcmxid())){
-            upCerrentRec(detail);
-        }
-        // 采集表中的pgguid 统一改成工单基础表的pgguid
-        upInstallDetailPgguid(orderBase);
-
-        // 采集表与采集条码表ID超范围 - 采集表及采集明细表中的outid统一修改
-        upOutId(detail);
-
-
-        // 采集标志 1100:保存,1110:作废,1120:转结算
-        Integer cjstat = 1100;
-
-        if (orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G7.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G10.getCode())){
-            cjstat = 1120;
-        }
-        if (detail.getStatus().equals(2)){
-            cjstat = 1110;
-        }
-
-        InstallDetail request = new InstallDetail();
-        request.setOrderNo(detail.getOrderBaseId());
-        request.setId(detail.getId());
-        request.setBrandId(brand.getBrandId());
-        // 为空时为 家用空调
-        if (StringUtils.isEmpty(mainName) ||
-                mainName.equals("家用空调") || mainName.equals("家用空气能热水器") || mainName.equals("驻车空调")){
-            // 家用空调 完工明细 数据生成(完工采集数据)
-            ItfTblAzWgmxJyktUpload mxup = detailOrderInstallMapper.getOrderInstallUpload(request);
-            if (mxup != null){
-                // 部分参数单独处理
-                setParm(brand, orderBase, lcls, cjstat, mxup, detail);
-                itfTblAzWgmxJyktUploadService.save(mxup);
-            }
-        } else if (mainName.equals("商用空调")){
-            // 商用空调 完工明细数据生成(完工采集数据)
-            ItfTblAzWgmxSyktUpload mxup = detailOrderInstallMapper.getSyOrderInstallUpload(request);
-            if (mxup != null){
-                // 部分参数单独处理
-                setSyParm(orderBase, lcls, cjstat, mxup, detail, brand);
-                itfTblAzWgmxSyktUploadService.save(mxup);
-            }
-        } else {
-            // 其他 完工明细数据生成
-            // 获取家用空调完工明细(完工采集数据)
-            ItfTblAzWgmxQitaUpload mxup = detailOrderInstallMapper.getOtherOrderInstallUpload(request);
-            if (mxup != null){
-                // 部分参数单独处理
-                setOtherParm(orderBase, lcls, cjstat, mxup, detail, brand);
-                itfTblAzWgmxQitaUploadService.save(mxup);
-            }
-        }
-    }
-
-    private void upOutId(OrderInstallDetail detail) {
-        List<OrderInstallDetail> upList = new ArrayList<>();
-        List<OrderInstallDetail> detaillist = orderInstallDetailService.lambdaQuery()
-                .eq(OrderInstallDetail::getOrderBaseId, detail.getOrderBaseId())
-                .orderByAsc(OrderInstallDetail::getCreateTime).list();
-        // 找出最大的序 默认值为0
-        int outId=0;
-        if (detaillist!=null && detaillist.size()>0){
-            for (OrderInstallDetail item:detaillist){
-                if (outId<item.getOutId()){
-                    outId = item.getOutId();
-                }
-            }
-            for (OrderInstallDetail ite:detaillist){
-                if (ite.getOutId() == 0){
-                    outId++;
-                    OrderInstallDetail n = new OrderInstallDetail();
-                    n.setId(ite.getId());
-                    n.setOutId(outId);
-                    upList.add(n);
-                }
-            }
-            // 修改序
-            if (upList.size()>0){
-                orderInstallDetailService.updateBatchById(upList);
-                upList.clear();
-            }
-
-            detaillist.clear();
-        }
-
-        // 采集条码码 outid统一修改
-        // 采集表与采集条码表ID超范围 - 采集表及采集明细表中的outid统一修改
-        List<OrderInstallDetailCode> codelist = orderInstallDetailCodeService.lambdaQuery()
-                .eq(OrderInstallDetailCode::getOrderBaseId, detail.getOrderBaseId())
-                .eq(OrderInstallDetailCode::getOutId,0).list();
-        if (codelist!=null && codelist.size()>0){
-            InstalDetailCode codep = new InstalDetailCode();
-            codep.setOrderNo(detail.getOrderBaseId());
-            codeOrderInstallDetailMapper.updateCodeOutId(codep);
-        }
-    }
-
-    // 处理附件采集数据上传
-    public Boolean getcjfjdata(OrderBase orderBase, OrderInstallDetail detail, String mainName) {
-        String oldFile ="";
-        String newFile ="";
-
-        // 附件上传总部标识判断
-        if (orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G7.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G10.getCode())){
-            // 安装工单采集附件表提取数据
-            InstallCJDetailFile installCJDetailFile = new InstallCJDetailFile();
-            installCJDetailFile.setOrderNo(detail.getOrderBaseId());
-            installCJDetailFile.setId(detail.getId());
-            List<OrderDetailFile> detailFiles = fileOrderDetailMapper.getId(installCJDetailFile);
-            for (OrderDetailFile file:detailFiles){
-                // 工单号, file的id即附件表的id,uuid统一值
-                // path未准备上传被忽略
-                if (StringUtils.isEmpty(file.getFilePath())){
-                    continue;
-                }
-                // 品牌方fileindex未获取上传被忽略
-                if (StringUtils.isEmpty(file.getBrandFilePath())){
-                    // 上传图片
-                    oldFile = IdWorker.getIdStr() + ".jpeg";
-                    baseService.saveToFile(ossUtil.getUrlWw(file.getFilePath()),oldFile);
-                    // 获取文件
-                    newFile = oldFile;
-                    WebsitFWS websitFWS = publicService.shshwdToptshwd(orderBase.getWebsitId(),orderBase);
-                    Boolean flag = uploadFileexc(newFile, oldFile,websitFWS.getWebsitId(), file);
-                    new File(newFile).delete();
-                    if (!flag) {
-                        continue;
-                    }
-                }
-                // 提取获取采集明细表数据中获取pgwcmxid(生成格力总部-采集明细序号)
-                OrderInstallDetail detailone = orderInstallDetailService.lambdaQuery()
-                        .eq(OrderInstallDetail::getOrderBaseId,file.getOrderBaseId())
-                        .eq(OrderInstallDetail::getId,file.getOrderDetailId()).one();
-
-                // 获取完工明细数据(采集附件表) 家用、商用、其他
-                getwgmxData(mainName, file, detailone);
-            }
-        }
-
-        return Boolean.TRUE;
-    }
-
-    private void getSaveFileInfo(String id1, ResultData resultData, Map<String, String> req) {
-        req.put("bizAppId","flydiy-auto-sit-default-front-greeshmerge");
-        req.put("bizTable","default");
-        req.put("bizType","default");
-        req.put("accessType","auth");
-        req.put("url", resultData.getExtData().getDir());
-        req.put("name", id1 +".jpeg");
-    }
-
-    private Boolean uploadFileexc(String newFile, String oldFile,String wdno,OrderDetailFile file) {
-        try{
-            // 1: 获取签名信息
-            GreeFileResponseHelper response =  greeLogic.ossGetSignt(wdno,"GET");
-            if (response.getStatusCode() == 200){
-                ResultData resultData = JSONObject.parseObject(response.getData().toString(), ResultData.class);
-                resultData.getExtData().setDir(resultData.getExtData().getDir()+"/"+oldFile);
-                // 2:文件上传
-                PostObjectSample ossPostObject = new PostObjectSample();
-                String result = ossPostObject.PostObject(newFile, resultData.getExtData());
-                // 3: 保存文件
-                if (org.apache.commons.lang3.StringUtils.isEmpty(result.trim())){
-                    Map<String,String>req = new HashMap<>();
-                    // 生成对象
-                    getSaveFileInfo(oldFile, resultData, req);
-                    GreeFileSaveHelper responses = greeLogic.greePostSaveFile(req);
-
-                    if (responses.getStatusCode() == 200){
-                        file.setBrandFilePath(responses.getData().getId());
-                        orderDetailFileService.updateById(file);
-                    } else {
-                        // 失败
-                        return Boolean.FALSE;
-                    }
-                } else {
-                    // 上传图片到OSS失败
-                    return Boolean.FALSE;
-                }
-            } else {
-                //  获取签名信息失败
-                return Boolean.FALSE;
-            }
-            return Boolean.TRUE;
-        } catch (Exception ex) {
-            return Boolean.FALSE;
-        }
-    }
-
-    private Boolean uploadBarCodeexc(String newFile, String oldFile,String wdno,OrderInstallDetailCode code) {
-        try{
-            // 1: 获取签名信息
-            GreeFileResponseHelper response =  greeLogic.ossGetSignt(wdno,"GET");
-            if (response.getStatusCode() == 200){
-                ResultData resultData = JSONObject.parseObject(response.getData().toString(), ResultData.class);
-                resultData.getExtData().setDir(resultData.getExtData().getDir()+"/"+oldFile);
-                // 2:文件上传
-                PostObjectSample ossPostObject = new PostObjectSample();
-                String result = ossPostObject.PostObject(newFile, resultData.getExtData());
-                // 3: 保存文件
-                if (org.apache.commons.lang3.StringUtils.isEmpty(result.trim())){
-                    Map<String,String>req = new HashMap<>();
-                    // 生成对象
-                    getSaveFileInfo(oldFile, resultData, req);
-                    GreeFileSaveHelper responses = greeLogic.greePostSaveFile(req);
-
-                    if (responses.getStatusCode() == 200){
-                        code.setGreeImageId(responses.getData().getId());
-                        codeOrderInstallDetailMapper.updateById(code);
-                    } else {
-                        // 失败
-                        return Boolean.FALSE;
-                    }
-                } else {
-                    // 上传图片到OSS失败
-                    return Boolean.FALSE;
-                }
-            } else {
-                //  获取签名信息失败
-                return Boolean.FALSE;
-            }
-            return Boolean.TRUE;
-        } catch (Exception ex) {
-            return Boolean.FALSE;
-        }
-    }
-
-    public void getwgmxData(String mainName, OrderDetailFile file, OrderInstallDetail detailone) {
-        // 修改附件的pgwcmxid
-        if (detailone != null){
-            OrderDetailFile upf = new OrderDetailFile();
-            upf.setId(file.getId());
-            upf.setPgwcmxid(detailone.getPgwcmxid());
-            orderDetailFileService.updateById(upf);
-        }
-        // 采集附件表中的pgguid 统一改成工单基础表的pgguid 可以不用,从主表取即可 无pgguid字段
-        /*InstallCJDetailFile upfile = new InstallCJDetailFile();
-        upfile.setOrderNo(file.getOrderBaseId());
-        upfile.setPgguId(orderBase.getPgguid());
-        fileOrderDetailMapper.updateFilePgguid(upfile);*/
-
-
-        // 修改附件的fjguid
-        if (detailone != null && StringUtils.isEmpty(file.getFjguid())){
-            OrderDetailFile upf = new OrderDetailFile();
-            upf.setId(file.getId());
-            upf.setFjguid(UUID.randomUUID().toString());
-            orderDetailFileService.updateById(upf);
-        }
-
-        InstallCJDetailFile request = new InstallCJDetailFile();
-        request.setOrderNo(file.getOrderBaseId());
-        request.setId(file.getId());
-
-        // 生成家用空调 数据采集附件上传记录
-        if (mainName.equals("家用空调") ||
-                mainName.equals("家用空气能热水器") ||
-                mainName.equals("驻车空调")){
-            // 家用空调 完工明细 数据生成
-            ItfTblAzWgmxJyktFjUpload jyktfj = fileOrderDetailMapper.getFileUpload(request);
-            if (jyktfj !=null){
-                itfTblAzWgmxJyktFjUploadService.save(jyktfj);
-            }
-        } else if (mainName.equals("商用空调")){
-            // 商用空调 完工明细 数据生成
-            ItfTblAzWgmxSyktFjUpload syktfj = fileOrderDetailMapper.getSyFileUpload(request);
-            if (syktfj !=null){
-                itfTblAzWgmxSyktFjUploadService.save(syktfj);
-            }
-        } else {
-            // 其他 完工明细 数据生成
-            ItfTblAzWgmxQitaFjUpload otherfj = fileOrderDetailMapper.getOtherFileUpload(request);
-            if (otherfj != null){
-                itfTblAzWgmxQitaFjUploadService.save(otherfj);
-            }
-        }
-    }
-
-    private void upItfTblazwgmxqitafj(OrderDetailFile file, String taskno) {
-        InstallDetail req = new InstallDetail();
-        req.setOrderNo(file.getOrderBaseId());
-        req.setId(taskno);
-        itfTblazwgmxqitafjCJMapper.updateType(req);
-        itfTblazwgmxqitafjCJMapper.updateType1(req);
-        itfTblazwgmxqitafjCJMapper.updateType2(req);
-    }
-
-    private Boolean saveItfTblazwgmxqitafj(String taskno, ItfTblAzWgmxQitaFjUpload otherfj) {
-        ItfTblazwgmxqitafj fj = new ItfTblazwgmxqitafj();
-        MyBeanUtils.copyProperties(otherfj,fj);
-        fj.setSynTaskNo(taskno);
-        fj.setId(otherfj.getFjguid());
-        return itfTblazwgmxqitafjService.save(fj);
-    }
-
-    private Boolean getItfTblazwgmxsyktfj(String taskno, ItfTblAzWgmxSyktFjUpload syktfj) {
-        ItfTblazwgmxsyktfj fj = new ItfTblazwgmxsyktfj();
-        MyBeanUtils.copyProperties(syktfj,fj);
-        fj.setSynTaskNo(taskno);
-        fj.setId(syktfj.getFjguid());
-        fj.setRelationid(syktfj.getPgwcmxid());
-        return itfTblazwgmxsyktfjService.save(fj);
-    }
-
-    private Boolean processItfTblazwgmxjyktfj(String mainName, OrderDetailFile file, String taskno, ItfTblAzWgmxJyktFjUpload jyktfj) {
-        if (! getItfTblazwgmxjyktfj(taskno, jyktfj)){
-            return Boolean.FALSE;
-        }
-        // 空气能热水器转换图片类型
-        // 原内机其他4 ,改为 12,原上墙改为12,且fjindex=2 原外机其他改为13选填图片
-        if (mainName.equals("家用空气能热水器")){
-            // 修改
-            modifyItfTblazwgmxjyktfj(file, taskno);
-        }
-        return Boolean.TRUE;
-    }
-
-    private void modifyItfTblazwgmxjyktfj(OrderDetailFile file, String taskno) {
-        InstallDetail req = new InstallDetail();
-        req.setOrderNo(file.getOrderBaseId());
-        req.setId(taskno);
-        itfTblazwgmxjyktfjCJMapper.updateType(req);
-        itfTblazwgmxjyktfjCJMapper.updateType1(req);
-        itfTblazwgmxjyktfjCJMapper.updateType2(req);
-        itfTblazwgmxjyktfjCJMapper.updateType3(req);
-        itfTblazwgmxjyktfjCJMapper.updateType4(req);
-        itfTblazwgmxjyktfjCJMapper.updateType5(req);
-    }
-
-    private Boolean getItfTblazwgmxjyktfj(String taskno, ItfTblAzWgmxJyktFjUpload jyktfj) {
-        ItfTblazwgmxjyktfj fj = new ItfTblazwgmxjyktfj();
-        MyBeanUtils.copyProperties(jyktfj,fj);
-        fj.setSynTaskNo(taskno);
-        fj.setId(jyktfj.getFjguid());
-        return itfTblazwgmxjyktfjService.save(fj);
-    }
-
-    private void setParm(Brand brand, OrderBase orderBase, ItfTblAzAssignLcLsUpload lcls, Integer cjstat,
-                         ItfTblAzWgmxJyktUpload mxup, OrderInstallDetail detail) {
-        WebsitSH websitSH = new WebsitSH();
-
-        setJysWdno(orderBase, mxup);
-        mxup.setCjren(orderBase.getCreateBy());
-        mxup.setCjrmc(orderBase.getCreateName());
-        // 售后网点处理
-        websitSH = publicService.ptshwdToshshwd(mxup.getCzwd(), orderBase.getMainId());
-        mxup.setCzwd(websitSH.getWdId());
-
-        // 提取安装师傅的账号信息
-        mxup.setAzrenid(publicService.getBrandWorkerId(orderBase.getWorkerId(),websitSH.getWdId(),brand.getBrandId(),orderBase.getWebsitId()));
-
-        mxup.setStat(cjstat);
-        if (cjstat.equals("1120")){
-            if (orderBase.getOverTime()!=null){
-                mxup.setWcsj(orderBase.getOverTime());
-            } else {
-                mxup.setWcsj(mxup.getLastModifiedDate());
-            }
-        }
-        mxup.setAzwdno(lcls.getAzwdno());
-        mxup.setAzwdmc(lcls.getAzwdmc());
-        mxup.setAzwdxtbh(lcls.getAzwdxtbh());
-        if (StringUtils.isEmpty(mxup.getSjcjgps())){
-            if (orderBase.getAddress().length()>140){
-                mxup.setSjcjgps(orderBase.getAddress().substring(0,140));
-            } else {
-                mxup.setSjcjgps(orderBase.getAddress());
-            }
-        }
-        mxup.setGmsj(orderBase.getBuyTime());
-        mxup.setCjwdno(mxup.getAzwdno());
-        mxup.setZjczwd(mxup.getAzwdno());
-        if (StringUtils.isNotEmpty(orderBase.getLat()) && orderBase.getLat().length()>12){
-            mxup.setSjcjjd(orderBase.getLat().substring(0,12));
-        }
-        if (StringUtils.isNotEmpty(orderBase.getLng()) && orderBase.getLng().length()>12){
-            mxup.setSjcjwd(orderBase.getLng().substring(0,12));
-        }
-        mxup.setSjcjjwdu(mxup.getSjcjjd()+","+ mxup.getSjcjwd());
-
-        // 网点维修工ID单独处理
-        // 先找出网点编号对应的品牌商网点编号
-        // 先从售后网点查
-        websitSH = publicService.ptshwdToshshwd(detail.getWebsitId(), orderBase.getMainId());
-        if (StringUtils.isEmpty(websitSH.getWdId())){
-            websitSH = publicService.ptxswdToshxswd(detail.getWebsitId(), orderBase.getMainId());
-        }
-
-        ItfTblWangdianWxgDownload wxg = itfTblWangdianWxgDownloadService.lambdaQuery()
-                .eq(ItfTblWangdianWxgDownload::getSfzen,mxup.getAzrenid())
-                .eq(ItfTblWangdianWxgDownload::getWdno,websitSH.getWdId()).one();
-
-        if (wxg !=null){
-            mxup.setAzrenid(wxg.getWxgid());
-        }
-
-    }
-
-    private void setOtherParm(OrderBase orderBase, ItfTblAzAssignLcLsUpload lcls, Integer cjstat,
-                              ItfTblAzWgmxQitaUpload mxup, OrderInstallDetail detail, Brand brand) {
-        WebsitSH websitSH = new WebsitSH();
-
-        setOtherWdno(orderBase, mxup);
-        mxup.setCjren(orderBase.getCreateBy());
-        mxup.setCjrmc(orderBase.getCreateName());
-        // 售后网点处理
-        websitSH = publicService.ptshwdToshshwd(mxup.getCzwd(), orderBase.getMainId());
-        mxup.setCzwd(websitSH.getWdId());
-
-        // 提取安装师傅的账号信息
-        mxup.setAzrenid(publicService.getBrandWorkerId(orderBase.getWorkerId(),websitSH.getWdId(),brand.getBrandId(),orderBase.getWebsitId()));
-
-        mxup.setStat(cjstat);
-        if (cjstat.equals("1120")){
-            if (orderBase.getOverTime()!=null){
-                mxup.setWcsj(orderBase.getOverTime());
-            } else {
-                mxup.setWcsj(mxup.getLastModifiedDate());
-            }
-        }
-        mxup.setAzwdno(lcls.getAzwdno());
-        mxup.setAzwdmc(lcls.getAzwdmc());
-        mxup.setAzwdxtbh(lcls.getAzwdxtbh());
-        if (StringUtils.isEmpty(mxup.getSjcjgps())){
-            if (orderBase.getAddress().length()>140){
-                mxup.setSjcjgps(orderBase.getAddress().substring(0,140));
-            } else {
-                mxup.setSjcjgps(orderBase.getAddress());
-            }
-        }
-        mxup.setGmsj(orderBase.getBuyTime());
-        mxup.setCjwdno(mxup.getAzwdno());
-        mxup.setZjczwd(mxup.getAzwdno());
-        if (StringUtils.isNotEmpty(orderBase.getLat()) && orderBase.getLat().length()>12){
-            mxup.setSjcjjd(orderBase.getLat().substring(0,12));
-        }
-        if (StringUtils.isNotEmpty(orderBase.getLng()) && orderBase.getLng().length()>12){
-            mxup.setSjcjwd(orderBase.getLng().substring(0,12));
-        }
-        mxup.setSjcjjwdu(mxup.getSjcjjd()+","+ mxup.getSjcjwd());
-
-        // 网点维修工ID单独处理
-        // 先找出网点编号对应的品牌商网点编号
-        // 先从售后网点查
-        websitSH = publicService.ptshwdToshshwd(detail.getWebsitId(), orderBase.getMainId());
-        if (StringUtils.isEmpty(websitSH.getWdId())){
-            websitSH = publicService.ptxswdToshxswd(detail.getWebsitId(), orderBase.getMainId());
-        }
-
-        ItfTblWangdianWxgDownload wxg = itfTblWangdianWxgDownloadService.lambdaQuery()
-                .eq(ItfTblWangdianWxgDownload::getSfzen,mxup.getAzrenid())
-                .eq(ItfTblWangdianWxgDownload::getWdno,websitSH.getWdId()).one();
-
-        if (wxg !=null){
-            mxup.setAzrenid(wxg.getWxgid());
-        }
-
-    }
-
-    private void setSyParm(OrderBase orderBase, ItfTblAzAssignLcLsUpload lcls, Integer cjstat,
-                           ItfTblAzWgmxSyktUpload mxup, OrderInstallDetail detail, Brand brand) {
-        WebsitSH websitSH = new WebsitSH();
-
-        setSyWdno(orderBase, mxup);
-        mxup.setCjren(orderBase.getCreateBy());
-        mxup.setCjrmc(orderBase.getCreateName());
-
-        // 售后网点处理
-        websitSH = publicService.ptshwdToshshwd(mxup.getCzwd(), orderBase.getMainId());
-        mxup.setCzwd(websitSH.getWdId());
-
-        // 提取安装师傅的账号信息
-        mxup.setAzrenid(publicService.getBrandWorkerId(orderBase.getWorkerId(),websitSH.getWdId(),brand.getBrandId(),orderBase.getWebsitId()));
-
-        mxup.setStat(cjstat);
-        if (cjstat.equals("1120")){
-            if (orderBase.getOverTime()!=null){
-                mxup.setWcsj(orderBase.getOverTime());
-            } else {
-                mxup.setWcsj(mxup.getLastModifiedDate());
-            }
-        }
-        mxup.setAzwdno(lcls.getAzwdno());
-        mxup.setAzwdmc(lcls.getAzwdmc());
-        mxup.setAzwdxtbh(lcls.getAzwdxtbh());
-        if (StringUtils.isEmpty(mxup.getSjcjgps())){
-            if (orderBase.getAddress().length()>140){
-                mxup.setSjcjgps(orderBase.getAddress().substring(0,140));
-            } else {
-                mxup.setSjcjgps(orderBase.getAddress());
-            }
-        }
-        mxup.setGmsj(orderBase.getBuyTime());
-        mxup.setCjwdno(mxup.getAzwdno());
-        mxup.setZjczwd(mxup.getAzwdno());
-        if (StringUtils.isNotEmpty(orderBase.getLat()) && orderBase.getLat().length()>12){
-            mxup.setSjcjjd(orderBase.getLat().substring(0,12));
-        }
-        if (StringUtils.isNotEmpty(orderBase.getLng()) && orderBase.getLng().length()>12){
-            mxup.setSjcjwd(orderBase.getLng().substring(0,12));
-        }
-        mxup.setSjcjjwdu(mxup.getSjcjjd()+","+ mxup.getSjcjwd());
-
-        // 网点维修工ID单独处理
-        // 先找出网点编号对应的品牌商网点编号
-        // 先从售后网点查
-        websitSH = publicService.ptshwdToshshwd(detail.getWebsitId(), orderBase.getMainId());
-        if (StringUtils.isEmpty(websitSH.getWdId())){
-            websitSH = publicService.ptxswdToshxswd(detail.getWebsitId(), orderBase.getMainId());
-        }
-
-        ItfTblWangdianWxgDownload wxg = itfTblWangdianWxgDownloadService.lambdaQuery()
-                .eq(ItfTblWangdianWxgDownload::getSfzen,mxup.getAzrenid())
-                .eq(ItfTblWangdianWxgDownload::getWdno,websitSH.getWdId()).one();
-
-        if (wxg !=null){
-            mxup.setAzrenid(wxg.getWxgid());
-        }
-
-    }
-
-    private void setJysWdno(OrderBase orderBase, ItfTblAzWgmxJyktUpload mxup) {
-        WebsitSH websitSH = new WebsitSH();
-
-        // 先从售后网点查
-        websitSH = publicService.ptshwdToshshwd(mxup.getZjczwdxtbh(), orderBase.getMainId());
-        if (StringUtils.isEmpty(websitSH.getWdId())){
-            websitSH = publicService.ptxswdToshxswd(mxup.getZjczwdxtbh(), orderBase.getMainId());
-        } else {
-            mxup.setJsdwxtbh(websitSH.getBrandSysWebsitNumber());
-        }
-        mxup.setZjczwdxtbh(websitSH.getBrandSysWebsitNumber());
-    }
-
-    private void setSyWdno(OrderBase orderBase, ItfTblAzWgmxSyktUpload mxup) {
-        WebsitSH websitSH = new WebsitSH();
-
-        // 先从售后网点查
-        websitSH = publicService.ptshwdToshshwd(mxup.getZjczwdxtbh(), orderBase.getMainId());
-        if (StringUtils.isEmpty(websitSH.getWdId())){
-            websitSH = publicService.ptxswdToshxswd(mxup.getZjczwdxtbh(), orderBase.getMainId());
-        } else {
-            mxup.setJsdwxtbh(websitSH.getBrandSysWebsitNumber());
-        }
-        mxup.setZjczwdxtbh(websitSH.getBrandSysWebsitNumber());
-    }
-
-    private void setOtherWdno(OrderBase orderBase, ItfTblAzWgmxQitaUpload mxup) {
-        WebsitSH websitSH = new WebsitSH();
-
-        // 先从售后网点查
-        websitSH = publicService.ptshwdToshshwd(mxup.getZjczwdxtbh(), orderBase.getMainId());
-        if (StringUtils.isEmpty(websitSH.getWdId())){
-            websitSH = publicService.ptxswdToshxswd(mxup.getZjczwdxtbh(), orderBase.getMainId());
-        } else {
-            mxup.setJsdwxtbh(websitSH.getBrandSysWebsitNumber());
-        }
-        mxup.setZjczwdxtbh(websitSH.getBrandSysWebsitNumber());
-    }
-
-    public void upInstallDetailPgguid(OrderBase orderBase) {
-        InstallDetail installDetail = new InstallDetail();
-        installDetail.setOrderNo(orderBase.getId());
-        installDetail.setPgguId(orderBase.getPgguid());
-        detailOrderInstallMapper.installUpdatePgguid(installDetail);
-    }
-
-    public void upCerrentRec(OrderInstallDetail detail) {
-        OrderInstallDetail updetail = new OrderInstallDetail();
-        updetail.setId(detail.getId());
-        updetail.setPgwcmxid(UUID.randomUUID().toString());
-        orderInstallDetailService.updateById(updetail);
-    }
-
-    @NotNull
-    private ItfTblAzAssignLcLsUpload getItfTblAzAssignLcLsUpload(@NotNull Brand brand, OutJiasmToGreeUploadTaskList ojtutl,
-                                                                 OrderBase orderBase) {
-        WebsitSH websitSH = new WebsitSH();
-        OrderPar orderPar = new OrderPar();
-        orderPar.setBrandId(brand.getBrandId());
-        orderPar.setOrderNo(ojtutl.getId());
-        ItfTblAzAssignLcLsUpload lcls = gdOrderBaseMapper.getAzOrderBase(orderPar);
-        lcls.setUploadTaskSynReqId(ojtutl.getSynReqId());
-
-        // 销售单位处理 xsdwno
-        websitSH = publicService.ptxswdToshxswd(lcls.getXsdwno(), orderBase.getMainId());
-        lcls.setXsdwno(websitSH.getWdId());
-        lcls.setXswdmc(websitSH.getWdmc());
-        lcls.setXsdwxtbh(websitSH.getBrandSysWebsitNumber());
-        lcls.setServicewdno(websitSH.getWdId());
-        lcls.setShopno(websitSH.getWdId());
-        lcls.setShopname(websitSH.getWdmc());
-
-
-        // 售后网点处理
-        websitSH = publicService.ptshwdToshshwd(lcls.getAzwdno(), orderBase.getMainId());
-        lcls.setAzwdno(websitSH.getWdId());
-        lcls.setAzwdmc(websitSH.getWdmc());
-        lcls.setAzwdxtbh(websitSH.getBrandSysWebsitNumber());
-        lcls.setCjwdno(websitSH.getWdId());
-        lcls.setCjwdxtbh(websitSH.getBrandSysWebsitNumber());
-        lcls.setZjczwd(websitSH.getWdId());
-        lcls.setZjczwdxtbh(websitSH.getBrandSysWebsitNumber());
-        // 提取安装师傅的账号信息
-        lcls.setAzrenid(publicService.getBrandWorkerId(orderBase.getWorkerId(),websitSH.getWdId(),brand.getBrandId(),orderBase.getWebsitId()));
-
-        // 接收派工网点也可认为是售后网点处理
-        lcls.setJspgwdno(websitSH.getWdId());
-        lcls.setJspgwdmc(websitSH.getWdmc());
-        lcls.setJspgwdxtbh(websitSH.getBrandSysWebsitNumber());
-        // 所属区域处理
-        BrandWebsit bb = brandWebsitService.lambdaQuery()
-                .eq(BrandWebsit::getGroupCompanyId,brand.getBrandId())
-                .eq(BrandWebsit::getBrandWebsitNumber,lcls.getJspgwdno()).one();
-        lcls.setSsqy("其他");
-        if (bb!=null){
-            if (bb.getBelongCompany().equals("X2300000") || bb.getBelongCompany().equals("S9219807")) {
-                lcls.setSsqy("佛山");
-            } else if (bb.getBelongCompany().equals("X2100000") || bb.getBelongCompany().equals("S9219801")) {
-                lcls.setSsqy("广州");
-            }
-        }
-        if (StringUtils.isEmpty(lcls.getQuhao())){
-            if (bb!=null){
-                if (bb.getBelongCompany().equals("S9219807")){
-                    lcls.setQuhao("0756");
-                } else if (bb.getBelongCompany().equals("S9219801")){
-                    lcls.setQuhao("020");
-                }
-            }
-        }
-        // 省市等信息单独处理
-        orderService.tpPositionTosh(lcls);
-        return lcls;
-    }
-
-    public void addAndUpdate(OutJiasmToGreeUploadTaskList ojtutl, ItfTblAzAssignLcLsUpload lcls) {
-
-        // 插入工单主表数据
-        itfTblAzAssignLcLsUploadService.save(lcls);
-
-        // 修改数据上传任务表中的状态
-        // updateUploadTaskList(ojtutl);
-    }
-
-
-    private boolean checkPare(OutJiasmToGreeUploadTaskList ojtutl, OrderBase orderBase) {
-        // 接收派工网点为空上传忽略
-        if (StringUtils.isEmpty(orderBase.getReceWebsitId()) || orderBase.getReceWebsitId().equals("0")){
-            stopUpload(ojtutl, "接收派工网点为空上传忽略");
-            return Boolean.FALSE;
-        }
-        if (StringUtils.isEmpty(orderBase.getPgguid()) || orderBase.getPgguid().equals("0")){
-            stopUpload(ojtutl, "pgguid异常上传忽略");
-            return Boolean.FALSE;
-        }
-        if (StringUtils.isEmpty(orderBase.getPgid()) || orderBase.getPgid().equals("0")){
-            stopUpload(ojtutl, "pgid异常上传忽略");
-            return Boolean.FALSE;
-        }
-        return Boolean.TRUE;
-    }
-
-
-    private void stopUpload(@NotNull OutJiasmToGreeUploadTaskList ojtutl, String msg) {
-        OutJiasmToGreeUploadTaskList up = new OutJiasmToGreeUploadTaskList();
-        up.setSynReqId(ojtutl.getSynReqId());
-        up.setSynStatus(99);
-        up.setSynTime(new Date());
-        up.setSynErrMsg(msg);
-        outJiasmToGreeUploadTaskListService.updateById(up);
-    }
 
 }

+ 5 - 281
src/main/java/com/zfire/jiasm/syncdata/upload/order/InstallProduceUploadList.java

@@ -1,25 +1,12 @@
 package com.zfire.jiasm.syncdata.upload.order;
 
-import com.zfire.jiasm.syncdata.constant.GDOrderStatusEnum;
-import com.zfire.jiasm.syncdata.constant.OrderTypeEnum;
 import com.zfire.jiasm.syncdata.constant.TaskConfigEnum;
-import com.zfire.jiasm.syncdata.plus.entity.*;
-import com.zfire.jiasm.syncdata.plus.service.*;
-import com.zfire.jiasm.syncdata.service.PrepareService;
-import com.zfire.jiasm.syncdata.service.PublicService;
-import com.zfire.jiasm.syncdata.utils.DataUtil;
-import com.zfire.jiasm.syncdata.utils.PrepareTaskLog;
-import com.zfire.jiasm.syncdata.utils.TokenCenter;
+import com.zfire.jiasm.syncdata.service.InstallProduceUploadListService;
 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.*;
 
 
 /**
@@ -32,31 +19,10 @@ import java.util.*;
 @Slf4j
 @Component
 public class InstallProduceUploadList {
-    @Value("${baseurl}")
-    private String baseurl = "";
     @Value("${azuploadscc}")
     private String azuploadscc = "";
-
-    @Resource
-    InstallProduceUploadList installProduceUploadList;
-    @Resource
-    PrepareService prepareService;
-    @Resource
-    OutJiasmToGreeUploadTaskListService outJiasmToGreeUploadTaskListService;
-    @Resource
-    OrderBaseService orderBaseService;
-    @Resource
-    OutJiasmToGreeUploadnotifylistService outJiasmToGreeUploadnotifylistService;
-    @Resource
-    OrderInstallOperatingLogService orderInstallOperatingLogService;
-    @Resource
-    OrderReAppointmentService orderReAppointmentService;
-    @Resource
-    PublicService publicService;
-    @Resource
-    OrderProductService orderProductService;
-    @Resource
-    OrderInformationService orderInformationService;
+    @Autowired
+    InstallProduceUploadListService installProduceUploadListService;
 
 
     @Scheduled(fixedDelayString = "${azuploadsc}")
@@ -65,250 +31,8 @@ public class InstallProduceUploadList {
             return;
         }
 
-
-
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        List<OutJiasmToGreeUploadTaskList> ojtgutls = new ArrayList<>();
-
-        // Token token = tokenCenter.getCurrentToken();
-
-        log.info("开始预处理需要上传的工单数据: \uF0B7{}",sdf.format(new Date()));
-
-        // 从需要上传的订单数据表中提取数据
-        List<OutJiasmToGreeUploadnotifylist> taskResults = outJiasmToGreeUploadnotifylistService.lambdaQuery()
-                .eq(OutJiasmToGreeUploadnotifylist::getSynStatus,0)
-                .orderByAsc(OutJiasmToGreeUploadnotifylist::getSynReqId).list();
-
-        try {
-            for (OutJiasmToGreeUploadnotifylist item : taskResults) {
-                Long itemSynReqId = item.getSynReqId();
-                // 同步的表名
-                String itemTableName = item.getTableName();
-                // 同步表中的工单号
-                String itemOrderNo = item.getOrderNo();
-                // 同步表中的主键id
-                String itemTableNameId = item.getId();
-                String itemOrderType = item.getOrderType();
-
-                // 数据同步预处理规则表中提取对应表名的规则
-                Map<String, Object> row = prepareService.getTaskInfo(itemTableName);
-                int taskId = (Integer) row.get("id");
-                String srcTabName = (String) row.get("src_tab_name");
-
-                String errorMessage = null;
-                try {
-                    // 根据表名获取表中指定工单的数据
-                    // 规则表中表名,同步表中的单号,同步表中的id(同步表中的表名的主键)
-                    // Map<String, Object> sourceData = prepareService.getTaskDataDetail(srcTabName, orderNo,topOrderId);
-
-                    // 过程名,规则表中的ID,源表中的数据最后修改时间,需同步的表中的工单号,需同步的表中的主键id,空值,false
-                    // prepareService.prepareData(procName, taskId, date, sOrderNo, orderId, newDykh, isNeedGenRemoteId);
-                    // 工单表执行 TL_PrePare_task_by_fa_order_install 过程
-
-                    // 数据上传任务表OutJiasmToGreeUploadTaskList 生成数据
-
-                    // 安装工单处理 22,221,222
-                    if (itemTableName.equals("order_base") &&
-                            itemOrderType.equals(OrderTypeEnum.ORDER_TYPE_INSTALL.getCode())){
-                        installProduceUploadList.orderBaseProess(itemTableNameId, ojtgutls, item.getSynReqId(), itemTableName, itemOrderType);
-                    }
-                    // 安装工单操作日志 23
-                    if (itemTableName.equals("order_install_operating_log")){
-                        installProduceUploadList.orderInstallOperatingLog(item, itemTableName, itemOrderType);
-                    }
-                    // 安装工单用户预约、改约明细 230 同时向发短信表插入一条数据
-                    if (itemTableName.equals("order_re_appointment") &&
-                            itemOrderType.equals(OrderTypeEnum.ORDER_TYPE_INSTALL.getCode())){
-                        installProduceUploadList.OrderReAppointment(item, itemTableName, itemOrderType);
-                    }
-                    // 安装工单产品信息 24
-                    if (itemTableName.equals("order_product") &&
-                            itemOrderType.equals(OrderTypeEnum.ORDER_TYPE_INSTALL.getCode())){
-                        // TL_PrePare_task_by_fa_order_install_product 24
-                        installProduceUploadList.orderProductProess(item, itemTableName, itemOrderNo, itemTableNameId);
-                    }
-                    // 安装工单子信息  26
-                    if (itemTableName.equals("order_information") &&
-                            itemOrderType.equals(OrderTypeEnum.ORDER_TYPE_INSTALL.getCode())){
-                        // TL_PrePare_task_by_fa_order_install_information
-                        installProduceUploadList.orderInformationProess(item, itemTableName, itemOrderNo, itemTableNameId);
-                    }
-                } catch (Exception ex) {
-                    errorMessage = ex.getMessage();
-                    updateError(errorMessage, item);
-                } finally {
-                    PrepareTaskLog.writeMessage(genInfoData(taskId, srcTabName, false, errorMessage));
-                }
-            }
-            log.info("预处理需要上传的安装工单数据完成: \uF0B7{}",sdf.format(new Date()));
-        } catch (Exception ex) {
-            ex.printStackTrace();
-            log.info("开始预处理需要上传的工单数据出错");
-        }
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public void orderInformationProess(OutJiasmToGreeUploadnotifylist item, String itemTableName, String itemOrderNo, String itemTableNameId) {
-        // 提取对应的子信息
-        OrderInformation oi = orderInformationService.lambdaQuery()
-                .eq(OrderInformation::getId, itemTableNameId).one();
-        if (oi!=null){
-            // 生成26类型上传任务数据
-            // 单号,主键,同步任务生成时间,同步的表名,工单类型,任务类型
-            OutJiasmToGreeUploadTaskList add = publicService.getUploadTaskList(itemOrderNo, itemTableNameId,oi.getUpdateTime(), itemTableName,
-                    OrderTypeEnum.ORDER_TYPE_INSTALL.getCode(),26);
-            outJiasmToGreeUploadTaskListService.save(add);
-
-        }
-
-
-        // 需要上传的订单数据表中处理状态同步为已处理
-        OutJiasmToGreeUploadnotifylist upn = getOutJiasmToGreeUploadnotifylist(item.getSynReqId());
-        outJiasmToGreeUploadnotifylistService.updateById(upn);
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public void orderProductProess(OutJiasmToGreeUploadnotifylist item, String itemTableName, String itemOrderNo, String itemTableNameId) {
-        // 提取工单机型
-        OrderProduct op = orderProductService.lambdaQuery()
-                .eq(OrderProduct::getId, itemTableNameId).one();
-        if (op!=null){
-            // 生成24类型上传任务数据
-            // 单号,主键,同步任务生成时间,同步的表名,工单类型,任务类型
-            OutJiasmToGreeUploadTaskList add = publicService.getUploadTaskList(itemOrderNo, itemTableNameId,op.getUpdateTime(), itemTableName,
-                    OrderTypeEnum.ORDER_TYPE_INSTALL.getCode(),24);
-            outJiasmToGreeUploadTaskListService.save(add);
-        }
-
-        // 需要上传的订单数据表中处理状态同步为已处理
-        OutJiasmToGreeUploadnotifylist upn = getOutJiasmToGreeUploadnotifylist(item.getSynReqId());
-        outJiasmToGreeUploadnotifylistService.updateById(upn);
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public  void OrderReAppointment(OutJiasmToGreeUploadnotifylist item, String itemTableName, String itemOrderType) {
-        OrderReAppointment rea = orderReAppointmentService.lambdaQuery()
-                .eq(OrderReAppointment::getId, item.getId()).one();
-        // 同步任务增加一条数据
-        if (rea !=null){
-            OutJiasmToGreeUploadTaskList add = publicService.getUploadTaskList(item.getOrderNo(), item.getId(),
-                    rea.getCreateTime(), itemTableName, itemOrderType, 230);
-            outJiasmToGreeUploadTaskListService.save(add);
-            // 向发短信表插入一条数据,短信表ID同预约改约表ID相同
-            publicService.addFaOrderSms(rea);
-        }
-
-        // 需要上传的订单数据表中处理状态同步为已处理
-        OutJiasmToGreeUploadnotifylist up = getOutJiasmToGreeUploadnotifylist(item.getSynReqId());
-        outJiasmToGreeUploadnotifylistService.updateById(up);
+        installProduceUploadListService.processUploadList();
     }
 
-    @Transactional(rollbackFor = Exception.class)
-    public void orderInstallOperatingLog(OutJiasmToGreeUploadnotifylist item, String itemTableName, String itemOrderType) {
-        OrderInstallOperatingLog logInfo = orderInstallOperatingLogService.lambdaQuery()
-                .eq(OrderInstallOperatingLog::getId, item.getId()).one();
-        // 同步任务增加一条数据
-        if (logInfo !=null){
-            OutJiasmToGreeUploadTaskList add = publicService.getUploadTaskList(item.getOrderNo(), item.getId(),
-                    logInfo.getCreateTime(), itemTableName, itemOrderType, 23);
-            outJiasmToGreeUploadTaskListService.save(add);
-        }
-
-        // 需要上传的订单数据表中处理状态同步为已处理
-        OutJiasmToGreeUploadnotifylist up = getOutJiasmToGreeUploadnotifylist(item.getSynReqId());
-        outJiasmToGreeUploadnotifylistService.updateById(up);
-    }
-
-
-    public void updateError(String errMessage, OutJiasmToGreeUploadnotifylist item) {
-        if (errMessage != null && errMessage.trim().length() > 255) {
-            errMessage = errMessage.substring(0, 255);
-        }
-        OutJiasmToGreeUploadnotifylist up = new OutJiasmToGreeUploadnotifylist();
-        up.setSynReqId(item.getSynReqId());
-        up.setSynTimes(item.getSynTimes()+1);
-        up.setSynErrMsg(errMessage);
-        up.setSynReqTime(new Date());
-        outJiasmToGreeUploadnotifylistService.updateById(up);
-    }
-
-    @NotNull
-    private OutJiasmToGreeUploadnotifylist getOutJiasmToGreeUploadnotifylist(Long synReqId) {
-        OutJiasmToGreeUploadnotifylist up = new OutJiasmToGreeUploadnotifylist();
-        up.setSynReqId(synReqId);
-        up.setSynStatus(1);
-        up.setSynReqTime(new Date());
-        return up;
-    }
-
-
-    @Transactional(rollbackFor = Exception.class)
-    public void orderBaseProess(String itemTableNameId, List<OutJiasmToGreeUploadTaskList> ojtgutls, Long synReqId, String itemTableName, String itemOrderType) {
-        OrderBase orderBase = orderBaseService.lambdaQuery()
-                .eq(OrderBase::getId,itemTableNameId).one();
-
-        // 安装工单处理
-        if (orderBase !=null){
-            InstallOrderBase(itemTableNameId, orderBase.getUpdateTime(), orderBase, ojtgutls, itemTableName, itemOrderType);
-        }
-
-        if (ojtgutls.size()>0){
-            outJiasmToGreeUploadTaskListService.saveBatch(ojtgutls);
-            ojtgutls.clear();
-        }
-        // 需要上传的订单数据表中处理状态同步为已处理
-        OutJiasmToGreeUploadnotifylist up = getOutJiasmToGreeUploadnotifylist(synReqId);
-        outJiasmToGreeUploadnotifylistService.updateById(up);
-    }
-
-    private void InstallOrderBase(String orderNo, Date updateTime, OrderBase orderBase, List<OutJiasmToGreeUploadTaskList> ojtgutls,
-                                  String itemTableName, String itemOrderType) {
-        // 若工单被删除不再同步 不写上传记录表
-
-        // 生成一条22类型的上传记录  out_jiasm_to_gree_upload_task_list
-        OutJiasmToGreeUploadTaskList add = publicService.getUploadTaskList(orderNo, orderBase.getId(), updateTime, itemTableName, itemOrderType, 22);
-        ojtgutls.add(add);
-        // 工单状态order_status 6, 7, 9, 10
-        if (orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G6.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G7.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G9.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G10.getCode())){
-            if (orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G6.getCode())){
-                OutJiasmToGreeUploadTaskList addo = publicService.getUploadTaskList(orderNo, orderBase.getId(), updateTime, itemTableName, itemOrderType, 221);
-                ojtgutls.add(addo);
-            } else if (orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G7.getCode()) ||
-                    orderBase.getOrderStatus().equals(GDOrderStatusEnum.INSTALL_STATUS_G9.getCode())){
-                OutJiasmToGreeUploadTaskList addt = publicService.getUploadTaskList(orderNo, orderBase.getId(), updateTime, itemTableName, itemOrderType, 221);
-                ojtgutls.add(addt);
-                OutJiasmToGreeUploadTaskList addtt = publicService.getUploadTaskList(orderNo, orderBase.getId(), orderBase.getUpdateTime(), itemTableName, itemOrderType, 222);
-                ojtgutls.add(addtt);
-            } else {
-                OutJiasmToGreeUploadTaskList addttt = publicService.getUploadTaskList(orderNo, orderBase.getId(), updateTime, itemTableName, itemOrderType, 222);
-                ojtgutls.add(addttt);
-            }
-        }
-    }
-
-
-    private String genInfoData(int taskId, String srcTabName, boolean isTimeOut, String errorMessage) {
-        String result = "预处理任务[" + taskId + "," + srcTabName + "] " + (isTimeOut ? "超时!!!!" : "正常") + " "
-                + (errorMessage != null ? "错误:[" + errorMessage + "]" : "");
-        return result;
-    }
-
-    private Map<String, Object> genDataMapFromSource(String localKeyList, String serverKeyList,
-                                                     Map<String, Object> sourceData) {
-        Map<String, Object> paramMap = new HashMap<String, Object>();
-        String[] localKeys = localKeyList.split("\\Q,\\E");
-        String[] serverKeys = serverKeyList.split("\\Q,\\E");
-        for (int i = 0; i < localKeys.length; i++) {
-            String localKey = localKeys[i];
-            String serverKey = serverKeys[i];
-            Object value = sourceData.get(localKey.trim());
-            paramMap.put(DataUtil.fromDbName2ServiceName(serverKey.trim()), value);
-        }
-
-        return paramMap;
-    }
 
 }

+ 4 - 1760
src/main/java/com/zfire/jiasm/syncdata/upload/order/RepairProduceDataUpload.java

@@ -1,37 +1,12 @@
 package com.zfire.jiasm.syncdata.upload.order;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-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.GDAppointStatusEnum;
-import com.zfire.jiasm.syncdata.constant.GDOrderStatusEnum;
-import com.zfire.jiasm.syncdata.constant.OrderTypeEnum;
 import com.zfire.jiasm.syncdata.constant.TaskConfigEnum;
-import com.zfire.jiasm.syncdata.dao.mapper.*;
-import com.zfire.jiasm.syncdata.data.Token;
-import com.zfire.jiasm.syncdata.parameter.InstallCJDetailFile;
-import com.zfire.jiasm.syncdata.parameter.OrderPar;
-import com.zfire.jiasm.syncdata.parameter.ReAppointment;
-import com.zfire.jiasm.syncdata.plus.entity.*;
-import com.zfire.jiasm.syncdata.plus.service.*;
-import com.zfire.jiasm.syncdata.response.WebsitSH;
-import com.zfire.jiasm.syncdata.service.PublicService;
-import com.zfire.jiasm.syncdata.utils.*;
+import com.zfire.jiasm.syncdata.service.RepairProduceDataUploadService;
 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 org.springframework.util.CollectionUtils;
-
-import javax.annotation.Resource;
-import java.text.SimpleDateFormat;
-import java.util.*;
 
 /**
  * 生成需要上传的数据
@@ -47,104 +22,11 @@ import java.util.*;
 @Slf4j
 @Component
 public class RepairProduceDataUpload {
-    @Value("${baseurl4pgid}")
-    private String baseurl4pgid;
-    @Value("${baseurl}")
-    private String baseurl;
     @Value("${wxuploadyscc}")
     private String wxuploadyscc = "";
 
-
-    @Resource
-    RepairProduceDataUpload repairProduceDataUpload;
     @Autowired
-    private TokenCenter tokenCenter;
-    @Resource
-    BaseService baseService;
-    @Resource
-    OutJiasmToGreeUploadTaskTypeService outJiasmToGreeUploadTaskTypeService;
-    @Resource
-    OutJiasmToGreeUploadTaskListService outJiasmToGreeUploadTaskListService;
-    @Resource
-    OrderBaseService orderBaseService;
-    @Resource
-    OrderProductService orderProductService;
-    @Resource
-    OrderRepairOperatingLogService orderRepairOperatingLogService;
-    @Resource
-    FaGreeSmsService faGreeSmsService;
-    @Resource
-    GDOrderBaseMapper gdOrderBaseMapper;
-    @Resource
-    OrderRepairService orderRepairService;
-    @Resource
-    PublicService publicService;
-    @Resource
-    BrandLbsRelateService brandLbsRelateService;
-    @Resource
-    StreetService streetService;
-    @Resource
-    AreaService areaService;
-    @Resource
-    ItfTblAssignUploadService itfTblAssignUploadService;
-    @Resource
-    ItfMessagehuifangentityService itfMessagehuifangentityService;
-    @Resource
-    FileOrderDetailMapper fileOrderDetailMapper;
-    @Resource
-    OrderRepairDetailService orderRepairDetailService;
-    @Resource
-    DetailOrderRepairMapper detailOrderRepairMapper;
-    @Resource
-    ItfTblWxjsJyktUploadService itfTblWxjsJyktUploadService;
-    @Resource
-    OrderRepairDetailReasonService orderRepairDetailReasonService;
-    @Resource
-    ItfTblWxjsXxyyJyktUploadService itfTblWxjsXxyyJyktUploadService;
-    @Resource
-    OrderDetailFileService orderDetailFileService;
-    @Resource
-    ItfTblWxjsFjJyktUploadService itfTblWxjsFjJyktUploadService;
-    @Resource
-    OrderRepairDetailItemService orderRepairDetailItemService;
-    @Resource
-    ReasonOrderRepairDetailMapper reasonOrderRepairDetailMapper;
-    @Resource
-    ItfTblWxjsWxxmJyktUploadService itfTblWxjsWxxmJyktUploadService;
-    @Resource
-    ItfTblAssignFeeUploadService itfTblAssignFeeUploadService;
-    @Resource
-    ItfTblWxjsPjmxJyktUploadService itfTblWxjsPjmxJyktUploadService;
-    @Resource
-    WxjsJyktUploadMapper wxjsJyktUploadMapper;
-    @Resource
-    ItfTblwxjsjyktService itfTblwxjsjyktService;
-    @Resource
-    ItfTblwxjsxxyyjyktService itfTblwxjsxxyyjyktService;
-    @Resource
-    ItfTblwxjswxxmjyktService itfTblwxjswxxmjyktService;
-    @Resource
-    ItfTblwxjspjmxjyktService itfTblwxjspjmxjyktService;
-    @Resource
-    ItfTblwxjsfjjyktService itfTblwxjsfjjyktService;
-    @Resource
-    GetOrderProductMapper getOrderProductMapper;
-    @Resource
-    ItfTblAssignMxUploadService itfTblAssignMxUploadService;
-    @Resource
-    RepairLogMapper repairLogMapper;
-    @Resource
-    ItfTblAssignFkmxUploadService itfTblAssignFkmxUploadService;
-    @Resource
-    ItfTblAssignAppointmentUploadService itfTblAssignAppointmentUploadService;
-    @Resource
-    FaGreeSmsWorkerService faGreeSmsWorkerService;
-    @Resource
-    OrderReAppointmentService orderReAppointmentService;
-    @Resource
-    BrandWebsitService brandWebsitService;
-    @Resource
-    ReAppointmentOrderMapper reAppointmentOrderMapper;
+    RepairProduceDataUploadService repairProduceDataUploadService;
 
 
 
@@ -152,1649 +34,11 @@ public class RepairProduceDataUpload {
 
     @Scheduled(fixedDelayString = "${wxuploadysc}")
     private void produceList() throws Exception {
-
-        if (wxuploadyscc.equals(TaskConfigEnum.FALSE.getCode())){
-            return;
-        }
-
-
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
-        // 提取品牌信息
-        Brand brand = baseService.getBrand();
-        if (brand == null) {
-            return;
-        }
-
-        // 提取品牌商对应的需求小类信息
-        Map<String, List<SysDictRef>> sysDictRefXLMapXq = publicService.getListMapXqtoPP(brand);
-
-        log.info("开始生成需要上传的修修工单数据: \uF0B7{}",sdf.format(new Date()));
-
-        Token token = tokenCenter.getCurrentToken();
-
-        // 1:类型定义表中提取数据
-        List<OutJiasmToGreeUploadTaskType> taskTypes = outJiasmToGreeUploadTaskTypeService.lambdaQuery()
-                .orderByAsc(OutJiasmToGreeUploadTaskType::getId).list();
-        try{
-            for (OutJiasmToGreeUploadTaskType taskType:taskTypes){
-                // 任务类型
-                int uploadTaskType = taskType.getUploadTaskType();
-                // 需从格力系统获取的列名
-                String greekeyName = taskType.getGreekeyName();
-                // 获取列名对应的表名
-                String srcTabNameForGreekey = taskType.getSrcTabNameForGreekey();
-                // 列名(greekeyName)的获取方式
-                String greekeyGetMode = taskType.getGreekeyGetMode();
-
-                String greeInsColList = (String) taskType.getGreeInsColList();
-                if (greeInsColList == null) {
-                    greeInsColList = "";
-                }
-                // 2:数据上传任务清单表中提取对应任务类型的需要上传的数据
-                List<OutJiasmToGreeUploadTaskList> result = outJiasmToGreeUploadTaskListService.lambdaQuery()
-                        .eq(OutJiasmToGreeUploadTaskList::getSynStatus,0)
-                        .eq(OutJiasmToGreeUploadTaskList::getUploadTaskType,uploadTaskType)
-                        .orderByAsc(OutJiasmToGreeUploadTaskList::getSynReqId).list();
-                // 相同任务类型的数据逐个处理
-                for (OutJiasmToGreeUploadTaskList row: result){
-                    Long taskId = row.getSynReqId();
-                    try {
-                        OutJiasmToGreeUploadTaskList sourceData = outJiasmToGreeUploadTaskListService.lambdaQuery()
-                                .eq(OutJiasmToGreeUploadTaskList::getSynReqId,taskId).one();
-                        if (!sourceData.getSynStatus().equals(0)){
-                            continue;
-                        }
-
-                        String newDykh = "";
-                        // 需从格力总部获取相对列值  维修工单的pgid从格力总部获取
-                        if (greekeyName != null && greekeyName.trim().length() > 0 && srcTabNameForGreekey != null
-                                && srcTabNameForGreekey.trim().length() > 0) {
-                            newDykh = getpgid(token, uploadTaskType, srcTabNameForGreekey, greekeyGetMode, row, newDykh);
-                        }
-
-                        // 过程名称,同步任务表中的id,同步任务表中的工单号,同步任务表中的需同步的表的主键,newDykh(pgid-主键),true
-                        // 66 - TL_PrePareSynDataby_fa_order_repair_test
-                        // 维修工单 基础表数据同步
-                        if (row.getTableName().equals("order_base") &&
-                                row.getOrderType().equals(OrderTypeEnum.ORDER_TYPE_REPAIR.getCode())){
-                            if (uploadTaskType==66){
-                                repairProduceDataUpload.generateItfTblAssignUpload(brand, sysDictRefXLMapXq, taskId,
-                                        sourceData, newDykh, row);
-                            } else if (uploadTaskType==661){
-                                // 661 - TL_PrePareSynDataby_assign_cj
-                                repairProduceDataUpload.generateItfTblAssignUploadTow(brand, row, sourceData, newDykh);
-                            }
-                        } else if (row.getTableName().equals("order_product") &&
-                                row.getOrderType().equals(OrderTypeEnum.ORDER_TYPE_REPAIR.getCode())){
-                            // 生成维修单明细数据 TL_PrePareSynDataby_fa_order_repair_product    68
-                            repairProduceDataUpload.generateOrderProduct(brand, uploadTaskType, row, sourceData, newDykh);
-                        } else if (row.getTableName().equals("order_repair_operating_log")){
-                            // 生成维修单过程反馈数据 TL_PrePareSynDataby_fa_order_repair_operating_log   67
-                            // 原预约改约在这里处理 现移到下面 order_re_appointment
-                            repairProduceDataUpload.generateItfTblAssignFkmxUpload(brand, uploadTaskType,row, taskId, sourceData, newDykh);
-                        } else if (row.getTableName().equals("order_re_appointment") &&
-                                row.getOrderType().equals(OrderTypeEnum.ORDER_TYPE_REPAIR.getCode())){
-                            // 安装工单用户改约明细 与操作明细最好放在一起,因表设计分开,所以独立开来处理
-                            repairProduceDataUpload.getAppointment(row);
-                        }
-                    } catch (Exception ex) {
-                        ex.printStackTrace();
-                        log.info("开始预处理生成需要上传的维修工单数据出错: "+taskId);
-                    }
-                    // 修改 itf_fa_to_gree_upload_task_list
-                }
-            }
-            log.info("生成需要上传的维修工单数据结束: \uF0B7{}",sdf.format(new Date()));
-        } catch (Exception ex) {
-            ex.printStackTrace();
-            log.info("开始预处理生成需要上传的维修工单数据出错");
-        }
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public void generateItfTblAssignFkmxUpload(Brand brand, int uploadTaskType, OutJiasmToGreeUploadTaskList row, Long taskId,
-                                               OutJiasmToGreeUploadTaskList sourceData, String newDykh) {
-        // 提取工单数据
-        OrderBase orderBase = orderBaseService.lambdaQuery()
-                .eq(OrderBase::getId, sourceData.getOrderNo()).one();
-        if (StringUtils.isEmpty(orderBase.getPgid())){
-            publicService.updateUploadTaskLisError(sourceData,"order_base表pgid为空暂不同步");
-            return;
-        }
-
-        // 修改日志表pgid   getpgid方法已处理
-        // 修改当前ID的 fkid该值通过接口获取的
-        upfkid(sourceData,newDykh);
-        // 修改日志表内部序列outid + 自生成 fkmxguid
-        upOrderRepairOperatingLogOutId(orderBase);
-        // 生成维修单过程反馈数据
-        getItfTblAssignFkmxUpload(brand, taskId, sourceData,orderBase);
-        // 改约或者预约时增加写 itf_tbl_assign_appointment_upload 这里不再处理移动外面单独处理
-        // getItfTblAssignAppointmentUpload(sourceData);
-
-        // 修改数据上传任务表中的状态   这里固定值 68
-        publicService.updateUploadTaskListStatus(row.getOrderNo(), row.getSynReqId(),1, uploadTaskType);
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public  void getAppointment(OutJiasmToGreeUploadTaskList ojtutl) {
-        OrderBase orderBase = orderBaseService.lambdaQuery()
-                .eq(OrderBase::getId, ojtutl.getOrderNo()).one();
-
-        if (orderBase !=null ){
-            // 修改内部序列outid
-            upOutId(orderBase);
-
-            ReAppointment request = new ReAppointment();
-            request.setOrderNo(ojtutl.getOrderNo());
-            request.setId(ojtutl.getId());
-            ItfTblAssignAppointmentUpload add = reAppointmentOrderMapper.getAppointment(request);
-            itfTblAssignAppointmentUploadService.save(add);
-        }
-
-        // 修改数据上传任务表中的状态 单号,id,同步状态,类型
-        publicService.updateUploadTaskListStatus(ojtutl.getOrderNo(), ojtutl.getSynReqId(),1, ojtutl.getUploadTaskType());
-    }
-
-    private void upOutId(OrderBase orderBase) {
-        List<OrderReAppointment> upList = new ArrayList<>();
-
-        List<OrderReAppointment> detaillist = orderReAppointmentService.lambdaQuery()
-                .eq(OrderReAppointment::getOrderBaseId, orderBase.getId())
-                .orderByAsc(OrderReAppointment::getCreateTime).list();
-
-        int outId=0;
-        if (detaillist!=null && detaillist.size()>0){
-            // 找出最大的序 默认值为0
-            for (OrderReAppointment item:detaillist){
-                if (outId<item.getOutId()){
-                    outId = item.getOutId();
-                }
-            }
-
-            for (OrderReAppointment ite:detaillist){
-                if (ite.getOutId() == 0){
-                    outId++;
-                    OrderReAppointment n = new OrderReAppointment();
-                    n.setId(ite.getId());
-                    n.setOutId(outId);
-                    n.setUpdateTime(new Date());
-                    upList.add(n);
-                }
-            }
-            // 修改序
-            if (upList.size()>0){
-                orderReAppointmentService.updateBatchById(upList);
-                upList.clear();
-            }
-        }
-    }
-
-    private void upOrderRepairOperatingLogOutId(OrderBase orderBase) {
-        List<OrderRepairOperatingLog> upList = new ArrayList<>();
-        List<OrderRepairOperatingLog> upfkmxList = new ArrayList<>();
-
-        List<OrderRepairOperatingLog> detaillist = orderRepairOperatingLogService.lambdaQuery()
-                .eq(OrderRepairOperatingLog::getOrderBaseId, orderBase.getId())
-                .orderByAsc(OrderRepairOperatingLog::getCreateTime).list();
-        // 找出最大的序 默认值为0
-        int outId=0;
-        if (detaillist!=null && detaillist.size()>0){
-            for (OrderRepairOperatingLog item:detaillist){
-                if (outId<item.getOutId()){
-                    outId = item.getOutId();
-                }
-                if (StringUtils.isEmpty(item.getFkmxguid())){
-                    OrderRepairOperatingLog n = new OrderRepairOperatingLog();
-                    n.setId(item.getId());
-                    n.setFkmxguid(IdWorker.getIdStr());
-                    n.setUpdateTime(new Date());
-                    upfkmxList.add(n);
-                }
-            }
-            for (OrderRepairOperatingLog ite:detaillist){
-                if (ite.getOutId() == 0){
-                    outId++;
-                    OrderRepairOperatingLog n = new OrderRepairOperatingLog();
-                    n.setId(ite.getId());
-                    n.setOutId(outId);
-                    n.setUpdateTime(new Date());
-                    upList.add(n);
-                }
-            }
-            // 修改序
-            if (upList.size()>0){
-                orderRepairOperatingLogService.updateBatchById(upList);
-                upList.clear();
-            }
-            detaillist.clear();
-            if (upfkmxList.size()>0){
-                orderRepairOperatingLogService.updateBatchById(upfkmxList);
-                upfkmxList.clear();
-            }
-        }
-    }
-
-    private void upfkid(OutJiasmToGreeUploadTaskList sourceData,String newDykh) {
-        OrderPar request = new OrderPar();
-        request.setId(sourceData.getId());
-        request.setOrderNo(sourceData.getOrderNo());
-        request.setFkid(newDykh);
-        repairLogMapper.upRepairLogFkid(request);
-    }
-
-    private void getItfTblAssignAppointmentUpload(OutJiasmToGreeUploadTaskList sourceData) {
-        OrderPar req = new OrderPar();
-        req.setId(sourceData.getId());
-        req.setOrderNo(sourceData.getOrderNo());
-        ItfTblAssignAppointmentUpload app = repairLogMapper.getItfTblAssignAppointmentUpload(req);
-        if (app != null){
-            itfTblAssignAppointmentUploadService.save(app);
-        }
-    }
-
-    @NotNull
-    private void getItfTblAssignFkmxUpload(Brand brand, Long taskId, OutJiasmToGreeUploadTaskList sourceData, OrderBase orderBase) {
-        OrderPar req = new OrderPar();
-        WebsitSH websitSH = new WebsitSH();
-        req.setId(sourceData.getId());
-        req.setOrderNo(sourceData.getOrderNo());
-        req.setBrandId(brand.getBrandId());
-        ItfTblAssignFkmxUpload fkmx = repairLogMapper.getItfTblAssignFkmxUpload(req);
-        // 售后网点处理
-        websitSH = publicService.ptshwdToshshwd(fkmx.getFkwdno(), orderBase.getMainId());
-        fkmx.setFkwdno(websitSH.getWdId());
-        fkmx.setFkwdmc(websitSH.getWdmc());
-
-
-        fkmx.setUploadTaskSynReqId(taskId);
-        fkmx.setWorkerOrderNo(sourceData.getOrderNo());
-        itfTblAssignFkmxUploadService.save(fkmx);
-    }
-
-    /**
-     * 过程名称,out_jiasm_to_gree_upload_task_list同步任务表中的id,
-     * 同步任务表中的工单号,需同步的表的主键,newDykh(OrderProduct.pgmxid品牌方主键),true
-     * TL_PrePareSynDataby_fa_order_repair_product
-     * @param brand
-     * @param uploadTaskType
-     * @param row
-     * @param sourceData
-     */
-    @Transactional(rollbackFor = Exception.class)
-    public void generateOrderProduct(Brand brand, int uploadTaskType, OutJiasmToGreeUploadTaskList row,
-                                     OutJiasmToGreeUploadTaskList sourceData, String newDykh) {
-        // 提取工单数据
-        OrderProduct op = orderProductService.lambdaQuery()
-                .eq(OrderProduct::getId,row.getId()).one();
-        if (op == null){
-            publicService.updateUploadTaskLisError(sourceData,"找不到对应记录:"+row.getId());
-            return;
-        }
-        if (StringUtils.isEmpty(op.getPgid())){
-            publicService.updateUploadTaskLisError(sourceData,"order_product表pgid为空不同步");
+        if (wxuploadyscc.equals(TaskConfigEnum.FALSE.getCode())) {
             return;
         }
 
-        // order_product.pgmxid是直接在表内取出来的 无值的话调接口获取
-        // 修改对应ID的pgmxid
-        upPgmxid(row, sourceData, newDykh);
-
-        // 修改内部序
-        upOrderProductOutId(sourceData);
-
-        // 生成数据
-        getItfTblAssignMxUpload(brand, sourceData);
-
-        // 修改数据上传任务表中的状态   这里固定值 68
-        publicService.updateUploadTaskListStatus(row.getOrderNo(), row.getSynReqId(),1, uploadTaskType);
-    }
-
-    private void upOrderProductOutId(OutJiasmToGreeUploadTaskList sourceData) {
-        List<OrderProduct> upList = new ArrayList<>();
-        List<OrderProduct> oplist = orderProductService.lambdaQuery()
-                .eq(OrderProduct::getOrderBaseId, sourceData.getOrderNo())
-                .orderByAsc(OrderProduct::getCreateTime).list();
-        // 找出最大的序 默认值为0
-        int outId=0;
-        if (oplist!=null && oplist.size()>0){
-            for (OrderProduct item:oplist){
-                if (outId<item.getOutId()){
-                    outId = item.getOutId();
-                }
-            }
-            for (OrderProduct ite:oplist){
-                if (ite.getOutId() == 0){
-                    outId++;
-                    OrderProduct n = new OrderProduct();
-                    n.setId(ite.getId());
-                    n.setOutId(outId);
-                    n.setUpdateTime(new Date());
-                    upList.add(n);
-                }
-            }
-            // 修改序
-            if (upList.size()>0){
-                orderProductService.updateBatchById(upList);
-                upList.clear();
-            }
-            oplist.clear();
-        }
-    }
-
-    private void getItfTblAssignMxUpload(Brand brand, OutJiasmToGreeUploadTaskList sourceData) {
-        OrderPar request = new OrderPar();
-        WebsitSH websitSH = new WebsitSH();
-        OrderBase orderBase = orderBaseService.lambdaQuery()
-                .eq(OrderBase::getId,sourceData.getOrderNo()).one();
-
-        request.setBrandId(brand.getBrandId());
-        request.setId(sourceData.getId());
-        request.setOrderNo(sourceData.getOrderNo());
-        ItfTblAssignMxUpload mx = getOrderProductMapper.getItfTblAssignMxUpload(request);
-        mx.setWorkerOrderNo(sourceData.getOrderNo());
-        // 销售单位处理
-        websitSH = publicService.ptxswdToshxswd(mx.getXsdw(),orderBase.getMainId());
-        mx.setXsdw(websitSH.getWdId());
-        // 服务单位处理 售后网点处理
-        websitSH = publicService.ptshwdToshshwd(orderBase.getReceWebsitId(),orderBase.getMainId());
-        mx.setFwdw(websitSH.getWdId());
-        mx.setCzwd(websitSH.getWdId());
-
-
-        itfTblAssignMxUploadService.save(mx);
-    }
-
-    private void upPgmxid(OutJiasmToGreeUploadTaskList row, OutJiasmToGreeUploadTaskList sourceData, String newDykh) {
-        OrderPar orderPar = new OrderPar();
-        orderPar.setOrderNo(sourceData.getOrderNo());
-        orderPar.setPgid(newDykh);
-        orderPar.setId(row.getId());
-        getOrderProductMapper.upPgmxid(orderPar);
+        repairProduceDataUploadService.processRepairProduceDataUpload();
     }
 
-    @Transactional(rollbackFor = Exception.class)
-    public void generateItfTblAssignUploadTow(Brand brand, OutJiasmToGreeUploadTaskList row, OutJiasmToGreeUploadTaskList sourceData, String newDykh) {
-        // 过程名称,同步任务表中的id,同步任务表中的工单号,同步任务表中的需同步的表的主键,newDykh(pgid-主键),true
-        // 同步任务表中的id,同步任务表中的工单号,同步任务表中的需同步的表的主键,newDykh(pgid-主键)
-        // 661 - TL_PrePareSynDataby_assign_cj
-
-        // 提取工单数据
-        OrderBase orderBase = orderBaseService.lambdaQuery()
-                .eq(OrderBase::getId, sourceData.getOrderNo()).one();
-        // 删除工单更新被忽略
-        // 修改工单的pgid,pgguid
-        uppare(newDykh, orderBase);
-
-        // 如果无附件则忽略结算数据上传处理
-        if (checkFile(row, orderBase)) {
-            return ;
-        }
-        // 生成数据
-        if (generateData(brand, orderBase)) {
-            return ;
-        }
-        // 修改数据上传任务表中的状态   这里固定值 661
-        publicService.updateUploadTaskListStatus(row.getOrderNo(), row.getSynReqId(),1,661);
-        return ;
-    }
-
-    private boolean generateData(Brand brand, OrderBase orderBase) {
-        // 工单,采集表id,uuid, TL_fa_order_repair_detail_js
-        // j_syn_task_no 统一uuid
-        String j_syn_task_no = UUID.randomUUID().toString();
-        // 提取所有采集数据
-        List<OrderRepairDetail> ords = orderRepairDetailService.lambdaQuery()
-                .eq(OrderRepairDetail::getOrderBaseId, orderBase.getId()).list();
-        for (OrderRepairDetail item :ords){
-            // 状态:0=待采集,1=采集中,2=已采集,3=已完成
-            if (item.getStatus().equals(0)){
-                // 有一个待采全部不再处理
-                return true;
-            }
-            // 生成维修结算数据 itf_tbl_wxjs_jykt_upload
-            Long synReqId = generateJyktData(brand, orderBase, item);
-            // 生成维修结算2表数据
-            generateJyktDataTow(orderBase, item, synReqId,j_syn_task_no);
-            // 生成维修现象+维修现象2表数据 TL_fa_order_repair_fault_info_js
-            generateItfTblwxjsxxyyjyktAndTow(j_syn_task_no, item);
-            //  生成附件数据+附件数据2表数据 TL_fa_order_repair_annex_js
-            if (generateInstallCJDetailFileAndTow(orderBase, j_syn_task_no, item)) {
-                return true;
-            }
-            // 生成维修项目现象、维修项目现象2数据 TL_fa_order_repair_data_info_js
-            if (generateItfTblWxjsWxxmJyktUploadAndTow(orderBase, j_syn_task_no, item)){
-                return true;
-            }
-            // 生成配件、配件2表数据 TL_fa_order_repair_part_info_js
-            generateItfTblWxjsPjmxJyktUploadAndTow(orderBase, j_syn_task_no, item);
-        }
-        return false;
-    }
-
-    private boolean checkFile(OutJiasmToGreeUploadTaskList row, OrderBase orderBase) {
-        // 提取附件数据
-        List<OrderDetailFile> files = orderDetailFileService.lambdaQuery()
-                .eq(OrderDetailFile::getOrderBaseId, orderBase.getId()).list();
-        if (files !=null && files.size()>0){
-            // 检查附件的完整性 不完整取消上传
-            if (checkFiles(orderBase)) {
-                // 结束
-                return true;
-            }
-        } else {
-            // 修改数据上传任务表中的状态   这里固定值 661
-            publicService.updateUploadTaskListStatus(row.getOrderNo(), row.getSynReqId(),1,661);
-            return true;
-        }
-        return false;
-    }
-
-    private void uppare(String newDykh, OrderBase orderBase) {
-        if (StringUtils.isEmpty(orderBase.getPgid()) || StringUtils.isEmpty(orderBase.getPgguid())){
-            OrderBase up = new OrderBase();
-            up.setId(orderBase.getId());
-            if (StringUtils.isEmpty(orderBase.getPgid())){
-                up.setPgid(newDykh);
-                orderBase.setPgguid(newDykh);
-            }
-            if (StringUtils.isEmpty(orderBase.getPgguid())){
-                up.setPgguid(UUID.randomUUID().toString());
-                orderBase.setPgguid(up.getPgguid());
-            }
-            orderBaseService.updateById(up);
-        }
-    }
-
-    private void generateItfTblWxjsPjmxJyktUploadAndTow(OrderBase orderBase, String j_syn_task_no, OrderRepairDetail item) {
-        // 提取配置件数据
-        List<OrderRepairDetailReason> reasons =  orderRepairDetailReasonService.lambdaQuery()
-                .eq(OrderRepairDetailReason::getOrderRepairDetailId, item.getId()).list();
-        for (OrderRepairDetailReason rs:reasons){
-            // 生成配件数据
-            ItfTblWxjsPjmxJyktUpload pj = generateItfTblWxjsPjmxJyktUpload(orderBase, rs);
-            // 配件2表数据
-            generateItfTblwxjspjmxjykt(j_syn_task_no, pj);
-        }
-    }
-
-    @NotNull
-    private ItfTblWxjsPjmxJyktUpload generateItfTblWxjsPjmxJyktUpload(OrderBase orderBase, OrderRepairDetailReason rs) {
-        OrderPar request = new OrderPar();
-        request.setId(rs.getId());
-        ItfTblWxjsPjmxJyktUpload pj = reasonOrderRepairDetailMapper.getItfTblWxjsPjmxJyktUpload(request);
-        pj.setWorkerOrderNo(orderBase.getId());
-        pj.setSynStatus(44);
-        itfTblWxjsPjmxJyktUploadService.save(pj);
-        return pj;
-    }
-
-    private void generateItfTblwxjspjmxjykt(String j_syn_task_no, ItfTblWxjsPjmxJyktUpload pj) {
-        ItfTblwxjspjmxjykt pjt = new ItfTblwxjspjmxjykt();
-        MyBeanUtils.copyProperties(pj,pjt);
-        pjt.setSynTaskNo(j_syn_task_no);
-        pjt.setId(pj.getWxjsmxguid());
-        itfTblwxjspjmxjyktService.save(pjt);
-    }
-
-    private boolean generateItfTblWxjsWxxmJyktUploadAndTow(OrderBase orderBase, String j_syn_task_no, OrderRepairDetail item) {
-        // 提取维修项目数据
-        List<OrderRepairDetailItem> ordList =  orderRepairDetailItemService.lambdaQuery()
-                .eq(OrderRepairDetailItem::getOrderRepairDetailId, item.getId()).list();
-        for (OrderRepairDetailItem ord: ordList){
-            // 确保采集现象表数据存在数据
-            OrderRepairDetailReason ordr =  orderRepairDetailReasonService.lambdaQuery()
-                    .eq(OrderRepairDetailReason::getOrderRepairDetailId, ord.getOrderRepairDetailId())
-                    .one();
-            if (ordr == null){
-                // 有一个有问题全部不处理
-                return true;
-            }
-            // 修改wxjsguid与明细表数据相同
-            if (StringUtils.isEmpty(ord.getWxjsguid())){
-                OrderRepairDetailItem up = new OrderRepairDetailItem();
-                up.setId(ord.getId());
-                up.setWxjsguid(ordr.getWxjsguid());
-                ord.setWxjsguid(ordr.getWxjsguid());
-            }
-            // 生成维修项目现象数据
-            ItfTblWxjsWxxmJyktUpload wxxm = generateItfTblWxjsWxxmJyktUpload(orderBase, ord);
-            // 生成维修项目现象2表数据
-            generateItfTblwxjswxxmjykt(j_syn_task_no, wxxm);
-        }
-        return false;
-    }
-
-    @NotNull
-    private ItfTblWxjsWxxmJyktUpload generateItfTblWxjsWxxmJyktUpload(OrderBase orderBase, OrderRepairDetailItem ord) {
-        OrderPar request = new OrderPar();
-        request.setId(ord.getId());
-        ItfTblWxjsWxxmJyktUpload wxxm = reasonOrderRepairDetailMapper.getItfTblWxjsWxxmJyktUpload(request);
-        wxxm.setWorkerOrderNo(orderBase.getId());
-        wxxm.setSynStatus(44);
-        itfTblWxjsWxxmJyktUploadService.save(wxxm);
-        return wxxm;
-    }
-
-    private void generateItfTblwxjswxxmjykt(String j_syn_task_no, ItfTblWxjsWxxmJyktUpload wxxm) {
-        // 查看维修结算2表数据有无插入成功
-        ItfTblwxjsjykt jskt = itfTblwxjsjyktService.lambdaQuery()
-                .eq(ItfTblwxjsjykt::getSynTaskNo, j_syn_task_no).one();
-        if (jskt !=null){
-            ItfTblwxjswxxmjykt xmt = new ItfTblwxjswxxmjykt();
-            MyBeanUtils.copyProperties(wxxm,xmt);
-            xmt.setSynTaskNo(j_syn_task_no);
-            xmt.setId(wxxm.getWxjsguid());
-            itfTblwxjswxxmjyktService.save(xmt);
-        }
-    }
-
-    private boolean generateInstallCJDetailFileAndTow(OrderBase orderBase, String j_syn_task_no, OrderRepairDetail item) {
-        // 提取数据采集附件数据
-        List<OrderDetailFile> odfs =  orderDetailFileService.lambdaQuery()
-                .eq(OrderDetailFile::getOrderBaseId, orderBase.getId())
-                .eq(OrderDetailFile::getOrderDetailId, item.getId()).list();
-        for (OrderDetailFile file:odfs){
-            // path未准备上传被忽略 有一个有问题全部不处理
-            if (StringUtils.isEmpty(file.getFilePath())){
-                return true;
-            }
-            // 品牌方fileindex未获取上传被忽略
-            if (StringUtils.isEmpty(file.getBrandFileIndex())){
-                return true;
-            }
-            // 修改附件的fjguid
-            if (StringUtils.isEmpty(file.getFjguid())){
-                OrderDetailFile upf = new OrderDetailFile();
-                upf.setId(file.getId());
-                upf.setFjguid(UUID.randomUUID().toString());
-                orderDetailFileService.updateById(upf);
-                file.setFjguid(upf.getFjguid());
-            }
-            // 修改采集明细序号 wxmxguid
-            if (StringUtils.isEmpty(file.getPgwcmxid())){
-                OrderDetailFile upf = new OrderDetailFile();
-                upf.setId(file.getId());
-                upf.setPgwcmxid(UUID.randomUUID().toString());
-                orderDetailFileService.updateById(upf);
-                file.setPgwcmxid(upf.getPgwcmxid());
-            }
-            // 生成附件数据
-            ItfTblWxjsFjJyktUpload fj = generateInstallCJDetailFile(orderBase, file);
-            // 生成附件2表数据
-            generateInstallCJDetailFileTow(j_syn_task_no, fj);
-        }
-        return false;
-    }
-
-    private void generateInstallCJDetailFileTow(String j_syn_task_no, ItfTblWxjsFjJyktUpload fj) {
-        ItfTblwxjsfjjykt fjt = new ItfTblwxjsfjjykt();
-        MyBeanUtils.copyProperties(fj,fjt);
-        fjt.setSynTaskNo(j_syn_task_no);
-        fjt.setCreatedBy(fj.getCreatedBy());
-        fjt.setCreatedDate(fj.getCreatedDate());
-        fjt.setFjIndex(fj.getFjIndex());
-        fjt.setId(fj.getFjguid());
-        fjt.setLastModifiedBy(fj.getLastModifiedBy());
-        fjt.setLastModifiedDate(fj.getLastModifiedDate());
-        itfTblwxjsfjjyktService.save(fjt);
-    }
-
-    @NotNull
-    private ItfTblWxjsFjJyktUpload generateInstallCJDetailFile(OrderBase orderBase, OrderDetailFile file) {
-        InstallCJDetailFile request = new InstallCJDetailFile();
-        request.setOrderNo(orderBase.getId());
-        request.setId(file.getId());
-        ItfTblWxjsFjJyktUpload fj = fileOrderDetailMapper.getItfTblWxjsFjJyktUpload(request);
-        fj.setFjIndex(fj.getFaOrderRepairAnnexId());
-        fj.setSynStatus(44);
-        itfTblWxjsFjJyktUploadService.save(fj);
-        return fj;
-    }
-
-    private void generateItfTblwxjsxxyyjyktAndTow(String j_syn_task_no, OrderRepairDetail item) {
-        // 维修数据采集故障现象表
-        // 提取维修数据采集故障现象数据  数据采集明细表的所有id
-        List<OrderRepairDetailReason> reasons =  orderRepairDetailReasonService.lambdaQuery()
-                .eq(OrderRepairDetailReason::getOrderRepairDetailId, item.getId()).list();
-        for (OrderRepairDetailReason r : reasons){
-            // 父级故障现象数据忽略上传
-            if (StringUtils.isEmpty(r.getRepairBugParentId()) || StringUtils.isEmpty(r.getNumber())){
-                continue;
-            }
-            // 修改 维修现象主键、维修明细主键
-            upxxyyguid(r);
-            // 生成维修现象数据
-            ItfTblWxjsXxyyJyktUpload add = generateJyktUT(item, r);
-            // 生成维修现象2表数据
-            generateItfTblwxjsxxyyjykt(j_syn_task_no, add);
-        }
-    }
-
-    private void generateItfTblwxjsxxyyjykt(String j_syn_task_no, ItfTblWxjsXxyyJyktUpload add) {
-        // 查看维修结算2表数据有无插入成功
-        ItfTblwxjsjykt jskt = itfTblwxjsjyktService.lambdaQuery()
-                .eq(ItfTblwxjsjykt::getSynTaskNo, j_syn_task_no).one();
-        if (jskt !=null){
-            ItfTblwxjsxxyyjykt ad = new ItfTblwxjsxxyyjykt();
-            ad.setSynTaskNo(j_syn_task_no);
-            ad.setWorkerOrderNo(add.getWorkerOrderNo());
-            ad.setCjsj(add.getCjsj());
-            ad.setCreatedBy(add.getCreatedBy());
-            ad.setCreatedDate(add.getCreatedDate());
-            ad.setGzpx(add.getGzpx());
-            ad.setId(add.getWxjsguid());
-            ad.setLastModifiedBy(add.getLastModifiedBy());
-            ad.setLastModifiedDate(ad.getLastModifiedDate());
-            ad.setMshu(add.getMshu());
-            ad.setWxjsguid(add.getWxjsguid());
-            ad.setWxjsmxguid(add.getWxjsmxguid());
-            ad.setXxyyh(add.getXxyyh());
-            ad.setXxyyhmc(add.getXxyyhmc());
-            itfTblwxjsxxyyjyktService.save(ad);
-        }
-    }
-
-    private void generateJyktDataTow(OrderBase orderBase, OrderRepairDetail item, Long synReqId, String j_syn_task_no) {
-        OrderPar request = new OrderPar();
-        request.setOrderNo(orderBase.getId());
-        request.setId(item.getId());
-        request.setSynReqId(synReqId);
-        ItfTblwxjsjykt jsjy = wxjsJyktUploadMapper.getItfTblWxjsJykt(request);
-        jsjy.setSynTaskNo(j_syn_task_no);
-        // 省市等信息单独处理
-        setssxcInfo(jsjy);
-        itfTblwxjsjyktService.save(jsjy);
-    }
-
-    private void setssxcInfo(ItfTblwxjsjykt jsjy) {
-        List<BrandLbsRelate> br;
-        // 街道处理
-        if (StringUtils.isNotEmpty(jsjy.getXzhen())){
-            br = brandLbsRelateService.lambdaQuery()
-                    .eq(BrandLbsRelate::getLbsStreetId, jsjy.getXzhen())
-                    .eq(BrandLbsRelate::getDel,0)
-                    .isNotNull(BrandLbsRelate::getStreetId).list();
-            if (br !=null && br.size()>0){
-                jsjy.setXzhen(br.get(0).getStreetId());
-                jsjy.setXian(br.get(0).getAreaId());
-                jsjy.setCshi(br.get(0).getCityId());
-                jsjy.setSfen(br.get(0).getProvinceId());
-
-                Street street = streetService.lambdaQuery()
-                        .eq(Street::getStatus, 1)
-                        .eq(Street::getProvinceId, jsjy.getSfen())
-                        .eq(Street::getCityId, jsjy.getCshi())
-                        .eq(Street::getAreaId, jsjy.getXian())
-                        .eq(Street::getStreetId, jsjy.getXzhen()).one();
-                if (street !=null){
-                    jsjy.setXzhen(street.getStreet()); 
-                    jsjy.setSfen(street.getProvince());
-                    jsjy.setCshi(street.getCity());
-                    jsjy.setXian(street.getArea());
-                    return;
-                }
-            }
-        }
-
-        // 总部区必选
-        br = brandLbsRelateService.lambdaQuery()
-                .eq(BrandLbsRelate::getLbsDistrictId, jsjy.getXian())
-                .eq(BrandLbsRelate::getDel,0)
-                .isNotNull(BrandLbsRelate::getAreaId).list();
-        if (br !=null && br.size()>0){
-            jsjy.setXian(br.get(0).getAreaId());
-        }
-
-        Area area = areaService.lambdaQuery()
-                .eq(Area::getAreaId, jsjy.getXian()).one();
-        if (area !=null){
-            jsjy.setSfen(area.getProvince());
-            jsjy.setCshi(area.getCity());
-            jsjy.setXian(area.getArea());
-        }
-    }
-
-    private Long generateJyktData(Brand brand, OrderBase orderBase, OrderRepairDetail item) {
-        ItfTblWxjsJyktUpload jykt = generateJykt(brand, orderBase, item);
-        jykt.setSynStatus(44);
-        itfTblWxjsJyktUploadService.save(jykt);
-        return jykt.getSynReqId();
-    }
-
-    private boolean checkFiles(OrderBase orderBase) {
-        // 检查内机条码附件完整性
-        InstallCJDetailFile installCJDetailFile = new InstallCJDetailFile();
-        installCJDetailFile.setOrderNo(orderBase.getId());
-        installCJDetailFile.setType(1);
-        OrderDetailFile detailFiles = fileOrderDetailMapper.getIdReT(installCJDetailFile);
-        if (detailFiles !=null){
-            // 采集表中提取数据
-            OrderRepairDetail ord = orderRepairDetailService.lambdaQuery()
-                    .eq(OrderRepairDetail::getId,detailFiles.getOrderDetailId()).one();
-            if (!ord.getType().equals("INSIDE")){
-                // 清理附件表
-                OrderDetailFile del = new OrderDetailFile();
-                del.setId(detailFiles.getId());
-                orderDetailFileService.removeById(del);
-            } else {
-                // 内机不完整上传被忽略
-                return true;
-            }
-        }
-        // 检查外机条码附件完整性
-        installCJDetailFile.setType(2);
-        detailFiles = fileOrderDetailMapper.getIdReT(installCJDetailFile);
-        if (detailFiles !=null){
-            // 采集表中提取数据
-            OrderRepairDetail ord = orderRepairDetailService.lambdaQuery()
-                    .eq(OrderRepairDetail::getId,detailFiles.getOrderDetailId()).one();
-
-            if (!ord.getType().equals("OUT")){
-                // 清理附件表
-                OrderDetailFile del = new OrderDetailFile();
-                del.setId(detailFiles.getId());
-                orderDetailFileService.removeById(del);
-            } else {
-                // 外机不完整上传被忽略
-                return true;
-            }
-        }
-        // 再次判断完整性
-        List<OrderDetailFile> odfs = fileOrderDetailMapper.getIdRe(installCJDetailFile);
-        if (odfs !=null && odfs.size()>0){
-            // 不完整上传被忽略
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * 1: 生成维修工单主表数据
-     * 2:发短信评价
-     * 3:生成采集明细数据
-     *    维修数据采集故障现象表
-     *
-     *
-     *
-     */
-    @Transactional(rollbackFor = Exception.class)
-    public void generateItfTblAssignUpload(Brand brand, Map<String, List<SysDictRef>> sysDictRefXLMapXq,
-                                              Long taskId, OutJiasmToGreeUploadTaskList sourceData, String newDykh,
-                                              OutJiasmToGreeUploadTaskList row) {
-        // 提取工单数据
-        OrderBase orderBase = orderBaseService.lambdaQuery()
-                .eq(OrderBase::getId, sourceData.getOrderNo()).one();
-        // 删除工单更新被忽略
-        // 接收派工网点为空上传被忽略
-        if (StringUtils.isEmpty(orderBase.getReceWebsitId()) || orderBase.getReceWebsitId().equals("0")){
-            publicService.updateUploadTaskListStatus(row.getOrderNo(),row.getSynReqId(),1,66);
-            return ;
-        }
-        // 生成待同步的工单主表数据
-        getItfTblAssignUpload(brand, sysDictRefXLMapXq, taskId, sourceData, newDykh, orderBase);
-        // 生成短信评价发送数据
-        generateMessage(brand, sourceData, newDykh, orderBase);
-        // 检查附件完整性
-        if (checkFile(sourceData.getOrderNo(),row.getSynReqId())){
-            return ;
-        }
-        // 处理采集明细数据(生成维修结算+生成维修现象数据)    TL_PrePareSynDataby_fa_order_repair_detail
-        generateRepairDetailOrReason(brand, orderBase);
-
-
-        // 修改数据上传任务表中的状态   这里固定值 66
-        publicService.updateUploadTaskListStatus(row.getOrderNo(),row.getSynReqId(),1,66);
-        return ;
-    }
-
-
-    private Boolean checkFile(String orderNo, Long synReqId){
-        InstallCJDetailFile installCJDetailFile = new InstallCJDetailFile();
-        installCJDetailFile.setOrderNo(orderNo);
-        List<OrderDetailFile> detailFiles = fileOrderDetailMapper.getIdRe(installCJDetailFile);
-        if (detailFiles !=null && detailFiles.size()>0){
-            // 修改数据上传任务表中的状态
-            updateUploadTaskList(synReqId,9,"总部采集忽略上传或者广佛采集未得到格力图片ID");
-            return Boolean.TRUE;
-        }
-
-        return Boolean.FALSE;
-    }
-
-    private void generateRepairDetailOrReason(Brand brand, OrderBase orderBase) {
-        List<ItfTblWxjsJyktUpload> jykts = new ArrayList<>();
-        List<ItfTblWxjsXxyyJyktUpload>  jyktus = new ArrayList<>();
-        List<ItfTblWxjsFjJyktUpload> fjs = new ArrayList<>();
-        List<ItfTblWxjsWxxmJyktUpload> wxxms = new ArrayList<>();
-        List <ItfTblWxjsPjmxJyktUpload> pjs = new ArrayList<>();
-        List<ItfTblAssignFeeUpload> fees = new ArrayList<>();
-
-        // 提取采集的数据
-        List<OrderRepairDetail> orderRepairDetails = orderRepairDetailService.lambdaQuery()
-                .eq(OrderRepairDetail::getOrderBaseId, orderBase.getId())
-                .orderByAsc(OrderRepairDetail::getId)
-                .list();
-        if (orderRepairDetails !=null && orderRepairDetails.size()>0){
-            for (OrderRepairDetail detail :orderRepairDetails){
-                // status 状态:0=待采集,1=采集中,2=已采集,3=已完成
-                if (detail.getStatus().equals(0)){
-                   continue;
-                }
-                // 生成维修结算数据
-                jykts.add(generateJykt(brand, orderBase, detail));
-                // 生成维修现象数据   TL_PrePareSynDataby_fa_order_repair_fault_info
-                generateReason(jyktus, detail);
-                // 生成维修数据采集附件数据  TL_PrePareSynDataby_fa_order_repair_annex
-                generateFile(orderBase, detail, fjs);
-                // 生成维修项目现象、维修费用数据 TL_PrePareSynDataby_fa_order_repair_data_info
-                generateFee(orderBase, detail,brand, wxxms, fees);
-                // 生成配件数据  TL_PrePareSynDataby_fa_order_repair_part_info
-                generatePj(orderBase, pjs, detail);
-            }
-
-            if (jykts.size()>0){
-                itfTblWxjsJyktUploadService.saveBatch(jykts);
-                jykts.clear();
-            }
-            if (jyktus.size()>0){
-                itfTblWxjsXxyyJyktUploadService.saveBatch(jyktus);
-                jyktus.clear();
-            }
-            if (fjs.size()>0){
-                itfTblWxjsFjJyktUploadService.saveBatch(fjs);
-                fjs.clear();
-            }
-            if (wxxms.size()>0){
-                itfTblWxjsWxxmJyktUploadService.saveBatch(wxxms);
-                wxxms.clear();
-            }
-            if (fees.size()>0){
-                itfTblAssignFeeUploadService.saveBatch(fees);
-                fees.clear();
-            }
-            if (pjs.size()>0){
-                itfTblWxjsPjmxJyktUploadService.saveBatch(pjs);
-                pjs.clear();
-            }
-        }
-    }
-
-    private void generatePj(OrderBase orderBase, List<ItfTblWxjsPjmxJyktUpload> pjs, OrderRepairDetail detail) {
-        // 提取配置件数据
-        List<OrderRepairDetailReason> reasons =  orderRepairDetailReasonService.lambdaQuery()
-                .eq(OrderRepairDetailReason::getOrderRepairDetailId, detail.getId()).list();
-        for (OrderRepairDetailReason rs:reasons){
-            OrderPar request = new OrderPar();
-            request.setId(rs.getId());
-            ItfTblWxjsPjmxJyktUpload pj = reasonOrderRepairDetailMapper.getItfTblWxjsPjmxJyktUpload(request);
-            pj.setWorkerOrderNo(orderBase.getId());
-            pjs.add(pj);
-        }
-    }
-
-    private void generateFee(OrderBase orderBase, OrderRepairDetail detail,Brand brand,
-                                List<ItfTblWxjsWxxmJyktUpload> wxxms,
-                                List<ItfTblAssignFeeUpload> fees){
-        // 提取维修项目数据
-        List<OrderRepairDetailItem> ords =  orderRepairDetailItemService.lambdaQuery()
-                .eq(OrderRepairDetailItem::getOrderRepairDetailId, detail.getId()).list();
-        for (OrderRepairDetailItem ord: ords){
-            // 确保采集现象表数据存在数据
-            OrderRepairDetailReason ordr =  orderRepairDetailReasonService.lambdaQuery()
-                    .eq(OrderRepairDetailReason::getOrderRepairDetailId, ord.getOrderRepairDetailId())
-                    .one();
-            if (ordr == null){
-                return ;
-            }
-            // 修改wxjsguid与明细表数据相同
-            if (StringUtils.isEmpty(ord.getWxjsguid())){
-                OrderRepairDetailItem up = new OrderRepairDetailItem();
-                up.setId(ord.getId());
-                up.setWxjsguid(ordr.getWxjsguid());
-                ord.setWxjsguid(ordr.getWxjsguid());
-            }
-            // 生成维修项目现象数据
-            OrderPar request = new OrderPar();
-            request.setId(ord.getId());
-            ItfTblWxjsWxxmJyktUpload wxxm = reasonOrderRepairDetailMapper.getItfTblWxjsWxxmJyktUpload(request);
-            wxxm.setWorkerOrderNo(orderBase.getId());
-            wxxms.add(wxxm);
-
-            // 生成维修费用数据
-            request.setBrandId(brand.getBrandId());
-            request.setMainId(orderBase.getMainId());
-            ItfTblAssignFeeUpload fee = reasonOrderRepairDetailMapper.getItfTblAssignFeeUpload(request);
-            fee.setWorkerOrderNo(orderBase.getId());
-            fee.setPgid(Long.valueOf(orderBase.getPgid()));
-            fees.add(fee);
-        }
-    }
-
-    private void generateFile(OrderBase orderBase, OrderRepairDetail detail, List<ItfTblWxjsFjJyktUpload> fjs){
-        // 提取数据采集附件数据
-        List<OrderDetailFile> odfs =  orderDetailFileService.lambdaQuery()
-                .eq(OrderDetailFile::getOrderBaseId,orderBase.getId())
-                .eq(OrderDetailFile::getOrderDetailId, detail.getId()).list();
-        for (OrderDetailFile file:odfs){
-            // 工单号, file的id即附件表的id,uuid统一值
-            // path未准备上传被忽略
-            if (StringUtils.isEmpty(file.getFilePath())){
-                continue;
-            }
-            // 品牌方fileindex未获取上传被忽略
-            if (StringUtils.isEmpty(file.getBrandFileIndex())){
-                continue;
-            }
-            // 修改附件的fjguid
-            if (StringUtils.isEmpty(file.getFjguid())){
-                OrderDetailFile upf = new OrderDetailFile();
-                upf.setId(file.getId());
-                upf.setFjguid(UUID.randomUUID().toString());
-                orderDetailFileService.updateById(upf);
-                file.setFjguid(upf.getFjguid());
-            }
-            // 修改采集明细序号 wxmxguid
-            if (StringUtils.isEmpty(file.getPgwcmxid())){
-                OrderDetailFile upf = new OrderDetailFile();
-                upf.setId(file.getId());
-                upf.setPgwcmxid(UUID.randomUUID().toString());
-                orderDetailFileService.updateById(upf);
-                file.setPgwcmxid(upf.getPgwcmxid());
-            }
-
-            // 生成附件数据
-            InstallCJDetailFile request = new InstallCJDetailFile();
-            request.setOrderNo(orderBase.getId());
-            request.setId(file.getId());
-            ItfTblWxjsFjJyktUpload fj = fileOrderDetailMapper.getItfTblWxjsFjJyktUpload(request);
-            fjs.add(fj);
-        }
-    }
-
-
-
-
-
-
-
-    private void generateReason(List<ItfTblWxjsXxyyJyktUpload> jyktus, OrderRepairDetail detail) {
-        // 提取维修数据采集故障现象数据  数据采集明细表的所有id
-        List<OrderRepairDetailReason> reasons =  orderRepairDetailReasonService.lambdaQuery()
-                .eq(OrderRepairDetailReason::getOrderRepairDetailId, detail.getId()).list();
-        for (OrderRepairDetailReason r : reasons){
-            if (StringUtils.isEmpty(r.getRepairBugParentId()) || StringUtils.isEmpty(r.getNumber())){
-                continue;
-            }
-            // 修改 维修现象主键、维修明细主键
-            upxxyyguid(r);
-            // 生成维修现象数据
-            generateJyktU(jyktus, detail, r);
-        }
-    }
-
-    private void generateJyktU(List<ItfTblWxjsXxyyJyktUpload> jyktus, OrderRepairDetail detail, OrderRepairDetailReason r) {
-        ItfTblWxjsXxyyJyktUpload add = new ItfTblWxjsXxyyJyktUpload();
-        add.setWorkerOrderNo(detail.getOrderBaseId());
-        add.setFaOrderRepairFaultInfoId(Integer.valueOf(String.valueOf(r.getCreateTime().getTime())));
-        add.setXxyyguid(r.getXxyyguid());
-        add.setCreatedBy("guangfo");
-        add.setCreatedDate(r.getCreateTime());
-        add.setLastModifiedBy("guangfo");
-        add.setLastModifiedDate(r.getUpdateTime());
-        add.setWxjsguid(detail.getBrandWxjsguid());
-        add.setXxyyh(r.getNumber());
-        if (StringUtils.isNotEmpty(r.getRemark())){
-            add.setMshu(r.getRemark());
-        } else if (StringUtils.isNotEmpty(r.getName())){
-            add.setMshu(r.getName());
-        }
-        add.setWxjsmxguid(r.getWxjsguid());
-        add.setCjsj(r.getCreateTime());
-        add.setXxyyhmc(r.getName());
-        jyktus.add(add);
-    }
-
-    private ItfTblWxjsXxyyJyktUpload generateJyktUT(OrderRepairDetail detail, OrderRepairDetailReason r) {
-        ItfTblWxjsXxyyJyktUpload add = new ItfTblWxjsXxyyJyktUpload();
-        add.setWorkerOrderNo(detail.getOrderBaseId());
-        add.setFaOrderRepairFaultInfoId(Integer.valueOf(String.valueOf(r.getCreateTime().getTime())));
-        add.setXxyyguid(r.getXxyyguid());
-        add.setCreatedBy("guangfo");
-        add.setCreatedDate(r.getCreateTime());
-        add.setLastModifiedBy("guangfo");
-        add.setLastModifiedDate(r.getUpdateTime());
-        add.setWxjsguid(detail.getBrandWxjsguid());
-        add.setXxyyh(r.getNumber());
-        if (StringUtils.isNotEmpty(r.getRemark())){
-            add.setMshu(r.getRemark());
-        } else if (StringUtils.isNotEmpty(r.getName())){
-            add.setMshu(r.getName());
-        }
-        add.setWxjsmxguid(r.getWxjsguid());
-        add.setCjsj(r.getCreateTime());
-        add.setXxyyhmc(r.getName());
-        add.setSynStatus(44);
-        itfTblWxjsXxyyJyktUploadService.save(add);
-        return add;
-    }
-
-    private void upxxyyguid(OrderRepairDetailReason r) {
-        OrderRepairDetailReason up = new OrderRepairDetailReason();
-        up.setId(r.getId());
-        if (StringUtils.isEmpty(r.getXxyyguid())){
-            up.setXxyyguid(UUID.randomUUID().toString());
-            r.setXxyyguid(up.getXxyyguid());
-        }
-        if (StringUtils.isEmpty(r.getWxjsguid())){
-            up.setWxjsguid(UUID.randomUUID().toString());
-            r.setWxjsguid(up.getWxjsguid());
-        }
-        orderRepairDetailReasonService.updateById(up);
-    }
-
-    private ItfTblWxjsJyktUpload generateJykt(Brand brand, OrderBase orderBase, OrderRepairDetail detail) {
-        WebsitSH websitSH = new WebsitSH();
-
-        // 修改序采集单内的序
-        upOrderRepairDetail(orderBase);
-
-        // 格力总部数据采集主键为空时代表为公司采集的数据,未赋值时账值 wxjsguid = brandWxjsguid
-        // 格力总部数据采集主键为空时代表为公司采集的数据,填写UUID
-        upBrandWxjsguid(detail);
-        // 采集明细表全表更新pgid = brand_pgid
-        upBrandPgid(orderBase);
-        // 生成维修结算数据
-        OrderPar request = new OrderPar();
-        request.setOrderNo(orderBase.getId());
-        request.setId(detail.getId());
-        request.setBrandId(brand.getBrandId());
-        ItfTblWxjsJyktUpload jykt = detailOrderRepairMapper.getItfTblWxjsJyktUpload(request);
-        // 售后网点处理
-        websitSH = publicService.ptshwdToshshwd(orderBase.getWebsitId(),orderBase.getMainId());
-        jykt.setAzwdbh(websitSH.getWdId());
-        jykt.setAzwdmc(websitSH.getWdmc());
-        // 维修网点即售后网点处理
-        jykt.setWxwdno(websitSH.getWdId());
-        jykt.setWxwdmc(websitSH.getWdmc());
-        // 提取安装师傅的账号信息
-        jykt.setCzrid(String.valueOf(publicService.getBrandWorkerId(orderBase.getWorkerId(),websitSH.getWdId(),brand.getBrandId(),orderBase.getWebsitId())));
-
-        // 结算网点编号即售后网点处理
-        websitSH = publicService.ptshwdToshshwd(jykt.getJswdno(),orderBase.getMainId());
-        jykt.setJswdno(websitSH.getWdId());
-        jykt.setJswdmc(websitSH.getWdmc());
-
-        jykt.setBxrq(orderBase.getCreateTime());
-        if (orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G8.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G9.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G10.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G11.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G12.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G13.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G14.getCode())){
-            jykt.setStat(1120L);
-        } else {
-            jykt.setStat(1100L);
-        }
-        return jykt;
-    }
-
-    private void upOrderRepairDetail(OrderBase orderBase) {
-        List<OrderRepairDetail> upList = new ArrayList<>();
-        List<OrderRepairDetail> detaillist = orderRepairDetailService.lambdaQuery()
-                .eq(OrderRepairDetail::getOrderBaseId, orderBase.getId())
-                .orderByAsc(OrderRepairDetail::getCreateTime).list();
-        // 找出最大的序 默认值为0
-        int outId=0;
-        if (detaillist!=null && detaillist.size()>0){
-            for (OrderRepairDetail item:detaillist){
-                if (outId<item.getOutId()){
-                    outId = item.getOutId();
-                }
-            }
-            for (OrderRepairDetail ite:detaillist){
-                if (ite.getOutId() == 0){
-                    outId++;
-                    OrderRepairDetail n = new OrderRepairDetail();
-                    n.setId(ite.getId());
-                    n.setOutId(outId);
-                    upList.add(n);
-                }
-            }
-            // 修改序
-            if (upList.size()>0){
-                orderRepairDetailService.updateBatchById(upList);
-                upList.clear();
-            }
-            detaillist.clear();
-        }
-    }
-
-    private void upBrandPgid(OrderBase orderBase) {
-        OrderPar request = new OrderPar();
-        request.setOrderNo(orderBase.getPgid());
-        request.setPgid(orderBase.getPgid());
-
-        detailOrderRepairMapper.updatePgid(request);
-    }
-
-    private void upBrandWxjsguid(OrderRepairDetail detail) {
-        if (StringUtils.isEmpty(detail.getBrandWxjsguid())){
-            // 修改uuid
-            OrderRepairDetail up = new OrderRepairDetail();
-            up.setId(detail.getId());
-            up.setBrandWxjsguid(UUID.randomUUID().toString());
-            orderRepairDetailService.updateById(up);
-            detail.setBrandWxjsguid(up.getBrandWxjsguid());
-        }
-    }
-
-    private void updateUploadTaskList(Long synReqId,Integer synStatus,String msg) {
-        OutJiasmToGreeUploadTaskList upoutgultl = new OutJiasmToGreeUploadTaskList();
-        upoutgultl.setSynReqId(synReqId);
-        upoutgultl.setSynStatus(synStatus);
-        upoutgultl.setSynTime(new Date());
-        upoutgultl.setSynErrMsg(msg);
-        outJiasmToGreeUploadTaskListService.updateById(upoutgultl);
-    }
-
-    private void getItfTblAssignUpload(Brand brand, Map<String, List<SysDictRef>> sysDictRefXLMapXq, Long taskId, OutJiasmToGreeUploadTaskList sourceData, String newDykh, OrderBase orderBase) {
-        // 同步工单的pgid
-        upOrderBasePgid(sourceData, orderBase, newDykh);
-        // 同步工单的pguuid
-        upOrderBasePgguid(sourceData, orderBase);
-        // 同步维修工单产品信息 pgid
-        upOrderProduct(sourceData, newDykh);
-        // 同步维修工单操作日志pgid
-        uporderRepairOperatingLogpgid(sourceData, newDykh);
-        // 同步预约改约-总部短信发送请求fjid
-        upFaGreeSmsFjid(sourceData, newDykh);
-        // 同步派服务人员-短信发送请求fjid
-        upFaGreeSmsWorker(sourceData, newDykh);
-
-        // 数据写入待同步-维修工单上传记录表
-        OrderPar orderPar = new OrderPar();
-        orderPar.setBrandId(brand.getBrandId());
-        orderPar.setOrderNo(sourceData.getOrderNo());
-        ItfTblAssignUpload itass = gdOrderBaseMapper.getItfTblAssignUpload(orderPar);
-
-        // 信息渠道id 取的是info_channel 有问题
-        itass.setUploadTaskSynReqId(taskId);
-        // 部分参数单独处理
-        getpreparOrderPar(sysDictRefXLMapXq, orderBase, itass, sourceData.getOrderNo(),brand);
-        // 保存
-        itfTblAssignUploadService.save(itass);
-    }
-
-    private void upOrderProduct(OutJiasmToGreeUploadTaskList sourceData, String newDykh) {
-        OrderPar orderPar = new OrderPar();
-        orderPar.setOrderNo(sourceData.getOrderNo());
-        orderPar.setPgid(newDykh);
-        getOrderProductMapper.upPgid(orderPar);
-    }
-
-    private void upFaGreeSmsWorker(OutJiasmToGreeUploadTaskList sourceData, String newDykh) {
-        FaGreeSmsWorker up = new FaGreeSmsWorker();
-        up.setFjid(newDykh);
-        QueryWrapper upWrapper = new QueryWrapper<FaGreeSmsWorker>()
-                .eq("worker_order_no", sourceData.getOrderNo())
-                .eq("azorwx",2)
-                .and(wrapper->wrapper.isNull("fjid")
-                        .or().eq("fjid","").or().eq("fjid",0));
-        faGreeSmsWorkerService.update(up,upWrapper);
-    }
-
-    private void generateMessage(Brand brand, OutJiasmToGreeUploadTaskList sourceData, String newDykh, OrderBase orderBase) {
-        WebsitSH websitSH = new WebsitSH();
-
-        if ((orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G8.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G9.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G10.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G11.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G14.getCode())) &&
-                        !(orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G1.getCode()) ||
-                                orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G2.getCode()) ||
-                                orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G3.getCode()) ||
-                                orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G4.getCode()) ||
-                                orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G5.getCode()) ||
-                                orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G6.getCode()))){
-            // 不上传总部的工单报完工后全部发评价
-            String pgid="";
-            if (StringUtils.isEmpty(orderBase.getPgid()) || orderBase.getPgid().equals("0")){
-                pgid= newDykh;
-            } else {
-                pgid = orderBase.getPgid();
-            }
-
-            List<ItfMessagehuifangentity> imhs = itfMessagehuifangentityService.lambdaQuery()
-                    .eq(ItfMessagehuifangentity::getOrderBaseId, orderBase.getId()).list();
-
-            // 这里为自建工单,是不会走这里的
-            if (pgid.equals("0")){
-                if (imhs==null || imhs.size()<1){
-                    // 生成短信数据
-                    OrderPar orderPar = new OrderPar();
-                    orderPar.setBrandId(brand.getBrandId());
-                    orderPar.setOrderNo(sourceData.getOrderNo());
-                    ItfMessagehuifangentity addms = gdOrderBaseMapper.getItfMessagehuifangentity(orderPar);
-                    if (addms==null){
-                        return;
-                    }
-                    // 售后网点处理 fjwd
-                    websitSH = publicService.ptshwdToshshwd(addms.getFjwd(), orderBase.getMainId());
-                    addms.setFjwd(websitSH.getWdId());
-
-                    String id = UUID.randomUUID().toString();
-                    if (id.length()>32){
-                        addms.setSynTaskNo(id.substring(0,32));
-                    } else {
-                        addms.setSynTaskNo(id);
-                    }
-
-                    addms.setFsma(publicService.getfsma(addms.getSjid()));
-                    addms.setFsnr("尊敬的用户:请对本次服务评价:满意回复1;一般回复2;不满意回复3。并注明原因!关注官微“格力售后服务”,为您提供更优质服务!");
-                    addms.setDxguid(UUID.randomUUID().toString());
-                    addms.setSjid(orderBase.getUserMobile().replace(" ",""));
-                    publicService.addItfMessagehuifangentity(addms,orderBase.getOrderType(),6);
-                }
-            } else {
-                OrderRepair or = orderRepairService.lambdaQuery()
-                        .eq(OrderRepair::getOrderBaseId, orderBase.getId()).one();
-
-                /**
-                 * 1:短信发送改为一单只发一次
-                 * 2:根据总部规则 特殊用户或投诉工单不发送评价短信
-                 * 3:增加发送评价短信时判断报完工日期与当前日期小于7天才发
-                 */
-                // 2-FIRST,5-特级投诉
-                if ((imhs !=null || imhs.size()>0) ||
-                        (orderBase.getComplaint().equals("FIRST") || orderBase.getComplaint().equals("SUPER")) ||
-                        (orderBase.getUserAttr().equals("特殊用户1") ||
-                                orderBase.getUserAttr().equals("特殊用户2") ||
-                                orderBase.getUserAttr().equals("特殊用户3")) ||
-                        (orderBase.getVip().equals("VIP1") ||
-                                orderBase.getVip().equals("VIP2") ||
-                                orderBase.getVip().equals("VIP3") ||
-                                orderBase.getVip().equals("VIP4")) ||
-                        (or.getDemandSmallTypeName().indexOf("巡检")>=0 ||
-                                or.getDemandSmallTypeName().indexOf("巡视")>=0 ||
-                                or.getDemandSmallTypeName().indexOf("清洗保养")>=0)) {
-                    // 什么都不做
-                } else {
-                    if (imhs==null || imhs.size()<1){
-                        // 生成短信数据
-                        OrderPar orderPar = new OrderPar();
-                        orderPar.setBrandId(brand.getBrandId());
-                        orderPar.setOrderNo(sourceData.getOrderNo());
-                        ItfMessagehuifangentity addms = gdOrderBaseMapper.getItfMessagehuifangentityT(orderPar);
-                        if (addms==null){
-                            return;
-                        }
-
-                        // 售后网点处理 fjwd
-                        websitSH = publicService.ptshwdToshshwd(addms.getFjwd(), orderBase.getMainId());
-                        addms.setFjwd(websitSH.getWdId());
-
-                        String id = UUID.randomUUID().toString();
-                        if (id.length()>32){
-                            addms.setSynTaskNo(id.substring(0,32));
-                        } else {
-                            addms.setSynTaskNo(id);
-                        }
-
-                        addms.setFsma(publicService.getfsma(addms.getSjid()));
-                        addms.setFsnr("尊敬的用户:请对本次服务评价:满意回复1;一般回复2;不满意回复3。并注明原因!关注官微“格力售后服务”,为您提供更优质服务!");
-                        addms.setDxguid(UUID.randomUUID().toString());
-                        publicService.addItfMessagehuifangentity(addms,orderBase.getOrderType(),6);
-                    }
-                }
-            }
-        }
-    }
-
-
-
-    private void getpreparOrderPar(Map<String, List<SysDictRef>> sysDictRefXLMapXq, OrderBase orderBase,
-                                   ItfTblAssignUpload itass, String orderNo, Brand brand) {
-        WebsitSH websitSH = new WebsitSH();
-        // 售后网点处理 wxwdno
-        websitSH = publicService.ptshwdToshshwd(itass.getWxwdno(), orderBase.getMainId());
-
-        itass.setWxwdno(websitSH.getWdId());
-        itass.setWxwdmc(websitSH.getWdmc());
-        // 操作网点处理 即维修网点
-        itass.setZjczwd(websitSH.getWdId());
-        if (StringUtils.isNotEmpty(websitSH.getBrandSysWebsitNumber())){
-            itass.setZjczwdxtbh(Long.valueOf(websitSH.getBrandSysWebsitNumber()));
-        }
-        itass.setCjwdno(websitSH.getWdId());
-        // 接收派工网点也可认为是售后网点处理
-        itass.setXjwdno(websitSH.getWdId());
-        itass.setXjwdmc(websitSH.getWdmc());
-        // 提取安装师傅的账号信息
-        itass.setWxrenid(publicService.getBrandWorkerId(orderBase.getWorkerId(),websitSH.getWdId(),brand.getBrandId(),orderBase.getWebsitId()));
-
-        // 销售单位处理 xsdwno
-        websitSH = publicService.ptxswdToshxswd(itass.getXswdno(), orderBase.getMainId());
-        itass.setXswdno(websitSH.getWdId());
-        itass.setXswdmc(websitSH.getWdmc());
-
-        // 所属区域处理
-        BrandWebsit bb = brandWebsitService.lambdaQuery()
-                .eq(BrandWebsit::getGroupCompanyId,brand.getBrandId())
-                .eq(BrandWebsit::getBrandWebsitNumber,itass.getXjwdno()).one();
-        itass.setSsqy("");
-        if (bb !=null){
-            itass.setSsqy(bb.getBelongCompany());
-        }
-
-        //维修总数量放在了工单子信息总数量中,感觉有问题
-        itass.setWxshul(orderBase.getTotalNum());
-        // 省市等信息单独处理
-        setssxz(itass);
-        // 同步 用户预约网点操作时间  看预约改约表内有无记录
-        setYhyyczsj(itass, orderNo);
-
-        if (orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G1.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G2.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G4.getCode())){
-            itass.setExtjson1("0");
-        } else {
-            itass.setExtjson1("1");
-        }
-
-        OrderRepair or = orderRepairService.lambdaQuery()
-                .eq(OrderRepair::getOrderBaseId,orderNo).one();
-        if (or == null ){
-            return;
-        }
-        itass.setCxyzm(or.getCxyzm());
-        itass.setChaoshiqe(or.getChaoshiqe());
-        itass.setZbby(or.getZbby());
-        itass.setZptype(or.getZptype());
-        itass.setYhif(or.getYhif());
-        itass.setAuthState(orderBase.getOrderStatus());
-        itass.setTsdengji(or.getTsdengji());
-        if (StringUtils.isNotEmpty(or.getDemandSmallTypeId()) &&
-                sysDictRefXLMapXq.containsKey(or.getDemandSmallTypeId())){
-            itass.setXqxiaolei(sysDictRefXLMapXq.get(or.getDemandSmallTypeId()).get(0).getRefDictCode());
-        } else {
-            itass.setXqxiaolei(or.getDemandSmallTypeId());
-        }
-    }
-
-    private void setYhyyczsj(ItfTblAssignUpload itass, String orderNo) {
-        List<OrderReAppointment> yys =  orderReAppointmentService.lambdaQuery()
-                .eq(OrderReAppointment::getOrderBaseId, orderNo)
-                .eq(OrderReAppointment::getFlag,0)
-                .orderByDesc(OrderReAppointment::getCreateTime).list();
-        if (!CollectionUtils.isEmpty(yys)){
-            itass.setYhyyczsj(yys.get(0).getCreateTime());
-        } else {
-            List<OrderReAppointment> yyst =  orderReAppointmentService.lambdaQuery()
-                    .eq(OrderReAppointment::getOrderBaseId, orderNo)
-                    .eq(OrderReAppointment::getFlag,1)
-                    .orderByDesc(OrderReAppointment::getCreateTime).list();
-            if (!CollectionUtils.isEmpty(yyst)){
-                itass.setYhyyczsj(yyst.get(0).getCreateTime());
-            }
-        }
-    }
-
-    private void setssxz(ItfTblAssignUpload itass){
-        List<BrandLbsRelate> br;
-        // 街道处理
-        if (StringUtils.isNotEmpty(itass.getXzhenid())){
-            br = brandLbsRelateService.lambdaQuery()
-                    .eq(BrandLbsRelate::getLbsStreetId, itass.getXzhenid())
-                    .eq(BrandLbsRelate::getDel,0)
-                    .isNotNull(BrandLbsRelate::getStreetId).list();
-            if (br !=null && br.size()>0){
-                itass.setXzhenid(br.get(0).getStreetId());
-
-                Street street = streetService.lambdaQuery()
-                        .eq(Street::getStatus, 1)
-                        .eq(Street::getProvince, itass.getSfenid())
-                        .eq(Street::getCity, itass.getCshiid())
-                        .eq(Street::getArea, itass.getXianid())
-                        .eq(Street::getStreet, itass.getXzhenid()).one();
-                if (street !=null){
-                    itass.setXzhen(street.getStreet());
-                    itass.setSfenid(Long.valueOf(street.getProvinceId()));
-                    itass.setCshiid(Long.valueOf(street.getCityId()));
-                    itass.setXianid(Long.valueOf(street.getAreaId()));
-
-                    itass.setSfen(street.getProvince());
-                    itass.setCshi(street.getCity());
-                    itass.setXian(street.getArea());
-                    return;
-                }
-            }
-        }
-
-        //省
-        br = brandLbsRelateService.lambdaQuery()
-                .eq(BrandLbsRelate::getLbsProvinceId, itass.getSfenid())
-                .eq(BrandLbsRelate::getDel,0)
-                .isNotNull(BrandLbsRelate::getProvinceId).list();
-        if (br !=null && br.size()>0){
-            itass.setSfenid(Long.valueOf(br.get(0).getProvinceId()));
-        }
-        //市
-        br = brandLbsRelateService.lambdaQuery()
-                .eq(BrandLbsRelate::getLbsCityId, itass.getCshiid())
-                .eq(BrandLbsRelate::getDel,0)
-                .isNotNull(BrandLbsRelate::getCityId).list();
-        if (br !=null && br.size()>0){
-            itass.setCshiid(Long.valueOf(br.get(0).getCityId()));
-        }
-        //区
-        br = brandLbsRelateService.lambdaQuery()
-                .eq(BrandLbsRelate::getLbsDistrictId, itass.getXianid())
-                .eq(BrandLbsRelate::getDel,0)
-                .isNotNull(BrandLbsRelate::getAreaId).list();
-        if (br !=null && br.size()>0){
-            itass.setXianid(Long.valueOf(br.get(0).getAreaId()));
-        }
-
-        // 总部区必选
-        Area area = areaService.lambdaQuery()
-                .eq(Area::getAreaId, itass.getXianid()).one();
-        Street st = new Street();
-        if (area !=null){
-            itass.setSfen(area.getProvince());
-            itass.setCshi(area.getCity());
-            itass.setXian(area.getArea());
-        }
-    }
-
-    private String getpgid(Token token, int uploadTaskType, String srcTabNameForGreekey, String greekeyGetMode, OutJiasmToGreeUploadTaskList row, String newDykh) throws Exception {
-        // 获取方式 Qry=从控制表获取 Ins=插入表获取自增列
-        String greeKey;
-        // 这里仅67满足
-        if (greekeyGetMode != null && greekeyGetMode.equalsIgnoreCase("Ins")) {
-            Long pgid = null;
-            if (uploadTaskType == 67) {
-                // 提取工单数据 取pgid
-                OrderBase orderBase = orderBaseService.lambdaQuery()
-                        .eq(OrderBase::getId, row.getOrderNo()).one();
-                if (StringUtils.isNotEmpty(orderBase.getPgid())){
-                    OrderPar request = new OrderPar();
-                    request.setPgid(orderBase.getPgid());
-                    request.setOrderNo(row.getOrderNo());
-                    repairLogMapper.upRepairLogPgid(request);
-                    pgid = Long.valueOf(orderBase.getPgid());
-                }
-            }
-            if (pgid == null || pgid.toString().equals("0")) {
-                throw new Exception("[工单号=" + row.getOrderNo() + "]的pgid为0,暂不传输!");
-            }
-
-            // TL_get_fa_order_repair_operating_log_fkid
-            // 查看日志表对应ID的的fikd 值 荐存在直接返回该值无时通过网点接口做取
-            OrderRepairOperatingLog rlog = orderRepairOperatingLogService.lambdaQuery()
-                    .eq(OrderRepairOperatingLog::getId,row.getId()).one();
-            if (StringUtils.isNotEmpty(rlog.getFkid())){
-                newDykh = rlog.getFkid();
-            } else {
-                while (true) {
-                    String serviceName = DataUtil.fromDbName2ServiceName(srcTabNameForGreekey);
-                    String addDataUrl = baseurl + serviceName + "/add";
-                    JSONResult addResult = HttpUtil.httpRequestWithToken(addDataUrl, "POST",
-                            JSON.toJSONStringWithDateFormat(
-                                    genDataMapFromSource(pgid, row.getTaskExtraInfo(), uploadTaskType),
-                                    "yyyy-MM-dd HH:mm:ss"),
-                            token);
-                    if (!addResult.isOK()) {
-                        throw new Exception(
-                                "新增数据获取主键失败[" + serviceName + "],[" + addResult.getMsg() + "]");
-                    } else {
-                        if (addResult.getData() == null || addResult.getData().equals("")) {
-                            throw new Exception("新增数据获取主键返回空[" + serviceName + "]");
-                        } else {
-                            newDykh = addResult.getData().toString();
-                        }
-                    }
-
-                    // TL_get_fa_order_repair_operating_log_fkid_flag
-                    OrderPar request = new OrderPar();
-                    request.setPgid(newDykh);
-                    OrderRepairOperatingLog r = repairLogMapper.getFkid(request);
-                    if(r != null){
-                        log.info("fkid在总部重复[" + newDykh + "]");
-                    }else {
-                        break;
-                    }
-                }
-            }
-        } else if (uploadTaskType == 66 || uploadTaskType == 661) {
-            // pgid从主表中获取
-            OrderBase ob = orderBaseService.lambdaQuery()
-                    .eq(OrderBase::getId, row.getOrderNo()).one();
-            greeKey = ob.getPgid();
-            if (greeKey == null || greeKey.trim().equals("") || greeKey.trim().equals("0")) {
-                Token token4Pgid = tokenCenter.getCurrentToken4Pgid();
-                String url = baseurl4pgid + "api/repairEnter/getPgidSerial";
-                JSONObject jsonObject = HttpUtil.httpRequestGetPgid(url, "POST", token4Pgid, null,
-                        null);
-                if (jsonObject.getString("statusCode").equals("200")) {
-                    String data = jsonObject.getString("data");
-                    newDykh = data;
-                } else {
-                    String message = jsonObject.getString("message");
-                    if (message == null || message.trim().length() == 0) {
-                        message = "取pgid失败";
-                    }
-                    throw new Exception(message);
-                }
-            } else {
-                newDykh = greeKey;
-            }
-        } else if (uploadTaskType == 68) {
-            // 从工单机型表中取对应ID的 pgmxid
-            OrderProduct op = orderProductService.lambdaQuery()
-                    .eq(OrderProduct::getOrderBaseId, row.getOrderNo())
-                    .eq(OrderProduct::getId, row.getId()).one();
-            greeKey = op.getPgmxid();
-            if (greeKey == null || greeKey.trim().equals("") || greeKey.trim().equals("0")) {
-                Token token4Pgid = tokenCenter.getCurrentToken4Pgid();
-                String url = baseurl4pgid + "api/repairEnter/getMxIdserial";
-                JSONObject jsonObject = HttpUtil.httpRequestGetPgid(url, "POST", token4Pgid, null,
-                        null);
-                if (jsonObject.getString("statusCode").equals("200")) {
-                    String data = jsonObject.getString("data");
-                    newDykh = data;
-                } else {
-                    String message = jsonObject.getString("message");
-                    if (message == null || message.trim().length() == 0) {
-                        message = "取pgmxid失败";
-                    }
-                    throw new Exception(message);
-                }
-
-            } else {
-                newDykh = greeKey;
-            }
-        } else {
-            String url = baseurl + "konghao/getDykh";
-            Map<String, String> paramMap = new HashMap<String, String>();
-            paramMap.put("tabName", srcTabNameForGreekey);
-            JSONResult jsonResult = HttpUtil.httpRequestWithToken(url, "POST",
-                    JSON.toJSONString(paramMap), token);
-            if (!jsonResult.isOK()) {
-                throw new Exception("取dykh失败[" + jsonResult.getMsg() + "]");
-            }
-            JSONObject data = (JSONObject) jsonResult.getData();
-            newDykh = data.getString("newDykh");
-        }
-        return newDykh;
-    }
-
-    private Map<String, Object> genDataMapFromSource(Long pgid, String taskExtraInfo, int uploadTaskType) {
-        Map<String, Object> paramMap = new HashMap<String, Object>();
-        paramMap.put(DataUtil.fromDbName2ServiceName("pgid"), pgid);
-        if (uploadTaskType == 67) {
-            paramMap.put(DataUtil.fromDbName2ServiceName("fklb"), taskExtraInfo);
-        }
-        return paramMap;
-    }
-
-    private void upFaGreeSmsFjid(OutJiasmToGreeUploadTaskList sourceData, String newDykh) {
-        FaGreeSms up = new FaGreeSms();
-        up.setFjid(newDykh);
-        QueryWrapper upWrapper = new QueryWrapper<FaGreeSms>()
-                .eq("worker_order_no", sourceData.getOrderNo())
-                .eq("azorwx",2)
-                .and(wrapper->wrapper.isNull("fjid")
-                        .or().eq("fjid","").or().eq("fjid",0));
-        faGreeSmsService.update(up,upWrapper);
-    }
-
-    private void uporderRepairOperatingLogpgid(OutJiasmToGreeUploadTaskList sourceData, String newDykh) {
-        OrderRepairOperatingLog up = new OrderRepairOperatingLog();
-        up.setPgid(Long.valueOf(newDykh));
-        up.setUpdateTime(new Date());
-        QueryWrapper upWrapper = new QueryWrapper<OrderRepairOperatingLog>()
-                .eq("order_base_id", sourceData.getOrderNo())
-                .and(wrapper->wrapper.isNull("pgid")
-                        .or().eq("pgid",0));
-        orderRepairOperatingLogService.update(up,upWrapper);
-    }
-
-    private void upOrderBasePgguid(OutJiasmToGreeUploadTaskList sourceData, OrderBase orderBase) {
-        if (StringUtils.isEmpty(orderBase.getPgguid()) || orderBase.getPgguid().equals("0")){
-            OrderBase up = new OrderBase();
-            up.setPgguid(UUID.randomUUID().toString());
-            QueryWrapper upWrapper = new QueryWrapper<OrderBase>()
-                    .eq("id", sourceData.getOrderNo())
-                    .and(wrapper->wrapper.isNull("pgguid")
-                            .or().eq("pgguid","").or().eq("pgguid",0));
-            orderBaseService.update(up,upWrapper);
-            orderBase.setPgguid(up.getPgguid());
-        }
-    }
-
-    private void upOrderBasePgid(OutJiasmToGreeUploadTaskList sourceData, @NotNull OrderBase orderBase, String newDykh) {
-        if (StringUtils.isEmpty(orderBase.getPgid()) || orderBase.getPgid().equals("0")){
-            OrderBase up = new OrderBase();
-            up.setPgid(newDykh);
-            QueryWrapper upWrapper = new QueryWrapper<OrderBase>()
-                    .eq("id", sourceData.getOrderNo())
-                    .and(wrapper->wrapper.isNull("pgid")
-                            .or().eq("pgid",0));
-            orderBaseService.update(up,upWrapper);
-            orderBase.setPgid(newDykh);
-        }
-    }
-
-    private void stopUpload(@NotNull OutJiasmToGreeUploadTaskList ojtutl, String msg) {
-        OutJiasmToGreeUploadTaskList up = new OutJiasmToGreeUploadTaskList();
-        up.setSynReqId(ojtutl.getSynReqId());
-        up.setSynStatus(99);
-        up.setSynTime(new Date());
-        up.setSynErrMsg(msg);
-        outJiasmToGreeUploadTaskListService.updateById(up);
-    }
 }

+ 4 - 376
src/main/java/com/zfire/jiasm/syncdata/upload/order/RepairProduceUploadList.java

@@ -1,31 +1,12 @@
 package com.zfire.jiasm.syncdata.upload.order;
 
-import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.zfire.jiasm.syncdata.constant.GDAppointStatusEnum;
-import com.zfire.jiasm.syncdata.constant.GDOrderStatusEnum;
-import com.zfire.jiasm.syncdata.constant.OrderTypeEnum;
 import com.zfire.jiasm.syncdata.constant.TaskConfigEnum;
-import com.zfire.jiasm.syncdata.dao.mapper.OrderInformationNewMapper;
-import com.zfire.jiasm.syncdata.data.Token;
-import com.zfire.jiasm.syncdata.parameter.OrderPar;
-import com.zfire.jiasm.syncdata.plus.entity.*;
-import com.zfire.jiasm.syncdata.plus.service.*;
-import com.zfire.jiasm.syncdata.response.WebsitFWS;
-import com.zfire.jiasm.syncdata.service.PrepareService;
-import com.zfire.jiasm.syncdata.service.PublicService;
-import com.zfire.jiasm.syncdata.utils.*;
+import com.zfire.jiasm.syncdata.service.RepairProduceUploadListService;
 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.*;
 
 /**
  * 生成上传任务清单 out_jiasm_to_gree_upload_task_list
@@ -35,375 +16,22 @@ import java.util.*;
 @Slf4j
 @Component
 public class RepairProduceUploadList {
-    @Value("${baseurl}")
-    private String baseurl = "";
     @Value("${wxuploadscc}")
     private String wxuploadscc = "";
 
     @Autowired
-    private TokenCenter tokenCenter;
-    @Resource
-    RepairProduceUploadList repairProduceUploadList;
-    @Resource
-    PrepareService prepareService;
-    @Resource
-    OutJiasmToGreeUploadTaskListService outJiasmToGreeUploadTaskListService;
-    @Resource
-    OrderBaseService orderBaseService;
-    @Resource
-    OutJiasmToGreeUploadnotifylistService outJiasmToGreeUploadnotifylistService;
-    @Resource
-    PublicService publicService;
-    @Resource
-    OrderProductService orderProductService;
-    @Resource
-    OrderRepairOperatingLogService orderRepairOperatingLogService;
-    @Resource
-    OrderInformationService orderInformationService;
-    @Resource
-    OrderInformationNewMapper orderInformationNewMapper;
-    @Resource
-    ItfTblAssignXzydUploadService itfTblAssignXzydUploadService;
-    @Resource
-    OrderReAppointmentService orderReAppointmentService;
+    RepairProduceUploadListService repairProduceUploadListService;
 
 
     @Scheduled(fixedDelayString = "${wxuploadsc}")
-    private void produceList() {
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        List<OutJiasmToGreeUploadTaskList> ojtgutls = new ArrayList<>();
-
+    private void produceList() throws Exception {
         if (wxuploadscc.equals(TaskConfigEnum.FALSE.getCode())){
             return;
         }
 
-
-          log.info("开始预处理需要上传的维修工单数据: \uF0B7{}",sdf.format(new Date()));
-
-        // 从需要上传的订单数据表中提取数据
-        List<OutJiasmToGreeUploadnotifylist> taskResults = outJiasmToGreeUploadnotifylistService.lambdaQuery()
-                .eq(OutJiasmToGreeUploadnotifylist::getSynStatus,0)
-                .orderByAsc(OutJiasmToGreeUploadnotifylist::getSynReqId).list();
-        try{
-            Token token = tokenCenter.getCurrentToken();
-
-            for (OutJiasmToGreeUploadnotifylist item : taskResults) {
-                Long itemSynReqId = item.getSynReqId();
-                // 同步的表名
-                String itemTableName = item.getTableName();
-                // 同步表中的工单号
-                String itemOrderNo = item.getOrderNo();
-                // 同步表中的主键id
-                String itemTableNameId = item.getId();
-                // 工单类型
-                String itemOrderType = item.getOrderType();
-
-                // 数据同步预处理规则表中提取对应表名的规则
-                Map<String, Object> row = prepareService.getTaskInfo(itemTableName);
-                int taskId = (Integer) row.get("id");
-                String srcTabName = (String) row.get("src_tab_name");
-
-                String errorMessage = null;
-                try{
-                    // 维修工单主表处理 66、661
-                    if (itemTableName.equals("order_base") &&
-                            itemOrderType.equals(OrderTypeEnum.ORDER_TYPE_REPAIR.getCode())){
-                        // 过程名,源表中的ID,源表中的数据最后修改时间,源表中的工单号,源表中的id,空值,false
-                        // TL_PrePare_task_by_fa_order_repair
-                        repairProduceUploadList.orderBaseProess(itemTableName, itemOrderNo, itemTableNameId, ojtgutls, item.getSynReqId());
-                    }
-                    // 维修工单产品信息 68
-                    if (itemTableName.equals("order_product") &&
-                            itemOrderType.equals(OrderTypeEnum.ORDER_TYPE_REPAIR.getCode())){
-                        // 过程名,源表中的ID,源表中的数据最后修改时间,源表中的工单号,源表中的id,空值,false
-                        // TL_PrePare_task_by_fa_order_repair_product
-                        repairProduceUploadList.orderProductProess(item, itemTableName, itemOrderNo, itemTableNameId);
-                    }
-                    // 维修工单操作明细 67
-                    if (itemTableName.equals("order_repair_operating_log")){
-                        // TL_PrePare_task_by_fa_order_repair_operating_log
-                        repairProduceUploadList.logProess(item, itemTableName, itemOrderNo, itemTableNameId, itemOrderType);
-                    }
-                    // 维修单用户预约、改约明细 230 同时向发短信表插入一条数据
-                    if (itemTableName.equals("order_re_appointment") &&
-                            itemOrderType.equals(OrderTypeEnum.ORDER_TYPE_REPAIR.getCode())){
-                        repairProduceUploadList.OrderReAppointment(item, itemTableName, itemOrderType);
-                    }
-                    // 子信息 TL_PrePareSynDataby_fa_order_repair_information
-                    if (itemTableName.equals("order_information") &&
-                            itemOrderType.equals(OrderTypeEnum.ORDER_TYPE_REPAIR.getCode())){
-                        // 执行 TL_get_fa_order_repair_information_pgid 取pgid 从工单主表中看
-                        repairProduceUploadList.orderInformationProess(token, item, itemOrderNo, itemTableNameId, srcTabName);
-                    }
-                } catch (Exception ex) {
-                    errorMessage = ex.getMessage();
-                    updateError(errorMessage, item);
-                } finally {
-                    PrepareTaskLog.writeMessage(genInfoData(taskId, srcTabName, false, errorMessage));
-                }
-            }
-            log.info("预处理需要上传的维修工单数据完成: \uF0B7{}",sdf.format(new Date()));
-
-        } catch (Exception ex) {
-        ex.printStackTrace();
-        log.info("开始预处理需要上传的维修工单数据出错");
-    }
-
-
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public void orderInformationProess(Token token, OutJiasmToGreeUploadnotifylist item, String itemOrderNo,
-                                       String itemTableNameId, String srcTabName) throws Exception {
-        String newDykh = "";
-        // 提取工单数据
-        OrderBase orderBase = orderBaseService.lambdaQuery()
-                .eq(OrderBase::getId, itemOrderNo).one();
-        // 提取对应的子信息
-        OrderInformation oi = orderInformationService.lambdaQuery()
-                .eq(OrderInformation::getId, itemTableNameId).one();
-        // 为空不做处理
-        if (StringUtils.isNotEmpty(orderBase.getPgid())){
-            // 看 xzid 值 不为空取该值 为空时网络获取
-            if (oi != null){
-                // 获取YDID 表中不存在时从接口中获取
-                newDykh = getYdId(token, itemOrderNo, itemTableNameId, srcTabName, orderBase, oi);
-                // 修改 xzid 来自接口
-                upYdid(itemTableNameId, newDykh);
-                // 生成待同步表数据
-                getInformation(itemTableNameId);
-
-                // 需要上传的订单数据表中处理状态同步为已处理
-                OutJiasmToGreeUploadnotifylist upn = getOutJiasmToGreeUploadnotifylist(item.getSynReqId());
-                outJiasmToGreeUploadnotifylistService.updateById(upn);
-            }
-        }
-    }
-
-    private void getInformation(String itemTableNameId) {
-        OrderPar orderPar = new OrderPar();
-        WebsitFWS websitFWS = new WebsitFWS();
-        orderPar.setId(itemTableNameId);
-        ItfTblAssignXzydUpload rec = orderInformationNewMapper.getOrderInformationrepair(orderPar);
-        OrderBase orderBase = orderBaseService.lambdaQuery()
-                .eq(OrderBase::getId,rec.getWorkerOrderNo()).one();
-        rec.setPgid(Long.valueOf(orderBase.getPgid()));
-        websitFWS = publicService.shshwdToptshwd(rec.getWdno(),orderBase);
-        if (StringUtils.isEmpty(websitFWS.getWebsitId())){
-            websitFWS = publicService.shxswdToptxswd(rec.getWdno(),orderBase);
-        }
-
-        rec.setWdno(websitFWS.getWebsitId());
-        itfTblAssignXzydUploadService.save(rec);
-    }
-
-    private void upYdid(String itemTableNameId, String newDykh) {
-        OrderPar orderPar = new OrderPar();
-        orderPar.setId(itemTableNameId);
-        orderPar.setXzid(newDykh);
-        orderInformationNewMapper.upYdid(orderPar);
-    }
-
-    private String getYdId(Token token, String itemOrderNo, String itemTableNameId, String srcTabName, OrderBase orderBase, OrderInformation oi) throws Exception {
-        String newDykh;
-        if (oi.getXzid()>0){
-            // 表中获取
-            newDykh = String.valueOf(oi.getXzid());
-        } else {
-            // 网络获取
-            newDykh = getWebAcquire(token, itemOrderNo, itemTableNameId, srcTabName, orderBase);
-        }
-        return newDykh;
-    }
-
-    private String getWebAcquire(Token token, String itemOrderNo, String itemTableNameId, String srcTabName, OrderBase orderBase) throws Exception {
-        String newDykh;
-        Map<String, Object> sourceData = prepareService.getTaskDataDetail(srcTabName, itemOrderNo,
-                itemTableNameId);
-        sourceData.put("pgid", orderBase.getPgid());
-
-        String serviceName = DataUtil.fromDbName2ServiceName("tbl_assign_xzyd");
-        String addDataUrl = baseurl + serviceName + "/add";
-
-        JSONResult addResult = HttpUtil.httpRequestWithToken(addDataUrl, "POST",
-                JSON.toJSONStringWithDateFormat(
-                        genDataMapFromSource("pgid", "pgid", sourceData),
-                        "yyyy-MM-dd HH:mm:ss"),
-                token);
-        if (!addResult.isOK()) {
-            throw new Exception("新增数据获取主键失败[" + serviceName + "],[" + addResult.getMsg() + "]");
-        } else {
-            if (addResult.getData() == null || addResult.getData().equals("")) {
-                throw new Exception("新增数据获取主键返回空[" + serviceName + "]");
-            } else {
-                newDykh = addResult.getData().toString();
-            }
-        }
-        return newDykh;
-    }
-
-    private Map<String, Object> genDataMapFromSource(String localKeyList, String serverKeyList,
-                                                     Map<String, Object> sourceData) {
-        Map<String, Object> paramMap = new HashMap<String, Object>();
-        String[] localKeys = localKeyList.split("\\Q,\\E");
-        String[] serverKeys = serverKeyList.split("\\Q,\\E");
-        for (int i = 0; i < localKeys.length; i++) {
-            String localKey = localKeys[i];
-            String serverKey = serverKeys[i];
-            Object value = sourceData.get(localKey.trim());
-            paramMap.put(DataUtil.fromDbName2ServiceName(serverKey.trim()), value);
-        }
-
-        return paramMap;
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public void logProess(OutJiasmToGreeUploadnotifylist item, String itemTableName, String itemOrderNo, String itemTableNameId,String itemOrderType) {
-        // 提取日志数据
-        OrderRepairOperatingLog org = orderRepairOperatingLogService.lambdaQuery()
-                .eq(OrderRepairOperatingLog::getId, itemTableNameId).one();
-        if (org !=null){
-            // 生成67类型上传任务数据
-            // 单号,主键,同步任务生成时间,同步的表名,工单类型,任务类型
-            OutJiasmToGreeUploadTaskList add = publicService.getUploadTaskListLog(itemOrderNo, itemTableNameId,org.getUpdateTime(), itemTableName,
-                    itemOrderType,67);
-            outJiasmToGreeUploadTaskListService.save(add);
-
-            // 需要上传的订单数据表中处理状态同步为已处理
-            OutJiasmToGreeUploadnotifylist upn = getOutJiasmToGreeUploadnotifylist(item.getSynReqId());
-            outJiasmToGreeUploadnotifylistService.updateById(upn);
-        }
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public  void OrderReAppointment(OutJiasmToGreeUploadnotifylist item, String itemTableName, String itemOrderType) {
-        OrderReAppointment rea = orderReAppointmentService.lambdaQuery()
-                .eq(OrderReAppointment::getId, item.getId()).one();
-        // 同步任务增加一条数据
-        if (rea !=null){
-            OutJiasmToGreeUploadTaskList add = publicService.getUploadTaskList(item.getOrderNo(), item.getId(),
-                    rea.getCreateTime(), itemTableName, itemOrderType, 230);
-            outJiasmToGreeUploadTaskListService.save(add);
-            // 向发短信表插入一条数据,短信表ID同预约改约表ID相同
-            publicService.addFaOrderSms(rea);
-        }
-
-        // 需要上传的订单数据表中处理状态同步为已处理
-        OutJiasmToGreeUploadnotifylist up = getOutJiasmToGreeUploadnotifylist(item.getSynReqId());
-        outJiasmToGreeUploadnotifylistService.updateById(up);
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public void orderProductProess(OutJiasmToGreeUploadnotifylist item, String itemTableName, String itemOrderNo, String itemTableNameId) {
-        // 提取工单机型
-        OrderProduct op = orderProductService.lambdaQuery()
-                .eq(OrderProduct::getId, itemTableNameId).one();
-        if (op!=null){
-            // 生成68类型上传任务数据
-            // 单号,主键,同步任务生成时间,同步的表名,工单类型,任务类型
-            OutJiasmToGreeUploadTaskList add = publicService.getUploadTaskList(itemOrderNo, itemTableNameId,op.getUpdateTime(), itemTableName,
-                    OrderTypeEnum.ORDER_TYPE_REPAIR.getCode(),68);
-            outJiasmToGreeUploadTaskListService.save(add);
-
-            // 需要上传的订单数据表中处理状态同步为已处理
-            OutJiasmToGreeUploadnotifylist upn = getOutJiasmToGreeUploadnotifylist(item.getSynReqId());
-            outJiasmToGreeUploadnotifylistService.updateById(upn);
-        }
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public void orderBaseProess(String itemTableName, String itemOrderNo, String itemTableNameId,
-                                 List<OutJiasmToGreeUploadTaskList> ojtgutls, Long synReqId) {
-        // 提取工单数据
-        OrderBase orderBase = orderBaseService.lambdaQuery()
-                .eq(OrderBase::getId, itemOrderNo).one();
-        // 生成任务清单数据
-        if (orderBase != null){
-            // 删除工单更新被忽略
-
-            // 生成66类型上传任务数据
-            // 单号,主键,同步任务生成时间,同步的表名,工单类型,任务类型
-            OutJiasmToGreeUploadTaskList add = publicService.getUploadTaskList(itemOrderNo, itemTableNameId,orderBase.getUpdateTime(), itemTableName,
-                    orderBase.getOrderType(),66);
-
-            ojtgutls.add(add);
-
-            // 生成661类型上传任务数据
-            OrderBase up = generateTaskList(itemTableName, itemOrderNo, itemTableNameId, orderBase, ojtgutls);
-
-
-            if (ojtgutls.size()>0){
-                outJiasmToGreeUploadTaskListService.saveBatch(ojtgutls);
-                ojtgutls.clear();
-            }
-            if (up !=null ){
-                orderBaseService.updateById(up);
-                orderBase.setOutCjDownloadFlag(1);
-            }
-
-            // 需要上传的订单数据表中处理状态同步为已处理
-            OutJiasmToGreeUploadnotifylist upn = getOutJiasmToGreeUploadnotifylist(synReqId);
-            outJiasmToGreeUploadnotifylistService.updateById(upn);
-
-        }
-    }
-
-    @NotNull
-    private OutJiasmToGreeUploadnotifylist getOutJiasmToGreeUploadnotifylist(Long synReqId) {
-        OutJiasmToGreeUploadnotifylist up = new OutJiasmToGreeUploadnotifylist();
-        up.setSynReqId(synReqId);
-        up.setSynStatus(1);
-        up.setSynReqTime(new Date());
-        return up;
+        repairProduceUploadListService.processproduceList();
     }
 
-    private OrderBase generateTaskList(String itemTableName, String itemOrderNo, String itemTableNameId, OrderBase orderBase, List<OutJiasmToGreeUploadTaskList> ojtgutls) {
-        // 工单状态(8, 9, 10, 11, 12, 13, 14) 派工状态:(13, 14, 15) 未下载总部采集数据
-        if ((orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G8.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G9.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G10.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G11.getCode()) ||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G12.getCode())||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G13.getCode())||
-                orderBase.getOrderStatus().equals(GDOrderStatusEnum.REPAIR_STATUS_G14.getCode())) &&
-                (orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G14_0) ||
-                        orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G14_1)||
-                        orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G15_0)||
-                        orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G15_1)||
-                        orderBase.getDispatchStatus().equals(GDAppointStatusEnum.REPAIR_STATUS_G15_2)) &&
-                orderBase.getOutCjDownloadFlag().equals(0)){
-            OutJiasmToGreeUploadTaskList add = publicService.getUploadTaskList(itemOrderNo, itemTableNameId, itemTableName,
-                    orderBase.getOrderType(),661);
-            ojtgutls.add(add);
-
-            OrderBase up = new OrderBase();
-            up.setId(orderBase.getId());
-            up.setOutCjDownloadFlag(1);
-            return up;
-        }
-        return null;
-    }
-
-    public void updateError(String errMessage, OutJiasmToGreeUploadnotifylist item) {
-        if (errMessage != null && errMessage.trim().length() > 255) {
-            errMessage = errMessage.substring(0, 255);
-        }
-        OutJiasmToGreeUploadnotifylist up = new OutJiasmToGreeUploadnotifylist();
-        up.setSynReqId(item.getSynReqId());
-        up.setSynTimes(item.getSynTimes()+1);
-        up.setSynErrMsg(errMessage);
-        up.setSynReqTime(new Date());
-        outJiasmToGreeUploadnotifylistService.updateById(up);
-    }
-
-    private String genInfoData(int taskId, String srcTabName, boolean isTimeOut, String errorMessage) {
-        String result = "预处理任务[" + taskId + "," + srcTabName + "] " + (isTimeOut ? "超时!!!!" : "正常") + " "
-                + (errorMessage != null ? "错误:[" + errorMessage + "]" : "");
-        return result;
-    }
-
-
-
 
 
 }

+ 7 - 360
src/main/java/com/zfire/jiasm/syncdata/upload/worker/UploadWorkeCertificate.java

@@ -1,32 +1,15 @@
 package com.zfire.jiasm.syncdata.upload.worker;
 
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.toolkit.IdWorker;
-import com.zfire.jiasm.syncdata.base.BaseService;
 import com.zfire.jiasm.syncdata.constant.TaskConfigEnum;
-import com.zfire.jiasm.syncdata.gree.GreeLogic;
-import com.zfire.jiasm.syncdata.helper.GreeFileResponseHelper;
-import com.zfire.jiasm.syncdata.helper.GreeFileSaveHelper;
-import com.zfire.jiasm.syncdata.http.PostObjectSample;
-import com.zfire.jiasm.syncdata.plus.entity.Brand;
-import com.zfire.jiasm.syncdata.plus.entity.WebsitWorker;
-import com.zfire.jiasm.syncdata.plus.entity.WorkerBrandAccount;
-import com.zfire.jiasm.syncdata.plus.entity.WorkerCert;
-import com.zfire.jiasm.syncdata.plus.service.WebsitWorkerService;
-import com.zfire.jiasm.syncdata.plus.service.WorkerBrandAccountService;
-import com.zfire.jiasm.syncdata.plus.service.WorkerCertService;
-import com.zfire.jiasm.syncdata.response.ResultData;
-import com.zfire.jiasm.syncdata.utils.oss.OSSUtil;
+import com.zfire.jiasm.syncdata.service.UploadWorkeCertificateService;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
+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 javax.annotation.Resource;
-import java.io.File;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.Date;
 
 /**
  * 同步证件到格力总部
@@ -37,361 +20,25 @@ public class UploadWorkeCertificate {
     @Value("${workercertificatec}")
     private String workercertificatec = "";
 
-    @Resource
-    OSSUtil ossUtil;
-    @Resource
-    GreeLogic greeLogic;
-    @Resource
-    WorkerCertService workerCertService;
-    @Resource
-    WorkerBrandAccountService workerBrandAccountService;
-    @Resource
-    BaseService baseService;
-    @Resource
-    WebsitWorkerService websitWorkerService;
-
+    @Autowired
+    UploadWorkeCertificateService uploadWorkeCertificateService;
 
 
 
     // 师傅证件照同步到格力总部
     @Scheduled(fixedDelayString = "${workercertificate}")
     public void processUploadTask() throws Exception {
-
-        if (workercertificatec.equals(TaskConfigEnum.FALSE.getCode())){
-            return;
-        }
-
-
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        List<WorkerCert> recs = new ArrayList<>();
-        List<WorkerBrandAccount> workerWdnos = new ArrayList<>();
-        String fileo ="";
-        String filet ="";
-        String fid1 = "";
-        String fid2 = "";
-        String fid3 = "";
-        Integer count = 0;
 
-        // 提取品牌信息 用于多品牌数据同步目前仅格力,可以先不用做
-        Brand brand = baseService.getBrand();
-        if (brand == null) {
+        if (workercertificatec.equals(TaskConfigEnum.FALSE.getCode())){
             return;
         }
 
         log.info("开始同步师傅证件信息: \uF0B7{}",sdf.format(new Date()));
 
-        // 获取待同步到格力总部师傅的证件信息
-        recs = getWorkerUploads();
-
-        for (WorkerCert item:recs){
-            fileo ="";
-            filet ="";
-            fid1 = "";
-            fid2 = "";
-            count = 0;
+        uploadWorkeCertificateService.procesUploadWorkeCert();
 
-           //  查看师傅是否已选中品牌商网点(这里只提取选中格力品牌商的师傅数据)
-            workerWdnos = workerBrandAccountService.lambdaQuery()
-                    .eq(WorkerBrandAccount::getWorkerId, item.getWorkerId())
-                    .eq(WorkerBrandAccount::getBrandWorkerStatus,"ON")
-                    .eq(WorkerBrandAccount::getDel,0)
-                    .eq(WorkerBrandAccount::getGroupCompanyId, brand.getBrandId()).list();
-
-            // 未选择品牌商
-            if (workerWdnos.size()<1){
-                updateWorkCertificateerror(item.getId(),"师傅未选择格力品牌商信息");
-                continue;
-            }
-
-            //  判断师傅入驻的商户网点
-            count = getCount(workerWdnos, count);
-            if (count.equals(workerWdnos.size())){
-                updateWorkCertificateerror(item.getId(),"师傅未入驻品牌商网点");
-                continue;
-            }
-
-            // 生成图片
-            if (StringUtils.isNotEmpty(item.getFileUrl()) && (StringUtils.isEmpty(item.getOutFileUrl()))){
-                fid1 = IdWorker.getIdStr() + ".jpg";
-                // 下载文件生成新文件 fid1
-                baseService.saveToFile(ossUtil.getUrlWw(item.getFileUrl()),fid1);
-                // 获取文件
-                fileo = fid1;
-            }
-            if (StringUtils.isNotEmpty(item.getFileUrl2()) && (StringUtils.isEmpty(item.getOutFileUrl2()))){
-                fid2 = IdWorker.getIdStr() + ".jpg";
-                // 下载文件生成新文件 fid2
-                baseService.saveToFile(ossUtil.getUrlWw(item.getFileUrl()),fid2);
-                // 获取文件
-                filet = fid2;
-            }
-
-            // 上传图片 按网点上传
-            for (WorkerBrandAccount wdno: workerWdnos){
-                uploadFileexc(fileo, filet, fid1, fid2,wdno.getBrandWebsitId(),item);
-                delfilet(fid3);
-                // 保险数据同步 保险证不在证件表中
-                fid3 = uploadInsureCert(wdno);
-            }
-            // 文件清除
-            delfile(fileo, filet, fid1, fid2,fid3);
-
-        }
         log.info("同步师傅证件信息结束: \uF0B7{}",sdf.format(new Date()));
     }
 
-    private void delfile(String fileo,String filet,String fid1, String fid2, String file3) {
-        if (StringUtils.isNotEmpty(fileo)){
-            new File(fileo).delete();
-        }
-        if (StringUtils.isNotEmpty(filet)){
-            new File(filet).delete();
-        }
-        if (StringUtils.isNotEmpty(fid1)){
-            new File(fid1).delete();
-        }
-        if (StringUtils.isNotEmpty(fid2)){
-            new File(fid2).delete();
-        }
-        if (StringUtils.isNotEmpty(file3)){
-            new File(file3).delete();
-        }
-    }
-
-    private void delfiletow(String fid1, String fid2) {
-        if (StringUtils.isNotEmpty(fid1)){
-            new File(fid1).delete();
-        }
-        if (StringUtils.isNotEmpty(fid2)){
-            new File(fid2).delete();
-        }
-    }
-
-    private void delfilet(String file3) {
-        if (StringUtils.isNotEmpty(file3)){
-            new File(file3).delete();
-        }
-    }
-
-    /**
-     * 初始化保险数据(可以不买保险)
-     * out_insure_cert 总部保证凭证 为空时
-     *    insure_cert为空  初始化生成
-     *               不为空正常生成
-     */
-    private String uploadInsureCert(WorkerBrandAccount wdno) throws Exception {
-        String fileo ="";
-        String fid1 = "";
-        WebsitWorker wk = websitWorkerService.lambdaQuery()
-                .eq(WebsitWorker::getWebsitWorkerId, wdno.getWebsitWorkerId()).one();
-        if (StringUtils.isEmpty(wk.getOutInsureCert())){
-            // 生成图片
-            if (StringUtils.isEmpty(wk.getInsureCert())){
-                fid1 = "bx.jpeg";
-                baseService.initFile(fid1);
-            } else {
-                fid1 = IdWorker.getIdStr() + ".jpeg12";
-                baseService.saveToFile(ossUtil.getUrlWw(wk.getInsureCert()),fid1);
-            }
-            fileo = fid1;
-            uploadInitFileexc(fileo, fid1, wdno.getBrandWebsitId(),wk);
-        }
-        return fid1;
-    }
-
-    private Boolean uploadFileexc(String fileo, String filet, String fid1, String fid2,String wdno,WorkerCert item) throws Exception {
-        Boolean uploadfile = Boolean.TRUE;
-        Boolean onlyone = Boolean.FALSE;
-        String msg = "";
-
-        if (StringUtils.isEmpty(wdno)){
-            return Boolean.TRUE;
-        }
-
-        // 先上传第一个图片
-        if (StringUtils.isNotEmpty(fileo)){
-            // 1: 获取签名信息
-            GreeFileResponseHelper response =  greeLogic.ossGetSignt(wdno,"GET");
-            if (response.getStatusCode() == 200){
-                ResultData resultData = JSONObject.parseObject(response.getData().toString(), ResultData.class);
-                resultData.getExtData().setDir(resultData.getExtData().getDir()+"/"+fid1);
-                // 2:文件上传
-                PostObjectSample ossPostObject = new PostObjectSample();
-                String result = ossPostObject.PostObject(fileo, resultData.getExtData());
-
-                // 3: 保存文件
-                if (StringUtils.isEmpty(result.trim())){
-                    Map<String,String>req = new HashMap<>();
-                    // 生成对象
-                    getSaveFileInfo(fid1, resultData, req);
-                    GreeFileSaveHelper responses = greeLogic.greePostSaveFile(req);
-                    if (responses.getStatusCode() == 200){
-                        // 保存文件ID   responses.getData().getId()
-                        if (StringUtils.isEmpty(filet)){
-                            // 说明只有第一个图片
-                            onlyone = Boolean.TRUE;
-                        }
-                        updateWorkCertificatesave(item,responses.getData().getId(),1,uploadfile,onlyone);
-                    } else {
-                        // 失败
-                        uploadfile = Boolean.FALSE;
-                        msg = "保存证件正面文件到格力总部失败";
-                        if (StringUtils.isNotEmpty(responses.getMsg())){
-                            msg = msg + responses.getMsg();
-                        }
-                        updateWorkCertificateerror(item.getId(),msg);
-                    }
-                } else {
-                    updateWorkCertificateerror(item.getId(),"上传图片到OSS失败");
-                }
-            } else {
-                updateWorkCertificateerror(item.getId(),"获取签名信息失败");
-                return Boolean.TRUE;
-            }
-        }
-
-        if (StringUtils.isNotEmpty(filet)){
-            // 1: 获取签名信息
-            GreeFileResponseHelper response =  greeLogic.ossGetSignt(wdno,"GET");
-            if (response.getStatusCode() == 200){
-                ResultData resultData = JSONObject.parseObject(response.getData().toString(), ResultData.class);
-                resultData.getExtData().setDir(resultData.getExtData().getDir()+"/"+fid2);
-                // 2:文件上传
-                PostObjectSample ossPostObject = new PostObjectSample();
-                String result = ossPostObject.PostObject(filet, resultData.getExtData());
-                // 3: 保存文件
-                if (StringUtils.isEmpty(result.trim())){
-                    Map<String,String>req = new HashMap<>();
-                    // 生成对象
-                    getSaveFileInfo(fid2, resultData, req);
-                    GreeFileSaveHelper responses = greeLogic.greePostSaveFile(req);
-
-                    if (responses.getStatusCode() == 200){
-                        // 保存文件ID   responses.getData().getId()
-                        updateWorkCertificatesave(item,responses.getData().getId(),2,uploadfile,onlyone);
-                    } else {
-                        // 失败
-                        msg = "保存证件正面文件到格力总部失败";
-                        if (StringUtils.isNotEmpty(responses.getMsg())){
-                            msg = msg + responses.getMsg();
-                        }
-                        updateWorkCertificateerror(item.getId(),msg);
-                        return Boolean.TRUE;
-                    }
-                } else {
-                    updateWorkCertificateerror(item.getId(),"上传图片到OSS失败");
-                    return Boolean.TRUE;
-                }
-            } else {
-                updateWorkCertificateerror(item.getId(),"获取签名信息失败");
-                return Boolean.TRUE;
-            }
-        }
-        return Boolean.FALSE;
-    }
-
-    private Boolean uploadInitFileexc(String fileo, String fid1,String wdno,WebsitWorker wk) throws Exception {
-
-        if (StringUtils.isEmpty(wdno)){
-            return Boolean.TRUE;
-        }
-
-        if (StringUtils.isNotEmpty(fileo)){
-            // 1: 获取签名信息
-            GreeFileResponseHelper response =  greeLogic.ossGetSignt(wdno,"GET");
-            if (response.getStatusCode() == 200){
-                ResultData resultData = JSONObject.parseObject(response.getData().toString(), ResultData.class);
-                resultData.getExtData().setDir(resultData.getExtData().getDir()+"/"+fid1);
-                // 2:文件上传
-                PostObjectSample ossPostObject = new PostObjectSample();
-                String result = ossPostObject.PostObject(fileo, resultData.getExtData());
-                // 3: 保存文件
-                if (StringUtils.isEmpty(result.trim())){
-                    Map<String,String>req = new HashMap<>();
-                    // 生成对象
-                    getSaveFileInfo(fid1, resultData, req);
-                    GreeFileSaveHelper responses = greeLogic.greePostSaveFile(req);
-
-                    if (responses.getStatusCode() == 200){
-                        // 保存文件ID   responses.getData().getId()
-                        wk.setOutInsureCert(responses.getData().getId());
-                        websitWorkerService.updateById(wk);
-                    } else {
-                        // 失败
-                        log.info("保存保险证件文件到格力总部失败");
-                    }
-                } else {
-                    log.info("保险证件上传图片到OSS失败");
-                }
-            } else {
-                log.info("获取签名信息失败");
-                return Boolean.TRUE;
-            }
-        }
-
-        return Boolean.FALSE;
-    }
-
-    private Integer getCount(List<WorkerBrandAccount> workerWdnos, Integer count) {
-        for (WorkerBrandAccount w: workerWdnos){
-            if (StringUtils.isEmpty(w.getBrandWebsitId())){
-                count++;
-            }
-        }
-        return count;
-    }
-
-    private void updateWorkCertificateerror(String id, String msg) {
-        WorkerCert v = new WorkerCert();
-        v.setId(id);
-        v.setOutSyncTime(new Date());
-        v.setOutSyncErrorMsg(msg);
-        if (msg.length()>250){
-            v.setOutSyncErrorMsg(msg.substring(0,250));
-        }
-        workerCertService.updateById(v);
-    }
-
-    private void updateWorkCertificatesave(WorkerCert i, String file, Integer flag,
-                                           Boolean bool, Boolean onlyOne) {
-        WorkerCert v = new WorkerCert();
-        v.setId(i.getId());
-        if (flag ==1){
-            v.setOutFileUrl(file);
-            if (onlyOne){
-                v.setOutSyncStatus(1);
-            }
-        } else {
-            v.setOutFileUrl2(file);
-            if (bool){
-                v.setOutSyncStatus(1);
-            }
-        }
-        v.setOutSyncTime(new Date());
-        workerCertService.updateById(v);
-    }
-
-    private void getSaveFileInfo(String id1, ResultData resultData, Map<String, String> req) {
-        req.put("bizAppId","flydiy-auto-sit-default-front-greeshmerge");
-        req.put("bizTable","default");
-        req.put("bizType","default");
-        req.put("accessType","auth");
-        req.put("url", resultData.getExtData().getDir());
-        req.put("name", id1);
-    }
-
-
-    /**
-     * 该表只进行增加数据
-     *     相同类型数据只取最大ID
-     * @return
-     */
-    private List<WorkerCert> getWorkerUploads() {
-        // 同步标志-synStatus(0:待同步;1:已同步;99:同步失败)
-        return workerCertService.lambdaQuery()
-                .eq(WorkerCert::getOutSyncStatus,0)
-                .list();
-    }
-
-
 }

+ 7 - 1175
src/main/java/com/zfire/jiasm/syncdata/upload/worker/UploadWorkerTOGree.java

@@ -1,36 +1,15 @@
 package com.zfire.jiasm.syncdata.upload.worker;
 
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.zfire.jiasm.syncdata.base.BaseService;
-import com.zfire.jiasm.syncdata.base.WorkerCertificateInfo;
-import com.zfire.jiasm.syncdata.constant.DictTypeEnum;
 import com.zfire.jiasm.syncdata.constant.TaskConfigEnum;
-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.WorkUploadInfo;
-import com.zfire.jiasm.syncdata.request.ZJInfo;
-import com.zfire.jiasm.syncdata.response.WebsitQXLB;
-import com.zfire.jiasm.syncdata.response.WorkerUploadResponse;
-import com.zfire.jiasm.syncdata.service.PublicService;
+import com.zfire.jiasm.syncdata.service.UploadWorkerTOGreeService;
 import lombok.extern.slf4j.Slf4j;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
+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 javax.annotation.Resource;
-import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.stream.Collectors;
+import java.util.Date;
 
 /**
  * 同步师傅信息到格力总部
@@ -41,32 +20,8 @@ public class UploadWorkerTOGree {
     @Value("${workerceruploadc}")
     private String workerceruploadc = "";
 
-    @Resource
-    BaseService baseService;
-    @Resource
-    OutWorkerUploadService outWorkerUploadService;
-    @Resource
-    WorkerService workerService;
-    @Resource
-    WorkerBrandAccountService workerBrandAccountService;
-    @Resource
-    WorkerStreetService workerStreetService;
-    @Resource
-    WorkerCertService workerCertService;
-    @Resource
-    WorkerServiceCategoryDetailService workerServiceCategoryDetailService;
-    @Resource
-    SysDictRefService sysDictRefService;
-    @Resource
-    SysDictService sysDictService;
-    @Resource
-    GreeLogic greeLogic;
-    @Resource
-    ItfTblWangdianPositionDownloadService itfTblWangdianPositionDownloadService;
-    @Resource
-    PublicService publicService;
-    @Resource
-    WebsitWorkerService websitWorkerService;
+    @Autowired
+    UploadWorkerTOGreeService uploadWorkerTOGreeService;
 
 
 
@@ -77,1140 +32,17 @@ public class UploadWorkerTOGree {
      */
     @Scheduled(fixedDelayString = "${workercerupload}")
     public void uploadWorkProcess() throws Exception {
-
-        if (workerceruploadc.equals(TaskConfigEnum.FALSE.getCode())){
-            return;
-        }
-
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        List<OutWorkerUpload> recs = new ArrayList<>();
-        Worker worker = new Worker();
-        List<WorkerBrandAccount> workerBrandAccount = new ArrayList<>();
-        WorkerStreet workerStreet = new WorkerStreet();
-        List<SignSplb> jySignSplbList = new ArrayList<>();
-        List<SignSplb> sySignSplbList = new ArrayList<>();
-        List<SignSplb> jyList = new ArrayList<>();
-        List<SignSplb> syList = new ArrayList<>();
-        WebsitQXLB  websitqypl = new WebsitQXLB();
-        List<ItfTblWangdianPositionDownload> wdwxgGl = new ArrayList<>();
-        Map<String,List<ItfTblWangdianPositionDownload>> wdwxgGlMap = new HashMap<>();
-        Map<String,List<Worker>> workersMap = new HashMap<>();
-
-        String wxgaddapi = "/outapp/wxg/add";
-        String wdqyapi = "/outapp/wxg/base";
-
-        // 提取品牌信息
-        Brand brand = baseService.getBrand();
-        if (brand == null) {
+        if (workerceruploadc.equals(TaskConfigEnum.FALSE.getCode())){
             return;
         }
 
-        wdwxgGl = itfTblWangdianPositionDownloadService.lambdaQuery().list();
-        wdwxgGlMap = wdwxgGl.stream().
-                collect(Collectors.groupingBy(ItfTblWangdianPositionDownload::getWxgno));
-
-        // 只提取已入驻的师傅信息
-        List<Worker> workers = workerService.lambdaQuery()
-                .eq(Worker::getStatus,"ON").list();
-        if (CollectionUtils.isNotEmpty(workers)){
-            workersMap = workers.stream().
-                    collect(Collectors.groupingBy(Worker::getWorkerId));
-        }
-
         log.info("开始同步师傅信息到格力总部: \uF0B7{}",sdf.format(new Date()));
 
-        // 获取待同步数据
-        recs = getWorkerUploads();
-
-        for (OutWorkerUpload item:recs){
-            try{
-                WorkUploadInfo req = new WorkUploadInfo();
-                WorkerCertificateInfo workerCertificateInfo = new WorkerCertificateInfo();
-
-                // 获取师傅信息  需要同步的师傅必须在平台系统中存在
-                if (!workersMap.containsKey(item.getWorkerId())){
-                    // 写入表备注信息
-                    updateWorkerUploadLag(item,"师傅尚未在平台中入驻");
-                    continue;
-                }
-                worker = workersMap.get(item.getWorkerId()).get(0);
-
-                // 查看师傅是否已选中品牌商 同步状态为有效状态
-                // 这里存在一个商户网点对应平台多个网点
-                workerBrandAccount = getWorkerBrandAccount(brand, item, worker);
-                if (CollectionUtils.isEmpty(workerBrandAccount)) {
-                    continue;
-                }
-
-                // 格力一个师傅最多三个有效网点超3个网点不能同步
-                if (checkWebsitSum(workerBrandAccount,item)){
-                    continue;
-                }
-
-                // 这里需要从对应的网点信息中提取师傅服务区域
-                // 查看师傅服务区域 规定随便取一个地址即可
-                workerStreet = getWorkerStreet(item, worker);
-                if (workerStreet == null) {
-                    continue;
-                }
-
-                // 验证师傅的保险证信息 所有网点都验证 这里只验证是否成功上传了图片
-                if (checkBXOutInsureCert(workerBrandAccount)) {
-                    continue;
-                }
-
-                // 按网点同步
-                for (WorkerBrandAccount dot: workerBrandAccount){
-
-                    // 提取师傅证件信息,未同步时不处理
-                    if (getCertificateInfo(workerCertificateInfo, worker.getWorkerId(),dot.getWebsitWorkerId())){
-                        break;
-                    }
-
-                    /**
-                     * 必要条件必须满足,否则不进行数据上传动作 身份证、高空证、保险证
-                     * 师傅信息同步到总部的必要条件:
-                     * 1:身份证、2:保险,3:高空证(复审时间必填)  这三个条件必备否则无法同步
-                     * 制冷证可以没有,如果填了复审时间则必填
-                     */
-                    if (checkNecessary(worker, item, workerCertificateInfo)){
-                        break;
-                    }
-
-                    // 获取签约品类
-                    if (getCategory(brand, jySignSplbList, sySignSplbList, worker, item, dot.getWorkerId())){
-                        break;
-                    }
-
-                    // 生成数据对象 证件
-                    getreq(workerCertificateInfo, req, worker,dot.getWebsitWorkerId());
-
-                    // 师傅所在网点状态
-                    req.setFlag("有效");
-                    if (worker.getStatus().equals("OFF") || dot.getBrandWorkerStatus().equals("OFF")){
-                        req.setFlag("无效");
-                    }
-
-                    //网点未签约品类时该网点师傅信息不同步
-                    GreeResponseHelper response = getwdqylbxx(wdqyapi,dot.getBrandWebsitId());
-                    if (response.getStatus() == 200){
-                        // 获取网点签约的品类信息
-                        websitqypl = JSONObject.parseObject(response.getData().toString(), WebsitQXLB.class);
-                    } else {
-                        // 写入表备注信息
-                        updateWorkerUploadLag(item,"获取网点签约的品类信息失败["+
-                                dot.getBrandWebsitId()+"]-"+
-                                (StringUtils.isEmpty(response.getMsg()) ? "":response.getMsg()));
-                        break;
-                    }
-
-                    // 从网点签约的品类信息中过滤师傅的品类信息
-                    String result = extracted(jySignSplbList, sySignSplbList, jyList, syList, websitqypl,dot.getBrandWebsitId());
-                    if (result.length()>0){
-                        // 写入表备注信息
-                        updateWorkerUploadLag(item,result);
-                        continue;
-                    }
-
-                    // 过滤后无品类,不能上传
-                    if (jyList.size()<1 && syList.size()<1){
-                        // 写入表备注信息
-                        updateWorkerUploadLag(item,"师傅签约品类过滤后不能同时为空");
-                        continue;
-                    }
-
-                    // 按网点过滤师傅的类别信息
-                    req.setJySignSplbList(jyList);
-                    req.setSySignSplbList(syList);
-
-                    // 服务人员编号(不填值为新增,填值为修改)
-                    if (StringUtils.isNotEmpty(dot.getBrandWorkerNumber())){
-                        req.setWxgno(dot.getBrandWorkerNumber());
-                        // 重值部分数据 以格力门店数据为准
-                        resetParameter(wdwxgGlMap, req,workerStreet);
-                    } else {
-                        extractedPCAS(req, workerStreet);
-                    }
-                    // 所属网点
-                    req.setWdno(dot.getBrandWebsitId());
-
-                    // 日志
-                    log.info("报文:{}",JSONObject.toJSONString(req));
-
-                    // 同步
-                    syncData(dot.getId(), wxgaddapi, item, req,dot.getBrandWebsitId());
-
-                    jyList.clear();
-                    syList.clear();
-                }
-            } catch (Exception ex) {
-                String msg ="同步失败";
-                if (ex.getMessage() != null){
-                    msg = ex.getMessage();
-                }
-                if (ex.getMessage() != null && ex.getMessage().trim().length() > 255) {
-                    msg = ex.getMessage().substring(0, 255);
-                }
-               updateWorkerUploadLag(item,msg);
-           }
-        }
+        uploadWorkerTOGreeService.procesUploadWorker();
 
         log.info("同步师傅信息到格力总部完成: \uF0B7{}",sdf.format(new Date()));
         return;
     }
 
-    // 商户网点与平台网点存在一对多,确保正确,所有平台网点的图片都必须生成
-    private boolean checkBXOutInsureCert(List<WorkerBrandAccount> workerBrandAccount) {
-        List<String> websitworkerids = new ArrayList<>();
-        workerBrandAccount.stream().forEach(wba->{
-            websitworkerids.add(wba.getWebsitId());
-        });
-        List<WebsitWorker> websitWorkers = websitWorkerService.lambdaQuery()
-                .in(WebsitWorker::getWebsitWorkerId,websitworkerids)
-                .eq(WebsitWorker::getOutInsureCert,"").list();
-        if (CollectionUtils.isNotEmpty(websitWorkers)){
-            return true;
-        }
-        return false;
-    }
-
-    private void resetParameter(Map<String, List<ItfTblWangdianPositionDownload>> wdwxgGlMap,
-                                WorkUploadInfo req,
-                                WorkerStreet workerStreet) {
-        if (wdwxgGlMap.containsKey(req.getWxgno())){
-            ItfTblWangdianPositionDownload i = wdwxgGlMap.get(req.getWxgno()).get(0);
-            req.setSfen(i.getSfen());
-            req.setCshi(i.getCshi());
-            req.setCounty(i.getCounty());
-            req.setXzhen(i.getXzhen());
-            req.setFlag(i.getFlag());
-            req.setFwryzpfj(i.getFwryzpfj());
-            req.setGzkkh(i.getGzkkh());
-            req.setHmdbz(i.getHmdbz());
-            req.setIfmessageFlag(i.getIfmessageFlag());
-            req.setPxhgkssj(i.getPxhgkssj());
-            req.setQbaoid(i.getQbaoid());
-            req.setQbcheackFlag(i.getQbcheackFlag());
-            req.setSfdswxgFlag(i.getSfdswxgFlag());
-            req.setSfhmdFlag(i.getSfhmdFlag());
-            req.setVipflag(i.getVipflag());
-            req.setMaxaznum(i.getMaxaznum());
-            req.setMaxwxnum(i.getMaxwxnum());
-        } else {
-            extractedPCAS(req, workerStreet);
-        }
-    }
-
-    private String extracted(List<SignSplb> jySignSplbList, List<SignSplb> sySignSplbList,
-                           List<SignSplb> jyList, List<SignSplb> syList, WebsitQXLB websitqypl,String brandWebsitNumber) {
-        String result = "";
-        List<String> syfwlbList = new ArrayList<>();
-        List<String> jyfwlbList = new ArrayList<>();
-
-        if (websitqypl.getJySignSplbList().size()<1 && websitqypl.getSySignSplbList().size()<1){
-            result="网点【"+brandWebsitNumber+"】暂未签约品类";
-            return result;
-        }
-
-        // 过滤商用品类
-        if (websitqypl.getSySignSplbList().size()>0 && sySignSplbList.size()>0){
-            // 大类名称 取交集
-            websitqypl.getSySignSplbList().get(0).getFwlbList().retainAll(sySignSplbList.get(0).getFwlbList());
-            syfwlbList.addAll(websitqypl.getSySignSplbList().get(0).getFwlbList());
-            // 品类
-            for (SignSplb sy : sySignSplbList){
-                for (SignSplb wdsy: websitqypl.getSySignSplbList()){
-                    if (wdsy.getSpdl().equals(sy.getSpdl())){
-                        /*if (wdsy.getSpxl()==null){
-                            result="网点:【"+brandWebsitNumber+"】商用大类【"+wdsy.getSpdl()+"】下未签约小类";
-                            return result;
-                        }*/
-                        SignSplb one = new SignSplb();
-                        one.setFwlbList(syfwlbList);
-                        one.setSpdl(wdsy.getSpdl());
-                        one.setSpdlName(wdsy.getSpdlName());
-                        if (wdsy.getSpxl()!=null){
-                            one.setSpxl(wdsy.getSpxl());
-                            one.setSpxlName(wdsy.getSpxlName());
-                        }
-                        syList.add(one);
-                    }
-                }
-            }
-        }
-
-        // 过滤家用品类
-        if (websitqypl.getJySignSplbList().size()>0 && jySignSplbList.size()>0){
-            // 大类名称 取交集
-            websitqypl.getJySignSplbList().get(0).getFwlbList().retainAll(jySignSplbList.get(0).getFwlbList());
-            jyfwlbList.addAll(websitqypl.getJySignSplbList().get(0).getFwlbList());
-            // 品类
-            for (SignSplb sy : jySignSplbList){
-                for (SignSplb wdjy: websitqypl.getJySignSplbList()){
-                    if (wdjy.getSpdl().equals(sy.getSpdl()) ){
-                        /*if (wdjy.getSpxl()==null){
-                            result="网点:【"+brandWebsitNumber+"】家用大类【"+wdjy.getSpdl()+"】下未签约小类";
-                            return result;
-                        }*/
-                        SignSplb one = new SignSplb();
-                        one.setFwlbList(jyfwlbList);
-                        one.setSpdl(wdjy.getSpdl());
-                        one.setSpdlName(wdjy.getSpdlName());
-                        if (wdjy.getSpxl()==null){
-                            one.setSpxl(wdjy.getSpxl());
-                            one.setSpxlName(wdjy.getSpxlName());
-                        }
-                        jyList.add(one);
-                    }
-                }
-            }
-        }
-
-        return result;
-    }
-
-    private Boolean checkNecessary(Worker worker, OutWorkerUpload item, WorkerCertificateInfo workerCertificateInfo) {
-        if (StringUtils.isEmpty(workerCertificateInfo.getSfzbh())){
-            updateWorkerUploadLag(item,"师傅缺失身份证信息,不上传");
-            return Boolean.TRUE;
-        }
-        // 可不买保险 虚构保单
-        if (StringUtils.isNotEmpty(workerCertificateInfo.getBxz()) && StringUtils.isEmpty(worker.getSafeNo())){
-            worker.setSafeNo("99999999");
-        }
-
-        if (StringUtils.isEmpty(worker.getSafeNo()) || StringUtils.isEmpty(workerCertificateInfo.getBxz())){
-            updateWorkerUploadLag(item,"师傅缺失保险信息,不上传");
-            return Boolean.TRUE;
-        }
-        if (StringUtils.isEmpty(workerCertificateInfo.getGkzbh())){
-            updateWorkerUploadLag(item,"师傅缺失高空证信息,不上传");
-            return Boolean.TRUE;
-        } else {
-            if (StringUtils.isEmpty(workerCertificateInfo.getGkzfsrq())){
-                updateWorkerUploadLag(item,"师傅高空证缺失证件复审时间:,不上传");
-                return Boolean.TRUE;
-            }
-        }
-        if (StringUtils.isNotEmpty(workerCertificateInfo.getZlgbh())){
-            if (StringUtils.isEmpty(workerCertificateInfo.getZlgfsrq())){
-                updateWorkerUploadLag(item,"师傅制冷证缺失证件复审时间:,不上传");
-                return Boolean.TRUE;
-            }
-        }
-
-        return Boolean.FALSE;
-    }
-
-    private Boolean getCertificateInfo(WorkerCertificateInfo workerCertificateInfo, String workerId, String websitWorkerId) throws ParseException {
-        // 身份证
-        if (getsfz(workerCertificateInfo, workerId)){
-            return Boolean.FALSE;
-        }
-        // 保险证
-        if (getbxz(workerCertificateInfo, workerId, websitWorkerId)){
-            return Boolean.FALSE;
-        }
-        // 高空作业证
-        if (getgkz(workerCertificateInfo, workerId)){
-            return Boolean.FALSE;
-        }
-        // 上岗资格证
-        if (getsgz(workerCertificateInfo, workerId)){
-            return Boolean.TRUE;
-        }
-        // 制冷工证
-        if (getzlz(workerCertificateInfo, workerId)){
-            return Boolean.TRUE;
-        }
-        // 驾驶证
-        if (getjsz(workerCertificateInfo, workerId)){
-            return Boolean.TRUE;
-        }
-
-        return Boolean.FALSE;
-    }
-
-    private Boolean getCertificateInfoWorkerCert(WorkerCertificateInfo workerCertificateInfo, String workerId) throws ParseException {
-        // 提取身份证信息 无不同步
-        if (getsfz(workerCertificateInfo, workerId)){
-            return Boolean.TRUE;
-        }
-
-        // 高空作业证
-        if (getgkz(workerCertificateInfo, workerId)){
-            return Boolean.TRUE;
-        }
-
-        return Boolean.FALSE;
-    }
-
-    // true为有信息
-    private Boolean getjsz(WorkerCertificateInfo workerCertificateInfo, String workerId) throws ParseException {
-        WorkerCert certificate = getCertificateInfo(workerId,"驾驶证");
-        // 无证件不处理
-        if (certificate == null){
-            return Boolean.FALSE;
-        }
-        // 身份证信息未同步,不操作
-        if (!certificate.getOutSyncStatus().equals(1)){
-            return Boolean.TRUE;
-        }
-        if (StringUtils.isNotEmpty(certificate.getOutFileUrl())){
-            workerCertificateInfo.setJszz(certificate.getOutFileUrl());
-        }
-        if (StringUtils.isNotEmpty(certificate.getOutFileUrl2())){
-            workerCertificateInfo.setJszf(certificate.getOutFileUrl2());
-        }
-
-        if (certificate.getExpireTime() !=null){
-            workerCertificateInfo.setJszyxq(datesub(certificate.getExpireTime()));
-        }
-        if (certificate.getReviewTime() !=null){
-            workerCertificateInfo.setJszfsrq(datesub(certificate.getReviewTime()));
-        }
-
-        return Boolean.FALSE;
-    }
-
-    // true为有信息
-    private Boolean getzlz(WorkerCertificateInfo workerCertificateInfo, String workerId) throws ParseException {
-        WorkerCert certificate = getCertificateInfo(workerId,"制冷证");
-        // 无证件不处理
-        if (certificate == null){
-            return Boolean.FALSE;
-        }
-        // 身份证信息未同步,不操作
-        if (!certificate.getOutSyncStatus().equals(1)){
-            return Boolean.TRUE;
-        }
-        if (StringUtils.isNotEmpty(certificate.getOutFileUrl())){
-            workerCertificateInfo.setZlgz(certificate.getOutFileUrl());
-        }
-        if (StringUtils.isNotEmpty(certificate.getOutFileUrl2())){
-            workerCertificateInfo.setZlgf(certificate.getOutFileUrl2());
-        }
-        workerCertificateInfo.setZlgbh(certificate.getCertNo());
-
-        if (certificate.getExpireTime() !=null){
-            workerCertificateInfo.setZlgyxq(datesub(certificate.getExpireTime()));
-        }
-        if (certificate.getReviewTime() !=null){
-            workerCertificateInfo.setZlgfsrq(datesub(certificate.getReviewTime()));
-        }
-
-        return Boolean.FALSE;
-    }
-
-    // true为有证件
-    private Boolean getsgz(WorkerCertificateInfo workerCertificateInfo, String workerId) throws ParseException {
-        WorkerCert certificate = getCertificateInfo(workerId,"上岗证");
-        // 无证件不处理
-        if (certificate == null){
-            return Boolean.FALSE;
-        }
-        // 身份证信息未同步,不操作
-        if (!certificate.getOutSyncStatus().equals(1)){
-            return Boolean.TRUE;
-        }
-        if (StringUtils.isNotEmpty(certificate.getOutFileUrl())){
-            workerCertificateInfo.setSgzgzz(certificate.getOutFileUrl());
-        }
-        if (StringUtils.isNotEmpty(certificate.getOutFileUrl2())){
-            workerCertificateInfo.setSgzgzf(certificate.getOutFileUrl2());
-        }
-        workerCertificateInfo.setSgzgzbh(certificate.getCertNo());
-
-        if (certificate.getExpireTime() !=null){
-            workerCertificateInfo.setSgzgzyxq(datesub(certificate.getExpireTime()));
-        }
-        if (certificate.getReviewTime() !=null){
-            workerCertificateInfo.setSgzgzfsrq(datesub(certificate.getReviewTime()));
-        }
-
-        return Boolean.FALSE;
-    }
-
-    // true为有信息
-    private Boolean getgkz(WorkerCertificateInfo workerCertificateInfo, String workerId) throws ParseException {
-        WorkerCert certificate = getCertificateInfo(workerId,"高空证");
-        // 无证件不处理
-        if (certificate == null){
-            return Boolean.TRUE;
-        }
-        // 身份证信息未同步,不操作
-        if (!certificate.getOutSyncStatus().equals(1)){
-            return Boolean.TRUE;
-        }
-        if (StringUtils.isNotEmpty(certificate.getOutFileUrl())){
-            workerCertificateInfo.setGkzz(certificate.getOutFileUrl());
-        }
-        if (StringUtils.isNotEmpty(certificate.getOutFileUrl2())){
-            workerCertificateInfo.setGkzf(certificate.getOutFileUrl2());
-        }
-        workerCertificateInfo.setGkzbh(certificate.getCertNo());
-
-        if (certificate.getExpireTime() !=null){
-            workerCertificateInfo.setGkzyxq(datesub(certificate.getExpireTime()));
-        }
-        if (certificate.getReviewTime() !=null){
-            workerCertificateInfo.setGkzfsrq(datesub(certificate.getReviewTime()));
-        }
-
-        return Boolean.FALSE;
-    }
-
-    // true为有信息
-    private Boolean getbxz(WorkerCertificateInfo workerCertificateInfo, String workerId, String websitWorkerId) throws ParseException {
-        WebsitWorker wk = websitWorkerService.lambdaQuery()
-                .eq(WebsitWorker::getWebsitWorkerId,websitWorkerId).one();
-
-        // 证件信息未同步,不操作
-        if (StringUtils.isEmpty(wk.getOutInsureCert())){
-            return Boolean.TRUE;
-        }
-        workerCertificateInfo.setBxz(wk.getOutInsureCert());
-        if (wk.getGmbxyxq() !=null){
-            workerCertificateInfo.setBxyxq(datesub(wk.getGmbxyxq()));
-        }
-
-        return Boolean.FALSE;
-    }
-
-    private Boolean getbxzBak(WorkerCertificateInfo workerCertificateInfo, String workerId) throws ParseException {
-        WorkerCert certificate = getCertificateInfo(workerId,"保险证");
-        // 无证件不处理
-        if (certificate == null){
-            return Boolean.TRUE;
-        }
-        // 身份证信息未同步,不操作
-        if (!certificate.getOutSyncStatus().equals(1)){
-            return Boolean.TRUE;
-        }
-        if (StringUtils.isNotEmpty(certificate.getOutFileUrl())){
-            workerCertificateInfo.setBxz(certificate.getOutFileUrl());
-        }
-        if (StringUtils.isNotEmpty(certificate.getOutFileUrl2())){
-            workerCertificateInfo.setBxf(certificate.getOutFileUrl2());
-        }
-
-        if (certificate.getExpireTime() !=null){
-            workerCertificateInfo.setBxyxq(datesub(certificate.getExpireTime()));
-        }
-        if (certificate.getReviewTime() !=null){
-            workerCertificateInfo.setBxfsrq(datesub(certificate.getReviewTime()));
-        }
-
-        return Boolean.FALSE;
-    }
-
-    private Boolean getsfz(WorkerCertificateInfo workerCertificateInfo, String workerId) throws ParseException {
-        WorkerCert certificate = getCertificateInfo(workerId,"身份证");
-        // 无证件不处理
-        if (certificate == null){
-            return Boolean.TRUE;
-        }
-        // 身份证信息未同步,不操作
-        if (!certificate.getOutSyncStatus().equals(1)){
-            return Boolean.TRUE;
-        }
-        if (StringUtils.isNotEmpty(certificate.getOutFileUrl())){
-            workerCertificateInfo.setSfzz(certificate.getOutFileUrl());
-        }
-        if (StringUtils.isNotEmpty(certificate.getOutFileUrl2())){
-            workerCertificateInfo.setSfzf(certificate.getOutFileUrl2());
-        }
-        workerCertificateInfo.setSfzbh(certificate.getCertNo());
-
-        if (certificate.getExpireTime() !=null){
-            workerCertificateInfo.setSfzyxq(datesub(certificate.getExpireTime()));
-        }
-        if (certificate.getReviewTime() !=null){
-            workerCertificateInfo.setSfzfsrq(datesub(certificate.getReviewTime()));
-        }
-
-        return Boolean.FALSE;
-    }
-
-    public String datesub(@NotNull Date d) {
-        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);
-        long localTime = d.getTime()-8*60*60*1000;
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTimeInMillis(localTime);
-        Date utcDate = new Date(calendar.getTimeInMillis());
-        return sf.format(utcDate);
-    }
-
-    public String dateToUTC(Date d) throws ParseException {
-        SimpleDateFormat sdft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        String format = "yyyy/MM/dd HH:mm:ss";
-        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);
-        SimpleDateFormat sdf = new SimpleDateFormat (format);
-        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
-        Date gmtTime = new Date(sdf.format(d));
-        return sf.format(gmtTime);
-    }
-
-    private WorkerCert getCertificateInfo(String workerId, String certName){
-        List<WorkerCert> recs = new ArrayList<>();
-        recs = workerCertService.lambdaQuery()
-                .eq(WorkerCert::getWorkerId, workerId)
-                .eq(WorkerCert::getCertName, certName)
-                .list();
-
-        // 无证件不处理
-        if (recs.size()<1){
-            return null;
-        }
-        return recs.get(0);
-    }
-
-    // 获取网点签约的品类信息 并过滤师傅的品类信息
-    private GreeResponseHelper getwdqylbxx(String apiPath, String wdno) throws Exception {
-        Map<String,String> req = new HashMap<>();
-
-        req.put("wdno",wdno);
-        GreeResponseHelper response = greeLogic.greePost(apiPath, JSONObject.toJSONString(req), publicService.getCompanyId(wdno));
-        return response;
-    }
-
-    private void syncData(String id, String apiPath, OutWorkerUpload item, WorkUploadInfo req,String brandWebsitId) throws Exception {
-        GreeResponseHelper response = greeLogic.greePost(apiPath, JSONObject.toJSONString(req), publicService.getCompanyId(brandWebsitId));
-
-        if (response.getStatus() == 200){
-            // 成功 修改同步状态
-            updateWorkerUploadSuccess(item);
-            // 修改师傅品牌网点帐号
-            updataWorker(id, response);
-        } else {
-            // 失败 修改同步状态
-            updateWorkerUploadError(item, response);
-        }
-    }
-
-    private void updateWorkerUploadError(OutWorkerUpload item, GreeResponseHelper response) {
-        OutWorkerUpload v = new OutWorkerUpload();
-        v.setSynReqId(item.getSynReqId());
-        v.setSyncStatus(99);
-        v.setSyncTime(new Date());
-        v.setSyncTimes(item.getSyncTimes()+1);
-
-        if (response.getMsg().length()>255){
-            v.setSyncErrorMsg(response.getMsg().substring(0,255));
-        } else {
-            v.setSyncErrorMsg(response.getMsg());
-        }
-
-        outWorkerUploadService.updateById(v);
-    }
-
-    // 这里只有修改
-    private void updataWorker(String id, GreeResponseHelper response) throws JsonProcessingException {
-        WorkerBrandAccount w = new WorkerBrandAccount();
-        w.setId(id);
-        w.setOutSyncTime(new Date());
-        WorkerUploadResponse resultData = JSONObject.parseObject(response.getData().toString(), WorkerUploadResponse.class);
-        w.setBrandWorkerNumber(resultData.getWxgno());
-        w.setBrandWorkerId(String.valueOf(resultData.getId()));
-        workerBrandAccountService.updateById(w);
-    }
-
-    private void updateWorkerUploadSuccess(OutWorkerUpload item) {
-        OutWorkerUpload v = new OutWorkerUpload();
-        v.setSynReqId(item.getSynReqId());
-        v.setSyncStatus(1);
-        v.setSyncTime(new Date());
-        v.setSyncTimes(item.getSyncTimes()+1);
-        v.setSyncErrorMsg("成功");
-        outWorkerUploadService.updateById(v);
-    }
-
-    private void getreq(WorkerCertificateInfo workerCertificateInfo, WorkUploadInfo req, Worker worker,String websitWorkerId) throws Exception {
-        List<ZJInfo> zjInfoList = new ArrayList<>();
-
-        // 证件信息
-        getcert(workerCertificateInfo, zjInfoList, worker, websitWorkerId);
-
-        // 生成数据对象
-        setReq(zjInfoList, req, worker,websitWorkerId);
-    }
-
-    private Boolean extractedPCAS(WorkUploadInfo req, WorkerStreet workerStreet) {
-        req.setSfen(workerStreet.getProvince());
-        req.setCshi(workerStreet.getCity());
-        req.setCounty(workerStreet.getArea());
-        req.setXzhen(workerStreet.getStreet());
-        return Boolean.TRUE;
-    }
-
-    private void setReq(List<ZJInfo> zjInfoList, WorkUploadInfo req, Worker worker, String websitWorkerId) {
-        WebsitWorker wb = websitWorkerService.lambdaQuery()
-                .eq(WebsitWorker::getWebsitWorkerId,websitWorkerId).one();
-        req.setZjInfoList(zjInfoList);
-
-        req.setCsgzns(worker.getJobAge());
-        // 必填
-        req.setDizhi(worker.getAddress());
-        req.setFacecheck(wb.getFaceCheck());
-        req.setFacepath("");
-        if (StringUtils.isNotEmpty(wb.getFacePath())){
-            req.setFacepath(wb.getFacePath());
-        }
-
-        // 必填
-        req.setFwryzpfj("www");
-        if (StringUtils.isNotEmpty(worker.getImgUrl())){
-            req.setFwryzpfj(worker.getImgUrl());
-        }
-        req.setGzkkh("");
-        if (StringUtils.isNotEmpty(worker.getBankAccount())){
-            req.setGzkkh(worker.getBankAccount());
-        }
-        req.setGzkssyh("");
-        if (StringUtils.isNotEmpty(worker.getBankDeposit())){
-            req.setGzkssyh(worker.getBankDeposit());
-        }
-        req.setHasfaceFlag(Boolean.FALSE);
-        if (wb.getHasFace()==1){
-            req.setHasfaceFlag(Boolean.TRUE);
-        }
-        req.setHmdbz("");
-        if (StringUtils.isNotEmpty(worker.getBlackListRemark())){
-            req.setHmdbz(worker.getBlackListRemark());
-        }
-        // 必填
-        req.setIfmessageFlag(Boolean.FALSE);
-        if (worker.getIsSmsNotice().equals("YES")){
-            req.setIfmessageFlag(Boolean.TRUE);
-        }
-        req.setNianl(worker.getAge());
-        req.setPxhgkssj("");
-        /*if (worker.getTrainPassTime() !=null ){
-            req.setPxhgkssj(datesub(worker.getTrainPassTime()));
-        }*/
-        req.setQbaoid("");
-        req.setQbcheackFlag(Boolean.FALSE);
-        req.setSfdswxgFlag(Boolean.FALSE);
-
-        // 必填
-        req.setSfhmdFlag(Boolean.FALSE);
-        if (worker.getIsBlackList().equals("YES")){
-            req.setSfhmdFlag(Boolean.TRUE);
-        }
-        req.setSfpxhgFlag(Boolean.TRUE);
-        /*if (worker.getTrainStatus()){
-            req.setSfpxhgFlag(Boolean.TRUE);
-        }*/
-        // 必填
-        req.setSfzstFlag(Boolean.FALSE);
-        if (worker.getIsZst().equals("YES")){
-            req.setSfzstFlag(Boolean.TRUE);
-        }
-        req.setVipflag(worker.getVipFlag());
-
-        req.setWxfensu(wb.getScore());
-        // 必填
-        req.setWxgmc(worker.getWorkerName());
-        req.setXcsgz("");
-        if (StringUtils.isNotEmpty(worker.getJob())){
-            req.setXcsgz(worker.getJob());
-        }
-        // 必填
-        req.setXingb(worker.getGender());
-
-        // 必填 必须初中以下
-        req.setXueli("中专");
-        if (StringUtils.isNotEmpty(worker.getEducation())){
-            req.setXueli(worker.getEducation());
-        }
-        // 必填
-        if (StringUtils.isNotEmpty(worker.getMobile())){
-            req.setYddh(worker.getMobile());
-        }
-        req.setMaxwxnum(wb.getRepairDayLimit());
-        req.setMaxaznum(wb.getInstallDayLimit());
-    }
-
-    private void getcert(WorkerCertificateInfo workerCertificateInfo,
-                            List<ZJInfo> zjInfoList, Worker worker,String websitWorkerId) throws Exception {
-        // 身份证  必要条件
-        if (StringUtils.isNotEmpty(workerCertificateInfo.getSfzbh())) {
-            ZJInfo zjInfo = new ZJInfo();
-            zjInfo.setZjbh(workerCertificateInfo.getSfzbh());
-            zjInfo.setZjmc("身份证");
-            zjInfo.setZjyxq("");
-
-            // 证件路径 必填
-            if (StringUtils.isNotEmpty(workerCertificateInfo.getSfzz())) {
-                zjInfo.setZjlj(workerCertificateInfo.getSfzz());
-            }
-            if (StringUtils.isNotEmpty(workerCertificateInfo.getSfzf())) {
-                if (StringUtils.isNotEmpty(workerCertificateInfo.getSfzz())) {
-                    zjInfo.setZjlj(zjInfo.getZjlj() + "," + workerCertificateInfo.getSfzf());
-                } else {
-                    zjInfo.setZjlj(workerCertificateInfo.getSfzf());
-                }
-
-            }
-            if (StringUtils.isNotEmpty(workerCertificateInfo.getSfzyxq())) {
-                zjInfo.setZjyxq(workerCertificateInfo.getSfzyxq());
-            }
-            if (StringUtils.isNotEmpty(workerCertificateInfo.getSfzfsrq())) {
-                zjInfo.setZjfssj(workerCertificateInfo.getSfzfsrq());
-            }
-
-            zjInfoList.add(zjInfo);
-        }
-
-        // 保险  必要条件
-        if (StringUtils.isNotEmpty(worker.getSafeNo())){
-            ZJInfo zjInfo = new ZJInfo();
-            WebsitWorker ww = new WebsitWorker();
-            ww = websitWorkerService.lambdaQuery()
-                    .eq(WebsitWorker::getWebsitWorkerId,websitWorkerId).one();
-
-            zjInfo.setZjbh(ww.getSafeCompany()+"/"+ ww.getSafeNo());
-            zjInfo.setZjmc("保险证");
-
-            // 证件路径 必填
-            if (StringUtils.isNotEmpty(workerCertificateInfo.getBxz())) {
-                zjInfo.setZjlj(workerCertificateInfo.getBxz());
-            }
-            if (StringUtils.isNotEmpty(workerCertificateInfo.getBxf())) {
-                if (StringUtils.isNotEmpty(workerCertificateInfo.getBxz())) {
-                    zjInfo.setZjlj(zjInfo.getZjlj() + "," + workerCertificateInfo.getBxf());
-                } else {
-                    zjInfo.setZjlj(workerCertificateInfo.getBxf());
-                }
-            }
-
-            if (StringUtils.isNotEmpty(workerCertificateInfo.getBxyxq())) {
-                zjInfo.setZjyxq(workerCertificateInfo.getBxyxq());
-            }
-            if (StringUtils.isNotEmpty(workerCertificateInfo.getBxfsrq())) {
-                zjInfo.setZjfssj(workerCertificateInfo.getBxfsrq());
-            }
-
-            zjInfoList.add(zjInfo);
-        }
-
-        // 高空作业证  必要条件
-        if (StringUtils.isNotEmpty(workerCertificateInfo.getGkzbh())
-                && StringUtils.isNotEmpty(workerCertificateInfo.getGkzyxq())){
-            ZJInfo zjInfo = new ZJInfo();
-            zjInfo.setZjbh(workerCertificateInfo.getGkzbh());
-            zjInfo.setZjmc("高空作业证");
-            zjInfo.setZjfssj(workerCertificateInfo.getGkzfsrq());
-
-            // 证件路径 必填
-            if (StringUtils.isNotEmpty(workerCertificateInfo.getGkzz())) {
-                zjInfo.setZjlj(workerCertificateInfo.getGkzz());
-            }
-            if (StringUtils.isNotEmpty(workerCertificateInfo.getGkzf())) {
-                if (StringUtils.isNotEmpty(workerCertificateInfo.getGkzz())) {
-                    zjInfo.setZjlj(zjInfo.getZjlj() + "," + workerCertificateInfo.getGkzf());
-                } else {
-                    zjInfo.setZjlj(workerCertificateInfo.getGkzf());
-                }
-            }
-
-            zjInfo.setZjfssj(workerCertificateInfo.getGkzfsrq());
-            zjInfo.setZjyxq(workerCertificateInfo.getGkzyxq());
-            zjInfoList.add(zjInfo);
-        }
-
-        // 上岗资格证
-        if (StringUtils.isNotEmpty(workerCertificateInfo.getSgzgzbh())){
-            ZJInfo zjInfo = new ZJInfo();
-            zjInfo.setZjbh(workerCertificateInfo.getSgzgzbh());
-            zjInfo.setZjmc("上岗资格证");
-
-            // 证件路径 必填
-            if (StringUtils.isNotEmpty(workerCertificateInfo.getSgzgzz())) {
-                zjInfo.setZjlj(workerCertificateInfo.getSgzgzz());
-            }
-            if (StringUtils.isNotEmpty(workerCertificateInfo.getSgzgzf())) {
-                if (StringUtils.isNotEmpty(workerCertificateInfo.getSgzgzz())) {
-                    zjInfo.setZjlj(zjInfo.getZjlj() + "," + workerCertificateInfo.getSgzgzf());
-                } else {
-                    zjInfo.setZjlj(workerCertificateInfo.getSgzgzf());
-                }
-            }
-
-            zjInfo.setZjfssj(workerCertificateInfo.getSgzgzfsrq());
-            zjInfo.setZjyxq(workerCertificateInfo.getSgzgzyxq());
-
-            zjInfoList.add(zjInfo);
-        }
-
-        // 制冷工证
-        if (StringUtils.isNotEmpty(workerCertificateInfo.getZlgbh())){
-            ZJInfo zjInfo = new ZJInfo();
-            zjInfo.setZjbh(workerCertificateInfo.getZlgbh());
-            zjInfo.setZjmc("制冷工证");
-
-            // 证件路径 必填
-            if (StringUtils.isNotEmpty(workerCertificateInfo.getZlgz())) {
-                zjInfo.setZjlj(workerCertificateInfo.getZlgz());
-            }
-            if (StringUtils.isNotEmpty(workerCertificateInfo.getZlgf())) {
-                if (StringUtils.isNotEmpty(workerCertificateInfo.getZlgz())) {
-                    zjInfo.setZjlj(zjInfo.getZjlj() + "," + workerCertificateInfo.getZlgf());
-                } else {
-                    zjInfo.setZjlj(workerCertificateInfo.getZlgf());
-                }
-            }
-
-            zjInfo.setZjfssj(workerCertificateInfo.getZlgfsrq());
-            zjInfo.setZjyxq(workerCertificateInfo.getZlgyxq());
-
-            zjInfoList.add(zjInfo);
-        }
-
-        // 驾驶证
-        if (StringUtils.isNotEmpty(workerCertificateInfo.getCph())){
-            ZJInfo zjInfo = new ZJInfo();
-            zjInfo.setZjbh(workerCertificateInfo.getCph());
-            zjInfo.setZjmc("驾驶证");
-
-            if (StringUtils.isNotEmpty(worker.getGpsMachineId())){
-                zjInfo.setZjbh(workerCertificateInfo.getCph()+"/"+ worker.getGpsMachineId());
-            }
-
-            // 证件路径 必填
-            if (StringUtils.isNotEmpty(workerCertificateInfo.getJszz())) {
-                zjInfo.setZjlj(workerCertificateInfo.getJszz());
-            }
-            if (StringUtils.isNotEmpty(workerCertificateInfo.getJszf())) {
-                if (StringUtils.isNotEmpty(workerCertificateInfo.getJszz())) {
-                    zjInfo.setZjlj(zjInfo.getZjlj() + "," + workerCertificateInfo.getJszf());
-                } else {
-                    zjInfo.setZjlj(workerCertificateInfo.getJszf());
-                }
-            }
-
-            zjInfo.setZjfssj(workerCertificateInfo.getJszfsrq());
-            zjInfo.setZjyxq(workerCertificateInfo.getJszyxq());
-
-            zjInfoList.add(zjInfo);
-        }
-    }
-
-    /**
-     * 签约大类,必须有对应的小类信息,否则无法上传(获取所有的大类对应的小类信息,再从网点本身过滤掉)
-     */
-    private Boolean getCategory(Brand brand, List<SignSplb> jySignSplbList, List<SignSplb> sySignSplbList,
-                                Worker worker, OutWorkerUpload itemi, String workerId) {
-        List<String> SYDictDaleiCode = new ArrayList<>();
-
-        // 提取品牌商所有的商用大类信息
-        List<SysDict> sysDicts = sysDictService.lambdaQuery()
-                .eq(SysDict::getDictType, DictTypeEnum.DICT_TYPE_MAIN_TYPE.getCode())
-                .eq(SysDict::getFlag, DictTypeEnum.DICT_TYPE_FLAG_SY.getCode()).list();
-        if (sysDicts !=null && sysDicts.size()>0){
-            SYDictDaleiCode = sysDicts.stream().map(SysDict::getDictCode).collect(Collectors.toList());
-        }
-
-        // 提取师傅的服务大类信息
-        List<WorkerServiceCategoryDetail> wxgCategoryRecs = workerServiceCategoryDetailService.lambdaQuery()
-                .eq(WorkerServiceCategoryDetail::getWorkerId, worker.getWorkerId())
-                .eq(WorkerServiceCategoryDetail::getWebsitId, workerId).list();
-
-        // 组装类别参数
-        if (wxgCategoryRecs !=null && wxgCategoryRecs.size()>0){
-            getCategoryt(brand, jySignSplbList, sySignSplbList, SYDictDaleiCode, wxgCategoryRecs);
-        }
-
-        if (jySignSplbList.size()<1 && sySignSplbList.size()<1){
-            // 写入表备注信息
-            updateWorkerUploadLag(itemi,"师傅签约的品类不能同时为空");
-            return Boolean.TRUE;
-        }
-
-        return Boolean.FALSE;
-    }
-
-    // 获取类别信息
-    // 师傅的服务类型分,安装、维修、配送等
-    // 格力网点答约的服务类目也要限制师傅的品数参数
-    private void getCategoryt(Brand brand, List<SignSplb> jySignSplbList, List<SignSplb> sySignSplbList,
-                             List<String> SYDictDaleiCode, List<WorkerServiceCategoryDetail> wxgCategoryRecs) {
-        List<SysDictRef> sysDictRefs = new ArrayList<>();
-
-        // 组装参数类别名称信息
-        List<String> fwlbList = getCategoryName(wxgCategoryRecs);
-
-        // 获取师傅在品牌商品对应的类别信息
-        getDictRefs(brand, wxgCategoryRecs, sysDictRefs);
-
-        // 组装品类参数
-        for (SysDictRef item:sysDictRefs){
-            // 大类对应的小类必填
-            // 获取品牌商的大类对应的所有小类信息
-            List<SysDict> categorys = sysDictService.lambdaQuery()
-                    .eq(SysDict::getDictType, DictTypeEnum.DICT_TYPE_SMALL_TYPE.getCode())
-                    .eq(SysDict::getParentDictType, DictTypeEnum.DICT_TYPE_MAIN_TYPE.getCode())
-                    .eq(SysDict::getStatus, DictTypeEnum.DICT_TYPE_ON.getCode())
-                    // .eq(SysDict::getDictCode, "120300") 测试用
-                    .eq(SysDict::getParentDictCode, item.getRefDictCode()).list();
-            if (categorys !=null && categorys.size()>0){
-                for (SysDict category :categorys){
-                    SignSplb v = new SignSplb();
-                    v.setSpdl(Integer.valueOf(item.getRefDictCode()));
-                    v.setSpdlName(item.getRefDictName());
-                    v.setSpxl(Integer.valueOf(category.getDictCode()));
-                    v.setSpxlName(category.getDictValue());
-                    v.setFwlbList(fwlbList);
-                    // 查看是否为商用
-                    if (SYDictDaleiCode.contains(item.getDictCode())){
-                        sySignSplbList.add(v);
-                    } else {
-                        jySignSplbList.add(v);
-                    }
-                }
-            }
-        }
-    }
-
-    @NotNull
-    private List<String> getCategoryName(List<WorkerServiceCategoryDetail> wxgCategoryRecs) {
-        // 服务类型 INSTALL=安装 REPAIR=维修  DELIVERY=配送
-        Map<String,String> serviceFwlbList = new HashMap<>();
-        for (WorkerServiceCategoryDetail w: wxgCategoryRecs){
-            if (w.getType().equals("INSTALL")){
-                serviceFwlbList.put("INSTALL","安装");
-            } else if (w.getType().equals("REPAIR")){
-                serviceFwlbList.put("REPAIR\"","维修");
-            } else if (w.getType().equals("DELIVERY")){
-                serviceFwlbList.put("DELIVERY","配送");
-            }
-        }
-        List<String> fwlbList = new ArrayList<>();
-        Set<String> keySet = serviceFwlbList.keySet();
-        for (String key : keySet){
-            String val = serviceFwlbList.get(key);
-            fwlbList.add(val);
-        }
-        return fwlbList;
-    }
-
-    private void getDictRefs(Brand brand, List<WorkerServiceCategoryDetail> wxgCategoryRecs, List<SysDictRef> sysDictRefs) {
-        List<String> wxgCaregoryIds = wxgCategoryRecs.stream().map(WorkerServiceCategoryDetail::getMainId).collect(Collectors.toList());
-
-        // 提取师傅所在品牌商对应的大类信息
-        List<SysDictRef> sysDictRefRecs =  sysDictRefService.lambdaQuery()
-                .eq(SysDictRef::getBrandId, brand.getBrandId())
-                .eq(SysDictRef::getDictType, DictTypeEnum.DICT_TYPE_MAIN_TYPE.getCode())
-                .in(SysDictRef::getDictCode,wxgCaregoryIds).list();
-
-        // sysDictRefs 内的大类信息需去除无效的大类信息
-        // 提取品牌商所有无效的大类信息
-        List<SysDict> daleis = sysDictService.lambdaQuery()
-                .eq(SysDict::getDictType, DictTypeEnum.DICT_TYPE_MAIN_TYPE.getCode())
-                .eq(SysDict::getStatus, DictTypeEnum.DICT_TYPE_OFF.getCode())
-                .list();
-        if ((daleis !=null && daleis.size()>0) && (sysDictRefRecs!=null && sysDictRefRecs.size()>0)){
-            List<String> daleiCodes = new ArrayList<>();
-            daleiCodes = daleis.stream().map(SysDict::getDictCode).collect(Collectors.toList());
-            for (SysDictRef s: sysDictRefRecs){
-                if (!daleiCodes.contains(s.getDictCode())){
-                    sysDictRefs.add(s);
-                }
-            }
-        } else {
-            sysDictRefs.addAll(sysDictRefRecs);
-        }
-
-    }
-
-
-    @Nullable
-    private WorkerStreet getWorkerStreet(OutWorkerUpload item, Worker worker) {
-        List<WorkerStreet> wss = workerStreetService.lambdaQuery()
-                .eq(WorkerStreet::getWorkerId, worker.getWorkerId()).list();
-        if (wss == null || wss.size()<1){
-            // 写入表备注信息
-            updateWorkerUploadLag(item,"师傅服务区域信息不存在");
-            return null;
-        }
-        WorkerStreet ws = wss.get(0);
-        // 必填参数 省份-城市-区县-乡镇
-        /*if (StringUtils.isEmpty(ws.getProvince()) || StringUtils.isEmpty(ws.getCity())
-        || StringUtils.isEmpty(ws.getArea()) || StringUtils.isEmpty(ws.getStreet())){
-            updateWorkerUploadLag(item,"师傅所在省市区镇信息缺失");
-            return null;
-        }
-*/
-        return ws;
-    }
-
-    private void updateWorkerUploadLag(OutWorkerUpload item, String msg) {
-        OutWorkerUpload v = new OutWorkerUpload();
-        v.setSynReqId(item.getSynReqId());
-        v.setSyncTime(new Date());
-        v.setSyncErrorMsg(msg);
-        if (msg.length()>255){
-            v.setSyncErrorMsg(msg.substring(0,255));
-        }
-        outWorkerUploadService.updateById(v);
-    }
-
-    @Nullable
-    private List<WorkerBrandAccount> getWorkerBrandAccount(Brand brand, OutWorkerUpload item, Worker worker) {
-        List<WorkerBrandAccount> workerBrandAccount = workerBrandAccountService.lambdaQuery()
-                .eq(WorkerBrandAccount::getWorkerId, worker.getWorkerId())
-                .eq(WorkerBrandAccount::getGroupCompanyId, brand.getBrandId())
-                .eq(WorkerBrandAccount::getBrandWorkerStatus,"ON")
-                .eq(WorkerBrandAccount::getDel, 0)
-                .orderByAsc(WorkerBrandAccount::getCreateTime)
-                .list();
-
-        if (CollectionUtils.isEmpty(workerBrandAccount)){
-            // 写入表备注信息
-            updateWorkerUploadLag(item,"师傅未选择品牌商");
-            return null;
-        }
-        return workerBrandAccount;
-    }
-
-
-    private Boolean checkWebsitSum(List<WorkerBrandAccount> workerBrandAccount, OutWorkerUpload item){
-        // 格力一个师傅最多三个有效网点超3个网点不能同步
-        Integer sum = 0;
-        for (WorkerBrandAccount wba :workerBrandAccount){
-            if (wba.getBrandWorkerStatus().equals("ON")){
-                sum ++;
-            }
-        }
-        if (sum>3) {
-            // 写入表备注信息
-            updateWorkerUploadLag(item,"师傅所在有效网点数超过3个无法同步");
-            return Boolean.TRUE;
-        }
-
-        return Boolean.FALSE;
-    }
-
-
-    @Nullable
-    private Worker getWorker(OutWorkerUpload item) {
-        Worker worker = workerService.lambdaQuery()
-                .eq(Worker::getWorkerId, item.getWorkerId())
-                .eq(Worker::getStatus,"ON").one();
-        if (worker ==null){
-            return null;
-        }
-        return worker;
-    }
-
-    private List<OutWorkerUpload> getWorkerUploads() {
-        // 同步标志-synStatus(0:待同步;1:已同步;99:同步失败)
-        List<OutWorkerUpload> recs;
-        LambdaQueryWrapper<OutWorkerUpload> queryWrapper = new LambdaQueryWrapper<OutWorkerUpload>()
-                .eq(OutWorkerUpload::getSyncStatus,0)
-                .or(wrapper->wrapper.eq(OutWorkerUpload::getSyncStatus,99)
-                        .le(OutWorkerUpload::getSyncTimes,10));
-        recs = outWorkerUploadService.list(queryWrapper);
-        return recs;
-    }
 }