单据同步问题

master
anthonywj 2 years ago
parent cfd81deb8b
commit c09497b01b

@ -70,7 +70,7 @@ public class IdcServiceImpl implements IdcService {
@Value("${API_SECRET}")
private String apiSecret;
private int orderNum = 0;
@Resource
@ -94,47 +94,50 @@ public class IdcServiceImpl implements IdcService {
return ResultVOUtils.success(list);
}
/*下载任务*/
@Override
public BaseResponse download(HttpServletRequest request, Map<String, Object> params) {
return statusFile(params,"basic_export_status");
return statusFile(params, "basic_export_status");
}
@Override
public BaseResponse uploadStatus(HttpServletRequest request, Map<String, Object> params) {
return statusFile(params,"basic_upload_status");
return statusFile(params, "basic_upload_status");
}
@Override
public BaseResponse downloadStatus(HttpServletRequest request, Map<String, Object> params) {
return statusFile(params,"basic_download_status");
return statusFile(params, "basic_download_status");
}
private BaseResponse statusFile(Map<String,Object> params,String tableName) {
String id = "";
if (params.containsKey("taskId") && params.get("taskId") != null) {
id = params.get("taskId").toString();
} else {
id = params.get("id").toString();
}
Map<String, Object> map = map = dbDao.get("select * from " + tableName + " where id='" + id + "'");
if (map == null)
return ResultVOUtils.error(9000, "下载任务不存在");
if (!(map.get("cacheFilePath") != null && FileUtils.isFileExist(map.get("cacheFilePath").toString())))
return ResultVOUtils.error(9000, "下载文件不存在");
String json = FileUtils.readFileAll(map.get("cacheFilePath").toString());
JSONObject object = JSON.parseObject(json);
if (object == null)
return ResultVOUtils.error(9000, "任务下载失败");
if (object != null && object.getInteger("code") != null) {
BaseResponse response = JSON.parseObject(json, BaseResponse.class);
return response;
}
return ResultVOUtils.success(object);
private BaseResponse statusFile(Map<String, Object> params, String tableName) {
String id = "";
if (params.containsKey("taskId") && params.get("taskId") != null) {
id = params.get("taskId").toString();
} else {
id = params.get("id").toString();
}
Map<String, Object> map = map = dbDao.get("select * from " + tableName + " where id='" + id + "'");
if (map == null)
return ResultVOUtils.error(9000, "下载任务不存在" + tableName);
if (!(map.get("cacheFilePath") != null && FileUtils.isFileExist(map.get("cacheFilePath").toString())))
return ResultVOUtils.error(9000, "下载文件不存在-" + tableName);
String json = FileUtils.readFileAll(map.get("cacheFilePath").toString());
JSONObject object = JSON.parseObject(json);
if (object == null)
return ResultVOUtils.error(9000, "任务下载失败");
if (object != null && object.getInteger("code") != null) {
BaseResponse response = JSON.parseObject(json, BaseResponse.class);
return response;
}
return ResultVOUtils.success(object);
}
/*UDI系统上传自助平台*/
@Override
@ -197,7 +200,7 @@ public class IdcServiceImpl implements IdcService {
}
}
private void asyncDataTask(boolean isUpload) {
initTable();
Map<String, Object> map = dbDao.get("select * from sync_data_set limit 1");
@ -211,8 +214,7 @@ public class IdcServiceImpl implements IdcService {
String[] syncTables = TableUtils.syncTables();
for (int i = 0; i < syncTables.length; i++) {
String[] tnames = syncTables[i].split("/");
boolean sync = ((tnames[0]==null||StringUtils.isEmpty(tnames[0])||(tnames[0]!=null&&tnames[0].equals("null")))&&
(tnames[1]==null||StringUtils.isEmpty(tnames[1])||(tnames[1]!=null&&tnames[1].equals("null"))))||
boolean sync = StringUtils.isEmpty(tnames[0]) ||
(!StringUtils.isEmpty(tnames[0]) && map != null && map.get(tnames[0]) != null && map.get(tnames[0]).toString().equals("1"));
saveIdcLog("---", "", map.get(tnames[0]) + syncTables[i], 0, 0);
if (sync) {
@ -223,51 +225,51 @@ public class IdcServiceImpl implements IdcService {
}
}
/*单独表调用tableName可只传表名如传完整参数按SYNCS_TABLES格式*/
@Override
public BaseResponse onceSync(String tableName,boolean isUpload) {
String tnames = tableName.contains("/") ? tableName : "//"+tableName+"///////";
String[] ts = tnames.split("/");
String ip="";
Map<String, Object> map = dbDao.get("select * from sync_data_set limit 1");
if(isUpload) {
if (!(map.get("syncIp") != null && !StringUtils.isEmpty(map.get("syncIp").toString()))) {
public BaseResponse onceSync(String tableName, boolean isUpload) {
String tnames = tableName.contains("/") ? tableName : "//" + tableName + "///////";
String[] ts = tnames.split("/");
String ip = "";
Map<String, Object> map = dbDao.get("select * from sync_data_set limit 1");
if (isUpload) {
if (!(map.get("syncIp") != null && !StringUtils.isEmpty(map.get("syncIp").toString()))) {
logger.error("中继服务地址未配置");
return ResultVOUtils.error(9999, "中继服务地址未配置");
}
ip = map.get("syncIp").toString();
}
if(!StringUtils.isEmpty(ts[0])) {
if(!(map!=null&&map.get(ts[0])!=null&&map.get(ts[0]).equals("1")))
return ResultVOUtils.error(9999, "当前不允许生成");
}
if(syncData(tnames,isUpload,ip))
return ResultVOUtils.success();
return ResultVOUtils.error(9999, "系统错误");
ip = map.get("syncIp").toString();
}
if (!StringUtils.isEmpty(ts[0])) {
if (!(map != null && map.get(ts[0]) != null && map.get(ts[0]).equals("1")))
return ResultVOUtils.error(9999, "当前不允许生成");
}
if (syncData(tnames, isUpload, ip))
return ResultVOUtils.success();
return ResultVOUtils.error(9999, "系统错误");
}
private boolean syncData(String t, boolean isUpload, String syncIp) {
boolean sync = true;
boolean result = false;
try {
String[] tnames = t.split("/");
String[] tnames = t.split("/");
String lastUpdateTime = getUpdateTime(tnames[2] + "." + tnames[0]);
Date nowUpdateTime = new Date();
//if (!StringUtils.isEmpty(tnames[0])) {
String lastUpdateTime = getUpdateTime(tnames[2] + "." + tnames[0]);
Date nowUpdateTime = new Date();
// if (!StringUtils.isEmpty(tnames[0])) {
List<Map<String, String>> keyList = dbDao.listKeyMysql(tnames[2]);
String keyColumn = keyList != null && keyList.size() > 0 ? keyList.get(0).get("columnName").toString() : "id";
Map<String, Object> map = new HashMap<String, Object>();
String sqlWhere = "";
String updateTimeColumn = tnames[6];
if(StringUtils.isEmpty(updateTimeColumn)) {
Map<String,Object> tMap = dbDao.get("select column_name columnName from information_schema.columns where column_name='updateTime' and lower(table_name) = lower('"+tnames[0]+"') and table_schema = (select database()) limit 1");
updateTimeColumn = tMap !=null ? "updateTime" : "";
if (StringUtils.isEmpty(updateTimeColumn)) {
Map<String, Object> tMap = dbDao.get("select column_name columnName from information_schema.columns where column_name='updateTime' and lower(table_name) = lower('" + tnames[0] + "') and table_schema = (select database()) limit 1");
updateTimeColumn = tMap != null ? "updateTime" : "";
}
if (!StringUtils.isEmpty(updateTimeColumn)) {
sqlWhere += " " + updateTimeColumn + ">= cast('" + lastUpdateTime + "' as datetime)";// and date_add(cast('"+DateUtil.formatDate(nowUpdateTime, "yyyy-MM-dd HH:mm:ss")+"' as datetime),INTERVAL 1 day)";
sqlWhere += " and not exists (select fkId from idc_record where type='" + tnames[2] + "' and fkId=" + tnames[2] + "." + keyColumn + " and createTime>date_sub(now(),interval 15 MINUTE))";
@ -297,18 +299,19 @@ public class IdcServiceImpl implements IdcService {
sync = nextTimePoint.before(nowUpdateTime);
}
if (sync) {
result = syncMasterData(map, isUpload, syncIp);
result = syncMasterData(map, isUpload, syncIp);
if (result) {
setUpdateTime(tnames[2] + "." + tnames[0], DateUtil.formatDate(nowUpdateTime, "yyyy-MM-dd HH:mm:ss"));
}
}
//}
//}
} catch (Exception ex) {
}
return result;
}
private String fetchData(String host, Map<String, Object> params) {
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
@ -358,7 +361,6 @@ public class IdcServiceImpl implements IdcService {
return result;
}
public BaseResponse downlaodSuccess(HttpServletRequest request, Map<String, Object> params) {
String sql = "update basic_export_status set receiveStatus='1',endTime=now() where id='" + params.get("taskId") + "'";
@ -366,17 +368,19 @@ public class IdcServiceImpl implements IdcService {
return ResultVOUtils.success();
}
@Override
public BaseResponse receiveJson(HttpServletRequest request,Map<String, Object> params) {
return ResultVOUtils.success();
public BaseResponse receiveJson(HttpServletRequest request, Map<String, Object> params) {
return ResultVOUtils.success();
}
@Override
public BaseResponse uploadFile(HttpServletRequest request,
String content,MultipartFile[] files) {
return ResultVOUtils.success();
String content, MultipartFile[] files) {
return ResultVOUtils.success();
}
/****/
@Override
public BaseResponse receive(HttpServletRequest request,
@ -544,13 +548,13 @@ public class IdcServiceImpl implements IdcService {
int childNum = -1;
/*子表*/
String[] syncTables = TableUtils.syncTables();
if(!StringUtils.isEmpty(tableKey)) {
for (String str : syncTables) {
if (str.contains("/" + tableKey + "/")) {
childNum++;
childs[childNum] = str;
}
}
if (!StringUtils.isEmpty(tableKey)) {
for (String str : syncTables) {
if (str.contains("/" + tableKey + "/")) {
childNum++;
childs[childNum] = str;
}
}
}
Map<String, String> table = dbDao.getMysql(tableName);
if (!(table != null && table.get("tableName") != null))
@ -604,7 +608,7 @@ public class IdcServiceImpl implements IdcService {
String fileNames = list.get(m).get(filePathColumn).toString();
String[] str = fileNames.split(",");
for (int r = 0; r < str.length; r++) {
if (!StringUtils.isEmpty(str[r])&&FileUtils.isFileExist(filePath + filePathSlash + "register/file/image2/" + str[r]))
if (!StringUtils.isEmpty(str[r]) && FileUtils.isFileExist(filePath + filePathSlash + "register/file/image2/" + str[r]))
files.add(filePath + filePathSlash + "register/file/image2/" + str[r]);
}
}
@ -627,8 +631,8 @@ public class IdcServiceImpl implements IdcService {
if (childList.get(i).get(chidTnames[7]) != null) {
String[] str = childList.get(i).get(chidTnames[7]).toString().split(",");
for (int s = 0; s < str.length; s++) {
if (!StringUtils.isEmpty(str[s])&&FileUtils.isFileExist(filePath + filePathSlash + "register/file/image2/" + str[s]))
files.add(filePath + filePathSlash + "register/file/image2/" + str[s]);
if (!StringUtils.isEmpty(str[s]) && FileUtils.isFileExist(filePath + filePathSlash + "register/file/image2/" + str[s]))
files.add(filePath + filePathSlash + "register/file/image2/" + str[s]);
}
}
}
@ -681,7 +685,8 @@ public class IdcServiceImpl implements IdcService {
}
/*增加同步任务状态*/
private void syncAddTaskStatus(Map<String, Object> json, int scheduleType, boolean success, Date startTime, boolean isEnd) {
private void syncAddTaskStatus(Map<String, Object> json, int scheduleType, boolean success, Date startTime,
boolean isEnd) {
try {
String content = JSON.toJSONString(json);
String datePath = DateUtil.formatDate(new Date(), "yyyy-MM-dd");
@ -724,7 +729,8 @@ public class IdcServiceImpl implements IdcService {
}
private boolean analyMiddle(String host, JSONObject jsonObject, MultipartFile[] files, boolean isUpload, boolean isToDB) {
private boolean analyMiddle(String host, JSONObject jsonObject, MultipartFile[] files, boolean isUpload,
boolean isToDB) {
if (jsonObject.get("data") != null) {
String tableName = "";
String uniqueColumn = "";
@ -787,7 +793,8 @@ public class IdcServiceImpl implements IdcService {
/*解析到数据库*/
/*按表名解析数据到数据库,子表暂未处理*/
private boolean analyToDB(String host, String tableName, String uniqueColumn, String filePathColumn, List<Map<String, Object>> list, boolean isUpload) {
private boolean analyToDB(String host, String tableName, String uniqueColumn, String
filePathColumn, List<Map<String, Object>> list, boolean isUpload) {
String tName = DBAUtils.tableRealName(tableName);
String sql = "replace " + tName + "(";
@ -1074,7 +1081,8 @@ public class IdcServiceImpl implements IdcService {
}
/*由表名获取数据*/
private Map<String, Object> getData(String messageType, String tableName, Map<String, Object> params, Map<String, Object> whereParams) {
private Map<String, Object> getData(String messageType, String
tableName, Map<String, Object> params, Map<String, Object> whereParams) {
List<Map<String, Object>> list = getList(tableName, whereParams);
Map<String, Object> map = new HashMap<String, Object>();
map.put("messageId", CustomUtil.getId());
@ -1091,7 +1099,8 @@ public class IdcServiceImpl implements IdcService {
}
private SystemParamConfigEntity getSystemParamConfig(String paramKey, String paramName, String defaultValue, String paramExplain) {
private SystemParamConfigEntity getSystemParamConfig(String paramKey, String paramName, String
defaultValue, String paramExplain) {
SystemParamConfigEntity systemParamConfigEntity = systemParamConfigService.selectByParamKey(paramKey);
if (systemParamConfigEntity == null || (systemParamConfigEntity != null && StringUtils.isEmpty(systemParamConfigEntity.getParamKey()))) {
systemParamConfigEntity = new SystemParamConfigEntity();
@ -1193,13 +1202,13 @@ public class IdcServiceImpl implements IdcService {
alterTable("idc_log", "create table idc_log (id varchar(36),orderNum int,taskId varchar(60),type varchar(60),content varchar(2000),offset int,total int,createTime datetime,PRIMARY KEY (id))");
dbDao.delete("delete from idc_record where createTime<date_sub(now(),interval 2 day) and isEnd='0'");
try {
executeSql("alter table basic_export_status add column cacheFilePath varchar(255)");
executeSql("alter table basic_upload_status add column cacheFilePath varchar(255)");
executeSql("alter table idc_status modify column id varchar(100)");
executeSql("delete from idc_log where createTime<date_sub(now(),interval 3 day)");
executeSql("alter table basic_export_status add column msg varchar(255)");
executeSql("alter table basic_upload_status add column msg varchar(255)");
executeSql("alter table basic_download_status add column msg varchar(255)");
executeSql("alter table basic_export_status add column cacheFilePath varchar(255)");
executeSql("alter table basic_upload_status add column cacheFilePath varchar(255)");
executeSql("alter table idc_status modify column id varchar(100)");
executeSql("delete from idc_log where createTime<date_sub(now(),interval 3 day)");
executeSql("alter table basic_export_status add column msg varchar(255)");
executeSql("alter table basic_upload_status add column msg varchar(255)");
executeSql("alter table basic_download_status add column msg varchar(255)");
} catch (Exception e) {
}
@ -1208,15 +1217,15 @@ public class IdcServiceImpl implements IdcService {
private void alterTable(String tableName, String sql) {
Map<String, String> map = dbDao.getMysql(tableName);
if (!(map != null && map.get("tableName") != null)) {
executeSql(sql);
executeSql(sql);
}
}
private void executeSql(String sql) {
try {
try {
jdbcTemplate.execute(sql);
} catch (Exception e) {
}

@ -5,6 +5,8 @@ package com.glxp.api.idc.utils;
*/
public class TableUtils {
/*同步表,格式:同步设置表列名/同步设置表列名(子表时设置,主表不设置)/主表唯一列(多列逗号分隔)/主表关联列/子表关联列/数据库实际表/时间列/图片或文件列/数据条件/说明*/
//同步设置表字段(主表设置)/同步设置表字段(字表设置)/表名/主表唯一键/
private static final String[] SYNC_TABLES = {
"basicProducts//basic_udirel/id///updateTime///耗材字典",
"/basicProducts/basic_products/id/uuid/uuid////耗材字典信息详情",
@ -19,9 +21,12 @@ public class TableUtils {
"/productCert/sup_cert/id/productId/productIdFk/updateTime/filePath/type=3/产品资质证书信息",
"//udicompany/id///updateTime///国际库医疗器械注册人信息",
"basicType//basic_hosp_type/id///updateTime///物资字典分类",
};
/**
* "//auth_dept/id///updateTime///部门信息",
* "//auth_warehouse/id///updateTime///仓库信息",
* "typeThird//thr_bustype_origin/id///updateTime///第三方单据类型",
* "basicThirdCorp//thr_corp/id///updateTime///第三方往来单位",
* "//thr_dept/id///updateTime///第三方部门",

@ -116,7 +116,7 @@ public class SpsSyncDownloadService {
}
}
}
syncOrderResponse.setCodeEntities(codeEntities);
syncOrderResponse.setOrderDetailBizEntities(orderDetailBizEntities);
syncOrderResponse.setOrderDetailCodeEntities(orderDetailCodeEntities);
syncOrderResponse.setOrderDetailResultEntities(orderDetailResultEntities);

@ -3,7 +3,7 @@ server:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://192.168.0.66:3364/udi_spms_wmd?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
jdbc-url: jdbc:mysql://192.168.0.66:3364/udi_spms_pt?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: Glxp@6066
hikari:
@ -13,7 +13,7 @@ spring:
redis:
database: 10
host: 127.0.0.1
port: 6379
port: 6404
# password: 123456
timeout: 300
jedis:
@ -43,8 +43,8 @@ logging:
level:
com.glxp.api.dao: debug
file_path: D:/udi/udiwms/udiwmsfile/
back_file_path: D:/share/udisps/back/
file_path: /udi/udiwms/udiwmsfile/
back_file_path: /share/udisps/back/
UDI_KEY: 6b137c66-6286-46c6-8efa-c2f5dd9237df
UDI_SERVER_URL: https://www.udims.com/UDI_DL_Server_test
SPMS_KEY: lCOdWCBKS6Kw45wdnnqUTELXyuSKnXEs

@ -1,6 +1,6 @@
spring:
profiles:
active: dev
active: pro
jmx:
enabled: false
servlet:
@ -26,7 +26,7 @@ pagehelper:
returnPageInfo: none
auto-dialect: true
auto-runtime-dialect: true
server:
tomcat:
max-http-form-post-size: 100MB

@ -5,7 +5,7 @@
<select id="get" resultType="com.glxp.api.entity.auth.AuthLicense">
SELECT *
FROM auth_license
where id = #{id}
where apiKey = #{id}
</select>
<insert id="save" keyProperty="id" parameterType="com.glxp.api.entity.auth.AuthLicense">
INSERT INTO auth_license(id, appid, name, apiKey, secretKey, createDate, customerId, companyName)
@ -51,4 +51,4 @@
</set>
where name = #{name}
</update>
</mapper>
</mapper>

@ -140,8 +140,6 @@ CALL Pro_Temp_ColumnWork('inv_product', 'availableStock', 'int ', 1);
CALL Pro_Temp_ColumnWork('auth_warehouse', 'updateTime', 'datetime ', 1);
CALL Pro_Temp_ColumnWork('sync_data_set', 'basicType', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('sync_data_set', 'basicDept', 'tinyint', 1);

Loading…
Cancel
Save