lyh
2 天以前 9a9697c55fa66821cf74165ac2ae820182dae94d
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamRepairOrderServiceImpl.java
@@ -1,18 +1,15 @@
package org.jeecg.modules.eam.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.flowable.engine.TaskService;
import org.flowable.task.api.Task;
import org.jeecg.common.api.vo.FileUploadResult;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.DataBaseConstant;
@@ -21,18 +18,17 @@
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.eam.aspect.annotation.EquipmentHistoryLog;
import org.jeecg.modules.eam.constant.*;
import org.jeecg.modules.eam.dto.EamRepairOrderDto;
import org.jeecg.modules.eam.entity.EamEquipment;
import org.jeecg.modules.eam.entity.EamRepairOrder;
import org.jeecg.modules.eam.entity.EamRepairPerson;
import org.jeecg.modules.eam.entity.EamReportRepair;
import org.jeecg.modules.eam.mapper.EamRepairOrderMapper;
import org.jeecg.modules.eam.request.EamRepairOrderQuery;
import org.jeecg.modules.eam.request.EamRepairOrderRequest;
import org.jeecg.modules.eam.request.EamRepairOrderResponse;
import org.jeecg.modules.eam.request.EamReportRepairQuery;
import org.jeecg.modules.eam.service.IEamEquipmentExtendService;
import org.jeecg.modules.eam.service.IEamEquipmentService;
import org.jeecg.modules.eam.service.IEamRepairOrderService;
import org.jeecg.modules.eam.service.IEamReportRepairService;
import org.jeecg.modules.eam.service.*;
import org.jeecg.modules.eam.util.DateUtils;
import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness;
import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService;
@@ -40,6 +36,10 @@
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.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.service.ISysBusinessCodeRuleService;
import org.jeecg.modules.system.service.ISysUserService;
import org.jeecg.modules.system.vo.UserSelector;
@@ -66,9 +66,6 @@
    private FlowCommonService flowCommonService;
    @Resource
    private ISysBusinessCodeRuleService businessCodeRuleService;
    @Resource
    private IEamReportRepairService eamReportRepairService;
    @Resource
