吉安感知网项目-后端
rain
2026-01-20 cdc60b89add7a32ee458c4b9c27acfdf40fc14fd
Merge remote-tracking branch 'origin/master'
13 files modified
322 ■■■■■ changed files
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdPatrolTaskController.java 2 ●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdWorkOrderFlowController.java 46 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/enums/PatrolTaskStatusEnum.java 46 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/enums/WorkOrderStatusEnum.java 10 ●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/GdPatrolTaskAuditParam.java 4 ●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/WorkOrderAddParam.java 2 ●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/WorkOrderPageParam.java 2 ●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/WorkOrderStatusParam.java 2 ●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/IGdPatrolTaskService.java 7 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java 6 ●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdWorkOrderServiceImpl.java 163 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/vo/GdWorkOrderFlowVO.java 16 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/wrapper/GdWorkOrderFlowWrapper.java 16 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdPatrolTaskController.java
@@ -173,7 +173,7 @@
    @ApiOperationSupport(order = 10)
    @ApiOperation(value = "审核巡查任务", notes = "传入审核参数,拒绝时必须填写拒绝原因")
    public R audit(@Valid @RequestBody GdPatrolTaskAuditParam auditParam) {
        boolean result = gdPatrolTaskService.auditPatrolTask(auditParam.getId(), auditParam.getAuditStatus(), auditParam.getRejectReason());
        boolean result = gdPatrolTaskService.auditPatrolTask(auditParam);
        return R.status(result);
    }
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdWorkOrderFlowController.java
@@ -1,19 +1,3 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.workorder.controller;
import io.swagger.annotations.Api;
@@ -70,26 +54,26 @@
        return R.data(GdWorkOrderFlowWrapper.build().entityVO(detail));
    }
    /**
     * 流程记录表 分页
     * 流程记录表 列表
     */
    // @GetMapping("/list")
    // @ApiOperationSupport(order = 2)
    // @ApiOperation(value = "分页", notes = "传入gdWorkOrderFlow")
    // public R<IPage<GdWorkOrderFlowVO>> list(@ApiIgnore @RequestParam Map<String, Object> gdWorkOrderFlow, Query query) {
    //     IPage<GdWorkOrderFlowEntity> pages = gdWorkOrderFlowService.page(Condition.getPage(query), Condition.getQueryWrapper(gdWorkOrderFlow, GdWorkOrderFlowEntity.class));
    //     return R.data(GdWorkOrderFlowWrapper.build().pageVO(pages));
    // }
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "列表", notes = "传入gdWorkOrderFlow")
    public R<List<GdWorkOrderFlowVO>> list(@ApiIgnore @RequestParam Map<String, Object> gdWorkOrderFlow) {
        List<GdWorkOrderFlowEntity> list = gdWorkOrderFlowService.list(Condition.getQueryWrapper(gdWorkOrderFlow, GdWorkOrderFlowEntity.class));
        return R.data(GdWorkOrderFlowWrapper.build().entityVOList(list));
    }
    /**
     * 流程记录表 自定义分页
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "传入gdWorkOrderFlow")
    public R<IPage<GdWorkOrderFlowVO>> page(GdWorkOrderFlowVO gdWorkOrderFlow, Query query) {
        IPage<GdWorkOrderFlowVO> pages = gdWorkOrderFlowService.selectGdWorkOrderFlowPage(Condition.getPage(query), gdWorkOrderFlow);
        return R.data(pages);
    }
    // @GetMapping("/page")
    // @ApiOperationSupport(order = 3)
    // @ApiOperation(value = "分页", notes = "传入gdWorkOrderFlow")
    // public R<IPage<GdWorkOrderFlowVO>> page(GdWorkOrderFlowVO gdWorkOrderFlow, Query query) {
    //     IPage<GdWorkOrderFlowVO> pages = gdWorkOrderFlowService.selectGdWorkOrderFlowPage(Condition.getPage(query), gdWorkOrderFlow);
    //     return R.data(pages);
    // }
    /**
     * 流程记录表 新增
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/enums/PatrolTaskStatusEnum.java
@@ -97,4 +97,48 @@
    public static boolean isValidValue(String value) {
        return getByValue(value) != null;
    }
}
    /**
     * 检查当前状态是否允许指定的操作类型
     * @param operationType 操作类型:1接单,2拒接接单,3申请取消,4申请修改,5同意取消,6不同意取消,7同意修改,8不同意修改
     * @return 是否允许操作
     */
    public boolean isAllowedOperation(Integer operationType) {
        if (operationType == null) {
            return false;
        }
        switch (this) {
            case PENDING_SIGNING:
                // 发布中_接单中状态允许:1接单,2拒接接单
                return operationType == 1 || operationType == 2;
            case REJECTED_SIGNING:
                // 响应中_待拆分状态允许:3申请取消,4申请修改
                return operationType == 3 || operationType == 4 ;
            case WITHDRAWN:
                // 响应中_申请取消状态允许:5同意取消,6不同意取消
                return operationType == 5 || operationType == 6;
            case PENDING_AUDIT:
                // 响应中_申请修改状态允许:7同意修改,8不同意修改
                return operationType ==7 || operationType == 8 ;
            case AUDIT_REJECTED:
                // 响应中_拒绝取消状态允许:3申请取消
                return operationType == 3;
            case AUDIT_PASSED:
                // 响应中_拒绝修改状态允许:4申请修改
                return operationType == 4;
            case PENDING_ACCEPTANCE:
                // 响应中_拒绝修改状态允许:4申请修改
                return operationType == 4;
            case REJECTED_ACCEPTANCE:
                // 响应中_拒绝修改状态允许:4申请修改
                return operationType == 4;
            case ACCEPTANCE_PASSED:
                // 响应中_拒绝修改状态允许:4申请修改
                return operationType == 4;
            default:
                // 其他状态不允许操作
                return false;
        }
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/enums/WorkOrderStatusEnum.java
@@ -212,7 +212,7 @@
    /**
     * 检查当前状态是否允许指定的操作类型
     * @param operationType 操作类型:1接单,2拒接接单,3申请取消,4申请修改, 5同意取消  6不同意取消 7.同意修改 8.不同意修改
     * @param operationType 操作类型:1接单,2拒接接单,3申请取消,4申请修改,5同意取消,6不同意取消,7同意修改,8不同意修改
     * @return 是否允许操作
     */
    public boolean isAllowedOperation(Integer operationType) {
@@ -228,16 +228,16 @@
                // 响应中_待拆分状态允许:3申请取消,4申请修改
                return operationType == 3 || operationType == 4 ;
            case RESPONDING_APPLY_CANCEL:
                // 响应中_申请取消状态允许:6同意取消,8不同意取消
                // 响应中_申请取消状态允许:5同意取消,6不同意取消
                return operationType == 5 || operationType == 6;
            case RESPONDING_APPLY_MODIFY:
                // 响应中_申请修改状态允许:7同意修改,9不同意修改
                // 响应中_申请修改状态允许:7同意修改,8不同意修改
                return operationType ==7 || operationType == 8 ;
            case RESPONDING_REJECT_CANCEL:
                // 响应中_拒绝取消状态允许:1接单
                // 响应中_拒绝取消状态允许:3申请取消
                return operationType == 3;
            case RESPONDING_REJECT_MODIFY:
                // 响应中_拒绝修改状态允许:1接单
                // 响应中_拒绝修改状态允许:4申请修改
                return operationType == 4;
            default:
                // 其他状态不允许操作
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/GdPatrolTaskAuditParam.java
@@ -16,9 +16,9 @@
    private Long id;
    /**
     * 审核状态:4审核通过、5审核拒绝
     * 审核状态:
     */
    @ApiModelProperty(value = "审核状态:4审核通过、5审核拒绝", required = true)
    @ApiModelProperty(value = "审核状态:1.同意签收、2.拒绝签收 、3.撤回任务 、4.同意审核、 5.拒绝审核、 6.验收通过、 7.验收拒绝", required = true)
    @NotNull(message = "审核状态不能为空")
    private String auditStatus;
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/WorkOrderAddParam.java
@@ -33,7 +33,7 @@
    @NotNull
    private String deviceLoadDemand;
    @ApiModelProperty(value = "工单状态:0草稿、10发布中_接单中、11发布中_拒绝接单、20响应中_待拆分、21响应中_申请取消、22响应中_申请修改、23响应中_已取消、30执行中_待全部完成、31执行中_协商修改、40完成待验_待全部验收、50验收通过_待结算、60结算完成_已结算")
    @ApiModelProperty(value = "工单状态:0草稿、10发布中_接单中、11发布中_拒绝接单、20响应中_待拆分、21响应中_申请取消、22响应中_申请修改、23响应中_已取消、24响应中_拒绝取消、25响应中_拒绝修改 30执行中_待全部完成、31执行中_协商修改、40完成待验_待全部验收、50验收通过_待结算、60结算完成_已结算")
    @NotNull
    private String workOrderStatus;
    /**
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/WorkOrderPageParam.java
@@ -22,7 +22,7 @@
    @NotNull
    private String workOrderType;
    @ApiModelProperty(value = "工单状态:0草稿、10发布中_接单中、11发布中_拒绝接单、20响应中_待拆分、21响应中_申请取消、22响应中_申请修改、23响应中_已取消、30执行中_待全部完成、31执行中_协商修改、40完成待验_待全部验收、50验收通过_待结算、60结算完成_已结算")
    @ApiModelProperty(value = "工单状态:0草稿、10发布中_接单中、11发布中_拒绝接单、20响应中_待拆分、21响应中_申请取消、22响应中_申请修改、23响应中_已取消、24响应中_拒绝取消、25响应中_拒绝修改 30执行中_待全部完成、31执行中_协商修改、40完成待验_待全部验收、50验收通过_待结算、60结算完成_已结算")
    @NotNull
    private String workOrderStatus;
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/WorkOrderStatusParam.java
@@ -23,7 +23,7 @@
    /**
     * 操作类型:1接单,2拒接接单
     */
    @ApiModelProperty(value = "操作类型:1接单,2拒接接单,3申请取消,4申请修改, 5同意取消  6不同意取消 7.同意修改 7.不同意修改 ", required = true)
    @ApiModelProperty(value = "操作类型:1接单,2拒接接单,3申请取消,4申请修改, 5同意取消  6不同意取消 7.同意修改 8.不同意修改 ", required = true)
    @NotNull(message = "操作类型不能为空")
    private Integer operationType;
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/IGdPatrolTaskService.java
@@ -18,6 +18,7 @@
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.sxkj.gd.workorder.entity.GdPatrolTaskEntity;
import org.sxkj.gd.workorder.param.GdPatrolTaskAuditParam;
import org.sxkj.gd.workorder.param.GdPatrolTaskPageParam;
import org.sxkj.gd.workorder.vo.GdPatrolTaskVO;
import org.sxkj.gd.workorder.excel.GdPatrolTaskExcel;
@@ -59,10 +60,8 @@
    /**
     * 审核巡查任务
     * @param id 任务ID
     * @param auditStatus 审核状态:4审核通过、5审核拒绝
     * @param rejectReason 拒绝原因(审核拒绝时必填)
     * @param auditParam
     * @return
     */
    boolean auditPatrolTask(Long id, String auditStatus, String rejectReason);
    boolean auditPatrolTask(GdPatrolTaskAuditParam auditParam);
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java
@@ -27,6 +27,7 @@
import org.sxkj.gd.workorder.enums.PatrolTaskStatusEnum;
import org.sxkj.gd.workorder.enums.WorkOrderStatusEnum;
import org.sxkj.gd.workorder.enums.WorkOrderTypeEnum;
import org.sxkj.gd.workorder.param.GdPatrolTaskAuditParam;
import org.sxkj.gd.workorder.param.GdPatrolTaskPageParam;
import org.sxkj.gd.workorder.service.IGdWorkOrderFlowService;
import org.sxkj.gd.workorder.vo.GdPatrolTaskVO;
@@ -109,7 +110,10 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean auditPatrolTask(Long id, String auditStatus, String rejectReason) {
    public boolean auditPatrolTask(GdPatrolTaskAuditParam auditParam) {
        Long id = auditParam.getId();
        String auditStatus = auditParam.getAuditStatus();
        String rejectReason = auditParam.getRejectReason();
        // 1. 获取巡查任务
        GdPatrolTaskEntity task = getById(id);
        if (task == null) {
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdWorkOrderServiceImpl.java
@@ -1,19 +1,3 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.workorder.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
@@ -87,53 +71,68 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean saveOrUpdateWorkOrder(WorkOrderAddParam workOrderParam) {
        GdWorkOrderEntity entity = Objects.requireNonNull(BeanUtil.copy(workOrderParam, GdWorkOrderEntity.class));
        // 参数转换
        GdWorkOrderEntity entity = BeanUtil.copy(workOrderParam, GdWorkOrderEntity.class);
        // 验证并格式化几何数据
        String geom = entity.getGeom();
        String validatedGeom = GeomUtils.validateAndFormatGeom(geom);
        String validatedGeom = GeomUtils.validateAndFormatGeom(entity.getGeom());
        if (validatedGeom == null) {
            return false;
        }
        // 设置验证后的几何数据
        entity.setGeom(validatedGeom);
        // 生成工单编号
        if (StringUtils.isBlank(entity.getWorkOrderCode())) {
            // 使用时间戳生成唯一工单编号
            String timestamp = OrderNumUtils.initOrderNum(WordOrderConstant.ORDER_REDIS_KEY);
            entity.setWorkOrderCode(WordOrderConstant.ORDER_PREFIX + timestamp);
        }
        Integer save = 0;
        // 保存操作
        Integer saveResult;
        Date now = new Date();
        if (entity.getId() != null) {
            // 更新操作
            entity.setUpdateUser(AuthUtil.getUserId());
            entity.setUpdateTime(new Date());
            save = baseMapper.updateWorkOrderById(entity);
            entity.setUpdateTime(now);
            // 状态转换:拒绝状态修改后自动转换为待处理状态
            switch (entity.getWorkOrderStatus()) {
                case "11": // 发布中_拒绝接单 → 发布中_接单中
                    entity.setWorkOrderStatus(WorkOrderStatusEnum.PUBLISHING_ACCEPTING.getCode());
                    break;
                case "24": // 响应中_拒绝取消 → 响应中_申请取消
                    entity.setWorkOrderStatus(WorkOrderStatusEnum.RESPONDING_APPLY_CANCEL.getCode());
                    break;
                case "25": // 响应中_拒绝修改 → 响应中_申请修改
                    entity.setWorkOrderStatus(WorkOrderStatusEnum.RESPONDING_APPLY_MODIFY.getCode());
                    break;
            }
            saveResult = baseMapper.updateWorkOrderById(entity);
        } else {
            // 新增操作
            entity.setCreateUser(AuthUtil.getUserId());
            entity.setCreateTime(new Date());
            entity.setCreateTime(now);
            entity.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
            entity.setStatus(1);
            entity.setIsDeleted(0);
            save = baseMapper.saveWorkOrder(entity);
            saveResult = baseMapper.saveWorkOrder(entity);
        }
        // 保存成功
        if (save > 0) {
            // 保存流转记录
            GdWorkOrderFlowEntity gdWorkOrderFlowEntity = new GdWorkOrderFlowEntity();
            gdWorkOrderFlowEntity.setCreateUser(AuthUtil.getUserId());
            gdWorkOrderFlowEntity.setWorkOrderId(entity.getId());
            gdWorkOrderFlowEntity.setFlowName(WorkOrderStatusEnum.STAGE_WORK_ORDER_RELEASE.getStageDesc());
            gdWorkOrderFlowEntity.setFlowDesc(AuthUtil.getUserName() + " " + org.springblade.core.tool.utils.DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
            gdWorkOrderFlowEntity.setOperator(AuthUtil.getUserName());
            gdWorkOrderFlowEntity.setType(WorkOrderTypeEnum.WORK_ORDER_TASK.getValue());
            gdWorkOrderFlowEntity.setAreaCode(entity.getAreaCode());
            gdWorkOrderFlowEntity.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
            boolean save1 = gdWorkOrderFlowService.save(gdWorkOrderFlowEntity);
            return save1;
        // 保存成功则保存流转记录
        if (saveResult > 0) {
            // 构建并保存流转记录
            GdWorkOrderFlowEntity flowEntity = new GdWorkOrderFlowEntity();
            flowEntity.setCreateUser(AuthUtil.getUserId());
            flowEntity.setWorkOrderId(entity.getId());
            flowEntity.setFlowName(WorkOrderStatusEnum.STAGE_WORK_ORDER_RELEASE.getStageDesc());
            flowEntity.setFlowDesc(String.format("%s %s", AuthUtil.getUserName(), org.springblade.core.tool.utils.DateUtil.format(now, "yyyy-MM-dd HH:mm:ss")));
            flowEntity.setOperator(AuthUtil.getUserName());
            flowEntity.setType(WorkOrderTypeEnum.WORK_ORDER_TASK.getValue());
            flowEntity.setAreaCode(entity.getAreaCode());
            flowEntity.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
            return gdWorkOrderFlowService.save(flowEntity);
        }
        return false;
    }
@@ -146,82 +145,62 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean handleWorkOrderStatus(WorkOrderStatusParam statusParam) {
        // 获取工单信息
        // 1. 获取工单信息
        GdWorkOrderEntity workOrder = getById(statusParam.getWorkOrderId());
        if (workOrder == null) {
            return false;
        }
        // 检查当前状态是否允许该操作类型
        // 2. 状态权限校验
        WorkOrderStatusEnum currentStatus = WorkOrderStatusEnum.getByCode(workOrder.getWorkOrderStatus());
        if (currentStatus == null || !currentStatus.isAllowedOperation(statusParam.getOperationType())) {
        Integer operationType = statusParam.getOperationType();
        if (currentStatus == null || !currentStatus.isAllowedOperation(operationType)) {
            return false;
        }
        // 操作类型:1接单,2拒接接单,3申请取消,4申请修改, 5同意取消  6不同意取消 7.同意修改 8.不同意修改
        Integer operationType = statusParam.getOperationType();
        String newStatus = null;
        String flowName = null;
        // 统一设置流转描述前缀
        String flowDesc = AuthUtil.getUserName() + " " + org.springblade.core.tool.utils.DateUtil.format(new Date(), CommonConstant.YYYY_MM_DD_HH_MM_SS);
        // 3. 确定新状态和流转名称
        WorkOrderStatusEnum newStatusEnum;
        switch (operationType) {
            case 1:
            case 7:
                // 接单操作:更新状态为响应中_待拆分(20)
                newStatus = WorkOrderStatusEnum.RESPONDING_TO_BE_SPLIT.getCode();
                flowName = WorkOrderStatusEnum.RESPONDING_TO_BE_SPLIT.getStageDesc();
            case 1: // 接单
            case 7: // 同意修改
                newStatusEnum = WorkOrderStatusEnum.RESPONDING_TO_BE_SPLIT;
                break;
            case 2:
                // 拒接接单操作:更新状态为发布中_拒绝接单(11)
                newStatus = WorkOrderStatusEnum.PUBLISHING_REJECTING.getCode();
                flowName = WorkOrderStatusEnum.PUBLISHING_REJECTING.getStageDesc();
            case 2: // 拒接接单
                newStatusEnum = WorkOrderStatusEnum.PUBLISHING_REJECTING;
                break;
            case 3:
                // 申请取消操作:更新状态为响应中_申请取消(21)
                newStatus = WorkOrderStatusEnum.RESPONDING_APPLY_CANCEL.getCode();
                flowName = WorkOrderStatusEnum.RESPONDING_APPLY_CANCEL.getStageDesc();
            case 3: // 申请取消
                newStatusEnum = WorkOrderStatusEnum.RESPONDING_APPLY_CANCEL;
                break;
            case 4:
                // 申请修改操作:更新状态为响应中_申请修改(22)
                newStatus = WorkOrderStatusEnum.RESPONDING_APPLY_MODIFY.getCode();
                flowName = WorkOrderStatusEnum.RESPONDING_APPLY_MODIFY.getStageDesc();
            case 4: // 申请修改
                newStatusEnum = WorkOrderStatusEnum.RESPONDING_APPLY_MODIFY;
                break;
            case 5:
                // 已取消操作:更新状态为响应中_已取消(23)
                newStatus = WorkOrderStatusEnum.RESPONDING_CANCELED.getCode();
                flowName = WorkOrderStatusEnum.RESPONDING_CANCELED.getStageDesc();
            case 5: // 同意取消
                newStatusEnum = WorkOrderStatusEnum.RESPONDING_CANCELED;
                break;
            case 6:
                // 已取消操作:更新状态为响应中_已取消(24)
                newStatus = WorkOrderStatusEnum.RESPONDING_REJECT_CANCEL.getCode();
                flowName = WorkOrderStatusEnum.RESPONDING_REJECT_CANCEL.getStageDesc();
            case 6: // 不同意取消
                newStatusEnum = WorkOrderStatusEnum.RESPONDING_REJECT_CANCEL;
                break;
            case 8:
                // 已取消操作:更新状态为响应中_已取消(25)
                newStatus = WorkOrderStatusEnum.RESPONDING_REJECT_MODIFY.getCode();
                flowName = WorkOrderStatusEnum.RESPONDING_REJECT_MODIFY.getStageDesc();
            case 8: // 不同意修改
                newStatusEnum = WorkOrderStatusEnum.RESPONDING_REJECT_MODIFY;
                break;
            default:
                // 无效的操作类型
            default: // 无效操作类型
                return false;
        }
        // 更新工单状态
        workOrder.setWorkOrderStatus(newStatus);
        // 4. 更新工单状态
        Date now = new Date();
        workOrder.setWorkOrderStatus(newStatusEnum.getCode());
        workOrder.setUpdateUser(AuthUtil.getUserId());
        workOrder.setUpdateTime(new Date());
        workOrder.setGeom(null);
        boolean update = updateById(workOrder);
        workOrder.setUpdateTime(now);
        boolean updateResult = updateById(workOrder);
        // 更新成功,保存流转记录
        if (update) {
        // 5. 保存流转记录
        if (updateResult) {
            GdWorkOrderFlowEntity flowEntity = new GdWorkOrderFlowEntity();
            flowEntity.setCreateUser(AuthUtil.getUserId());
            flowEntity.setWorkOrderId(workOrder.getId());
            flowEntity.setFlowName(flowName);
            flowEntity.setFlowDesc(flowDesc);
            flowEntity.setFlowName(newStatusEnum.getStageDesc());
            flowEntity.setFlowDesc(String.format("%s %s", AuthUtil.getUserName(), org.springblade.core.tool.utils.DateUtil.format(now, CommonConstant.YYYY_MM_DD_HH_MM_SS)));
            flowEntity.setOperator(AuthUtil.getUserName());
            flowEntity.setType(WorkOrderTypeEnum.WORK_ORDER_TASK.getValue());
            flowEntity.setAreaCode(workOrder.getAreaCode());
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/vo/GdWorkOrderFlowVO.java
@@ -32,11 +32,25 @@
    private static final long serialVersionUID = 1L;
    /**
     * 流转名称
     */
    @ApiModelProperty(value = "流转名称")
    private String flowName;
    /**
     * 流转描述
     */
    @ApiModelProperty(value = "流转描述")
    private String flowDesc;
    /**
     * 关联工单任务表ID/巡查任务ID
     */
    @ApiModelProperty(value = "关联工单任务表ID/巡查任务ID")
    private Long workOrderId;
    /**
     * 操作人
     */
    @ApiModelProperty(value = "操作人")
    private String operator;
    /**
     * 类型(0工单任务 1巡查任务)
     */
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/wrapper/GdWorkOrderFlowWrapper.java
@@ -20,7 +20,10 @@
import org.springblade.core.tool.utils.BeanUtil;
import org.sxkj.gd.workorder.entity.GdWorkOrderFlowEntity;
import org.sxkj.gd.workorder.vo.GdWorkOrderFlowVO;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * 流程记录表 包装类,返回视图层所需的字段
@@ -46,5 +49,18 @@
        return gdWorkOrderFlowVO;
    }
    /**
     * 将实体列表转换为VO列表
     * @param list 实体列表
     * @return VO列表
     */
    public List<GdWorkOrderFlowVO> entityVOList(List<GdWorkOrderFlowEntity> list) {
        if (list == null || list.isEmpty()) {
            return new ArrayList<>();
        }
        return list.stream()
                .map(this::entityVO)
                .collect(Collectors.toList());
    }
}