云
17 小时以前 ac2e2b5af3726ee64dc37c3ebf26989a0346f22a
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdItemServiceImpl.java
@@ -113,9 +113,9 @@
    @Transactional(rollbackFor = Exception.class)
    public void updateItem(MesMdItemSaveReqVO updateReqVO) {
        // 校验存在
        validateItemExists(updateReqVO.getId());
        MesMdItemDO existingItem = validateItemExists(updateReqVO.getId());
        // 校验数据
        validateItemSaveData(updateReqVO);
        validateItemSaveData(updateReqVO, existingItem);
        // 更新
        MesMdItemDO updateObj = BeanUtils.toBean(updateReqVO, MesMdItemDO.class);
@@ -134,10 +134,17 @@
    }
    private void validateItemSaveData(MesMdItemSaveReqVO reqVO) {
        validateItemSaveData(reqVO, null);
    }
    private void validateItemSaveData(MesMdItemSaveReqVO reqVO, MesMdItemDO existingItem) {
        // 校验物料编码的唯一性
        validateItemCodeUnique(reqVO.getId(), reqVO.getCode());
        // 校验物料名称的唯一性:MDM 主数据以编码为唯一标识,允许同名不同规格
        if (reqVO.getMdmItemId() == null) {
        // 校验物料名称的唯一性:MDM 主数据以编码为唯一标识,允许同名不同规格。
        // 更新时前端可能未回传 mdmItemId,需要以库中记录的来源为准,否则会误判为本地物料
        boolean mdmItem = reqVO.getMdmItemId() != null
                || (existingItem != null && existingItem.getMdmItemId() != null);
        if (!mdmItem) {
            validateItemNameUnique(reqVO.getId(), reqVO.getName());
        }
        // 校验物料分类存在