lyh
2025-07-12 cf20a9f777951dbc61018a4294c12ae9b7421e78
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSecondMaintenanceOrderServiceImpl.java
@@ -254,17 +254,25 @@
            throw new JeecgBootException("设备不存在,添加失败!");
        }
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        if(sysUser == null || !BusinessCodeConst.PCR0001.equals(sysUser.getPost())) {
        if(sysUser != null) {
            if (!BusinessCodeConst.PCR0001.equals(sysUser.getPost()) && !BusinessCodeConst.PCR0002.equals(sysUser.getPost())){
            throw new JeecgBootException("不是操作工,无法领取此工单!");
        }
        }
        if (sysUser != null) {
        entity.setOperator(sysUser.getUsername());
        }
        if (BusinessCodeConst.PCR0001.equals(sysUser.getPost())) {
            entity.setOperator(sysUser.getUsername());
        }else if (BusinessCodeConst.PCR0002.equals(sysUser.getPost())) {
            entity.setRepairman(sysUser.getUsername());
        }
        entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.UNDER_MAINTENANCE.name());
        entity.setActualStartTime(new Date());
        eamSecondMaintenanceOrderMapper.updateById(entity);
        //启动流程
        flowCommonService.initActBusiness("工单号: " + entity.getOrderNum() + ";设备编号: " + equipment.getEquipmentCode() + ";安装位置" + equipment.getInstallationPosition(),
                entity.getId(), "IEamSecondMaintenanceOrderService", "second_maintenance_process", null);
        flowCommonService.initActBusiness("工单号: " + entity.getOrderNum() + ";设备编号: " + equipment.getEquipmentCode() + "进行设备二级保养",
                entity.getId(), "IEamSecondMaintenanceOrderService", "SecondMaintenance_Process", null);
        Map<String, Object> variables = new HashMap<>();
        variables.put("dataId", entity.getId());
        if (StrUtil.isEmpty(entity.getRemark())) {
@@ -277,8 +285,24 @@
        variables.put("proofreading", true);
        List<String> usernames = new ArrayList<>();
        usernames.add(entity.getOperator());
        variables.put("NextAssignee", usernames);
        Result result = flowDefinitionService.startProcessInstanceByKey("second_maintenance_process", variables);
        if (sysUser != null) {
            if (BusinessCodeConst.PCR0001.equals(sysUser.getPost())) {
                variables.put("operator_task", usernames);
                List<UserSelector> userSelectorList = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0002);
                if (!CollectionUtils.isEmpty(userSelectorList)) {
                    List<String> usernameList = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList());
                    variables.put("maintenance_task",usernameList);
                }
            }else if (BusinessCodeConst.PCR0002.equals(sysUser.getPost())) {
                variables.put("maintenance_task", usernames);
                List<UserSelector> userSelectorList = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0001);
                if (!CollectionUtils.isEmpty(userSelectorList)) {
                    List<String> usernameList = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList());
                    variables.put("operator_task",usernameList);
                }
            }
        }
        Result result = flowDefinitionService.startProcessInstanceByKey("SecondMaintenance_Process", variables);
        if (result != null) {
            //更新设备保养状态
            eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.UNDER_SECOND_MAINTENANCE.name());
@@ -302,7 +326,7 @@
        }
        request.setAssignee(user.getUsername());
        // 获取流程业务记录
        FlowMyBusiness flowMyBusiness = flowMyBusinessService.getFlowMyBusiness(request.getInstanceId());
        FlowMyBusiness flowMyBusiness = flowMyBusinessService.getFlowMyBusiness(request.getInstanceId(), request.getTaskId());
        if (flowMyBusiness == null) {
            throw new JeecgBootException("流程实例不存在,请刷新后重试!");
        }
@@ -331,45 +355,63 @@
        List<UserSelector> userSelectors;
        switch (status) {
            case UNDER_MAINTENANCE:
                //保养中
                boolean parallelCompletion = flowTaskService.checkParallelCompletion(flowMyBusiness.getTaskId());
                //执行完成
                //设备管理员确认
//                String equipmentManager = equipment.getEquipmentManager();
//                if(StringUtils.isBlank(equipmentManager)) {
//                    throw new JeecgBootException("设备未分配设备管理员,无法进入下级审批!");
//                }
//                userApprovalList = Collections.singletonList(equipmentManager);
                values.put("dataId", entity.getId());
                values.put("organization", "二保执行结束");
                values.put("comment", "二保执行结束");
//                values.put("NextAssignee", userApprovalList);
                request.setComment("二保执行结束");
                //设置entity
                entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_CONFIRM.name());
                entity.setActualEndTime(new Date());
                //更新设备保养状态
                eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.SECOND_MAINTENANCE_WAIT_CONFIRM.name());
                break;
            case WAIT_CONFIRM:
                userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(),null, BusinessCodeConst.PCR0003);
                 userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0004);
                if (CollectionUtil.isEmpty(userSelectors)) {
                    throw new JeecgBootException("设备未分配给车间班组长,无法进入下级审批!");
                }
                //班组长确认
                    throw new JeecgBootException("设备未存在管理员,无法进入下级审批!");
                }else{
                userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
                //设置entity
                entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_LEADER_CONFIRM.name());
                entity.setConfirmTime(new Date());
                break;
            case WAIT_LEADER_CONFIRM:
                    if (parallelCompletion) {
                        values.put("NextAssignee", userApprovalList);
                        entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_ADMIN_CONFIRM.name());
                        entity.setActualEndTime(new Date());
                    }
                }
                if (BusinessCodeConst.PCR0001.equals(user.getPost())) {
                    entity.setOperator(user.getUsername());
                    //处理对应详情
                }else if (BusinessCodeConst.PCR0002.equals(user.getPost())) {
                    entity.setRepairman(user.getUsername());
                    //处理对应详情
                }
                values.put("dataId", entity.getId());
                //设置entity
                entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.COMPLETE.name());
                //更新设备保养状态
                eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.NORMAL.name());
                values.put("organization", "三保执行结束");
                values.put("comment", "三保执行结束");
                break;
            case WAIT_ADMIN_CONFIRM:
                //管理员确认
                userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0003);
                if (CollectionUtil.isEmpty(userSelectors)) {
                    throw new JeecgBootException("设备未存在检查人,无法进入下级审批!");
                }else{
                    userApprovalList= userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
                    values.put("NextAssignee", userApprovalList);
                    values.put("dataId", entity.getId());
                    values.put("organization",request.getComment());
                    values.put("comment", request.getComment());
                    entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_INSPECTOR_CONFIRM.name());
                    entity.setManageUser(user.getUsername());
                    entity.setProblemDescription(request.getProblemDescription());
                    entity.setDealDescription(request.getComment());
                    entity.setConfirmTime(new Date());
                }
                break;
            case WAIT_INSPECTOR_CONFIRM:
                //检查人确认
                values.put("dataId", entity.getId());
                values.put("organization",request.getComment());
                values.put("comment", request.getComment());
                entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.COMPLETE.name());
                entity.setInspector(user.getUsername());
                entity.setInspectConfirmComment(request.getInspectConfirmComment());
                entity.setInspectConfirmTime(new Date());
                break;
            default:
                throw  new JeecgBootException("审批失败");
        }
        request.setValues(values);
        // 完成流程任务
        Result result = flowTaskService.complete(request);
        if (!result.isSuccess()) {