gaoluyang
2 天以前 feedd62ec46b9faada80505387526acf914cf4c5
yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/service/item/MdmItemServiceImpl.java
@@ -7,6 +7,7 @@
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.operatelog.core.util.OperateLogUtils;
import cn.iocoder.yudao.module.mdm.controller.admin.item.vo.MdmItemImportExcelVO;
import cn.iocoder.yudao.module.mdm.controller.admin.item.vo.MdmItemImportRespVO;
import cn.iocoder.yudao.module.mdm.controller.admin.item.vo.MdmItemPageReqVO;
@@ -26,6 +27,7 @@
import cn.iocoder.yudao.module.mes.api.item.dto.MesMdItemSyncReqDTO;
import cn.iocoder.yudao.module.mes.api.item.dto.MesMdItemTypeRespDTO;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.mzt.logapi.starter.annotation.LogRecord;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
@@ -39,6 +41,7 @@
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static cn.iocoder.yudao.module.mdm.enums.ErrorCodeConstants.*;
import static cn.iocoder.yudao.module.mdm.enums.LogRecordConstants.*;
/**
 * MDM 物料主数据 Service 实现类
@@ -431,6 +434,8 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    @LogRecord(type = MDM_ITEM_TYPE, subType = MDM_ITEM_IMPORT_SUB_TYPE, bizNo = "0",
            success = MDM_ITEM_IMPORT_SUCCESS)
    public MdmItemImportRespVO importItemList(List<MdmItemImportExcelVO> importList, Boolean isUpdateSupport) {
        if (CollUtil.isEmpty(importList)) {
            throw exception(MDM_ITEM_IMPORT_LIST_IS_EMPTY);
@@ -457,7 +462,9 @@
        for (MdmItemImportExcelVO importVO : importList) {
            // 2.1 基础校验
            if (StrUtil.isBlank(importVO.getCode()) || StrUtil.isBlank(importVO.getName())) {
                respVO.getFailureList().put(StrUtil.blankToDefault(importVO.getName(), importVO.getCode()), "物料编码和物料名称不能为空");
                String failKey = StrUtil.isNotBlank(importVO.getName()) ? importVO.getName()
                        : (StrUtil.isNotBlank(importVO.getCode()) ? importVO.getCode() : "(名称和编码为空的行)");
                respVO.getFailureList().put(failKey, "物料编码和物料名称不能为空");
                continue;
            }
            // 2.2 解析分类
@@ -465,7 +472,7 @@
            if (StrUtil.isNotBlank(importVO.getCategoryCode())) {
                categoryId = categoryCodeIdMap.get(importVO.getCategoryCode());
                if (categoryId == null) {
                    respVO.getFailureList().put(importVO.getName(), "物料分类编码不存在:" + importVO.getCategoryCode());
                    respVO.getFailureList().put(StrUtil.blankToDefault(importVO.getName(), importVO.getCode()), "物料分类编码不存在:" + importVO.getCategoryCode());
                    continue;
                }
            }
@@ -474,7 +481,7 @@
            if (StrUtil.isNotBlank(importVO.getUnitMeasureCode())) {
                unitMeasureId = unitCodeIdMap.get(importVO.getUnitMeasureCode());
                if (unitMeasureId == null) {
                    respVO.getFailureList().put(importVO.getName(), "计量单位编码不存在:" + importVO.getUnitMeasureCode());
                    respVO.getFailureList().put(StrUtil.blankToDefault(importVO.getName(), importVO.getCode()), "计量单位编码不存在:" + importVO.getUnitMeasureCode());
                    continue;
                }
            }
@@ -483,7 +490,7 @@
            if (StrUtil.isNotBlank(importVO.getUnitMeasureCode2())) {
                unitMeasureId2 = unitCodeIdMap.get(importVO.getUnitMeasureCode2());
                if (unitMeasureId2 == null) {
                    respVO.getFailureList().put(importVO.getName(), "辅单位1编码不存在:" + importVO.getUnitMeasureCode2());
                    respVO.getFailureList().put(StrUtil.blankToDefault(importVO.getName(), importVO.getCode()), "辅单位1编码不存在:" + importVO.getUnitMeasureCode2());
                    continue;
                }
            }
@@ -492,7 +499,7 @@
            if (StrUtil.isNotBlank(importVO.getUnitMeasureCode3())) {
                unitMeasureId3 = unitCodeIdMap.get(importVO.getUnitMeasureCode3());
                if (unitMeasureId3 == null) {
                    respVO.getFailureList().put(importVO.getName(), "辅单位2编码不存在:" + importVO.getUnitMeasureCode3());
                    respVO.getFailureList().put(StrUtil.blankToDefault(importVO.getName(), importVO.getCode()), "辅单位2编码不存在:" + importVO.getUnitMeasureCode3());
                    continue;
                }
            }
@@ -527,7 +534,7 @@
            try {
                if (existByCode != null) {
                    if (!Boolean.TRUE.equals(isUpdateSupport)) {
                        respVO.getFailureList().put(importVO.getName(), "物料编码已存在");
                        respVO.getFailureList().put(StrUtil.blankToDefault(importVO.getName(), importVO.getCode()), "物料编码已存在");
                        continue;
                    }
                    saveReqVO.setId(existByCode.getId());
@@ -542,9 +549,11 @@
                String reason = ex instanceof cn.iocoder.yudao.framework.common.exception.ServiceException
                        ? ((cn.iocoder.yudao.framework.common.exception.ServiceException) ex).getMessage()
                        : ex.getMessage();
                respVO.getFailureList().put(importVO.getName(), reason == null ? "导入失败" : reason);
                respVO.getFailureList().put(StrUtil.blankToDefault(importVO.getName(), importVO.getCode()), reason == null ? "导入失败" : reason);
            }
        }
        // 记录导入结果汇总,供 @LogRecord 的 success 文案引用
        OperateLogUtils.putImportSummary(respVO.getCreateList(), respVO.getUpdateList(), respVO.getFailureList());
        return respVO;
    }