yaozhixue vor 2 Jahren
Ursprung
Commit
5fa96f4d0a
100 geänderte Dateien mit 1649 neuen und 271 gelöschten Zeilen
  1. 17 0
      src/main/java/com/zfire/jiasm/syncdata/constant/RecycleSynStatusEnum.java
  2. 64 3
      src/main/java/com/zfire/jiasm/syncdata/download/order/RecycleDownload.java
  3. 21 0
      src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleAcquisitionDownloadBean.java
  4. 914 0
      src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleAcquisitionLogic.java
  5. 26 0
      src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleAcquisitionUploadBean.java
  6. 220 184
      src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleAssignLogic.java
  7. 57 0
      src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleHsptJjcjBean.java
  8. 24 0
      src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleHsptJjcjDownloadBean.java
  9. 34 0
      src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleHsptJjcjFjBean.java
  10. 5 0
      src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleHsptJjcjFjDownloadBean.java
  11. 5 0
      src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleHsptJjcjFjUploadBean.java
  12. 31 0
      src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleHsptJjcjTmmxBean.java
  13. 5 0
      src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleHsptJjcjTmmxDownloadBean.java
  14. 5 0
      src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleHsptJjcjTmmxUploadBean.java
  15. 40 0
      src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleHsptJjcjUploadBean.java
  16. 97 0
      src/main/java/com/zfire/jiasm/syncdata/gree/recycle/stock/RecycleStockBarcodeInfoUploadBean.java
  17. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminFastEntryPlusTempController.java
  18. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminFieldPlusTempController.java
  19. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminModuleFavoritesPlusTempController.java
  20. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminModulePlusTempController.java
  21. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminRolePlusTempController.java
  22. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminUserModuleRelaPlusTempController.java
  23. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminUserPlusTempController.java
  24. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminUserRoleRelaPlusTempController.java
  25. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminWebsitPlusTempController.java
  26. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminWebsitProductTypeRelaPlusTempController.java
  27. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AdminWebsitSlavePlusTempController.java
  28. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/AreaPlusTempController.java
  29. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/BrandLbsRelatePlusTempController.java
  30. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/BrandPlusTempController.java
  31. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/BrandWebsitPlusTempController.java
  32. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/CityPlusTempController.java
  33. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ComDetailLogPlusTempController.java
  34. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ComDetailPlusTempController.java
  35. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ComListPlusTempController.java
  36. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/CommonFilePlusTempController.java
  37. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/CompanyCaAuthPlusTempController.java
  38. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/CompanyRecordManagePlusTempController.java
  39. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ContractTemplatePlusTempController.java
  40. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/CustomerInformationCategoryPlusTempController.java
  41. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/CustomerInformationPlusTempController.java
  42. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/CustomerInformationWebsitPlusTempController.java
  43. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ImgCarouselManagePlusTempController.java
  44. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/InstallChargeConfigPlusTempController.java
  45. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsureAgreePlusTempController.java
  46. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsureEmailPlusTempController.java
  47. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsureEmailRecordPlusTempController.java
  48. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsurePlusTempController.java
  49. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsureRangePlusTempController.java
  50. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsureWorkerCommercialFilePlusTempController.java
  51. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsureWorkerCommercialPlusTempController.java
  52. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/InsureWorkerRecordPlusTempController.java
  53. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralDoublePlusTempController.java
  54. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralGradeConfigurePlusTempController.java
  55. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralGradeExplainPlusTempController.java
  56. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralGradeSkillPlusTempController.java
  57. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralOffsetPlusTempController.java
  58. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralScorePlusTempController.java
  59. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralSkillLabelPlusTempController.java
  60. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/IntegralWorkerApplyPlusTempController.java
  61. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblAssignGzdmDowloadPlusTempController.java
  62. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblAssignXqxlDowloadPlusTempController.java
  63. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblAssignXxlbDowloadPlusTempController.java
  64. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblAssignXxlyDowloadPlusTempController.java
  65. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblAssignXxqdDowloadPlusTempController.java
  66. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblAssignYhsxWxDowloadPlusTempController.java
  67. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblAzAssignXslxDowloadPlusTempController.java
  68. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblCityDownloadPlusTempController.java
  69. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblCityJdxzDownloadPlusTempController.java
  70. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblCountyDownloadPlusTempController.java
  71. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblProvinceDownloadPlusTempController.java
  72. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblSplbDaleiDownloadPlusTempController.java
  73. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblSplbJixinDownloadPlusTempController.java
  74. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblSplbXiaoleiDownloadPlusTempController.java
  75. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblSplbXilieDownloadPlusTempController.java
  76. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblWangdianWxgDownloadPlusTempController.java
  77. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblXinWangdianDownloadPlusTempController.java
  78. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ItfTblYhsxViprankDowloadPlusTempController.java
  79. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/LabelCurrencyPlusTempController.java
  80. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/LabelPlusTempController.java
  81. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/LbsAmapPlusTempController.java
  82. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/NoticePlusTempController.java
  83. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/NoticeRecordPlusTempController.java
  84. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/OperationLogPlusTempController.java
  85. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ProductPlusTempController.java
  86. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ProductSeriesPlusTempController.java
  87. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ProvincePlusTempController.java
  88. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/QualificationsManagePlusTempController.java
  89. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/RepairBugPlusTempController.java
  90. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/RepairProjectPlusTempController.java
  91. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/SmsRecordPlusTempController.java
  92. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/StreetPlusTempController.java
  93. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/SysDictPlusTempController.java
  94. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/SysDictRefPlusTempController.java
  95. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/SysDictTypePlusTempController.java
  96. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/ToolPlusTempController.java
  97. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/UserFeedbackPlusTempController.java
  98. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/UserPlusTempController.java
  99. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/WebsitEnclosureFilePlusTempController.java
  100. 1 1
      src/main/java/com/zfire/jiasm/syncdata/plus/controller/WebsitExamineRecordPlusTempController.java

+ 17 - 0
src/main/java/com/zfire/jiasm/syncdata/constant/RecycleSynStatusEnum.java

@@ -0,0 +1,17 @@
+package com.zfire.jiasm.syncdata.constant;
+
+import lombok.Getter;
+
+@Getter
+public enum RecycleSynStatusEnum {
+	UN_SYN(0), //未同步
+	SYN(1), //已同步
+	SYN_FEEDBACK(44), //已同步反馈明细
+	SYN_ACQUISITION(66), //已同步采集数据
+	FAIL(99); //"同步失败"
+	
+	private Integer code;
+	private RecycleSynStatusEnum(Integer code) {
+		this.code = code;
+	}
+}

+ 64 - 3
src/main/java/com/zfire/jiasm/syncdata/download/order/RecycleDownload.java

@@ -1,6 +1,6 @@
 package com.zfire.jiasm.syncdata.download.order;
 
-
+import com.zfire.jiasm.syncdata.gree.recycle.RecycleAcquisitionLogic;
 import com.zfire.jiasm.syncdata.gree.recycle.RecycleAssignLogic;
 import com.zfire.jiasm.syncdata.gree.recycle.RecycleAssignParamBean;
 import lombok.extern.slf4j.Slf4j;
