feat(transfer): 添加调拨单审批功能和调拨类型字段

- 在WmsTransferOrder实体中添加调拨类型、审批人、审批时间和审批状态字段
- 在WmsMaterialCoil实体中添加调拨类型字段用于关联调拨信息
- 实现调拨单审批接口,支持通过或驳回操作
- 更新调拨单明细处理逻辑,确保调拨类型正确传递到钢卷信息
- 添加调拨单取消功能,可恢复调拨前的状态
- 在导出VO中增加调拨类型字段支持Excel导出
- 更新查询条件支持按调拨类型、审批状态等字段筛选
- 完善调拨流程中的数据验证和错误处理机制
This commit is contained in:
2026-04-10 09:24:42 +08:00
parent 255a6dc616
commit c8987f6fdd
15 changed files with 224 additions and 33 deletions

View File

@@ -538,6 +538,8 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
qw.eq(bo.getReservedWidth() != null, "mc.reserved_width", bo.getReservedWidth());
// 钢卷表面处理
qw.eq(bo.getCoilSurfaceTreatment() != null, "mc.coil_surface_treatment", bo.getCoilSurfaceTreatment());
// 调拨类型
qw.eq(StringUtils.isNotBlank(bo.getTransferType()), "mc.transfer_type", bo.getTransferType());
// 如果actualWarehouseId不为空则根据实际库区ID进行查询 如果为-1,则查询无库区的数据
if (bo.getActualWarehouseId() != null) {
if (bo.getActualWarehouseId() == -1) {
@@ -1311,6 +1313,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
WmsMaterialCoil newCoil = BeanUtil.toBean(bo, WmsMaterialCoil.class);
newCoil.setCoilId(null); // 清空ID让数据库自动生成新ID
newCoil.setDataType(1); // 设置为当前数据
newCoil.setTransferType(null);
newCoil.setQrcodeRecordId(oldCoil.getQrcodeRecordId()); // 继续使用原二维码
// 继承原记录的关键字段
@@ -1545,6 +1548,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
WmsMaterialCoil newCoil = BeanUtil.toBean(newCoilBo, WmsMaterialCoil.class);
newCoil.setCoilId(null);
newCoil.setDataType(1);
newCoil.setTransferType(null);
// 继承原钢卷的基本信息(强制继承,不能修改的字段)
newCoil.setEnterCoilNo(oldCoil.getEnterCoilNo());
newCoil.setSupplierCoilNo(oldCoil.getSupplierCoilNo()); // 保留厂家原料卷号
@@ -1668,6 +1672,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
WmsMaterialCoil newCoil = BeanUtil.toBean(bo, WmsMaterialCoil.class);
newCoil.setCoilId(null);
newCoil.setDataType(1);
newCoil.setTransferType(null);
// 从第一个参与合卷的原始钢卷获取基本信息
if (!bo.getNewCoils().isEmpty()) {
@@ -4217,6 +4222,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
WmsMaterialCoil childCoil = BeanUtil.toBean(childCoilBo, WmsMaterialCoil.class);
childCoil.setCoilId(null);
childCoil.setDataType(1); // 当前数据
childCoil.setTransferType(null);
childCoil.setEnterCoilNo(parentCoil.getEnterCoilNo());
childCoil.setSupplierCoilNo(parentCoil.getSupplierCoilNo());
childCoil.setExclusiveStatus(0); // 子卷不被锁定
@@ -4924,17 +4930,17 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
public List<WmsMaterialCoilVo> queryMismatchedItemCoils() {
// 用SQL子查询直接找出itemId和itemType不匹配的钢卷
List<WmsMaterialCoil> mismatchedCoils = baseMapper.selectMismatchedItemCoils();
if (mismatchedCoils == null || mismatchedCoils.isEmpty()) {
return new ArrayList<>();
}
// 批量填充关联信息
List<WmsMaterialCoilVo> voList = mismatchedCoils.stream()
.map(coil -> BeanUtil.toBean(coil, WmsMaterialCoilVo.class))
.collect(Collectors.toList());
fillRelatedObjectsBatch(voList);
return voList;
}