From cd3afc634c98f7d36b4c9149042ad7ea8bcfeec9 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Sat, 11 Jul 2026 16:50:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(anneal):=20=E6=B7=BB=E5=8A=A0=E9=80=80?= =?UTF-8?q?=E7=81=AB=E8=AE=A1=E5=88=92=E9=92=A2=E5=8D=B7=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=B9=B6=E4=BC=98=E5=8C=96=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在IWmsAnnealPerformanceService中添加queryPlanCoils方法用于查询退火计划中的加工前钢卷 - 在WmsAnnealPerformanceController中添加/rawCoils端点暴露钢卷查询功能 - 在WmsAnnealPerformanceServiceImpl中实现完整的钢卷查询逻辑,包括按计划条件筛选和关联查询 - 修改CoilChangeLogAspect切面,在旧卷ID提取和快照查询中添加异常处理,确保异常不影响主流程 - 将变更日志的确定新卷ID和写入日志整体包装在try-catch中,提升系统稳定性 --- .../WmsAnnealPerformanceController.java | 11 +++++ .../service/IWmsAnnealPerformanceService.java | 8 +++ .../impl/WmsAnnealPerformanceServiceImpl.java | 49 +++++++++++++++++++ .../klp/wms/aspect/CoilChangeLogAspect.java | 33 ++++++++----- 4 files changed, 89 insertions(+), 12 deletions(-) diff --git a/klp-wms/src/main/java/com/klp/controller/WmsAnnealPerformanceController.java b/klp-wms/src/main/java/com/klp/controller/WmsAnnealPerformanceController.java index ced6d9ef6..c13628186 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsAnnealPerformanceController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsAnnealPerformanceController.java @@ -2,6 +2,7 @@ package com.klp.controller; import com.klp.common.core.domain.R; import com.klp.domain.bo.WmsAnnealPerformanceBo; +import com.klp.domain.vo.WmsMaterialCoilVo; import com.klp.domain.vo.anneal.WmsAnnealPerformanceVo; import com.klp.service.IWmsAnnealPerformanceService; import lombok.RequiredArgsConstructor; @@ -10,6 +11,8 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + /** * 炉火实绩 * @@ -28,4 +31,12 @@ public class WmsAnnealPerformanceController { public R getPerformance(WmsAnnealPerformanceBo bo) { return R.ok(performanceService.queryPerformance(bo)); } + + /** + * 查询退火计划中的加工前钢卷列表 + */ + @GetMapping("/rawCoils") + public R> getRawCoils(WmsAnnealPerformanceBo bo) { + return R.ok(performanceService.queryPlanCoils(bo)); + } } diff --git a/klp-wms/src/main/java/com/klp/service/IWmsAnnealPerformanceService.java b/klp-wms/src/main/java/com/klp/service/IWmsAnnealPerformanceService.java index 7f021e385..61890b130 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsAnnealPerformanceService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsAnnealPerformanceService.java @@ -1,8 +1,11 @@ package com.klp.service; import com.klp.domain.bo.WmsAnnealPerformanceBo; +import com.klp.domain.vo.WmsMaterialCoilVo; import com.klp.domain.vo.anneal.WmsAnnealPerformanceVo; +import java.util.List; + /** * 炉火实绩Service接口 * @@ -12,4 +15,9 @@ import com.klp.domain.vo.anneal.WmsAnnealPerformanceVo; public interface IWmsAnnealPerformanceService { WmsAnnealPerformanceVo queryPerformance(WmsAnnealPerformanceBo bo); + + /** + * 查询退火计划中的加工前钢卷列表 + */ + List queryPlanCoils(WmsAnnealPerformanceBo bo); } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsAnnealPerformanceServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsAnnealPerformanceServiceImpl.java index 39d637cdf..b1bb473d6 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsAnnealPerformanceServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsAnnealPerformanceServiceImpl.java @@ -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 queryPlanCoils(WmsAnnealPerformanceBo bo) { + // 1. 查询退火计划 + LambdaQueryWrapper planQw = new LambdaQueryWrapper() + .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 plans = planMapper.selectList(planQw); + + List planIds = plans.stream() + .map(WmsFurnacePlan::getPlanId) + .collect(Collectors.toList()); + if (planIds.isEmpty()) { + return Collections.emptyList(); + } + + // 2. 查询计划关联的钢卷(加工前的coilId) + List planCoils = planCoilMapper.selectList( + new LambdaQueryWrapper() + .in(WmsFurnacePlanCoil::getPlanId, planIds) + .eq(WmsFurnacePlanCoil::getDelFlag, 0) + ); + + Set 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 coilPage = materialCoilService.queryPageList(coilBo, pageQuery); + + return coilPage != null && coilPage.getRows() != null + ? coilPage.getRows() + : Collections.emptyList(); + } } diff --git a/klp-wms/src/main/java/com/klp/wms/aspect/CoilChangeLogAspect.java b/klp-wms/src/main/java/com/klp/wms/aspect/CoilChangeLogAspect.java index 1c6083cd3..5c00ec148 100644 --- a/klp-wms/src/main/java/com/klp/wms/aspect/CoilChangeLogAspect.java +++ b/klp-wms/src/main/java/com/klp/wms/aspect/CoilChangeLogAspect.java @@ -46,28 +46,37 @@ public class CoilChangeLogAspect { public Object around(ProceedingJoinPoint joinPoint, CoilChangeLog coilChangeLog) throws Throwable { CoilChangeType changeType = coilChangeLog.changeType(); - // 1. 提取旧卷 ID 列表 - List oldCoilIds = extractOldCoilIds(joinPoint, coilChangeLog); + // 1. 提取旧卷 ID 列表(异常不影响主流程) + List oldCoilIds; + try { + oldCoilIds = extractOldCoilIds(joinPoint, coilChangeLog); + } catch (Exception e) { + log.warn("提取旧卷ID失败,跳过变更日志: {}", e.getMessage()); + return joinPoint.proceed(); + } - // 2. 查询旧卷快照 + // 2. 查询旧卷快照(异常不影响主流程) Map> 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 newCoilIds = resolveNewCoilIds(result, changeType, oldCoilIds); - - // 5. 查询新卷快照并写入日志(try-catch 包裹,不影响主流程) + // 4. 确定新卷 ID + 写入日志(整块 try-catch,不影响主流程) try { + List newCoilIds = resolveNewCoilIds(result, changeType, oldCoilIds); if (changeType == CoilChangeType.DELETE) { // 删除:只有旧快照,无新快照 for (Long oldId : oldCoilIds) {