吉安感知网项目-后端
linwei
2026-01-31 b723c79db5ad9248d0eb92e9c98c6d9989189311
优化流程
3 files modified
2 files added
180 ■■■■■ changed files
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdWorkOrderFlowController.java 13 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/enums/WorkOrderStatusEnum.java 20 ●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdWorkOrderFlowServiceImpl.java 12 ●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/vo/WorkOrderStageVO.java 63 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/vo/WorkOrderStatusDetailVO.java 72 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdWorkOrderFlowController.java
@@ -63,7 +63,7 @@
     */
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "列表", notes = "传入gdWorkOrderFlow")
    @ApiOperation(value = "工单流程列表", notes = "传入gdWorkOrderFlow")
    public R<List<WorkOrderStageVO>> list(@ApiIgnore @RequestParam Map<String, Object> gdWorkOrderFlow) {
        // 调用服务层方法获取分层结构的流程数据
        List<WorkOrderStageVO> stages = gdWorkOrderFlowService.getHierarchicalFlow(Condition.getQueryWrapper(gdWorkOrderFlow, GdWorkOrderFlowEntity.class));
@@ -72,6 +72,17 @@
    }
    /**
     * 流程记录表 列表
     */
    @GetMapping("/patrolList")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "巡查流程列表", notes = "传入gdWorkOrderFlow")
    public R<List<GdWorkOrderFlowVO>> patrolList(@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")
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/enums/WorkOrderStatusEnum.java
@@ -11,32 +11,32 @@
    /**
     * 工单阶段:工单发布
     */
    STAGE_WORK_ORDER_RELEASE("工单发布"),
    STAGE_WORK_ORDER_RELEASE("工单发布", "1"),
    /**
     * 工单阶段:接单响应
     */
    STAGE_ORDER_RESPONSE("接单响应"),
    STAGE_ORDER_RESPONSE("接单响应", "2"),
    /**
     * 工单阶段:执行中
     */
    STAGE_IN_EXECUTION("执行中"),
    STAGE_IN_EXECUTION("执行中", "3"),
    /**
     * 工单阶段:完成待验
     */
    STAGE_COMPLETED_PENDING_INSPECTION("完成待验"),
    STAGE_COMPLETED_PENDING_INSPECTION("完成待验", "4"),
    /**
     * 工单阶段:验收通过
     */
    STAGE_ACCEPTED("验收通过"),
    STAGE_ACCEPTED("验收通过", "5"),
    /**
     * 工单阶段:结算完成
     */
    STAGE_SETTLEMENT_COMPLETED("结算完成"),
    STAGE_SETTLEMENT_COMPLETED("结算完成", "6"),
    // ------------------ 以下是工单状态 ------------------
@@ -104,9 +104,9 @@
    /**
     * 工单阶段构造函数
     */
    WorkOrderStatusEnum(String stageDesc) {
    WorkOrderStatusEnum(String stageDesc, String maxCode) {
        this.code = null;
        this.maxCode = null;
        this.maxCode = maxCode;
        this.desc = null;
        this.stageDesc = stageDesc;
        this.isStage = true;
@@ -115,9 +115,9 @@
    /**
     * 工单状态构造函数
     */
    WorkOrderStatusEnum(String code, String miniCode, String desc, String stageDesc) {
    WorkOrderStatusEnum(String code, String maxCode, String desc, String stageDesc) {
        this.code = code;
        this.maxCode = miniCode;
        this.maxCode = maxCode;
        this.desc = desc;
        this.stageDesc = stageDesc;
        this.isStage = false;
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdWorkOrderFlowServiceImpl.java
@@ -79,7 +79,7 @@
        stages.add(buildStage(WorkOrderStatusEnum.STAGE_WORK_ORDER_RELEASE.getStageDesc(), Arrays.asList(
                WorkOrderStatusEnum.PUBLISHING_ACCEPTING.getStageDesc(),
                WorkOrderStatusEnum.PUBLISHING_REJECTING.getStageDesc()
        ), actualFlows, "1"));
        ), actualFlows, WorkOrderStatusEnum.STAGE_WORK_ORDER_RELEASE.getMaxCode()));
        // 接单响应阶段
        stages.add(buildStage(WorkOrderStatusEnum.STAGE_ORDER_RESPONSE.getStageDesc(), Arrays.asList(
@@ -87,28 +87,28 @@
                WorkOrderStatusEnum.RESPONDING_APPLY_CANCEL.getStageDesc(),
                WorkOrderStatusEnum.RESPONDING_APPLY_MODIFY.getStageDesc(),
                WorkOrderStatusEnum.RESPONDING_CANCELED.getStageDesc()
        ), actualFlows, "2"));
        ), actualFlows, WorkOrderStatusEnum.STAGE_ORDER_RESPONSE.getMaxCode()));
        // 执行中阶段
        stages.add(buildStage(WorkOrderStatusEnum.STAGE_IN_EXECUTION.getStageDesc(), Arrays.asList(
                WorkOrderStatusEnum.EXECUTING_TO_BE_COMPLETED.getStageDesc(),
                WorkOrderStatusEnum.EXECUTING_NEGOTIATE_MODIFY.getStageDesc()
        ), actualFlows, "3"));
        ), actualFlows, WorkOrderStatusEnum.STAGE_IN_EXECUTION.getMaxCode()));
        // 完成待验阶段
        stages.add(buildStage(WorkOrderStatusEnum.STAGE_COMPLETED_PENDING_INSPECTION.getStageDesc(), Arrays.asList(
                WorkOrderStatusEnum.COMPLETED_TO_BE_INSPECTED.getStageDesc()
        ), actualFlows, "4"));
        ), actualFlows, WorkOrderStatusEnum.STAGE_COMPLETED_PENDING_INSPECTION.getMaxCode()));
        // 验收通过阶段
        stages.add(buildStage(WorkOrderStatusEnum.STAGE_ACCEPTED.getStageDesc(), Arrays.asList(
                WorkOrderStatusEnum.ACCEPTED_TO_BE_SETTLED.getStageDesc()
        ), actualFlows, "5"));
        ), actualFlows, WorkOrderStatusEnum.STAGE_ACCEPTED.getMaxCode()));
        // 结算完成阶段
        stages.add(buildStage(WorkOrderStatusEnum.STAGE_SETTLEMENT_COMPLETED.getStageDesc(), Arrays.asList(
                WorkOrderStatusEnum.SETTLEMENT_COMPLETED.getStageDesc()
        ), actualFlows, "6"));
        ), actualFlows, WorkOrderStatusEnum.STAGE_SETTLEMENT_COMPLETED.getMaxCode()));
        return stages;
    }
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/vo/WorkOrderStageVO.java
New file
@@ -0,0 +1,63 @@
package org.sxkj.gd.workorder.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
 * 工单阶段视图对象
 * 表示工单流程中的一个主阶段,包含该阶段的名称和对应的子状态列表
 *
 * @author lw
 * @since 2026-01-31
 */
