From 74d0cfedf4e1a7296310ee99ae933e5d0ee8487b Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Mon, 27 Apr 2026 13:50:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(aps):=20=E6=B7=BB=E5=8A=A0=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E6=8E=92=E4=BA=A7=E5=8D=95ID=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=85=B3=E8=81=94=E9=92=A2=E5=8D=B7=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在ApsPlanDetailController中新增/coils/{planSheetId}接口 - 实现queryCoilsByPlanSheetId方法查询指定排产单关联的钢卷 - 集成WmsCoilContractRel和WmsMaterialCoilService相关服务 - 根据排产日期筛选钢卷创建时间范围 - 添加日期范围计算工具方法支持天级别时间筛选 --- .../controller/ApsPlanDetailController.java | 8 ++ .../aps/service/IApsPlanDetailService.java | 10 ++ .../impl/ApsPlanDetailServiceImpl.java | 96 ++++++++++++++++++- 3 files changed, 111 insertions(+), 3 deletions(-) diff --git a/klp-aps/src/main/java/com/klp/aps/controller/ApsPlanDetailController.java b/klp-aps/src/main/java/com/klp/aps/controller/ApsPlanDetailController.java index ca48dc13..0e5d0414 100644 --- a/klp-aps/src/main/java/com/klp/aps/controller/ApsPlanDetailController.java +++ b/klp-aps/src/main/java/com/klp/aps/controller/ApsPlanDetailController.java @@ -21,6 +21,7 @@ import com.klp.aps.domain.vo.ApsPlanDetailVo; import com.klp.aps.domain.bo.ApsPlanDetailBo; import com.klp.aps.service.IApsPlanDetailService; import com.klp.common.core.page.TableDataInfo; +import com.klp.domain.vo.WmsMaterialCoilVo; /** * 排产单明细 @@ -96,4 +97,11 @@ public class ApsPlanDetailController extends BaseController { @PathVariable Long[] planDetailIds) { return toAjax(iApsPlanDetailService.deleteWithValidByIds(Arrays.asList(planDetailIds), true)); } + + // 根据排产单ID查询排产日期以及明细绑定的orderId,再根据这个orderId和排查时间查询返回钢卷 + @GetMapping("/coils/{planSheetId}") + public R> getCoilsByPlanSheetId(@NotNull(message = "排产单ID不能为空") + @PathVariable Long planSheetId) { + return R.ok(iApsPlanDetailService.queryCoilsByPlanSheetId(planSheetId)); + } } diff --git a/klp-aps/src/main/java/com/klp/aps/service/IApsPlanDetailService.java b/klp-aps/src/main/java/com/klp/aps/service/IApsPlanDetailService.java index 07dfd9b9..38c345f5 100644 --- a/klp-aps/src/main/java/com/klp/aps/service/IApsPlanDetailService.java +++ b/klp-aps/src/main/java/com/klp/aps/service/IApsPlanDetailService.java @@ -8,6 +8,8 @@ import com.klp.common.core.domain.PageQuery; import java.util.Collection; import java.util.List; +import com.klp.domain.vo.WmsMaterialCoilVo; + /** * 排产单明细Service接口 * @@ -55,4 +57,12 @@ public interface IApsPlanDetailService { * 根据排产单ID删除明细 */ int deleteByPlanSheetIds(Collection planSheetIds); + + /** + * 根据排产单ID查询关联的钢卷列表(根据计划日期筛选钢卷创建时间) + * + * @param planSheetId 排产单ID + * @return 钢卷列表 + */ + List queryCoilsByPlanSheetId(Long planSheetId); } diff --git a/klp-aps/src/main/java/com/klp/aps/service/impl/ApsPlanDetailServiceImpl.java b/klp-aps/src/main/java/com/klp/aps/service/impl/ApsPlanDetailServiceImpl.java index 1bb3fecc..405ba8b3 100644 --- a/klp-aps/src/main/java/com/klp/aps/service/impl/ApsPlanDetailServiceImpl.java +++ b/klp-aps/src/main/java/com/klp/aps/service/impl/ApsPlanDetailServiceImpl.java @@ -8,17 +8,24 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.klp.common.utils.StringUtils; +import com.klp.domain.WmsCoilContractRel; +import com.klp.domain.vo.WmsMaterialCoilVo; +import com.klp.domain.vo.WmsCoilContractRelVo; +import com.klp.domain.bo.WmsMaterialCoilBo; +import com.klp.mapper.WmsCoilContractRelMapper; +import com.klp.service.IWmsMaterialCoilService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import com.klp.aps.domain.bo.ApsPlanDetailBo; import com.klp.aps.domain.vo.ApsPlanDetailVo; +import com.klp.aps.domain.vo.ApsPlanSheetVo; import com.klp.aps.domain.entity.ApsPlanDetail; import com.klp.aps.mapper.ApsPlanDetailMapper; import com.klp.aps.service.IApsPlanDetailService; +import com.klp.aps.service.IApsPlanSheetService; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.util.*; +import java.util.stream.Collectors; /** * 排产单明细Service业务层处理 @@ -31,6 +38,9 @@ import java.util.Collection; public class ApsPlanDetailServiceImpl implements IApsPlanDetailService { private final ApsPlanDetailMapper baseMapper; + private final IApsPlanSheetService apsPlanSheetService; + private final WmsCoilContractRelMapper coilContractRelMapper; + private final IWmsMaterialCoilService materialCoilService; /** * 查询排产单明细 @@ -207,4 +217,84 @@ public class ApsPlanDetailServiceImpl implements IApsPlanDetailService { public int deleteByPlanSheetIds(Collection planSheetIds) { return baseMapper.deleteByPlanSheetIds(planSheetIds); } + + @Override + public List queryCoilsByPlanSheetId(Long planSheetId) { + if (planSheetId == null) { + return Collections.emptyList(); + } + ApsPlanSheetVo planSheet = apsPlanSheetService.queryById(planSheetId); + if (planSheet == null || planSheet.getPlanDate() == null) { + return Collections.emptyList(); + } + Date planDate = planSheet.getPlanDate(); + + LambdaQueryWrapper detailQw = Wrappers.lambdaQuery(); + detailQw.eq(ApsPlanDetail::getPlanSheetId, planSheetId); + detailQw.eq(ApsPlanDetail::getDelFlag, 0); + List details = baseMapper.selectVoList(detailQw); + + List orderIds = details.stream() + .map(ApsPlanDetailVo::getOrderId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + + if (orderIds.isEmpty()) { + return Collections.emptyList(); + } + + LambdaQueryWrapper relQw = Wrappers.lambdaQuery(); + relQw.in(WmsCoilContractRel::getContractId, orderIds); + relQw.eq(WmsCoilContractRel::getDelFlag, 0); + List coilRels = coilContractRelMapper.selectVoList(relQw); + + Map> coilIdMap = coilRels.stream() + .filter(rel -> rel.getContractId() != null && rel.getCoilId() != null) + .collect(Collectors.groupingBy( + WmsCoilContractRelVo::getContractId, + Collectors.mapping(WmsCoilContractRelVo::getCoilId, Collectors.toList()) + )); + + Set allCoilIds = coilIdMap.values().stream() + .flatMap(List::stream) + .collect(Collectors.toSet()); + + if (allCoilIds.isEmpty()) { + return Collections.emptyList(); + } + + WmsMaterialCoilBo coilBo = new WmsMaterialCoilBo(); + coilBo.setCoilIds(allCoilIds.stream().map(String::valueOf).collect(Collectors.joining(","))); + coilBo.setByCreateTimeStart(getStartOfDay(planDate)); + coilBo.setByCreateTimeEnd(getEndOfDay(planDate)); + + return materialCoilService.queryList(coilBo); + } + + private Date getStartOfDay(Date date) { + if (date == null) { + return null; + } + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + return cal.getTime(); + } + + private Date getEndOfDay(Date date) { + if (date == null) { + return null; + } + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + cal.set(Calendar.HOUR_OF_DAY, 23); + cal.set(Calendar.MINUTE, 59); + cal.set(Calendar.SECOND, 59); + cal.set(Calendar.MILLISECOND, 999); + return cal.getTime(); + } }