zhangherong
2025-07-10 16cd6a3d63f3352c1a20abb5fc73f48a4204bc62
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java
@@ -22,8 +22,8 @@
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.system.entity.BaseFactory;
import org.jeecg.modules.system.entity.BaseFactoryUser;
import org.jeecg.modules.system.service.IBaseFactoryService;
import org.jeecg.modules.system.service.IBaseFactoryUserService;
import org.jeecg.modules.system.entity.SysParams;
import org.jeecg.modules.system.service.*;
import org.jeecg.modules.eam.constant.BusinessCodeConst;
import org.jeecg.modules.eam.constant.EamMaintenanceStandardDetailCategory;
import org.jeecg.modules.eam.constant.MaintenanceStandardStatusEnum;
@@ -45,8 +45,6 @@
import org.jeecg.modules.flowable.apithird.service.FlowCommonService;
import org.jeecg.modules.flowable.service.IFlowDefinitionService;
import org.jeecg.modules.flowable.service.IFlowTaskService;
import org.jeecg.modules.system.service.ISysBusinessCodeRuleService;
import org.jeecg.modules.system.service.ISysUserService;
import org.jeecg.modules.system.vo.UserSelector;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -97,6 +95,8 @@
    private IEamEquipmentExtendService eamEquipmentExtendService;
    @Autowired
    private ISysBusinessCodeRuleService businessCodeRuleService;
    @Autowired
    private ISysParamsService sysParamsService;
    // 常量定义
    private static final String REPAIR_TITLE = "维修人员保养内容";
@@ -127,9 +127,11 @@
            List<BaseFactoryUser> baseFactoryUserList=baseFactoryUserService.
                    list(new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId,sysUser.getId()));
            if(!CollectionUtils.isEmpty(baseFactoryUserList)){
                List<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toList());
                List<String> factoryCode= baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getFactoryCode).collect(Collectors.toList());
                Set<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toSet());
                Set<String> factoryCode= baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getOrgCode).collect(Collectors.toSet());
                queryWrapper.in("e.factory_org_code", factoryCode);
            } else {
                return page;
            }
        }
        if(eamMaintenanceStandard != null) {
@@ -596,6 +598,18 @@
                eamMaintenanceStandardDetailService.saveBatch(allDetails);
            }
            SysParams sysParams = sysParamsService.getSysPramBySettingKey("maintenance_import_type");
            if (sysParams != null) {
                if (sysParams.getSettingValue().equals("1")){
                    //触发保养流程
                    eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name());
                    eamMaintenanceStandardMapper.updateById(eamMaintenanceStandard);
                }
            }else {
                return Result.error("未找到保养流程导入相关配置,请联系管理员");
            }
            return Result.OK("点检表导入成功");
        } catch (Exception e) {
@@ -760,6 +774,7 @@
            // 创建项目详情
            EamMaintenanceStandardDetail detail = new EamMaintenanceStandardDetail();
            detail.setStandardId(standard.getId());
            detail.setItemCode(Integer.parseInt(getCellStringValue(row.getCell(0))));
            detail.setItemName(getCellStringValue(row.getCell(1)));
            detail.setItemCategory(itemCategory);
@@ -938,6 +953,7 @@
    /*导入点检文件Excel--------------------------结束*/
    /*导入二保三保文件Excel--------------------------开始*/
    /**
     * 统一保养规范导入入口
     * @param file 上传文件
@@ -957,7 +973,6 @@
            List<XWPFTable> tables = doc.getTables();
            EamMaintenanceStandard standard = null;
            boolean firstTableProcessed = false;
            List<EamMaintenanceStandardDetail> items = new ArrayList<>();
            String standardId = null;
@@ -994,8 +1009,7 @@
                        items.addAll(extractThirdMaintenanceItems(table, standardId, true));
                    }
                    firstTableProcessed = true;
                } else if (firstTableProcessed) { // 后续页面
                } else { // 后续页面
                    // 提取后续页面的保养项目
                    if ("SECOND".equals(type)) {
                        items.addAll(extractSecondMaintenanceItems(table, standardId, false));
@@ -1021,6 +1035,18 @@
            // 4. 保存项目
            eamMaintenanceStandardDetailService.saveBatch(items);
            SysParams sysParams = sysParamsService.getSysPramBySettingKey("maintenance_import_type");
            if (sysParams != null) {
                if (sysParams.getSettingValue().equals("1")) {
                    standard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name());
                    eamMaintenanceStandardMapper.updateById(standard);
                }
            }else {
                return Result.error("未找到保养流程导入相关配置,请联系管理员");
            }
            return Result.ok(fileName + ": 导入成功, 项目数: " + items.size());
        } catch (ImportException e) {
@@ -1043,15 +1069,17 @@
            if (!items.isEmpty()) {
                items.remove(0);
            }
            // 2. 为缺失部位的数据填充前一条的保养部位
            String lastPart = "";
            int i =1;
            for (EamMaintenanceStandardDetail item : items) {
                item.setItemCode(i);
                if (item.getItemPart() != null && !item.getItemPart().isEmpty()) {
                    lastPart = item.getItemPart();
                } else if (!lastPart.isEmpty()) {
                    item.setItemPart(lastPart);
                }
                i++;
            }
        }
    }
@@ -1183,7 +1211,7 @@
            } else if (cellContents.size() == 1) {
                // 单列模式:视为内容
                item.setItemName(cellContents.get(0));
            } else if (cellContents.isEmpty() && !isRowEmpty(row)) {
            } else if (!isRowEmpty(row)) {
                // 特殊处理:行非空但没有提取到内容(可能是复杂合并单元格)
                // 尝试提取整行文本作为内容
                StringBuilder content = new StringBuilder();