|
|
|
@ -1,4 +1,4 @@
|
|
|
|
|
package com.glxp.api.idc.service.impl;
|
|
|
|
|
package com.glxp.sale.admin.idc.service.impl;
|
|
|
|
|
|
|
|
|
|
import java.io.File;
|
|
|
|
|
import java.io.FileOutputStream;
|
|
|
|
@ -44,8 +44,6 @@ import com.glxp.api.idc.utils.TableUtils;
|
|
|
|
|
import com.glxp.api.req.system.ScheduledRequest;
|
|
|
|
|
import com.glxp.api.service.system.SystemParamConfigService;
|
|
|
|
|
import com.glxp.api.util.CustomUtil;
|
|
|
|
|
import com.glxp.api.util.DateUtil;
|
|
|
|
|
import com.glxp.api.util.FileUtils;
|
|
|
|
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import okhttp3.MediaType;
|
|
|
|
@ -223,6 +221,7 @@ public class IdcServiceImpl implements IdcService {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String[] syncTables = TableUtils.syncTables();
|
|
|
|
|
for (int i = 0; i < syncTables.length; i++) {
|
|
|
|
|
String[] tnames = syncTables[i].split("/");
|
|
|
|
@ -232,13 +231,83 @@ public class IdcServiceImpl implements IdcService {
|
|
|
|
|
if (sync) {
|
|
|
|
|
String syncIp = map.get("syncIp") != null ? map.get("syncIp").toString() : "";
|
|
|
|
|
syncData(syncTables[i], isUpload, syncIp);
|
|
|
|
|
asyncDelete(syncTables[i], isUpload, syncIp);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*数据删除同步*/
|
|
|
|
|
private void asyncDelete(String tname,boolean isUpload,String syncIp) {
|
|
|
|
|
String[] tnames = tname.split("/");
|
|
|
|
|
String lastUpdateTime = getUpdateTime(tnames[2] + "." + tnames[0]+"."+tnames[1]+".delete");
|
|
|
|
|
Date nowUpdateTime = new Date();
|
|
|
|
|
String where = "tableName='"+tnames[2].toLowerCase()+"' and updateTime between cast('"+lastUpdateTime+"' as datetime) "+
|
|
|
|
|
" and cast('"+DateUtil.formatDate(nowUpdateTime, "yyyy-MM-dd HH:mm:ss")+"' as datetime)";
|
|
|
|
|
Map<String,Object> count = new HashMap<String,Object>();
|
|
|
|
|
count.put("sql", "select count(*) from idc_delete where "+where);
|
|
|
|
|
int total = dbDao.count(count);
|
|
|
|
|
int limit = 50;
|
|
|
|
|
if (total > 0) {
|
|
|
|
|
boolean success = true;
|
|
|
|
|
for (int i = 0; i < Math.ceil(total / limit) + 1; i++) {
|
|
|
|
|
Date startTime = new Date();
|
|
|
|
|
Map<String,Object> map = new HashMap<String,Object>();
|
|
|
|
|
map.put("sql", "select * from idc_delete");
|
|
|
|
|
map.put("sqlWhere", where);
|
|
|
|
|
map.put("limit", limit);
|
|
|
|
|
map.put("page", i * limit);
|
|
|
|
|
List<Map<String,Object>> list = dbDao.list(map);
|
|
|
|
|
if(list!=null&&map.size()>0) {
|
|
|
|
|
List<Map<String,Object>> data = new ArrayList<>();
|
|
|
|
|
for(int k=0;i<list.size();k++) {
|
|
|
|
|
String line = list.get(k).get("uniqueValue").toString();
|
|
|
|
|
JSONObject obj = JSON.parseObject(line);
|
|
|
|
|
String uniqueColumn = "";
|
|
|
|
|
for(String key : obj.keySet()){
|
|
|
|
|
uniqueColumn += uniqueColumn.length()>0 ? ","+key : key;
|
|
|
|
|
}
|
|
|
|
|
obj.put("uniqueColumn", uniqueColumn);
|
|
|
|
|
obj.put("operateMode", "D");
|
|
|
|
|
data.add(obj);
|
|
|
|
|
}
|
|
|
|
|
Map<String,Object> msg = new HashMap<String, Object>();
|
|
|
|
|
msg.put("messageId", CustomUtil.getId());
|
|
|
|
|
msg.put("messageType", tnames[9]+"(删除)");
|
|
|
|
|
msg.put("apiCode", "common");
|
|
|
|
|
msg.put("tableName", DBAUtils.tableAliasName(tnames[2]));
|
|
|
|
|
msg.put("sendTime", new Date());
|
|
|
|
|
msg.put("version", "1.0");
|
|
|
|
|
msg.put("total", data.size());
|
|
|
|
|
msg.put("data", data);
|
|
|
|
|
if (isUpload) {
|
|
|
|
|
String result = "";
|
|
|
|
|
try {
|
|
|
|
|
result = relay("", JSON.toJSONString(msg), null, syncIp);
|
|
|
|
|
} catch (Exception ex) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if (IDCUtils.isJson(result)) {
|
|
|
|
|
JSONObject json = JSON.parseObject(result);
|
|
|
|
|
if (json.getInteger("code") == 20000) {
|
|
|
|
|
saveIdcLog(tnames[9], "", tnames[2] + ">success(delete)", i * limit, total);
|
|
|
|
|
} else {
|
|
|
|
|
success = false;
|
|
|
|
|
|
|
|
|
|
private void syncDelete() {
|
|
|
|
|
saveIdcLog(tnames[9], "", tnames[2] + ">" + result, i * limit, total);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
success = false;
|
|
|
|
|
saveIdcLog(tnames[9], "", syncIp + ":" + tnames[2] + ">fail:上传地址未连通", i * limit, total);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
saveIdcLog(tnames[9], "", tnames[2] + ">success(delete)", i * limit, total);
|
|
|
|
|
}
|
|
|
|
|
syncAddTaskStatus(msg, isUpload ? 1 : 0, success, startTime, isUpload);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*单独表调用,tableName可只传表名,如传完整参数按SYNCS_TABLES格式*/
|
|
|
|
@ -822,6 +891,7 @@ public class IdcServiceImpl implements IdcService {
|
|
|
|
|
String[] keyColumn = new String[30];
|
|
|
|
|
String[] keyDataType = new String[30];
|
|
|
|
|
List<Map<String, String>> columnList = dbDao.listColumnsMysql(tName);
|
|
|
|
|
Map<String,Object> column = getColumn(tName);
|
|
|
|
|
boolean result = false;
|
|
|
|
|
int key = 0;
|
|
|
|
|
int col = 0;
|
|
|
|
@ -859,6 +929,15 @@ public class IdcServiceImpl implements IdcService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ("A,D,U".contains(operateMode)) {
|
|
|
|
|
if(operateMode.equals("D")&&list.get(i).get("uniqueColumn")!=null) {
|
|
|
|
|
String[] ucs = list.get(i).get("uniqueColumn").toString().split(",");
|
|
|
|
|
for(String str:ucs) {
|
|
|
|
|
Map<String,Object> map = (Map<String, Object>) column.get(str);
|
|
|
|
|
String dataType = map.get("dataType").toString();
|
|
|
|
|
updateWhere += !StringUtils.isEmpty(updateWhere) ? " and " : " ";
|
|
|
|
|
updateWhere += str +" = "+(dataType.equals("C") ? "'" : "") + list.get(i).get(str) + (dataType.equals("C") ? "'" : "");
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
for (int z = 0; z < keyColumn.length; z++) {
|
|
|
|
|
if (list.get(i).get(keyColumn[z]) != null && !StringUtils.isEmpty(list.get(i).get(keyColumn[z]).toString())) {
|
|
|
|
|
updateWhere += !StringUtils.isEmpty(updateWhere) ? " and " : " ";
|
|
|
|
@ -867,7 +946,7 @@ public class IdcServiceImpl implements IdcService {
|
|
|
|
|
updateWhere += keyColumn[z] + " = " + (keyDataType[z].equals("C") ? "'" : "") + value + (keyDataType[z].equals("C") ? "'" : "");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if ("A,D".contains(operateMode) && !StringUtils.isEmpty(updateWhere))
|
|
|
|
|
dbDao.delete(del + updateWhere);
|
|
|
|
|
}
|
|
|
|
|