dev
parent
2193834913
commit
c0c18554b8
|
|
@ -3,6 +3,7 @@ package com.cowr.service.ssjygl.synctask;
|
|||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cowr.common.enums.Enums;
|
||||
import com.cowr.common.enums.OrderStateEnum;
|
||||
import com.cowr.model.*;
|
||||
import com.cowr.service.ssjygl.main.Config;
|
||||
import com.cowr.service.ssjygl.main.SvrCacheData;
|
||||
|
|
@ -39,7 +40,7 @@ public class SyncTaskService {
|
|||
this.taskQueue.add(obj);
|
||||
}
|
||||
|
||||
public int getTaskQueueSize(){
|
||||
public int getTaskQueueSize() {
|
||||
return this.taskQueue.size();
|
||||
}
|
||||
|
||||
|
|
@ -310,6 +311,15 @@ public class SyncTaskService {
|
|||
JSONArray arr = data.getJSONArray("data");
|
||||
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++) {
|
||||
JSONObject obj = arr.getJSONObject(i);
|
||||
|
||||
|
|
@ -507,4 +517,44 @@ public class SyncTaskService {
|
|||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue