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

@@ -10,10 +10,12 @@ import com.klp.domain.vo.WmsMaterialCoilVo;
import com.klp.domain.vo.anneal.WmsAnnealPerformanceDetailVo;
import com.klp.domain.vo.anneal.WmsAnnealPerformanceSummaryVo;
import com.klp.domain.vo.anneal.WmsAnnealPerformanceVo;
import com.klp.domain.WmsFurnacePlan;
import com.klp.domain.WmsFurnacePlanCoil;
import com.klp.domain.WmsWarehouse;
import com.klp.mapper.WmsAnnealPerformanceMapper;
import com.klp.mapper.WmsFurnacePlanCoilMapper;
import com.klp.mapper.WmsFurnacePlanMapper;
import com.klp.mapper.WmsWarehouseMapper;
import com.klp.service.IWmsAnnealPerformanceService;
import com.klp.service.IWmsMaterialCoilService;
@@ -38,6 +40,7 @@ public class WmsAnnealPerformanceServiceImpl implements IWmsAnnealPerformanceSer
private final WmsAnnealPerformanceMapper performanceMapper;
private final WmsFurnacePlanCoilMapper planCoilMapper;
private final WmsFurnacePlanMapper planMapper;
private final WmsWarehouseMapper warehouseMapper;
private final IWmsMaterialCoilService materialCoilService;
@@ -200,4 +203,50 @@ public class WmsAnnealPerformanceServiceImpl implements IWmsAnnealPerformanceSer
vo.setDetails(details);
return vo;
}
@Override
public List<WmsMaterialCoilVo> queryPlanCoils(WmsAnnealPerformanceBo bo) {
// 1. 查询退火计划
LambdaQueryWrapper<WmsFurnacePlan> planQw = new LambdaQueryWrapper<WmsFurnacePlan>()
.ge(bo.getStartTime() != null, WmsFurnacePlan::getActualStartTime, bo.getStartTime())
.le(bo.getEndTime() != null, WmsFurnacePlan::getActualStartTime, bo.getEndTime())
.eq(bo.getTargetFurnaceId() != null, WmsFurnacePlan::getTargetFurnaceId, bo.getTargetFurnaceId())
.like(StringUtils.isNotBlank(bo.getPlanNo()), WmsFurnacePlan::getPlanNo, bo.getPlanNo())
.eq(WmsFurnacePlan::getDelFlag, 0);
List<WmsFurnacePlan> plans = planMapper.selectList(planQw);
List<Long> planIds = plans.stream()
.map(WmsFurnacePlan::getPlanId)
.collect(Collectors.toList());
if (planIds.isEmpty()) {
return Collections.emptyList();
}
// 2. 查询计划关联的钢卷加工前的coilId
List<WmsFurnacePlanCoil> planCoils = planCoilMapper.selectList(
new LambdaQueryWrapper<WmsFurnacePlanCoil>()
.in(WmsFurnacePlanCoil::getPlanId, planIds)
.eq(WmsFurnacePlanCoil::getDelFlag, 0)
);
Set<Long> coilIds = planCoils.stream()
.map(WmsFurnacePlanCoil::getCoilId)
.filter(Objects::nonNull)
.collect(Collectors.toSet());
if (coilIds.isEmpty()) {
return Collections.emptyList();
}
// 3. 按coilId直接查询加工前的钢卷
WmsMaterialCoilBo coilBo = new WmsMaterialCoilBo();
coilBo.setCoilIds(coilIds.stream().map(String::valueOf).collect(Collectors.joining(",")));
PageQuery pageQuery = new PageQuery();
pageQuery.setPageNum(1);
pageQuery.setPageSize(Integer.MAX_VALUE);
TableDataInfo<WmsMaterialCoilVo> coilPage = materialCoilService.queryPageList(coilBo, pageQuery);
return coilPage != null && coilPage.getRows() != null
? coilPage.getRows()
: Collections.emptyList();
}
}