From 83f4cce451908cc3bb10528ed502adf365a139d5 Mon Sep 17 00:00:00 2001 From: rcx <3084692334@qq.com> Date: Mon, 24 Aug 2026 18:12:50 +0800 Subject: [PATCH] =?UTF-8?q?feat(oms):App=E7=AB=AF=E5=87=BA=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E6=98=8E=E7=BB=86=E8=B7=B3=E8=AF=A6=E6=83=85=E8=A1=A5?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E6=8C=89=E5=8D=95=E5=8F=B7=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=EF=BC=8C=E9=A2=84=E7=BA=A6=E5=8D=95=E4=BF=AE=E6=94=B9=E9=99=90?= =?UTF-8?q?=E5=BE=85=E6=8F=90=E4=BA=A4=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 需求:入库/出库明细列表点击跳详情;待提交预约单可修改(暂存/提交均走/edit,与PC共用链路) 1.ReserveStockInOrderApi新增getInfoByInOrderNumber按单号查详情: 入库明细行只带inOrderNumber(明细表无in_order_id列),对齐出库侧getInfoOutOrderNumber; del_flag=1过滤已删单+getOne不抛单号重复 2.ReserveStockInOrderMapper.xml MaterialDetailResult显式映射in_order_number, 明细行单号不再依赖驼峰自动映射开关(出库侧:363本就有,入库侧补齐) 3.入库/出库DomainService.update加状态闸门:仅status=1(已创建)且issueStatus!=3(未确认)允许修改, 防已确认下发/已流转单据被改写(仓码确认只置issueStatus=3不改status,原校验缺此维度必然漏防); 明细为空改报'请添加货物明细'(原getMaterialDetailList().size()空指针500);出库update补@Transactional --- .../ReserveStockInOrderDomainService.java | 9 ++++++++ .../ReserveStockOutOrderDomainService.java | 10 ++++++++ .../ReserveStockInOrderApi.java | 23 +++++++++++++++++++ .../ReserveStockInOrderMapper.xml | 1 + 4 files changed, 43 insertions(+) diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockInOrder/service/ReserveStockInOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockInOrder/service/ReserveStockInOrderDomainService.java index 0062525b3..54b3549b6 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockInOrder/service/ReserveStockInOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockInOrder/service/ReserveStockInOrderDomainService.java @@ -248,6 +248,15 @@ public class ReserveStockInOrderDomainService { if (stockInOrderPO == null){ throw new ServiceException("入库单信息不存在"); } + // 仅待提交状态允许修改:status=1(已创建)且未被仓码确认(issueStatus: 0/1-待确认 2-驳回 3-已确认,驳回单可改后重提) + if (stockInOrderPO.getStatus() == null || stockInOrderPO.getStatus() != 1 + || (stockInOrderPO.getIssueStatus() != null && stockInOrderPO.getIssueStatus() == 3)) { + throw new ServiceException("只有待提交的预约单才能修改"); + } + // 明细非空防御:与insert校验口径一致,避免下方getMaterialDetailList().size()空指针 + if (CollectionUtils.isEmpty(stockInOrderDO.getMaterialDetailList())) { + throw new ServiceException("请添加货物明细"); + } //设置物料信息 setMaterialDetailInfo(stockInOrderDO); //统计总物料种数 diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockOutOrder/service/ReserveStockOutOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockOutOrder/service/ReserveStockOutOrderDomainService.java index 5b81fafaa..e694dd467 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockOutOrder/service/ReserveStockOutOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockOutOrder/service/ReserveStockOutOrderDomainService.java @@ -259,11 +259,21 @@ public class ReserveStockOutOrderDomainService { /** * 修改出库单 */ + @Transactional(rollbackFor = Exception.class) public Boolean update(ReserveStockOutOrderDO stockOutOrderDO) { ReserveStockOutOrderPO stockInOrderPO = stockOutOrderService.getInfo(stockOutOrderDO.getOutOrderId()); if (stockInOrderPO == null){ throw new ServiceException("出库单信息不存在"); } + // 仅待提交状态允许修改:status=1(已创建)且未被仓码确认(issueStatus: 0/1-待确认 2-驳回 3-已确认,驳回单可改后重提) + if (stockInOrderPO.getStatus() == null || stockInOrderPO.getStatus() != 1 + || (stockInOrderPO.getIssueStatus() != null && stockInOrderPO.getIssueStatus() == 3)) { + throw new ServiceException("只有待提交的预约单才能修改"); + } + // 明细非空防御:避免下方getMaterialDetailList().size()空指针 + if (CollectionUtils.isEmpty(stockOutOrderDO.getMaterialDetailList())) { + throw new ServiceException("请添加货物明细"); + } //设置物料信息 setMaterialDetailInfo(stockOutOrderDO); //统计种类 diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/reserveStockInOrder/ReserveStockInOrderApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/reserveStockInOrder/ReserveStockInOrderApi.java index 66a8e66a6..893964bcf 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/reserveStockInOrder/ReserveStockInOrderApi.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/reserveStockInOrder/ReserveStockInOrderApi.java @@ -1,9 +1,12 @@ package com.mhd.oms.interfaces.facade.reserveStockInOrder; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.mhd.common.core.web.controller.BaseController; import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.core.web.page.TableDataInfo; import com.mhd.oms.domain.reserveInMaterialDetail.repository.po.ReserveInMaterialDetailPO; +import com.mhd.oms.domain.reserveStockInOrder.entity.ReserveStockInOrder; +import com.mhd.oms.domain.reserveStockInOrder.repository.facade.IReserveStockInOrderService; import com.mhd.oms.domain.reserveStockInOrder.repository.listener.ValidationException; import com.mhd.oms.domain.reserveStockInOrder.repository.po.ReserveStockInOrderPO; import com.mhd.oms.domain.reserveStockInOrder.repository.todo.ReserveStockInOrderDO; @@ -47,6 +50,9 @@ public class ReserveStockInOrderApi extends BaseController { @Resource private ReserveStockInOrderAssembler stockInOrderAssembler; + @Autowired + private IReserveStockInOrderService reserveStockInOrderService; + /** * 分页查询入库单列表 */ @@ -125,6 +131,23 @@ public class ReserveStockInOrderApi extends BaseController { return AjaxResult.success(stockInOrderApplicationService.getInfo(inOrderId)); } + /** + * 根据入库单号获取入库单详细信息 + * App端入库明细列表行只带inOrderNumber(reserve_in_material_detail表没有in_order_id列), + * 明细行点击跳详情时按单号查询,与出库侧getInfoOutOrderNumber对齐 + */ + @ApiOperation("根据入库单号获取入库单") + @GetMapping(value = "/getInfoByInOrderNumber") + public AjaxResult getInfoByInOrderNumber(@RequestParam("inOrderNumber") String inOrderNumber) { + ReserveStockInOrder stockInOrder = reserveStockInOrderService.getOne(new LambdaQueryWrapper() + .eq(ReserveStockInOrder::getInOrderNumber, inOrderNumber) + .eq(ReserveStockInOrder::getDelFlag, 1), false); + if (stockInOrder == null) { + return AjaxResult.error("入库单不存在"); + } + return AjaxResult.success(stockInOrderApplicationService.getInfo(stockInOrder.getInOrderId())); + } + /** * 导入入库单 */ diff --git a/mhd_oms/src/main/resources/mapper/reserveStockInOrder/ReserveStockInOrderMapper.xml b/mhd_oms/src/main/resources/mapper/reserveStockInOrder/ReserveStockInOrderMapper.xml index f4d5ead30..c7f95902f 100644 --- a/mhd_oms/src/main/resources/mapper/reserveStockInOrder/ReserveStockInOrderMapper.xml +++ b/mhd_oms/src/main/resources/mapper/reserveStockInOrder/ReserveStockInOrderMapper.xml @@ -464,6 +464,7 @@ +