gaoluyang
2026-11-02 7bd10d34e8a8dc2437ec8551eb511e37634d7306
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transfer/MesWmTransferDetailServiceImpl.java
@@ -6,8 +6,10 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.transfer.vo.detail.MesWmTransferDetailSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.transfer.MesWmTransferDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.transfer.MesWmTransferLineDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.transfer.MesWmTransferDetailMapper;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseDefaultService;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@@ -39,6 +41,8 @@
    private MesWmTransferLineService transferLineService;
    @Resource
    private MesWmWarehouseAreaService warehouseAreaService;
    @Resource
    private MesWmWarehouseDefaultService warehouseDefaultService;
    @Override
    public Long createTransferDetail(MesWmTransferDetailSaveReqVO createReqVO) {
@@ -117,6 +121,14 @@
    private void validateDetailSaveData(MesWmTransferDetailSaveReqVO reqVO, Long excludeDetailId) {
        // 校验父数据存在
        MesWmTransferLineDO line = transferLineService.validateTransferLineExists(reqVO.getLineId());
        // 未指定移入库区/库位时,落到移入仓库默认库区/库位(客户未启用库区/库位管理)
        if (reqVO.getToWarehouseId() != null
                && (reqVO.getToLocationId() == null || reqVO.getToAreaId() == null)) {
            MesWmWarehouseAreaDO defaultArea =
                    warehouseDefaultService.getOrCreateDefaultArea(reqVO.getToWarehouseId());
            reqVO.setToLocationId(defaultArea.getLocationId());
            reqVO.setToAreaId(defaultArea.getId());
        }
        // 校验仓库、库区、库位的关联关系
        warehouseAreaService.validateWarehouseAreaExists(
                reqVO.getToWarehouseId(), reqVO.getToLocationId(), reqVO.getToAreaId());