bug修改;

This commit is contained in:
王奎兴
2026-07-03 17:49:31 +08:00
parent 8b66aea296
commit e4a3835ee0
17 changed files with 158 additions and 28 deletions
@@ -842,6 +842,14 @@ public class StockOutOrderApplicationService {
return stockOutOrderDomainService.auditState(stockOutOrderDO);
}
public Boolean cancelAuditState(StockOutOrderDO stockOutOrderDO){
return stockOutOrderDomainService.cancelAuditState(stockOutOrderDO);
}
public Boolean cancelExecution(StockOutOrderDO stockOutOrderDO){
return stockOutOrderDomainService.cancelExecution(stockOutOrderDO);
}
public Boolean execution(String outOrderNumber){
//Boolean execution = stockOutOrderDomainService.execution(outOrderNumber);
StockOutOrderDO stockOutOrderDO = new StockOutOrderDO();
@@ -604,6 +604,103 @@ public class StockOutOrderDomainService {
.in(StockOutOrder::getOutOrderId, stockOutOrderDO.getOutOrderIds()));
}
@Transactional(rollbackFor = Exception.class)
public Boolean cancelAuditState(StockOutOrderDO stockOutOrderDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
// 获取用户姓名(优先从UserPo获取,如果为空则使用realname,最后使用username作为兜底)
String userRealName = loginUser.getUserPo() != null && loginUser.getUserPo().getUserName() != null
? loginUser.getUserPo().getUserName()
: (loginUser.getRealname() != null ? loginUser.getRealname() : loginUser.getUsername());
return stockOutOrderService.update(null, new UpdateWrapper<StockOutOrder>().lambda()
.set(StockOutOrder::getStatus, 1)
.set(StockOutOrder::getAuditStatus, 1)
.set(StockOutOrder::getAuditRemark, null)
.set(StockOutOrder::getAuditBy, null)
.set(StockOutOrder::getAuditByName, null)
.set(StockOutOrder::getAuditTime, null)
.set(StockOutOrder::getUpdateBy, loginUser.getUserid())
.set(StockOutOrder::getUpdateByName, userRealName)
.set(StockOutOrder::getUpdateTime, new Date())
.in(StockOutOrder::getOutOrderId, stockOutOrderDO.getOutOrderIds()));
}
@Transactional(rollbackFor = Exception.class)
public Boolean cancelExecution(StockOutOrderDO stockOutOrderDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
// 获取用户姓名(优先从UserPo获取,如果为空则使用realname,最后使用username作为兜底)
String userRealName = loginUser.getUserPo() != null && loginUser.getUserPo().getUserName() != null
? loginUser.getUserPo().getUserName()
: (loginUser.getRealname() != null ? loginUser.getRealname() : loginUser.getUsername());
List<Long> outOrderIds = stockOutOrderDO.getOutOrderIds();
for (Long outOrderId : outOrderIds) {
StockOutOrder stockOutOrder = stockOutOrderService.getById(outOrderId);
if (stockOutOrder == null) {
throw new ServiceException("出库单不存在");
}
String outOrderNumber = stockOutOrder.getOutOrderNumber();
//逻辑删除拣货单
PickingOrder pickingOrder = pickingOrderService.getOne(new QueryWrapper<PickingOrder>().lambda()
.eq(PickingOrder::getOrderNumber, outOrderNumber)
.eq(PickingOrder::getDelFlag, 1), false);
if (pickingOrder != null) {
Integer status = pickingOrder.getStatus();
String pickingOrderNumber = pickingOrder.getPickingOrderNumber();
if (status!=1) {
throw new ServiceException("拣货单[" + pickingOrderNumber + "]已拣货,无法取消执行");
} else {
List<PickingMaterialDetail> list = pickingMaterialDetailService.list(new QueryWrapper<PickingMaterialDetail>().lambda()
.eq(PickingMaterialDetail::getPickingOrderNumber, pickingOrderNumber)
.eq(PickingMaterialDetail::getDelFlag, 1));
if (list != null && list.size() > 0) {
for (PickingMaterialDetail pickingMaterialDetail : list) {
pickingMaterialDetail.setDelFlag(2);
pickingMaterialDetailService.updateById(pickingMaterialDetail);
}
}
pickingOrder.setDelFlag(2);
pickingOrderService.updateById(pickingOrder);
}
}
//还原分配库存
List<OutMaterialDetail> list = outMaterialDetailService.list(new QueryWrapper<OutMaterialDetail>().lambda()
.eq(OutMaterialDetail::getOutOrderNumber, outOrderNumber)
.eq(OutMaterialDetail::getDelFlag, 1));
for (OutMaterialDetail materialDetail : list) {
//还原库存
BigDecimal allocationQuantity = materialDetail.getAllocationQuantity();
Long materialInventoryId = materialDetail.getMaterialInventoryId();
MaterialInventory materialInventory = materialInventoryMapper.selectById(materialInventoryId);
if (materialInventory == null) {
throw new ServiceException("库存信息不存在");
}
materialInventory.setAllocationQuantity(materialInventory.getAllocationQuantity().add(allocationQuantity));
materialInventory.setFreezeQuantity(materialInventory.getFreezeQuantity().subtract(allocationQuantity));
materialInventoryMapper.updateById(materialInventory);
//逻辑删除库存调整记录
Long uniqueId = materialDetail.getUniqueId();
String relateNo = outOrderNumber+"#"+uniqueId;
inventoryAdjustmentRecordService.update(new InventoryAdjustmentRecord(), new LambdaUpdateWrapper<InventoryAdjustmentRecord>()
.set(InventoryAdjustmentRecord::getDelFlag, 2)
.eq(InventoryAdjustmentRecord::getRelateNo, relateNo));
}
}
return stockOutOrderService.update(null, new UpdateWrapper<StockOutOrder>().lambda()
.set(StockOutOrder::getStatus, 1)
.set(StockOutOrder::getAuditStatus, 1)
.set(StockOutOrder::getAuditRemark, null)
.set(StockOutOrder::getAuditBy, null)
.set(StockOutOrder::getAuditByName, null)
.set(StockOutOrder::getAuditTime, null)
.set(StockOutOrder::getUpdateBy, loginUser.getUserid())
.set(StockOutOrder::getUpdateByName, userRealName)
.set(StockOutOrder::getUpdateTime, new Date())
.in(StockOutOrder::getOutOrderId, stockOutOrderDO.getOutOrderIds()));
}
@Transactional(rollbackFor = Exception.class)
public Boolean execution(String outOrderNumber) {
StockOutOrder stockOutOrder = stockOutOrderService.getOne(new QueryWrapper<StockOutOrder>().lambda()
@@ -96,15 +96,6 @@ public class MaterialInventoryApi extends BaseController {
startPage();
// 使用带批次属性的查询方法,批次属性值从库存表中获取
List<MaterialInventoryPO> list = materialInventoryApplicationService.queryListWithBatchAttributes(materialInventoryDO);
// 按更新时间倒序排序;update_time 为空的数据放最后
list.sort((o1, o2) -> {
Date t1 = o1.getUpdateTime();
Date t2 = o2.getUpdateTime();
if (t1 == null && t2 == null) return 0;
if (t1 == null) return 1;
if (t2 == null) return -1;
return t2.compareTo(t1); // desc
});
TableDataInfo tableDataInfo = getDataTable(list);
// 如果查询结果为空,抛出异常提示用户该物料在库存中不存在
// if (tableDataInfo.getTotal() == 0) {
@@ -217,6 +217,26 @@ public class StockOutOrderApi extends BaseController {
return AjaxResult.success(stockOutOrderApplicationService.auditState(stockOutOrderDO));
}
/**
* 审核出库单
*/
@ApiOperation("审核出库单")
@PostMapping(value = "/cancelAuditState")
public AjaxResult cancelAuditState(@RequestBody StockOutOrderDTO stockOutOrderDTO) {
StockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO);
return AjaxResult.success(stockOutOrderApplicationService.cancelAuditState(stockOutOrderDO));
}
/**
* 审核出库单
*/
@ApiOperation("审核出库单")
@PostMapping(value = "/cancelExecution")
public AjaxResult cancelExecution(@RequestBody StockOutOrderDTO stockOutOrderDTO) {
StockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO);
return AjaxResult.success(stockOutOrderApplicationService.cancelExecution(stockOutOrderDO));
}
/**
* 审核出库单
*/