@@ -16,9 +16,16 @@ import org.springframework.stereotype.Component;
 public class RecycleDownload {
     @Autowired
     RecycleAssignLogic recycleAssignLogic;
+    @Autowired
+    RecycleAcquisitionLogic recycleAcquisitionLogic;
 
 
-    // 1:下载回收工单数据
+    /**
+     * 1:下载回收工单数据
+     * 生成记录表数据、回收工单主表、回收工单反馈明细表、回收工单产品明细表 放到download表中(有则修改,无则插入,主键不同,只有插入)
+     * 记录表中的任务号每条记录单独一个任务号;本次拉取数据批次号相同
+     * @throws Exception
+     */
     @Scheduled(fixedDelay = 1 * 5 * 1000)
     public void download() throws Exception {
         if (1 == 1) {
@@ -26,12 +33,66 @@ public class RecycleDownload {
         }
 
         RecycleAssignParamBean recycleAssignParamBean = new RecycleAssignParamBean();
-        // type说明: all--全量  active--获取未完工/未关闭/未作废的工单  getExtend--获取更新数据:
+        // type说明: all--全量  active--获取未完工/未关闭/未作废的工单  getExtend--获取更新数据
+        // 一次取100工单
         recycleAssignParamBean.setType("getExtend");
         recycleAssignParamBean.setPage("1");
         recycleAssignParamBean.setPageSize("100");
         recycleAssignLogic.assign(recycleAssignParamBean);
     }
 
+    /**
+     * 2:从总部获取工单的反馈明细数据 - 只确认刚下载的(SynStatus=greeStatSynStatus=0) 有业务处理过的回收工单不做与总部的确认动作
+     *   与总部进行数据核实 因数据量大,确认动作会带回反馈明细数据需同步到反馈明细表
+     *         成功时同步 记录表、反馈明细表 状态记录 SynStatus=44代表反馈明细已同步
+     *         失败时 记录表、过程反馈、明细表,状态记录 SynStatus=99
+     * @throws Exception
+     */
+    @Scheduled(fixedDelay = 10 * 1000)
+    private void updateFkmx() throws Exception {
+        recycleAssignLogic.updateFeedback();
+    }
+
+    /**
+     * 3:从总部获取回收工单对应的采集数据、附件数据、条码明细数据 - 只获取已成功获取反馈明细的工单 (SynStatus=44 greeStatSynStatus=0)
+     *     成功 三个表与记录表状态 SynStatus=66
+     *     失败 三个表与记录表状态 SynStatus=99
+     * @throws Exception
+     */
+    @Scheduled(fixedDelay = 10 * 1000)
+    private void updateAcquisition() {
+        recycleAcquisitionLogic.updateAcquisition();
+    }
+
+    /**
+     * 4:与总部进行确认下载完成  - 只确认成功获取采集数据的工单 (SynStatus=66 greeStatSynStatus=0)
+     * 本地download表中提取 回收工单主表、过程反馈、明细表中数据
+     *   与总部进行数据确认
+     *         成功时 记录表、主表、回收明细表 三表改状态 gree_stat_syn_status =1
+     *         失败时
+     *             任务表 改状态 syn_status = 99 gree_stat_syn_status =99
+     *             回收工单主表  改状态 gree_stat_syn_status =1
+     *             回收明细表 改状态 gree_stat_syn_status = 99
+     * @throws Exception
+     */
+    @Scheduled(fixedDelay = 10 * 1000)
+    private void updateExtend() throws Exception {
+        recycleAssignLogic.updateExtend();
+    }
+
+
+    /**
+     * 5:同步到业务表
+     * @throws Exception
+     */
+    @Scheduled(fixedDelay = 10 * 1000)
+    private void updateRecycleAssignDownloadEntity2Business() {
+        if (1 == 1) {
+            return;
+        }
+
+        recycleAssignLogic.processBusiness();
+    }
+
 
 }

+ 21 - 0
src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleAcquisitionDownloadBean.java

@@ -0,0 +1,21 @@
+package com.zfire.jiasm.syncdata.gree.recycle;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel
+public class RecycleAcquisitionDownloadBean {
+	
+	@ApiModelProperty("采集主表")
+	private RecycleHsptJjcjDownloadBean jjcj;
+	
+	@ApiModelProperty("附件表")
+	private List<RecycleHsptJjcjFjDownloadBean> fjlist;
+	
+	@ApiModelProperty("条码明细表")
+	private List<RecycleHsptJjcjTmmxDownloadBean> tmmxlist;
+}

+ 914 - 0
src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleAcquisitionLogic.java

@@ -0,0 +1,914 @@
+package com.zfire.jiasm.syncdata.gree.recycle;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.zfire.jiasm.syncdata.constant.Constant;
+import com.zfire.jiasm.syncdata.constant.GreeSynStatusEnum;
+import com.zfire.jiasm.syncdata.constant.RecycleSynStatusEnum;
+import com.zfire.jiasm.syncdata.gree.helper.GreeResponseHelper;
+import com.zfire.jiasm.syncdata.gree.recycle.stock.RecycleStockBarcodeInfoUploadBean;
+import com.zfire.jiasm.syncdata.plus.entity.*;
+import com.zfire.jiasm.syncdata.plus.service.*;
+import io.jsonwebtoken.lang.Collections;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.integration.redis.util.RedisLockRegistry;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+
+
+@Slf4j
+@Service
+public class RecycleAcquisitionLogic {
+	
+	
+	@Autowired
+	GreeLogicT greeLogic;
+	@Autowired
+	ItfTblRecycleHsptJjcjDownloadService recycleHsptJjcjDownloadService;
+	@Autowired
+	ItfTblRecycleHsptJjcjFjDownloadService recycleHsptJjcjFjDownloadService;
+	@Autowired
+	ItfTblRecycleHsptJjcjTmmxDownloadService recycleHsptJjcjTmmxDownloadService;
+	@Autowired
+	ItfTblRecycleAssignBatchDownloadRecService recycleAssignBatchDownloadRecService;
+	@Autowired
+	ItfTblRecycleHsptJjcjBatchUploadRecService recycleHsptJjcjBatchUploadRecService;
+	@Autowired
+	ItfTblRecycleHsptJjcjUploadService recycleHsptJjcjUploadService;
+	@Autowired
+	ItfTblRecycleHsptJjcjFjUploadService recycleHsptJjcjFjUploadService;
+	@Autowired
+	ItfTblRecycleHsptJjcjTmmxUploadService recycleHsptJjcjTmmxUploadService;
+	@Autowired
+	ItfTblRecyleStockInfoUploadTaskListService recyleStockInfoUploadTaskListService;
+	@Autowired
+	FaOrderRecycleUploadEventService orderRecycleUploadEventService;
+	@Autowired
+	ItfTblRecycleStockBarcodeInfoUploadService recycleStockBarcodeInfoUploadService;
+	@Autowired
+	RedisLockRegistry redisLockRegistry;
+
+
+
+
+
+
+	/*
+	@Autowired
+	OrderRecycleAssignAnnexService orderRecycleAssignAnnexService;
+	@Autowired
+	private WebsitService websitService;
+	@Autowired
+	private WebsitWorkerService websitWorkerService;
+	@Autowired
+	OrderRecycleAssignService orderRecycleAssignService;
+	@Autowired
+	OrderRecycleAssignMxService orderRecycleAssignMxService;
+	@Autowired
+	OrderRecycleAssignCollectionService orderRecycleAssignCollectionService;
+	*/
+
+	private ObjectMapper mapper;
+	
+	@Autowired
+	public RecycleAcquisitionLogic() {
+		this.mapper = new ObjectMapper();
+		SimpleDateFormat smt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		this.mapper.setDateFormat(smt);
+		this.mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+	}
+
+
+
+	@Transactional
+	public GreeResponseHelper acquisition(RecycleAssignBean bean) throws Exception {
+		final String apiPath = Constant.GreeApiPath.RECYCLE_ACQUISITION;
+		Map<String, Object> param = new HashMap<>();
+		param.put("type", "get");
+		param.put("pgguid", bean.getPgguid());
+		GreeResponseHelper response = greeLogic.greePost(apiPath, param, 1);
+		ItfTblRecycleAssignBatchDownloadRec rec = recycleAssignBatchDownloadRecService.lambdaQuery()
+				.eq(ItfTblRecycleAssignBatchDownloadRec::getDownloadTaskNo, bean.getTaskNo()).one();
+
+		if( 200 == response.getStatus()) {
+			// 新增回收工单采集主表数据、附件数据、条码明细数据 并修改下载记录表的状态 synStatus=66 代表已下载采集数据
+			addData(bean, response, rec);
+		}else {
+			// 下载回收工单对应的采集数据失败 采集主表、附件表、条码表、下载记录表的状态synStatus=99
+			updateData(bean, response, rec);
+		}
+		return null;
+	}
+
+	private void updateData(RecycleAssignBean bean, GreeResponseHelper response, ItfTblRecycleAssignBatchDownloadRec rec) {
+		//回收工单采集数据下载失败
+		rec.setSynStatus(99);
+		rec.setSynErrMsg(response.getMsg());
+		rec.setSynReqTime(new Date());
+		rec.setLastModifiedDate(new Date());
+		recycleAssignBatchDownloadRecService.saveOrUpdate(rec);
+		// 下载失败原表中一般也不会有数据 处理一下也不会有问题
+		List<ItfTblRecycleHsptJjcjDownload> jjcjList = recycleHsptJjcjDownloadService.lambdaQuery()
+				.eq(ItfTblRecycleHsptJjcjDownload::getDownloadTaskNo, bean.getTaskNo()).list();
+		List<ItfTblRecycleHsptJjcjFjDownload> fjlist = recycleHsptJjcjFjDownloadService.lambdaQuery()
+				.eq(ItfTblRecycleHsptJjcjFjDownload::getDownloadTaskNo, bean.getTaskNo()).list();
+		List<ItfTblRecycleHsptJjcjTmmxDownload> tmmxlist = recycleHsptJjcjTmmxDownloadService.lambdaQuery()
+				.eq(ItfTblRecycleHsptJjcjTmmxDownload::getDownloadTaskNo, bean.getTaskNo()).list();
+		if(null != jjcjList && !jjcjList.isEmpty()) {
+			jjcjList.stream().forEach(o->{
+					o.setSynStatus(rec.getSynStatus());
+					o.setSynErrMsg(rec.getSynErrMsg());
+					o.setLastModifiedDate(new Date());
+					o.setSynReqTime(new Date());
+				});
+			recycleHsptJjcjDownloadService.saveOrUpdateBatch(jjcjList);
+			jjcjList.clear();
+		}
+		if(null != fjlist && !fjlist.isEmpty()) {
+			fjlist.stream().forEach(o->{
+					o.setSynStatus(rec.getSynStatus());
+					o.setSynErrMsg(rec.getSynErrMsg());
+					o.setLastModifiedDate(new Date());
+					o.setSynReqTime(new Date());
+				});
+			recycleHsptJjcjFjDownloadService.saveOrUpdateBatch(fjlist);
+			fjlist.clear();
+		}
+		if(null != tmmxlist && !tmmxlist.isEmpty()) {
+			tmmxlist.stream().forEach(o->{
+					o.setSynStatus(rec.getSynStatus());
+					o.setSynErrMsg(rec.getSynErrMsg());
+					o.setLastModifiedDate(new Date());
+					o.setSynReqTime(new Date());
+				});
+			recycleHsptJjcjTmmxDownloadService.saveOrUpdateBatch(tmmxlist);
+			tmmxlist.clear();
+		}
+	}
+
+	private void addData(RecycleAssignBean bean, GreeResponseHelper response, ItfTblRecycleAssignBatchDownloadRec rec) throws JsonProcessingException {
+		List<RecycleAcquisitionDownloadBean> responsebeanList = mapper.readValue((String) response.getData(), new TypeReference<List<RecycleAcquisitionDownloadBean>>() {});
+		if( null != responsebeanList && !responsebeanList.isEmpty() ) {
+			responsebeanList.stream().forEach(responseBean->{
+				// 采集主表
+				List<ItfTblRecycleHsptJjcjDownload> jjcjList = new ArrayList<>();
+				// 采集附件表
+				List<ItfTblRecycleHsptJjcjFjDownload> fjList = new ArrayList<>();
+				// 采集条码明细表
+				List<ItfTblRecycleHsptJjcjTmmxDownload> tmmxList = new ArrayList<>();
+				try {
+					// 提取采集主表数据
+					getJjcjList(bean, responseBean, jjcjList);
+					// 提取采集附件表表数据
+					getFjList(bean, responseBean, fjList);
+					// 提取采集条码明细表数据
+					getTmmxList(bean, responseBean, tmmxList);
+					// 保存数据
+					inputData(jjcjList, fjList, tmmxList);
+				} catch (JsonProcessingException ex) {
+					log.error("复制RecycleHsptJjcjDownloadBean bean到RecycleHsptJjcjFjDownload entity异常: {}", ex.getMessage());
+				}
+			});
+		}
+		//更新状态为已同步 增加一个中间状态,代表数据采集已完成
+		rec.setSynStatus(Constant.SynStatus.SYN_ACQUISITION.getCode());
+		rec.setSynReqTime(new Date());
+		rec.setLastModifiedDate(new Date());
+		recycleAssignBatchDownloadRecService.saveOrUpdate(rec);
+	}
+
+	private void inputData(List<ItfTblRecycleHsptJjcjDownload> jjcjList, List<ItfTblRecycleHsptJjcjFjDownload> fjList, List<ItfTblRecycleHsptJjcjTmmxDownload> tmmxList) {
+		if(null != jjcjList && !jjcjList.isEmpty()) {
+			recycleHsptJjcjDownloadService.saveOrUpdateBatch(jjcjList);
+			jjcjList.clear();
+		}
+		if(null != fjList && !fjList.isEmpty()) {
+			recycleHsptJjcjFjDownloadService.saveOrUpdateBatch(fjList);
+			fjList.clear();
+		}
+		if(null != tmmxList && !tmmxList.isEmpty()) {
+			recycleHsptJjcjTmmxDownloadService.saveOrUpdateBatch(tmmxList);
+			tmmxList.clear();
+		}
+	}
+
+	private void getTmmxList(RecycleAssignBean bean, RecycleAcquisitionDownloadBean responseBean, List<ItfTblRecycleHsptJjcjTmmxDownload> tmmxList) {
+		List<RecycleHsptJjcjTmmxDownloadBean> tmmxBeanList = responseBean.getTmmxlist();
+		if(null != tmmxBeanList && !tmmxBeanList.isEmpty()) {
+			tmmxBeanList.stream().forEach(tmmxBean->{
+				try {
+					ItfTblRecycleHsptJjcjTmmxDownload tmmx = mapper.readValue(mapper.writeValueAsString(tmmxBean), ItfTblRecycleHsptJjcjTmmxDownload.class);
+					tmmx.setCreatedDate(new Date());
+					tmmx.setLastModifiedDate(new Date());
+					tmmx.setDownloadBatchNo(bean.getBatchNo());
+					tmmx.setDownloadTaskNo(bean.getTaskNo());
+					tmmx.setSynStatus(Constant.SynStatus.SYN_ACQUISITION.getCode());//增加一个中间状态,代表数据采集已完成
+					tmmx.setSynReqTime(new Date());
+					tmmxList.add(tmmx);
+				} catch (JsonProcessingException e) {
+					log.error("复制RecycleHsptJjcjTmmxDownload bean到RecycleHsptJjcjTmmxDownload entity异常: {}", e.getMessage());
+				}
+			});
+		}
+	}
+
+	private void getFjList(RecycleAssignBean bean, RecycleAcquisitionDownloadBean responseBean, List<ItfTblRecycleHsptJjcjFjDownload> fjList) {
+		List<RecycleHsptJjcjFjDownloadBean> fjBeanlist = responseBean.getFjlist();
+		if( null != fjBeanlist && !fjBeanlist.isEmpty()) {
+			fjBeanlist.stream().forEach(fjBean->{
+				try {
+					ItfTblRecycleHsptJjcjFjDownload fj = mapper.readValue(mapper.writeValueAsString(fjBean), ItfTblRecycleHsptJjcjFjDownload.class);
+					fj.setCreatedDate(new Date());
+					fj.setLastModifiedDate(new Date());
+					fj.setDownloadBatchNo(bean.getBatchNo());
+					fj.setDownloadTaskNo(bean.getTaskNo());
+					fj.setSynStatus(Constant.SynStatus.SYN_ACQUISITION.getCode());//增加一个中间状态,代表数据采集已完成
+					fj.setSynReqTime(new Date());
+					fjList.add(fj);
+				} catch (JsonProcessingException e) {
+					log.error("复制RecycleHsptJjcjFjDownload bean到RecycleHsptJjcjFjDownload entity异常: {}", e.getMessage());
+				}
+			});
+		}
+	}
+
+	private void getJjcjList(RecycleAssignBean bean, RecycleAcquisitionDownloadBean responseBean, List<ItfTblRecycleHsptJjcjDownload> jjcjList) throws JsonProcessingException {
+		ItfTblRecycleHsptJjcjDownload newJjcj = mapper.readValue(mapper.writeValueAsString(responseBean.getJjcj() ), ItfTblRecycleHsptJjcjDownload.class);
+		newJjcj.setCreatedDate(new Date());
+		newJjcj.setLastModifiedDate(new Date());
+		newJjcj.setDownloadBatchNo(bean.getBatchNo());
+		newJjcj.setDownloadTaskNo(bean.getTaskNo());
+		//增加一个中间状态,代表数据采集已完成
+		newJjcj.setSynStatus(Constant.SynStatus.SYN_ACQUISITION.getCode());
+		newJjcj.setSynReqTime(new Date());
+		jjcjList.add(newJjcj);
+	}
+
+	/**
+	 * 批量获取回收工单的采集数据
+	 */
+	public void updateAcquisition() {
+		// 任务记录表中只提取 SynStatus = 44 的回收工单数据 即已从总部获取反馈明细的回收工单
+		List<ItfTblRecycleAssignBatchDownloadRec> recList = recycleAssignBatchDownloadRecService.lambdaQuery()
+				.eq(ItfTblRecycleAssignBatchDownloadRec::getSynStatus, Constant.SynStatus.SYN_FEEDBACK.getCode())
+				.eq(ItfTblRecycleAssignBatchDownloadRec::getGreeStatSynStatus,0).list();
+		if(null != recList && !recList.isEmpty()) {
+			recList.stream().forEach(rec->{
+				RecycleAssignBean bean = new RecycleAssignBean();
+				bean.setBatchNo(rec.getDownloadBatchNo());
+				bean.setTaskNo(rec.getDownloadTaskNo());
+				bean.setPgguid(rec.getPgguid());
+				try {
+					// 按回收工单同步获取 采集主表/附件表/条码明细表
+					acquisition(bean);
+				} catch (Exception e) {
+					log.error("同步采集信息异常,pgguid={}, taskNo={}, batchNo={}, msg={}", bean.getPgguid(), bean.getTaskNo(), bean.getBatchNo(), e.getMessage());
+				}
+			});
+		}
+	}
+
+	/**
+	 * 批量上传采集信息
+	 */
+	/*
+	public void acquisitionUpload() {
+		List<FaOrderRecycleUploadEvent> collectionEventList = orderRecycleUploadEventService.lambdaQuery()
+				.eq(FaOrderRecycleUploadEvent::getSynStatus, Constant.SynStatus.UN_SYN.getCode())
+				.eq(FaOrderRecycleUploadEvent::getOrderType, Constant.RecycleOrderType.RECYCLE_ASSGIN_COLLECTION)
+				.list();
+		if(Collections.isEmpty(collectionEventList)) {
+			return;
+		}
+		
+		List<FaOrderRecycleUploadEvent> annexEventList = orderRecycleUploadEventService.lambdaQuery()
+				.eq(FaOrderRecycleUploadEvent::getSynStatus, Constant.SynStatus.UN_SYN.getCode())
+				.eq(FaOrderRecycleUploadEvent::getOrderType, Constant.RecycleOrderType.RECYCLE_ASSIGN_ANNEX).list();
+		String batchNo = java.util.UUID.randomUUID().toString();
+		final Map<Integer, List<FaOrderRecycleUploadEvent>> collectionEventMap = collectionEventList.stream().collect(Collectors.groupingBy(FaOrderRecycleUploadEvent::getId));
+		final Map<Integer, List<FaOrderRecycleUploadEvent>> annexEventMap = (null == annexEventList || annexEventList.isEmpty()) ? null : annexEventList.stream().collect(Collectors.groupingBy(OrderRecycleUploadEvent::getId));
+		LinkedHashSet<Integer> ids = new LinkedHashSet<>();
+		LinkedHashSet<Integer> annexIds = new LinkedHashSet<>();
+		collectionEventList.stream().forEach(event->{
+			ids.add(event.getId());
+		});
+		if(null != annexEventList && !annexEventList.isEmpty()) {
+			annexEventList.stream().forEach(annexEvent->{
+				annexIds.add(annexEvent.getId());
+			});
+		}
+		if(!ids.isEmpty()) {
+			List<OrderRecycleAssignCollection> collectionList = orderRecycleAssignCollectionService.lambdaQuery()
+					.in(OrderRecycleAssignCollection::getId, ids).list();
+			if( null != collectionList && !collectionList.isEmpty()) {
+				final List<OrderRecycleAssignAnnex> annexList = annexIds.isEmpty() ? null :
+					orderRecycleAssignAnnexService.lambdaQuery().in(OrderRecycleAssignAnnex::getId, annexIds).list();
+				//条码表分组gr
+				final Map<Integer, List<OrderRecycleAssignAnnex>> annexMap = (null == annexList || annexList.isEmpty()) ? null :  annexList.stream().collect(Collectors.groupingBy(OrderRecycleAssignAnnex::getCollectionId));
+				LinkedHashSet<Integer> orderIds = new LinkedHashSet<>();
+				LinkedHashSet<Integer> mxIds = new LinkedHashSet<>();
+				collectionList.stream().forEach(collection->{
+					orderIds.add(collection.getOrderId());
+					mxIds.add(collection.getMxId());
+				});
+				
+				List<OrderRecycleAssign> recycleList = orderRecycleAssignService.lambdaQuery().in(OrderRecycleAssign::getId, orderIds).list();
+				final Map<Integer, List<OrderRecycleAssign>> recycleMap = (null == recycleList || recycleList.isEmpty()) ? null : recycleList.stream().collect(Collectors.groupingBy(OrderRecycleAssign::getId));
+				List<OrderRecycleAssignMx> mxList = orderRecycleAssignMxService.lambdaQuery().in(OrderRecycleAssignMx::getId, mxIds).list();
+				collectionList.stream().forEach(collection->{
+					List<OrderRecycleUploadEvent> eventList = new ArrayList<>();
+					final List<OrderRecycleUploadEvent> collectionEventGroupList =  collectionEventMap.get(collection.getId());
+					eventList.addAll(collectionEventGroupList);
+					RecycleAcquisitionUploadBean bean = new RecycleAcquisitionUploadBean();
+					RecycleHsptJjcjUploadBean feedbackUploadBean = new RecycleHsptJjcjUploadBean();
+					//完工和报废状态才上传
+					if(null != recycleMap && recycleMap.containsKey(collection.getOrderId())
+							&& null != recycleMap.get(collection.getOrderId()) 
+							&& !recycleMap.get(collection.getOrderId()).isEmpty()) {
+						if(null != recycleMap.get(collection.getOrderId()).get(0).getOrderState() 
+								&& 6 != recycleMap.get(collection.getOrderId()).get(0).getOrderState().intValue() 
+								&& 7 != recycleMap.get(collection.getOrderId()).get(0).getOrderState().intValue() 	
+								) {
+							return;
+						}
+					}
+					
+					feedbackUploadBean.setPgguid(recycleList.stream().filter(recycle->recycle.getId().intValue() ==collection.getOrderId().intValue() ).collect(Collectors.toList()).get(0).getPgguid());
+					feedbackUploadBean.setPgmxid(mxList.stream().filter(mx->mx.getId().intValue() == collection.getMxId()).collect(Collectors.toList()).get(0).getPgmxid());
+					//总部和广佛两边鉴定结果刚好相反
+					feedbackUploadBean.setJdjg( (null == collection.getIdentificationResult()) ? null :(  0 == collection.getIdentificationResult().intValue() ? 1 : 0));
+					feedbackUploadBean.setSfcj(collection.getDismantle());
+					feedbackUploadBean.setLceng(collection.getFloor());
+					feedbackUploadBean.setCcun(collection.getMachineSize());
+					feedbackUploadBean.setJjpp(collection.getMachineBrand());
+					feedbackUploadBean.setJjlx(collection.getMachineType());
+					feedbackUploadBean.setJjqsqk(collection.getMachineDefectData());
+					feedbackUploadBean.setPshu(collection.getMachineLmx());
+					feedbackUploadBean.setSpid(mxList.stream().filter(mx->mx.getId().intValue() == collection.getMxId()).collect(Collectors.toList()).get(0).getSpid());
+					feedbackUploadBean.setSpmc(mxList.stream().filter(mx->mx.getId().intValue() == collection.getMxId()).collect(Collectors.toList()).get(0).getSpmc());
+					//gps经纬度
+					feedbackUploadBean.setGps((!StringUtils.isNullOrEmpty(collection.getLat()) && !StringUtils.isNullOrEmpty(collection.getLng()) ) ? (collection.getLat()+","+collection.getLng()) : "");
+					feedbackUploadBean.setSjcjsfen(collection.getProvince());
+					feedbackUploadBean.setSjcjcshi(collection.getCity());
+					feedbackUploadBean.setSjcjxian(collection.getArea());
+					feedbackUploadBean.setGpsdizi(collection.getGpsAddress());
+					//工程师编号,工程师名称,工程师电话
+					WebsitWorker websitWorker = null;
+					if( null != collection.getMainResponsibleId() ) {
+						websitWorker = websitWorkerService.getById(collection.getMainResponsibleId());
+					}
+					if( null != websitWorker ) {
+						feedbackUploadBean.setAzrenno(websitWorker.getNumber());
+						feedbackUploadBean.setAzren(websitWorker.getName());
+						feedbackUploadBean.setAzrenyddh(websitWorker.getPhone());
+					}
+					//网点编号,网点名称
+					Websit websit = null;
+					OrderRecycleAssign orderRecycleAssign = recycleMap.get(collection.getOrderId()).get(0);
+					if(null != orderRecycleAssign.getAfterWebsitId()) {
+						websit = websitService.getById(orderRecycleAssign.getAfterWebsitId());
+					}
+					if( null != websit) {
+						feedbackUploadBean.setWdno(websit.getWebsitNumber());
+						feedbackUploadBean.setWdmc(websit.getName());
+					}
+					bean.setTblHsptJjcjVO(feedbackUploadBean);
+					bean.setBatchNo(batchNo);
+					bean.setTaskNo(java.util.UUID.randomUUID().toString());
+                    // 附件
+					List<RecycleHsptJjcjFjUploadBean> tblHsptJjcjFjVO = new ArrayList<>();
+					//条码
+					List<RecycleHsptJjcjTmmxUploadBean> tblHsptJjcjTmmxVO = new ArrayList<>();
+					
+					log.info("annexMap={}",JSONObject.parseObject(JSONObject.toJSONString(annexMap), JSONObject.class));
+					
+					if(!StringUtils.isNullOrEmpty(collection.getInsideTempCode())) {
+						if(null != annexMap && annexMap.containsKey(collection.getId())
+							&& null != annexMap.get(collection.getId()) && !annexMap.get(collection.getId()).isEmpty()) {
+							List<OrderRecycleAssignAnnex> subAnnexList = annexMap.get(collection.getId());
+							if( null != subAnnexList && !subAnnexList.isEmpty() ) {
+								subAnnexList.stream().forEach(o->{
+									if(null != o.getType() && 1 == o.getType().intValue()) {//内机条码 
+										RecycleHsptJjcjTmmxUploadBean tmmxBean = new RecycleHsptJjcjTmmxUploadBean();
+										tmmxBean.setTmlx(0);
+										tmmxBean.setJqtm(collection.getInsideTempCode());
+										tmmxBean.setFjserverpath(o.getGreeImageId());
+										tblHsptJjcjTmmxVO.add(tmmxBean);
+										
+										//图片id不为空才上传
+										log.info("内机条码为:ImageId = {}", StringUtil.isEmpty(o.getGreeImageId())  ? "null": o.getGreeImageId());
+										log.info("内机条码为:id= {}",o.getId());
+										if( !StringUtil.isEmpty(o.getGreeImageId()) ) {
+											RecycleHsptJjcjFjUploadBean fjBean = new RecycleHsptJjcjFjUploadBean();
+											fjBean.setType(1);
+											fjBean.setFjindex(1);
+											fjBean.setFjname("内机条码图");
+											fjBean.setFjserverpath(o.getGreeImageId());
+											tblHsptJjcjFjVO.add(fjBean);
+										}
+										
+										if(null != annexEventMap 
+												&& annexEventMap.containsKey(o.getId())
+												&& null != annexEventMap.get(o.getId())
+												) {
+											List<OrderRecycleUploadEvent> annexEventGroupList = annexEventMap.get(o.getId());
+											eventList.addAll(annexEventGroupList);
+										}
+									}else if(null != o.getType() && 2 == o.getType().intValue()) {//外机条码
+										RecycleHsptJjcjTmmxUploadBean tmmxBean = new RecycleHsptJjcjTmmxUploadBean();
+										tmmxBean.setTmlx(1);
+										tmmxBean.setJqtm(collection.getOutTempCode());
+										tmmxBean.setFjserverpath(o.getGreeImageId());
+										tblHsptJjcjTmmxVO.add(tmmxBean);
+										log.info("外机条码为:ImageId = {}", StringUtil.isEmpty(o.getGreeImageId())  ? "null": o.getGreeImageId());
+										log.info("外机条码为:id= {}", o.getId());
+                                        // 图片id不为空才上传
+										if(!StringUtil.isEmpty(o.getGreeImageId())) {
+											RecycleHsptJjcjFjUploadBean fjBean = new RecycleHsptJjcjFjUploadBean();
+											fjBean.setType(2);
+											fjBean.setFjindex(2);
+											fjBean.setFjname("外机条码图");
+											fjBean.setFjserverpath(o.getGreeImageId());
+											tblHsptJjcjFjVO.add(fjBean);
+										}
+										
+										if(null != annexEventMap 
+												&& annexEventMap.containsKey(o.getId())
+												&& null != annexEventMap.get(o.getId())
+												) {
+											List<OrderRecycleUploadEvent> annexEventGroupList = annexEventMap.get(o.getId());
+											eventList.addAll(annexEventGroupList);
+										}
+									}
+								});
+							}
+						}
+					}
+					//外机条码
+					if(!StringUtils.isNullOrEmpty(collection.getOutTempCode())) {
+						if(null != annexMap && annexMap.containsKey(collection.getId())
+								&& null != annexMap.get(collection.getId()) && !annexMap.get(collection.getId()).isEmpty()) {
+							if(annexMap.get(collection.getId()).stream().filter(annex->annex.getType().intValue()==2).findAny().isPresent()) {
+								List<OrderRecycleAssignAnnex> outAnnex = annexMap.get(collection.getId()).stream().filter(annex->annex.getType().intValue()==2).collect(Collectors.toList());
+							}
+						}
+					}
+					bean.setTblHsptJjcjFjVO(tblHsptJjcjFjVO);
+					bean.setTblHsptJjcjTmmxVO(tblHsptJjcjTmmxVO);
+					GreeResponseHelper response = acquisitionUploadReq(bean, eventList);
+				});
+			}
+		}
+	}
+	*/
+
+	//采集信息上传接口
+	@Transactional
+	public GreeResponseHelper acquisitionUploadReq(
+			RecycleAcquisitionUploadBean acquisitionUploadBean,
+			List<FaOrderRecycleUploadEvent> eventList
+			) {
+		if(null != acquisitionUploadBean) {
+			final String apiPath = Constant.GreeApiPath.RECYCLE_ACQUISITION_UPLOAD;
+			//采集主表
+			RecycleHsptJjcjUploadBean jjcjBean = acquisitionUploadBean.getTblHsptJjcjVO();
+			//附件表
+			List<RecycleHsptJjcjFjUploadBean> fjBeanList = acquisitionUploadBean.getTblHsptJjcjFjVO();
+			//条码明细表
+			List<RecycleHsptJjcjTmmxUploadBean> tmmxBeanList = acquisitionUploadBean.getTblHsptJjcjTmmxVO();
+			Map<String,Object> map = new HashMap<>();
+			map.put("tblHsptJjcjVO", jjcjBean);
+			map.put("tblHsptJjcjFjVO", fjBeanList);
+			map.put("tblHsptJjcjTmmxVO", tmmxBeanList);
+			ItfTblRecycleHsptJjcjUpload jjcjUpload = new ItfTblRecycleHsptJjcjUpload();
+			List<ItfTblRecycleHsptJjcjFjUpload> fjlist = new ArrayList<>();
+			List<ItfTblRecycleHsptJjcjTmmxUpload> tmmxlist = new ArrayList<>();
+			try {
+				jjcjUpload = mapper.readValue(mapper.writeValueAsString(jjcjBean), ItfTblRecycleHsptJjcjUpload.class);
+				jjcjUpload.setSynStatus(Constant.SynStatus.SYN.getCode());
+				jjcjUpload.setSynTime(new Date());
+				jjcjUpload.setCreatedDate(new Date());
+				jjcjUpload.setLastModifiedDate(new Date());
+				jjcjUpload.setUploadBatchNo(acquisitionUploadBean.getBatchNo());
+				jjcjUpload.setUploadTaskNo(acquisitionUploadBean.getTaskNo());
+				if(null != fjBeanList && !fjBeanList.isEmpty()) {
+					fjBeanList.stream().forEach(fjBean->{
+						ItfTblRecycleHsptJjcjFjUpload fjUpload = new ItfTblRecycleHsptJjcjFjUpload();
+						try {
+							fjUpload = mapper.readValue(mapper.writeValueAsString(fjBean), ItfTblRecycleHsptJjcjFjUpload.class);
+							fjUpload.setSynStatus(Constant.SynStatus.SYN.getCode());
+							fjUpload.setSynTime(new Date());
+							fjUpload.setCreatedDate(new Date());
+							fjUpload.setLastModifiedDate(new Date());
+							fjUpload.setUploadBatchNo(acquisitionUploadBean.getBatchNo());
+							fjUpload.setUploadTaskNo(acquisitionUploadBean.getTaskNo());
+							fjlist.add(fjUpload);
+						} catch (JsonProcessingException e) {
+							fjUpload.setSynStatus(Constant.SynStatus.FAIL.getCode());
+							fjUpload.setSynTime(new Date());
+							fjUpload.setCreatedDate(new Date());
+							fjUpload.setLastModifiedDate(new Date());
+							fjUpload.setUploadBatchNo(acquisitionUploadBean.getBatchNo());
+							fjUpload.setUploadTaskNo(acquisitionUploadBean.getTaskNo());
+							fjlist.add(fjUpload);
+						}
+					});
+				}
+				if(null != tmmxBeanList && !tmmxBeanList.isEmpty()) {
+					tmmxBeanList.stream().forEach(tmmxBean->{
+						ItfTblRecycleHsptJjcjTmmxUpload tmmxUpload = new ItfTblRecycleHsptJjcjTmmxUpload();
+						try {
+							tmmxUpload = mapper.readValue(mapper.writeValueAsString(tmmxBean), ItfTblRecycleHsptJjcjTmmxUpload.class);
+							tmmxUpload.setSynStatus(Constant.SynStatus.SYN.getCode());
+							tmmxUpload.setSynTime(new Date());
+							tmmxUpload.setCreatedDate(new Date());
+							tmmxUpload.setLastModifiedDate(new Date());
+							tmmxUpload.setUploadBatchNo(acquisitionUploadBean.getBatchNo());
+							tmmxUpload.setUploadTaskNo(acquisitionUploadBean.getTaskNo());
+							tmmxlist.add(tmmxUpload);
+						} catch (JsonProcessingException e) {
+							tmmxUpload.setSynStatus(Constant.SynStatus.FAIL.getCode());
+							tmmxUpload.setSynTime(new Date());
+							tmmxUpload.setCreatedDate(new Date());
+							tmmxUpload.setLastModifiedDate(new Date());
+							tmmxUpload.setUploadBatchNo(acquisitionUploadBean.getBatchNo());
+							tmmxUpload.setUploadTaskNo(acquisitionUploadBean.getTaskNo());
+							tmmxlist.add(tmmxUpload);
+						}
+					});
+				}
+				GreeResponseHelper response = greeLogic.greePost(apiPath, map, 1);
+				if( 200 == response.getStatus()) {
+					jjcjUpload.setGreeStatSynStatus(Constant.SynStatus.SYN.getCode());
+					jjcjUpload.setGreeStatSynTime(new Date());
+					if( null != eventList && !eventList.isEmpty() ) {
+						eventList.stream().forEach(event->{
+							event.setSynStatus(Constant.SynStatus.SYN.getCode());
+							event.setSynTime(new Date());
+						});
+					}
+					if(null != fjlist && !fjlist.isEmpty()) {
+						fjlist.stream().forEach(fj->{
+							fj.setGreeStatSynStatus(Constant.SynStatus.SYN.getCode());
+							fj.setGreeStatSynTime(new Date());
+						});
+					}
+					if(null != tmmxlist && !tmmxlist.isEmpty()) {
+						tmmxlist.stream().forEach(tmmx->{
+							tmmx.setGreeStatSynStatus(Constant.SynStatus.SYN.getCode());
+							tmmx.setGreeStatSynTime(new Date());
+						});
+					}
+					
+					//新增一条待入库条码上传记录
+					ItfTblRecyleStockInfoUploadTaskList recyleStockInfoUploadTaskList = new ItfTblRecyleStockInfoUploadTaskList();
+					recyleStockInfoUploadTaskList.setPgguid(jjcjUpload.getPgguid());
+					recyleStockInfoUploadTaskList.setSynStatus(RecycleSynStatusEnum.UN_SYN.getCode());
+					recyleStockInfoUploadTaskList.setSynReqTime(new Date());
+					recyleStockInfoUploadTaskList.setSynTimes(1);
+					recyleStockInfoUploadTaskListService.save(recyleStockInfoUploadTaskList);
+				}else {
+					jjcjUpload.setGreeStatSynStatus(Constant.SynStatus.FAIL.getCode());
+					jjcjUpload.setGreeStatSynErrMsg(response.getMsg());
+					jjcjUpload.setGreeStatSynTime(new Date());
+					if( null != eventList && !eventList.isEmpty() ) {
+						eventList.stream().forEach(event->{
+							event.setSynStatus(Constant.SynStatus.FAIL.getCode());
+							event.setSynTime(new Date());
+							event.setSynErrMsg(response.getMsg());
+						});
+					}
+					if(null != fjlist && !fjlist.isEmpty()) {
+						fjlist.stream().forEach(fj->{
+							fj.setGreeStatSynStatus(Constant.SynStatus.FAIL.getCode());
+							fj.setGreeStatSynTime(new Date());
+							fj.setSynErrMsg(response.getMsg());
+						});
+					}
+					if(null != tmmxlist && !tmmxlist.isEmpty()) {
+						tmmxlist.stream().forEach(tmmx->{
+							tmmx.setGreeStatSynStatus(Constant.SynStatus.FAIL.getCode());
+							tmmx.setGreeStatSynTime(new Date());
+							tmmx.setSynErrMsg(response.getMsg());
+						});
+					}
+				}
+				recycleHsptJjcjUploadService.saveOrUpdate(jjcjUpload);
+				if( null != eventList && !eventList.isEmpty()) {
+					orderRecycleUploadEventService.saveOrUpdateBatch(eventList);
+				}
+				if(null != fjlist && !fjlist.isEmpty()) {
+					recycleHsptJjcjFjUploadService.saveOrUpdateBatch(fjlist);
+				}
+				if(null != tmmxlist && !tmmxlist.isEmpty()) {
+					recycleHsptJjcjTmmxUploadService.saveOrUpdateBatch(tmmxlist);
+				}
+				return response;
+			}catch(Exception e) {
+				jjcjUpload.setGreeStatSynStatus(Constant.SynStatus.FAIL.getCode());
+				jjcjUpload.setGreeStatSynTime(new Date());
+				if( null != eventList && !eventList.isEmpty() ) {
+					eventList.stream().forEach(event->{
+						event.setSynStatus(Constant.SynStatus.FAIL.getCode());
+						event.setSynTime(new Date());
+					});
+				}
+				if(null != fjlist && !fjlist.isEmpty()) {
+					fjlist.stream().forEach(fj->{
+						fj.setGreeStatSynStatus(Constant.SynStatus.FAIL.getCode());
+						fj.setGreeStatSynTime(new Date());
+					});
+				}
+				if(null != tmmxlist && !tmmxlist.isEmpty()) {
+					tmmxlist.stream().forEach(tmmx->{
+						tmmx.setGreeStatSynStatus(Constant.SynStatus.FAIL.getCode());
+						tmmx.setGreeStatSynTime(new Date());
+					});
+				}
+				recycleHsptJjcjUploadService.saveOrUpdate(jjcjUpload);
+				if( null != eventList && !eventList.isEmpty()) {
+					orderRecycleUploadEventService.saveOrUpdateBatch(eventList);
+				}
+				if(null != fjlist && !fjlist.isEmpty()) {
+					recycleHsptJjcjFjUploadService.saveOrUpdateBatch(fjlist);
+				}
+				if(null != tmmxlist && !tmmxlist.isEmpty()) {
+					recycleHsptJjcjTmmxUploadService.saveOrUpdateBatch(tmmxlist);
+				}
+			}
+		}
+		return null;
+	}
+	/**
+	 * 访问采集下载接口,把上传任务保存到条码信息上传任务表
+	 * @return
+	 */
+	/*
+	public void stockBarcodeInfoDonwlodToUpload() {
+		List<ItfTblRecyleStockInfoUploadTaskList> recyleStockInfoUploadTaskList = recyleStockInfoUploadTaskListService.lambdaQuery()
+				.eq(ItfTblRecyleStockInfoUploadTaskList::getSynStatus, RecycleSynStatusEnum.UN_SYN.getCode())
+				.orderByAsc(ItfTblRecyleStockInfoUploadTaskList::getSynReqId).list();
+
+		if( Collections.isEmpty(recyleStockInfoUploadTaskList)) {
+			return ;
+		}
+		List<ItfTblRecycleStockBarcodeInfoUpload> recycleStockBarcodeInfoUploadList = new ArrayList<>();
+		for(ItfTblRecyleStockInfoUploadTaskList recyleStockInfoUploadTask : recyleStockInfoUploadTaskList) {
+			//含有上一条失败,本条不上传
+			List<ItfTblRecyleStockInfoUploadTaskList> lastTaskList = recyleStockInfoUploadTaskListService.lambdaQuery().
+					in(ItfTblRecyleStockInfoUploadTaskList::getSynStatus,
+							new Integer[] { RecycleSynStatusEnum.FAIL.getCode(), RecycleSynStatusEnum.UN_SYN.getCode()}).
+					lt(ItfTblRecyleStockInfoUploadTaskList::getSynReqId, recyleStockInfoUploadTask.getSynReqId()).
+					eq(ItfTblRecyleStockInfoUploadTaskList::getPgguid, recyleStockInfoUploadTask.getPgguid()).
+					orderByDesc(ItfTblRecyleStockInfoUploadTaskList::getSynReqId).list();
+			if(!Collections.isEmpty(lastTaskList)) {
+				ItfTblRecyleStockInfoUploadTaskList lastTask = lastTaskList.get(0);
+				if( RecycleSynStatusEnum.UN_SYN.getCode().intValue() == lastTask.getSynStatus() ) {//若上一条未同步,则本条跳过
+					continue;
+				}else {//若上一条失败,则本条也不允许上传
+					recyleStockInfoUploadTask.setSynStatus(RecycleSynStatusEnum.FAIL.getCode());
+					recyleStockInfoUploadTask.setSynErrMsg("上一条数据没上传成功,本条数据不上传, pguuid="+recyleStockInfoUploadTask.getPgguid()+", pguuid="+recyleStockInfoUploadTask.getPgguid());
+					recyleStockInfoUploadTask.setSynTime(new Date());
+					continue;
+				}
+			}		
+			//先请求采集下载接口
+			final String acquisitionDownloadApiPath = Constant.GreeApiPath.RECYCLE_ACQUISITION;
+			Map<String,Object> param = new HashMap<>();
+			param.put("type","get");
+			param.put("pgguid", recyleStockInfoUploadTask.getPgguid());
+			try {
+				GreeResponseHelper response = greeLogic.greePost(acquisitionDownloadApiPath, param, 1);
+				if(200 == response.getStatus()) {
+					List<RecycleAcquisitionDownloadBean> responsebeanList = mapper.readValue((String)response.getData()  , new TypeReference<List<RecycleAcquisitionDownloadBean>>() {});
+					List<RecycleHsptJjcjDownloadBean> recycleHsptJjcjDownloadList = new ArrayList<>();
+					List<RecycleHsptJjcjTmmxDownloadBean> recycleHsptJjcjTmmxDownloadList = new ArrayList<>();
+					if( Collections.isEmpty(responsebeanList) ) {
+						//请求次数+1
+						recyleStockInfoUploadTask.setSynTimes(Objects.isNull(recyleStockInfoUploadTask.getSynTimes()) ? 1 : recyleStockInfoUploadTask.getSynTimes()+1);
+						//请求次数达到6次,不再请求
+						if(!Objects.isNull(recyleStockInfoUploadTask.getSynTimes() ) && recyleStockInfoUploadTask.getSynTimes() == 6) {
+							recyleStockInfoUploadTask.setSynStatus(RecycleSynStatusEnum.SYN.getCode());
+							recyleStockInfoUploadTask.setSynErrMsg("没有采集数据, pgguid="+recyleStockInfoUploadTask.getPgguid());
+						}
+						continue;
+					}
+					
+					//根据pgguid获取回收工单主表数据
+					OrderRecycleAssign orderRecycleAssign =  orderRecycleAssignService.lambdaQuery().eq(OrderRecycleAssign::getPgguid, recyleStockInfoUploadTask.getPgguid()).one();
+					if(Objects.isNull(orderRecycleAssign)) {
+						recyleStockInfoUploadTask.setSynTimes(Objects.isNull(recyleStockInfoUploadTask.getSynTimes()) ? 1 : recyleStockInfoUploadTask.getSynTimes()+1);
+						//请求次数达到6次,不再请求
+						if(!Objects.isNull(recyleStockInfoUploadTask.getSynTimes() ) && recyleStockInfoUploadTask.getSynTimes() == 6) {
+							recyleStockInfoUploadTask.setSynStatus(RecycleSynStatusEnum.SYN.getCode());
+							recyleStockInfoUploadTask.setSynErrMsg("没有回收工单数据, pgguid="+recyleStockInfoUploadTask.getPgguid());
+						}
+						continue;
+					}
+					
+					for(RecycleAcquisitionDownloadBean recycleAcquisitionDownloadBean : responsebeanList) {
+						recycleHsptJjcjDownloadList.add(recycleAcquisitionDownloadBean.getJjcj());
+						recycleHsptJjcjTmmxDownloadList.addAll(recycleAcquisitionDownloadBean.getTmmxlist());
+					}
+					//时间倒序,拿第一条
+					recycleHsptJjcjDownloadList.stream().sorted(Comparator.comparing(RecycleHsptJjcjDownloadBean::getLastModifiedDate, Comparator.reverseOrder()));
+                    RecycleHsptJjcjDownloadBean jjcjDownload = recycleHsptJjcjDownloadList.get(0);
+					final Map<String, List<RecycleHsptJjcjTmmxDownloadBean>> recycleHsptJjcjTmmxDownloadMap = Collections.isEmpty(recycleHsptJjcjTmmxDownloadList) ? null : recycleHsptJjcjTmmxDownloadList.stream().collect(Collectors.groupingBy(RecycleHsptJjcjTmmxDownloadBean::getPgwcmxid));
+					final List<RecycleHsptJjcjTmmxDownloadBean> tmmxDownloadList = (Objects.isNull(recycleHsptJjcjTmmxDownloadMap) 
+							|| !recycleHsptJjcjTmmxDownloadMap.containsKey(jjcjDownload.getPgwcmxid()) || Collections.isEmpty(recycleHsptJjcjTmmxDownloadMap)) ? 
+									null :  recycleHsptJjcjTmmxDownloadMap.get(jjcjDownload.getPgwcmxid());
+					if( Collections.isEmpty(tmmxDownloadList) ) {
+						recyleStockInfoUploadTask.setSynStatus(GreeSynStatusEnum.SYN.getCode());
+						recyleStockInfoUploadTask.setSynErrMsg("没有条码数据, pgguid="+recyleStockInfoUploadTask.getPgguid());
+						continue;
+					}
+					
+					String taskNo = java.util.UUID.randomUUID().toString();
+					for( RecycleHsptJjcjTmmxDownloadBean tmmxDownload : tmmxDownloadList ) {
+						ItfTblRecycleStockBarcodeInfoUpload recycleStockBarcodeInfoUpload = new ItfTblRecycleStockBarcodeInfoUpload();
+						recycleStockBarcodeInfoUpload.setPgguid(jjcjDownload.getPgguid());
+						recycleStockBarcodeInfoUpload.setUploadTaskNo(taskNo);
+						recycleStockBarcodeInfoUpload.setJqtm(tmmxDownload.getJqtm());
+						recycleStockBarcodeInfoUpload.setTmlx(tmmxDownload.getTmlx());
+						recycleStockBarcodeInfoUpload.setSpid( Objects.isNull(jjcjDownload.getSpid()) ? null : Integer.parseInt(jjcjDownload.getSpid().toString()) );
+						recycleStockBarcodeInfoUpload.setSpmc(jjcjDownload.getSpmc());
+						recycleStockBarcodeInfoUpload.setPinp(jjcjDownload.getJjpp());
+						recycleStockBarcodeInfoUpload.setJqlx(jjcjDownload.getJjlx());
+						//匹数要传数字型,1点5匹,就填1.50 ,用数字填
+						String pshuStr = jjcjDownload.getPshu();
+						Pattern pattern = Pattern.compile("-?[0-9]+\\.?[0-9]*");
+						Matcher matcher = pattern.matcher(pshuStr); 
+						if(matcher.find()) {
+							recycleStockBarcodeInfoUpload.setPshu( Float.parseFloat(matcher.group()) );
+						}
+						recycleStockBarcodeInfoUpload.setWdno(orderRecycleAssign.getWxwdno());
+						recycleStockBarcodeInfoUpload.setDqcfid(orderRecycleAssign.getWxwdno());
+						recycleStockBarcodeInfoUpload.setDqcfmc(orderRecycleAssign.getWxwdmc());
+						recycleStockBarcodeInfoUpload.setYddh(orderRecycleAssign.getYddh());
+						//工单类型:1:以旧换新;2:回收工单
+						recycleStockBarcodeInfoUpload.setSrclx(2);
+						//回收时间(师傅报完工时间)
+						recycleStockBarcodeInfoUpload.setHssj(orderRecycleAssign.getFinishTime());
+						recycleStockBarcodeInfoUpload.setHsfwwdno(orderRecycleAssign.getWxwdno());
+						recycleStockBarcodeInfoUpload.setHsfwwdmc(orderRecycleAssign.getWxwdmc());
+						recycleStockBarcodeInfoUpload.setSrcno(orderRecycleAssign.getSrcOrderNo());
+						recycleStockBarcodeInfoUpload.setSrcId(orderRecycleAssign.getPgguid());
+						recycleStockBarcodeInfoUpload.setPgwcmxid(jjcjDownload.getPgwcmxid());
+						recycleStockBarcodeInfoUpload.setState(0);
+						recycleStockBarcodeInfoUpload.setCreatedBy(jjcjDownload.getCreatedBy());
+						recycleStockBarcodeInfoUpload.setCreatedDate(jjcjDownload.getCreatedDate());
+						recycleStockBarcodeInfoUpload.setLastModifiedBy(jjcjDownload.getLastModifiedBy());
+						recycleStockBarcodeInfoUpload.setLastModifiedDate(jjcjDownload.getLastModifiedDate());
+						recycleStockBarcodeInfoUpload.setSrcxsdh(orderRecycleAssign.getSrcOrderNo());
+						recycleStockBarcodeInfoUploadList.add(recycleStockBarcodeInfoUpload);
+					}
+					recyleStockInfoUploadTask.setSynStatus(RecycleSynStatusEnum.SYN.getCode());
+					recyleStockInfoUploadTask.setSynTime(new Date());
+				}else {
+					//请求次数+1
+					recyleStockInfoUploadTask.setSynTimes(Objects.isNull(recyleStockInfoUploadTask.getSynTimes()) ? 1 : recyleStockInfoUploadTask.getSynTimes()+1);
+					//请求次数达到6次,不再请求
+					if(!Objects.isNull(recyleStockInfoUploadTask.getSynTimes() ) && recyleStockInfoUploadTask.getSynTimes() == 6) {
+						recyleStockInfoUploadTask.setSynStatus(GreeSynStatusEnum.FAIL.getCode());
+						recyleStockInfoUploadTask.setSynErrMsg(response.getMsg());
+						recyleStockInfoUploadTask.setSynTime(new Date());
+					}
+				}
+			} catch (Exception e) {
+				//请求次数+1
+				recyleStockInfoUploadTask.setSynTimes(Objects.isNull(recyleStockInfoUploadTask.getSynTimes()) ? 1 : recyleStockInfoUploadTask.getSynTimes()+1);
+				if(!Objects.isNull(recyleStockInfoUploadTask.getSynTimes() ) && recyleStockInfoUploadTask.getSynTimes() == 6) {
+					recyleStockInfoUploadTask.setSynStatus(GreeSynStatusEnum.FAIL.getCode());
+					recyleStockInfoUploadTask.setSynErrMsg(e.getMessage().length() > 100 ? e.getMessage().substring(0, 99) : e.getMessage());
+					recyleStockInfoUploadTask.setSynTime(new Date());
+				}
+			}
+		}
+		
+		recyleStockInfoUploadTaskListService.saveOrUpdateBatch(recyleStockInfoUploadTaskList);
+		if(!Collections.isEmpty(recycleStockBarcodeInfoUploadList)) {
+			recycleStockBarcodeInfoUploadService.saveOrUpdateBatch(recycleStockBarcodeInfoUploadList);
+		}
+	}
+	*/
+	/**
+	 * 上传总部条码(需要上传了barcodeInfo主表数据,上传的stockin和stockout才有有效)
+	 */
+	public void stockBarcodeInfoUpload() {
+		final List<ItfTblRecycleStockBarcodeInfoUpload> recycleStockBarcodeInfoUploadList = recycleStockBarcodeInfoUploadService.lambdaQuery()
+				.eq(ItfTblRecycleStockBarcodeInfoUpload::getSynStatus, RecycleSynStatusEnum.UN_SYN.getCode()).list();
+		if(Collections.isEmpty(recycleStockBarcodeInfoUploadList)) {
+			return;
+		}
+		//按uploadTaskNo分组
+		List<ItfTblRecyleStockInfoUploadTaskList> stockInfoUploadTaskList = new ArrayList<>();
+		final Map<String, List<ItfTblRecycleStockBarcodeInfoUpload>> recycleStockBarcodeInfoUploadMap = Collections.isEmpty(recycleStockBarcodeInfoUploadList) ? null :recycleStockBarcodeInfoUploadList.stream().collect(Collectors.groupingBy(ItfTblRecycleStockBarcodeInfoUpload::getUploadTaskNo));
+		for(Map.Entry<String,List<ItfTblRecycleStockBarcodeInfoUpload>> entry : recycleStockBarcodeInfoUploadMap.entrySet()){
+			List<ItfTblRecycleStockBarcodeInfoUpload> barcodeInfoList = entry.getValue();
+			String pgguid = barcodeInfoList.get(0).getPgguid();
+			final String apiPath = Constant.GreeApiPath.RECYCLE_STOCK_STOCKINFOS;
+			Integer synStatus = -1;
+			String errMsg = "";
+			List<RecycleStockBarcodeInfoUploadBean> barcodeInfoBeanList = new ArrayList<>();
+			List<Map> infos = new ArrayList<>() ;
+			try {
+				barcodeInfoBeanList = this.mapper.readValue(this.mapper.writeValueAsString(barcodeInfoList), new TypeReference<List<RecycleStockBarcodeInfoUploadBean>>() {});
+				infos = this.mapper.readValue(this.mapper.writeValueAsString(barcodeInfoBeanList), new TypeReference<List<Map>>() {});
+			} catch (JsonMappingException e1) {
+				synStatus = RecycleSynStatusEnum.FAIL.getCode();
+				for(ItfTblRecycleStockBarcodeInfoUpload recycleStockBarcodeInfoUpload : recycleStockBarcodeInfoUploadList) {
+					recycleStockBarcodeInfoUpload.setSynStatus(GreeSynStatusEnum.FAIL.getCode());
+					recycleStockBarcodeInfoUpload.setSynErrMsg(e1.getMessage().length() > 100 ? e1.getMessage().substring(0, 99) : e1.getMessage());
+					errMsg = recycleStockBarcodeInfoUpload.getSynErrMsg();
+					recycleStockBarcodeInfoUpload.setSynTime(new Date());
+					recycleStockBarcodeInfoUpload.setSynTimes( Objects.isNull(recycleStockBarcodeInfoUpload.getSynTimes()) ? 1 : recycleStockBarcodeInfoUpload.getSynTimes() + 1 );
+				}
+				continue;
+			} catch (JsonProcessingException e1) {
+				synStatus = RecycleSynStatusEnum.FAIL.getCode();
+				for(ItfTblRecycleStockBarcodeInfoUpload recycleStockBarcodeInfoUpload : recycleStockBarcodeInfoUploadList) {
+					recycleStockBarcodeInfoUpload.setSynStatus(GreeSynStatusEnum.FAIL.getCode());
+					recycleStockBarcodeInfoUpload.setSynErrMsg(e1.getMessage().length() > 100 ? e1.getMessage().substring(0, 99) : e1.getMessage());
+					errMsg = recycleStockBarcodeInfoUpload.getSynErrMsg();
+					recycleStockBarcodeInfoUpload.setSynTime(new Date());
+					recycleStockBarcodeInfoUpload.setSynTimes( Objects.isNull(recycleStockBarcodeInfoUpload.getSynTimes()) ? 1 : recycleStockBarcodeInfoUpload.getSynTimes() + 1 );
+				}
+				continue;
+			}
+			Map<String, Object> param = new HashMap<>();
+			param.put("taskNo", entry.getKey());
+			param.put("infos", infos);
+			try {
+				GreeResponseHelper response = greeLogic.greePost(apiPath, param, 1);
+				if(200 == response.getStatus()) {
+					synStatus = RecycleSynStatusEnum.SYN.getCode();
+					for(ItfTblRecycleStockBarcodeInfoUpload recycleStockBarcodeInfoUpload : recycleStockBarcodeInfoUploadList) {
+						recycleStockBarcodeInfoUpload.setSynStatus(GreeSynStatusEnum.SYN.getCode());
+						recycleStockBarcodeInfoUpload.setSynTime(new Date());
+						recycleStockBarcodeInfoUpload.setSynTimes( Objects.isNull(recycleStockBarcodeInfoUpload.getSynTimes()) ? 1 : recycleStockBarcodeInfoUpload.getSynTimes() + 1 );
+					}
+				}else {
+					synStatus = RecycleSynStatusEnum.FAIL.getCode();
+					for(ItfTblRecycleStockBarcodeInfoUpload recycleStockBarcodeInfoUpload : recycleStockBarcodeInfoUploadList) {
+						recycleStockBarcodeInfoUpload.setSynStatus(GreeSynStatusEnum.FAIL.getCode());
+						recycleStockBarcodeInfoUpload.setSynErrMsg(response.getMsg());
+						errMsg = recycleStockBarcodeInfoUpload.getSynErrMsg();
+						recycleStockBarcodeInfoUpload.setSynTime(new Date());
+						recycleStockBarcodeInfoUpload.setSynTimes( Objects.isNull(recycleStockBarcodeInfoUpload.getSynTimes()) ? 1 : recycleStockBarcodeInfoUpload.getSynTimes() + 1 );
+						pgguid = recycleStockBarcodeInfoUpload.getPgguid();
+					}
+				}
+			}catch(Exception e) {
+				e.printStackTrace();
+				synStatus = RecycleSynStatusEnum.FAIL.getCode();
+				for(ItfTblRecycleStockBarcodeInfoUpload recycleStockBarcodeInfoUpload : recycleStockBarcodeInfoUploadList) {
+					recycleStockBarcodeInfoUpload.setSynStatus(GreeSynStatusEnum.FAIL.getCode());
+					recycleStockBarcodeInfoUpload.setSynErrMsg(e.getMessage().length() > 100 ? e.getMessage().substring(0, 99) : e.getMessage());
+					errMsg = recycleStockBarcodeInfoUpload.getSynErrMsg();
+					recycleStockBarcodeInfoUpload.setSynTime(new Date());
+					recycleStockBarcodeInfoUpload.setSynTimes( Objects.isNull(recycleStockBarcodeInfoUpload.getSynTimes()) ? 1 : recycleStockBarcodeInfoUpload.getSynTimes() + 1 );
+				}
+			}
+			//上传条码信息任务列表
+			List<ItfTblRecyleStockInfoUploadTaskList> recyleStockInfoUploadTaskList = recyleStockInfoUploadTaskListService.lambdaQuery()
+					.eq(ItfTblRecyleStockInfoUploadTaskList::getPgguid, pgguid)
+					.eq(ItfTblRecyleStockInfoUploadTaskList::getSynStatus, RecycleSynStatusEnum.UN_SYN.getCode())
+					.orderByAsc(ItfTblRecyleStockInfoUploadTaskList::getSynReqId).list();
+			if( Collections.isEmpty(recyleStockInfoUploadTaskList) ) {
+				continue;
+			}
+			//按synReqId顺序更新
+			ItfTblRecyleStockInfoUploadTaskList recyleStockInfoUploadTask = recyleStockInfoUploadTaskList.get(0);
+			if( synStatus == RecycleSynStatusEnum.SYN.getCode() ) {
+				recyleStockInfoUploadTask.setSynStatus(synStatus);
+				recyleStockInfoUploadTask.setSynTime(new Date());
+			}else {
+				if( (Objects.isNull(recyleStockInfoUploadTask.getSynTimes()) ? 0 : recyleStockInfoUploadTask.getSynTimes()) >= 6 ) {
+					recyleStockInfoUploadTask.setSynStatus(synStatus);
+					recyleStockInfoUploadTask.setSynErrMsg(errMsg);
+					recyleStockInfoUploadTask.setSynTime(new Date());
+				}else {
+					//请求失败,累加请求次数
+					recyleStockInfoUploadTask.setSynTimes((Objects.isNull(recyleStockInfoUploadTask.getSynTimes()) ? 0 : recyleStockInfoUploadTask.getSynTimes()) + 1);
+				}
+			}
+			stockInfoUploadTaskList.add(recyleStockInfoUploadTask);
+		}
+		if(!Collections.isEmpty(stockInfoUploadTaskList)) {
+			recyleStockInfoUploadTaskListService.saveOrUpdateBatch(stockInfoUploadTaskList);
+		}
+		if(!Collections.isEmpty(recycleStockBarcodeInfoUploadList)) {
+			recycleStockBarcodeInfoUploadService.saveOrUpdateBatch(recycleStockBarcodeInfoUploadList);
+		}
+	}
+}
+

+ 26 - 0
src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleAcquisitionUploadBean.java

@@ -0,0 +1,26 @@
+package com.zfire.jiasm.syncdata.gree.recycle;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel
+public class RecycleAcquisitionUploadBean /**extends RecycleAssignBean**/ {
+	
+	@ApiModelProperty("任务号")
+	private String taskNo;
+	@ApiModelProperty("批量号")
+	private String batchNo;
+	
+	@ApiModelProperty("采集主表")
+	private RecycleHsptJjcjUploadBean tblHsptJjcjVO;
+	
+	@ApiModelProperty("附件表")
+	private List<RecycleHsptJjcjFjUploadBean> tblHsptJjcjFjVO;
+	
+	@ApiModelProperty("条码明细表")
+	private List<RecycleHsptJjcjTmmxUploadBean> tblHsptJjcjTmmxVO;
+}

+ 220 - 184
src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleAssignLogic.java

@@ -12,7 +12,6 @@ import com.zfire.jiasm.syncdata.plus.entity.*;
 import com.zfire.jiasm.syncdata.plus.service.*;
 import io.jsonwebtoken.lang.Collections;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -85,127 +84,140 @@ public class RecycleAssignLogic {
 	
 	private static String genWorkerNo() {
 		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSSSSS");
-//		for(int i=0;i<100;i++) {
-//			int r = (int)(Math.random()*999);
-//			System.out.println("r="+r);
-//		}
 		int r = (int)(Math.random()*999);
 		String result = "11"+sdf.format(new Date())+"000".substring(0, "000".length() - String.valueOf(r).length())+String.valueOf(r);
 	    return result;
 	}
 	
 	public List<RecycleAssignDownloadBean> assign(RecycleAssignParamBean param) throws Exception{
+		List<ItfTblRecycleAssignBatchDownloadRec> nnList = new ArrayList<>();
+		List<ItfTblRecycleAssignBatchDownloadRec> zeroList = new ArrayList<>();
+		Map<String, List<ItfTblRecycleAssignBatchDownloadRec>> nnMap = new HashMap<>();
+		Map<String, List<ItfTblRecycleAssignBatchDownloadRec>> zeroMap = new HashMap<>();
+		Map<Integer, List<ItfTblRecycleAssignBatchDownloadRec>> recMap = new HashMap<>();
+		List<ItfTblRecycleAssignBatchDownloadRec> recList = new ArrayList<>();
+
 		final String apiPath = Constant.GreeApiPath.RECYCLE_ASSIGN;
 		Map<String,Object> map = new HashMap<>();
 		map.put("page", param.getPage());
 		map.put("pageSize", param.getPageSize());
 		map.put("type", param.getType());
 		//回收工单请求
-		String dataStr = greeLogic.post(apiPath, map, 1);	
-//		ObjectMapper mapper = new ObjectMapper();
-//		SimpleDateFormat smt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-//		mapper.setDateFormat(smt);
+		String dataStr = greeLogic.post(apiPath, map, 1);
+		// 工单信息pgid|pgguid、反馈信息pgguid、回收的产品pgguid
 		List<RecycleAssignDownloadBean> responseBeanList = mapper.readValue(dataStr, new TypeReference<List<RecycleAssignDownloadBean>>() {} );
+
 		if(null != responseBeanList && !responseBeanList.isEmpty()) {
+			// 提取工单主键
 			LinkedHashSet<String> pguuidLhs = new LinkedHashSet<>(); 
 			responseBeanList.forEach(o->pguuidLhs.add(o.getPgguid()));
-			//要添加到新增任务列表的
 			List<RecycleAssignDownloadEntity> newTaskEntities = new ArrayList<>();
+
 			if(!pguuidLhs.isEmpty()) {
-				List<ItfTblRecycleAssignBatchDownloadRec> recList = recycleAssignBatchDownloadRecService.lambdaQuery().in(ItfTblRecycleAssignBatchDownloadRec::getPgguid, pguuidLhs)
+				String batchNo = UUID.randomUUID().toString();
+
+				// 下载任务记录表中提取相同已下载的数据,0及99的
+				recList = recycleAssignBatchDownloadRecService.lambdaQuery()
+						.in(ItfTblRecycleAssignBatchDownloadRec::getPgguid, pguuidLhs)
 						.in(ItfTblRecycleAssignBatchDownloadRec::getGreeStatSynStatus, 0, Constant.SynStatus.FAIL.getCode()).list();
+				// 已下载记录表中存在数据时
 				if(null != recList && !recList.isEmpty()) {
-					Map<Integer, List<ItfTblRecycleAssignBatchDownloadRec>> recMap = recList.stream().collect(Collectors.groupingBy(ItfTblRecycleAssignBatchDownloadRec::getGreeStatSynStatus));
-					List<ItfTblRecycleAssignBatchDownloadRec> zeroList = recMap.get(0);
-					//获取状态为0的任务,组装成map,方便后续查找
-					Map<String, List<ItfTblRecycleAssignBatchDownloadRec>> zeroMap = (null != zeroList && !zeroList.isEmpty()) ? (zeroList.stream().collect(Collectors.groupingBy(ItfTblRecycleAssignBatchDownloadRec::getPgguid))) : null;
-					List<ItfTblRecycleAssignBatchDownloadRec> nnList = recMap.get(Constant.SynStatus.FAIL.getCode());
-					//获取状态为99的任务,组装成map,方便后续查找
-					Map<String, List<ItfTblRecycleAssignBatchDownloadRec>> nnMap = (null != nnList && !nnList.isEmpty()) ? (nnList.stream().collect(Collectors.groupingBy(ItfTblRecycleAssignBatchDownloadRec::getPgguid))) : null;
-					
-					//不添加到新增任务列表的
-					responseBeanList.forEach(o->{
-						if(null == zeroMap || !zeroMap.containsKey(o.getPgguid())
-								|| null == zeroMap.get(o.getPgguid()) 
-								|| zeroMap.get(o.getPgguid()).isEmpty()) {//没有状态为0的任务
-							if(null == nnMap || !nnMap.containsKey(o.getPgguid())
-									|| null == nnMap.get(o.getPgguid()) 
-									|| nnMap.get(o.getPgguid()).isEmpty()) {//没有状态为99的任务
-								try {
-									RecycleAssignDownloadEntity entity = copyBean2Entity(o);
-									ItfTblRecycleAssignBatchDownloadRec rec = new ItfTblRecycleAssignBatchDownloadRec();
-									rec.setSynTimes(1);
-									rec.setGreeStatSynStatus(0);
-									rec.setCreatedDate(new Date());
-									rec.setLastModifiedDate(new Date());
-									entity.setRec(rec);
-									newTaskEntities.add(entity);
-								} catch (JsonProcessingException e) {
-									log.error("RecycleAssignDownload bean复制到RecycleAssignDownloadEntity异常:{}", e.getMessage());
-								}
-							}else {//含有请求失败过的任务(状态为99),若超过3次,则不再请求接口
-								ItfTblRecycleAssignBatchDownloadRec rec = nnMap.get(o.getPgguid()).get(0);
-								if( rec.getSynTimes() >= 3 ) {
-									rec.setGreeStatSynStatus(Constant.SynStatus.FAIL.getCode());
-									rec.setCreatedDate(new Date());
-									rec.setLastModifiedDate(new Date());
-									rec.setGreeStatSynErrMsg("请求次数大于3次,不再发送pgguid={}"+ rec.getPgguid());
-									RecycleAssignDownloadEntity entity = new RecycleAssignDownloadEntity();
-									entity.setRec(rec);
-									newTaskEntities.add(entity);
-								}else {
-									try {
-										RecycleAssignDownloadEntity entity = copyBean2Entity(o);
-										rec.setSynTimes(rec.getSynTimes()+1);
-										rec.setLastModifiedDate(new Date());
-										entity.setRec(rec);
-										newTaskEntities.add(entity);
-									} catch (JsonProcessingException e) {
-										log.error("RecycleAssignDownload bean复制到RecycleAssignDownloadEntity异常:{}", e.getMessage());
-									}
-								}
-							}
+					// 按状态分组0-99
+					recMap = recList.stream().collect(Collectors.groupingBy(ItfTblRecycleAssignBatchDownloadRec::getGreeStatSynStatus));
+					// 已下载未处理的-0
+					zeroList = recMap.get(0);
+					// 状态为0的任务按工单主键分组
+					zeroMap = (null != zeroList && !zeroList.isEmpty()) ? (zeroList.stream().collect(Collectors.groupingBy(ItfTblRecycleAssignBatchDownloadRec::getPgguid))) : null;
+					nnList = recMap.get(Constant.SynStatus.FAIL.getCode());
+					// 状态为99的任务按工单主键分组
+					nnMap = (null != nnList && !nnList.isEmpty()) ? (nnList.stream().collect(Collectors.groupingBy(ItfTblRecycleAssignBatchDownloadRec::getPgguid))) : null;
+				}
+
+				for (RecycleAssignDownloadBean o:responseBeanList){
+					try{
+						// 已存在为0的任务不做任何处理 说明本次下载了上次同样的数据
+						if (zeroMap !=null && zeroMap.containsKey(o.getPgguid())){
+							continue;
 						}
-					});
-				}else {//数据库没查到数据,直接新增任务
-					//要添加到新增任务列表的
-					responseBeanList.forEach(o->{
-						try {
-							RecycleAssignDownloadEntity entity = copyBean2Entity(o);
-							ItfTblRecycleAssignBatchDownloadRec rec = new ItfTblRecycleAssignBatchDownloadRec();
-							rec.setPgguid(o.getPgguid());
-							rec.setSynTimes(1);
-							rec.setGreeStatSynStatus(0);
-							rec.setCreatedDate(new Date());
-							rec.setLastModifiedDate(new Date());
-							entity.setRec(rec);
-							newTaskEntities.add(entity);
-						} catch (JsonProcessingException e) {
-							log.error("RecycleAssignDownload bean复制到RecycleAssignDownloadEntity异常:{}", e.getMessage());
+
+						// 状态为99的单独处理 只处理下载记录表,同步次数+1
+						if (nnMap !=null && nnMap.containsKey(o.getPgguid())){
+							process(nnMap, newTaskEntities, o);
+						} else {
+							// 获取新增的
+							getAdd(newTaskEntities, o);
 						}
-					});
-				}
-				if( null != newTaskEntities && !newTaskEntities.isEmpty()) {
-					batchAddDownloadTask(newTaskEntities );
+
+						// 回收工单落表 所有表任务号与批次号同下载记录表 单独的任务号,本次拉取的数据相同的批次号
+						if( null != newTaskEntities && !newTaskEntities.isEmpty()) {
+							batchAddDownloadTask(newTaskEntities,batchNo);
+						}
+					} catch (Exception ex) {
+						ex.printStackTrace();
+						log.info("回收工单落本地表失败:{}",o.getPgguid());
+					}
 				}
 			}
 		}
 		return responseBeanList;
 	}
-	
+
+	private void getAdd(List<RecycleAssignDownloadEntity> newTaskEntities, RecycleAssignDownloadBean o) {
+		try {
+			// 报文中提取实体表对像数据 主表,反馈表,回收产品明细表
+			RecycleAssignDownloadEntity entity = copyBean2Entity(o);
+			ItfTblRecycleAssignBatchDownloadRec rec = new ItfTblRecycleAssignBatchDownloadRec();
+			rec.setPgguid(o.getPgguid());
+			rec.setSynTimes(1);
+			rec.setGreeStatSynStatus(0);
+			rec.setCreatedDate(new Date());
+			rec.setLastModifiedDate(new Date());
+			entity.setRec(rec);
+			newTaskEntities.add(entity);
+		} catch (JsonProcessingException e) {
+			log.error("RecycleAssignDownload bean复制到RecycleAssignDownloadEntity异常:{}", e.getMessage());
+		}
+	}
+
+	private void process(Map<String, List<ItfTblRecycleAssignBatchDownloadRec>> nnMap, List<RecycleAssignDownloadEntity> newTaskEntities, RecycleAssignDownloadBean o) {
+		ItfTblRecycleAssignBatchDownloadRec rec = nnMap.get(o.getPgguid()).get(0);
+		// 查看状态为99的数据(请求失败过的任务) 若超过3次,则不再请求接口
+		if( rec.getSynTimes() >= 3 ) {
+			rec.setGreeStatSynStatus(Constant.SynStatus.FAIL.getCode());
+			rec.setCreatedDate(new Date());
+			rec.setLastModifiedDate(new Date());
+			rec.setGreeStatSynErrMsg("请求次数大于3次,不再发送pgguid={}"+ rec.getPgguid());
+			RecycleAssignDownloadEntity entity = new RecycleAssignDownloadEntity();
+			entity.setRec(rec);
+			newTaskEntities.add(entity);
+		}else {
+			// 未超三次把数据同步下来   这里最好改synStatus为0,目的就是与总部确认时重新获取反馈明细数据 todo 1
+			try {
+				RecycleAssignDownloadEntity entity = copyBean2Entity(o);
+				rec.setSynTimes(rec.getSynTimes()+1);
+				rec.setLastModifiedDate(new Date());
+				entity.setRec(rec);
+				newTaskEntities.add(entity);
+			} catch (JsonProcessingException e) {
+				log.error("RecycleAssignDownload bean复制到RecycleAssignDownloadEntity异常:{}", e.getMessage());
+			}
+		}
+	}
+
 	/**
 	 * 批量添加回收工单任务
 	 * @param newTaskEntities
 	 */
 	@Transactional
-	public void batchAddDownloadTask(List<RecycleAssignDownloadEntity> newTaskEntities) {
+	public void batchAddDownloadTask(List<RecycleAssignDownloadEntity> newTaskEntities,String batchNo) {
 		List<ItfTblRecycleAssignBatchDownloadRec> recList = new ArrayList<>();
-		String batchNo = UUID.randomUUID().toString();
+
 		if(null != newTaskEntities && !newTaskEntities.isEmpty()) {
 			List<ItfTblRecycleAssignDownload> tblRecycleAssignEntity = new ArrayList<>();
 			List<ItfTblRecycleAssignFkmxDownload> lastStep = new ArrayList<>();
 			List<ItfTblRecycleAssignMxDownload> hscpmx = new ArrayList<>();
 			newTaskEntities.forEach(o->{
+				// 下载记录表 单独的任务号,相同的批次号
 				ItfTblRecycleAssignBatchDownloadRec rec = o.getRec();
 				rec.setDownloadTaskNo(UUID.randomUUID().toString());
 				rec.setDownloadBatchNo(batchNo);
@@ -213,19 +225,22 @@ public class RecycleAssignLogic {
 				rec.setCreatedDate(new Date());
 				rec.setLastModifiedDate(new Date());
 				recList.add(rec);
-				//把基础信息的状态更新到所有的明细
+				//把基础信息的状态更新到所有的明细
 				if(!Objects.isNull(o.getTblRecycleAssignEntity())) {
+					// 回收工单主表 任务号与批次号同下载记录表
 					tblRecycleAssignEntity.add(o.getTblRecycleAssignEntity().setSynStatus(rec.getSynStatus()).
 							setSynErrMsg(rec.getSynErrMsg()).setDownloadBatchNo(
 							rec.getDownloadBatchNo()).setDownloadTaskNo(rec.getDownloadTaskNo())
 							.setCreatedDate(new Date()).setLastModifiedDate(new Date()));
 				}
 				if( !Objects.isNull( o.getLastStep())) {
+					// 反馈明细表 任务号与批次号同下载记录表
 					lastStep.add(o.getLastStep().setSynStatus(rec.getSynStatus()).
 							setSynErrMsg(rec.getSynErrMsg()).setDownloadBatchNo(rec.getDownloadBatchNo()).
 							setDownloadTaskNo(rec.getDownloadTaskNo()));
 				}
 				if(null != o.getHscpmx() && !o.getHscpmx().isEmpty()) {
+					// 回收产品明细表 任务号与批次号同下载记录表
 					o.getHscpmx().forEach(i->{
 						i.setSynStatus(
 								o.getTblRecycleAssignEntity().getSynStatus()).setSynErrMsg(
@@ -235,8 +250,6 @@ public class RecycleAssignLogic {
 						hscpmx.add(i);
 					});
 				}
-				
-				
 			});
 			if( null != tblRecycleAssignEntity  && !tblRecycleAssignEntity.isEmpty()) {
 				recycleAssignService.saveOrUpdateBatch(tblRecycleAssignEntity);
@@ -250,6 +263,7 @@ public class RecycleAssignLogic {
 			if(null != recList && !recList.isEmpty()) {
 				recycleAssignBatchDownloadRecService.saveOrUpdateBatch(recList);
 			}
+			newTaskEntities.clear();
 		}
 		
 	}
@@ -262,18 +276,18 @@ public class RecycleAssignLogic {
 	 * @throws JsonProcessingException
 	 */
 	private RecycleAssignDownloadEntity copyBean2Entity(RecycleAssignDownloadBean bean) throws JsonMappingException, JsonProcessingException {
-//		ObjectMapper mapper = new ObjectMapper();
-//		SimpleDateFormat smt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-//		mapper.setDateFormat(smt);
-//		mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
 		RecycleAssignDownloadEntity entity = new RecycleAssignDownloadEntity();
+		List<ItfTblRecycleAssignMxDownload>  mxList = new ArrayList<>();
+
+		// 提取回收工单主表数据
 		entity.setTblRecycleAssignEntity(mapper.readValue(mapper.writeValueAsString(bean), ItfTblRecycleAssignDownload.class));
+		// 提取回收工单反馈数据
 		entity.setLastStep(mapper.readValue(mapper.writeValueAsString(bean.getLastStep()), ItfTblRecycleAssignFkmxDownload.class));
-		List<ItfTblRecycleAssignMxDownload>  mxList = new ArrayList<>();
+
 		bean.getHscpmx().forEach(o-> {
 				try {
+					// 提取回收产品明细数据
 					ItfTblRecycleAssignMxDownload mxEntity = mapper.readValue(mapper.writeValueAsString(o), ItfTblRecycleAssignMxDownload.class);
-//					entity.getHscpmx().add(mxEntity);
 					mxList.add(mxEntity);
 				} catch (JsonProcessingException e) {
 					log.error("转换RecycleAssignMxDownload bean 到 RecycleAssignMxDownload 异常:{}", e.getOriginalMessage());
@@ -294,15 +308,22 @@ public class RecycleAssignLogic {
 			});
 			
 			//装载list
-			List<ItfTblRecycleAssignDownload> raList = recycleAssignService.lambdaQuery().in(ItfTblRecycleAssignDownload::getDownloadTaskNo, taskNos).list();
+			// 回收工单主表 并按任务号分组
+			List<ItfTblRecycleAssignDownload> raList = recycleAssignService.lambdaQuery()
+					.in(ItfTblRecycleAssignDownload::getDownloadTaskNo, taskNos).list();
 			Map<String, List<ItfTblRecycleAssignDownload>> raMap = raList.stream().collect(Collectors.groupingBy(ItfTblRecycleAssignDownload::getDownloadTaskNo));
-			List<ItfTblRecycleAssignFkmxDownload> fkmxList = recycleAssignFkmxDownloadService.lambdaQuery().in(ItfTblRecycleAssignFkmxDownload::getDownloadTaskNo, taskNos).list();
+			// 回收工单过程反馈表 并按任务号分组
+			List<ItfTblRecycleAssignFkmxDownload> fkmxList = recycleAssignFkmxDownloadService.lambdaQuery()
+					.in(ItfTblRecycleAssignFkmxDownload::getDownloadTaskNo, taskNos).list();
 			Map<String, List<ItfTblRecycleAssignFkmxDownload>> fkmxMap = fkmxList.stream().collect(Collectors.groupingBy(ItfTblRecycleAssignFkmxDownload::getDownloadTaskNo));
-			List<ItfTblRecycleAssignMxDownload> mxList = recycleAssignMxDownloadService.lambdaQuery().in(ItfTblRecycleAssignMxDownload::getDownloadTaskNo, taskNos).list();
+			// 回收工单产品明细表 并按任务号分组
+			List<ItfTblRecycleAssignMxDownload> mxList = recycleAssignMxDownloadService.lambdaQuery()
+					.in(ItfTblRecycleAssignMxDownload::getDownloadTaskNo, taskNos).list();
 			Map<String, List<ItfTblRecycleAssignMxDownload>> mxMap = mxList.stream().collect(Collectors.groupingBy(ItfTblRecycleAssignMxDownload::getDownloadTaskNo));
 
 			recList.forEach(o->{
 				RecycleAssignDownloadBean bean = new RecycleAssignDownloadBean();
+				// 回收工单主表
 				if(Objects.isNull(raMap)
 						|| !raMap.containsKey(o.getDownloadTaskNo())
 						||Collections.isEmpty(raMap.get(o.getDownloadTaskNo()))){
@@ -317,22 +338,20 @@ public class RecycleAssignLogic {
 						log.error("转换RecycleAssignDownloadEntity 到 RecycleAssignDownload bean 异常:{}", e.getOriginalMessage());
 					}
 				}
+				// 回收工单过程反馈表
 				if(!Objects.isNull(fkmxMap) && fkmxMap.containsKey(o.getDownloadTaskNo())
 						&& !Collections.isEmpty(fkmxMap.get(o.getDownloadTaskNo()))
 						) {
 					try {
-						// bean.setLastStep(mapper.readValue(mapper.writeValueAsString(fkmxMap.get(o.getDownloadTaskNo()).get(0)), ItfTblRecycleAssignBatchDownloadRec.class));
-						RecycleAssignFkmxDownloadBean r = new RecycleAssignFkmxDownloadBean();
-						BeanUtils.copyProperties(fkmxMap.get(o.getDownloadTaskNo()).get(0),r);
-						bean.setLastStep(r);
+						bean.setLastStep(mapper.readValue(mapper.writeValueAsString(fkmxMap.get(o.getDownloadTaskNo()).get(0)), RecycleAssignFkmxDownloadBean.class));
 					} catch (Exception e) {
 						log.error("转换RecycleAssignFkmxDownloadEntity 到 RecycleAssignFkmxDownload bean 异常:{}", e.getMessage());
 					}
 				}
+				// 回收明细表
 				if(!Objects.isNull(mxMap)  && mxMap.containsKey(o.getDownloadTaskNo())
 						&& Collections.isEmpty(mxMap.get(o.getDownloadTaskNo()))
 						) {
-
 					List<RecycleAssignMxDownloadBean> hscpmx = new ArrayList<>();
 					mxMap.get(o.getDownloadTaskNo()).forEach(i->{
 						try {
@@ -351,12 +370,14 @@ public class RecycleAssignLogic {
 	}
 	
 	/**
-	 * 查询synstatus状态为0即未同步的数据,装载到RecycleAssignDownloadBean里
+	 * 查询greeStatSynStatus状态为0即未同步的数据,装载到RecycleAssignDownloadBean里
 	 * @return
 	 * @throws Exception
 	 */
 	private List<RecycleAssignDownloadBean> queryUnSynList() {
-		return copyEntities2Bean(recycleAssignBatchDownloadRecService.lambdaQuery().eq(ItfTblRecycleAssignBatchDownloadRec::getSynStatus, 66).eq(ItfTblRecycleAssignBatchDownloadRec::getGreeStatSynStatus, 0).list());
+		return copyEntities2Bean(recycleAssignBatchDownloadRecService.lambdaQuery()
+				.eq(ItfTblRecycleAssignBatchDownloadRec::getSynStatus, 66)
+				.eq(ItfTblRecycleAssignBatchDownloadRec::getGreeStatSynStatus, 0).list());
 	}
 	
 	/**
@@ -366,9 +387,15 @@ public class RecycleAssignLogic {
 	 */
 	public List<GreeResponseHelper> updateFeedback() throws Exception {
 		List<GreeResponseHelper> responseList = new ArrayList<>();
-		List<ItfTblRecycleAssignBatchDownloadRec> recList = recycleAssignBatchDownloadRecService.lambdaQuery().eq(ItfTblRecycleAssignBatchDownloadRec::getSynStatus, 0).eq(ItfTblRecycleAssignBatchDownloadRec::getGreeStatSynStatus,0).list();
+		// 任务记录表中提取 syn_status = 0 and gree_stat_syn_status = 0的数据  这里加上同步次数小于3的,重新获取反馈明细更好 todo 2
+		List<ItfTblRecycleAssignBatchDownloadRec> recList = recycleAssignBatchDownloadRecService.lambdaQuery()
+				.eq(ItfTblRecycleAssignBatchDownloadRec::getSynStatus, 0)
+				.eq(ItfTblRecycleAssignBatchDownloadRec::getGreeStatSynStatus,0).list();
 		if( null != recList && !recList.isEmpty()) {
+			// 提取回收工单主表、过程反馈、明细表中数据 组装下载请求时相同的报文信息
 			List<RecycleAssignDownloadBean> unSynList = copyEntities2Bean(recList);
+			// 与总数进行确认 成功时同步获取的反馈明细表数据,下载记录表置标识为 syn_status=44 代表已同步反馈明细数据
+			// 失败时 下载记录表、反馈明细表、新产品明细表置syn_status=99
 			for (RecycleAssignDownloadBean recycleAssignDownloadBean : unSynList) {
 				responseList.add(assignDetail(recycleAssignDownloadBean));
 			}
@@ -378,11 +405,9 @@ public class RecycleAssignLogic {
 	
 	
 	/**
-	 * 多线程请求
 	 * @param bean
 	 * @throws Exception 
 	 */
-	// @Async("taskExecutor")
 	@Transactional
 	public GreeResponseHelper updateExtendReq(RecycleAssignDownloadBean bean) throws Exception {
 		final String apiPath = Constant.GreeApiPath.RECYCLE_ASSIGN; 
@@ -393,78 +418,94 @@ public class RecycleAssignLogic {
 		map.put("batchNo", bean.getBatchNo());
 		GreeResponseHelper response = greeLogic.greePost(apiPath, map, 1);
 		if( 200 == response.getStatus()) {
-			RecycleAssignDownloadBean resultBean =  mapper.readValue(response.getData().toString(), RecycleAssignDownloadBean.class);
-			ItfTblRecycleAssignBatchDownloadRec rec = recycleAssignBatchDownloadRecService.lambdaQuery().eq(ItfTblRecycleAssignBatchDownloadRec::getDownloadTaskNo, resultBean.getTaskNo()).one();
-			ItfTblRecycleAssignDownload ra = recycleAssignService.lambdaQuery().eq(ItfTblRecycleAssignDownload::getDownloadTaskNo, resultBean.getTaskNo()).one();
-			//反馈明细已经在详情接口assignDetail获取下来,所以不必再获取了
-//			RecycleAssignFkmxDownload fkmx = recycleAssignFkmxDownloadService.lambdaQuery().eq(RecycleAssignFkmxDownload::getDownloadTaskNo, resultBean.getTaskNo()).one();
-			List<ItfTblRecycleAssignMxDownload> mxList = recycleAssignMxDownloadService.lambdaQuery().eq(ItfTblRecycleAssignMxDownload::getDownloadTaskNo, resultBean.getTaskNo()).list();
-			//更新状态为已同步
-			rec.setGreeStatSynStatus(GreeSynStatusEnum.SYN.getCode());
-			rec.setGreeStatSynTime(new Date());
-			rec.setSynReqTime(new Date());
-			rec.setLastModifiedDate(new Date());
-			recycleAssignBatchDownloadRecService.saveOrUpdate(rec);
-			ra.setGreeStatSynStatus(GreeSynStatusEnum.SYN.getCode());
-			ra.setGreeStatSynTime(new Date());
-			ra.setSynReqTime(new Date());
-			ra.setLastModifiedDate(new Date());
-			recycleAssignService.saveOrUpdate(ra);
-//			fkmx.setGreeStatSynStatus(GreeSynStatusEnum.SYN.getCode());
-//			fkmx.setGreeStatSynTime(new Date());
-//			fkmx.setSynReqTime(new Date());
-//			fkmx.setLastModifiedDate(new Date());
-//			recycleAssignFkmxDownloadService.saveOrUpdate(fkmx);
-			mxList.stream().forEach(o->{
-				o.setGreeStatSynStatus(GreeSynStatusEnum.SYN.getCode());
-				o.setGreeStatSynTime(new Date());
-				o.setSynReqTime(new Date());
-				o.setLastModifiedDate(new Date());
-			});
-			recycleAssignMxDownloadService.saveOrUpdateBatch(mxList);
+			// 更新记录表,主表及产品明细表的状态为greeStatSynStatus=1
+			updateGreeStatSynStatus(response);
 		}else {
-			ItfTblRecycleAssignBatchDownloadRec rec = recycleAssignBatchDownloadRecService.lambdaQuery().eq(ItfTblRecycleAssignBatchDownloadRec::getDownloadTaskNo, bean.getTaskNo()).one();
-			ItfTblRecycleAssignDownload ra = recycleAssignService.lambdaQuery().eq(ItfTblRecycleAssignDownload::getDownloadTaskNo, bean.getTaskNo()).one();
-//			RecycleAssignFkmxDownload fkmx = recycleAssignFkmxDownloadService.lambdaQuery().eq(RecycleAssignFkmxDownload::getDownloadTaskNo, bean.getTaskNo()).one();
-			List<ItfTblRecycleAssignMxDownload> mxList = recycleAssignMxDownloadService.lambdaQuery().eq(ItfTblRecycleAssignMxDownload::getDownloadTaskNo, bean.getTaskNo()).list();
-			//更新状态为已同步
-			rec.setGreeStatSynStatus(GreeSynStatusEnum.FAIL.getCode());
-			rec.setGreeStatSynTime(new Date());
-			rec.setSynStatus(GreeSynStatusEnum.FAIL.getCode());
-			rec.setSynReqTime(new Date());
-			rec.setLastModifiedDate(new Date());
-			rec.setGreeStatSynErrMsg(response.getMsg());
-			recycleAssignBatchDownloadRecService.saveOrUpdate(rec);
-			ra.setGreeStatSynStatus(1);
-			ra.setGreeStatSynTime(new Date());
-			ra.setSynReqTime(new Date());
-			ra.setLastModifiedDate(new Date());
-			ra.setSynErrMsg(response.getMsg());
-			recycleAssignService.saveOrUpdate(ra);
-//			fkmx.setGreeStatSynStatus(GreeSynStatusEnum.FAIL.getCode());
-//			fkmx.setGreeStatSynTime(new Date());
-//			fkmx.setSynReqTime(new Date());
-//			fkmx.setLastModifiedDate(new Date());
-//			recycleAssignFkmxDownloadService.saveOrUpdate(fkmx);
-			mxList.stream().forEach(o->{
-				o.setGreeStatSynStatus(GreeSynStatusEnum.FAIL.getCode());
-				o.setGreeStatSynTime(new Date());
-				o.setLastModifiedDate(new Date());
-				o.setSynErrMsg(response.getMsg());
-			});
-			recycleAssignMxDownloadService.saveOrUpdateBatch(mxList);
+			// 更新记录表synStatus=greeStatSynStatus=99,主表greeStatSynStatus=1,产品明细表的状态为greeStatSynStatus=99
+			errorUpdateGreeStatSynStatus(bean, response);
 		}
 		return response;
 	}
-	
+
+	private void errorUpdateGreeStatSynStatus(RecycleAssignDownloadBean bean, GreeResponseHelper response) {
+		ItfTblRecycleAssignBatchDownloadRec rec = recycleAssignBatchDownloadRecService.lambdaQuery()
+				.eq(ItfTblRecycleAssignBatchDownloadRec::getDownloadTaskNo, bean.getTaskNo()).one();
+		ItfTblRecycleAssignDownload ra = recycleAssignService.lambdaQuery()
+				.eq(ItfTblRecycleAssignDownload::getDownloadTaskNo, bean.getTaskNo()).one();
+		List<ItfTblRecycleAssignMxDownload> mxList = recycleAssignMxDownloadService.lambdaQuery()
+				.eq(ItfTblRecycleAssignMxDownload::getDownloadTaskNo, bean.getTaskNo()).list();
+		//更新状态为已同步
+		rec.setGreeStatSynStatus(GreeSynStatusEnum.FAIL.getCode());
+		rec.setGreeStatSynTime(new Date());
+		rec.setSynStatus(GreeSynStatusEnum.FAIL.getCode());
+		rec.setSynReqTime(new Date());
+		rec.setLastModifiedDate(new Date());
+		rec.setGreeStatSynErrMsg(response.getMsg());
+		recycleAssignBatchDownloadRecService.saveOrUpdate(rec);
+		ra.setGreeStatSynStatus(1);
+		ra.setGreeStatSynTime(new Date());
+		ra.setSynReqTime(new Date());
+		ra.setLastModifiedDate(new Date());
+		ra.setSynErrMsg(response.getMsg());
+		recycleAssignService.saveOrUpdate(ra);
+		mxList.stream().forEach(o->{
+			o.setGreeStatSynStatus(GreeSynStatusEnum.FAIL.getCode());
+			o.setGreeStatSynTime(new Date());
+			o.setLastModifiedDate(new Date());
+			o.setSynErrMsg(response.getMsg());
+		});
+		if (mxList !=null && mxList.size()>0){
+			recycleAssignMxDownloadService.saveOrUpdateBatch(mxList);
+			mxList.clear();
+		}
+	}
+
+	private void updateGreeStatSynStatus(GreeResponseHelper response) throws JsonProcessingException {
+		RecycleAssignDownloadBean resultBean =  mapper.readValue(response.getData().toString(), RecycleAssignDownloadBean.class);
+		ItfTblRecycleAssignBatchDownloadRec rec = recycleAssignBatchDownloadRecService.lambdaQuery()
+				.eq(ItfTblRecycleAssignBatchDownloadRec::getDownloadTaskNo, resultBean.getTaskNo()).one();
+		// 回收工单主表
+		ItfTblRecycleAssignDownload ra = recycleAssignService.lambdaQuery()
+				.eq(ItfTblRecycleAssignDownload::getDownloadTaskNo, resultBean.getTaskNo()).one();
+		// 回收明细表
+		List<ItfTblRecycleAssignMxDownload> mxList = recycleAssignMxDownloadService.lambdaQuery()
+				.eq(ItfTblRecycleAssignMxDownload::getDownloadTaskNo, resultBean.getTaskNo()).list();
+
+		// 记录表更新状态为已同步
+		rec.setGreeStatSynStatus(GreeSynStatusEnum.SYN.getCode());
+		rec.setGreeStatSynTime(new Date());
+		rec.setSynReqTime(new Date());
+		rec.setLastModifiedDate(new Date());
+		recycleAssignBatchDownloadRecService.saveOrUpdate(rec);
+		// 主表
+		ra.setGreeStatSynStatus(GreeSynStatusEnum.SYN.getCode());
+		ra.setGreeStatSynTime(new Date());
+		ra.setSynReqTime(new Date());
+		ra.setLastModifiedDate(new Date());
+		recycleAssignService.saveOrUpdate(ra);
+
+		mxList.stream().forEach(o->{
+			o.setGreeStatSynStatus(GreeSynStatusEnum.SYN.getCode());
+			o.setGreeStatSynTime(new Date());
+			o.setSynReqTime(new Date());
+			o.setLastModifiedDate(new Date());
+		});
+		if (mxList!=null && mxList.size()>0){
+			recycleAssignMxDownloadService.saveOrUpdateBatch(mxList);
+			mxList.clear();
+		}
+	}
+
 	/**
 	 * 批量上传更新过的数据pgguid
 	 * @throws Exception
 	 */
 	public List<GreeResponseHelper> updateExtend() throws Exception {
 		List<GreeResponseHelper> responseList = new ArrayList<>();
+		// 提取已成功下载采集数据且未与总部确认的回收工单数据
 		List<RecycleAssignDownloadBean> unSynList = queryUnSynList();
 		if( null != unSynList && !unSynList.isEmpty()) {
+			// 按单与总部同步确认并修改记录表
 			for (RecycleAssignDownloadBean recycleAssignDownloadBean : unSynList) {
 				responseList.add(updateExtendReq(recycleAssignDownloadBean));
 			}
@@ -472,33 +513,24 @@ public class RecycleAssignLogic {
 		return responseList;
 	}
 	
-	
-	/**
-	 * 多线程请求
-	 * @param bean
-	 * @throws Exception 
-	 */
-	@SuppressWarnings({ "unused", "unchecked" })
-	// @Async("taskExecutor")
+
 	@Transactional
 	public GreeResponseHelper assignDetail(RecycleAssignBean bean) throws Exception {
 		final String apiPath = Constant.GreeApiPath.RECYCLE_ASSIGN_DETAIL;
-//		ObjectMapper mapper = new ObjectMapper();
-//		SimpleDateFormat smt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-//		mapper.setDateFormat(smt);
-//		mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
 		Map<String, Object> param = mapper.readValue(mapper.writeValueAsString(bean), Map.class);
 		GreeResponseHelper response = greeLogic.greePost(apiPath, param, 1);
-		ItfTblRecycleAssignBatchDownloadRec rec = recycleAssignBatchDownloadRecService.lambdaQuery().eq(ItfTblRecycleAssignBatchDownloadRec::getDownloadTaskNo, bean.getTaskNo()).one();
+		ItfTblRecycleAssignBatchDownloadRec rec = recycleAssignBatchDownloadRecService.lambdaQuery()
+				.eq(ItfTblRecycleAssignBatchDownloadRec::getDownloadTaskNo, bean.getTaskNo()).one();
 		if( 200 == response.getStatus()) {
-//			Map<String, Object> map = mapper.readValue( (String)response.getData(), Map.class);
 			RecycleAssignDetailDownloadBean responseBean = mapper.readValue((String)response.getData(), RecycleAssignDetailDownloadBean.class);
 			List<ItfTblRecycleAssignFkmxDownload> fkmxList= recycleAssignFkmxDownloadService.lambdaQuery()
 					.eq(ItfTblRecycleAssignFkmxDownload::getDownloadTaskNo, bean.getTaskNo())
 					.eq(ItfTblRecycleAssignFkmxDownload::getPgguid, bean.getPgguid()).list();
+			// 反馈明细表处理
 			if(null != responseBean.getFkmx() && !responseBean.getFkmx().isEmpty()) {
+				// 与总部返回的反馈明细表数据比较 无时增加
 				for(RecycleAssignFkmxDownloadBean fkmxBean: responseBean.getFkmx()) {
-					if(!fkmxList.stream().filter(o->o.getFkid().equals(fkmxBean.getFkid())).findAny().isPresent()) {//若找不到数据,则添加
+					if(!fkmxList.stream().filter(o->o.getFkid().equals(fkmxBean.getFkid())).findAny().isPresent()) {
 						ItfTblRecycleAssignFkmxDownload newFkmx = mapper.readValue(mapper.writeValueAsString(fkmxBean), ItfTblRecycleAssignFkmxDownload.class);
 						newFkmx.setDownloadBatchNo(bean.getBatchNo());
 						newFkmx.setDownloadTaskNo(bean.getTaskNo());
@@ -513,13 +545,16 @@ public class RecycleAssignLogic {
 			rec.setLastModifiedDate(new Date());
 			recycleAssignBatchDownloadRecService.saveOrUpdate(rec);
 		}else {
-			rec.setSynStatus(Constant.SynStatus.FAIL.getCode());//增加一个中间状态,代表反馈明细已更新
+			rec.setSynStatus(Constant.SynStatus.FAIL.getCode());// 本次与总部确认同步失败
 			rec.setSynErrMsg(response.getMsg());
 			rec.setSynReqTime(new Date());
 			rec.setLastModifiedDate(new Date());
 			recycleAssignBatchDownloadRecService.saveOrUpdate(rec);
-			List<ItfTblRecycleAssignFkmxDownload> fkmxList = recycleAssignFkmxDownloadService.lambdaQuery().eq(ItfTblRecycleAssignFkmxDownload::getDownloadTaskNo, bean.getTaskNo()).list();
-			List<ItfTblRecycleAssignMxDownload> mxList = recycleAssignMxDownloadService.lambdaQuery().eq(ItfTblRecycleAssignMxDownload::getDownloadTaskNo, bean.getTaskNo()).list();
+			List<ItfTblRecycleAssignFkmxDownload> fkmxList = recycleAssignFkmxDownloadService.lambdaQuery()
+					.eq(ItfTblRecycleAssignFkmxDownload::getDownloadTaskNo, bean.getTaskNo()).list();
+			List<ItfTblRecycleAssignMxDownload> mxList = recycleAssignMxDownloadService.lambdaQuery()
+					.eq(ItfTblRecycleAssignMxDownload::getDownloadTaskNo, bean.getTaskNo()).list();
+			// 反馈明细表数据做同样处理,同步失败
 			if(null != fkmxList && !fkmxList.isEmpty()) {
 				fkmxList.stream().forEach(o->{
 						o.setSynStatus(rec.getSynStatus());
@@ -529,6 +564,7 @@ public class RecycleAssignLogic {
 					});
 				recycleAssignFkmxDownloadService.saveOrUpdateBatch(fkmxList);
 			}
+			// 产品明细表数据做同样处理,同步失败
 			if(null != mxList && !mxList.isEmpty()) {
 				mxList.stream().forEach(o->{
 						o.setSynStatus(rec.getSynStatus());

+ 57 - 0
src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleHsptJjcjBean.java

@@ -0,0 +1,57 @@
+package com.zfire.jiasm.syncdata.gree.recycle;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel
+public class RecycleHsptJjcjBean {
+	
+	@ApiModelProperty(value = "旧机采集服务端Id")
+    private String pgwcmxid;
+
+    @ApiModelProperty(value = "工单Id")
+    private String pgguid;
+
+    @ApiModelProperty(value = "工单明细Id")
+    private String pgmxid;
+
+    @ApiModelProperty(value = "手机端生成Id")
+    private String sjscid;
+
+    @ApiModelProperty(value = "鉴定结果")
+    private Integer jdjg;
+
+    @ApiModelProperty(value = "是否拆机")
+    private Integer sfcj;
+
+    @ApiModelProperty(value = "楼层")
+    private String lceng;
+
+    @ApiModelProperty(value = "尺寸")
+    private String ccun;
+
+    @ApiModelProperty(value = "旧机品牌")
+    private String jjpp;
+
+    @ApiModelProperty(value = "旧机类型")
+    private String jjlx;
+
+    @ApiModelProperty(value = "旧机缺损情况")
+    private String jjqsqk;
+
+    @ApiModelProperty(value = "匹数")
+    private String pshu;
+
+    private String jjrj;
+
+    @ApiModelProperty(value = "乐观锁")
+    private Integer version;
+
+    @ApiModelProperty(value = "回收品类id")
+    private Long spid;
+
+    @ApiModelProperty(value = "回收品类名称")
+    private String spmc;
+}

+ 24 - 0
src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleHsptJjcjDownloadBean.java

@@ -0,0 +1,24 @@
+package com.zfire.jiasm.syncdata.gree.recycle;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@ApiModel
+public class RecycleHsptJjcjDownloadBean extends RecycleHsptJjcjBean{
+	
+	@ApiModelProperty(value = "创建人")
+    private String createdBy;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createdDate;
+
+    @ApiModelProperty(value = "最后更新用户")
+    private String lastModifiedBy;
+
+    @ApiModelProperty(value = "最后更新时间")
+    private Date lastModifiedDate;
+}

+ 34 - 0
src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleHsptJjcjFjBean.java

@@ -0,0 +1,34 @@
+package com.zfire.jiasm.syncdata.gree.recycle;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel
+public class RecycleHsptJjcjFjBean {
+
+	@ApiModelProperty(value = "旧机采集附件主键")
+    private String fjguid;
+
+    @ApiModelProperty(value = "旧机采集服务端Id")
+    private String pgwcmxid;
+
+    @ApiModelProperty(value = "附件类型")
+    private Integer type;
+
+    @ApiModelProperty(value = "附件下标")
+    private Integer fjindex;
+
+    @ApiModelProperty(value = "附件名称")
+    private String fjname;
+
+    @ApiModelProperty(value = "附件服务端存储路径")
+    private String fjserverpath;
+
+    @ApiModelProperty(value = "附件手机端存储路径")
+    private String fjphonepath;
+
+    @ApiModelProperty(value = "乐观锁")
+    private Integer version;
+}

+ 5 - 0
src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleHsptJjcjFjDownloadBean.java

@@ -0,0 +1,5 @@
+package com.zfire.jiasm.syncdata.gree.recycle;
+
+public class RecycleHsptJjcjFjDownloadBean extends RecycleHsptJjcjFjBean {
+
+}

+ 5 - 0
src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleHsptJjcjFjUploadBean.java

@@ -0,0 +1,5 @@
+package com.zfire.jiasm.syncdata.gree.recycle;
+
+public class RecycleHsptJjcjFjUploadBean extends RecycleHsptJjcjFjBean {
+
+}

+ 31 - 0
src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleHsptJjcjTmmxBean.java

@@ -0,0 +1,31 @@
+package com.zfire.jiasm.syncdata.gree.recycle;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel
+public class RecycleHsptJjcjTmmxBean {
+	
+	@ApiModelProperty(value = "条码id")
+    private String tmguid;
+
+    @ApiModelProperty(value = "旧机采集服务端Id")
+    private String pgwcmxid;
+
+    @ApiModelProperty(value = "条码")
+    private String jqtm;
+
+    @ApiModelProperty(value = "条码类型(0-内机条码 1-外机条码)")
+    private Integer tmlx;
+
+    @ApiModelProperty(value = "条码附件服务端存储路径")
+    private String fjserverpath;
+
+    @ApiModelProperty(value = "条码附件手机端存储路径")
+    private String fjphonepath;
+
+    @ApiModelProperty(value = "乐观锁")
+    private Integer version;
+}

+ 5 - 0
src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleHsptJjcjTmmxDownloadBean.java

@@ -0,0 +1,5 @@
+package com.zfire.jiasm.syncdata.gree.recycle;
+
+public class RecycleHsptJjcjTmmxDownloadBean extends RecycleHsptJjcjTmmxBean {
+
+}

+ 5 - 0
src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleHsptJjcjTmmxUploadBean.java

@@ -0,0 +1,5 @@
+package com.zfire.jiasm.syncdata.gree.recycle;
+
+public class RecycleHsptJjcjTmmxUploadBean extends RecycleHsptJjcjTmmxBean {
+
+}

+ 40 - 0
src/main/java/com/zfire/jiasm/syncdata/gree/recycle/RecycleHsptJjcjUploadBean.java

@@ -0,0 +1,40 @@
+package com.zfire.jiasm.syncdata.gree.recycle;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel
+public class RecycleHsptJjcjUploadBean extends RecycleHsptJjcjBean {
+
+	@ApiModelProperty(value = "gps")
+    private String gps;
+
+    @ApiModelProperty(value = "采集定位省")
+    private String sjcjsfen;
+
+    @ApiModelProperty(value = "采集定位市")
+    private String sjcjcshi;
+
+    @ApiModelProperty(value = "采集定位县")
+    private String sjcjxian;
+
+    @ApiModelProperty(value = "gps地址")
+    private String gpsdizi;
+
+    @ApiModelProperty(value = "网点编号")
+    private String wdno;
+
+    @ApiModelProperty(value = "网点名称")
+    private String wdmc;
+
+    @ApiModelProperty(value = "工程师编号")
+    private String azrenno;
+
+    @ApiModelProperty(value = "工程师名称")
+    private String azren;
+
+    @ApiModelProperty(value = "工程师电话")
+    private String azrenyddh;
+}

+ 97 - 0
src/main/java/com/zfire/jiasm/syncdata/gree/recycle/stock/RecycleStockBarcodeInfoUploadBean.java

@@ -0,0 +1,97 @@
+package com.zfire.jiasm.syncdata.gree.recycle.stock;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@ApiModel
+public class RecycleStockBarcodeInfoUploadBean {
+	@ApiModelProperty(value = "机器条码")
+    private String jqtm;
+
+    @ApiModelProperty(value = "机器条码类型;1:内机;2:外机")
+    private Integer tmlx;
+
+    @ApiModelProperty(value = "品类id;空调、冰箱、洗衣机等")
+    private Integer spid;
+
+    @ApiModelProperty(value = "品类名称")
+    private String spmc;
+
+    @ApiModelProperty(value = "品牌")
+    private String pinp;
+
+    @ApiModelProperty(value = "机器类型:挂机、柜机等")
+    private String jqlx;
+
+    @ApiModelProperty(value = "匹数")
+    private Float pshu;
+
+    @ApiModelProperty(value = "当前存放单位名称")
+    private String dqcfmc;
+
+    @ApiModelProperty(value = "当前存放单位id")
+    private String dqcfid;
+
+    @ApiModelProperty(value = "网点编号,随着机器归哪个网点而变化")
+    private String wdno;
+
+    @ApiModelProperty(value = "联系电话")
+    private String yddh;
+
+    @ApiModelProperty(value = "回收时间")
+    private Date hssj;
+
+    @ApiModelProperty(value = "回收网点编号")
+    private String hsfwwdno;
+
+    @ApiModelProperty(value = "回收网点名称")
+    private String hsfwwdmc;
+
+    @ApiModelProperty(value = "最新出入库时间")
+    private Date dqsj;
+
+    @ApiModelProperty(value = "最新出入库单号")
+    private String dqno;
+
+    @ApiModelProperty(value = "工单类型:1:以旧换新;2:回收工单")
+    private Integer srclx;
+
+    @ApiModelProperty(value = "工单信息编号")
+    private String srcno;
+
+    @ApiModelProperty(value = "采集源单id")
+    @TableField("srcId")
+    private String srcId;
+
+    @ApiModelProperty(value = "完成明细id")
+    private String pgwcmxid;
+
+    @ApiModelProperty(value = "状态;0:待入库;1:已入库;2:已出库")
+    private Integer state;
+
+    @ApiModelProperty(value = "外仓名称")
+    private String wcmc;
+
+    @ApiModelProperty(value = "外仓编码")
+    private String wcno;
+
+    @ApiModelProperty(value = "创建人id")
+    private String createdBy;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createdDate;
+
+    @ApiModelProperty(value = "更新人id")
+    private String lastModifiedBy;
+
+    @ApiModelProperty(value = "更新时间")
+    private Date lastModifiedDate;
+
+    @ApiModelProperty(value = "源工单销售单号(或小格绿单号)")
+    private String srcxsdh;
+}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.