lyh
3 天以前 4d46a2bda9d7c7008d5542fcb1bdde4ffcb5fa09
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamMaintenanceStandardController.java
@@ -7,11 +7,13 @@
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.eam.constant.BusinessCodeConst;
import org.jeecg.modules.eam.constant.MaintenanceStandardStatusEnum;
@@ -47,8 +49,6 @@
    private IEamMaintenanceStandardService eamMaintenanceStandardService;
    @Autowired
    private ISysBusinessCodeRuleService businessCodeRuleService;
    @Autowired
    private IEamEquipmentService eamEquipmentService;
    /**
     * 流程启动,保存对应的数据
@@ -59,6 +59,11 @@
    @ApiOperation(value = "保养标准-流程启动保存对应的数据", notes = "保养标准-流程启动保存对应的数据")
    @GetMapping(value = "/saveEamMaintenanceStandardProcess")
    public Result<?> saveEamMaintenanceStandardProcess(String id) {
        // 校验领取权限
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        if (!BusinessCodeConst.PCR0002.equals(user.getPost())) {
            return Result.error("填报失败,没有填报权限!,需维修工提交");
        }
        return eamMaintenanceStandardService.saveEamMaintenanceStandardProcess(id);
    }
@@ -286,7 +291,7 @@
            for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
                MultipartFile file = entity.getValue();
                String fileName = file.getOriginalFilename();
                Result<?> importResult=eamMaintenanceStandardService.importPointInspectionExcel(file);
                Result<?> importResult=eamMaintenanceStandardService.importPointInspectionExcel(file,null);
                if (importResult.isSuccess()) {
                    successCount++;
                } else {
@@ -318,17 +323,49 @@
            // 统计导入结果
            int successCount = 0;
            int failureCount = 0;
            Result<?> importResult = new Result<>();
            // 用于收集所有未找到的设备编码
            List<String> allNotFoundCodes = new ArrayList<>();
            for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
                MultipartFile file = entity.getValue();
                String fileName = file.getOriginalFilename();
                Result<?> importResult=eamMaintenanceStandardService.importMaintenanceStandard(file, "SECOND");
                importResult = eamMaintenanceStandardService.importMaintenanceStandard(file, "SECOND", null);
                if (importResult.isSuccess()) {
                    // 检查是否包含部分成功信息
                    String message = importResult.getMessage();
                    if (message.contains("以下设备编码未找到:")) {
                        // 提取未找到的设备编码
                        String notFoundPart = message.substring(message.indexOf("以下设备编码未找到") + 9);
                        allNotFoundCodes.addAll(Arrays.asList(notFoundPart.split(", ")));
                        // 修改为部分成功消息
                        importResult.setMessage(message.substring(0, message.indexOf(";但")));
                    }
                    successCount++;
                } else {
                    results.put(fileName, importResult.getMessage());
                    failureCount++;
                }
            }
            // 如果有未找到的设备编码,添加到最终结果
            if (!allNotFoundCodes.isEmpty()) {
                String notFoundMsg = "以下设备编码未找到" + String.join(", ", allNotFoundCodes);
                if (successCount > 0) {
                    // 部分成功
                    return Result.ok("部分导入成功,成功文件数:" + successCount +
                            ",失败文件数:" + failureCount + ";" + notFoundMsg);
                } else {
                    // 全部失败
                    return Result.error("导入失败:" + notFoundMsg);
                }
            }
            if (successCount == 1) {
                return importResult;
            }
            // 构建最终响应
@@ -353,17 +390,50 @@
            // 统计导入结果
            int successCount = 0;
            int failureCount = 0;
            Result<?> importResult = new Result<>();
            // 用于收集所有未找到的设备编码
            List<String> allNotFoundCodes = new ArrayList<>();
            for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
                MultipartFile file = entity.getValue();
                String fileName = file.getOriginalFilename();
                Result<?> importResult= eamMaintenanceStandardService.importMaintenanceStandard(file, "THIRD");
                // 修正:三保导入应该使用"THIRD"类型
                importResult = eamMaintenanceStandardService.importMaintenanceStandard(file, "THIRD", null);
                if (importResult.isSuccess()) {
                    // 检查是否包含部分成功信息
                    String message = importResult.getMessage();
                    if (message.contains("以下设备编码未找到:")) {
                        // 提取未找到的设备编码
                        String notFoundPart = message.substring(message.indexOf("以下设备编码未找到") + 9);
                        allNotFoundCodes.addAll(Arrays.asList(notFoundPart.split(", ")));
                        // 修改为部分成功消息
                        importResult.setMessage(message.substring(0, message.indexOf(";但")));
                    }
                    successCount++;
                } else {
                    results.put(fileName, importResult.getMessage());
                    failureCount++;
                }
            }
            // 如果有未找到的设备编码,添加到最终结果
            if (!allNotFoundCodes.isEmpty()) {
                String notFoundMsg = "以下设备编码未找到" + String.join(", ", allNotFoundCodes);
                if (successCount > 0) {
                    // 部分成功
                    return Result.ok("部分导入成功,成功文件数:" + successCount +
                            ",失败文件数:" + failureCount + ";" + notFoundMsg);
                } else {
                    // 全部失败
                    return Result.error("导入失败:" + notFoundMsg);
                }
            }
            if (successCount == 1) {
                return importResult;
            }
            // 构建最终响应
@@ -375,6 +445,48 @@
        }
    }
    /**
     * 升版导入
     */
    @PostMapping(value = "/importUpgrade")
    public Result<?> importUpgrade(String id, MultipartFile file) {
        EamMaintenanceStandard eamMaintenanceStandard = eamMaintenanceStandardService.getById(id);
        if (eamMaintenanceStandard == null) {
            return Result.error("请选择需要升版的保养标准");
        } else {
            Result<?> importResult;
            switch (eamMaintenanceStandard.getMaintenanceCategory()) {
                case "POINT_INSPECTION":
                    // 点检升版导入
                    importResult = eamMaintenanceStandardService.importPointInspectionExcel(file, id);
                    break;
                case "SECOND_MAINTENANCE":
                    // 二保升版导入
                    importResult = eamMaintenanceStandardService.importMaintenanceStandard(file, "SECOND", id);
                    break;
                case "THIRD_MAINTENANCE":
                    // 三保升版导入
                    importResult = eamMaintenanceStandardService.importMaintenanceStandard(file, "THIRD", id);
                    break;
                default:
                    return Result.error("不支持的保养类型");
            }
            // 处理升版导入中的设备未找到情况
            if (importResult.isSuccess()) {
                String message = importResult.getMessage();
                if (message.contains("以下设备编码未找到:")) {
                    // 提取未找到的设备编码
                    String notFoundPart = message.substring(message.indexOf("以下设备编码未找到") + 9);
                    return Result.error("升版导入失败:" + notFoundPart);
                }
                return importResult;
            } else {
                return importResult;
            }
        }
    }
    private Result<?> getResult(Map<String, String> results, int fileCount, int successCount, int failureCount) {
        List<String> response = new ArrayList<>();
        response.add("总文件数:" + fileCount);