lisai17@sina.com 2021-01-08 10:47:54 +08:00
parent 2193834913
commit c0c18554b8
1 changed files with 51 additions and 1 deletions

View File

@ -3,6 +3,7 @@ package com.cowr.service.ssjygl.synctask;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.cowr.common.enums.Enums; import com.cowr.common.enums.Enums;
import com.cowr.common.enums.OrderStateEnum;
import com.cowr.model.*; import com.cowr.model.*;
import com.cowr.service.ssjygl.main.Config; import com.cowr.service.ssjygl.main.Config;
import com.cowr.service.ssjygl.main.SvrCacheData; import com.cowr.service.ssjygl.main.SvrCacheData;
@ -310,6 +311,15 @@ public class SyncTaskService {
JSONArray arr = data.getJSONArray("data"); JSONArray arr = data.getJSONArray("data");
List<Record> list = new ArrayList<>(); List<Record> list = new ArrayList<>();
if(Transport.tablename.equals(tablename)){
arr = filtrateTransport(arr);
if(arr.isEmpty()){
log.debug("%s 数据都被过滤了", tablename);
continue;
}
}
for (int i = 0; i < arr.size(); i++) { for (int i = 0; i < arr.size(); i++) {
JSONObject obj = arr.getJSONObject(i); JSONObject obj = arr.getJSONObject(i);
@ -507,4 +517,44 @@ public class SyncTaskService {
return true; return true;
} }
/**
* transport
* 1. state 5
* 2. state 5 5 state 退
* @param arr
* @return
*/
public JSONArray filtrateTransport(JSONArray arr) {
JSONArray out = new JSONArray();
List<String> ids = new ArrayList<>();
List<String> sqls = new ArrayList<>();
Map<String, JSONObject> map = new HashMap<>();
for (int i = 0; i < arr.size(); i++) {
JSONObject obj = arr.getJSONObject(i);
if (obj.get("state") != null && obj.getInteger("state") == OrderStateEnum.RECEIVED.getStateid()) { // state = 5 的情况是需要更新的
out.add(obj);
} else {
// state 为null或者不是 5就需要检查一下数据库是否已经置为 5 了
ids.add(obj.getString("id"));
sqls.add("?");
map.put(obj.getString("id"), obj);
}
}
if (!ids.isEmpty()) {
List<Transport> list = Transport.dao.find("select * from transport t where t.id in (" + StrKit.join(sqls, ",") + ")", ids.toArray());
for (Transport t : list) {
if (t.getState() != OrderStateEnum.RECEIVED.getStateid() && map.containsKey(t.getId())) { // 数据库中 state 已经是 5 的对象,就不加入更新了
out.add(map.get(t.getId()));
} else {
log.debug("有 transport 数据延迟提交,直接丢弃: %s", map.get(t.getId()).toJSONString());
}
}
}
return out;
}
} }