From b18f999a5a899edec35a14daec21e764cc58ff2b Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 08 十一月 2024 08:51:11 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV

---
 pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderSv.java                                           |  106 +++
 pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/resources/application.yml                                                                  |   23 
 pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports |    0 
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java                                         |    8 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeTaskType.java                                                       |   44 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voOp/VoWorkOrder.java                                                         |  117 +++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeWorkOrder.java                                                      |  121 +-
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeProcessingResultMapper.xml                                                         |  202 ++++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeApproveResultMapper.java                                             |   27 
 pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderCtrl.java                                         |  184 +++++
 pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/dto/DtoDeleteWorkOrder.java                                |   28 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeTaskTypeMapper.xml                                                                 |   80 ++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoVcRecharge.java                                                        |    2 
 pipIrr-platform/pipIrr-global/src/main/resources/init-config.xml                                                                              |   36 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComSupport.java                                                       |   59 +
 pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/qo/QoWorkOrder.java                                        |   44 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeApproveResult.java                                                  |   71 ++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeProcessingResult.java                                               |  113 +++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeTaskTypeMapper.java                                                  |   27 
 /dev/null                                                                                                                                     |   37 -
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml                                                               |    3 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeWorkOrderMapper.java                                                 |   49 +
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeWorkOrderMapper.xml                                                                |  269 ++++++-
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRechargeProfile.java                                                   |    2 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeApproveResultMapper.xml                                                            |  127 ++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeProcessingResultMapper.java                                          |   34 +
 26 files changed, 1,596 insertions(+), 217 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComSupport.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComSupport.java
index e3a25ec..35c8b85 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComSupport.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComSupport.java
@@ -329,19 +329,20 @@
          * 濡傛灉鏄紑鍏抽榾锛氭洿鏀硅櫄鎷熷崱鐘舵�侊細鏄惁浣跨敤涓�佹渶鍚庢搷浣溿�佹渶鍚庢搷浣滄椂闂�
          * 鏇存柊鎵ц缁撴灉銆佽繑鍥炵粨鏋滄椂闂淬�佺粨鏋滃唴瀹�
          * 杩斿洖鍥炶皟鍐呭
+         * ***************************** 铏氭嫙鍗′娇鐢ㄧ姸鎬佷笉渚濊禆寮�鍏抽榾鎰忔効锛屼緷璧栧紑鍏抽榾鎴愬姛涓庡惁
          */
-        if (comType != null) {
-            SeVirtualCard virtualCard = new SeVirtualCard();
-            virtualCard.setId(vcId);
-            if (comType == 1) {
-                virtualCard.setInUse((byte) 1);
-            } else {
-                virtualCard.setInUse((byte) 0);
-            }
-            virtualCard.setLastOperate(LastOperateENUM.OPEN_VALVE.getCode());
-            virtualCard.setLastOperateTime(new Date());
-            seVirtualCardMapper.updateByPrimaryKeySelective(virtualCard);
-        }
+        //if (comType != null) {
+        //    SeVirtualCard virtualCard = new SeVirtualCard();
+        //    virtualCard.setId(vcId);
+        //    if (comType == 1) {
+        //        virtualCard.setInUse((byte) 1);
+        //    } else {
+        //        virtualCard.setInUse((byte) 0);
+        //    }
+        //    virtualCard.setLastOperate(LastOperateENUM.OPEN_VALVE.getCode());
+        //    virtualCard.setLastOperateTime(new Date());
+        //    seVirtualCardMapper.updateByPrimaryKeySelective(virtualCard);
+        //}
 
         // 濡傛灉鏄紑鍙戝懡浠わ紙92-骞冲彴寮�闃�锛�91-灏忕▼搴忓紑闃�锛夛紝杩斿洖缁撴灉涓坊鍔犻榾鎺у櫒鍦板潃銆佽櫄鎷熷崱缂栧彿銆佽鍗曞彿
         //if(commandCode.equals("92") || commandCode.equals("97")) {
