gaoluyang
8 天以前 7bd10d34e8a8dc2437ec8551eb511e37634d7306
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscreceipt/MesWmMiscReceiptLineServiceImpl.java
@@ -5,9 +5,11 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.miscreceipt.vo.line.MesWmMiscReceiptLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.miscreceipt.vo.line.MesWmMiscReceiptLineSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.miscreceipt.MesWmMiscReceiptLineDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.miscreceipt.MesWmMiscReceiptLineMapper;
import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
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 MesMdmItemService mdmItemService;
    @Resource
    private MesWmWarehouseAreaService warehouseAreaService;
    @Resource
    private MesWmWarehouseDefaultService warehouseDefaultService;
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -62,6 +66,8 @@
        // 1. 校验
        MesWmMiscReceiptLineDO line = validateMiscReceiptLineExists(updateReqVO.getId());
        updateReqVO.setReceiptId(line.getReceiptId());
        // 未指定库区/库位时,落到仓库默认库区/库位(客户未启用库区/库位管理)
        fillDefaultLocationAndArea(updateReqVO);
        // 2. 更新行
        MesWmMiscReceiptLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmMiscReceiptLineDO.class);
@@ -126,9 +132,24 @@
        miscReceiptService.validateMiscReceiptEditable(reqVO.getReceiptId());
        // 校验物料存在
        mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
        // 未指定库区/库位时,落到仓库默认库区/库位(客户未启用库区/库位管理)
        fillDefaultLocationAndArea(reqVO);
        // 校验仓库层级关系(仓库 - 库位 - 库区)
        warehouseAreaService.validateWarehouseAreaExists(reqVO.getWarehouseId(),
                reqVO.getLocationId(), reqVO.getAreaId());
    }
    /**
     * 未指定库区/库位时,落到仓库默认库区/库位
     */
    private void fillDefaultLocationAndArea(MesWmMiscReceiptLineSaveReqVO reqVO) {
        if (reqVO.getWarehouseId() == null
                || (reqVO.getLocationId() != null && reqVO.getAreaId() != null)) {
            return;
        }
        MesWmWarehouseAreaDO defaultArea = warehouseDefaultService.getOrCreateDefaultArea(reqVO.getWarehouseId());
        reqVO.setLocationId(defaultArea.getLocationId());
        reqVO.setAreaId(defaultArea.getId());
    }
}