单据复制功能,中继服务相关修改

master
anthonywj 2 years ago
parent 5a48483845
commit fe27449cb7

@ -12,6 +12,7 @@ import com.glxp.api.constant.Constant;
import com.glxp.api.constant.ConstantStatus;
import com.glxp.api.controller.BaseController;
import com.glxp.api.entity.auth.InvBusUserEntity;
import com.glxp.api.entity.auth.InvWarehouseEntity;
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.basic.EntrustReceEntity;
import com.glxp.api.entity.inout.*;
@ -24,6 +25,7 @@ import com.glxp.api.res.inout.IoOrderDetailBizResponse;
import com.glxp.api.res.inout.IoOrderResponse;
import com.glxp.api.res.inout.PdaBusOrderResponse;
import com.glxp.api.service.auth.InvBusUserService;
import com.glxp.api.service.auth.InvWarehouseService;
import com.glxp.api.service.basic.EntrustReceService;
import com.glxp.api.service.basic.IBasicBussinessTypeService;
import com.glxp.api.service.inout.*;
@ -472,23 +474,36 @@ public class IoOrderController extends BaseController {
@Resource
GennerOrderUtils gennerOrderUtils;
@Resource
InvWarehouseService invWarehouseService;
@AuthRuleAnnotation("")
@PostMapping("/udiwms/stock/order/change")
public BaseResponse stockOrderChange(@RequestBody AddOrderChangeRequest addOrderChangeRequest) {
IoOrderEntity originOrder = orderService.findByBillNo(addOrderChangeRequest.getOrderId());
IoOrderEntity newOrder = new IoOrderEntity();
List<IoCodeEntity> originCodes = codeService.findByOrderId(originOrder.getBillNo());
newOrder.setCreateTime(new Date());
newOrder.setFromCorp(addOrderChangeRequest.getFromCorp());
newOrder.setFromInvCode(addOrderChangeRequest.getFromInvCode());
newOrder.setFromDeptCode(addOrderChangeRequest.getFromDeptCode());
if (addOrderChangeRequest.getFromInvCode() != null) {
InvWarehouseEntity fromInv = invWarehouseService.findByInvSubByCode(addOrderChangeRequest.getFromInvCode());
newOrder.setFromDeptCode(fromInv.getParentId());
}
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByInvSubByCode(addOrderChangeRequest.getInvCode());
newOrder.setInvCode(addOrderChangeRequest.getInvCode());
newOrder.setDeptCode(addOrderChangeRequest.getDeptCode());
newOrder.setDeptCode(invWarehouseEntity.getParentId());
newOrder.setCorpOrderId(CustomUtil.getId() + "x");
newOrder.setMainAction(addOrderChangeRequest.getMainAction());
BasicBussinessTypeEntity basicBussinessTypeEntity = basicBussinessTypeService.findByAction(addOrderChangeRequest.getAction());
newOrder.setAction(addOrderChangeRequest.getAction());
newOrder.setMainAction(basicBussinessTypeEntity.getMainAction());
newOrder.setExportStatus(0); //设置导出状态为未导出
newOrder.setDealStatus(ConstantStatus.ORDER_DEAL_DRAFT);//设置单据未草稿状态
newOrder.setStatus(ConstantStatus.ORDER_STATUS_TEMP_SAVE); //设置验收状态为未验收

@ -9,19 +9,17 @@ import java.util.Map;
@Mapper
public interface DbDao {
@Insert("${sql}")
int save(@Param("sql") String sql);
int save(@Param("sql")String sql);
@Update("${sql}")
int update(@Param("sql") String sql);
int update(@Param("sql")String sql);
@Delete("${sql}")
int delete(@Param("sql") String sql);
int delete(@Param("sql")String sql);
Map<String, Object> get(@Param("sql") String sql);
List<Map<String, Object>> list(Map<String, Object> map);
int count(Map<String, Object> map);
Map<String,Object> get(@Param("sql")String sql);
List<Map<String,Object>> list(Map<String,Object> map);
int count(Map<String,Object> map);
@Select("select table_name tableName, engine, table_comment tableComment, create_time createTime from information_schema.tables"
+ " where table_schema = (select database())")
@ -36,48 +34,40 @@ public interface DbDao {
@Select("select count(*) from information_schema.tables where table_schema = (select database())")
int countMysql(Map<String, Object> map);
@Select("select count(*) from tab where tabtype='TABLE' and instr('BIN,ACT',substr(tname,1,3))<1")
int countOracle(Map<String, Object> map);
@Select("select count(*) from SYSOBJECTS where XTYPE='U'")
int countSqlserver(Map<String, Object> map);
@Select("select table_name tableName, engine, table_comment tableComment, create_time createTime from information_schema.tables \r\n"
+ " where table_schema = (select database()) and lower(table_name) = lower(#{tableName})")
Map<String, String> getMysql(String tableName);
@Select("select tname as \"tableName\",'oracle' \"engine\",tname \"tableComment\",sysdate \"createTime\" from tab \r\n"
+ " where tname= upper(#{tableName})")
Map<String, String> getOracle(String tableName);
@Select("select name tableName, 'sqlserver' engine, name tableComment, crdate createTime from SYSOBJECTS"
+ " WHERE lower(name)=lower(#{tableName})")
Map<String, String> getSqlserver(String tableName);
@Select("select column_name columnName, data_type dataType, column_comment columnComment, column_key columnKey, extra as extra,table_name tableName, "
+ "concat('(',if(NUMERIC_PRECISION>0,CONVERT(NUMERIC_PRECISION,CHAR),''),if(NUMERIC_SCALE>0,concat(',',CONVERT(NUMERIC_SCALE,CHAR)),''),if(CHARACTER_MAXIMUM_LENGTH>0,CONVERT(CHARACTER_MAXIMUM_LENGTH,CHAR),''),')') as width "
+ " from information_schema.columns\r\n"
+ " where lower(table_name) = lower(#{tableName}) and table_schema = (select database()) order by ordinal_position")
List<Map<String, String>> listColumnsMysql(String tableName);
@Select("select column_name columnName, data_type dataType, column_comment columnComment, column_key columnKey, extra as extra,table_name tableName, "
+ "concat('(',if(NUMERIC_PRECISION>0,CONVERT(NUMERIC_PRECISION,CHAR),''),if(NUMERIC_SCALE>0,concat(',',CONVERT(NUMERIC_SCALE,CHAR)),''),if(CHARACTER_MAXIMUM_LENGTH>0,CONVERT(CHARACTER_MAXIMUM_LENGTH,CHAR),''),')') as width "
+ " from information_schema.columns\r\n"
+ " where lower(table_name) = lower(#{tableName}) column_key='PRI' and table_schema = (select database()) order by ordinal_position")
+ " where lower(table_name) = lower(#{tableName}) and column_key='PRI' and table_schema = (select database()) order by ordinal_position")
List<Map<String, String>> listKeyMysql(String tableName);
@Select("select cname as \"columnName\",coltype as \"dataType\",cname \"columnComment\",'' as \"columnKey\",'' as \"extra\",tname \"tableName\", "
+ " '('||decode(sign(PRECISION),1,to_char(PRECISION),'')||decode(sign(SCALE),1,','||to_char(SCALE),'')||decode(sign(PRECISION),1,'',decode(sign(SCALE),1,'',to_char(width)))||')' as width "
+" '('||decode(sign(PRECISION),1,to_char(PRECISION),'')||decode(sign(SCALE),1,','||to_char(SCALE),'')||decode(sign(PRECISION),1,'',decode(sign(SCALE),1,'',to_char(width)))||')' as width "
+ "from col \r\n"
+ " where tname = upper(#{tableName}) order by colno")
+" where tname = upper(#{tableName}) order by colno")
List<Map<String, String>> listColumnsOracle(String tableName);
@Select("select syscolumns.name columnName, systypes.name as dataType, syscolumns.name columnComment, \r\n"
+ "(select 'PRI' from sysindexkeys,sysobjects,sysindexes where sysindexkeys.id=syscolumns.id and sysindexkeys.colid=syscolumns.colid \r\n"
+ " and sysindexkeys.id=syscolumns.id and sysindexes.id=syscolumns.id and sysindexkeys.indid=sysindexes.indid and sysobjects.name=sysindexes.name and sysobjects.xtype='PK'"
+ ") columnKey,'' extra,#{tableName} tableName, "
+ "'('+case when syscolumns.xprec>0 then cast(syscolumns.xprec as varchar) else '' end + case when syscolumns.xscale>0 then ','+cast(syscolumns.xscale as varchar) else '' end +case when syscolumns.xscale>0 or syscolumns.xprec>0 then '' else cast(syscolumns.length as varchar) end +')' as width "
+"(select 'PRI' from sysindexkeys,sysobjects,sysindexes where sysindexkeys.id=syscolumns.id and sysindexkeys.colid=syscolumns.colid \r\n"
+" and sysindexkeys.id=syscolumns.id and sysindexes.id=syscolumns.id and sysindexkeys.indid=sysindexes.indid and sysobjects.name=sysindexes.name and sysobjects.xtype='PK'"
+") columnKey,'' extra,#{tableName} tableName, "
+"'('+case when syscolumns.xprec>0 then cast(syscolumns.xprec as varchar) else '' end + case when syscolumns.xscale>0 then ','+cast(syscolumns.xscale as varchar) else '' end +case when syscolumns.xscale>0 or syscolumns.xprec>0 then '' else cast(syscolumns.length as varchar) end +')' as width "
+ " from syscolumns,\r\n"
+ " systypes"
+ " where syscolumns.xtype=systypes.xtype and syscolumns.id = OBJECT_ID(#{tableName}) order by syscolumns.colid")

@ -20,51 +20,49 @@ public class IdcController {
IdcService idcService;
@Resource
DbDao dbDao;
/*通用上传接口*/
// @Log("中继服务数据接收,下级往上级上传")
//@Log("中继服务数据接收,下级往上级上传")
@RequestMapping(value = "/spssync/common/upload")
public BaseResponse upload(HttpServletRequest request,
@RequestParam("content") String content,
@RequestParam(value = "files", required = false) MultipartFile[] files) {
//
return idcService.receive("U", request, content, files);
return idcService.receive("U",request, content, files);
}
/*通用下发接口*/
// @Log("中继服务数据接收,上级往下级下发")
//@Log("中继服务数据接收,上级往下级下发")
@RequestMapping(value = "/spssync/common/issued")
public BaseResponse issued(HttpServletRequest request,
@RequestParam("content") String content,
@RequestParam(value = "files", required = false) MultipartFile[] files) {
//
return idcService.receive("I", request, content, files);
return idcService.receive("I",request, content, files);
}
// @Log("数据同步测试")
//@Log("数据同步测试")
@RequestMapping(value = "/spssync/common/test")
public BaseResponse test(HttpServletRequest request, @RequestBody Map<String, Object> params) {
public BaseResponse test(HttpServletRequest request,@RequestBody Map<String, Object> params) {
//
return idcService.send(params);
}
// @Log("数据同步任务列表拉取")
//@Log("数据同步任务列表拉取")
@RequestMapping(value = "/spssync/common/list")
public BaseResponse list(HttpServletRequest request, @RequestBody(required = false) Map<String, Object> params) {
return idcService.taskList(request, params);
public BaseResponse list(HttpServletRequest request,@RequestBody(required = false) Map<String, Object> params) {
return idcService.taskList(request,params);
}
// @Log("数据同步任务根据任务ID下载数据")
//@Log("数据同步任务根据任务ID下载数据")
@RequestMapping(value = "/spssync/common/download")
@ResponseBody
public BaseResponse download(HttpServletRequest request, @RequestBody Map<String, Object> params) {
return idcService.download(request, params);
public BaseResponse download(HttpServletRequest request,@RequestBody Map<String, Object> params) {
return idcService.download(request,params);
}
// @Log("数据同步任务根据任务ID,返回下载成功标记")
//@Log("数据同步任务根据任务ID,返回下载成功标记")
@RequestMapping(value = "/spssync/common/success")
@ResponseBody
public BaseResponse success(HttpServletRequest request, @RequestBody Map<String, Object> params) {
return idcService.downlaodSuccess(request, params);
public BaseResponse success(HttpServletRequest request,@RequestBody Map<String, Object> params) {
return idcService.downlaodSuccess(request,params);
}
}

@ -22,9 +22,10 @@ public interface IdcService {
BaseResponse download(HttpServletRequest request, Map<String, Object> params);
void pull();
public void asyncFetchTask();
BaseResponse downlaodSuccess(HttpServletRequest request, Map<String, Object> params);
public void asyncIdcTask();
}

@ -53,8 +53,7 @@ public class IdcServiceImpl implements IdcService {
private String apiKey;
@Value("${API_SECRET}")
private String apiSecret;
// "sup_company/updateTime//配送供应商资质信息",
// "sup_company/updateTime//配送供应商资质信息",
/*自助平台->UDI*/
private final String[] SPMS_TO_UDI_TABLES = {
"basic_udirel/updateTime//耗材字典", "basic_products///耗材字典信息详情", "company_product_relevance/updateTime//供应商关联信息",
@ -63,25 +62,19 @@ public class IdcServiceImpl implements IdcService {
"thr_inv_products/updateTime//第三方库存", "thr_inv_warehouse///第三方仓库",
"thr_order/updateTime//第三方单据", "thr_order_detail/updateTime//第三方单据详情",
"thr_products/updateTime//第三方产品信息", "sup_cert/updateTime/filePath/资质证书信息",
"sup_cert_set/updateTime//供应商资质证书设置",
"sup_cert_set/updateTime//供应商资质证书设置", "sup_company/updateTime//配送供应商资质信息",
"sup_manufacturer/updateTime//生产企业资质信息", "sup_product/updateTime//产品资质信息"};
/*UDI->自助平台*/
private final String[] UDI_TO_SPMS_TABLES = {
"basic_udirel/updateTime//耗材字典", "basic_products///耗材字典信息详情", "company_product_relevance/updateTime//供应商关联信息",
};
/**
* "basic_udirel/updateTime//耗材字典", "basic_products///耗材字典信息详情", "company_product_relevance/updateTime//供应商关联信息",
* "basic_corp/updateTime//往来单位", "thr_bustype_origin/updateTime//第三方单据类型",
* "thr_corp/updateTime//第三方往来单位", "thr_dept/updateTime//第三方部门",
* "thr_inv_products/updateTime//第三方库存", "thr_inv_warehouse///第三方仓库",
* "thr_order/updateTime//第三方单据", "thr_order_detail/updateTime//第三方单据详情",
* "thr_products/updateTime//第三方产品信息", "sup_cert/updateTime/filePath/资质证书信息",
* "sup_cert_set/updateTime//供应商资质证书设置",
* "sup_manufacturer/updateTime//生产企业资质信息", "sup_product/updateTime//产品资质信息",
* "productinfo/updateTime//国家库UDI数据,udicompany/updateTime//国际库医疗器械注册人信息"};
*/
"basic_corp/updateTime//往来单位", "thr_bustype_origin/updateTime//第三方单据类型",
"thr_corp/updateTime//第三方往来单位", "thr_dept/updateTime//第三方部门",
"thr_inv_products/updateTime//第三方库存", "thr_inv_warehouse///第三方仓库",
"thr_order/updateTime//第三方单据", "thr_order_detail/updateTime//第三方单据详情",
"thr_products/updateTime//第三方产品信息", "sup_cert/updateTime/filePath/资质证书信息",
"sup_cert_set/updateTime//供应商资质证书设置", "sup_company/updateTime//配送供应商资质信息",
"sup_manufacturer/updateTime//生产企业资质信息", "sup_product/updateTime//产品资质信息",
"productinfo/updateTime//国家库UDI数据,udicompany/updateTime//国际库医疗器械注册人信息"};
private int orderNum = 0;
@ -116,18 +109,27 @@ public class IdcServiceImpl implements IdcService {
}
/*拉取前一级中继服务数据*/
@Async
@Override
public void pull() {
public void asyncFetchTask() {
String[] directions = {"I", "U"};
for (String dir : directions) {
Map<String, Object> query = new HashMap<String, Object>();
String result = post(getNextHost("U") + "/spssync/common/list", query);
String host = getNextHost(dir);
if (!StringUtils.isEmpty(host)) {
String result = post(host + "/spssync/common/list", query);
if (IDCUtils.isJson(result)) {
JSONObject json = JSON.parseObject(result);
if (json.getInteger("code") == 20000 && json.getString("data") != null) {
if (json != null && json.getInteger("code") == 20000 && json.getString("data") != null) {
List<Map> list = JSON.parseArray(json.getString("data"), Map.class);
if (list != null) {
for (Map map : list) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("taskId", map.get("taskId"));
pullData(getNextHost("U") + "/spssync/common/list", params);
fetchData(host + "/spssync/common/list", params);
}
}
}
}
}
}
@ -142,14 +144,14 @@ public class IdcServiceImpl implements IdcService {
if (direction.equals("I")) {
tNames = SPMS_TO_UDI_TABLES;
} else {
} else if (direction.equals("U")) {
tNames = UDI_TO_SPMS_TABLES;
}
/*为顶级或末级,以及下游或上游连通,可执行*/
Boolean isLastLevel = isLastLevel(direction);
Boolean isRelay = isRelay(direction);
logger.info("-----数据传输任务开始----" + direction + "\n");
logger.info("-----是否顶级或末级服务:" + isLastLevel + ",是否转发数据:" + isRelay + "----\n");
logger.info("-----是否需要上传或下发数据:" + isLastLevel + ",是否已配置接收地址:" + isRelay + "----\n");
if (isLastLevel && isRelay) {
for (String t : tNames) {
uploadData(t);
@ -158,18 +160,22 @@ public class IdcServiceImpl implements IdcService {
}
private void uploadData(String t) {
String[] tn = t.split("/");
String lastUpdateTime = getUpdateTime(tn[0]);
Date nowUpdateTime = new Date();
List<Map<String, String>> keyList = dbDao.listKeyMysql(tn[0]);
String keyColumn = keyList != null && keyList.size() > 0 ? keyList.get(0).get("columnName").toString() : "id";
Map<String, Object> map = new HashMap<String, Object>();
String sqlWhere = "not exists (select fkId from idc_record where fkId=" + tn[0] + ".id)";
String sqlWhere = "not exists (select fkId from idc_record where type='" + tn[0] + "' and fkId=" + tn[0] + "." + keyColumn + ")";
if (!StringUtils.isEmpty(tn[1])) {
sqlWhere += " and " + tn[1] + ">=cast('" + lastUpdateTime + "' as datetime)";
// sqlWhere += " and ifnull(" + tn[1] + ",now())>=cast('" + lastUpdateTime + "' as datetime)";
} else {
map.put("isEnd", "1");
}
if (tn[0].equals("thr_order"))
logger.info("-------------------" + sqlWhere);
map.put("sqlWhere", sqlWhere);
map.put("tableName", tn[0]);
map.put("filePathColumn", tn[2]);
@ -185,15 +191,15 @@ public class IdcServiceImpl implements IdcService {
Date nextTimePoint = cronSequenceGenerator.next(DateUtil.parseDate(lastUpdateTime));
send = nextTimePoint.before(nowUpdateTime);
}
//if(send) {
if (send) {
BaseResponse result = send(map);
if (result.getCode() == 20000) {
setUpdateTime(tn[0], DateUtil.formatDate(nowUpdateTime));
setUpdateTime(tn[0], DateUtil.formatDate(nowUpdateTime, "yyyy-MM-dd HH:mm:ss"));
}
}
//}
}
private String pullData(String url, Map<String, Object> params) {
private String fetchData(String url, Map<String, Object> params) {
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
@ -300,13 +306,20 @@ public class IdcServiceImpl implements IdcService {
/*数据同步,从数据库获取数据下发或上传下级中继服务*/
@Override
public BaseResponse send(Map<String, Object> params) {
return send(params.get("messageType").toString(), params.get("tableName").toString(), params);
}
@Override
public BaseResponse send(String messageType, String tableName, Map<String, Object> params) {
try {
if (sendOnPage(messageType, tableName, params))
return ResultVOUtils.success();
} catch (Exception ex) {
logger.error(ex.getMessage());
}
return ResultVOUtils.error(9999, "");
}
@ -356,7 +369,7 @@ public class IdcServiceImpl implements IdcService {
}
private boolean sendOnPage(String messageType, String tableName, Map<String, Object> params) {
boolean success = true;
boolean success = false;
Map<String, String> table = dbDao.getMysql(tableName);
if (!(table != null && table.get("tableName") != null))
return false;
@ -376,9 +389,14 @@ public class IdcServiceImpl implements IdcService {
String filePathColumn = params.get("filePathColumn") != null ? params.get("filePathColumn").toString() : "";
orderNum++;
saveIdcLog(messageType, "", tableName + ">" + where, 0, total);
if (tableName.equals("thr_order"))
logger.info("tableName-->" + tableName + "-->row-->" + total + "-->sqlWhere-->" + where);
if (total > 0) {
success = true;
params.put("page", 0);
params.put("limit", limit);
List<Map<String, String>> keyList = dbDao.listKeyMysql(tableName);
String keyColumn = keyList != null && keyList.size() > 0 ? keyList.get(0).get("columnName").toString() : "id";
for (int i = 0; i < Math.ceil(total / limit) + 1; i++) {
params.replace("page", i * limit);
params.replace("limit", limit);
@ -395,7 +413,7 @@ public class IdcServiceImpl implements IdcService {
files[m] = list.get(m).get(filePathColumn).toString();
}
recordSql += !StringUtils.isEmpty(recordSql) ? "," : "";
recordSql += "('" + UUID.randomUUID().toString().replaceAll("-", "") + "','" + tableName + "','" + list.get(m).get("id") + "','" + isEnd + "',now())";
recordSql += "('" + UUID.randomUUID().toString().replaceAll("-", "") + "','" + tableName + "','" + list.get(m).get(keyColumn) + "','" + isEnd + "',now())";
}
orderNum++;
@ -417,6 +435,7 @@ public class IdcServiceImpl implements IdcService {
}
}
}
}
return success;
}
@ -485,6 +504,7 @@ public class IdcServiceImpl implements IdcService {
String extra = columnList.get(k).get("extra") != null && columnList.get(k).get("extra").toLowerCase().contains("auto") ? "A" : "N";
String attrName = columnList.get(k).get("attrName");
String value = list.get(i).get(attrName) != null ? list.get(i).get(attrName).toString() : "";
value = DBAUtils.escape(value);
String dataType = columnList.get(k).get("dataType").toLowerCase().contains("char") || columnList.get(k).get("dataType").toLowerCase().contains("text") ?
"C" : columnList.get(k).get("dataType").toLowerCase().contains("date") ? "D" : "N";
if (extra.equals("N")) {
@ -583,44 +603,30 @@ public class IdcServiceImpl implements IdcService {
/*获取转发服务地址当前值允许单向只使用参数upper_server_ip*/
private String getNextHost(String direction) {
SystemParamConfigEntity systemParamConfigEntity = getSystemParamConfig("upper_server_ip", "中继上传服务地址", "", "");
//direction.equals("U") ? getSystemParamConfig("upper_server_ip","中继上传服务地址" , "",""):
//getSystemParamConfig("sync_idc_lower_host","下级(下发)中继服务地址" , "","") ;
return systemParamConfigEntity.getParamValue();
SystemParamConfigEntity systemParamConfigEntity =
direction.equals("U") ? getSystemParamConfig("upper_server_host", "自助平台数据接收服务地址", "", "接收由UDI系统上传的数据") :
direction.equals("I") ? getSystemParamConfig("lower_server_host", "UDI系统数据接收服务地址", "", "接收由自助平台下发的数据") : null;
String host = systemParamConfigEntity != null ? systemParamConfigEntity.getParamValue() : "";
host = !StringUtils.isEmpty(host) && host.substring(host.length() - 1).equals("/") ? host.substring(0, host.length() - 1) : host;
return host;
}
/*判断是否最后一级*/
/*判断是否上传或下发数据*/
private boolean isLastLevel(String direction) {
SystemParamConfigEntity systemParamConfigEntity =
direction.equals("I") ? getSystemParamConfig("sync_idc_top", "是否顶级中继服务(连接自助平台)", "0", "01是(是,接收下级上传数据后解析入库)") :
getSystemParamConfig("sync_idc_final", "是否末级中继服务(连接UDI管理系统)", "0", "01是(是,接收上级下发数据后解析入库)");
return systemParamConfigEntity.getParamValue().equals("0") ? false : true;
return direction.equals("I") || direction.equals("U") ? true : false;
}
/*检查当前系统为自助平台下发还是UDI系统(上传),返回传输方向,如果都未设置,默认返回下发*/
private String getDirection() {
SystemParamConfigEntity systemParamConfigEntity = getSystemParamConfig("sync_idc_top", "是否顶级中继服务(连接自助平台)", "0", "01是(是,接收下级上传数据后解析入库)");
System.out.print(">>>>>>>>>>" + JSON.toJSONString(systemParamConfigEntity) + "\n");
if (systemParamConfigEntity.getParamValue().equals("0")) {
systemParamConfigEntity = getSystemParamConfig("sync_idc_final", "是否末级中继服务(连接UDI管理系统)", "0", "01是(是,接收上级下发数据后解析入库)");
if (systemParamConfigEntity.getParamValue().equals("1"))
return "U";
}
return "I";
SystemParamConfigEntity systemParamConfigEntity = getSystemParamConfig("sync_system_type", "系统类型", "IDC", "UDI(UDI管理系统由UDI系统往自助平台上传数据),SPS(自助平台由自助平台往UDI系统下发数据),IDC(中继服务,只接收,转发或暂存数据供下一级服务拉取数据)");
return systemParamConfigEntity.getParamValue().equals("UDI") ? "U" : systemParamConfigEntity.getParamValue().equals("SPS") ? "I" : "N";
}
/*是否需要转发*/
private boolean isRelay(String direction) {
String relayStr = direction.equals("U") ? "sync_upstream_enable" : "sync_downstream_enable";
String relayHost = getNextHost(direction);
SystemParamConfigEntity systemParamConfigEntity = systemParamConfigService.selectByParamKey(relayStr);
if (systemParamConfigEntity != null && systemParamConfigEntity.getParamValue() != null &&
systemParamConfigEntity.getParamValue().equals("0")) {
return false;
}
return true;
return !StringUtils.isEmpty(relayHost);
}
@ -715,7 +721,7 @@ public class IdcServiceImpl implements IdcService {
String updateTime = "";
Map<String, Object> map = dbDao.get("select * from idc_status where id='" + id + "'");
if (map != null && map.get("id") != null) {
updateTime = DateUtil.formatDate(IDCUtils.parseDate(map.get("statusTime").toString()));
updateTime = DateUtil.formatDate(IDCUtils.parseDate(map.get("statusTime").toString()), "yyyy-MM-dd HH:mm:ss");
} else {
updateTime = "2000-01-01 00:00:00";
String sql = "insert into idc_status (id,statusTime) values ('" + id + "',cast('" + updateTime + "' as datetime))";

@ -0,0 +1,53 @@
package com.glxp.api.idc.thread;
import com.glxp.api.dao.schedule.ScheduledDao;
import com.glxp.api.entity.system.ScheduledEntity;
import com.glxp.api.idc.service.IdcService;
import com.glxp.api.req.system.ScheduledRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@Component
@EnableScheduling
public class AsyncFetchTask implements SchedulingConfigurer {
final Logger logger = LoggerFactory.getLogger(AsyncIdcTask.class);
@Resource
private ScheduledDao scheduledDao;
@Resource
private IdcService idcService;
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
scheduledTaskRegistrar.addTriggerTask(() -> process(),
triggerContext -> {
ScheduledRequest scheduledRequest = new ScheduledRequest();
scheduledRequest.setCronName("syncFetch");
logger.info("syncFetch----------------");
ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest);
String cron = scheduledEntity != null ? scheduledEntity.getCron() : "15 * * * * ?";
if (cron.isEmpty()) {
logger.error("cron is null");
}
logger.info("syncFetch----------------");
return new CronTrigger(cron).nextExecutionTime(triggerContext);
});
}
private void process() {
logger.info("syncFetch----process------------");
idcService.asyncFetchTask();
}
}

@ -34,7 +34,7 @@ public class AsyncIdcTask implements SchedulingConfigurer {
scheduledRequest.setCronName("syncIdc");
logger.info("syncIdc----------------");
ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest);
String cron = scheduledEntity != null ? scheduledEntity.getCron() : "0 */5 * * * ?";
String cron = scheduledEntity != null ? scheduledEntity.getCron() : "0 */30 * * * ?";
if (cron.isEmpty()) {
logger.error("cron is null");

@ -390,8 +390,8 @@ public class DBAUtils {
public static String escape(String str) {
String value = str;
if (value != null && value.contains("'")) {
value = value.replaceAll("'", "AAA12345ZZZ");
value = value.replaceAll("AAA12345ZZZ", "''");
value = value.replaceAll("'", "CCCBBBAAA12345ZZZYYYXXX");
value = value.replaceAll("CCCBBBAAA12345ZZZYYYXXX", "''");
}
return value;
}

@ -4,9 +4,9 @@ server:
spring:
datasource:
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
jdbc-url: jdbc:p6spy:mysql://miradio.51vip.biz:3364/udi_wms_wmd?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
jdbc-url: jdbc:p6spy:mysql://127.0.0.1:3306/udi_wms?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: Glxp@6066
password: 123456
hikari:
connection-timeout: 60000
maximum-pool-size: 20

@ -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_wms_glxp?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_wms_wmd?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: Glxp@6066
hikari:

Loading…
Cancel
Save