|
|
@@ -1,5 +1,6 @@
|
|
|
package com.gree.mall.manager.logic;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.convert.Convert;
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
@@ -9,30 +10,38 @@ import cn.hutool.json.JSONArray;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
-import com.alibaba.nacos.common.util.UuidUtils;
|
|
|
import com.aliyuncs.utils.StringUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
-import com.fasterxml.jackson.databind.DeserializationFeature;
|
|
|
-import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
+
|
|
|
+import com.gree.mall.manager.bean.ItfTblCollectionChargeBean;
|
|
|
+import com.gree.mall.manager.bean.ItfTblWorkOrderCollection0Bean;
|
|
|
+import com.gree.mall.manager.bean.WorkOrderRelationBean;
|
|
|
+import com.gree.mall.manager.bean.WorkOrderSearchReq;
|
|
|
+
|
|
|
import com.gree.mall.manager.bean.policy.ItfGreeSynDownloadRecBean;
|
|
|
import com.gree.mall.manager.constant.Constant;
|
|
|
import com.gree.mall.manager.exception.RemoteServiceException;
|
|
|
-import com.gree.mall.manager.plus.entity.ItfGreeSynDownloadRec;
|
|
|
-import com.gree.mall.manager.plus.entity.ItfGreeSynRule;
|
|
|
-import com.gree.mall.manager.plus.service.ItfGreeSynDownloadRecService;
|
|
|
-import com.gree.mall.manager.plus.service.ItfGreeSynRuleService;
|
|
|
+import com.gree.mall.manager.plus.entity.*;
|
|
|
+import com.gree.mall.manager.plus.service.*;
|
|
|
import com.gree.mall.manager.utils.RedisUtil;
|
|
|
import com.gree.mall.manager.utils.http.HttpUtils;
|
|
|
+import io.swagger.annotations.ApiModelProperty;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.velocity.util.ArrayListWrapper;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.integration.redis.util.RedisLockRegistry;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
import org.springframework.util.LinkedMultiValueMap;
|
|
|
import org.springframework.util.MultiValueMap;
|
|
|
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
+import java.util.concurrent.locks.Lock;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
@Slf4j
|
|
|
@@ -71,89 +80,193 @@ public class SyncOrderInfoLogic {
|
|
|
private String v3ClientSecert;
|
|
|
|
|
|
@Autowired
|
|
|
+ ItfTblWorkOrderService itfTblWorkOrderService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
ItfGreeSynRuleService itfGreeSynRuleService;
|
|
|
|
|
|
@Autowired
|
|
|
ItfGreeSynDownloadRecService itfGreeSynDownloadRecService;
|
|
|
|
|
|
@Value("${gree.four.url}")
|
|
|
- private String greeUrl;
|
|
|
+ private String greeUrl;
|
|
|
|
|
|
@Autowired
|
|
|
RedisUtil redisUtil;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ RedisLockRegistry redisLockRegistry;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblWorkOrderFeedbackService itfTblWorkOrderFeedbackService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblCollectionChargeService itfTblCollectionChargeService;
|
|
|
+
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblCollectionChargeDetailService itfTblCollectionChargeDetailService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblOldProductOrderDetailService itfTblOldProductOrderDetailService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblWorkOrderAddComplainService itfTblWorkOrderAddComplainService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblWorkOrderAppointService itfTblWorkOrderAppointService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblWorkOrderCancelService itfTblWorkOrderCancelService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblWorkOrderComplainFeedbackService itfTblWorkOrderComplainFeedbackService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblWorkOrderComplainService itfTblWorkOrderComplainService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblWorkOrderCompleteInfoService itfTblWorkOrderCompleteInfoService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblWorkOrderConsultService itfTblWorkOrderConsultService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblWorkOrderDetailBarcodeService itfTblWorkOrderDetailBarcodeService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblWorkOrderDetailRelocationService itfTblWorkOrderDetailRelocationService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblWorkOrderDispatchOutletsService itfTblWorkOrderDispatchOutletsService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblWorkOrderEngineerService itfTblWorkOrderEngineerService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ItfTblWorkOrderEvaluationService itfTblWorkOrderEvaluationService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblWorkOrderExtService itfTblWorkOrderExtService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblWorkOrderIndicatorsService itfTblWorkOrderIndicatorsService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ItfTblWorkOrderSignService itfTblWorkOrderSignService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ItfTblWorkOrderTagService itfTblWorkOrderTagService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ItfTblWorkOrderChargeService itfTblWorkOrderChargeService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ItfTblWorkOrderCollectionComplainService itfTblWorkOrderCollectionComplainService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ItfTblWorkOrderCollectionService itfTblWorkOrderCollectionService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ItfTblCollectionRepairService itfTblCollectionRepairService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblCollectionRepairPartService itfTblCollectionRepairPartService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblCollectionRepairProjectService itfTblCollectionRepairProjectService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblWorkOrderDispatchEngineerService tblWorkOrderDispatchEngineerService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblWorkOrderDispatchEngineerService itfTblWorkOrderDispatchEngineerService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ItfTblWorkOrderStatusService itfTblWorkOrderStatusService;
|
|
|
+
|
|
|
+
|
|
|
public void syncGuang() {
|
|
|
- ItfGreeSynRule itfGreeSynRule = itfGreeSynRuleService.lambdaQuery().eq(ItfGreeSynRule::getSalesWebsitNumber, Constant.gree.GUANGZHOUXIAOSI)
|
|
|
- .one();
|
|
|
+ List<ItfGreeSynRule> itfGreeSynRules = itfGreeSynRuleService.lambdaQuery().list();
|
|
|
|
|
|
- Long time = itfGreeSynRule.getLastSynTime().getTime()/1000;
|
|
|
+ for (ItfGreeSynRule itfGreeSynRule : itfGreeSynRules) {
|
|
|
|
|
|
- String accessToken = this.getAccessTokenV3();
|
|
|
+ Long time = itfGreeSynRule.getLastSynTime().getTime() / 1000;
|
|
|
|
|
|
- log.info(greeUrl+ Constant.gree.GET_UPDATE_ORDERS+"/"+Constant.gree.GUANGZHOUXIAOSI+"/"+time);
|
|
|
+ String accessToken = this.getAccessTokenV3();
|
|
|
|
|
|
- Map<String, String> params = new HashMap<>();
|
|
|
+ log.info(greeUrl + Constant.gree.GET_UPDATE_ORDERS + "/" + Constant.gree.GUANGZHOUXIAOSI + "/" + time);
|
|
|
|
|
|
- Map<String, String> heard = new HashMap<>();
|
|
|
- heard.put("authorization","Bearer " + accessToken);
|
|
|
+ Map<String, String> params = new HashMap<>();
|
|
|
|
|
|
- String body = HttpUtils.requestGet(greeUrl+ Constant.gree.GET_UPDATE_ORDERS+"/"+Constant.gree.GUANGZHOUXIAOSI+"/"+time, params,heard);
|
|
|
+ Map<String, String> heard = new HashMap<>();
|
|
|
+ heard.put("authorization", "Bearer " + accessToken);
|
|
|
|
|
|
- Map<String,Object> bodyMap = JSON.parseObject(body);
|
|
|
+ String body = HttpUtils.requestGet(greeUrl + Constant.gree.GET_UPDATE_ORDERS + "/" + Constant.gree.GUANGZHOUXIAOSI + "/" + time, params, heard);
|
|
|
|
|
|
- log.info("【工单同步数据内容】:"+bodyMap.get("data").toString());
|
|
|
+ Map<String, Object> bodyMap = JSON.parseObject(body);
|
|
|
|
|
|
- String s = bodyMap.get("data").toString();
|
|
|
+ log.info("【工单同步数据内容】:" + bodyMap.get("data").toString());
|
|
|
|
|
|
+ String s = bodyMap.get("data").toString();
|
|
|
|
|
|
- JSONArray jsonArray = JSONUtil.parseArray(s);
|
|
|
|
|
|
- List<ItfGreeSynDownloadRecBean> itfGreeSynDownloadRecBeans = JSONUtil.toList(jsonArray, ItfGreeSynDownloadRecBean.class);
|
|
|
+ JSONArray jsonArray = JSONUtil.parseArray(s);
|
|
|
|
|
|
- if (CollectionUtils.isEmpty(itfGreeSynDownloadRecBeans))
|
|
|
- return;
|
|
|
+ List<ItfGreeSynDownloadRecBean> itfGreeSynDownloadRecBeans = JSONUtil.toList(jsonArray, ItfGreeSynDownloadRecBean.class);
|
|
|
|
|
|
- List<ItfGreeSynDownloadRec> itfGreeSynDownloadRecs = new ArrayList<>();
|
|
|
+ if (CollectionUtils.isEmpty(itfGreeSynDownloadRecBeans))
|
|
|
+ return;
|
|
|
|
|
|
- Date date = new Date();
|
|
|
- String batch = IdWorker.getIdStr();
|
|
|
+ List<ItfGreeSynDownloadRec> itfGreeSynDownloadRecs = new ArrayList<>();
|
|
|
|
|
|
- for (ItfGreeSynDownloadRecBean itfGreeSynDownloadRecBean : itfGreeSynDownloadRecBeans) {
|
|
|
- ItfGreeSynDownloadRec itfGreeSynDownloadRec = new ItfGreeSynDownloadRec();
|
|
|
- itfGreeSynDownloadRec.setSynReqTime(date);
|
|
|
- itfGreeSynDownloadRec.setGreeStatSynStatus(0);
|
|
|
- itfGreeSynDownloadRec.setSalesWebsitNumber(itfGreeSynRule.getSalesWebsitNumber());
|
|
|
- itfGreeSynDownloadRec.setDownloadBatchNo(batch);
|
|
|
- itfGreeSynDownloadRec.setWorkOrderId(itfGreeSynDownloadRecBean.getWorkOrderId());
|
|
|
- itfGreeSynDownloadRec.setUpdatedTimestamp(DateUtil.date(Convert.toLong(itfGreeSynDownloadRecBean.getUpdatedTimestamp())));
|
|
|
- itfGreeSynDownloadRec.setOrderNode(itfGreeSynDownloadRecBean.getOrderNode());
|
|
|
- itfGreeSynDownloadRec.setRegionOutletsNo(itfGreeSynDownloadRecBean.getRegionOutletsNo());
|
|
|
- itfGreeSynDownloadRec.setRegionOutletsName(itfGreeSynDownloadRecBean.getRegionOutletsName());
|
|
|
+ Date date = new Date();
|
|
|
+ String batch = IdWorker.getIdStr();
|
|
|
|
|
|
+ for (ItfGreeSynDownloadRecBean itfGreeSynDownloadRecBean : itfGreeSynDownloadRecBeans) {
|
|
|
+ ItfGreeSynDownloadRec itfGreeSynDownloadRec = new ItfGreeSynDownloadRec();
|
|
|
+ itfGreeSynDownloadRec.setSynReqTime(date);
|
|
|
+ itfGreeSynDownloadRec.setGreeStatSynStatus(0);
|
|
|
+ itfGreeSynDownloadRec.setSalesWebsitNumber(itfGreeSynRule.getSalesWebsitNumber());
|
|
|
+ itfGreeSynDownloadRec.setDownloadBatchNo(batch);
|
|
|
+ itfGreeSynDownloadRec.setWorkOrderId(itfGreeSynDownloadRecBean.getWorkOrderId());
|
|
|
+ itfGreeSynDownloadRec.setUpdatedTimestamp(DateUtil.date(Convert.toLong(itfGreeSynDownloadRecBean.getUpdatedTimestamp())));
|
|
|
+ itfGreeSynDownloadRec.setOrderNode(itfGreeSynDownloadRecBean.getOrderNode());
|
|
|
+ itfGreeSynDownloadRec.setRegionOutletsNo(itfGreeSynDownloadRecBean.getRegionOutletsNo());
|
|
|
+ itfGreeSynDownloadRec.setRegionOutletsName(itfGreeSynDownloadRecBean.getRegionOutletsName());
|
|
|
|
|
|
|
|
|
- itfGreeSynDownloadRecs.add(itfGreeSynDownloadRec);
|
|
|
- }
|
|
|
+ itfGreeSynDownloadRecs.add(itfGreeSynDownloadRec);
|
|
|
+ }
|
|
|
|
|
|
- itfGreeSynDownloadRecService.saveBatch(itfGreeSynDownloadRecs);
|
|
|
+ itfGreeSynDownloadRecService.saveBatch(itfGreeSynDownloadRecs);
|
|
|
|
|
|
- }
|
|
|
+ List<ItfGreeSynDownloadRec> itfGreeSynDownloadRecList = itfGreeSynDownloadRecs.stream()
|
|
|
+ .sorted(Comparator.comparing(ItfGreeSynDownloadRec::getUpdatedTimestamp).reversed()).collect(Collectors.toList());
|
|
|
|
|
|
+ itfGreeSynRule.setLastSynTime(itfGreeSynDownloadRecList.get(0).getUpdatedTimestamp());
|
|
|
+ itfGreeSynRule.setLastSynUpdTime(new Date());
|
|
|
|
|
|
+ itfGreeSynRule.updateById();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 获取总部接口的请求token
|
|
|
+ *
|
|
|
* @return
|
|
|
* @throws RemoteServiceException
|
|
|
*/
|
|
|
public String getAccessTokenV3() throws RemoteServiceException {
|
|
|
String redisKey = Constant.RedisPrefix.TOKEN_GREE_V3;
|
|
|
- String token = (String)redisUtil.get(redisKey);
|
|
|
+ String token = (String) redisUtil.get(redisKey);
|
|
|
// if(token != null){
|
|
|
// return token;
|
|
|
// }
|
|
|
- MultiValueMap<String, String> forms= new LinkedMultiValueMap<String, String>();
|
|
|
+ MultiValueMap<String, String> forms = new LinkedMultiValueMap<String, String>();
|
|
|
|
|
|
forms.put("client_id", Collections.singletonList(clientId));
|
|
|
forms.put("client_secret", Collections.singletonList(v3ClientSecert));
|
|
|
@@ -161,9 +274,9 @@ public class SyncOrderInfoLogic {
|
|
|
forms.put("grant_type", Collections.singletonList("client_credentials"));
|
|
|
String s = HttpUtils.requestXwww(v3TokenUrl, forms);
|
|
|
//String s = HttpUtils.requestPostForm(tokenUrl, map, null);
|
|
|
- log.info("【获取总部token】response:{}",s);
|
|
|
- Map<String,Object> bodyMap = JSON.parseObject(s);
|
|
|
- Map<String,Object> map = JSON.parseObject(bodyMap.get("data").toString());
|
|
|
+ log.info("【获取总部token】response:{}", s);
|
|
|
+ Map<String, Object> bodyMap = JSON.parseObject(s);
|
|
|
+ Map<String, Object> map = JSON.parseObject(bodyMap.get("data").toString());
|
|
|
|
|
|
return (String) map.get("access_token");
|
|
|
}
|
|
|
@@ -171,52 +284,56 @@ public class SyncOrderInfoLogic {
|
|
|
|
|
|
/**
|
|
|
* 获取总部接口的请求token
|
|
|
+ *
|
|
|
* @return
|
|
|
-
|
|
|
*/
|
|
|
public String getAccessToken() throws RemoteServiceException {
|
|
|
String redisKey = Constant.RedisPrefix.TOKEN_GREE;
|
|
|
- String token = (String)redisUtil.get(redisKey);
|
|
|
- if(token != null){
|
|
|
+ String token = (String) redisUtil.get(redisKey);
|
|
|
+ if (token != null) {
|
|
|
return token;
|
|
|
}
|
|
|
- MultiValueMap<String, String> forms= new LinkedMultiValueMap<String, String>();
|
|
|
+ MultiValueMap<String, String> forms = new LinkedMultiValueMap<String, String>();
|
|
|
|
|
|
forms.put("client_id", Collections.singletonList(clientId));
|
|
|
forms.put("client_secret", Collections.singletonList(clientSecert));
|
|
|
forms.put("grant_type", Collections.singletonList("client_credentials"));
|
|
|
String s = HttpUtils.requestXwww(tokenUrl, forms);
|
|
|
//String s = HttpUtils.requestPostForm(tokenUrl, map, null);
|
|
|
- log.info("【获取总部token】response:{}",s);
|
|
|
+ log.info("【获取总部token】response:{}", s);
|
|
|
JSONObject jsonObject = JSONObject.parseObject(s);
|
|
|
String accessToken = jsonObject.getString("access_token");
|
|
|
- if(StringUtils.isNotEmpty(accessToken)) {
|
|
|
- redisUtil.set(Constant.RedisPrefix.TOKEN_GREE, accessToken, 2 * 60 * 60);
|
|
|
+ if (StringUtils.isNotEmpty(accessToken)) {
|
|
|
+ redisUtil.set(Constant.RedisPrefix.TOKEN_GREE, accessToken, 2 * 6 * 6);
|
|
|
}
|
|
|
return accessToken;
|
|
|
}
|
|
|
|
|
|
public void syncFo() {
|
|
|
-
|
|
|
- ItfGreeSynRule itfGreeSynRule = itfGreeSynRuleService.lambdaQuery().eq(ItfGreeSynRule::getSalesWebsitNumber, Constant.gree.FOSHANXIAOSI)
|
|
|
+ ItfGreeSynRule itfGreeSynRule = itfGreeSynRuleService.lambdaQuery().eq(ItfGreeSynRule::getSalesWebsitNumber, Constant.gree.GUANGZHOUXIAOSI)
|
|
|
.one();
|
|
|
|
|
|
- Long time = itfGreeSynRule.getLastSynTime().getTime()/1000;
|
|
|
+ Long time = itfGreeSynRule.getLastSynTime().getTime() / 1;
|
|
|
|
|
|
String accessToken = this.getAccessTokenV3();
|
|
|
|
|
|
+ log.info(greeUrl + Constant.gree.GET_UPDATE_ORDERS + "/" + Constant.gree.GUANGZHOUXIAOSI + "/" + time);
|
|
|
+
|
|
|
+ Map<String, String> params = new HashMap<>();
|
|
|
+
|
|
|
+ Map<String, String> heard = new HashMap<>();
|
|
|
+ heard.put("authorization", "Bearer " + accessToken);
|
|
|
|
|
|
- String body = HttpRequest.get(greeUrl+ Constant.gree.GET_UPDATE_ORDERS+"/"+Constant.gree.GUANGZHOUXIAOSI+"/"+time)
|
|
|
- .header("authorization","Bearer " + accessToken)
|
|
|
- .execute().body();
|
|
|
+ String body = HttpUtils.requestGet(greeUrl + Constant.gree.GET_UPDATE_ORDERS + "/" + Constant.gree.GUANGZHOUXIAOSI + "/" + time, params, heard);
|
|
|
|
|
|
+ Map<String, Object> bodyMap = JSON.parseObject(body);
|
|
|
|
|
|
- Map<String,Object> bodyMap = JSON.parseObject(body);
|
|
|
+ log.info("【工单同步数据内容】:" + bodyMap.get("data").toString());
|
|
|
|
|
|
- log.info("【工单同步数据内容】:"+bodyMap.get("data").toString());
|
|
|
+ String s = bodyMap.get("data").toString();
|
|
|
|
|
|
- JSONArray jsonArray = JSONUtil.parseArray(JSON.parseObject(bodyMap.get("data").toString()));
|
|
|
|
|
|
+ JSONArray jsonArray = JSONUtil.parseArray(s);
|
|
|
|
|
|
List<ItfGreeSynDownloadRecBean> itfGreeSynDownloadRecBeans = JSONUtil.toList(jsonArray, ItfGreeSynDownloadRecBean.class);
|
|
|
|
|
|
@@ -235,25 +352,245 @@ public class SyncOrderInfoLogic {
|
|
|
itfGreeSynDownloadRec.setSalesWebsitNumber(itfGreeSynRule.getSalesWebsitNumber());
|
|
|
itfGreeSynDownloadRec.setDownloadBatchNo(batch);
|
|
|
itfGreeSynDownloadRec.setWorkOrderId(itfGreeSynDownloadRecBean.getWorkOrderId());
|
|
|
+ itfGreeSynDownloadRec.setUpdatedTimestamp(DateUtil.date(Convert.toLong(itfGreeSynDownloadRecBean.getUpdatedTimestamp())));
|
|
|
itfGreeSynDownloadRec.setOrderNode(itfGreeSynDownloadRecBean.getOrderNode());
|
|
|
itfGreeSynDownloadRec.setRegionOutletsNo(itfGreeSynDownloadRecBean.getRegionOutletsNo());
|
|
|
itfGreeSynDownloadRec.setRegionOutletsName(itfGreeSynDownloadRecBean.getRegionOutletsName());
|
|
|
-
|
|
|
itfGreeSynDownloadRecs.add(itfGreeSynDownloadRec);
|
|
|
}
|
|
|
|
|
|
itfGreeSynDownloadRecService.saveBatch(itfGreeSynDownloadRecs);
|
|
|
}
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public void syncDetail() {
|
|
|
|
|
|
+ List<ItfGreeSynDownloadRec> itfGreeSynDownloadRecsBatch = itfGreeSynDownloadRecService.lambdaQuery()
|
|
|
+ .eq(ItfGreeSynDownloadRec::getGreeStatSynStatus, 0)
|
|
|
+ .groupBy(ItfGreeSynDownloadRec::getDownloadBatchNo)
|
|
|
+ .last("limit 1").list();
|
|
|
+ if (CollectionUtils.isEmpty(itfGreeSynDownloadRecsBatch))
|
|
|
+ return;
|
|
|
+
|
|
|
+ ItfGreeSynDownloadRec itfGreeSynDownloadRecsBatchOne = itfGreeSynDownloadRecsBatch.get(0);
|
|
|
+
|
|
|
+ Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.SYNC_LOCK +itfGreeSynDownloadRecsBatchOne.getDownloadBatchNo());
|
|
|
+
|
|
|
List<ItfGreeSynDownloadRec> itfGreeSynDownloadRecs = itfGreeSynDownloadRecService.lambdaQuery()
|
|
|
- .eq(ItfGreeSynDownloadRec::getGreeStatSynStatus, 0).last("limit 10").list();
|
|
|
+ .eq(ItfGreeSynDownloadRec::getGreeStatSynStatus, 0)
|
|
|
+ .eq(ItfGreeSynDownloadRec::getDownloadBatchNo,itfGreeSynDownloadRecsBatchOne.getDownloadBatchNo())
|
|
|
+ .list();
|
|
|
+ try {
|
|
|
+ if (!obtain.tryLock(5, TimeUnit.SECONDS)) {
|
|
|
+ throw new RemoteServiceException("系统繁忙,请稍后再试");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ String batch = IdWorker.getIdStr();
|
|
|
+
|
|
|
+ String accessToken = this.getAccessTokenV3();
|
|
|
+
|
|
|
+
|
|
|
+ Map<String, String> params = new HashMap<>();
|
|
|
+
|
|
|
+ Map<String, String> heard = new HashMap<>();
|
|
|
+ heard.put("authorization", "Bearer " + accessToken);
|
|
|
+
|
|
|
+ WorkOrderSearchReq workOrderSearchReq = new WorkOrderSearchReq();
|
|
|
|
|
|
+ List<String> collect = itfGreeSynDownloadRecs.stream().map(ItfGreeSynDownloadRec::getWorkOrderId).collect(Collectors.toList());
|
|
|
+ List<Long> syncIds = itfGreeSynDownloadRecs.stream().map(ItfGreeSynDownloadRec::getSynReqId).collect(Collectors.toList());
|
|
|
|
|
|
+ itfGreeSynDownloadRecService.lambdaUpdate()
|
|
|
+ .in(ItfGreeSynDownloadRec::getSynReqId, syncIds)
|
|
|
+ .set(ItfGreeSynDownloadRec::getGreeStatSynStatus, 1)
|
|
|
+ .set(ItfGreeSynDownloadRec::getDownloadBatchNo, batch)
|
|
|
+ .set(ItfGreeSynDownloadRec::getGreeStatSynTime, new Date())
|
|
|
+ .update();
|
|
|
|
|
|
+ workOrderSearchReq.setWorkOrderIds(collect);
|
|
|
|
|
|
+ String json = JSONUtil.toJsonStr(workOrderSearchReq);
|
|
|
|
|
|
+ String body = HttpUtils.requestPostBody(greeUrl + Constant.gree.POST_WORKER_ORDER_DETAIL, json, heard);
|
|
|
+
|
|
|
+ Map<String, Object> bodyMap = JSON.parseObject(body);
|
|
|
+ String s = bodyMap.get("data").toString();
|
|
|
+
|
|
|
+
|
|
|
+ JSONArray jsonArray = JSONUtil.parseArray(s);
|
|
|
+
|
|
|
+ List<WorkOrderRelationBean> itfGreeSynDownloadRecBeans = JSONUtil.toList(jsonArray, WorkOrderRelationBean.class);
|
|
|
+
|
|
|
+
|
|
|
+ List<ItfTblWorkOrderFeedback> feedbackRespList = new ArrayList<>();
|
|
|
+ List<ItfTblCollectionCharge> collectionChargeList = new ArrayList<>();
|
|
|
+ List<ItfTblCollectionChargeDetail> collectionChargeDetails = new ArrayList<>();
|
|
|
+ List<ItfTblOldProductOrderDetail> tblOldProductOrderDetailList = new ArrayList<>();
|
|
|
+ List<ItfTblWorkOrderAddComplain> tblWorkOrderAddComplainList = new ArrayList<>();
|
|
|
+ List<ItfTblWorkOrderAppoint> tblWorkOrderAppointList = new ArrayList<>();
|
|
|
+ List<ItfTblWorkOrderCancel> tblWorkOrderCancelList = new ArrayList<>();
|
|
|
+ List<ItfTblWorkOrderComplainFeedback> tblWorkOrderComplainFeedbackList = new ArrayList<>();
|
|
|
+ List<ItfTblWorkOrderComplain> tblWorkOrderComplainList = new ArrayList<>();
|
|
|
+ List<ItfTblWorkOrderCompleteInfo> tblWorkOrderCompleteInfoList = new ArrayList<>();
|
|
|
+ List<ItfTblWorkOrderConsult> tblWorkOrderConsultList = new ArrayList<>();
|
|
|
+ List<ItfTblWorkOrderDetailBarcode> tblWorkOrderDetailBarcodeList = new ArrayList<>();
|
|
|
+ List<ItfTblWorkOrderDetailRelocation> tblWorkOrderDetailRelocationList = new ArrayList<>();
|
|
|
+ List<ItfTblWorkOrderDispatchOutlets> tblWorkOrderDispatchOutletsList = new ArrayList<>();
|
|
|
+ List<ItfTblWorkOrderEngineer> tblWorkOrderEngineerList = new ArrayList<>();
|
|
|
+ List<ItfTblWorkOrderEvaluation> tblWorkOrderEvaluationList = new ArrayList<>();
|
|
|
+ List<ItfTblWorkOrderExt> tblWorkOrderExtList = new ArrayList<>();
|
|
|
+ List<ItfTblWorkOrderIndicators> tblWorkOrderIndicatorsList = new ArrayList<>();
|
|
|
+ List<ItfTblWorkOrderSign> tblWorkOrderSignList = new ArrayList<>();
|
|
|
+ List<ItfTblWorkOrderTag> tblWorkOrderTagList = new ArrayList<>();
|
|
|
+ List<ItfTblWorkOrderCharge> workOrderChargeList = new ArrayList<>();
|
|
|
+ List<ItfTblWorkOrderCollectionComplain> workOrderCollectionComplainList = new ArrayList<>();
|
|
|
+
|
|
|
+ List<ItfTblWorkOrderDispatchEngineer> tblWorkOrderDispatchEngineerList = new ArrayList<>();
|
|
|
+ List<ItfTblWorkOrderStatus> tblWorkOrderStatusList = new ArrayList<>();
|
|
|
+
|
|
|
+ List<ItfTblWorkOrderCollection> workOrderCollectionList = new ArrayList<>();
|
|
|
+ List<ItfTblCollectionRepair> collectionRepairList = new ArrayList<>();
|
|
|
+ List<ItfTblCollectionRepairPart> collectionRepairPartList = new ArrayList<>();
|
|
|
+ List<ItfTblCollectionRepairProject> collectionRepairProjectList = new ArrayList<>();
|
|
|
+ List<ItfTblCollectionRepair> collectionRepairSymptomReasonList = new ArrayList<>();
|
|
|
+
|
|
|
+ List<ItfTblWorkOrder> itfTblWorkOrders = new ArrayList<>();
|
|
|
+
|
|
|
+
|
|
|
+ for (WorkOrderRelationBean itfGreeSynDownloadRecBean : itfGreeSynDownloadRecBeans) {
|
|
|
+
|
|
|
+ List<ItfGreeSynDownloadRec> itfGreeSynDownloadRecList = itfGreeSynDownloadRecs.stream()
|
|
|
+ .filter(item -> item.getWorkOrderId().equals(itfGreeSynDownloadRecBean.getId())).collect(Collectors.toList());
|
|
|
+
|
|
|
+ itfGreeSynDownloadRecBean.setDownloadBatchNo(batch);
|
|
|
+
|
|
|
+
|
|
|
+ feedbackRespList.addAll(itfGreeSynDownloadRecBean.getFeedbackRespList());
|
|
|
+
|
|
|
+ for (ItfTblCollectionChargeBean itfTblCollectionChargeBean : itfGreeSynDownloadRecBean.getCollectionChargeList()) {
|
|
|
+ ItfTblCollectionCharge itfTblCollectionCharge = BeanUtil.toBean(itfTblCollectionChargeBean, ItfTblCollectionCharge.class);
|
|
|
+ collectionChargeList.add(itfTblCollectionCharge);
|
|
|
+ collectionChargeDetails.addAll(itfTblCollectionChargeBean.getCollectionChargeDetails());
|
|
|
+ }
|
|
|
+
|
|
|
+ tblOldProductOrderDetailList.addAll(itfGreeSynDownloadRecBean.getTblOldProductOrderDetailList());
|
|
|
+
|
|
|
+ tblWorkOrderAddComplainList.addAll(itfGreeSynDownloadRecBean.getTblWorkOrderAddComplainList());
|
|
|
+
|
|
|
+ tblWorkOrderAppointList.addAll(itfGreeSynDownloadRecBean.getTblWorkOrderAppointList());
|
|
|
+ tblWorkOrderCancelList.addAll(itfGreeSynDownloadRecBean.getTblWorkOrderCancelList());
|
|
|
+ tblWorkOrderComplainFeedbackList.addAll(itfGreeSynDownloadRecBean.getTblWorkOrderComplainFeedbackList());
|
|
|
+ tblWorkOrderComplainList.addAll(itfGreeSynDownloadRecBean.getTblWorkOrderComplainList());
|
|
|
+ tblWorkOrderCompleteInfoList.addAll(itfGreeSynDownloadRecBean.getTblWorkOrderCompleteInfoList());
|
|
|
+ tblWorkOrderConsultList.addAll(itfGreeSynDownloadRecBean.getTblWorkOrderConsultList());
|
|
|
+ tblWorkOrderDetailBarcodeList.addAll(itfGreeSynDownloadRecBean.getTblWorkOrderDetailBarcodeList());
|
|
|
+ tblWorkOrderDetailRelocationList.addAll(itfGreeSynDownloadRecBean.getTblWorkOrderDetailRelocationList());
|
|
|
+ tblWorkOrderDispatchOutletsList.addAll(itfGreeSynDownloadRecBean.getTblWorkOrderDispatchOutletsList());
|
|
|
+ tblWorkOrderEngineerList.addAll(itfGreeSynDownloadRecBean.getTblWorkOrderEngineerList());
|
|
|
+ tblWorkOrderEvaluationList.addAll(itfGreeSynDownloadRecBean.getTblWorkOrderEvaluationList());
|
|
|
+ tblWorkOrderExtList.addAll(itfGreeSynDownloadRecBean.getTblWorkOrderExtList());
|
|
|
+ tblWorkOrderIndicatorsList.addAll(itfGreeSynDownloadRecBean.getTblWorkOrderIndicatorsList());
|
|
|
+ tblWorkOrderSignList.addAll(itfGreeSynDownloadRecBean.getTblWorkOrderSignList());
|
|
|
+ tblWorkOrderTagList.addAll(itfGreeSynDownloadRecBean.getTblWorkOrderTagList());
|
|
|
+ workOrderCollectionComplainList.addAll(itfGreeSynDownloadRecBean.getWorkOrderCollectionComplainList());
|
|
|
+ workOrderChargeList.addAll(itfGreeSynDownloadRecBean.getWorkOrderChargeList());
|
|
|
+
|
|
|
+
|
|
|
+ for (ItfTblWorkOrderCollection0Bean itfTblWorkOrderCollectionBean : itfGreeSynDownloadRecBean.getWorkOrderCollectionList()) {
|
|
|
+
|
|
|
+ ItfTblWorkOrderCollection itfTblWorkOrderCollection = BeanUtil.toBean(itfTblWorkOrderCollectionBean, ItfTblWorkOrderCollection.class);
|
|
|
+ workOrderCollectionList.add(itfTblWorkOrderCollectionBean);
|
|
|
+
|
|
|
+ collectionRepairList.addAll(itfTblWorkOrderCollectionBean.getCollectionRepairList());
|
|
|
+ collectionRepairPartList.addAll(itfTblWorkOrderCollectionBean.getCollectionRepairPartList());
|
|
|
+ collectionRepairProjectList.addAll(itfTblWorkOrderCollectionBean.getCollectionRepairProjectList());
|
|
|
+ collectionRepairSymptomReasonList.addAll(itfTblWorkOrderCollectionBean.getCollectionRepairSymptomReasonList());
|
|
|
+ }
|
|
|
+ tblWorkOrderDispatchEngineerList.addAll(itfGreeSynDownloadRecBean.getTblWorkOrderDispatchEngineerList());
|
|
|
+ tblWorkOrderStatusList.addAll(itfGreeSynDownloadRecBean.getTblWorkOrderStatusList());
|
|
|
+
|
|
|
+ ItfTblWorkOrder itfTblWorkOrder = BeanUtil.toBean(itfGreeSynDownloadRecBean, ItfTblWorkOrder.class);
|
|
|
+ itfTblWorkOrders.add(itfTblWorkOrder);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ feedbackRespList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderFeedbackService.saveBatch(feedbackRespList);
|
|
|
+ collectionChargeList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblCollectionChargeService.saveBatch(collectionChargeList);
|
|
|
+ collectionChargeDetails.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblCollectionChargeDetailService.saveBatch(collectionChargeDetails);
|
|
|
+ tblOldProductOrderDetailList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblOldProductOrderDetailService.saveBatch(tblOldProductOrderDetailList);
|
|
|
+ tblWorkOrderAddComplainList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderAddComplainService.saveBatch(tblWorkOrderAddComplainList);
|
|
|
+ tblWorkOrderAppointList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderAppointService.saveBatch(tblWorkOrderAppointList);
|
|
|
+ tblWorkOrderCancelList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderCancelService.saveBatch(tblWorkOrderCancelList);
|
|
|
+ tblWorkOrderComplainList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderComplainService.saveBatch(tblWorkOrderComplainList);
|
|
|
+ tblWorkOrderComplainFeedbackList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderComplainFeedbackService.saveBatch(tblWorkOrderComplainFeedbackList);
|
|
|
+ tblWorkOrderCompleteInfoList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderCompleteInfoService.saveBatch(tblWorkOrderCompleteInfoList);
|
|
|
+ tblWorkOrderConsultList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderConsultService.saveBatch(tblWorkOrderConsultList);
|
|
|
+ tblWorkOrderDetailBarcodeList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderDetailBarcodeService.saveBatch(tblWorkOrderDetailBarcodeList);
|
|
|
+ tblWorkOrderDetailRelocationList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderDetailRelocationService.saveBatch(tblWorkOrderDetailRelocationList);
|
|
|
+ tblWorkOrderDispatchOutletsList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderDispatchOutletsService.saveBatch(tblWorkOrderDispatchOutletsList);
|
|
|
+ tblWorkOrderEngineerList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderEngineerService.saveBatch(tblWorkOrderEngineerList);
|
|
|
+ tblWorkOrderEvaluationList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderEvaluationService.saveBatch(tblWorkOrderEvaluationList);
|
|
|
+ tblWorkOrderExtList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderExtService.saveBatch(tblWorkOrderExtList);
|
|
|
+ tblWorkOrderIndicatorsList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderIndicatorsService.saveBatch(tblWorkOrderIndicatorsList);
|
|
|
+ tblWorkOrderSignList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderSignService.saveBatch(tblWorkOrderSignList);
|
|
|
+ tblWorkOrderTagList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderTagService.saveBatch(tblWorkOrderTagList);
|
|
|
+ workOrderChargeList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderChargeService.saveBatch(workOrderChargeList);
|
|
|
+ workOrderCollectionComplainList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderCollectionComplainService.saveBatch(workOrderCollectionComplainList);
|
|
|
+ tblWorkOrderDispatchEngineerList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderDispatchEngineerService.saveBatch(tblWorkOrderDispatchEngineerList);
|
|
|
+ tblWorkOrderStatusList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderStatusService.saveBatch(tblWorkOrderStatusList);
|
|
|
+ workOrderCollectionList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblWorkOrderCollectionService.saveBatch(workOrderCollectionList);
|
|
|
+ collectionRepairList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblCollectionRepairService.saveBatch(collectionRepairList);
|
|
|
+ collectionRepairPartList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblCollectionRepairPartService.saveBatch(collectionRepairPartList);
|
|
|
+ collectionRepairProjectList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblCollectionRepairProjectService.saveBatch(collectionRepairProjectList);
|
|
|
+ collectionRepairSymptomReasonList.stream().forEach(item -> item.setDownloadBatchNo(batch));
|
|
|
+ itfTblCollectionRepairService.saveBatch(collectionRepairSymptomReasonList);
|
|
|
+
|
|
|
+
|
|
|
+ itfTblWorkOrderService.saveBatch(itfTblWorkOrders);
|
|
|
+
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ List<Long> syncIds = itfGreeSynDownloadRecs.stream().map(ItfGreeSynDownloadRec::getSynReqId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ itfGreeSynDownloadRecService.lambdaUpdate()
|
|
|
+ .in(ItfGreeSynDownloadRec::getSynReqId, syncIds)
|
|
|
+ .set(ItfGreeSynDownloadRec::getGreeStatSynErrMsg, e.getMessage())
|
|
|
+ .set(ItfGreeSynDownloadRec::getGreeStatSynErrMsg, new Date())
|
|
|
+ .set(ItfGreeSynDownloadRec::getGreeStatSynStatus, 99).update();
|
|
|
+
|
|
|
+
|
|
|
+ } finally {
|
|
|
+ obtain.unlock();
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
}
|