@Data
public class WorkOrderStageVO implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 阶段名称
     */
    @ApiModelProperty(value = "阶段名称")
    private String stageName;
    /**
     * 是否已到达该状态
     */
    @ApiModelProperty(value = "是否已到达该状态")
    private boolean reached;
    /**
     * 子状态列表
     */
    @ApiModelProperty(value = "子状态列表")
    private List<WorkOrderStatusDetailVO> child;
    /**
     * 构造函数
     *
     * @param stageName 阶段名称
     * @param child     子状态列表
     */
    public WorkOrderStageVO(String stageName, List<WorkOrderStatusDetailVO> child) {
        this.stageName = stageName;
        this.child = child;
        // 计算阶段的到达状态:如果有任何子状态已到达,则阶段视为已到达
        this.reached = child != null && child.stream().anyMatch(WorkOrderStatusDetailVO::isReached);
    }
    /**
     * 构造函数
     *
     * @param stageName 阶段名称
     * @param child     子状态列表
     * @param reached   是否已到达该阶段
     */
    public WorkOrderStageVO(String stageName, List<WorkOrderStatusDetailVO> child, boolean reached) {
        this.stageName = stageName;
        this.child = child;
        this.reached = reached;
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/vo/WorkOrderStatusDetailVO.java
New file
@@ -0,0 +1,72 @@
package org.sxkj.gd.workorder.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * 工单状态详情视图对象
 * 表示工单流程中一个具体状态的详细信息
 *
 * @author lw
 * @since 2026-01-31
 */
@Data
public class WorkOrderStatusDetailVO implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 状态名称
     */
    @ApiModelProperty(value = "状态名称")
    private String statusName;
    /**
     * 是否已到达该状态
     */
    @ApiModelProperty(value = "是否已到达该状态")
    private boolean reached;
    /**
     * 操作人
     */
    @ApiModelProperty(value = "操作人")
    private String operator;
    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;
    /**
     * 构造函数
     *
     * @param statusName 状态名称
     * @param reached    是否已到达
     * @param operator   操作人
     * @param createTime 创建时间
     */
    public WorkOrderStatusDetailVO(String statusName, boolean reached, String operator, Date createTime) {
        this.statusName = statusName;
        this.reached = reached;
        this.operator = operator;
        this.createTime = createTime;
    }
    /**
     * 构造函数(用于未到达的状态)
     *
     * @param statusName 状态名称
     */
    public WorkOrderStatusDetailVO(String statusName) {
        this.statusName = statusName;
        this.reached = false;
        this.operator = null;
        this.createTime = null;
    }
}