feat(anneal): 添加退火计划钢卷查询功能并优化变更日志处理

- 在IWmsAnnealPerformanceService中添加queryPlanCoils方法用于查询退火计划中的加工前钢卷
- 在WmsAnnealPerformanceController中添加/rawCoils端点暴露钢卷查询功能
- 在WmsAnnealPerformanceServiceImpl中实现完整的钢卷查询逻辑,包括按计划条件筛选和关联查询
- 修改CoilChangeLogAspect切面,在旧卷ID提取和快照查询中添加异常处理,确保异常不影响主流程
- 将变更日志的确定新卷ID和写入日志整体包装在try-catch中,提升系统稳定性
This commit is contained in:
2026-07-11 16:50:44 +08:00
parent 2dbbb942ef
commit cd3afc634c
4 changed files with 89 additions and 12 deletions

View File

@@ -46,28 +46,37 @@ public class CoilChangeLogAspect {
public Object around(ProceedingJoinPoint joinPoint, CoilChangeLog coilChangeLog) throws Throwable {
CoilChangeType changeType = coilChangeLog.changeType();
// 1. 提取旧卷 ID 列表
List<Long> oldCoilIds = extractOldCoilIds(joinPoint, coilChangeLog);
// 1. 提取旧卷 ID 列表(异常不影响主流程)
List<Long> oldCoilIds;
try {
oldCoilIds = extractOldCoilIds(joinPoint, coilChangeLog);
} catch (Exception e) {
log.warn("提取旧卷ID失败跳过变更日志: {}", e.getMessage());
return joinPoint.proceed();
}
// 2. 查询旧卷快照
// 2. 查询旧卷快照(异常不影响主流程)
Map<Long, Map<String, Object>> oldSnapshots = new LinkedHashMap<>();
for (Long coilId : oldCoilIds) {
if (coilId != null) {
WmsMaterialCoil coil = coilMapper.selectById(coilId);
if (coil != null) {
oldSnapshots.put(coilId, beanToSnapshot(coil));
try {
for (Long coilId : oldCoilIds) {
if (coilId != null) {
WmsMaterialCoil coil = coilMapper.selectById(coilId);
if (coil != null) {
oldSnapshots.put(coilId, beanToSnapshot(coil));
}
}
}
} catch (Exception e) {
log.warn("查询旧卷快照失败,跳过变更日志: {}", e.getMessage());
return joinPoint.proceed();
}
// 3. 执行目标方法
Object result = joinPoint.proceed();
// 4. 确定新卷 ID 列表
List<Long> newCoilIds = resolveNewCoilIds(result, changeType, oldCoilIds);
// 5. 查询新卷快照并写入日志try-catch 包裹,不影响主流程)
// 4. 确定新卷 ID + 写入日志(整块 try-catch不影响主流程
try {
List<Long> newCoilIds = resolveNewCoilIds(result, changeType, oldCoilIds);
if (changeType == CoilChangeType.DELETE) {
// 删除:只有旧快照,无新快照
for (Long oldId : oldCoilIds) {