| | |
| | | import org.sxkj.gd.workorder.mapper.GdWorkOrderMapper; |
| | | import org.sxkj.gd.workorder.param.GdPatrolTaskAuditParam; |
| | | import org.sxkj.gd.workorder.param.GdPatrolTaskPageParam; |
| | | import org.sxkj.gd.workorder.param.GdPatrolTaskPendingAcceptanceQueryParam; |
| | | import org.sxkj.gd.workorder.service.IGdManageDeviceService; |
| | | import org.sxkj.gd.workorder.service.IGdPatrolTaskService; |
| | | 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.utils.WorkOrderStatusAggregator; |
| | | import org.sxkj.gd.workorder.vo.GdPatrolTaskSimpleVO; |
| | | import org.sxkj.gd.workorder.vo.GdPatrolTaskVO; |
| | | import org.sxkj.gd.xingtu.JianXingtuApiService; |
| | |
| | | @Override |
| | | public IPage<GdPatrolTaskVO> selectGdPatrolTaskPage(IPage<GdPatrolTaskVO> page, GdPatrolTaskPageParam gdPatrolTask) { |
| | | List<Long> deptList = new ArrayList<>(); |
| | | if (!AuthUtil.isAdministrator() || !AuthUtil.isAdmin()) { |
| | | if (!(AuthUtil.isAdministrator() || AuthUtil.isAdmin())) { |
| | | deptList = SysCache.getDeptChildIds(Long.valueOf(StringUtil.isBlank(AuthUtil.getDeptId()) ? "0" : AuthUtil.getDeptId())); |
| | | } |
| | | gdPatrolTask.setDeptList(deptList); |
| | |
| | | if (pushResult != null && !pushResult.isSuccess()) { |
| | | String errorMsg = pushResult.getMsg(); |
| | | log.error("推送星图飞行任务失败: {}", errorMsg); |
| | | throw new RuntimeException("推送星图飞行任务失败: " + errorMsg); |
| | | throw new RuntimeException(errorMsg + ",请更改执行时间重新提交。"); |
| | | } |
| | | // 查询同一个工单下的所有子任务 |
| | | List<GdPatrolTaskEntity> subTasks = list(Wrappers.<GdPatrolTaskEntity>lambdaQuery() |
| | |
| | | } |
| | | } |
| | | 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); |
| | | } |
| | | // 使用状态聚合工具类计算主任务状态 |
| | | WorkOrderStatusEnum newWorkOrderStatus = WorkOrderStatusAggregator.aggregateWorkOrderStatus(subTasks); |
| | | |
| | | // 更新主任务状态 |
| | | updateWorkOrderStatusAndFlow(task.getWorkOrderId(), newWorkOrderStatus); |
| | | } |
| | | // 7. 验收拒绝 |
| | | if (auditStatus == 7) { |
| | |
| | | // 1. 更新当前任务状态 |
| | | boolean updateResult = updateById(auditParam); |
| | | if (!updateResult) { |
| | | log.warn("更新任务失败,任务ID: {}"); |
| | | log.warn("更新任务失败,任务ID: {}", auditParam.getId()); |
| | | return false; |
| | | } |
| | | |
| | |
| | | GdPatrolTaskEntity patrolTaskEntity = Optional.ofNullable(getById(auditParam.getId())) |
| | | .orElseThrow(() -> new RuntimeException("任务不存在,任务ID: " + auditParam.getId())); |
| | | |
| | | // 3. 保存巡查工单流转 |
| | | saveWorkOrderFlow(patrolTaskEntity.getWorkOrderId(), PatrolTaskStatusEnum.PENDING_ACCEPTANCE, null, null); |
| | | // 3. 保存巡查工单流转(使用传入的实际状态) |
| | | PatrolTaskStatusEnum statusEnum = PatrolTaskStatusEnum.getByValue(auditParam.getTaskStatus()); |
| | | if (statusEnum != null) { |
| | | saveWorkOrderFlow(patrolTaskEntity.getId(), statusEnum, null, patrolTaskEntity.getAreaCode()); |
| | | } |
| | | |
| | | // 4. 查询同一个工单下的所有子任务 |
| | | List<GdPatrolTaskEntity> subTasks = list(Wrappers.<GdPatrolTaskEntity>lambdaQuery() |
| | |
| | | } |
| | | |
| | | /** |
| | | * 查询待验收状态的巡查任务列表(对外接口) |
| | | * |
| | | * @param queryParam 查询参数,包含任务名称和时间区间 |
| | | * @return 待验收状态的巡查任务列表 |
| | | */ |
| | | @Override |
| | | public List<GdPatrolTaskVO> selectPendingAcceptanceTasks(GdPatrolTaskPendingAcceptanceQueryParam queryParam) { |
| | | // 1. 参数校验:防止空指针 |
| | | if (queryParam == null) { |
| | | queryParam = new GdPatrolTaskPendingAcceptanceQueryParam(); |
| | | } |
| | | |
| | | // 2. 调用Mapper查询待验收状态的巡查任务 |
| | | List<GdPatrolTaskVO> pendingAcceptanceTasks = baseMapper.selectPendingAcceptanceTasks(queryParam); |
| | | |
| | | // 3. 返回查询结果 |
| | | return pendingAcceptanceTasks; |
| | | } |
| | | |
| | | /** |
| | | * 将区域编码转换为多级行政区划编码格式 |
| | | * |
| | | * @param areaCode 区域编码(如:360802) |