lyh
3 天以前 fd479eeb7dae6ec6b8b83d18e07aa163e8357eff
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java
@@ -23,6 +23,7 @@
import org.jeecg.modules.eam.constant.BusinessCodeConst;
import org.jeecg.modules.eam.constant.EamMaintenanceStandardDetailCategory;
import org.jeecg.modules.eam.constant.MaintenanceStandardStatusEnum;
import org.jeecg.modules.eam.constant.SecondMaintenanceStatusEnum;
import org.jeecg.modules.eam.entity.EamEquipment;
import org.jeecg.modules.eam.entity.EamEquipmentExtend;
import org.jeecg.modules.eam.entity.EamMaintenanceStandard;
@@ -286,6 +287,7 @@
        queryWrapper.eq(EamMaintenanceStandard::getMaintenanceCategory, maintenanceCategory);
        queryWrapper.eq(EamMaintenanceStandard::getDelFlag, CommonConstant.DEL_FLAG_0);
        queryWrapper.ne(EamMaintenanceStandard::getStandardStatus, standardStatus);
        queryWrapper.ne(EamMaintenanceStandard::getStandardStatus,MaintenanceStandardStatusEnum.START.name());
        queryWrapper.orderByDesc(EamMaintenanceStandard::getStandardVersion);
        List<EamMaintenanceStandard> list = eamMaintenanceStandardMapper.selectList(queryWrapper);
@@ -323,6 +325,16 @@
        return eamMaintenanceStandardMapper.selectList(queryWrapper);
    }
    @Override
    public EamMaintenanceStandard queryByEquipmentIdAndCategory(String equipmentId, String maintenanceCategory) {
        LambdaQueryWrapper<EamMaintenanceStandard> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(EamMaintenanceStandard::getDelFlag, CommonConstant.DEL_FLAG_0);
        queryWrapper.eq(EamMaintenanceStandard::getMaintenanceCategory, maintenanceCategory);
        queryWrapper.eq(EamMaintenanceStandard::getStandardStatus, MaintenanceStandardStatusEnum.START.name());
        queryWrapper.eq(EamMaintenanceStandard::getEquipmentId, equipmentId);
        return eamMaintenanceStandardMapper.selectOne(queryWrapper);
    }
    /*流程业务代码--------------------------开始*/
@@ -347,6 +359,16 @@
        variables.put("organization", "保养规范启动流程");
        variables.put("comment", "保养规范启动流程");
        variables.put("proofreading", true);
        EamEquipment eamEquipment = eamEquipmentService.getById(maintenanceStandard.getEquipmentId());
        List<UserSelector> userSelectorList = sysUserService.selectOperatorList(eamEquipment.getEquipmentCode(), eamEquipment.getFactoryOrgCode(), BusinessCodeConst.PCR0008);
        if (!CollectionUtils.isEmpty(userSelectorList)) {
            List<String> usernameList = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList());
            if (CollectionUtils.isNotEmpty(usernameList)) {
                variables.put("NextAssignee", usernameList);
            }else {
                throw new JeecgBootException("设备未存在维修室主任,无法进入下级审批!");
            }
        }
        Result result = flowDefinitionService.startProcessInstanceByKey("eam_maintenance_standard", variables);
        if (!result.isSuccess()) {
            super.removeById(maintenanceStandard.getId());
@@ -363,14 +385,6 @@
            if (businessList.isEmpty()) {
                return Result.error("流程记录不存在");
            }
            FlowMyBusiness flowMyBusiness = businessList.get(0);
            EamEquipment eamEquipment = eamEquipmentService.getById(maintenanceStandard.getEquipmentId());
            List<UserSelector> userSelectorList = sysUserService.selectOperatorList(eamEquipment.getEquipmentCode(), eamEquipment.getFactoryOrgCode(), BusinessCodeConst.PCR0008);
            if (!CollectionUtils.isEmpty(userSelectorList)) {
                List<String> usernameList = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList());
                flowMyBusiness.setTodoUsers(JSON.toJSONString(usernameList));
                flowMyBusinessService.updateById(flowMyBusiness);
            }
        }
        return result;
    }