@@ -353,11 +354,45 @@
             JSONObject job_data = job_response.getJSONObject("content").getJSONObject("data");
             if(!job_data.getBoolean("success")) {
                 // 寮�鍏抽榾澶辫触
+
+                // 寮�闃�澶辫触鍒欒В闄ゅ崰鐢紝鍏抽榾澶辫触鍒欏崰鐢�
+                if (comType != null) {
+                    SeVirtualCard virtualCard = new SeVirtualCard();
+                    virtualCard.setId(vcId);
+                    if (comType == 1) {
+                        virtualCard.setInUse((byte) 0);
+                        virtualCard.setIntakeId(null);
+                    } else {
+                        virtualCard.setInUse((byte) 1);
+                        virtualCard.setIntakeId(intakeId);
+                    }
+                    virtualCard.setLastOperate(LastOperateENUM.OPEN_VALVE.getCode());
+                    virtualCard.setLastOperateTime(new Date());
+                    seVirtualCardMapper.updateByPrimaryKeySelective(virtualCard);
+                }
+
                 response_CallBack.setCode("10003");
                 response_CallBack.setMsg(CommandResultCode.OPEN_CLOSE_FAIL.getMessage());
                 response_CallBack.setSuccess(false);
             }else {
                 // 寮�鍏抽榾鎴愬姛
+
+                // 寮�闃�鎴愬姛鍒欏崰鐢紝鍏抽榾鎴愬姛涓嶅崰鐢�
+                if (comType != null) {
+                    SeVirtualCard virtualCard = new SeVirtualCard();
+                    virtualCard.setId(vcId);
+                    if (comType == 1) {
+                        virtualCard.setInUse((byte) 1);
+                        virtualCard.setIntakeId(intakeId);
+                    } else {
+                        virtualCard.setInUse((byte) 0);
+                        virtualCard.setIntakeId(null);
+                    }
+                    virtualCard.setLastOperate(LastOperateENUM.OPEN_VALVE.getCode());
+                    virtualCard.setLastOperateTime(new Date());
+                    seVirtualCardMapper.updateByPrimaryKeySelective(virtualCard);
+                }
+
                 job_data.remove("success");
                 job_data.put("intakeId", intakeId);
                 job_data.put("rtuAddr", rtuAddr);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeApproveResultMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeApproveResultMapper.java
new file mode 100644
index 0000000..adef976
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeApproveResultMapper.java
@@ -0,0 +1,27 @@
+package com.dy.pipIrrGlobal.daoOp;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoOp.OpeApproveResult;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-11-06 11:49
+ * @LastEditTime 2024-11-06 11:49
+ * @Description
+ */
+
+@Mapper
+public interface OpeApproveResultMapper extends BaseMapper<OpeApproveResult> {
+    int deleteByPrimaryKey(Long id);
+
+    int insert(OpeApproveResult record);
+
+    int insertSelective(OpeApproveResult record);
+
+    OpeApproveResult selectByPrimaryKey(Long id);
+
+    int updateByPrimaryKeySelective(OpeApproveResult record);
+
+    int updateByPrimaryKey(OpeApproveResult record);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeProcessingResultMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeProcessingResultMapper.java
new file mode 100644
index 0000000..ad53364
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeProcessingResultMapper.java
@@ -0,0 +1,34 @@
+package com.dy.pipIrrGlobal.daoOp;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoOp.OpeProcessingResult;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-11-06 11:39
+ * @LastEditTime 2024-11-06 11:39
+ * @Description
+ */
+
+@Mapper
+public interface OpeProcessingResultMapper extends BaseMapper<OpeProcessingResult> {
+    int deleteByPrimaryKey(Long id);
+
+    int insert(OpeProcessingResult record);
+
+    int insertSelective(OpeProcessingResult record);
+
+    OpeProcessingResult selectByPrimaryKey(Long id);
+
+    int updateByPrimaryKeySelective(OpeProcessingResult record);
+
+    int updateByPrimaryKey(OpeProcessingResult record);
+
+    /**
+     * 鏍规嵁workOrderId鑾峰彇鏈垹闄ょ殑澶勭悊缁撴灉鏁伴噺锛屾坊鍔犵粨鏋滀笂鎶ュ墠鍒ゆ柇浣跨敤
+     * @param workOrderId
+     * @return
+     */
+    Integer getValidResultCount(Long workOrderId);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeTaskTypeMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeTaskTypeMapper.java
new file mode 100644
index 0000000..dde3037
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeTaskTypeMapper.java
@@ -0,0 +1,27 @@
+package com.dy.pipIrrGlobal.daoOp;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoOp.OpeTaskType;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-11-06 11:25
+ * @LastEditTime 2024-11-06 11:25
+ * @Description
+ */
+
+@Mapper
+public interface OpeTaskTypeMapper extends BaseMapper<OpeTaskType> {
+    int deleteByPrimaryKey(Long id);
+
+    int insert(OpeTaskType record);
+
+    int insertSelective(OpeTaskType record);
+
+    OpeTaskType selectByPrimaryKey(Long id);
+
+    int updateByPrimaryKeySelective(OpeTaskType record);
+
+    int updateByPrimaryKey(OpeTaskType record);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeWorkOrderMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeWorkOrderMapper.java
index 050176b..998ab45 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeWorkOrderMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeWorkOrderMapper.java
@@ -2,14 +2,20 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder;
+import com.dy.pipIrrGlobal.voOp.VoWorkOrder;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
 
 /**
- * @author :WuZeYu
- * @Date :2024/8/6  8:47
- * @LastEditTime :2024/8/6  8:47
+ * @author ZhuBaoMin
+ * @date 2024-11-07 15:38
+ * @LastEditTime 2024-11-07 15:38
  * @Description
  */
+
 @Mapper
 public interface OpeWorkOrderMapper extends BaseMapper<OpeWorkOrder> {
     int deleteByPrimaryKey(Long id);
@@ -23,4 +29,41 @@
     int updateByPrimaryKeySelective(OpeWorkOrder record);
 
     int updateByPrimaryKey(OpeWorkOrder record);
+
+    /**
+     * 鏍规嵁涓婚敭鑾峰彇宸ュ崟瑙嗗浘瀵硅薄
+     * @param workOrderId
+     * @return
+     */
+    VoWorkOrder getWorkOrderById(Long workOrderId);
+
+    /**
+     * 鑾峰彇鎸囧畾娲惧崟浜虹殑鎸囧畾鏈垹闄ゅ伐鍗曪紝鍒犻櫎宸ュ崟鍓嶅垽鏂娇鐢ㄤ娇鐢�
+     * @param dispatcherId
+     * @param workOrderId
+     * @return
+     */
+    OpeWorkOrder getWorkOrder(@Param("dispatcherId")Long dispatcherId, @Param("workOrderId")Long workOrderId);
+
+    /**
+     * 閫昏緫鍒犻櫎涓�涓湭鍒犻櫎鐨勫伐鍗�
+     * @param workOrderId
+     * @return
+     */
+    Integer deleteWorkOrder(Long workOrderId);
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇宸ュ崟鏁伴噺
+     * @param params
+     * @return
+     */
+    Long getWorkOrdersCount(Map<?, ?> params);
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇宸ュ崟
+     * @param params
+     * @return
+     */
+    List<VoWorkOrder> getWorkOrders(Map<?, ?> params);
+
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeApproveResult.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeApproveResult.java
new file mode 100644
index 0000000..22e2ff0
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeApproveResult.java
@@ -0,0 +1,71 @@
+package com.dy.pipIrrGlobal.pojoOp;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dy.common.po.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.*;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-11-06 11:49
+ * @LastEditTime 2024-11-06 11:49
+ * @Description 澶勭悊缁撴灉瀹℃牳瀹炰綋绫�
+ */
+
+@TableName(value="ope_approve_result", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+public class OpeApproveResult implements BaseEntity {
+    public static final long serialVersionUID = 202411061152001L;
+
+    /**
+    * 涓婚敭
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    private Long id;
+
+    /**
+    * 宸ュ崟ID
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long workOrderId;
+
+    /**
+    * 澶勭悊缁撴灉ID
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long processingResultId;
+
+    /**
+    * 瀹℃牳浜篒D
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long approverId;
+
+    /**
+    * 瀹℃牳鏃堕棿
+    */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date approveTime;
+
+    /**
+    * 瀹℃牳缁撴灉;1-閫氳繃锛�2-椹冲洖
+    */
+    private Byte approveResult;
+
+    /**
+    * 閫昏緫鍒犻櫎鏍囪瘑;鏈垹闄や负0锛屽凡鍒犻櫎涓哄垹闄ゆ椂闂�
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long deleted;
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeProcessingResult.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeProcessingResult.java
new file mode 100644
index 0000000..9838e44
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeProcessingResult.java
@@ -0,0 +1,113 @@
+package com.dy.pipIrrGlobal.pojoOp;
+
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import com.dy.common.po.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import jakarta.validation.constraints.NotNull;
+import lombok.*;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-11-06 11:39
+ * @LastEditTime 2024-11-06 11:39
+ * @Description 澶勭悊缁撴灉瀹炰綋绫�
+ */
+
+@TableName(value="ope_processing_result", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+public class OpeProcessingResult implements BaseEntity {
+    public static final long serialVersionUID = 202411061146001L;
+
+    /**
+    * 涓婚敭
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    private Long id;
+
+    /**
+    * 宸ュ崟ID
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @NotNull(message = "蹇呴』閫夋嫨涓�涓伐鍗�")
+    private Long workOrderId;
+
+    /**
+    * 宸℃鍛業D
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @NotNull(message = "宸℃鍛樹笉鑳戒负绌�")
+    private Long inspectorId;
+
+    /**
+    * 缁撴灉鍐呭
+    */
+    private String content;
+
+    /**
+    * 鐓х墖鍒楄〃
+    */
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private JSONArray images;
+
+    /**
+    * 闊抽鍒楄〃
+    */
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private JSONArray audios;
+
+    /**
+    * 瑙嗛鍒楄〃
+    */
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private JSONArray videos;
+
+    /**
+    * 缁忓害
+    */
+    private BigDecimal lng;
+
+    /**
+    * 绾害
+    */
+    private BigDecimal lat;
+
+    /**
+    * 浠诲姟瀹屾垚鏃堕棿;绮剧‘鍒板垎
+    */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+    @NotNull(message = "浠诲姟瀹屾垚鏃堕棿涓嶈兘涓虹┖")
+    private Date completeTime;
+
+    /**
+    * 涓婃姤鏃堕棿
+    */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date reportTime;
+
+    /**
+    * 鐘舵��;1-宸蹭笂鎶ワ紝2-宸查�氳繃锛�3-宸查┏鍥�
+    */
+    private Byte state;
+
+    /**
+    * 閫昏緫鍒犻櫎鏍囪瘑;鏈垹闄や负0锛屽凡鍒犻櫎涓哄垹闄ゆ椂闂�
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long deleted;
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeTaskType.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeTaskType.java
new file mode 100644
index 0000000..cfee90d
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeTaskType.java
@@ -0,0 +1,44 @@
+package com.dy.pipIrrGlobal.pojoOp;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dy.common.po.BaseEntity;
+import lombok.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-11-06 11:25
+ * @LastEditTime 2024-11-06 11:25
+ * @Description 浠诲姟绫诲瀷瀹炰綋绫�
+ */
+
+@TableName(value = "ope_task_type", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+public class OpeTaskType implements BaseEntity {
+    public static final long serialVersionUID = 202411061128001L;
+
+    /**
+    * 涓婚敭
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    private Long id;
+
+    /**
+    * 浠诲姟绫诲瀷
+    */
+    private String taskType;
+
+    /**
+    * 閫昏緫鍒犻櫎鏍囪瘑;鏈垹闄や负0锛屽凡鍒犻櫎涓哄垹闄ゆ椂闂�
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long deleted;
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeWorkOrder.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeWorkOrder.java
index 697722e..b98ec7f 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeWorkOrder.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeWorkOrder.java
@@ -7,103 +7,102 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.dy.common.po.BaseEntity;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
 import lombok.*;
-import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
 
 /**
- * @author :WuZeYu
- * @Date :2024/8/6  8:47
- * @LastEditTime :2024/8/6  8:47
- * @Description
+ * @author ZhuBaoMin
+ * @date 2024-11-06 11:33
+ * @LastEditTime 2024-11-06 11:33
+ * @Description 宸ュ崟瀹炰綋绫�
  */
-/**
- * 宸ュ崟琛�
- */
-@TableName(value="ope_feedback", autoResultMap = true)
+
+@TableName(value = "ope_work_order", autoResultMap = true)
 @Data
-@ToString
 @Builder
+@ToString
 @NoArgsConstructor
 @AllArgsConstructor
-@Schema(name = "宸ュ崟琛�")
 public class OpeWorkOrder implements BaseEntity {
+    public static final long serialVersionUID = 202411061136001L;
+
     /**
-    * 涓婚敭
-    */
+     * 涓婚敭
+     */
     @JSONField(serializeUsing= ObjectWriterImplToString.class)
     @TableId(type = IdType.INPUT)
     private Long id;
 
     /**
-    * 娲惧崟浜篒D
-    */
+     * 娲惧崟浜篒D
+     */
     @JSONField(serializeUsing= ObjectWriterImplToString.class)
-    @NotNull
-    private Long dispatcher;
+    private Long dispatcherId;
 
     /**
-    * 宸℃鍛業D
-    */
+     * 宸℃鍛業D
+     */
     @JSONField(serializeUsing= ObjectWriterImplToString.class)
-    @NotNull
-    private Long inspector;
+    private Long inspectorId;
 
     /**
-    * 浠诲姟绫诲瀷;1-婕忔崯澶勭悊锛�2-鎶ヨ澶勭悊锛�3-鍙嶉澶勭悊锛�4-鍏朵粬
-    */
-    private Byte taskType;
+     * 浠诲姟绫诲瀷ID
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long taskTypeId;
 
     /**
-    * 浠诲姟鍐呭
-    */
-    @NotBlank
+     * 浠诲姟鍐呭
+     */
     private String taskContent;
 
     /**
-    * 瀹屾垚鏍囧噯
-    */
+     * 瀹屾垚鏍囧噯
+     */
     private String completeCriteria;
 
     /**
-    * 瑕佹眰瀹屾垚鏃堕棿;绮剧‘鍒板垎
-    */
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+     * 瑕佹眰瀹屾垚鏃堕棿;绮剧‘鍒板垎
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
     private Date deadLine;
 
     /**
-    * 娲惧崟鏃堕棿
-    */
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date dispatchTime;
-
-    /**
-    * 澶勭悊缁撴灉;1-瀹屾垚锛�2-鏈畬鎴�
-    */
-    private Byte taskResult;
-
-    /**
-    * 缁撴灉鐓х墖
-    */
-    private String photos;
-
-    /**
-    * 瀹屽伐鏃堕棿
-    */
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+     * 浠诲姟瀹屾垚鏃堕棿;绮剧‘鍒板垎
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
     private Date completeTime;
 
     /**
-    * 閫昏緫鍒犻櫎鏍囪瘑;鏈垹闄や负0锛屽凡鍒犻櫎涓哄垹闄ゆ椂闂�
-    */
+     * 娲惧崟鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date dispatchTime;
+
+    /**
+     * 鍐滄埛闂涓婃姤ID
+     */
+    private Long clientReportId;
+
+    /**
+     * 宸℃鍛橀棶棰樹笂鎶D
+     */
+    private Long inspectorReportId;
+
+    /**
+     * 鐘舵��;1-鏈畬鎴愶紝2-宸插畬鎴�
+     */
+    private Byte state;
+
+    /**
+     * 椹冲洖娆℃暟
+     */
+    private Integer rejectTimes;
+
+    /**
+     * 閫昏緫鍒犻櫎鏍囪瘑;鏈垹闄や负0锛屽凡鍒犻櫎涓哄垹闄ゆ椂闂�
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
     private Long deleted;
-
-
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voOp/VoWorkOrder.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voOp/VoWorkOrder.java
new file mode 100644
index 0000000..c0e4cd7
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voOp/VoWorkOrder.java
@@ -0,0 +1,117 @@
+package com.dy.pipIrrGlobal.voOp;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.dy.common.po.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-11-06 15:46
+ * @LastEditTime 2024-11-06 15:46
+ * @Description 宸ュ崟瑙嗗浘瀵硅薄
+ */
+
+@Data
+@JsonPropertyOrder({"workOrderId", "dispatcherId", "dispatcher", "inspectorId", "inspector", "taskTypeId", "taskType", "taskContent", "completeCriteria", "deadLine", "clientReportId", "inspectorReportId", "completeTime", "dispatchTime", "rejectTimes", "state", "processingState"})
+public class VoWorkOrder implements BaseEntity {
+    public static final long serialVersionUID = 202411061524001L;
+
+    /**
+     * 宸ュ崟ID
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long workOrderId;
+
+    /**
+     * 娲惧崟浜篒D
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long dispatcherId;
+
+    /**
+     * 娲惧崟浜哄鍚�
+     */
+    private String dispatcher;
+
+    /**
+     * 宸℃鍛業D
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long inspectorId;
+
+    /**
+     * 宸℃鍛樺鍚�
+     */
+    private String inspector;
+
+    /**
+     * 浠诲姟绫诲瀷ID
+     */
+    //@JSONField(serializeUsing= ObjectWriterImplToString.class)
+    //private Long taskTypeId;
+
+    /**
+     * 浠诲姟绫诲瀷
+     */
+    private String taskType;
+
+    /**
+     * 浠诲姟鍐呭
+     */
+    private String taskContent;
+
+    /**
+     * 瀹屾垚鏍囧噯
+     */
+    private String completeCriteria;
+
+    /**
+     * 瑕佹眰瀹屾垚鏃堕棿;绮剧‘鍒板垎
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+    private Date deadLine;
+
+    /**
+     * 鍐滄埛闂涓婃姤ID
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long clientReportId;
+
+    /**
+     * 宸℃鍛橀棶棰樹笂鎶D
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long inspectorReportId;
+
+    /**
+     * 浠诲姟瀹屾垚鏃堕棿;绮剧‘鍒板垎
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+    private Date completeTime;
+
+    /**
+     * 娲惧崟鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date dispatchTime;
+
+    /**
+     * 椹冲洖娆℃暟
+     */
+    private Integer rejectTimes;
+
+    /**
+     * 宸ュ崟鐘舵��
+     */
+    private String state;
+
+    /**
+     * 澶勭悊鐘舵��
+     */
+    private String processingState;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voOp/Vofeedback.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voOp/Vofeedback.java
deleted file mode 100644
index 9617df7..0000000
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voOp/Vofeedback.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.dy.pipIrrGlobal.voOp;
-
-import com.dy.common.po.BaseEntity;
-import lombok.Data;
-
-/**
- * @author :WuZeYu
- * @Date :2024/7/30  9:48
- * @LastEditTime :2024/7/30  9:48
- * @Description
- */
-@Data
-public class Vofeedback implements BaseEntity {
-    private static final long serialVersionUID = 202407301133001L;
-    /**
-     * 涓婚敭id
-     */
-    private String id;
-    /**
-     * 鍙嶉鍐呭
-     */
-    private String content;
-    /**
-     * 鍙嶉鍥剧墖
-     */
-    private String image;
-    /**
-     * 鍙嶉闊抽
-     */
-    private String audio;
-    /**
-     * 鍙嶉瑙嗛
-     */
-    private String video;
-    /**
-     * 鍙嶉浜烘墜鏈哄彿
-     */
-    private String phone;
-    /**
-     * 鍙嶉浜篿d(鍐滄埛ID)
-     */
-    private String feedbackerId;
-    /**
-     * 鍙嶉浜哄悕绉�
-     */
-    private String feedbackerName;
-    /**
-     * 鍙嶉鏃堕棿
-     */
-    private String feedbackTime;
-    /**
-     * 鍙嶉鍦板潃
-     */
-    private String lng;//缁忓害
-    private String lat;//绾害
-    /**
-     * 鍙嶉鐘舵��
-     */
-    private Byte state;
-
-
-
-}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voOp/VofeedbackReply.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voOp/VofeedbackReply.java
deleted file mode 100644
index bc10947..0000000
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voOp/VofeedbackReply.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.dy.pipIrrGlobal.voOp;
-
-import com.dy.common.po.BaseEntity;
-import lombok.Data;
-
-import java.util.Date;
-
-/**
- * @author :WuZeYu
- * @Date :2024/8/1  20:07
- * @LastEditTime :2024/8/1  20:07
- * @Description
- */
-@Data
-public class VofeedbackReply implements BaseEntity {
-    private static final long serialVersionUID = 202408012009001L;
-    /**
-     * 涓婚敭id
-     */
-    private String id;
-    /**
-     * 鍙嶉缂栧彿
-     */
-    private String feedbackId;
-
-    /**
-     * 鍥炲鍐呭
-     */
-    private String replyContent;
-
-    /**
-     * 鍥炲鏃堕棿
-     */
-    private Date replyTime;
-
-    /**
-     * 鍥炲浜篒D
-     */
-    private String replierId;
-}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRechargeProfile.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRechargeProfile.java
index 81f1e79..1686a2f 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRechargeProfile.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRechargeProfile.java
@@ -27,5 +27,5 @@
     /**
      * 鍏呭�奸噾棰�
      */
-    private Integer rechargeAmount;
+    private Double rechargeAmount;
 }
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoVcRecharge.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoVcRecharge.java
index ec27f68..cd7a838 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoVcRecharge.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoVcRecharge.java
@@ -43,7 +43,7 @@
     /**
      * 鍏呭�奸噾棰�
      */
-    private Integer rechargeAmount;
+    private Double rechargeAmount;
 
     /**
      * 鍏呭�煎悗浣欓
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/init-config.xml b/pipIrr-platform/pipIrr-global/src/main/resources/init-config.xml
index b3559b7..f015a6c 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/init-config.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/init-config.xml
@@ -52,12 +52,12 @@
                 <item8 defaultValue = "80" unit = "3" sort = "4" type = "2"/>
             </irrigateProfile>
             <rechargeProfile>
-                <item1 rechargeAmount = "5000" sort = "1"/>
-                <item2 rechargeAmount = "10000" sort = "2" />
-                <item3 rechargeAmount = "20000" sort = "3"/>
-                <item4 rechargeAmount = "30000" sort = "4"/>
-                <item5 rechargeAmount = "50000" sort = "5"/>
-                <item6 rechargeAmount = "100000" sort = "6"/>
+                <item1 rechargeAmount = "50" sort = "1"/>
+                <item2 rechargeAmount = "100" sort = "2" />
+                <item3 rechargeAmount = "200" sort = "3"/>
+                <item4 rechargeAmount = "300" sort = "4"/>
+                <item5 rechargeAmount = "500" sort = "5"/>
+                <item6 rechargeAmount = "1000" sort = "6"/>
             </rechargeProfile>
         </org1>
         <org2 tag="sp" name="娌欑洏" enable="true">
@@ -110,12 +110,12 @@
                 <item8 defaultValue = "80" unit = "3" sort = "4" type = "2"/>
             </irrigateProfile>
             <rechargeProfile>
-                <item1 rechargeAmount = "5000" sort = "1"/>
-                <item2 rechargeAmount = "10000" sort = "2" />
-                <item3 rechargeAmount = "20000" sort = "3"/>
-                <item4 rechargeAmount = "30000" sort = "4"/>
-                <item5 rechargeAmount = "50000" sort = "5"/>
-                <item6 rechargeAmount = "100000" sort = "6"/>
+                <item1 rechargeAmount = "50" sort = "1"/>
+                <item2 rechargeAmount = "100" sort = "2" />
+                <item3 rechargeAmount = "200" sort = "3"/>
+                <item4 rechargeAmount = "300" sort = "4"/>
+                <item5 rechargeAmount = "500" sort = "5"/>
+                <item6 rechargeAmount = "1000" sort = "6"/>
             </rechargeProfile>
         </org2>
         <org3 tag="test" name="娴嬭瘯" enable="true">
@@ -168,12 +168,12 @@
                 <item8 defaultValue = "80" unit = "3" sort = "4" type = "2"/>
             </irrigateProfile>
             <rechargeProfile>
-                <item1 rechargeAmount = "5000" sort = "1"/>
-                <item2 rechargeAmount = "10000" sort = "2" />
-                <item3 rechargeAmount = "20000" sort = "3"/>
-                <item4 rechargeAmount = "30000" sort = "4"/>
-                <item5 rechargeAmount = "50000" sort = "5"/>
-                <item6 rechargeAmount = "100000" sort = "6"/>
+                <item1 rechargeAmount = "50" sort = "1"/>
+                <item2 rechargeAmount = "100" sort = "2" />
+                <item3 rechargeAmount = "200" sort = "3"/>
+                <item4 rechargeAmount = "300" sort = "4"/>
+                <item5 rechargeAmount = "500" sort = "5"/>
+                <item6 rechargeAmount = "1000" sort = "6"/>
             </rechargeProfile>
         </org3>
     </orgs>
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeApproveResultMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeApproveResultMapper.xml
new file mode 100644
index 0000000..a2ae69b
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeApproveResultMapper.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dy.pipIrrGlobal.daoOp.OpeApproveResultMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoOp.OpeApproveResult">
+    <!--@mbg.generated-->
+    <!--@Table ope_approve_result-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="work_order_id" jdbcType="BIGINT" property="workOrderId" />
+    <result column="processing_result_id" jdbcType="BIGINT" property="processingResultId" />
+    <result column="approver_id" jdbcType="BIGINT" property="approverId" />
+    <result column="approve_time" jdbcType="TIMESTAMP" property="approveTime" />
+    <result column="approve_result" jdbcType="TINYINT" property="approveResult" />
+    <result column="deleted" jdbcType="BIGINT" property="deleted" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, work_order_id, processing_result_id, approver_id, approve_time, approve_result, 
+    deleted
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from ope_approve_result
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from ope_approve_result
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeApproveResult">
+    <!--@mbg.generated-->
+    insert into ope_approve_result (id, work_order_id, processing_result_id, 
+      approver_id, approve_time, approve_result, 
+      deleted)
+    values (#{id,jdbcType=BIGINT}, #{workOrderId,jdbcType=BIGINT}, #{processingResultId,jdbcType=BIGINT}, 
+      #{approverId,jdbcType=BIGINT}, #{approveTime,jdbcType=TIMESTAMP}, #{approveResult,jdbcType=TINYINT}, 
+      #{deleted,jdbcType=BIGINT})
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeApproveResult">
+    <!--@mbg.generated-->
+    insert into ope_approve_result
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="workOrderId != null">
+        work_order_id,
+      </if>
+      <if test="processingResultId != null">
+        processing_result_id,
+      </if>
+      <if test="approverId != null">
+        approver_id,
+      </if>
+      <if test="approveTime != null">
+        approve_time,
+      </if>
+      <if test="approveResult != null">
+        approve_result,
+      </if>
+      <if test="deleted != null">
+        deleted,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="workOrderId != null">
+        #{workOrderId,jdbcType=BIGINT},
+      </if>
+      <if test="processingResultId != null">
+        #{processingResultId,jdbcType=BIGINT},
+      </if>
+      <if test="approverId != null">
+        #{approverId,jdbcType=BIGINT},
+      </if>
+      <if test="approveTime != null">
+        #{approveTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="approveResult != null">
+        #{approveResult,jdbcType=TINYINT},
+      </if>
+      <if test="deleted != null">
+        #{deleted,jdbcType=BIGINT},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeApproveResult">
+    <!--@mbg.generated-->
+    update ope_approve_result
+    <set>
+      <if test="workOrderId != null">
+        work_order_id = #{workOrderId,jdbcType=BIGINT},
+      </if>
+      <if test="processingResultId != null">
+        processing_result_id = #{processingResultId,jdbcType=BIGINT},
+      </if>
+      <if test="approverId != null">
+        approver_id = #{approverId,jdbcType=BIGINT},
+      </if>
+      <if test="approveTime != null">
+        approve_time = #{approveTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="approveResult != null">
+        approve_result = #{approveResult,jdbcType=TINYINT},
+      </if>
+      <if test="deleted != null">
+        deleted = #{deleted,jdbcType=BIGINT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeApproveResult">
+    <!--@mbg.generated-->
+    update ope_approve_result
+    set work_order_id = #{workOrderId,jdbcType=BIGINT},
+      processing_result_id = #{processingResultId,jdbcType=BIGINT},
+      approver_id = #{approverId,jdbcType=BIGINT},
+      approve_time = #{approveTime,jdbcType=TIMESTAMP},
+      approve_result = #{approveResult,jdbcType=TINYINT},
+      deleted = #{deleted,jdbcType=BIGINT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeProcessingResultMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeProcessingResultMapper.xml
new file mode 100644
index 0000000..56a5430
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeProcessingResultMapper.xml
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dy.pipIrrGlobal.daoOp.OpeProcessingResultMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoOp.OpeProcessingResult">
+    <!--@mbg.generated-->
+    <!--@Table ope_processing_result-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="work_order_id" jdbcType="BIGINT" property="workOrderId" />
+    <result column="inspector_id" jdbcType="BIGINT" property="inspectorId" />
+    <result column="content" jdbcType="VARCHAR" property="content" />
+    <result column="images" jdbcType="JAVA_OBJECT" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" property="images" />
+    <result column="audios" jdbcType="JAVA_OBJECT" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" property="audios" />
+    <result column="videos" jdbcType="JAVA_OBJECT" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" property="videos" />
+    <result column="lng" jdbcType="DECIMAL" property="lng" />
+    <result column="lat" jdbcType="DECIMAL" property="lat" />
+    <result column="complete_time" jdbcType="TIMESTAMP" property="completeTime" />
+    <result column="report_time" jdbcType="TIMESTAMP" property="reportTime" />
+    <result column="state" jdbcType="TINYINT" property="state" />
+    <result column="deleted" jdbcType="BIGINT" property="deleted" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, work_order_id, inspector_id, content, images, audios, videos, lng, lat, complete_time, 
+    report_time, `state`, deleted
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from ope_processing_result
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from ope_processing_result
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeProcessingResult">
+    <!--@mbg.generated-->
+    insert into ope_processing_result (id, work_order_id, inspector_id, 
+      content, images, audios, 
+      videos, lng, lat, complete_time, 
+      report_time, `state`, deleted
+      )
+    values (#{id,jdbcType=BIGINT}, #{workOrderId,jdbcType=BIGINT}, #{inspectorId,jdbcType=BIGINT}, 
+      #{content,jdbcType=VARCHAR}, #{images,jdbcType=JAVA_OBJECT, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler}, #{audios,jdbcType=JAVA_OBJECT, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler},
+      #{videos,jdbcType=JAVA_OBJECT, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler}, #{lng,jdbcType=DECIMAL}, #{lat,jdbcType=DECIMAL}, #{completeTime,jdbcType=TIMESTAMP},
+      #{reportTime,jdbcType=TIMESTAMP}, #{state,jdbcType=TINYINT}, #{deleted,jdbcType=BIGINT}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeProcessingResult">
+    <!--@mbg.generated-->
+    insert into ope_processing_result
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="workOrderId != null">
+        work_order_id,
+      </if>
+      <if test="inspectorId != null">
+        inspector_id,
+      </if>
+      <if test="content != null">
+        content,
+      </if>
+      <if test="images != null">
+        images,
+      </if>
+      <if test="audios != null">
+        audios,
+      </if>
+      <if test="videos != null">
+        videos,
+      </if>
+      <if test="lng != null">
+        lng,
+      </if>
+      <if test="lat != null">
+        lat,
+      </if>
+      <if test="completeTime != null">
+        complete_time,
+      </if>
+      <if test="reportTime != null">
+        report_time,
+      </if>
+      <if test="state != null">
+        `state`,
+      </if>
+      <if test="deleted != null">
+        deleted,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="workOrderId != null">
+        #{workOrderId,jdbcType=BIGINT},
+      </if>
+      <if test="inspectorId != null">
+        #{inspectorId,jdbcType=BIGINT},
+      </if>
+      <if test="content != null">
+        #{content,jdbcType=VARCHAR},
+      </if>
+      <if test="images != null">
+        #{images,jdbcType=JAVA_OBJECT, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler},
+      </if>
+      <if test="audios != null">
+        #{audios,jdbcType=JAVA_OBJECT, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler},
+      </if>
+      <if test="videos != null">
+        #{videos,jdbcType=JAVA_OBJECT, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler},
+      </if>
+      <if test="lng != null">
+        #{lng,jdbcType=DECIMAL},
+      </if>
+      <if test="lat != null">
+        #{lat,jdbcType=DECIMAL},
+      </if>
+      <if test="completeTime != null">
+        #{completeTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="reportTime != null">
+        #{reportTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="state != null">
+        #{state,jdbcType=TINYINT},
+      </if>
+      <if test="deleted != null">
+        #{deleted,jdbcType=BIGINT},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeProcessingResult">
+    <!--@mbg.generated-->
+    update ope_processing_result
+    <set>
+      <if test="workOrderId != null">
+        work_order_id = #{workOrderId,jdbcType=BIGINT},
+      </if>
+      <if test="inspectorId != null">
+        inspector_id = #{inspectorId,jdbcType=BIGINT},
+      </if>
+      <if test="content != null">
+        content = #{content,jdbcType=VARCHAR},
+      </if>
+      <if test="images != null">
+        images = #{images,jdbcType=JAVA_OBJECT, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler},
+      </if>
+      <if test="audios != null">
+        audios = #{audios,jdbcType=JAVA_OBJECT, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler},
+      </if>
+      <if test="videos != null">
+        videos = #{videos,jdbcType=JAVA_OBJECT, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler},
+      </if>
+      <if test="lng != null">
+        lng = #{lng,jdbcType=DECIMAL},
+      </if>
+      <if test="lat != null">
+        lat = #{lat,jdbcType=DECIMAL},
+      </if>
+      <if test="completeTime != null">
+        complete_time = #{completeTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="reportTime != null">
+        report_time = #{reportTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="state != null">
+        `state` = #{state,jdbcType=TINYINT},
+      </if>
+      <if test="deleted != null">
+        deleted = #{deleted,jdbcType=BIGINT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeProcessingResult">
+    <!--@mbg.generated-->
+    update ope_processing_result
+    set work_order_id = #{workOrderId,jdbcType=BIGINT},
+      inspector_id = #{inspectorId,jdbcType=BIGINT},
+      content = #{content,jdbcType=VARCHAR},
+      images = #{images,jdbcType=JAVA_OBJECT, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler},
+      audios = #{audios,jdbcType=JAVA_OBJECT, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler},
+      videos = #{videos,jdbcType=JAVA_OBJECT, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler},
+      lng = #{lng,jdbcType=DECIMAL},
+      lat = #{lat,jdbcType=DECIMAL},
+      complete_time = #{completeTime,jdbcType=TIMESTAMP},
+      report_time = #{reportTime,jdbcType=TIMESTAMP},
+      `state` = #{state,jdbcType=TINYINT},
+      deleted = #{deleted,jdbcType=BIGINT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+
+  <!--鏍规嵁workOrderId鑾峰彇鏈垹闄ょ殑澶勭悊缁撴灉鏁伴噺锛屾坊鍔犵粨鏋滀笂鎶ュ墠鍒ゆ柇浣跨敤-->
+  <select id="getValidResultCount" resultType="java.lang.Integer">
+    SELECT COUNT(*) FROM  ope_processing_result WHERE deleted = 0 AND work_order_id = #{workOrderId}
+  </select>
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeTaskTypeMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeTaskTypeMapper.xml
new file mode 100644
index 0000000..a6ed490
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeTaskTypeMapper.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dy.pipIrrGlobal.daoOp.OpeTaskTypeMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoOp.OpeTaskType">
+    <!--@mbg.generated-->
+    <!--@Table ope_task_type-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="task_type" jdbcType="VARCHAR" property="taskType" />
+    <result column="deleted" jdbcType="BIGINT" property="deleted" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, task_type, deleted
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from ope_task_type
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from ope_task_type
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeTaskType">
+    <!--@mbg.generated-->
+    insert into ope_task_type (id, task_type, deleted
+      )
+    values (#{id,jdbcType=BIGINT}, #{taskType,jdbcType=VARCHAR}, #{deleted,jdbcType=BIGINT}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeTaskType">
+    <!--@mbg.generated-->
+    insert into ope_task_type
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="taskType != null">
+        task_type,
+      </if>
+      <if test="deleted != null">
+        deleted,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="taskType != null">
+        #{taskType,jdbcType=VARCHAR},
+      </if>
+      <if test="deleted != null">
+        #{deleted,jdbcType=BIGINT},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeTaskType">
+    <!--@mbg.generated-->
+    update ope_task_type
+    <set>
+      <if test="taskType != null">
+        task_type = #{taskType,jdbcType=VARCHAR},
+      </if>
+      <if test="deleted != null">
+        deleted = #{deleted,jdbcType=BIGINT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeTaskType">
+    <!--@mbg.generated-->
+    update ope_task_type
+    set task_type = #{taskType,jdbcType=VARCHAR},
+      deleted = #{deleted,jdbcType=BIGINT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeWorkOrderMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeWorkOrderMapper.xml
index d5c23ed..9e2a155 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeWorkOrderMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeWorkOrderMapper.xml
@@ -5,22 +5,25 @@
     <!--@mbg.generated-->
     <!--@Table ope_work_order-->
     <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="dispatcher" jdbcType="BIGINT" property="dispatcher" />
-    <result column="inspector" jdbcType="BIGINT" property="inspector" />
-    <result column="task_type" jdbcType="TINYINT" property="taskType" />
+    <result column="dispatcher_id" jdbcType="BIGINT" property="dispatcherId" />
+    <result column="inspector_id" jdbcType="BIGINT" property="inspectorId" />
+    <result column="task_type_id" jdbcType="BIGINT" property="taskTypeId" />
     <result column="task_content" jdbcType="VARCHAR" property="taskContent" />
     <result column="complete_criteria" jdbcType="VARCHAR" property="completeCriteria" />
     <result column="dead_line" jdbcType="TIMESTAMP" property="deadLine" />
-    <result column="dispatch_time" jdbcType="TIMESTAMP" property="dispatchTime" />
-    <result column="task_result" jdbcType="TINYINT" property="taskResult" />
-    <result column="photos" jdbcType="VARCHAR" property="photos" />
     <result column="complete_time" jdbcType="TIMESTAMP" property="completeTime" />
+    <result column="dispatch_time" jdbcType="TIMESTAMP" property="dispatchTime" />
+    <result column="client_report_id" jdbcType="BIGINT" property="clientReportId" />
+    <result column="inspector_report_id" jdbcType="BIGINT" property="inspectorReportId" />
+    <result column="state" jdbcType="TINYINT" property="state" />
+    <result column="reject_times" jdbcType="INTEGER" property="rejectTimes" />
     <result column="deleted" jdbcType="BIGINT" property="deleted" />
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, dispatcher, inspector, task_type, task_content, complete_criteria, dead_line, 
-    dispatch_time, task_result, photos, complete_time, deleted
+    id, dispatcher_id, inspector_id, task_type_id, task_content, complete_criteria, dead_line, 
+    complete_time, dispatch_time, client_report_id, inspector_report_id, `state`, reject_times, 
+    deleted
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
     <!--@mbg.generated-->
@@ -36,16 +39,16 @@
   </delete>
   <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder">
     <!--@mbg.generated-->
-    insert into ope_work_order (id, dispatcher, inspector, 
-      task_type, task_content, complete_criteria, 
-      dead_line, dispatch_time, task_result, 
-      photos, complete_time, deleted
-      )
-    values (#{id,jdbcType=BIGINT}, #{dispatcher,jdbcType=BIGINT}, #{inspector,jdbcType=BIGINT}, 
-      #{taskType,jdbcType=TINYINT}, #{taskContent,jdbcType=VARCHAR}, #{completeCriteria,jdbcType=VARCHAR}, 
-      #{deadLine,jdbcType=TIMESTAMP}, #{dispatchTime,jdbcType=TIMESTAMP}, #{taskResult,jdbcType=TINYINT}, 
-      #{photos,jdbcType=VARCHAR}, #{completeTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIGINT}
-      )
+    insert into ope_work_order (id, dispatcher_id, inspector_id, 
+      task_type_id, task_content, complete_criteria, 
+      dead_line, complete_time, dispatch_time, 
+      client_report_id, inspector_report_id, `state`, 
+      reject_times, deleted)
+    values (#{id,jdbcType=BIGINT}, #{dispatcherId,jdbcType=BIGINT}, #{inspectorId,jdbcType=BIGINT}, 
+      #{taskTypeId,jdbcType=BIGINT}, #{taskContent,jdbcType=VARCHAR}, #{completeCriteria,jdbcType=VARCHAR}, 
+      #{deadLine,jdbcType=TIMESTAMP}, #{completeTime,jdbcType=TIMESTAMP}, #{dispatchTime,jdbcType=TIMESTAMP}, 
+      #{clientReportId,jdbcType=BIGINT}, #{inspectorReportId,jdbcType=BIGINT}, #{state,jdbcType=TINYINT}, 
+      #{rejectTimes,jdbcType=INTEGER}, #{deleted,jdbcType=BIGINT})
   </insert>
   <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder">
     <!--@mbg.generated-->
@@ -54,14 +57,14 @@
       <if test="id != null">
         id,
       </if>
-      <if test="dispatcher != null">
-        dispatcher,
+      <if test="dispatcherId != null">
+        dispatcher_id,
       </if>
-      <if test="inspector != null">
-        inspector,
+      <if test="inspectorId != null">
+        inspector_id,
       </if>
-      <if test="taskType != null">
-        task_type,
+      <if test="taskTypeId != null">
+        task_type_id,
       </if>
       <if test="taskContent != null">
         task_content,
@@ -72,17 +75,23 @@
       <if test="deadLine != null">
         dead_line,
       </if>
+      <if test="completeTime != null">
+        complete_time,
+      </if>
       <if test="dispatchTime != null">
         dispatch_time,
       </if>
-      <if test="taskResult != null">
-        task_result,
+      <if test="clientReportId != null">
+        client_report_id,
       </if>
-      <if test="photos != null">
-        photos,
+      <if test="inspectorReportId != null">
+        inspector_report_id,
       </if>
-      <if test="completeTime != null">
-        complete_time,
+      <if test="state != null">
+        `state`,
+      </if>
+      <if test="rejectTimes != null">
+        reject_times,
       </if>
       <if test="deleted != null">
         deleted,
@@ -92,14 +101,14 @@
       <if test="id != null">
         #{id,jdbcType=BIGINT},
       </if>
-      <if test="dispatcher != null">
-        #{dispatcher,jdbcType=BIGINT},
+      <if test="dispatcherId != null">
+        #{dispatcherId,jdbcType=BIGINT},
       </if>
-      <if test="inspector != null">
-        #{inspector,jdbcType=BIGINT},
+      <if test="inspectorId != null">
+        #{inspectorId,jdbcType=BIGINT},
       </if>
-      <if test="taskType != null">
-        #{taskType,jdbcType=TINYINT},
+      <if test="taskTypeId != null">
+        #{taskTypeId,jdbcType=BIGINT},
       </if>
       <if test="taskContent != null">
         #{taskContent,jdbcType=VARCHAR},
@@ -110,17 +119,23 @@
       <if test="deadLine != null">
         #{deadLine,jdbcType=TIMESTAMP},
       </if>
+      <if test="completeTime != null">
+        #{completeTime,jdbcType=TIMESTAMP},
+      </if>
       <if test="dispatchTime != null">
         #{dispatchTime,jdbcType=TIMESTAMP},
       </if>
-      <if test="taskResult != null">
-        #{taskResult,jdbcType=TINYINT},
+      <if test="clientReportId != null">
+        #{clientReportId,jdbcType=BIGINT},
       </if>
-      <if test="photos != null">
-        #{photos,jdbcType=VARCHAR},
+      <if test="inspectorReportId != null">
+        #{inspectorReportId,jdbcType=BIGINT},
       </if>
-      <if test="completeTime != null">
-        #{completeTime,jdbcType=TIMESTAMP},
+      <if test="state != null">
+        #{state,jdbcType=TINYINT},
+      </if>
+      <if test="rejectTimes != null">
+        #{rejectTimes,jdbcType=INTEGER},
       </if>
       <if test="deleted != null">
         #{deleted,jdbcType=BIGINT},
@@ -131,14 +146,14 @@
     <!--@mbg.generated-->
     update ope_work_order
     <set>
-      <if test="dispatcher != null">
-        dispatcher = #{dispatcher,jdbcType=BIGINT},
+      <if test="dispatcherId != null">
+        dispatcher_id = #{dispatcherId,jdbcType=BIGINT},
       </if>
-      <if test="inspector != null">
-        inspector = #{inspector,jdbcType=BIGINT},
+      <if test="inspectorId != null">
+        inspector_id = #{inspectorId,jdbcType=BIGINT},
       </if>
-      <if test="taskType != null">
-        task_type = #{taskType,jdbcType=TINYINT},
+      <if test="taskTypeId != null">
+        task_type_id = #{taskTypeId,jdbcType=BIGINT},
       </if>
       <if test="taskContent != null">
         task_content = #{taskContent,jdbcType=VARCHAR},
@@ -149,17 +164,23 @@
       <if test="deadLine != null">
         dead_line = #{deadLine,jdbcType=TIMESTAMP},
       </if>
+      <if test="completeTime != null">
+        complete_time = #{completeTime,jdbcType=TIMESTAMP},
+      </if>
       <if test="dispatchTime != null">
         dispatch_time = #{dispatchTime,jdbcType=TIMESTAMP},
       </if>
-      <if test="taskResult != null">
-        task_result = #{taskResult,jdbcType=TINYINT},
+      <if test="clientReportId != null">
+        client_report_id = #{clientReportId,jdbcType=BIGINT},
       </if>
-      <if test="photos != null">
-        photos = #{photos,jdbcType=VARCHAR},
+      <if test="inspectorReportId != null">
+        inspector_report_id = #{inspectorReportId,jdbcType=BIGINT},
       </if>
-      <if test="completeTime != null">
-        complete_time = #{completeTime,jdbcType=TIMESTAMP},
+      <if test="state != null">
+        `state` = #{state,jdbcType=TINYINT},
+      </if>
+      <if test="rejectTimes != null">
+        reject_times = #{rejectTimes,jdbcType=INTEGER},
       </if>
       <if test="deleted != null">
         deleted = #{deleted,jdbcType=BIGINT},
@@ -170,17 +191,145 @@
   <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder">
     <!--@mbg.generated-->
     update ope_work_order
-    set dispatcher = #{dispatcher,jdbcType=BIGINT},
-      inspector = #{inspector,jdbcType=BIGINT},
-      task_type = #{taskType,jdbcType=TINYINT},
+    set dispatcher_id = #{dispatcherId,jdbcType=BIGINT},
+      inspector_id = #{inspectorId,jdbcType=BIGINT},
+      task_type_id = #{taskTypeId,jdbcType=BIGINT},
       task_content = #{taskContent,jdbcType=VARCHAR},
       complete_criteria = #{completeCriteria,jdbcType=VARCHAR},
       dead_line = #{deadLine,jdbcType=TIMESTAMP},
-      dispatch_time = #{dispatchTime,jdbcType=TIMESTAMP},
-      task_result = #{taskResult,jdbcType=TINYINT},
-      photos = #{photos,jdbcType=VARCHAR},
       complete_time = #{completeTime,jdbcType=TIMESTAMP},
+      dispatch_time = #{dispatchTime,jdbcType=TIMESTAMP},
+      client_report_id = #{clientReportId,jdbcType=BIGINT},
+      inspector_report_id = #{inspectorReportId,jdbcType=BIGINT},
+      `state` = #{state,jdbcType=TINYINT},
+      reject_times = #{rejectTimes,jdbcType=INTEGER},
       deleted = #{deleted,jdbcType=BIGINT}
     where id = #{id,jdbcType=BIGINT}
   </update>
+
+  <!--鏍规嵁涓婚敭鑾峰彇宸ュ崟瑙嗗浘瀵硅薄-->
+  <select id="getWorkOrderById" resultType="com.dy.pipIrrGlobal.voOp.VoWorkOrder">
+    SELECT
+        ord.id AS workOrderId,
+        ord.dispatcher_id AS dispatcherId,
+        us1.name AS dispatcher,
+        ord.inspector_id AS inspectorId,
+        us2.name AS inspector,
+        typ.task_type AS taskType,
+        ord.task_content AS taskContent,
+        ord.complete_criteria AS completeCriteria,
+        ord.dead_line AS deadLine,
+        ord.client_report_id AS clientReportId,
+        ord.inspector_report_id AS inspectorReportId,
+        ord.complete_time AS completeTime,
+        ord.dispatch_time AS dispatchTime,
+        ord.reject_times AS rejectTimes,
+        CASE
+            WHEN ord.state = 1 THEN '鏈畬鎴�'
+            WHEN ord.state = 2 THEN '宸插畬鎴�'
+        END AS state,
+        CASE
+            WHEN res.state = 1 THEN	'宸蹭笂鎶�'
+            WHEN res.state = 2 THEN	'宸查�氳繃'
+            WHEN res.state = 3 THEN	'宸查┏鍥�'
+            ELSE '鏈笂鎶�'
+        END AS processingState
+    FROM ope_work_order ord
+        INNER JOIN ba_user us1 ON us1.id = ord.dispatcher_id
+        INNER JOIN ba_user us2 ON us2.id = ord.inspector_id
+        INNER JOIN ope_task_type typ ON typ.id = ord.task_type_id
+        LEFT JOIN ope_processing_result res ON res.work_order_id = ord.id
+    WHERE ord.deleted = 0 AND ord.id = #{workOrderId}
+  </select>
+
+  <!--鑾峰彇鎸囧畾娲惧崟浜虹殑鎸囧畾鏈垹闄ゅ伐鍗曪紝鍒犻櫎宸ュ崟鍓嶅垽鏂娇鐢ㄤ娇鐢�-->
+  <select id="getWorkOrder" resultType="com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder">
+    SELECT * FROM ope_work_order
+    WHERE deleted = 0 AND id = #{workOrderId} AND dispatcher_id = #{dispatcherId} LIMIT 1
+  </select>
+
+  <!--閫昏緫鍒犻櫎涓�涓湭鍒犻櫎鐨勫伐鍗�-->
+  <update id="deleteWorkOrder">
+    UPDATE ope_work_order SET deleted = UNIX_TIMESTAMP() WHERE deleted = 0 AND id = #{workOrderId}
+  </update>
+
+<!--  鏍规嵁鎸囧畾鏉′欢鑾峰彇宸ュ崟鏁伴噺-->
+  <select id="getWorkOrdersCount" resultType="java.lang.Long">
+    select
+      COUNT(*) AS recordCount
+    FROM ope_work_order ord
+    INNER JOIN ba_user us1 ON us1.id = ord.dispatcher_id
+    INNER JOIN ba_user us2 ON us2.id = ord.inspector_id
+    INNER JOIN ope_task_type typ ON typ.id = ord.task_type_id
+    LEFT JOIN ope_processing_result res ON res.work_order_id = ord.id
+    <where>
+      AND ord.deleted = 0
+
+      <if test = "dispatcher != null and dispatcher !=''">
+        AND us1.name like CONCAT('%',#{dispatcher},'%')
+      </if>
+
+      <if test = "inspector != null and inspector !=''">
+        AND us2.name like CONCAT('%',#{inspector},'%')
+      </if>
+
+      <if test = "timeStart != null and timeStop != null">
+        AND ord.dispatch_time BETWEEN #{timeStart} AND #{timeStop}
+      </if>
+    </where>
+  </select>
+
+  <select id="getWorkOrders" resultType="com.dy.pipIrrGlobal.voOp.VoWorkOrder">
+    SELECT
+        ord.id AS workOrderId,
+        ord.dispatcher_id AS dispatcherId,
+        us1.name AS dispatcher,
+        ord.inspector_id AS inspectorId,
+        us2.name AS inspector,
+        typ.task_type AS taskType,
+        ord.task_content AS taskContent,
+        ord.complete_criteria AS completeCriteria,
+        ord.dead_line AS deadLine,
+        ord.client_report_id AS clientReportId,
+        ord.inspector_report_id AS inspectorReportId,
+        ord.complete_time AS completeTime,
+        ord.dispatch_time AS dispatchTime,
+        ord.reject_times AS rejectTimes,
+        CASE
+            WHEN ord.state = 1 THEN '鏈畬鎴�'
+            WHEN ord.state = 2 THEN '宸插畬鎴�'
+        END AS state,
+        CASE
+            WHEN res.state = 1 THEN	'宸蹭笂鎶�'
+            WHEN res.state = 2 THEN	'宸查�氳繃'
+            WHEN res.state = 3 THEN	'宸查┏鍥�'
+            ELSE '鏈笂鎶�'
+        END AS processingState
+    FROM ope_work_order ord
+        INNER JOIN ba_user us1 ON us1.id = ord.dispatcher_id
+        INNER JOIN ba_user us2 ON us2.id = ord.inspector_id
+        INNER JOIN ope_task_type typ ON typ.id = ord.task_type_id
+        LEFT JOIN ope_processing_result res ON res.work_order_id = ord.id
+    <where>
+      AND ord.deleted = 0
+
+      <if test = "dispatcher != null and dispatcher !=''">
+        AND us1.name like CONCAT('%',#{dispatcher},'%')
+      </if>
+
+      <if test = "inspector != null and inspector !=''">
+        AND us2.name like CONCAT('%',#{inspector},'%')
+      </if>
+
+      <if test = "timeStart != null and timeStop != null">
+        AND ord.dispatch_time BETWEEN #{timeStart} AND #{timeStop}
+      </if>
+    </where>
+    ORDER BY ord.dispatch_time DESC
+    <trim prefix="limit " >
+      <if test="start != null and count != null">
+        #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
+      </if>
+    </trim>
+  </select>
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml
index d38ce76..0331a56 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml
@@ -189,7 +189,8 @@
     SELECT
       id,
       vc_num AS vcNum,
-      ROUND(money / 100, 2) AS money,
+<!--      ROUND(money / 100, 2) AS money,-->
+      money,
       in_use AS inUse,
       (CASE
         WHEN money &lt;= #{alarmValue} THEN true
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/ConsumerListener_push.java b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/ConsumerListener_push.java
deleted file mode 100644
index db86cf3..0000000
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/ConsumerListener_push.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.dy.pipIrrApp.workOrder;
-
-import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
-import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
-import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
-import org.apache.rocketmq.client.exception.MQClientException;
-import org.apache.rocketmq.common.message.MessageExt;
-import org.springframework.stereotype.Component;
-
-/**
- * @author ZhuBaoMin
- * @date 2024-11-04 15:02
- * @LastEditTime 2024-11-04 15:02
- * @Description
- */
-
-@Component
-public class ConsumerListener_push{
-    public void receiveMessage () throws MQClientException {
-        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("consumer_group");
-        consumer.setNamesrvAddr("127.0.0.1:9876");
-
-        // 璁剧疆娑堟伅鐩戝惉鍣�
-        consumer.registerMessageListener((MessageListenerConcurrently) (msgs, context) -> {
-            for (MessageExt msg : msgs) {
-                System.out.println("ConsumerListener_push receive message: " + new String(msg.getBody()));
-            }
-            return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
-        });
-
-        // 璁㈤槄涓婚鍜屾爣绛�
-        consumer.subscribe("workOrder", "鐜嬩簲");
-
-        // 鍚姩娑堣垂鑰�
-        consumer.start();
-    }
-}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderCtrl.java
index a20b809..dbf73c5 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderCtrl.java
@@ -1,6 +1,15 @@
 package com.dy.pipIrrApp.workOrder;
 
 import com.dy.common.aop.SsoAop;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.common.webUtil.QueryResultVo;
+import com.dy.pipIrrApp.workOrder.dto.DtoDeleteWorkOrder;
+import com.dy.pipIrrApp.workOrder.qo.QoWorkOrder;
+import com.dy.pipIrrGlobal.pojoOp.OpeProcessingResult;
+import com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder;
+import com.dy.pipIrrGlobal.voOp.VoWorkOrder;
+import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.rocketmq.client.exception.MQBrokerException;
@@ -11,12 +20,15 @@
 import org.apache.rocketmq.remoting.exception.RemotingException;
 import org.apache.rocketmq.spring.core.RocketMQTemplate;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.MediaType;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
 
 import java.nio.charset.StandardCharsets;
+import java.util.List;
+import java.util.Objects;
 
 /**
  * @author ZhuBaoMin
@@ -35,26 +47,160 @@
     @Autowired
     private RocketMQTemplate rocketMQTemplate;
 
+    @Value("${rocketmq.name-server}")
+    protected String nameServer;
 
-    @GetMapping("/sendWorkOrder")
+    @Value("${rocketmq.producer.group}")
+    protected String producerGroup;
+
+    @Value("${rocketmq.topic}")
+    protected String topic;
+
+    /**
+     * 鍒涘缓宸ュ崟
+     * @param po
+     * @param bindingResult
+     * @return
+     */
+    @PostMapping(path = "addWorkOrder", consumes = MediaType.APPLICATION_JSON_VALUE)
     @Transactional(rollbackFor = Exception.class)
     @SsoAop()
-    public void sendWorkOrder() throws MQClientException, MQBrokerException, RemotingException, InterruptedException {
-        ConsumerListener_push ConsumerListener_push = new ConsumerListener_push();
-        ConsumerListener_push.receiveMessage();
+    public BaseResponse<Boolean> addWorkOrder(@RequestBody @Valid OpeWorkOrder po, BindingResult bindingResult) throws MQBrokerException, RemotingException, InterruptedException, MQClientException {
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
 
-        String topic = "workOrder";
-        String tag = "鐜嬩簲";
-        String key = "11";
-        String message = "Hello World";
-        //SendResult sendResult = rocketMQTemplate.syncSend(topic + ":" + tag, message);
-        //System.out.println("send result:" + sendResult.toString());
+        if(po.getClientReportId() != null && po.getInspectorReportId() != null) {
+            return BaseResponseUtils.buildErrorMsg("宸ュ崟浠呰兘鍏宠仈涓�涓棶棰樹笂鎶�");
+        }
 
-        DefaultMQProducer producer = new DefaultMQProducer("producer_group");
-        producer.setNamesrvAddr("127.0.0.1:9876");
-        producer.start();
-        Message msg = new Message(topic,tag,"11",message.getBytes(StandardCharsets.UTF_8));
-        SendResult approveSendResult = producer.send(msg);
-        System.out.println("send result:" + approveSendResult.toString());
+        Long workOrderId = workOrderSv.insertWorkOrder(po);
+        if(workOrderId == null || workOrderId == 0) {
+            return BaseResponseUtils.buildErrorMsg("鍒涘缓宸ュ崟澶辫触");
+        }
+
+        VoWorkOrder voWorkOrder = workOrderSv.getWorkOrderById(workOrderId);
+        if(voWorkOrder == null) {
+            return BaseResponseUtils.buildErrorMsg("鑾峰彇宸ュ崟澶辫触");
+        }
+
+        if(!sendWorkOrder(voWorkOrder, workOrderId)) {
+            return BaseResponseUtils.buildErrorMsg("宸ュ崟鎺ㄩ�佸け璐�");
+        }
+
+        return BaseResponseUtils.buildSuccess();
     }
+
+    /**
+     * 閫氳繃RocketMQ鎺ㄩ�佸伐鍗曚富閿�
+     * @param voWorkOrder 宸ュ崟瑙嗗浘瀵硅薄
+     * @param workOrderId 宸ュ崟ID
+     * @return
+     * @throws MQClientException
+     * @throws MQBrokerException
+     * @throws RemotingException
+     * @throws InterruptedException
+     */
+    private Boolean sendWorkOrder(VoWorkOrder voWorkOrder, Long workOrderId) throws MQClientException, MQBrokerException, RemotingException, InterruptedException {
+        String tag = voWorkOrder.getInspector();
+        String key = voWorkOrder.getInspectorId().toString();
+        //String message = JSON.toJSONString(voWorkOrder);
+        String message = workOrderId.toString();
+
+        DefaultMQProducer producer = new DefaultMQProducer(producerGroup);
+        producer.setNamesrvAddr(nameServer);
+        producer.start();
+        Message msg = new Message(topic, tag, key, message.getBytes(StandardCharsets.UTF_8));
+        SendResult approveSendResult = producer.send(msg);
+        if(!approveSendResult.getSendStatus().toString().equals("SEND_OK")) {
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * 閫昏緫鍒犻櫎鎸囧畾娲惧崟浜虹殑鎸囧畾鏈垹闄ゅ伐鍗�
+     * 鍏堝垽鏂寚瀹氭淳鍗曚汉銆佹湭鍒犻櫎鐨勬寚瀹氬伐鍗曟槸鍚﹀瓨鍦�
+     * @param deleteWorkOrder 鍒犻櫎宸ュ崟浼犺緭绫�
+     * @param bindingResult
+     * @return
+     */
+    @PostMapping(path = "deleteWorkOrder")
+    @SsoAop()
+    public BaseResponse<Boolean> deleteWorkOrder(@RequestBody @Valid DtoDeleteWorkOrder deleteWorkOrder, BindingResult bindingResult) {
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        OpeWorkOrder workOrder = workOrderSv.getWorkOrder(deleteWorkOrder.getDispatcherId(), deleteWorkOrder.getWorkOrderId());
+        if(workOrder == null) {
+            return BaseResponseUtils.buildErrorMsg("鎮ㄨ鍒犻櫎鐨勫伐鍗曚笉瀛樺湪");
+        }
+
+        if(workOrderSv.deleteWorkOrder(deleteWorkOrder.getWorkOrderId()) == 0) {
+            return BaseResponseUtils.buildErrorMsg("宸ュ崟鍒犻櫎澶辫触");
+        }
+
+
+        return BaseResponseUtils.buildSuccess();
+    }
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鏈垹闄ょ殑宸ュ崟鍒楄〃
+     * @param qo
+     * @return
+     */
+    @GetMapping(path = "/getWorkOrders")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<VoWorkOrder>>> getWorkOrders(QoWorkOrder qo){
+        try {
+            return BaseResponseUtils.buildSuccess(workOrderSv.getWorkOrders(qo));
+        } catch (Exception e) {
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    /**
+     * 鑾峰彇宸ュ崟璇︽儏
+     * @param workOrderId
+     * @return
+     */
+    @GetMapping(path = "/getOneWorkOrder")
+    public BaseResponse<VoWorkOrder> getOneWorkOrder(@RequestParam("workOrderId") Long workOrderId) {
+        try {
+            return BaseResponseUtils.buildSuccess(workOrderSv.getWorkOrderById(workOrderId));
+        } catch (Exception e) {
+            log.error("鑾峰彇宸ュ崟璇︽儏寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage());
+        }
+    }
+
+    /**
+     * 涓婃姤宸ュ崟澶勭悊缁撴灉
+     *      鍒ゆ柇璇ュ伐鍗曟槸鍚﹀瓨鍦ㄦ湁鏁堢殑澶勭悊缁撴灉锛屽鏋滃瓨鍦ㄥ垯鎻愮ず鐢ㄦ埛璇ュ伐鍗曞凡瀛樺湪澶勭悊缁撴灉
+     *      娣诲姞澶勭悊缁撴灉鍥炲
+     * @param po
+     * @param bindingResult
+     * @return
+     */
+    @PostMapping(path = "addProcessingResult")
+    @Transactional(rollbackFor = Exception.class)
+    public BaseResponse<Boolean> addProcessingResult(@RequestBody @Valid OpeProcessingResult po, BindingResult bindingResult) {
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        if(workOrderSv.hasValidProcessingResult(po.getWorkOrderId())) {
+            return BaseResponseUtils.buildErrorMsg("璇ュ伐鍗曞瓨鍦ㄦ湁鏁堢殑澶勭悊缁撴灉");
+        }
+
+        Long processingResultId = workOrderSv.insertProcessingResult(po);
+        if(processingResultId == null) {
+            return BaseResponseUtils.buildErrorMsg("涓婃姤宸ュ崟澶勭悊缁撴灉澶辫触");
+        }
+
+        return BaseResponseUtils.buildSuccess(true) ;
+    }
+
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderSv.java
index c635d5e..34746ef 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderSv.java
@@ -1,7 +1,20 @@
 package com.dy.pipIrrApp.workOrder;
 
+import com.dy.common.webUtil.QueryResultVo;
+import com.dy.pipIrrApp.workOrder.qo.QoWorkOrder;
+import com.dy.pipIrrGlobal.daoOp.OpeProcessingResultMapper;
+import com.dy.pipIrrGlobal.daoOp.OpeWorkOrderMapper;
+import com.dy.pipIrrGlobal.pojoOp.OpeProcessingResult;
+import com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder;
+import com.dy.pipIrrGlobal.voOp.VoWorkOrder;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.common.utils.PojoUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author ZhuBaoMin
@@ -13,4 +26,97 @@
 @Slf4j
 @Service
 public class WorkOrderSv {
+    @Autowired
+    private OpeWorkOrderMapper opeWorkOrderMapper;
+
+    @Autowired
+    private OpeProcessingResultMapper opeProcessingResultMapper;
+
+    /**
+     * 娣诲姞宸ュ崟璁板綍
+     * @param po
+     * @return
+     */
+    public Long insertWorkOrder(OpeWorkOrder po) {
+        po.setDispatchTime(new Date());
+        po.setState((byte) 1);
+        po.setRejectTimes(0);
+        po.setDeleted(0L);
+
+        opeWorkOrderMapper.insert(po);
+        return po.getId();
+    }
+
+    /**
+     * 鑾峰彇鎸囧畾娲惧崟浜虹殑鎸囧畾鏈垹闄ゅ伐鍗曪紝鍒犻櫎宸ュ崟鍓嶅垽鏂娇鐢ㄤ娇鐢�
+     * @param dispatcherId
+     * @param workOrderId
+     * @return
+     */
+    public OpeWorkOrder getWorkOrder(Long dispatcherId, Long workOrderId) {
+        return opeWorkOrderMapper.getWorkOrder(dispatcherId, workOrderId);
+    }
+
+    /**
+     * 閫昏緫鍒犻櫎涓�涓湭鍒犻櫎鐨勫伐鍗�
+     * @param workOrderId
+     * @return
+     */
+    public Integer deleteWorkOrder(Long workOrderId) {
+        return opeWorkOrderMapper.deleteWorkOrder(workOrderId);
+    }
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇宸ュ崟
+     * @param qo
+     * @return
+     */
+    public QueryResultVo<List<VoWorkOrder>> getWorkOrders(QoWorkOrder qo) {
+        qo.completionTime() ;
+
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo);
+        Long itemTotal = opeWorkOrderMapper.getWorkOrdersCount(params);
+
+        QueryResultVo<List<VoWorkOrder>> rsVo = new QueryResultVo<>() ;
+        rsVo.pageSize = qo.pageSize ;
+        rsVo.pageCurr = qo.pageCurr ;
+
+        rsVo.calculateAndSet(itemTotal, params);
+        rsVo.obj = opeWorkOrderMapper.getWorkOrders(params);
+        return rsVo ;
+    }
+
+    /**
+     * 鏍规嵁宸ュ崟涓婚敭鑾峰彇宸ュ崟瑙嗗浘瀵硅薄
+     * @param workOrderId
+     * @return
+     */
+    public VoWorkOrder getWorkOrderById(Long workOrderId) {
+        return opeWorkOrderMapper.getWorkOrderById(workOrderId);
+    }
+
+    /**
+     * 鏍规嵁workOrderId鑾峰彇鏈垹闄ょ殑澶勭悊缁撴灉鏁伴噺锛屾坊鍔犵粨鏋滀笂鎶ュ墠鍒ゆ柇浣跨敤
+     * @param workOrderId
+     * @return
+     */
+    public Boolean hasValidProcessingResult(Long workOrderId) {
+        if (opeProcessingResultMapper.getValidResultCount(workOrderId) == 0) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 涓婃姤宸ュ崟澶勭悊缁撴灉
+     * @param po
+     * @return
+     */
+    public Long insertProcessingResult(OpeProcessingResult po) {
+        po.setReportTime(new Date());
+        po.setState((byte)1);
+        po.setDeleted(0L);
+        opeProcessingResultMapper.insert(po);
+        return po.getId();
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/dto/DtoDeleteWorkOrder.java b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/dto/DtoDeleteWorkOrder.java
new file mode 100644
index 0000000..b0640cf
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/dto/DtoDeleteWorkOrder.java
@@ -0,0 +1,28 @@
+package com.dy.pipIrrApp.workOrder.dto;
+
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-11-07 13:43
+ * @LastEditTime 2024-11-07 13:43
+ * @Description 鍒犻櫎宸ュ崟浼犺緭绫�
+ */
+
+@Data
+public class DtoDeleteWorkOrder {
+    public static final long serialVersionUID = 202411071344001L;
+
+    /**
+     * 娲惧崟浜篒D
+     */
+    @NotNull(message = "娲惧崟浜轰笉鑳戒负绌�")
+    private Long dispatcherId;
+
+    /**
+     * 宸ュ崟ID
+     */
+    @NotNull(message = "宸ュ崟涓嶈兘涓虹┖")
+    private Long workOrderId;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/qo/QoWorkOrder.java b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/qo/QoWorkOrder.java
new file mode 100644
index 0000000..fb636a3
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/qo/QoWorkOrder.java
@@ -0,0 +1,44 @@
+package com.dy.pipIrrApp.workOrder.qo;
+
+import com.dy.common.webUtil.QueryConditionVo;
+import lombok.Data;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-11-07 17:07
+ * @LastEditTime 2024-11-07 17:07
+ * @Description
+ */
+
+@Data
+public class QoWorkOrder extends QueryConditionVo {
+    /**
+     * 娲惧崟浜哄鍚�
+     */
+    private String dispatcher;
+
+    /**
+     * 宸℃鍛樺鍚�
+     */
+    private String inspector;
+
+    /**
+     * 鏌ヨ寮�濮嬫椂闂�
+     */
+    private String timeStart;
+
+    /**
+     * 鏌ヨ缁撴潫鏃堕棿
+     */
+    private String timeStop;
+
+    public void completionTime(){
+        if(this.timeStart != null && !this.timeStart.trim().equals("")) {
+            this.timeStart = timeStart + " 00:00:00";
+        }
+        if(this.timeStop != null && !this.timeStart.trim().equals("")) {
+            this.timeStop = timeStop + " 23:59:59";
+        }
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
similarity index 100%
rename from pipIrr-platform/pipIrr-global/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
rename to pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/resources/application.yml
index 7a0fb67..ec02f18 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/resources/application.yml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/resources/application.yml
@@ -14,3 +14,26 @@
         context-parameters:
             #GenerateIdSetSuffixListener涓簲鐢紝鍙栧�艰寖鍥存槸0-99
             idSuffix: ${pipIrr.app.idSuffix}
+
+rocketmq:
+    topic: "workOrder"
+    consumer:
+        group: consumer_group
+        # 涓�娆℃媺鍙栨秷鎭渶澶у�硷紝娉ㄦ剰鏄媺鍙栨秷鎭殑鏈�澶у�艰�岄潪娑堣垂鏈�澶у��
+        pull-batch-size: 10
+    name-server: 127.0.0.1:9876
+    producer:
+        # 鍙戦�佸悓涓�绫绘秷鎭殑璁剧疆涓哄悓涓�涓猤roup锛屼繚璇佸敮涓�
+        group: producer_group
+        # 鍙戦�佹秷鎭秴鏃舵椂闂达紝榛樿3000
+        sendMessageTimeout: 10000
+        # 鍙戦�佹秷鎭け璐ラ噸璇曟鏁帮紝榛樿2
+        retryTimesWhenSendFailed: 2
+        # 寮傛娑堟伅閲嶈瘯娆℃暟锛岄粯璁�2
+        retryTimesWhenSendAsyncFailed: 2
+        # 娑堟伅鏈�澶ч暱搴︼紝榛樿1024 * 1024 * 4(榛樿4M)
+        maxMessageSize: 4096
+        # 鍘嬬缉娑堟伅闃堝�硷紝榛樿4k(1024 * 4)
+        compressMessageBodyThreshold: 4096
+        # 鏄惁鍦ㄥ唴閮ㄥ彂閫佸け璐ユ椂閲嶈瘯鍙︿竴涓猙roker锛岄粯璁alse
+        retryNextServer: false
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java
index eaac347..db5cd4d 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java
@@ -411,7 +411,7 @@
              */
             Param myParam = new Param();
             myParam.setComId(comId);
-            myParam.setComType((byte)2);
+            myParam.setComType((byte)1);
             myParam.setCommandCode(commandCode);
             myParam.setCommandName(CodeV1.getCodeName(commandCode));
             myParam.setIntakeId(intakeId);
@@ -514,7 +514,7 @@
              */
             Param myParam = new Param();
             myParam.setComId(comId);
-            myParam.setComType((byte)2);
+            myParam.setComType((byte)1);
             myParam.setCommandCode(commandCode);
             myParam.setCommandName(CodeV1.getCodeName(commandCode));
             myParam.setIntakeId(intakeId);
@@ -629,7 +629,7 @@
              */
             Param myParam = new Param();
             myParam.setComId(comId);
-            myParam.setComType((byte)2);
+            myParam.setComType((byte)1);
             myParam.setCommandCode(commandCode);
             myParam.setCommandName(CodeV1.getCodeName(commandCode));
             myParam.setIntakeId(intakeId);
@@ -744,7 +744,7 @@
              */
             Param myParam = new Param();
             myParam.setComId(comId);
-            myParam.setComType((byte)2);
+            myParam.setComType((byte)1);
             myParam.setCommandCode(commandCode);
             myParam.setCommandName(CodeV1.getCodeName(commandCode));
             myParam.setIntakeId(intakeId);

--
Gitblit v1.8.0