| | |
| | | */ |
| | | package org.sxkj.gd.workorder.service.impl; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | |
| | | import org.sxkj.gd.workorder.service.IGdTaskResultService; |
| | | import org.sxkj.gd.workorder.service.IGdWorkOrderFlowService; |
| | | import org.sxkj.gd.workorder.utils.GdPatrolReportWordUtil; |
| | | import org.sxkj.gd.workorder.vo.GdPatrolTaskSimpleVO; |
| | | import org.sxkj.gd.workorder.vo.GdPatrolTaskVO; |
| | | import org.sxkj.gd.xingtu.JianXingtuApiService; |
| | | import org.sxkj.resource.entity.Attach; |
| | |
| | | @Override |
| | | public IPage<GdPatrolTaskVO> selectGdPatrolTaskPage(IPage<GdPatrolTaskVO> page, GdPatrolTaskPageParam gdPatrolTask) { |
| | | List<Long> deptList = new ArrayList<>(); |
| | | if (!AuthUtil.isAdministrator()) { |
| | | deptList = SysCache.getDeptChildIds(Long.valueOf(AuthUtil.getDeptId())); |
| | | if (!AuthUtil.isAdministrator() || !AuthUtil.isAdmin()) { |
| | | deptList = SysCache.getDeptChildIds(Long.valueOf(StringUtil.isBlank(AuthUtil.getDeptId()) ? "0" : AuthUtil.getDeptId())); |
| | | } |
| | | gdPatrolTask.setDeptList(deptList); |
| | | List<GdPatrolTaskVO> gdPatrolTaskVOS = baseMapper.selectGdPatrolTaskPage(page, gdPatrolTask); |
| | | return page.setRecords(gdPatrolTaskVOS); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public List<GdPatrolTaskExcel> exportGdPatrolTask(Wrapper<GdPatrolTaskEntity> queryWrapper) { |
| | |
| | | public boolean savePatrolTask(List<GdPatrolTaskEntity> taskEntityList) { |
| | | // 更新流程节点 |
| | | for (GdPatrolTaskEntity gdPatrolTaskEntity : taskEntityList) { |
| | | // 设置航线ID |
| | | gdPatrolTaskEntity.setAirlineId(gdPatrolTaskEntity.getPatrolRouteUrl()); |
| | | // 生成巡查任务编号 |
| | | if (StringUtils.isBlank(gdPatrolTaskEntity.getTaskNo())) { |
| | | // 使用时间戳生成唯一巡查任务编号 |
| | |
| | | |
| | | // 保存流转记录(发布任务,等待接单) |
| | | GdWorkOrderFlowEntity gdWorkOrderFlowEntity = new GdWorkOrderFlowEntity(); |
| | | gdWorkOrderFlowEntity.setCreateUser(AuthUtil.getUserId()); |
| | | gdWorkOrderFlowEntity.setCreateUser(AuthUtil.getUserId() == null ? 0L : AuthUtil.getUserId()); |
| | | gdWorkOrderFlowEntity.setWorkOrderId(gdPatrolTaskEntity.getId()); |
| | | gdWorkOrderFlowEntity.setFlowName(PatrolTaskStatusEnum.PENDING_SIGNING.getStageDesc()); |
| | | gdWorkOrderFlowEntity.setFlowDesc(PatrolTaskStatusEnum.PENDING_SIGNING.getStageDesc()); |
| | | gdWorkOrderFlowEntity.setOperator(AuthUtil.getNickName()); |
| | | gdWorkOrderFlowEntity.setOperator(StringUtil.isBlank(AuthUtil.getNickName()) ? "系统" : AuthUtil.getNickName()); |
| | | gdWorkOrderFlowEntity.setType(WorkOrderTypeEnum.PATROL_TASK.getValue()); |
| | | gdWorkOrderFlowEntity.setAreaCode(gdPatrolTaskEntity.getAreaCode()); |
| | | gdWorkOrderFlowEntity.setCreateDept(Long.valueOf(AuthUtil.getDeptId())); |
| | | gdWorkOrderFlowEntity.setCreateDept(Long.valueOf(StringUtil.isBlank(AuthUtil.getDeptId()) ? "0" : AuthUtil.getDeptId())); |
| | | boolean save1 = gdWorkOrderFlowService.save(gdWorkOrderFlowEntity); |
| | | if (!save1) { |
| | | // 流转记录保存失败,抛出异常触发回滚 |
| | |
| | | // 4. 更新任务状态 |
| | | Date now = new Date(); |
| | | task.setTaskStatus(newStatusEnum.getValue()); |
| | | task.setUpdateUser(AuthUtil.getUserId()); |
| | | task.setUpdateUser(AuthUtil.getUserId() == null ? 0L : AuthUtil.getUserId()); |
| | | task.setUpdateTime(now); |
| | | task.setRejectReason(auditParam.getRejectReason()); |
| | | boolean updateResult = updateById(task); |
| | |
| | | } |
| | | } |
| | | if (auditStatus == 3) { |
| | | // 查询同一个工单下的所有子任务 |
| | | // 撤回任务操作:查询同一个工单下的所有子任务 |
| | | List<GdPatrolTaskEntity> subTasks = list(Wrappers.<GdPatrolTaskEntity>lambdaQuery() |
| | | .eq(GdPatrolTaskEntity::getWorkOrderId, task.getWorkOrderId())); |
| | | |
| | | // 检查是否所有子任务都已撤回 |
| | | boolean allSubTasksWithdrawn = subTasks.stream() |
| | | .allMatch(item -> item.getTaskStatus().equals(PatrolTaskStatusEnum.WITHDRAWN.getValue())); |
| | | |
| | | // 示例:如果所有子任务都审核成功,可以更新工单状态为已完成 |
| | | // 如果所有子任务都已撤回,则将工单状态更新为"接单响应_已取消" |
| | | if (allSubTasksWithdrawn) { |
| | | // 执行工单状态更新逻辑 |
| | | return updateWorkOrderStatusAndFlow(task.getWorkOrderId(), |
| | | WorkOrderStatusEnum.RESPONDING_CANCELED); |
| | | } |
| | |
| | | |
| | | // 2. 保存流转记录 |
| | | GdWorkOrderFlowEntity flowEntity = new GdWorkOrderFlowEntity(); |
| | | flowEntity.setCreateUser(AuthUtil.getUserId()); |
| | | flowEntity.setCreateUser(AuthUtil.getUserId() == null ? 0L : AuthUtil.getUserId()); |
| | | flowEntity.setWorkOrderId(workOrderId); |
| | | flowEntity.setFlowName(newStatus.getStageDesc()); |
| | | flowEntity.setFlowDesc(newStatus.getDesc()); |
| | | flowEntity.setOperator(AuthUtil.getNickName()); |
| | | flowEntity.setOperator(StringUtil.isBlank(AuthUtil.getNickName()) ? "系统" : AuthUtil.getNickName()); |
| | | flowEntity.setType(WorkOrderTypeEnum.WORK_ORDER_TASK.getValue()); |
| | | flowEntity.setFlowStatus(newStatus.getMaxCode()); |
| | | flowEntity.setWorkStatus(newStatus.getCode()); |
| | | flowEntity.setCreateDept(Long.valueOf(AuthUtil.getDeptId())); |
| | | flowEntity.setCreateDept(Long.valueOf(StringUtil.isBlank(AuthUtil.getDeptId()) ? "0" : AuthUtil.getDeptId())); |
| | | return gdWorkOrderFlowService.save(flowEntity); |
| | | } |
| | | |
| | |
| | | taskEntity.setTaskStatus(targetStatus.getValue()); |
| | | |
| | | // 4. 更新任务信息:合并传入的任务信息 |
| | | taskEntity.setUpdateUser(AuthUtil.getUserId()); |
| | | taskEntity.setUpdateUser(AuthUtil.getUserId() == null ? 0L : AuthUtil.getUserId()); |
| | | taskEntity.setUpdateTime(new Date()); |
| | | |
| | | // 5. 更新数据库 |
| | |
| | | |
| | | // 6. 保存流转记录:使用枚举设置flowName |
| | | GdWorkOrderFlowEntity flowEntity = new GdWorkOrderFlowEntity(); |
| | | flowEntity.setCreateUser(AuthUtil.getUserId()); |
| | | flowEntity.setCreateUser(AuthUtil.getUserId() == null ? 0L : AuthUtil.getUserId()); |
| | | flowEntity.setWorkOrderId(taskEntity.getId()); |
| | | flowEntity.setFlowName(targetStatus.getDesc()); |
| | | flowEntity.setFlowDesc(AuthUtil.getNickName() + " " + DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss") + " 更新了任务信息,状态转换为:" + targetStatus.getDesc()); |
| | | flowEntity.setOperator(AuthUtil.getNickName()); |
| | | flowEntity.setFlowDesc((StringUtil.isBlank(AuthUtil.getNickName()) ? "系统" : AuthUtil.getNickName()) + " " + DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss") + " 更新了任务信息,状态转换为:" + targetStatus.getDesc()); |
| | | flowEntity.setOperator(StringUtil.isBlank(AuthUtil.getNickName()) ? "系统" : AuthUtil.getNickName()); |
| | | flowEntity.setType(WorkOrderTypeEnum.PATROL_TASK.getValue()); |
| | | flowEntity.setAreaCode(existingTask.getAreaCode()); |
| | | flowEntity.setCreateDept(Long.valueOf(AuthUtil.getDeptId())); |
| | | flowEntity.setCreateDept(Long.valueOf(StringUtil.isBlank(AuthUtil.getDeptId()) ? "0" : AuthUtil.getDeptId())); |
| | | |
| | | return gdWorkOrderFlowService.save(flowEntity); |
| | | } |
| | |
| | | private boolean saveWorkOrderFlow(Long workOrderId, PatrolTaskStatusEnum newStatus, |
| | | String rejectReason, String areaCode) { |
| | | GdWorkOrderFlowEntity flowEntity = new GdWorkOrderFlowEntity(); |
| | | flowEntity.setCreateUser(AuthUtil.getUserId()); |
| | | flowEntity.setCreateUser(AuthUtil.getUserId() == null ? 0L : AuthUtil.getUserId()); |
| | | flowEntity.setWorkOrderId(workOrderId); |
| | | flowEntity.setFlowName(newStatus.getStageDesc()); |
| | | flowEntity.setFlowDesc(newStatus.getStageDesc()); |
| | | flowEntity.setOperator(AuthUtil.getNickName()); |
| | | flowEntity.setOperator(StringUtil.isBlank(AuthUtil.getNickName()) ? "系统" : AuthUtil.getNickName()); |
| | | flowEntity.setType(WorkOrderTypeEnum.PATROL_TASK.getValue()); |
| | | flowEntity.setAreaCode(areaCode); |
| | | flowEntity.setCreateDept(Long.valueOf(AuthUtil.getDeptId())); |
| | | flowEntity.setCreateDept(Long.valueOf(StringUtil.isBlank(AuthUtil.getDeptId()) ? "0" : AuthUtil.getDeptId())); |
| | | |
| | | boolean saveResult = gdWorkOrderFlowService.save(flowEntity); |
| | | if (!saveResult) { |
| | |
| | | Long updateUser = taskEntity != null ? taskEntity.getUpdateUser() : null; |
| | | Long createDept = taskEntity != null ? taskEntity.getCreateDept() : null; |
| | | if (createUser == null) { |
| | | createUser = AuthUtil.getUserId(); |
| | | createUser = AuthUtil.getUserId() == null ? 0L : AuthUtil.getUserId(); |
| | | } |
| | | if (updateUser == null) { |
| | | updateUser = createUser; |
| | | } |
| | | if (createDept == null) { |
| | | createDept = Long.valueOf(AuthUtil.getDeptId()); |
| | | createDept = Long.valueOf(StringUtil.isBlank(AuthUtil.getDeptId()) ? "0" : AuthUtil.getDeptId()); |
| | | } |
| | | Date now = new Date(); |
| | | attach.setCreateUser(createUser); |
| | |
| | | return R.fail("巡查任务不存在"); |
| | | } |
| | | GdXingtuFlyTaskSaveDTO param = buildXingtuFlyTask(taskEntity); |
| | | return jianXingtuApiService.saveFlyTask(param); |
| | | return jianXingtuApiService.saveFlyTask(param); |
| | | } |
| | | |
| | | /** |
| | |
| | | param.setInspectionType(gdPatrolTaskVO.getPatrolTaskType()); |
| | | } |
| | | if ((gdPatrolTaskVO.getId() != null)) { |
| | | param.setPatrolTaskld(String.valueOf(gdPatrolTaskVO.getId())); |
| | | param.setPatrolTaskId(String.valueOf(gdPatrolTaskVO.getId())); |
| | | } |
| | | param.setTimingType("单次执行"); |
| | | if (StringUtil.isNotBlank(gdPatrolTaskVO.getAirlineId())) { |
| | |
| | | } |
| | | if (gdPatrolTaskVO.getExecuteTime() != null) { |
| | | param.setSingleTime(DateUtil.format(gdPatrolTaskVO.getExecuteTime(), "yyyy-MM-dd HH:mm:ss")); |
| | | } |
| | | } |
| | | if (StringUtil.isNotBlank(gdPatrolTaskVO.getAreaCode())) { |
| | | param.setRegionCode(gdPatrolTaskVO.getAreaCode()); |
| | | } |
| | | if (StringUtil.isNotBlank(gdPatrolTaskVO.getAirportId())) { |
| | | param.setAirportId(gdPatrolTaskVO.getAirportId()); |
| | | } |
| | | if (StringUtil.isNotBlank(gdPatrolTaskVO.getDeviceFlyerId())) { |
| | | param.setDeviceFlyerId(gdPatrolTaskVO.getDeviceFlyerId()); |
| | | } |
| | | if (gdPatrolTaskVO.getAlgorithmIds() != null && !gdPatrolTaskVO.getAlgorithmIds().isEmpty()) { |
| | | // 将 List<String> 转换为逗号分隔的字符串 |
| | | String algorithmIdStr = String.join(",", gdPatrolTaskVO.getAlgorithmIds()); |
| | | param.setAlgorithmId(algorithmIdStr); |
| | | } |
| | | // 机构 |
| | | param.setDeptId(gdPatrolTaskVO.getCreateDept()); |
| | | // 巡检类型 |
| | | // param.setInspectionTypeArr(gdPatrolTaskVO.getPatrolTaskType()); |
| | | param.setInspectionType(gdPatrolTaskVO.getPatrolTaskType()); |
| | | // 机巢名称 |
| | | param.setAirportName(gdPatrolTaskVO.getDeviceName()); |
| | | param.setStatus("待执行"); |
| | | param.setTaskType("航线飞行"); |
| | | param.setTaskType("定时飞行"); |
| | | return param; |
| | | } |
| | | |
| | |
| | | return updateResult; |
| | | } |
| | | |
| | | @Override |
| | | public List<GdPatrolTaskSimpleVO> selectListByWorkOrderId(Long workOrderId) { |
| | | return baseMapper.selectListByWorkOrderId(workOrderId); |
| | | } |
| | | |
| | | } |