From 100b15efb7e655add8de26d71b80b882db05cabc Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Thu, 09 Apr 2026 15:45:23 +0800
Subject: [PATCH] opt:工单状态调整

---
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/entity/GdPatrolTaskEntity.java            |    4 ++
 drone-common/src/main/java/org/sxkj/common/handler/StringToIntegerTypeHandler.java                   |   44 ++++++++++++++++++++++
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java |   13 +++---
 3 files changed, 54 insertions(+), 7 deletions(-)

diff --git a/drone-common/src/main/java/org/sxkj/common/handler/StringToIntegerTypeHandler.java b/drone-common/src/main/java/org/sxkj/common/handler/StringToIntegerTypeHandler.java
new file mode 100644
index 0000000..c08442e
--- /dev/null
+++ b/drone-common/src/main/java/org/sxkj/common/handler/StringToIntegerTypeHandler.java
@@ -0,0 +1,44 @@
+package org.sxkj.common.handler;
+
+import org.apache.ibatis.type.BaseTypeHandler;
+import org.apache.ibatis.type.JdbcType;
+import org.apache.ibatis.type.MappedJdbcTypes;
+import org.apache.ibatis.type.MappedTypes;
+
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+/**
+ * String 与 smallint/int 的类型转换处理器
+ * 用于 Java 字段为 String 但数据库列为 smallint/int 的场景
+ * 写入时将 String 转为 Integer,读取时将 Integer 转为 String
+ */
+@MappedTypes(String.class)
+@MappedJdbcTypes(JdbcType.SMALLINT)
+public class StringToIntegerTypeHandler extends BaseTypeHandler<String> {
+
+	@Override
+	public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
+		ps.setInt(i, Integer.parseInt(parameter));
+	}
+
+	@Override
+	public String getNullableResult(ResultSet rs, String columnName) throws SQLException {
+		Object value = rs.getObject(columnName);
+		return value == null ? null : value.toString();
+	}
+
+	@Override
+	public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
+		Object value = rs.getObject(columnIndex);
+		return value == null ? null : value.toString();
+	}
+
+	@Override
+	public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
+		Object value = cs.getObject(columnIndex);
+		return value == null ? null : value.toString();
+	}
+}
diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/entity/GdPatrolTaskEntity.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/entity/GdPatrolTaskEntity.java
index a9b8c97..434e6e2 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/entity/GdPatrolTaskEntity.java
+++ b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/entity/GdPatrolTaskEntity.java
@@ -16,12 +16,15 @@
  */
 package org.sxkj.gd.workorder.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springblade.core.mp.base.BaseEntity;
+
+import org.sxkj.common.handler.StringToIntegerTypeHandler;
 
 import java.util.Date;
 
@@ -92,6 +95,7 @@
 	 * 状态:0待签收、1拒绝签收、2已撤回、3待审核、4审核驳回、5审核通过、6待验收、7拒绝验收、8验收通过
 	 */
 	@ApiModelProperty(value = "状态:0待签收、1拒绝签收、2已撤回、3待审核、4审核驳回、5审核通过、6待验收、7拒绝验收、8验收通过")
+	@TableField(typeHandler = StringToIntegerTypeHandler.class)
 	private String taskStatus;
 	/**
 	 * 区域编码
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 691771b..a3335f6 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
@@ -365,13 +365,12 @@
 				targetStatus = PatrolTaskStatusEnum.PENDING_AUDIT;
 				break;
 			default:
-				// 其他状态,保持原有状态
-				targetStatus = PatrolTaskStatusEnum.getByValue(currentStatus);
-				// 如果无法获取枚举,使用待签收作为默认状态
-				if (targetStatus == null) {
-					targetStatus = PatrolTaskStatusEnum.PENDING_SIGNING;
-				}
-				break;
+			// 其他状态,保持原有状态
+			targetStatus = PatrolTaskStatusEnum.getByValue(currentStatus);
+			// 如果无法获取枚举,使用待签收作为默认状态
+			if (targetStatus == null) {
+				targetStatus = PatrolTaskStatusEnum.PENDING_SIGNING;
+			}
 		}
 
 		// 3. 设置任务状态:使用枚举设置任务状态

--
Gitblit v1.9.3