From b660fe452d3ca98454a0fcb7bcbe755bd659a88f Mon Sep 17 00:00:00 2001 From: YunaiV Date: Mon, 23 Mar 2026 09:58:07 +0800 Subject: [PATCH] ✨ feat(mes): 修改库存冻结标识字段名称为 'frozen' --- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialstock/vo/MesWmMaterialStockFreezeReqVO.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialstock/vo/MesWmMaterialStockRespVO.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/plan/vo/MesWmStockTakingPlanRespVO.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/plan/vo/MesWmStockTakingPlanSaveReqVO.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/vo/MesWmStockTakingTaskRespVO.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/vo/MesWmStockTakingTaskSaveReqVO.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/materialstock/MesWmMaterialStockDO.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/stocktaking/plan/MesWmStockTakingPlanDO.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/stocktaking/task/MesWmStockTakingTaskDO.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/warehouse/MesWmWarehouseAreaDO.java | 6 ++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/warehouse/MesWmWarehouseDO.java | 9 +++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/warehouse/MesWmWarehouseLocationDO.java | 5 +++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/materialstock/MesWmMaterialStockMapper.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/warehouse/MesWmWarehouseAreaMapper.java | 3 +-- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/warehouse/MesWmWarehouseLocationMapper.java | 5 +++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockServiceImpl.java | 4 ++-- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskServiceImpl.java | 8 ++++---- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transfer/MesWmTransferServiceImpl.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseAreaService.java | 8 ++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseAreaServiceImpl.java | 31 ++++++++++++++++++++++++++++++- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseLocationService.java | 8 ++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseLocationServiceImpl.java | 26 ++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseService.java | 8 ++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseServiceImpl.java | 20 ++++++++++++++++++++ 25 files changed, 144 insertions(+), 21 deletions(-) diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialstock/vo/MesWmMaterialStockFreezeReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialstock/vo/MesWmMaterialStockFreezeReqVO.java index 8b8b691..d48a0b6 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialstock/vo/MesWmMaterialStockFreezeReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialstock/vo/MesWmMaterialStockFreezeReqVO.java @@ -14,7 +14,7 @@ public class MesWmMaterialStockFreezeReqVO { @Schema(description = "是否冻结", requiredMode = Schema.RequiredMode.REQUIRED, example = "false") @NotNull(message = "冻结状态不能为空") - private Boolean frozenFlag; + private Boolean frozen; } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialstock/vo/MesWmMaterialStockRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialstock/vo/MesWmMaterialStockRespVO.java index d752eb1..366e64f 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialstock/vo/MesWmMaterialStockRespVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialstock/vo/MesWmMaterialStockRespVO.java @@ -84,7 +84,7 @@ public class MesWmMaterialStockRespVO { @Schema(description = "是否冻结", requiredMode = Schema.RequiredMode.REQUIRED, example = "false") @ExcelProperty("是否冻结") - private Boolean frozenFlag; + private Boolean frozen; @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("创建时间") diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/plan/vo/MesWmStockTakingPlanRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/plan/vo/MesWmStockTakingPlanRespVO.java index 32fed96..1c68417 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/plan/vo/MesWmStockTakingPlanRespVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/plan/vo/MesWmStockTakingPlanRespVO.java @@ -42,7 +42,7 @@ public class MesWmStockTakingPlanRespVO { @Schema(description = "是否冻结库存", requiredMode = Schema.RequiredMode.REQUIRED, example = "false") @ExcelProperty("是否冻结库存") - private Boolean frozenFlag; + private Boolean frozen; @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") @ExcelProperty("状态") diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/plan/vo/MesWmStockTakingPlanSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/plan/vo/MesWmStockTakingPlanSaveReqVO.java index 23976bc..5db85f8 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/plan/vo/MesWmStockTakingPlanSaveReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/plan/vo/MesWmStockTakingPlanSaveReqVO.java @@ -38,7 +38,7 @@ public class MesWmStockTakingPlanSaveReqVO { @Schema(description = "是否冻结库存", example = "false") @NotNull(message = "是否冻结库存不能为空") - private Boolean frozenFlag; + private Boolean frozen; @Schema(description = "备注", example = "备注") private String remark; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/vo/MesWmStockTakingTaskRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/vo/MesWmStockTakingTaskRespVO.java index 4ca792d..4e3115b 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/vo/MesWmStockTakingTaskRespVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/vo/MesWmStockTakingTaskRespVO.java @@ -56,7 +56,7 @@ public class MesWmStockTakingTaskRespVO { @Schema(description = "是否冻结库存", requiredMode = Schema.RequiredMode.REQUIRED, example = "false") @ExcelProperty("是否冻结库存") - private Boolean frozenFlag; + private Boolean frozen; @Schema(description = "开始时间") @ExcelProperty("开始时间") diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/vo/MesWmStockTakingTaskSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/vo/MesWmStockTakingTaskSaveReqVO.java index 08c125f..b0608dc 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/vo/MesWmStockTakingTaskSaveReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/vo/MesWmStockTakingTaskSaveReqVO.java @@ -49,7 +49,7 @@ public class MesWmStockTakingTaskSaveReqVO { @Schema(description = "是否冻结库存", example = "false") @NotNull(message = "是否冻结库存不能为空") - private Boolean frozenFlag; + private Boolean frozen; @Schema(description = "备注", example = "备注") private String remark; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/materialstock/MesWmMaterialStockDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/materialstock/MesWmMaterialStockDO.java index 7974b68..5028841 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/materialstock/MesWmMaterialStockDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/materialstock/MesWmMaterialStockDO.java @@ -104,6 +104,6 @@ public class MesWmMaterialStockDO extends BaseDO { /** * 是否冻结 */ - private Boolean frozenFlag; + private Boolean frozen; } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/stocktaking/plan/MesWmStockTakingPlanDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/stocktaking/plan/MesWmStockTakingPlanDO.java index acf8b39..0f2a219 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/stocktaking/plan/MesWmStockTakingPlanDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/stocktaking/plan/MesWmStockTakingPlanDO.java @@ -63,7 +63,7 @@ public class MesWmStockTakingPlanDO extends BaseDO { /** * 是否冻结库存 */ - private Boolean frozenFlag; + private Boolean frozen; /** * 状态 diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/stocktaking/task/MesWmStockTakingTaskDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/stocktaking/task/MesWmStockTakingTaskDO.java index 4d98659..7c42087 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/stocktaking/task/MesWmStockTakingTaskDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/stocktaking/task/MesWmStockTakingTaskDO.java @@ -71,7 +71,7 @@ public class MesWmStockTakingTaskDO extends BaseDO { /** * 是否冻结库存 */ - private Boolean frozenFlag; + private Boolean frozen; /** * 开始时间 diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/warehouse/MesWmWarehouseAreaDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/warehouse/MesWmWarehouseAreaDO.java index fc13d71..ea9a3ab 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/warehouse/MesWmWarehouseAreaDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/warehouse/MesWmWarehouseAreaDO.java @@ -22,6 +22,11 @@ import java.math.BigDecimal; public class MesWmWarehouseAreaDO extends BaseDO { /** + * 虚拟线边库位编码(配合 {@link MesWmWarehouseDO#WIP_VIRTUAL_WAREHOUSE} 使用) + */ + public static final String WIP_VIRTUAL_AREA = "WIP_VIRTUAL_AREA"; + + /** * 编号 */ @TableId @@ -66,6 +71,7 @@ public class MesWmWarehouseAreaDO extends BaseDO { * 枚举 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum} */ private Integer status; + /** * 是否冻结 */ diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/warehouse/MesWmWarehouseDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/warehouse/MesWmWarehouseDO.java index b642ac8..0c8a9b2 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/warehouse/MesWmWarehouseDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/warehouse/MesWmWarehouseDO.java @@ -22,6 +22,15 @@ import java.math.BigDecimal; public class MesWmWarehouseDO extends BaseDO { /** + * 虚拟线边库编码 + * + * 业务背景:在线边库模式下,物料从总仓库发放到车间,但未被工序消耗前,这部分物料属于在制品(WIP)。 + * 为了在系统中实现“发料与实际消耗”的解耦,并在不增加物理库位管理复杂度的前提下防止生产报工被负库存阻塞, + * 系统默认提供一个虚拟的线边库统管这些在制品。 + */ + public static final String WIP_VIRTUAL_WAREHOUSE = "WIP_VIRTUAL_WAREHOUSE"; + + /** * 编号 */ @TableId diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/warehouse/MesWmWarehouseLocationDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/warehouse/MesWmWarehouseLocationDO.java index edc3058..bf062ce 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/warehouse/MesWmWarehouseLocationDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/warehouse/MesWmWarehouseLocationDO.java @@ -22,6 +22,11 @@ import java.math.BigDecimal; public class MesWmWarehouseLocationDO extends BaseDO { /** + * 虚拟线边库区编码(配合 {@link MesWmWarehouseDO#WIP_VIRTUAL_WAREHOUSE} 使用) + */ + public static final String WIP_VIRTUAL_LOCATION = "WIP_VIRTUAL_LOCATION"; + + /** * 编号 */ @TableId diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/materialstock/MesWmMaterialStockMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/materialstock/MesWmMaterialStockMapper.java index 5794d44..f02f9d2 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/materialstock/MesWmMaterialStockMapper.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/materialstock/MesWmMaterialStockMapper.java @@ -27,7 +27,7 @@ public interface MesWmMaterialStockMapper extends BaseMapperX() - .eq(MesWmWarehouseAreaDO::getLocationId, locationId) .eq(MesWmWarehouseAreaDO::getCode, code)); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/warehouse/MesWmWarehouseLocationMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/warehouse/MesWmWarehouseLocationMapper.java index 489c1d9..125bf59 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/warehouse/MesWmWarehouseLocationMapper.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/warehouse/MesWmWarehouseLocationMapper.java @@ -30,6 +30,11 @@ public interface MesWmWarehouseLocationMapper extends BaseMapperX() + .eq(MesWmWarehouseLocationDO::getCode, code)); + } + default MesWmWarehouseLocationDO selectByName(Long warehouseId, String name) { return selectOne(new LambdaQueryWrapperX() .eq(MesWmWarehouseLocationDO::getWarehouseId, warehouseId) diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockServiceImpl.java index 3a5589f..6bfe925 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockServiceImpl.java @@ -95,7 +95,7 @@ public class MesWmMaterialStockServiceImpl implements MesWmMaterialStockService // 更新冻结状态 materialStockMapper.updateById(new MesWmMaterialStockDO() - .setId(updateReqVO.getId()).setFrozenFlag(updateReqVO.getFrozenFlag())); + .setId(updateReqVO.getId()).setFrozen(updateReqVO.getFrozen())); } @Override @@ -144,7 +144,7 @@ public class MesWmMaterialStockServiceImpl implements MesWmMaterialStockService .batchId(batchId).vendorId(vendorId) .quantity(BigDecimal.ZERO) // 初始数量为 0,由 updateMaterialStockQuantity 更新 .receiptTime(receiptTime != null ? receiptTime : LocalDateTime.now()) - .frozenFlag(false) + .frozen(false) .build(); materialStockMapper.insert(newStock); return newStock; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskServiceImpl.java index 8ba847b..9de738d 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskServiceImpl.java @@ -129,7 +129,7 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ // 3. 根据冻结标识,对物资进行冻结 // TODO @芋艿:后续跟进下! - if (Boolean.TRUE.equals(task.getFrozenFlag())) { + if (Boolean.TRUE.equals(task.getFrozen())) { for (MesWmStockTakingTaskLineDO line : lines) { if (line.getMaterialStockId() != null) { updateMaterialStockFrozen(line.getMaterialStockId(), true); @@ -150,7 +150,7 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ // 3. 解冻库存 // TODO @芋艿:后续跟进下! - if (Boolean.TRUE.equals(task.getFrozenFlag())) { + if (Boolean.TRUE.equals(task.getFrozen())) { List lines = stockTakingTaskLineService.getStockTakingTaskLineListByTaskId(id); unfreezeStockTakingTaskStocks(lines); } @@ -166,7 +166,7 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ } task.setStatus(MesWmStockTakingTaskStatusEnum.CANCELED.getStatus()); stockTakingTaskMapper.updateById(task); - if (Boolean.TRUE.equals(task.getFrozenFlag())) { + if (Boolean.TRUE.equals(task.getFrozen())) { unfreezeStockTakingTaskStocks(stockTakingTaskLineService.getStockTakingTaskLineListByTaskId(id)); } } @@ -211,7 +211,7 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ private void updateMaterialStockFrozen(Long materialStockId, boolean frozen) { MesWmMaterialStockFreezeReqVO reqVO = new MesWmMaterialStockFreezeReqVO(); reqVO.setId(materialStockId); - reqVO.setFrozenFlag(frozen); + reqVO.setFrozen(frozen); materialStockService.updateMaterialStockFrozen(reqVO); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java index 5cab228..0579871 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java @@ -166,7 +166,7 @@ public class MesWmTransactionServiceImpl implements MesWmTransactionService { } // 2. 检查库存记录冻结 - if (Boolean.TRUE.equals(materialStock.getFrozenFlag())) { + if (Boolean.TRUE.equals(materialStock.getFrozen())) { throw exception(WM_TRANSACTION_STOCK_FROZEN, warehouse.getName(), location.getName(), area.getName()); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transfer/MesWmTransferServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transfer/MesWmTransferServiceImpl.java index b52244b..fae427d 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transfer/MesWmTransferServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transfer/MesWmTransferServiceImpl.java @@ -316,7 +316,7 @@ public class MesWmTransferServiceImpl implements MesWmTransferService { } MesWmMaterialStockFreezeReqVO freezeReqVO = new MesWmMaterialStockFreezeReqVO(); freezeReqVO.setId(line.getMaterialStockId()); - freezeReqVO.setFrozenFlag(frozen); + freezeReqVO.setFrozen(frozen); materialStockService.updateMaterialStockFrozen(freezeReqVO); } } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseAreaService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseAreaService.java index e74748d..f07ff31 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseAreaService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseAreaService.java @@ -100,4 +100,12 @@ public interface MesWmWarehouseAreaService { */ void validateWarehouseAreaExists(Long warehouseId, Long locationId, Long areaId); + /** + * 按编码获得库位(如果是虚拟线边库位编码且不存在,会自动插入) + * + * @param code 编码 + * @return 库位 + */ + MesWmWarehouseAreaDO getWarehouseAreaByCode(String code); + } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseAreaServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseAreaServiceImpl.java index acaeb34..2535541 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseAreaServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseAreaServiceImpl.java @@ -1,7 +1,9 @@ package cn.iocoder.yudao.module.mes.service.wm.warehouse; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjUtil; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mes.controller.admin.wm.warehouse.vo.area.MesWmWarehouseAreaPageReqVO; @@ -109,7 +111,7 @@ public class MesWmWarehouseAreaServiceImpl implements MesWmWarehouseAreaService } private void validateWarehouseAreaCodeUnique(Long id, Long locationId, String code) { - MesWmWarehouseAreaDO area = areaMapper.selectByCode(locationId, code); + MesWmWarehouseAreaDO area = areaMapper.selectByCode(code); if (area == null) { return; } @@ -180,4 +182,31 @@ public class MesWmWarehouseAreaServiceImpl implements MesWmWarehouseAreaService } } + @Override + public MesWmWarehouseAreaDO getWarehouseAreaByCode(String code) { + // 1. 查询库位,存在则直接返回 + MesWmWarehouseAreaDO area = areaMapper.selectByCode(code); + if (area != null) { + return area; + } + + // 2. 如果是虚拟线边库位编码,则自动初始化 + if (MesWmWarehouseAreaDO.WIP_VIRTUAL_AREA.equals(code)) { + // 2.1 先确保虚拟库区存在(getWarehouseLocationByCode 会级联创建仓库 + 库区) + MesWmWarehouseLocationDO location = locationService.getWarehouseLocationByCode( + MesWmWarehouseLocationDO.WIP_VIRTUAL_LOCATION); + Assert.notNull(location, "虚拟库区必须存在"); + // 2.2 自动初始化 + MesWmWarehouseAreaDO newArea = MesWmWarehouseAreaDO.builder() + .locationId(location.getId()).code(code).name("虚拟线边库位") + .status(CommonStatusEnum.ENABLE.getStatus()).frozen(false) + .allowItemMixing(true).allowBatchMixing(true) + .remark("系统自动初始化的虚拟线边库位") + .build(); + areaMapper.insert(newArea); + return newArea; + } + return null; + } + } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseLocationService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseLocationService.java index fc8d85f..704d8a9 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseLocationService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseLocationService.java @@ -91,4 +91,12 @@ public interface MesWmWarehouseLocationService { */ Long getWarehouseLocationCountByWarehouseId(Long warehouseId); + /** + * 按编码获得库区(如果是虚拟线边库区编码且不存在,会自动插入) + * + * @param code 编码 + * @return 库区 + */ + MesWmWarehouseLocationDO getWarehouseLocationByCode(String code); + } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseLocationServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseLocationServiceImpl.java index bda6e3d..90479d6 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseLocationServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseLocationServiceImpl.java @@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mes.controller.admin.wm.warehouse.vo.location.MesWmWarehouseLocationPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.warehouse.vo.location.MesWmWarehouseLocationSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; import cn.iocoder.yudao.module.mes.dal.mysql.wm.warehouse.MesWmWarehouseLocationMapper; import cn.iocoder.yudao.module.mes.enums.wm.BarcodeBizTypeEnum; import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService; @@ -160,4 +161,29 @@ public class MesWmWarehouseLocationServiceImpl implements MesWmWarehouseLocation return locationMapper.selectCountByWarehouseId(warehouseId); } + @Override + public MesWmWarehouseLocationDO getWarehouseLocationByCode(String code) { + // 1. 查询库区,存在则直接返回 + MesWmWarehouseLocationDO location = locationMapper.selectByCode(code); + if (location != null) { + return location; + } + + // 2. 如果是虚拟线边库区编码,则自动初始化 + if (MesWmWarehouseLocationDO.WIP_VIRTUAL_LOCATION.equals(code)) { + // 2.1 先确保虚拟仓库存在(getWarehouseByCode 会级联创建仓库) + MesWmWarehouseDO warehouse = warehouseService.getWarehouseByCode(MesWmWarehouseDO.WIP_VIRTUAL_WAREHOUSE); + cn.hutool.core.lang.Assert.notNull(warehouse, "虚拟仓库必须存在"); + // 2.2 自动初始化 + MesWmWarehouseLocationDO newLocation = MesWmWarehouseLocationDO.builder() + .warehouseId(warehouse.getId()).code(code).name("虚拟线边库区") + .areaStatus(cn.iocoder.yudao.framework.common.enums.CommonStatusEnum.ENABLE.getStatus()) + .frozen(false).remark("系统自动初始化的虚拟线边库区") + .build(); + locationMapper.insert(newLocation); + return newLocation; + } + return null; + } + } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseService.java index dfc35e2..16d8575 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseService.java @@ -82,4 +82,12 @@ public interface MesWmWarehouseService { return convertMap(getWarehouseList(ids), MesWmWarehouseDO::getId); } + /** + * 按编码获得仓库(如果是虚拟线边库编码且不存在,会自动插入) + * + * @param code 编码 + * @return 仓库 + */ + MesWmWarehouseDO getWarehouseByCode(String code); + } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseServiceImpl.java index 7025570..5872664 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/warehouse/MesWmWarehouseServiceImpl.java @@ -148,4 +148,24 @@ public class MesWmWarehouseServiceImpl implements MesWmWarehouseService { return warehouseMapper.selectListByIds(ids); } + @Override + public MesWmWarehouseDO getWarehouseByCode(String code) { + // 1. 查询仓库,存在则直接返回 + MesWmWarehouseDO warehouse = warehouseMapper.selectByCode(code); + if (warehouse != null) { + return warehouse; + } + + // 2. 如果是虚拟线边库编码,则自动初始化 + if (MesWmWarehouseDO.WIP_VIRTUAL_WAREHOUSE.equals(code)) { + MesWmWarehouseDO newWarehouse = MesWmWarehouseDO.builder() + .code(code).name("虚拟线边仓库").frozen(false) + .remark("系统自动初始化的虚拟线边仓库(用于生产报工与在制品管理解耦)") + .build(); + warehouseMapper.insert(newWarehouse); + return newWarehouse; + } + return null; + } + } -- libgit2 0.21.4