feat(wms): 在操作记录中添加合卷之后的钢卷
- 在 IWmsMaterialCoilService 中新增 mergeCoils 方法实现合卷操作 - 扩展 WmsMaterialCoilBo 类添加 actionId、actionType 和 mergedCoilId 字段 - 在 WmsMaterialCoilController 中添加 /merge 接口支持合卷新功能 - 实现合卷逻辑为 newCoils 中每个被合的卷添加 actionId 和 actionType - 支持通过 actionId 更新操作记录状态并设置完成时间 - 实现合卷后新钢卷 ID 的返回和操作记录的自动创建更新
This commit is contained in:
@@ -163,6 +163,19 @@ public class WmsMaterialCoilController extends BaseController {
|
||||
return toAjax(iWmsMaterialCoilService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 合卷操作
|
||||
* 在批量更新逻辑的基础上,为newCoils中的每个被合的卷加入actionId和actionType
|
||||
* 如果传递了actionId,则更新操作记录状态为已完成,并设置完成时间和合卷后的钢卷ID到processedCoilIds
|
||||
* 如果未传actionId,则创建新的操作记录
|
||||
*/
|
||||
@Log(title = "钢卷物料表-合卷", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/merge")
|
||||
public R<Void> mergeCoils(@Validated(EditGroup.class) @RequestBody WmsMaterialCoilBo bo) {
|
||||
return toAjax(iWmsMaterialCoilService.mergeCoils(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 简单更新钢卷物料表
|
||||
* 直接更新属性内容,不进行历史记录处理
|
||||
|
||||
@@ -126,6 +126,21 @@ public class WmsMaterialCoilBo extends BaseEntity {
|
||||
*/
|
||||
private List<WmsMaterialCoilBo> newCoils;
|
||||
|
||||
/**
|
||||
* 操作记录ID(用于合卷操作关联)
|
||||
*/
|
||||
private Long actionId;
|
||||
|
||||
/**
|
||||
* 操作类型(1=分卷,2=合卷,3=更新)
|
||||
*/
|
||||
private Integer actionType;
|
||||
|
||||
/**
|
||||
* 合卷后的新钢卷ID(用于返回)
|
||||
*/
|
||||
private Long mergedCoilId;
|
||||
|
||||
//时间格式化
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
|
||||
@@ -48,6 +48,14 @@ public interface IWmsMaterialCoilService {
|
||||
*/
|
||||
Boolean updateByBo(WmsMaterialCoilBo bo);
|
||||
|
||||
/**
|
||||
* 合卷操作
|
||||
* 在批量更新逻辑的基础上,为newCoils中的每个被合的卷加入actionId和actionType
|
||||
* 如果传递了actionId,则更新操作记录状态为已完成,并设置完成时间和合卷后的钢卷ID到processedCoilIds
|
||||
* 如果未传actionId,则创建新的操作记录
|
||||
*/
|
||||
Boolean mergeCoils(WmsMaterialCoilBo bo);
|
||||
|
||||
/**
|
||||
* 简单更新钢卷物料表
|
||||
* 直接更新属性内容,不进行历史记录处理
|
||||
|
||||
@@ -47,6 +47,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* 钢卷物料表Service业务层处理
|
||||
@@ -1673,6 +1674,8 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
if (mergeNewActualWarehouseId != null && mergeNewActualWarehouseId != -1L) {
|
||||
recordWarehouseOperationLog(newCoil.getCoilId(), mergeNewActualWarehouseId, 2, 1, "合卷操作-加工入库");
|
||||
}
|
||||
// 合卷完成后,设置新钢卷ID到bo对象中,方便外部获取
|
||||
bo.setMergedCoilId(newCoil.getCoilId());
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -2553,6 +2556,77 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
log.warn("记录钢卷库区操作日志失败:{}", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 合卷操作
|
||||
* 在批量更新逻辑的基础上,为newCoils中的每个被合的卷加入actionId和actionType
|
||||
* 如果传递了actionId,则更新操作记录状态为已完成,并设置完成时间和合卷后的钢卷ID到processedCoilIds
|
||||
* 如果未传actionId,则创建新的操作记录
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean mergeCoils(WmsMaterialCoilBo bo) {
|
||||
if (bo.getNewCoils() == null || bo.getNewCoils().isEmpty()) {
|
||||
throw new RuntimeException("合卷操作需要提供参与合卷的钢卷列表");
|
||||
}
|
||||
|
||||
// 先执行批量更新逻辑(分卷/合卷)
|
||||
Boolean batchResult = updateByBatch(bo);
|
||||
if (!Boolean.TRUE.equals(batchResult)) {
|
||||
throw new RuntimeException("合卷操作失败");
|
||||
}
|
||||
|
||||
// 直接从bo中获取合卷后的新钢卷ID
|
||||
Long mergedCoilId = bo.getMergedCoilId();
|
||||
if (mergedCoilId == null) {
|
||||
throw new RuntimeException("未找到合卷后的新钢卷ID");
|
||||
}
|
||||
|
||||
Date now = new Date();
|
||||
|
||||
// 为newCoils中的每个被合的卷处理操作记录
|
||||
for (WmsMaterialCoilBo originalCoilBo : bo.getNewCoils()) {
|
||||
Long coilId = originalCoilBo.getCoilId();
|
||||
Integer actionType = originalCoilBo.getActionType();
|
||||
Long actionId = originalCoilBo.getActionId();
|
||||
|
||||
if (coilId == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 获取原始钢卷信息
|
||||
WmsMaterialCoil originalCoil = baseMapper.selectById(coilId);
|
||||
if (originalCoil == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (actionId != null) {
|
||||
// 如果传递了actionId,则更新操作记录状态为已完成
|
||||
WmsCoilPendingActionBo pendingActionBo = new WmsCoilPendingActionBo();
|
||||
pendingActionBo.setActionId(actionId);
|
||||
pendingActionBo.setActionStatus(2);
|
||||
pendingActionBo.setCompleteTime(now);
|
||||
// 将合卷后的钢卷ID添加到processedCoilIds
|
||||
pendingActionBo.setProcessedCoilIds(mergedCoilId.toString());
|
||||
coilPendingActionService.updateByBo(pendingActionBo);
|
||||
} else if (actionType != null) {
|
||||
// 如果未传actionId,则创建新的操作记录
|
||||
WmsCoilPendingActionBo pendingActionBo = new WmsCoilPendingActionBo();
|
||||
pendingActionBo.setCoilId(coilId);
|
||||
pendingActionBo.setCurrentCoilNo(originalCoil.getCurrentCoilNo());
|
||||
pendingActionBo.setActionType(actionType);
|
||||
pendingActionBo.setActionStatus(2);
|
||||
pendingActionBo.setSourceType("manual");
|
||||
pendingActionBo.setPriority(0);
|
||||
pendingActionBo.setCompleteTime(now);
|
||||
pendingActionBo.setProcessedCoilIds(mergedCoilId.toString());
|
||||
coilPendingActionService.insertByBo(pendingActionBo);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 钢卷发货撤回
|
||||
* @param coilId
|
||||
|
||||
Reference in New Issue
Block a user