feat(oms):App端出入库明细跳详情补入库按单号查询,预约单修改限待提交状态

需求:入库/出库明细列表点击跳详情;待提交预约单可修改(暂存/提交均走/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
This commit is contained in:
rcx
2026-08-24 18:12:50 +08:00
parent 5298e9d4e3
commit 83f4cce451
4 changed files with 43 additions and 0 deletions
@@ -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);
//统计总物料种数
@@ -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);
//统计种类