Compare commits

..

No commits in common. 'a05d4a11c9919763041fd0f2e73f1e9706cf0259' and '32e7943e2d54172a207cae264b30c49dbe97c60f' have entirely different histories.

@ -227,7 +227,7 @@
factory_name AS factoryName, factory_name AS factoryName,
factory_code AS factoryCode factory_code AS factoryCode
from sys_factory from sys_factory
where f_type = 'c' and del_flag = '0' where f_type = 'c'
</select> </select>
<select id="selectMatchListByEquipmentCode" resultType="com.op.device.domain.dto.SummaryReportDTO"> <select id="selectMatchListByEquipmentCode" resultType="com.op.device.domain.dto.SummaryReportDTO">

@ -115,7 +115,7 @@
<select id="selectWorkCenter" resultType="com.op.device.domain.WorkCenter"> <select id="selectWorkCenter" resultType="com.op.device.domain.WorkCenter">
select factory_id AS 'factoryId', factory_name AS 'factoryName', factory_code AS 'factoryCode', f_type AS 'fType' select factory_id AS 'factoryId', factory_name AS 'factoryName', factory_code AS 'factoryCode', f_type AS 'fType'
from sys_factory from sys_factory
where parent_id = (select factory_id from sys_factory where factory_code = #{factory} and del_flag = '0') and f_type = 'c' where parent_id = (select factory_id from sys_factory where factory_code = #{factory}) and f_type = 'c'
</select> </select>
<select id="selectEquPlanByPlanCode" parameterType="String" resultMap="EquPlanResult"> <select id="selectEquPlanByPlanCode" parameterType="String" resultMap="EquPlanResult">

@ -35,8 +35,6 @@ import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import static org.reflections.Reflections.log;
@RestController @RestController
@RequestMapping("/sap") @RequestMapping("/sap")
public class SapController extends BaseController { public class SapController extends BaseController {
@ -187,64 +185,34 @@ public class SapController extends BaseController {
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_YEAR, -1); calendar.add(Calendar.DAY_OF_YEAR, -1);
Date maxTime = calendar.getTime(); Date maxTime = calendar.getTime();
if (qo.getWerks()==null){
if (qo.getWerks() == null) {
SysUser sysUser = new SysUser(); SysUser sysUser = new SysUser();
sysUser.setUserId(1L); sysUser.setUserId(1L);
// 1. 获取主数据源下的工厂列表
DynamicDataSourceContextHolder.push("master"); DynamicDataSourceContextHolder.push("master");
R<List<Map<String, String>>> dataSourceResult; R<List<Map<String, String>>> dateSources0 = new R<>();
try { try {
dataSourceResult = remoteUserService.getPoolNameList(sysUser); dateSources0 = remoteUserService.getPoolNameList(sysUser);
} catch (Exception e) { }finally {
log.error("获取数据源列表失败", e); DynamicDataSourceContextHolder.poll();
return R.fail("获取工厂列表异常");
} finally {
DynamicDataSourceContextHolder.poll(); // 释放主数据源
} }
List<Map<String, String>> dateSources = dateSources0.getData();
List<Map<String, String>> dataSources = dataSourceResult.getData(); try {
if (dataSources == null || dataSources.isEmpty()) { dateSources.forEach(dateSource -> {
return R.ok("未找到可同步的工厂"); logger.info("++++++++++++" + dateSource.get("poolName") + "++++工艺路线开始++++++++++");
DynamicDataSourceContextHolder.push(dateSource.get("poolName"));// 这是数据源的key
qo.setWerks(dateSource.get("poolName").replace("ds_", ""));//工厂
qo.setAedat(DateFormatUtils.format(maxTime, "yyyyMMdd"));
R r = sapRouterService.sapRouterSync(qo);
});
}finally {
DynamicDataSourceContextHolder.poll();
} }
}else {
// 2. 遍历工厂进行同步 qo.setAedat(DateFormatUtils.format(maxTime, "yyyyMMdd"));
StringBuilder resultMsg = new StringBuilder(); R r = sapRouterService.sapRouterSync(qo);
for (Map<String, String> dataSource : dataSources) {
String poolName = dataSource.get("poolName");
if (poolName == null) continue;
// 使用 try-finally 确保每个数据源都能正确释放(防止 ThreadLocal 泄漏)
try {
DynamicDataSourceContextHolder.push(poolName);
logger.info("++++++++++++ {} ++++工艺路线开始++++++++++", poolName);
// 构造本次同步的参数
SapRouterQuery subQuery = new SapRouterQuery();
// 复制通用参数...
subQuery.setWerks(poolName.replace("ds_", ""));
subQuery.setAedat(DateFormatUtils.format(maxTime, "yyyyMMdd"));
// 执行同步
R r = sapRouterService.sapRouterSync(subQuery);
resultMsg.append(poolName).append(":").append(r.getMsg()).append("; ");
} catch (Exception e) {
log.error("工厂 {} 同步失败", poolName, e);
resultMsg.append(poolName).append(":失败-").append(e.getMessage()).append("; ");
} finally {
DynamicDataSourceContextHolder.poll(); // 核心:确保释放
}
}
return R.ok(resultMsg.toString());
} else {
// 单工厂同步逻辑
// qo.setAedat(DateFormatUtils.format(maxTime, "yyyyMMdd"));
return sapRouterService.sapRouterSync(qo);
} }
return R.ok();
// return sapRouterService.sapRouterSync(qo);
} }
/** /**

Loading…
Cancel
Save