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:
+9
@@ -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);
|
||||
//统计总物料种数
|
||||
|
||||
+10
@@ -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);
|
||||
//统计种类
|
||||
|
||||
+23
@@ -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<ReserveStockInOrder>()
|
||||
.eq(ReserveStockInOrder::getInOrderNumber, inOrderNumber)
|
||||
.eq(ReserveStockInOrder::getDelFlag, 1), false);
|
||||
if (stockInOrder == null) {
|
||||
return AjaxResult.error("入库单不存在");
|
||||
}
|
||||
return AjaxResult.success(stockInOrderApplicationService.getInfo(stockInOrder.getInOrderId()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入入库单
|
||||
*/
|
||||
|
||||
@@ -464,6 +464,7 @@
|
||||
|
||||
<resultMap type="com.mhd.oms.domain.reserveInMaterialDetail.repository.po.ReserveInMaterialDetailPO" id="MaterialDetailResult">
|
||||
<result property="materialDetailId" column="material_detail_id" />
|
||||
<result property="inOrderNumber" column="in_order_number" />
|
||||
<result property="organizationId" column="organization_id" />
|
||||
<result property="organizationName" column="organization_name" />
|
||||
<result property="topOrganizationId" column="top_organization_id" />
|
||||
|
||||
Reference in New Issue
Block a user