UDI同步上传地址使用syncIp

master
admin 2 years ago
parent cbd80dc157
commit 7321c957fe

@ -15,7 +15,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.text.WordUtils; import org.apache.commons.text.WordUtils;
import org.apache.tools.ant.util.DateUtils; import org.apache.tools.ant.util.DateUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -78,7 +78,8 @@ public class IdcServiceImpl implements IdcService {
"basicThirdProducts//thr_products/id///updateTime///第三方产品信息","//sup_cert/id///updateTime/filePath//资质证书信息", "basicThirdProducts//thr_products/id///updateTime///第三方产品信息","//sup_cert/id///updateTime/filePath//资质证书信息",
"//sup_cert_set/id///updateTime///供应商资质证书设置","companyCert//sup_company/customerId///updateTime///配送企业", "//sup_cert_set/id///updateTime///供应商资质证书设置","companyCert//sup_company/customerId///updateTime///配送企业",
"manufacturerCert//sup_manufacturer/id///updateTime///生产企业","productCert//sup_product/id///updateTime///产品资质信息", "manufacturerCert//sup_manufacturer/id///updateTime///生产企业","productCert//sup_product/id///updateTime///产品资质信息",
"dbDiProducts//productinfo/id///updateTime///DI产品信息","//udicompany/id///updateTime///国际库医疗器械注册人信息"}; "//udicompany/id///updateTime///国际库医疗器械注册人信息"};
//"dbDiProducts//productinfo/id///updateTime///DI产品信息",
private int orderNum=0; private int orderNum=0;
@ -167,16 +168,24 @@ public class IdcServiceImpl implements IdcService {
initTable(); initTable();
Map<String,Object> map = dbDao.get("select * from sync_data_set limit 1"); Map<String,Object> map = dbDao.get("select * from sync_data_set limit 1");
if(map!=null&&map.get("downstreamEnable")!=null&&map.get("downstreamEnable").toString().equals("1")) { if(map!=null&&map.get("downstreamEnable")!=null&&map.get("downstreamEnable").toString().equals("1")) {
if(isUpload) {
if(!(map.get("syncIp")!=null&&!StringUtils.isEmpty(map.get("syncIp").toString()))) {
logger.error("中继服务地址未配置");
return;
}
}
for(int i=0;i<SYNC_TABLES.length;i++) { for(int i=0;i<SYNC_TABLES.length;i++) {
String[] tnames = SYNC_TABLES[i].split("/"); String[] tnames = SYNC_TABLES[i].split("/");
saveIdcLog("---","",map.get(tnames[0])+SYNC_TABLES[i],0,0); saveIdcLog("---","",map.get(tnames[0])+SYNC_TABLES[i],0,0);
if(!StringUtils.isEmpty(tnames[0])&&map!=null&&map.get(tnames[0])!=null&&map.get(tnames[0]).toString().equals("1")) if(!StringUtils.isEmpty(tnames[0])&&map!=null&&map.get(tnames[0])!=null&&map.get(tnames[0]).toString().equals("1")) {
syncData(SYNC_TABLES[i],isUpload); String syncIp = map.get("syncIp")!=null ? map.get("syncIp").toString() : "";
syncData(SYNC_TABLES[i],isUpload,syncIp);
}
} }
} }
} }
private void syncData(String t,boolean isUpload) { private void syncData(String t,boolean isUpload,String syncIp) {
boolean sync = true; boolean sync = true;
String[] tnames = t.split("/"); String[] tnames = t.split("/");
@ -205,7 +214,7 @@ public class IdcServiceImpl implements IdcService {
map.put("messageType", tnames[9]); map.put("messageType", tnames[9]);
map.put("messageName", tnames[9]); map.put("messageName", tnames[9]);
ScheduledRequest scheduledRequest = new ScheduledRequest(); ScheduledRequest scheduledRequest = new ScheduledRequest();
scheduledRequest.setCronName("sync"+ WordUtils.capitalizeFully(tnames[2], new char[]{'_'}).replace("_", "")); scheduledRequest.setCronName("sync"+WordUtils.capitalizeFully(tnames[2], new char[]{'_'}).replace("_", ""));
ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest); ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest);
String cron = scheduledEntity!=null ? scheduledEntity.getCron() : ""; String cron = scheduledEntity!=null ? scheduledEntity.getCron() : "";
@ -215,7 +224,7 @@ public class IdcServiceImpl implements IdcService {
sync = nextTimePoint.before(nowUpdateTime); sync = nextTimePoint.before(nowUpdateTime);
} }
if(sync) { if(sync) {
if(syncMasterData(map,isUpload)) { if(syncMasterData(map,isUpload,syncIp)) {
setUpdateTime(tnames[2],DateUtil.formatDate(nowUpdateTime,"yyyy-MM-dd HH:mm:ss")); setUpdateTime(tnames[2],DateUtil.formatDate(nowUpdateTime,"yyyy-MM-dd HH:mm:ss"));
} }
} }
@ -286,11 +295,11 @@ public class IdcServiceImpl implements IdcService {
JSONObject json = JSONObject.parseObject(content); JSONObject json = JSONObject.parseObject(content);
String datePath = DateUtil.formatDate(new Date(),"yyyy-MM-dd"); String datePath = DateUtil.formatDate(new Date(),"yyyy-MM-dd");
FileUtils.makeDirectory(filePath +datePath+"/");
FileUtils.makeDirectory(backFilePath +datePath+"/");
String fileName = filePath +datePath+"/"+json.getString("messageType")+"-"+json.getString("messageId")+".udi"; String fileName = filePath +datePath+"/"+json.getString("messageType")+"-"+json.getString("messageId")+".udi";
String backFileName = backFilePath +datePath+"/"+json.getString("messageType")+"-"+json.getString("messageId")+".udi"; String backFileName = backFilePath +datePath+"/"+json.getString("messageType")+"-"+json.getString("messageId")+".udi";
FileUtils.makeDirectory(fileName);
FileUtils.makeDirectory(backFileName);
FileUtils.SaveFileAs(content, fileName); FileUtils.SaveFileAs(content, fileName);
FileUtils.SaveFileAs(content, backFileName); FileUtils.SaveFileAs(content, backFileName);
String[] saveFiles= {}; String[] saveFiles= {};
@ -316,11 +325,19 @@ public class IdcServiceImpl implements IdcService {
saveUploadStatus(json.getString("messageType"),json.getString("messageId"),fileName); saveUploadStatus(json.getString("messageType"),json.getString("messageId"),fileName);
/*解析入库*/ /*解析入库*/
if(isLastLevel()) { if(isLastLevel()) {
analyToDB(json,files); if(!analyToDB(json,files))
return ResultVOUtils.error(9000, "解析失败");
} else { } else {
//需要转发 //需要转发
if(isRelay()) { if(isRelay()) {
relay(request.getHeader("reqNo"),content,saveFiles); String host = getNextHost();
String result = relay(request.getHeader("reqNo"),content,saveFiles,host);
if(IDCUtils.isJson(result)) {
JSONObject object = JSON.parseObject(result);
if(object.getInteger("code")!=20000)
return ResultVOUtils.error(9000, "转发失败");
}
} }
} }
return ResultVOUtils.success(); return ResultVOUtils.success();
@ -356,13 +373,11 @@ public class IdcServiceImpl implements IdcService {
dbDao.save(sql); dbDao.save(sql);
} }
private void saveExportStatus(String messageType,String taskId,String fileName) { private void saveExportStatus(Map<String,Object> params) {
Map<String,Object> map = new HashMap<String,Object>(); Map<String,Object> map = new HashMap<String,Object>();
map.put("id", CustomUtil.getId());
map.put("taskId", taskId);
map.put("cacheFilePath", fileName);
map.put("status", "0"); map.put("status", "0");
map.put("type", messageType); map.putAll(params);
map.put("id", CustomUtil.getId());
map.put("updateTime", new Date()); map.put("updateTime", new Date());
Map<String,Object> columns = getColumn("basic_export_status"); Map<String,Object> columns = getColumn("basic_export_status");
String sql = "insert into basic_export_status "+DBAUtils.parseInsert(map, columns); String sql = "insert into basic_export_status "+DBAUtils.parseInsert(map, columns);
@ -399,7 +414,7 @@ public class IdcServiceImpl implements IdcService {
} }
private boolean syncMasterData(Map<String,Object> params,boolean isUplaod) { private boolean syncMasterData(Map<String,Object> params,boolean isUplaod,String syncIp) {
boolean success=false; boolean success=false;
String tableName = params.get("tableName").toString(); String tableName = params.get("tableName").toString();
String tableKey = params.get("tableKey").toString(); String tableKey = params.get("tableKey").toString();
@ -481,7 +496,7 @@ public class IdcServiceImpl implements IdcService {
if(isUplaod) { if(isUplaod) {
String result = ""; String result = "";
try { try {
result = relay("",JSON.toJSONString(data),files); result = relay("",JSON.toJSONString(data),files,syncIp);
} catch (Exception ex) { } catch (Exception ex) {
} }
@ -503,12 +518,12 @@ public class IdcServiceImpl implements IdcService {
saveIdcLog(messageType,"",tableName +">fail:上传地址未连通",i *limit,total); saveIdcLog(messageType,"",tableName +">fail:上传地址未连通",i *limit,total);
} }
} else { } else {
syncAddTask(data);
if(!StringUtils.isEmpty(recordSql)) { if(!StringUtils.isEmpty(recordSql)) {
dbDao.save("insert into idc_record (id,type,fkId,isEnd,createTime) values "+recordSql); dbDao.save("insert into idc_record (id,type,fkId,isEnd,createTime) values "+recordSql);
} }
saveIdcLog(messageType,"",tableName +">success",i *limit,total); saveIdcLog(messageType,"",tableName +">success",i *limit,total);
} }
syncAddTask(data,isUplaod);
} }
} }
} }
@ -519,42 +534,50 @@ public class IdcServiceImpl implements IdcService {
} }
/*增加同步任务*/ /*增加同步任务*/
private void syncAddTask(Map<String,Object> json) { private void syncAddTask(Map<String,Object> json,boolean isUpload) {
String content = JSON.toJSONString(json); String content = JSON.toJSONString(json);
String datePath = DateUtil.formatDate(new Date(),"yyyy-MM-dd"); String datePath = DateUtil.formatDate(new Date(),"yyyy-MM-dd");
FileUtils.makeDirectory(filePath +datePath+"/");
FileUtils.makeDirectory(backFilePath +datePath+"/");
String fileName = filePath +datePath+"/"+json.get("messageType")+"-"+json.get("messageId")+".udi"; String fileName = filePath +datePath+"/"+json.get("messageType")+"-"+json.get("messageId")+".udi";
String backFileName = backFilePath +datePath+"/"+json.get("messageType")+"-"+json.get("messageId")+".udi"; String backFileName = backFilePath +datePath+"/"+json.get("messageType")+"-"+json.get("messageId")+".udi";
FileUtils.makeDirectory(fileName);
FileUtils.makeDirectory(backFileName);
FileUtils.SaveFileAs(content, fileName); FileUtils.SaveFileAs(content, fileName);
FileUtils.SaveFileAs(content, backFileName); FileUtils.SaveFileAs(content, backFileName);
//type,transportType,superiorService,subordinateService,cacheFilePath
saveExportStatus(json.get("messageType").toString(),json.get("messageId").toString(),fileName); Map<String,Object> map = new HashMap<>();
map.put("type", json.get("messageType"));
map.put("transportType", isUpload ? "1" : "2");
map.put("scheduleType", isUpload ? "1" : "0");
map.put("taskId", json.get("messageId"));
map.put("cacheFilePath", fileName);
saveExportStatus(map);
} }
/*解析到数据库*/ /*解析到数据库*/
private void analyToDB(JSONObject jsonObject,MultipartFile[] files) { private boolean analyToDB(JSONObject jsonObject,MultipartFile[] files) {
if(!StringUtils.isEmpty(jsonObject.getString("tableName"))) { if(!StringUtils.isEmpty(jsonObject.getString("tableName"))) {
List<Map<String,Object>> list = jsonObject.getObject("data", List.class); List<Map<String,Object>> list = jsonObject.getObject("data", List.class);
analyData(jsonObject.getString("tableName"),jsonObject.getString("uniqueColumn"),list); return analyData(jsonObject.getString("tableName"),jsonObject.getString("uniqueColumn"),list);
//图片处理 //图片处理
} }
return false;
} }
/*按表名解析数据到数据库,子表暂未处理*/ /*按表名解析数据到数据库,子表暂未处理*/
private void analyData(String tableName,String uniqueColumn,List<Map<String,Object>> list) { private boolean analyData(String tableName,String uniqueColumn,List<Map<String,Object>> list) {
String tName = DBAUtils.tableRealName(tableName); String tName = DBAUtils.tableRealName(tableName);
String sql="replace "+tName +"("; String sql="replace "+tName +"(";
String del="delete from "+tName+" where "; String del="delete from "+tName+" where ";
String upd="update "+tName+" set "; String upd="update "+tName+" set ";
String[] keyColumn=new String[30]; String[] keyColumn=new String[30];
String[] keyDataType=new String[30]; String[] keyDataType=new String[30];
List<Map<String,String>> columnList = dbDao.listColumnsMysql(tName); List<Map<String,String>> columnList = dbDao.listColumnsMysql(tName);
boolean result = false;
int key=0; int key=0;
int col=0; int col=0;
for(int i=0;i<columnList.size();i++) { for(int i=0;i<columnList.size();i++) {
@ -658,17 +681,18 @@ public class IdcServiceImpl implements IdcService {
} }
} }
if(n>0) if(n>0) {
dbDao.save(sql); result = (dbDao.save(sql)>0);
}
} }
return result;
} }
/*转发下级或上级中继服务*/ /*转发下级或上级中继服务*/
private String relay(String reqNo,String content,String[] files) { private String relay(String reqNo,String content,String[] files,String ip) {
String host = getNextHost(); String host = ip;
String result=""; String result="";
if(StringUtils.isEmpty(reqNo)) if(StringUtils.isEmpty(reqNo))
reqNo = UUID.randomUUID().toString(); reqNo = UUID.randomUUID().toString();
@ -761,6 +785,7 @@ public class IdcServiceImpl implements IdcService {
map.put("apiCode", "common"); map.put("apiCode", "common");
map.put("tableName", DBAUtils.tableAliasName(tableName)); map.put("tableName", DBAUtils.tableAliasName(tableName));
map.put("uniqueColumn", params.get("uniqueColumn")); map.put("uniqueColumn", params.get("uniqueColumn"));
map.put("filePathColumn", params.get("filePathColumn"));
map.put("sendTime", new Date()); map.put("sendTime", new Date());
map.put("version", "1.0"); map.put("version", "1.0");
map.put("total", list.size()); map.put("total", list.size());
@ -879,4 +904,6 @@ public class IdcServiceImpl implements IdcService {
} }
} }
} }

Loading…
Cancel
Save