zhangherong
8 天以前 7d5d6d104b0ad994b62b53683d752b4fec61b8c1
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSecondMaintenanceOrderServiceImpl.java
@@ -254,17 +254,28 @@
            throw new JeecgBootException("设备不存在,添加失败!");
        }
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        if(sysUser == null || !BusinessCodeConst.PCR0001.equals(sysUser.getPost())) {
            throw new JeecgBootException("不是操作工,无法领取此工单!");
        if(sysUser != null) {
            if (!BusinessCodeConst.PCR0001.equals(sysUser.getPost()) && !BusinessCodeConst.PCR0002.equals(sysUser.getPost())){
                throw new JeecgBootException("不是操作工,无法领取此工单!");
            }
        }
        entity.setOperator(sysUser.getUsername());
        List<String> usernames = new ArrayList<>();
        if (sysUser != null) {
            if (BusinessCodeConst.PCR0001.equals(sysUser.getPost())) {
                entity.setOperator(sysUser.getUsername());
                usernames.add(entity.getOperator());
            }
            if (BusinessCodeConst.PCR0002.equals(sysUser.getPost())) {
                entity.setRepairman(sysUser.getUsername());
                usernames.add(entity.getRepairman());
            }
        }
        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())) {
@@ -275,10 +286,24 @@
            variables.put("comment", entity.getRemark());
        }
        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 +327,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 +356,101 @@
        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());
                    if (parallelCompletion) {
                        values.put("NextAssignee", userApprovalList);
                        entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_ADMIN_CONFIRM.name());
                        entity.setActualEndTime(new Date());
                    }
                }
                //班组长确认
                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 (BusinessCodeConst.PCR0001.equals(user.getPost())) {
                    entity.setOperator(user.getUsername());
                    values.put("organization", "二保操作工执行结束");
                    values.put("comment", "二保操作工执行结束");
                    //处理对应详情
                    if (CollectionUtils.isNotEmpty(request.getOperatorDetailList())){
                        //删除原有数据
                        List<EamSecondMaintenanceOrderDetail> addList = new ArrayList<>();
                        //先删除原有
                        LambdaQueryWrapper<EamSecondMaintenanceOrderDetail> queryWrapper = new LambdaQueryWrapper<>();
                        queryWrapper.eq(EamSecondMaintenanceOrderDetail::getOrderId, entity.getId());
                        queryWrapper.eq(EamSecondMaintenanceOrderDetail::getItemCategory,EamMaintenanceStandardDetailCategory.OPERATOR_MAINTENANCE.name());
                        secondMaintenanceOrderDetailService.remove(queryWrapper);
                        request.getOperatorDetailList().forEach(tableDetail -> {
                            EamSecondMaintenanceOrderDetail eamMaintenanceStandardDetail=new EamSecondMaintenanceOrderDetail();
                            BeanUtils.copyProperties(tableDetail, eamMaintenanceStandardDetail);
                            eamMaintenanceStandardDetail.setOrderId(entity.getId());
                            addList.add(eamMaintenanceStandardDetail);
                        });
                        secondMaintenanceOrderDetailService.saveBatch(addList);
                    }
                }else if (BusinessCodeConst.PCR0002.equals(user.getPost())) {
                    entity.setRepairman(user.getUsername());
                    values.put("organization", "二保维修工执行结束");
                    values.put("comment", "二保维修工执行结束");
                    //处理对应详情
                    if (CollectionUtils.isNotEmpty(request.getRepairmanDetailList())){
                        //删除原有数据
                        List<EamSecondMaintenanceOrderDetail> addList = new ArrayList<>();
                        //先删除原有
                        LambdaQueryWrapper<EamSecondMaintenanceOrderDetail> queryWrapper = new LambdaQueryWrapper<>();
                        queryWrapper.eq(EamSecondMaintenanceOrderDetail::getOrderId, entity.getId());
                        queryWrapper.eq(EamSecondMaintenanceOrderDetail::getItemCategory,EamMaintenanceStandardDetailCategory.REPAIRER_MAINTENANCE.name());
                        secondMaintenanceOrderDetailService.remove(queryWrapper);
                        request.getRepairmanDetailList().forEach(tableDetail -> {
                            EamSecondMaintenanceOrderDetail eamMaintenanceStandardDetail=new EamSecondMaintenanceOrderDetail();
                            BeanUtils.copyProperties(tableDetail, eamMaintenanceStandardDetail);
                            eamMaintenanceStandardDetail.setOrderId(entity.getId());
                            addList.add(eamMaintenanceStandardDetail);
                        });
                        secondMaintenanceOrderDetailService.saveBatch(addList);
                    }
                }
                values.put("dataId", entity.getId());
                //设置entity
                entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.COMPLETE.name());
                //更新设备保养状态
                eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.NORMAL.name());
                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());
                    values.put("manageUserResult",request.getManageUserResult());
                    entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_INSPECTOR_CONFIRM.name());
                    entity.setManageUser(user.getUsername());
                    entity.setProblemDescription(request.getProblemDescription());
                    entity.setManageUserResult(request.getManageUserResult());
                    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());
                values.put("inspectorResult",request.getInspectorResult());
                entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.COMPLETE.name());
                entity.setInspector(user.getUsername());
                entity.setInspectorResult(request.getInspectorResult());
                entity.setInspectConfirmComment(request.getInspectConfirmComment());
                entity.setInspectConfirmTime(new Date());
                break;
            default:
                throw  new JeecgBootException("审批失败");
        }
        request.setValues(values);
        // 完成流程任务
        Result result = flowTaskService.complete(request);
        if (!result.isSuccess()) {