@@ -384,140 +398,149 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result<?> auditEamMaintenanceStandard(EamMaintenanceStandardVo eamMaintenanceStandardVo) {
        try {
            // 参数校验
            if (StrUtil.isEmpty(eamMaintenanceStandardVo.getTaskId()) || StrUtil.isEmpty(eamMaintenanceStandardVo.getDataId())) {
                return Result.error("参数错误");
            }
            LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
            String userId = user.getId();
            eamMaintenanceStandardVo.setAssignee(user.getUsername());
            if (StrUtil.isEmpty(userId)) {
                return Result.error("未找到对应用户");
            }
        EamMaintenanceStandard eamMaintenanceStandard = this.getById(eamMaintenanceStandardVo.getDataId());
        if (eamMaintenanceStandard == null) {
            return Result.error("未找到对应保养标准");
        }
        // 获取当前登录用户
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        if (user == null || StrUtil.isBlank(user.getId())) {
            throw new JeecgBootException("未获取到登录用户,请重新登录后再试!");
        }
        eamMaintenanceStandardVo.setAssignee(user.getUsername());
        // 获取流程业务记录
        FlowMyBusiness flowMyBusiness = flowMyBusinessService.getFlowMyBusiness(eamMaintenanceStandardVo.getInstanceId(), eamMaintenanceStandardVo.getTaskId());
        if (flowMyBusiness == null) {
            throw new JeecgBootException("流程实例不存在,请刷新后重试!");
        }
            // 数据查询
            EamMaintenanceStandard eamMaintenanceStandard = this.getById(eamMaintenanceStandardVo.getDataId());
            if (eamMaintenanceStandard == null) {
                return Result.error("未找到对应保养标准");
            }
        boolean userAuthorized = isUserAuthorized(flowMyBusiness, user);
        if (!userAuthorized) {
            throw new JeecgBootException("用户无权操作此任务,请刷新后重试!");
        }
        // 认领任务
        if (!claimTask(flowMyBusiness.getTaskId(), user)) {
            throw new JeecgBootException("任务不存在、已完成或已被他人认领!");
        }
            // 2. 查询流程业务记录(处理空结果)
            List<FlowMyBusiness> businessList = flowMyBusinessService.list(
                    new QueryWrapper<FlowMyBusiness>()
                            .eq("process_instance_id", eamMaintenanceStandardVo.getInstanceId())
            );
            if (businessList.isEmpty()) {
                return Result.error("流程记录不存在");
            }
            FlowMyBusiness flowMyBusiness = businessList.get(0);
        EamEquipment eamEquipment = eamEquipmentService.getById(eamMaintenanceStandard.getEquipmentId());
        if (eamEquipment == null) {
            throw new JeecgBootException("设备不存在,请检查!");
        }
            // 3. 校验用户是否为候选处理人
            List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class);
            if (todoUsers == null || !todoUsers.contains(user.getUsername())) {
                return Result.error("用户无权操作此任务");
            }
            // 4. 认领任务(处理已被认领的情况)
            String taskId = flowMyBusiness.getTaskId();
            Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
            if (task == null) {
                return Result.error("任务不存在或已完成");
            }
            if (task.getAssignee() != null && !task.getAssignee().equals(user.getUsername())) {
                return Result.error("任务已被他人认领");
            }
            taskService.claim(taskId, user.getUsername());
            // 设置流程变量
            Map<String, Object> values = setProcessVariables(eamMaintenanceStandard, userId, eamMaintenanceStandardVo);
            eamMaintenanceStandardVo.setValues(values);
            eamMaintenanceStandardVo.setComment(values.get("comment").toString());
            // 完成流程任务
            Result result = flowTaskService.complete(eamMaintenanceStandardVo);
            if (result.isSuccess()) {
                if (eamMaintenanceStandardVo.getRepairManagerApproveResult() != null) {
                    if ("2".equals(eamMaintenanceStandard.getRepairManagerApproveResult())) {
                        eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.REJECTED.name());
        MaintenanceStandardStatusEnum status = MaintenanceStandardStatusEnum.getInstance(eamMaintenanceStandard.getStandardStatus());
        if (status == null) {
            return null;
        }
        //流程变量
        Map<String, Object> values = new HashMap<>();
        List<String> userApprovalList;
        List<UserSelector> userSelectors;
        switch (status){
            case WAIT_REPAIR_DIRECTOR:
                //维修主任审核
                userSelectors = sysUserService.selectOperatorList(eamEquipment.getEquipmentCode(), eamEquipment.getFactoryOrgCode(), BusinessCodeConst.PCR0009);
                if (CollectionUtils.isEmpty(userSelectors)) {
                    throw new JeecgBootException("设备未存在生产设备技术主管,无法进入下级审批!");
                }else {
                    userApprovalList= userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
                    values.put("dataId", eamMaintenanceStandard.getId());
                    values.put("repairManagerApproveResult", eamMaintenanceStandardVo.getRepairManagerApproveResult());
                    if (StrUtil.isEmpty(eamMaintenanceStandardVo.getRepairManagerApproveComment())){
                        eamMaintenanceStandardVo.setRepairManagerApproveComment("");
                    }
                    if (eamMaintenanceStandardVo.getRepairManagerApproveResult().equals("1")) {
                        List<FlowMyBusiness> newbusinessList = flowMyBusinessService.list(
                                new QueryWrapper<FlowMyBusiness>()
                                        .eq("process_instance_id", eamMaintenanceStandardVo.getInstanceId()));
                        FlowMyBusiness newflowMyBusiness = newbusinessList.get(0);
                    values.put("organization", eamMaintenanceStandardVo.getRepairManagerApproveComment());
                    values.put("comment", eamMaintenanceStandardVo.getRepairManagerApproveComment());
                    eamMaintenanceStandardVo.setComment(eamMaintenanceStandardVo.getRepairManagerApproveComment());
                    if (eamMaintenanceStandardVo.getRepairManagerApproveResult().equals("2")){
                        eamMaintenanceStandard.setStandardStatus(SecondMaintenanceStatusEnum.ABOLISH.name());
                    }else {
                        values.put("NextAssignee", userApprovalList);
                        eamMaintenanceStandard.setRepairManager(user.getUsername());
                        eamMaintenanceStandard.setRepairManagerApproveResult(eamMaintenanceStandardVo.getRepairManagerApproveResult());
                        eamMaintenanceStandard.setRepairManagerApproveTime(new Date());
                        eamMaintenanceStandard.setRepairManagerApproveComment(eamMaintenanceStandardVo.getComment());
                        eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_TECHNICAL_DIRECTOR.name());
                        //获取flow的流程实例id,设置下一步的处理人员
                        EamMaintenanceStandard maintenanceStandard = this.getById(eamMaintenanceStandardVo.getDataId());
                        EamEquipment eamEquipment = eamEquipmentService.getById(maintenanceStandard.getEquipmentId());
                        List<UserSelector> userSelectorList = sysUserService.selectOperatorList(eamEquipment.getEquipmentCode(), eamEquipment.getFactoryOrgCode(), BusinessCodeConst.PCR0009);
                        if (!CollectionUtils.isEmpty(userSelectorList)) {
                            List<String> usernameList = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList());
                            newflowMyBusiness.setTodoUsers(JSON.toJSONString(usernameList));
                            flowMyBusinessService.updateById(newflowMyBusiness);
                        }else {
                            throw new JeecgBootException("设备未存在管理员,无法进入下级审批!");
                        }
                    } else {
                        eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name());
                    }
                    eamMaintenanceStandard.setRepairManager(user.getUsername());
                    eamMaintenanceStandard.setRepairManagerApproveResult(eamMaintenanceStandardVo.getRepairManagerApproveResult());
                    eamMaintenanceStandard.setRepairManagerApproveTime(new Date());
                    eamMaintenanceStandard.setRepairManagerApproveComment(eamMaintenanceStandardVo.getComment());
                }
                if (eamMaintenanceStandardVo.getTechnicalManagerApproveResult() != null) {
                    if ("2".equals(eamMaintenanceStandard.getTechnicalManagerApproveResult())) {
                        eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.REJECTED.name());
                break;
            case WAIT_TECHNICAL_DIRECTOR:
                //待技术主管审批
                if (StrUtil.isEmpty(eamMaintenanceStandardVo.getTechnicalManagerApproveComment())){
                    eamMaintenanceStandardVo.setTechnicalManagerApproveComment("");
                }
                values.put("dataId", eamMaintenanceStandard.getId());
                values.put("organization", eamMaintenanceStandardVo.getTechnicalManagerApproveComment());
                values.put("comment", eamMaintenanceStandardVo.getTechnicalManagerApproveComment());
                values.put("technicalManagerApproveResult", eamMaintenanceStandardVo.getTechnicalManagerApproveResult());
                eamMaintenanceStandardVo.setComment(eamMaintenanceStandardVo.getTechnicalManagerApproveComment());
                if (eamMaintenanceStandardVo.getTechnicalManagerApproveResult().equals("2")){
                    eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_REPAIR_DIRECTOR.name());
                    userSelectors = sysUserService.selectOperatorList(eamEquipment.getEquipmentCode(), eamEquipment.getFactoryOrgCode(), BusinessCodeConst.PCR0008);
                    if (CollectionUtil.isEmpty(userSelectors)) {
                        throw new JeecgBootException("设备未存在维修室主任,无法进入驳回审批!");
                    }else{
                        userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
                        values.put("NextAssignee", userApprovalList);
                    }
                    if (eamMaintenanceStandardVo.getTechnicalManagerApproveResult().equals("1")) {
                        eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.START.name());
                        //判断是否进行升版,通过设备编号、保养分类、状态进行筛选
                        EamMaintenanceStandard maintenanceStandard = this.getById(eamMaintenanceStandardVo.getDataId());
                        QueryWrapper<EamMaintenanceStandard> queryWrapper = new QueryWrapper<>();
                        queryWrapper.eq("equipment_id", maintenanceStandard.getEquipmentId());
                        queryWrapper.eq("maintenance_category", maintenanceStandard.getMaintenanceCategory());
                        queryWrapper.eq("standard_status", MaintenanceStandardStatusEnum.START.name());
                        List<EamMaintenanceStandard> list = eamMaintenanceStandardMapper.selectList(queryWrapper);
                        if (!CollectionUtils.isEmpty(list)) {
                            //作废原有
                            for (EamMaintenanceStandard eamMaintenanceStandard1 : list) {
                                eamMaintenanceStandard1.setStandardStatus(MaintenanceStandardStatusEnum.ABOLISH.name());
                                this.updateById(eamMaintenanceStandard1);
                            }
                        }
                    } else {
                        eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name());
                    }
                }else {
                    eamMaintenanceStandard.setTechnicalManager(user.getUsername());
                    eamMaintenanceStandard.setTechnicalManagerApproveResult(eamMaintenanceStandardVo.getTechnicalManagerApproveResult());
                    eamMaintenanceStandard.setTechnicalManagerApproveTime(new Date());
                    eamMaintenanceStandard.setTechnicalManagerApproveComment(eamMaintenanceStandardVo.getComment());
                    eamMaintenanceStandard.setTechnicalManagerApproveComment(eamMaintenanceStandardVo.getTechnicalManagerApproveComment());
                    eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.START.name());
                }
                this.updateById(eamMaintenanceStandard);
            } else {
                return result;
            }
            return Result.OK("操作成功");
        } catch (Exception e) {
            return Result.error("操作失败:" + e.getMessage());
                break;
            default:
                throw  new JeecgBootException("审批失败");
        }
        eamMaintenanceStandardVo.setValues(values);
        // 完成流程任务
        Result result = flowTaskService.complete(eamMaintenanceStandardVo);
        if (!result.isSuccess()) {
            throw new JeecgBootException("审批失败,请刷新查看!");
        }
        this.updateById(eamMaintenanceStandard);
        if (StrUtil.isNotEmpty(eamMaintenanceStandardVo.getTechnicalManagerApproveResult())){
            if (eamMaintenanceStandardVo.getTechnicalManagerApproveResult().equals("1")) {
                eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.START.name());
                //判断是否进行升版,通过设备编号、保养分类、状态进行筛选
                EamMaintenanceStandard maintenanceStandard = this.getById(eamMaintenanceStandardVo.getDataId());
                QueryWrapper<EamMaintenanceStandard> queryWrapper = new QueryWrapper<>();
                queryWrapper.ne("id", eamMaintenanceStandardVo.getDataId());
                queryWrapper.eq("equipment_id", maintenanceStandard.getEquipmentId());
                queryWrapper.eq("maintenance_category", maintenanceStandard.getMaintenanceCategory());
                queryWrapper.eq("standard_status", MaintenanceStandardStatusEnum.START.name());
                List<EamMaintenanceStandard> list = eamMaintenanceStandardMapper.selectList(queryWrapper);
                if (!CollectionUtils.isEmpty(list)) {
                    //作废原有
                    for (EamMaintenanceStandard eamMaintenanceStandard1 : list) {
                        eamMaintenanceStandard1.setStandardStatus(MaintenanceStandardStatusEnum.ABOLISH.name());
                        this.updateById(eamMaintenanceStandard1);
                    }
                }
            }
        }
        return Result.OK("操作成功");
    }
    private Map<String, Object> setProcessVariables(EamMaintenanceStandard eamMaintenanceStandard, String userId, EamMaintenanceStandardVo eamMaintenanceStandardVo) {
        Map<String, Object> values = new HashMap<>();
        values.put("dataId", eamMaintenanceStandard.getId());
        values.put("assignee", userId);
        if (eamMaintenanceStandardVo.getRepairManagerApproveResult() != null) {
            values.put("repairManagerApproveResult", eamMaintenanceStandardVo.getRepairManagerApproveResult());
            values.put("organization", eamMaintenanceStandardVo.getRepairManagerApproveComment());
            values.put("comment", eamMaintenanceStandardVo.getRepairManagerApproveComment());
    private boolean isUserAuthorized(FlowMyBusiness flowMyBusiness, LoginUser user) {
        List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class);
        return todoUsers != null && todoUsers.contains(user.getUsername());
    }
    private boolean claimTask(String taskId, LoginUser user) {
        Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
        if (task == null) {
            return false;
        }
        if (eamMaintenanceStandardVo.getTechnicalManagerApproveResult() != null) {
            values.put("technicalManagerApproveResult", eamMaintenanceStandardVo.getTechnicalManagerApproveResult());
            values.put("organization", eamMaintenanceStandardVo.getTechnicalManagerApproveComment());
            values.put("comment", eamMaintenanceStandardVo.getTechnicalManagerApproveComment());
        if (task.getAssignee() != null && !task.getAssignee().equals(user.getUsername())) {
            return false;
        }
        return values;
        taskService.claim(taskId, user.getUsername());
        return true;
    }
@@ -540,8 +563,9 @@
    @Override
    public List<String> flowCandidateUsernamesOfTask(String taskNameId, Map<String, Object> values) {
        //业务是否干预流程,业务干预,流程干预,指定人员进行处理
        return null;
        //获取下一步处理人
        Object object = values.get("NextAssignee");
        return (List<String>) object;
    }
    /*流程业务代码--------------------------结束*/
@@ -554,7 +578,11 @@
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result<?> importPointInspectionExcel(MultipartFile file) {
    public Result<?> importPointInspectionExcel(MultipartFile file,String id) {
        EamMaintenanceStandard eamMaintenanceStandardOld=new EamMaintenanceStandard();
        if (StrUtil.isNotEmpty(id)){
            eamMaintenanceStandardOld=eamMaintenanceStandardMapper.selectById(id);
        }
        try (Workbook workbook = WorkbookFactory.create(file.getInputStream())) {
            Sheet sheet = workbook.getSheetAt(0);
@@ -569,11 +597,56 @@
            eamMaintenanceStandard.setStandardName(name);
            // 检查重复
            EamMaintenanceStandard exist = checkDuplicate(eamMaintenanceStandard.getEquipmentId(),
                    eamMaintenanceStandard.getMaintenanceCategory(), MaintenanceStandardStatusEnum.ABOLISH.name());
            if (exist != null) {
                return Result.error(name + ": 设备标准已存在,不能重复添加");
            // 检查重复,只导入校验,升版不校验
            if (StrUtil.isEmpty(id)){
                EamMaintenanceStandard exist = checkDuplicate(eamMaintenanceStandard.getEquipmentId(),
                        eamMaintenanceStandard.getMaintenanceCategory(), MaintenanceStandardStatusEnum.ABOLISH.name());
                if (exist != null) {
                    return Result.error(name + ": 设备标准已存在,不能重复添加");
                }
            }
            if (StrUtil.isNotEmpty(id)){
                if (eamMaintenanceStandardOld.getEquipmentId().equals(eamMaintenanceStandard.getEquipmentId())
                        &&eamMaintenanceStandardOld.getMaintenanceCategory().equals(eamMaintenanceStandard.getMaintenanceCategory())) {
                    //判断是否现有待提交数据
                    EamMaintenanceStandard maintenanceStandard=eamMaintenanceStandardMapper.selectOne(
                            new QueryWrapper<EamMaintenanceStandard>().eq("equipment_id",eamMaintenanceStandard.getEquipmentId())
                                    .eq("maintenance_category",eamMaintenanceStandard.getMaintenanceCategory())
                                    .eq("standard_status",MaintenanceStandardStatusEnum.WAIT_SUBMIT.name())
                                    .eq("del_flag", CommonConstant.DEL_FLAG_0));
                    if (maintenanceStandard != null) {
                        //删除原有待提交
                        eamMaintenanceStandardMapper.deleteById(maintenanceStandard.getId());
                    }
                    //查询在流程中的数据
                    List<EamMaintenanceStandard> eamMaintenanceStandardList=eamMaintenanceStandardMapper.selectList(
                            new QueryWrapper<EamMaintenanceStandard>().eq("equipment_id",eamMaintenanceStandard.getEquipmentId())
                                    .eq("maintenance_category",eamMaintenanceStandard.getMaintenanceCategory())
                                    .eq("del_flag", CommonConstant.DEL_FLAG_0)
                                    .and(i->i.
                                            eq("standard_status",MaintenanceStandardStatusEnum.WAIT_REPAIR_DIRECTOR.name())
                                            .or()
                                            .eq("standard_status",MaintenanceStandardStatusEnum.WAIT_TECHNICAL_DIRECTOR.name())
                    ));
                    if (!eamMaintenanceStandardList.isEmpty()) {
                        return Result.error("已存在处于审批流程的数据,请删除或结束后进行升版导入操作");
                    }
                    //升版操作,作废原有
                    eamMaintenanceStandardOld.setStandardStatus(MaintenanceStandardStatusEnum.ABOLISH.name());
                    eamMaintenanceStandardMapper.updateById(eamMaintenanceStandardOld);
                    //版本递增获取数字
                    Pattern pattern = Pattern.compile("(\\d+)(?:\\.\\d+)*$");
                    Matcher matcher = pattern.matcher(eamMaintenanceStandardOld.getStandardVersion());
                    if (matcher.find()) {
                        try {
                            int mainVersion = Integer.parseInt(matcher.group(1));
                            eamMaintenanceStandard.setStandardVersion("v" + (mainVersion + 1));
                        } catch (NumberFormatException ignored) {
                        }
                    }
                }else {
                    return Result.error("升版导入的文件与原有数据的设备编号不一致,请重新编辑导入文件");
                }
            }
            eamMaintenanceStandard.setInitialDate(new Date());
            eamMaintenanceStandardMapper.insert(eamMaintenanceStandard);
@@ -1086,7 +1159,7 @@
     */
    @Override
    @Transactional
    public Result<?> importMaintenanceStandard(MultipartFile file, String type) {
    public Result<?> importMaintenanceStandard(MultipartFile file, String type,String id) {
        String fileName = file.getOriginalFilename();
        try (XWPFDocument doc = new XWPFDocument(file.getInputStream())) {
@@ -1132,11 +1205,62 @@
                        return Result.error(fileName + ": 设备信息提取失败");
                    }
                    EamMaintenanceStandard eamMaintenanceStandardOld=new EamMaintenanceStandard();
                    if (StrUtil.isNotEmpty(id)){
                        eamMaintenanceStandardOld=eamMaintenanceStandardMapper.selectById(id);
                    }
                    // 配置类型相关参数
                    configureStandard(standard, type, file);
                    EamMaintenanceStandard exist = checkDuplicate(standard.getEquipmentId(), standard.getMaintenanceCategory(), MaintenanceStandardStatusEnum.ABOLISH.name());
                    if (exist != null) {
                        return Result.error(fileName + ": 设备标准已存在,不能重复添加");
                    if (StrUtil.isEmpty(id)){
                        EamMaintenanceStandard exist = checkDuplicate(standard.getEquipmentId(), standard.getMaintenanceCategory(), MaintenanceStandardStatusEnum.ABOLISH.name());
                        if (exist != null) {
                            return Result.error(fileName + ": 设备标准已存在,不能重复添加");
                        }
                    }
                    if (StrUtil.isNotEmpty(id)){
                        if (eamMaintenanceStandardOld.getEquipmentId().equals(standard.getEquipmentId())
                                &&eamMaintenanceStandardOld.getMaintenanceCategory().equals(standard.getMaintenanceCategory())) {
                            //判断是否现有待提交数据
                            EamMaintenanceStandard maintenanceStandard=eamMaintenanceStandardMapper.selectOne(
                                    new QueryWrapper<EamMaintenanceStandard>().eq("equipment_id",standard.getEquipmentId())
                                            .eq("maintenance_category",standard.getMaintenanceCategory())
                                            .eq("standard_status",MaintenanceStandardStatusEnum.WAIT_SUBMIT.name())
                                            .eq("del_flag", CommonConstant.DEL_FLAG_0));
                            if (maintenanceStandard != null) {
                                //删除原有待提交
                                eamMaintenanceStandardMapper.deleteById(maintenanceStandard.getId());
                            }
                            //查询在流程中的数据
                            List<EamMaintenanceStandard> eamMaintenanceStandardList=eamMaintenanceStandardMapper.selectList(
                                    new QueryWrapper<EamMaintenanceStandard>().eq("equipment_id",standard.getEquipmentId())
                                            .eq("maintenance_category",standard.getMaintenanceCategory())
                                            .eq("del_flag", CommonConstant.DEL_FLAG_0)
                                            .and(it->it.
                                                    eq("standard_status",MaintenanceStandardStatusEnum.WAIT_REPAIR_DIRECTOR.name())
                                                    .or()
                                                    .eq("standard_status",MaintenanceStandardStatusEnum.WAIT_TECHNICAL_DIRECTOR.name())
                                            ));
                            if (!eamMaintenanceStandardList.isEmpty()) {
                                return Result.error("已存在处于审批流程的数据,请删除或结束后进行升版导入操作");
                            }
                            //升版操作,作废原有
                            eamMaintenanceStandardOld.setStandardStatus(MaintenanceStandardStatusEnum.ABOLISH.name());
                            eamMaintenanceStandardMapper.updateById(eamMaintenanceStandardOld);
                            //版本递增获取数字
                            Pattern pattern = Pattern.compile("(\\d+)(?:\\.\\d+)*$");
                            Matcher matcher = pattern.matcher(eamMaintenanceStandardOld.getStandardVersion());
                            if (matcher.find()) {
                                try {
                                    int mainVersion = Integer.parseInt(matcher.group(1));
                                    standard.setStandardVersion("v" + (mainVersion + 1));
                                } catch (NumberFormatException ignored) {
                                }
                            }
                        }else {
                            return Result.error("升版导入的文件与原有数据的设备编号不一致,请重新编辑导入文件");
                        }
                    }
                    standard.setStandardName(documentTitle);
                    eamMaintenanceStandardMapper.insert(standard);