From cdc60b89add7a32ee458c4b9c27acfdf40fc14fd Mon Sep 17 00:00:00 2001
From: rain <1679827795@qq.com>
Date: Tue, 20 Jan 2026 15:02:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdPatrolTaskController.java    |    2 
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/WorkOrderStatusParam.java           |    2 
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/enums/PatrolTaskStatusEnum.java           |   46 +++++++
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdWorkOrderServiceImpl.java  |  163 +++++++++++---------------
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/WorkOrderPageParam.java             |    2 
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/GdPatrolTaskAuditParam.java         |    4 
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/wrapper/GdWorkOrderFlowWrapper.java       |   16 ++
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/IGdPatrolTaskService.java         |    7 
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/WorkOrderAddParam.java              |    2 
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdWorkOrderFlowController.java |   46 ++-----
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/enums/WorkOrderStatusEnum.java            |   10 
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/vo/GdWorkOrderFlowVO.java                 |   16 ++
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java |    6 
 13 files changed, 181 insertions(+), 141 deletions(-)

diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdPatrolTaskController.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdPatrolTaskController.java
index 780d8a5..beaf2f2 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdPatrolTaskController.java
+++ b/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);
 	}
 
diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdWorkOrderFlowController.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdWorkOrderFlowController.java
index d8b95a2..c83abdb 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdWorkOrderFlowController.java
+++ b/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);
+	// }
 
 	/**
 	 * 流程记录表 新增
diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/enums/PatrolTaskStatusEnum.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/enums/PatrolTaskStatusEnum.java
index ca222e3..bfed17b 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/enums/PatrolTaskStatusEnum.java
+++ b/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;
     }
-}
\ No newline at end of file
+
+	/**
+	 * 检查当前状态是否允许指定的操作类型
+	 * @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;
+		}
+	}
+}
diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/enums/WorkOrderStatusEnum.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/enums/WorkOrderStatusEnum.java
index 6402fdf..5d2924c 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/enums/WorkOrderStatusEnum.java
+++ b/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:
                 // 其他状态不允许操作
diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/GdPatrolTaskAuditParam.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/GdPatrolTaskAuditParam.java
index 40bf51f..d165944 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/GdPatrolTaskAuditParam.java
+++ b/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;
 
diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/WorkOrderAddParam.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/WorkOrderAddParam.java
index e3223ed..7e406a1 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/WorkOrderAddParam.java
+++ b/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;
 	/**
diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/WorkOrderPageParam.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/WorkOrderPageParam.java
index ba72890..6d3bdc5 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/WorkOrderPageParam.java
+++ b/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;
 
diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/WorkOrderStatusParam.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/WorkOrderStatusParam.java
index 7b95ce2..22275b0 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/WorkOrderStatusParam.java
+++ b/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;
 
diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/IGdPatrolTaskService.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/IGdPatrolTaskService.java
index 74b094c..acdd69c 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/IGdPatrolTaskService.java
+++ b/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);
 }
diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java
index 262c7e0..c333f90 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java
+++ b/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) {
diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdWorkOrderServiceImpl.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdWorkOrderServiceImpl.java
index a89f39d..2e25613 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdWorkOrderServiceImpl.java
+++ b/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());
diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/vo/GdWorkOrderFlowVO.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/vo/GdWorkOrderFlowVO.java
index 8558836..a077234 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/vo/GdWorkOrderFlowVO.java
+++ b/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巡查任务)
 	 */
diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/wrapper/GdWorkOrderFlowWrapper.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/wrapper/GdWorkOrderFlowWrapper.java
index 60db9a1..e3e0193 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/wrapper/GdWorkOrderFlowWrapper.java
+++ b/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());
+	}
 
 }

--
Gitblit v1.9.3