@@ -92,6 +89,15 @@
    @Autowired
    private ISysUserService sysUserService;
    @Autowired
    private IBaseFactoryService baseFactoryService;
    @Autowired
    private IBaseFactoryUserService baseFactoryUserService;
    @Autowired
    private IEamRepairPersonService iEamRepairPersonService;
    /**
     * 分页列表
     *
@@ -108,13 +114,21 @@
        if (sysUser == null) {
            return page;
        }
        if (StringUtils.isNotBlank(sysUser.getEquipmentIds())) {
        if (StringUtils.isNotBlank(sysUser.getEamEquipmentIds())) {
            //选择了设备,根据设备id过滤设备
            List<String> equipArr = Arrays.asList(sysUser.getEquipmentIds().split(","));
            List<String> equipArr = Arrays.asList(sysUser.getEamEquipmentIds().split(","));
            queryWrapper.in("e.equipment_code", equipArr);
        } else {
            //没有选择设备,根据车间过滤设备
            queryWrapper.exists("select 1 from mdc_user_production t where t.user_id={0} and t.pro_id=e.org_id ", sysUser.getId());
            //没有选择设备,根据中心过滤设备
            List<BaseFactoryUser> baseFactoryUserList = baseFactoryUserService.
                    list(new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId, sysUser.getId()));
            if (!CollectionUtils.isEmpty(baseFactoryUserList)) {
                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 (query != null) {
@@ -130,15 +144,9 @@
            if (StringUtils.isNotBlank(query.getRepairStatus())) {
                queryWrapper.eq("wmo.repair_status", query.getRepairStatus());
            }
            if (StringUtils.isNotBlank(query.getRepairer())) {
                queryWrapper.like("wmo.repairer", query.getRepairer());
            }
            if (StringUtils.isNotBlank(query.getRepairCode())) {
                queryWrapper.like("wmo.repair_code", query.getRepairCode());
            }
//            if(query.getStartTime() != null && query.getEndTime() != null) {
//                queryWrapper.between("wmo.fault_start_time", query.getStartTime(), query.getEndTime());
//            }
            //排序
            if (StringUtils.isNotBlank(query.getColumn()) && StringUtils.isNotBlank(query.getOrder())) {
                String column = query.getColumn();
@@ -160,91 +168,105 @@
        return baseMapper.queryPageList(page, queryWrapper);
    }
    /**
     * 填报详情
     * @param id
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saveRepairOrder(EamRepairOrder eamRepairOrder) {
        String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.REPAIR_ORDER_CODE_RULE);
        eamRepairOrder.setRepairCode(codeSeq);
        EamReportRepair eamReportRepair = eamReportRepairService.getById(eamRepairOrder.getReportId());
        if(eamReportRepair == null){
            throw new JeecgBootException("故障报修不存在,请刷新重试!");
    public List<EamRepairOrderDto> queryByReportId(String id){
        List<EamRepairOrder> eamRepairOrders=this.list(
                new QueryWrapper<EamRepairOrder>().eq("id",id));
        List<EamRepairOrderDto> eamRepairOrderDtoList=new ArrayList<>();
        if (CollectionUtils.isEmpty(eamRepairOrders)) {
            return null;
        }else {
            eamRepairOrders.forEach(eamRepairOrder->{
                EamRepairOrderDto eamRepairOrderDto=new EamRepairOrderDto();
                BeanUtils.copyProperties(eamRepairOrder,eamRepairOrderDto);
                List<EamRepairPerson> eamRepairPersonList=iEamRepairPersonService.list(
                        new QueryWrapper<EamRepairPerson>().eq("repair_id",eamRepairOrder.getId()));
                eamRepairOrderDto.setEamRepairPersonList(eamRepairPersonList);
                eamRepairOrderDtoList.add(eamRepairOrderDto);
            });
        }
        eamRepairOrder.setDelFlag(CommonConstant.DEL_FLAG_0);
        eamRepairOrder.setEquipmentId(eamReportRepair.getEquipmentId());
        eamRepairOrder.setRepairStatus(ReportRepairEnum.WAIT_INTERNAL_CONFIRM.name());
        eamRepairOrder.setActualStartTime(DateUtils.getNow());
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        eamRepairOrder.setRepairer(user.getUsername());
        super.save(eamRepairOrder);
        EamEquipment eamEquipment = eamEquipmentService.getById(eamReportRepair.getEquipmentId());
        // 启动维修流程
        flowCommonService.initActBusiness("工单号:" + codeSeq + ", 设备编号:" + eamEquipment.getEquipmentCode() + ";安装位置: " + eamEquipment.getInstallationPosition(),
                eamRepairOrder.getId(),
                "IEamRepairOrderService",
                "eam_repair",
                null);
        Map<String, Object> variables = new HashMap<>();
        variables.put("dataId", eamRepairOrder.getId());
        variables.put("organization", "维修工单启动流程");
        variables.put("comment", "维修工单启动流程");
        variables.put("proofreading", true);
        List<String> usernames = new ArrayList<>();
        usernames.add(user.getUsername());
        variables.put("NextAssignee", usernames);
        Result result = flowDefinitionService.startProcessInstanceByKey("eam_repair", variables);
        if (!result.isSuccess()) {
            super.removeById(eamRepairOrder);
        } else {
            eamReportRepair.setReportStatus(ReportRepairEnum.WAIT_INTERNAL_CONFIRM.name());
            eamReportRepairService.updateById(eamReportRepair);
            //更新设备维修状态
            eamEquipmentExtendService.updateEquipmentRepairStatus(eamReportRepair.getEquipmentId(), EquipmentRepairStatus.UNDER_REPAIR.name());
        }
        return eamRepairOrderDtoList;
    }
    /**
     * 指派
     * @param eamReportRepairQuery
     * 填报维修工单
     * @param eamRepairOrderDto
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void assign(EamReportRepairQuery eamReportRepairQuery) {
        EamRepairOrder eamRepairOrder = new EamRepairOrder();
        String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.REPAIR_ORDER_CODE_RULE);
        eamRepairOrder.setRepairCode(codeSeq);
        EamReportRepair eamReportRepair = eamReportRepairService.getById(eamReportRepairQuery.getId());
        if(eamReportRepair == null){
            throw new JeecgBootException("故障报修不存在,请刷新重试!");
    public boolean report(EamRepairOrderDto eamRepairOrderDto){
        EamRepairOrder eamRepairOrder=this.getById(eamRepairOrderDto.getId());
        if (eamRepairOrder==null){
            return false;
        }
        eamRepairOrder.setDelFlag(CommonConstant.DEL_FLAG_0);
        eamRepairOrder.setEquipmentId(eamReportRepair.getEquipmentId());
        eamRepairOrder.setRepairStatus(ReportRepairEnum.WAIT_INTERNAL_CONFIRM.name());
        eamRepairOrder.setActualStartTime(DateUtils.getNow());
        eamRepairOrder.setRepairer(eamReportRepairQuery.getRepairer());
        super.save(eamRepairOrder);
        EamEquipment eamEquipment = eamEquipmentService.getById(eamReportRepair.getEquipmentId());
        BeanUtils.copyProperties(eamRepairOrderDto,eamRepairOrder);
        eamRepairOrder.setRepairStatus(EamRepairOrderRepairStatusEnum.UNDER_MAINTENANCE.name());
        this.updateById(eamRepairOrder);
        EamReportRepair eamReportRepair=eamReportRepairService.getById(eamRepairOrder.getReportId());
        if (eamReportRepair==null){
            return false;
        }
        eamReportRepair.setReportStatus(EamRepairOrderRepairStatusEnum.UNDER_MAINTENANCE.name());
        eamReportRepairService.updateById(eamReportRepair);
        iEamRepairPersonService.remove(new QueryWrapper<EamRepairPerson>().eq("repair_id",eamRepairOrderDto.getId()));
        if(CollectionUtils.isNotEmpty(eamRepairOrderDto.getEamRepairPersonList())) {
            List<EamRepairPerson> persons = eamRepairOrderDto.getEamRepairPersonList().stream()
                    .map(person -> new EamRepairPerson()
                            .setRepairId(eamRepairOrder.getId())
                            .setDelFlag(CommonConstant.DEL_FLAG_0))
                    .collect(Collectors.toList());
            iEamRepairPersonService.saveBatch(persons);
        }
        return true;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saveRepairOrder(String id) {
        EamRepairOrder eamRepairOrder = this.getById(id);
        List<EamRepairPerson> eamRepairPersonList=iEamRepairPersonService.list(
                new QueryWrapper<EamRepairPerson>().eq("repair_id",eamRepairOrder.getId()));
        if (CollectionUtils.isEmpty(eamRepairPersonList)) {
            throw new RuntimeException("维修人员不能为空");
        }
        if (StrUtil.isEmpty(eamRepairOrder.getRepairCode())) {}
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        EamEquipment eamEquipment = eamEquipmentService.getById(eamRepairOrder.getEquipmentId());
        List<UserSelector> userSelectorList = sysUserService.selectOperatorList(eamEquipment.getEquipmentCode(), eamEquipment.getFactoryOrgCode(), BusinessCodeConst.PCR0001);
        // 启动维修流程
        flowCommonService.initActBusiness("工单号:" + codeSeq + ", 设备编号:" + eamEquipment.getEquipmentCode() + ";安装位置: " + eamEquipment.getInstallationPosition(),
        flowCommonService.initActBusiness("工单号:" + eamRepairOrder.getRepairCode() + ", 设备编号:" + eamEquipment.getEquipmentCode()+"发起维修流程",
                eamRepairOrder.getId(),
                "IEamRepairOrderService",
                "eam_repair",
                "repair_work_order",
                null);
        Map<String, Object> variables = new HashMap<>();
        variables.put("dataId", eamRepairOrder.getId());
        variables.put("organization", "维修工单启动流程");
        variables.put("comment", "维修工单启动流程");
        variables.put("proofreading", true);
        List<String> usernames = new ArrayList<>();
        usernames.add(eamReportRepairQuery.getRepairer());
        variables.put("NextAssignee", usernames);
        Result result = flowDefinitionService.startProcessInstanceByKey("eam_repair", variables);
        if (CollectionUtils.isEmpty(userSelectorList)) {
            throw new JeecgBootException("设备未存在操作员,无法进入下级审批!");
        }else {
            List<String> usernameList = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList());
            variables.put("NextAssignee", usernameList);
        }
        Result result = flowDefinitionService.startProcessInstanceByKey("repair_work_order", variables);
        if (!result.isSuccess()) {
            super.removeById(eamRepairOrder);
        } else {
            eamReportRepair.setReportStatus(ReportRepairEnum.WAIT_INTERNAL_CONFIRM.name());
            eamRepairOrder.setRepairConfirm(user.getUsername());
            eamRepairOrder.setRepairConfirmTime(new Date());
            eamRepairOrder.setRepairStatus(EamRepairOrderRepairStatusEnum.PENDING_CONFIRMATION.name());
            this.updateById(eamRepairOrder);
            EamReportRepair eamReportRepair=eamReportRepairService.getById(eamRepairOrder.getReportId());
            eamReportRepair.setReportStatus(EamRepairOrderRepairStatusEnum.UNDER_MAINTENANCE.name());
            eamReportRepairService.updateById(eamReportRepair);
            //更新设备维修状态
            eamEquipmentExtendService.updateEquipmentRepairStatus(eamReportRepair.getEquipmentId(), EquipmentRepairStatus.UNDER_REPAIR.name());
            eamEquipmentExtendService.updateEquipmentRepairStatus(eamRepairOrder.getEquipmentId(), EquipmentRepairStatus.UNDER_REPAIR.name());
        }
    }
@@ -261,10 +283,6 @@
        EamRepairOrder order = this.baseMapper.selectById(request.getId());
        if (order == null) {
            throw new JeecgBootException("维修工单不存在,请刷新重试!");
        }
        EamReportRepair eamReportRepair = eamReportRepairService.getById(order.getReportId());
        if (eamReportRepair == null) {
            throw new JeecgBootException("故障报修不存在,请刷新重试!");
        }
        // 获取当前登录用户
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
@@ -289,214 +307,34 @@
        if (equipment == null) {
            throw new JeecgBootException("设备不存在,请检查!");
        }
        ReportRepairEnum status = ReportRepairEnum.getInstance(order.getRepairStatus());
        if (status == null) {
            throw new JeecgBootException("工单状态不合法,请检查!");
        }
        //流程变量
        Map<String, Object> values = new HashMap<>();
        List<UserSelector> userSelectors;
        List<String> userApprovalList;
        switch (status) {
            case WAIT_INTERNAL_CONFIRM:
                order.setRepairConfirm(request.getRepairConfirm());
                order.setRepairConfirmComment(request.getRepairConfirmComment());
                order.setRepairConfirmTime(new Date());
                values.put("dataId", order.getId());
                values.put("repairConfirm", request.getRepairConfirm());
                if(StringUtils.isNotBlank(request.getRepairConfirmComment())){
                    values.put("organization", request.getRepairConfirmComment());
                    values.put("comment", request.getRepairConfirmComment());
                    request.setComment(request.getRepairConfirmComment());
                }else {
                    values.put("organization", "维修工单维修人确认完成");
                    values.put("comment", "维修工单维修人确认完成");
                    request.setComment("维修工单维修人确认完成");
                }
                if(CommonConstant.STATUS_1.equals(request.getRepairConfirm())) {
                    //可内部维修  维修人进行维修
                    values.put("NextAssignee", Arrays.asList(order.getRepairer().split(",")));
                    order.setRepairStatus(ReportRepairEnum.UNDER_INTERNAL_REPAIR.name());
                    eamReportRepair.setReportStatus(ReportRepairEnum.UNDER_INTERNAL_REPAIR.name());
                }else {
                    //提交机动办维修,车间管理员确认
                    userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), null, BusinessCodeConst.PCR0003);
                    if (CollectionUtil.isEmpty(userSelectors)) {
                        throw new JeecgBootException("设备未分配给班组长,无法进入下级审批!");
                    }
                    userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
                    values.put("NextAssignee", userApprovalList);
                    order.setRepairStatus(ReportRepairEnum.WAIT_LEADER_CONFIRM.name());
                    eamReportRepair.setReportStatus(ReportRepairEnum.WAIT_LEADER_CONFIRM.name());
                }
                break;
            case UNDER_INTERNAL_REPAIR:
                // 内部维修
                values.put("dataId", order.getId());
                values.put("organization", "维修工单维修完成待操作工确认");
                values.put("comment", "维修工单维修完成待操作工确认");
                values.put("NextAssignee", Arrays.asList(eamReportRepair.getCreateBy().split(",")));
                request.setComment("维修工单维修完成待操作工确认");
                order.setRepairStatus(ReportRepairEnum.WAIT_CONFIRM.name());
                eamReportRepair.setReportStatus(ReportRepairEnum.WAIT_CONFIRM.name());
                order.setFaultReason(request.getFaultReason());
                order.setRepairDescription(request.getRepairDescription());
                order.setActualEndTime(new Date());
                // 处理附件
                if (CollectionUtil.isNotEmpty(request.getImageFilesResult())) {
                    List<FileUploadResult> fileUploadResultList = request.getImageFilesResult();
                    ObjectMapper mapper = new ObjectMapper();
                    try {
                        String referenceFile = mapper.writeValueAsString(fileUploadResultList);
                        order.setImageFiles(referenceFile);
                    } catch (JsonProcessingException e) {
                        log.error("JSON转换失败:" + e.getMessage(), e);
                    }
                }
                //更新设备维修状态
                eamEquipmentExtendService.updateEquipmentRepairStatus(eamReportRepair.getEquipmentId(), EquipmentRepairStatus.WAIT_CONFIRM.name());
                break;
            case WAIT_LEADER_CONFIRM:
                order.setLeaderConfirm(request.getLeaderConfirm());
                order.setLeaderConfirmComment(request.getLeaderConfirmComment());
                order.setLeaderUser(user.getUsername());
                order.setLeaderConfirmTime(new Date());
                values.put("dataId", order.getId());
                values.put("leaderConfirm", request.getLeaderConfirm());
                if(StringUtils.isNotBlank(request.getLeaderConfirmComment())){
                    values.put("organization", request.getLeaderConfirmComment());
                    values.put("comment", request.getLeaderConfirmComment());
                    request.setComment(request.getLeaderConfirmComment());
                }else {
                    values.put("organization", "维修工单领导确认完成");
                    values.put("comment", "维修工单领导确认完成");
                    request.setComment("维修工单领导确认完成");
                }
                if(CommonConstant.STATUS_1.equals(request.getLeaderConfirm())) {
                    //通过 提交机动办维修
                    userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), null, BusinessCodeConst.PCR0006);
                    if (CollectionUtil.isEmpty(userSelectors)) {
                        throw new JeecgBootException("设备未分配给公司管理员,无法进入下级审批!");
                    }
                    userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
                    values.put("NextAssignee", userApprovalList);
                    order.setRepairStatus(ReportRepairEnum.WAIT_EXTERNAL_CONFIRM.name());
                    eamReportRepair.setReportStatus(ReportRepairEnum.WAIT_EXTERNAL_CONFIRM.name());
                }else {
                    //驳回 可内部维修  维修人进行维修
                    values.put("NextAssignee", Arrays.asList(order.getRepairer().split(",")));
                    order.setRepairStatus(ReportRepairEnum.UNDER_INTERNAL_REPAIR.name());
                    eamReportRepair.setReportStatus(ReportRepairEnum.UNDER_INTERNAL_REPAIR.name());
                }
                break;
            case WAIT_EXTERNAL_CONFIRM:
                order.setExternalConfirm(request.getExternalConfirm());
                order.setExternalConfirmComment(request.getExternalConfirmComment());
                order.setExternalRepairer(user.getUsername());
                order.setExternalConfirmTime(new Date());
                values.put("dataId", order.getId());
                values.put("externalConfirm", request.getExternalConfirm());
                if(StringUtils.isNotBlank(request.getExternalConfirmComment())){
                    values.put("organization", request.getExternalConfirmComment());
                    values.put("comment", request.getExternalConfirmComment());
                    request.setComment(request.getExternalConfirmComment());
                }else {
                    values.put("organization", "维修工单机动办确认完成");
                    values.put("comment", "维修工单机动办确认完成");
                    request.setComment("维修工单机动办确认完成");
                }
                if(CommonConstant.STATUS_1.equals(request.getExternalConfirm())) {
                    //机动办可维修  机动办维修人进行维修
                    values.put("NextAssignee", Arrays.asList(order.getExternalRepairer().split(",")));
                    order.setRepairStatus(ReportRepairEnum.UNDER_EXTERNAL_REPAIR.name());
                    eamReportRepair.setReportStatus(ReportRepairEnum.UNDER_EXTERNAL_REPAIR.name());
                }else {
                    //机动办不可维修 进行委外维修
                    values.put("NextAssignee", Arrays.asList(order.getExternalRepairer().split(",")));
                    order.setRepairStatus(ReportRepairEnum.UNDER_OUTSIDE_REPAIR.name());
                    eamReportRepair.setReportStatus(ReportRepairEnum.UNDER_OUTSIDE_REPAIR.name());
                }
                break;
            case UNDER_EXTERNAL_REPAIR:
                // 机动办维修
                values.put("dataId", order.getId());
                values.put("organization", "维修工单机动办维修完成待操作工确认");
                values.put("comment", "维修工单机动办维修完成待操作工确认");
                values.put("NextAssignee", Arrays.asList(eamReportRepair.getCreateBy().split(",")));
                request.setComment("维修工单机动办维修完成待操作工确认");
                order.setRepairStatus(ReportRepairEnum.WAIT_CONFIRM.name());
                eamReportRepair.setReportStatus(ReportRepairEnum.WAIT_CONFIRM.name());
                order.setFaultReason(request.getFaultReason());
                order.setRepairDescription(request.getRepairDescription());
                order.setActualEndTime(new Date());
                // 处理附件
                if (CollectionUtil.isNotEmpty(request.getImageFilesResult())) {
                    List<FileUploadResult> fileUploadResultList = request.getImageFilesResult();
                    ObjectMapper mapper = new ObjectMapper();
                    try {
                        String referenceFile = mapper.writeValueAsString(fileUploadResultList);
                        order.setImageFiles(referenceFile);
                    } catch (JsonProcessingException e) {
                        log.error("JSON转换失败:" + e.getMessage(), e);
                    }
                }
                //更新设备维修状态
                eamEquipmentExtendService.updateEquipmentRepairStatus(eamReportRepair.getEquipmentId(), EquipmentRepairStatus.WAIT_CONFIRM.name());
                break;
            case UNDER_OUTSIDE_REPAIR:
                // 机动办维修
                values.put("dataId", order.getId());
                values.put("organization", "维修工单委外维修完成待操作工确认");
                values.put("comment", "维修工单委外维修完成待操作工确认");
                values.put("NextAssignee", Arrays.asList(eamReportRepair.getCreateBy().split(",")));
                request.setComment("维修工单委外维修完成待操作工确认");
                order.setRepairStatus(ReportRepairEnum.WAIT_CONFIRM.name());
                order.setOutsourcedUser(user.getUsername());
                eamReportRepair.setReportStatus(ReportRepairEnum.WAIT_CONFIRM.name());
                order.setFaultReason(request.getFaultReason());
                order.setRepairDescription(request.getRepairDescription());
                order.setActualEndTime(new Date());
                // 处理附件
                if (CollectionUtil.isNotEmpty(request.getImageFilesResult())) {
                    List<FileUploadResult> fileUploadResultList = request.getImageFilesResult();
                    ObjectMapper mapper = new ObjectMapper();
                    try {
                        String referenceFile = mapper.writeValueAsString(fileUploadResultList);
                        order.setImageFiles(referenceFile);
                    } catch (JsonProcessingException e) {
                        log.error("JSON转换失败:" + e.getMessage(), e);
                    }
                }
                //更新设备维修状态
                eamEquipmentExtendService.updateEquipmentRepairStatus(eamReportRepair.getEquipmentId(), EquipmentRepairStatus.WAIT_CONFIRM.name());
                break;
            case WAIT_CONFIRM:
                // 待确认, 维修员维修完成,报修人确认结束流程
                values.put("dataId", order.getId());
                values.put("organization", "维修工单流程结束");
                values.put("comment", "维修工单流程结束");
                request.setComment("维修工单流程结束");
                order.setRepairStatus(ReportRepairEnum.COMPLETE.name());
                eamReportRepair.setReportStatus(ReportRepairEnum.COMPLETE.name());
                order.setConfirmComment(request.getConfirmComment());
                order.setConfirmTime(new Date());
                order.setConfirmer(user.getUsername());
                //更新设备维修状态
                eamEquipmentExtendService.updateEquipmentRepairStatus(eamReportRepair.getEquipmentId(), EquipmentRepairStatus.NORMAL.name());
                break;
        }
        values.put("dataId", request.getId());
        values.put("assignee", user.getId());
        values.put("organization", request.getConfirmComment());
        values.put("comment", request.getConfirmComment());
        request.setComment(request.getConfirmComment());
        request.setValues(values);
        // 完成流程任务
        Result result = flowTaskService.complete(request);
        if (!result.isSuccess()) {
            throw new JeecgBootException("审批失败,请刷新查看!");
        }
        //保存工单
        if (request.getConfirmResult() != null) {
            if ("1".equals(request.getConfirmResult())) {
                order.setRepairStatus(EamRepairOrderRepairStatusEnum.REPAIR_COMPLETED.name());
            }else {
                order.setRepairStatus(EamRepairOrderRepairStatusEnum.UNDER_MAINTENANCE.name());
            }
        }
        order.setConfirmer(user.getUsername());
        order.setConfirmTime(new Date());
        order.setConfirmResult(request.getConfirmResult());
        order.setConfirmComment(request.getConfirmComment());
        this.baseMapper.updateById(order);
        // 同步更新报修表状态
        EamReportRepair eamReportRepair=eamReportRepairService.getById(order.getReportId());
        eamReportRepair.setReportStatus(EamRepairOrderRepairStatusEnum.UNDER_MAINTENANCE.name());
        eamReportRepairService.updateById(eamReportRepair);
        return order;
    }
@@ -508,8 +346,6 @@
        BeanUtils.copyProperties(eamRepairOrder, eamRepairOrderResponse);
        EamReportRepair eamReportRepair = eamReportRepairService.getById(eamRepairOrder.getReportId());
        BeanUtils.copyProperties(eamReportRepair, eamRepairOrderResponse);
        eamRepairOrderResponse.setReportImageFiles(eamReportRepair.getImageFiles());
        eamRepairOrderResponse.setImageFiles(eamRepairOrder.getImageFiles());
        return eamRepairOrderResponse;
    }