From 3fdbd0285c393968fdc83b737d2a3af0105ad859 Mon Sep 17 00:00:00 2001 From: zhubaomin <zhubaomin> Date: 星期五, 08 十一月 2024 08:32:59 +0800 Subject: [PATCH] 工单4个接口 --- /dev/null | 40 ---- pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderSv.java | 78 +++++++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeWorkOrder.java | 58 +++-- 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/daoOp/OpeWorkOrderMapper.java | 38 +++ pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeProcessingResultMapper.xml | 5 pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeWorkOrderMapper.xml | 141 +++++++++++++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeProcessingResult.java | 6 pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderCtrl.java | 112 ++++++++++- pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/dto/DtoDeleteWorkOrder.java | 28 ++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeProcessingResultMapper.java | 7 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voOp/VoWorkOrder.java | 37 +++ 12 files changed, 508 insertions(+), 86 deletions(-) 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 index c3351f1..ad53364 100644 --- 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 @@ -24,4 +24,11 @@ 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/OpeWorkOrderMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeWorkOrderMapper.java index 24e556b..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 @@ -4,11 +4,15 @@ 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 ZhuBaoMin - * @date 2024-11-06 11:33 - * @LastEditTime 2024-11-06 11:33 + * @date 2024-11-07 15:38 + * @LastEditTime 2024-11-07 15:38 * @Description */ @@ -32,4 +36,34 @@ * @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/OpeProcessingResult.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeProcessingResult.java index e6de5f7..9838e44 100644 --- 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 @@ -10,6 +10,7 @@ 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; @@ -42,12 +43,14 @@ * 宸ュ崟ID */ @JSONField(serializeUsing= ObjectWriterImplToString.class) + @NotNull(message = "蹇呴』閫夋嫨涓�涓伐鍗�") private Long workOrderId; /** * 宸℃鍛業D */ @JSONField(serializeUsing= ObjectWriterImplToString.class) + @NotNull(message = "宸℃鍛樹笉鑳戒负绌�") private Long inspectorId; /** @@ -87,6 +90,7 @@ * 浠诲姟瀹屾垚鏃堕棿;绮剧‘鍒板垎 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm") + @NotNull(message = "浠诲姟瀹屾垚鏃堕棿涓嶈兘涓虹┖") private Date completeTime; /** @@ -96,7 +100,7 @@ private Date reportTime; /** - * 鐘舵��;1-鑽夌锛�2-宸蹭笂鎶ワ紝3-宸查�氳繃锛�4-宸查┏鍥� + * 鐘舵��;1-宸蹭笂鎶ワ紝2-宸查�氳繃锛�3-宸查┏鍥� */ private Byte state; 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 ee6848d..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 @@ -28,71 +28,81 @@ public static final long serialVersionUID = 202411061136001L; /** - * 涓婚敭 - */ + * 涓婚敭 + */ @JSONField(serializeUsing= ObjectWriterImplToString.class) @TableId(type = IdType.INPUT) private Long id; /** - * 娲惧崟浜篒D - */ + * 娲惧崟浜篒D + */ @JSONField(serializeUsing= ObjectWriterImplToString.class) private Long dispatcherId; /** - * 宸℃鍛業D - */ + * 宸℃鍛業D + */ @JSONField(serializeUsing= ObjectWriterImplToString.class) private Long inspectorId; /** - * 浠诲姟绫诲瀷ID - */ + * 浠诲姟绫诲瀷ID + */ @JSONField(serializeUsing= ObjectWriterImplToString.class) private Long taskTypeId; /** - * 浠诲姟鍐呭 - */ + * 浠诲姟鍐呭 + */ private String taskContent; /** - * 瀹屾垚鏍囧噯 - */ + * 瀹屾垚鏍囧噯 + */ private String completeCriteria; /** - * 瑕佹眰瀹屾垚鏃堕棿;绮剧‘鍒板垎 - */ + * 瑕佹眰瀹屾垚鏃堕棿;绮剧‘鍒板垎 + */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm") private Date deadLine; /** - * 浠诲姟瀹屾垚鏃堕棿;绮剧‘鍒板垎 - */ + * 浠诲姟瀹屾垚鏃堕棿;绮剧‘鍒板垎 + */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm") private Date completeTime; /** - * 娲惧崟鏃堕棿 - */ + * 娲惧崟鏃堕棿 + */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date dispatchTime; /** - * 鐘舵��;1-鏈畬鎴愶紝2-宸插畬鎴� - */ + * 鍐滄埛闂涓婃姤ID + */ + private Long clientReportId; + + /** + * 宸℃鍛橀棶棰樹笂鎶D + */ + private Long inspectorReportId; + + /** + * 鐘舵��;1-鏈畬鎴愶紝2-宸插畬鎴� + */ private Byte state; /** - * 椹冲洖娆℃暟 - */ + * 椹冲洖娆℃暟 + */ private Integer rejectTimes; /** - * 閫昏緫鍒犻櫎鏍囪瘑;鏈垹闄や负0锛屽凡鍒犻櫎涓哄垹闄ゆ椂闂� - */ + * 閫昏緫鍒犻櫎鏍囪瘑;鏈垹闄や负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 index 5b8ad54..c0e4cd7 100644 --- 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 @@ -17,9 +17,15 @@ */ @Data -@JsonPropertyOrder({"dispatcherId", "dispatcher", "inspectorId", "inspector", "taskTypeId", "taskType", "taskContent", "completeCriteria", "deadLine", "dispatchTime", "rejectTimes"}) +@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 @@ -71,12 +77,41 @@ 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/resources/mapper/OpeProcessingResultMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeProcessingResultMapper.xml index 96a1a32..56a5430 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeProcessingResultMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeProcessingResultMapper.xml @@ -194,4 +194,9 @@ 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/OpeWorkOrderMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeWorkOrderMapper.xml index 4b62a3b..9e2a155 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeWorkOrderMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeWorkOrderMapper.xml @@ -13,6 +13,8 @@ <result column="dead_line" jdbcType="TIMESTAMP" property="deadLine" /> <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" /> @@ -20,7 +22,8 @@ <sql id="Base_Column_List"> <!--@mbg.generated--> id, dispatcher_id, inspector_id, task_type_id, task_content, complete_criteria, dead_line, - complete_time, dispatch_time, `state`, reject_times, deleted + 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--> @@ -39,13 +42,13 @@ insert into ope_work_order (id, dispatcher_id, inspector_id, task_type_id, task_content, complete_criteria, dead_line, complete_time, dispatch_time, - `state`, reject_times, deleted - ) + 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}, - #{state,jdbcType=TINYINT}, #{rejectTimes,jdbcType=INTEGER}, #{deleted,jdbcType=BIGINT} - ) + #{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--> @@ -77,6 +80,12 @@ </if> <if test="dispatchTime != null"> dispatch_time, + </if> + <if test="clientReportId != null"> + client_report_id, + </if> + <if test="inspectorReportId != null"> + inspector_report_id, </if> <if test="state != null"> `state`, @@ -115,6 +124,12 @@ </if> <if test="dispatchTime != null"> #{dispatchTime,jdbcType=TIMESTAMP}, + </if> + <if test="clientReportId != null"> + #{clientReportId,jdbcType=BIGINT}, + </if> + <if test="inspectorReportId != null"> + #{inspectorReportId,jdbcType=BIGINT}, </if> <if test="state != null"> #{state,jdbcType=TINYINT}, @@ -155,6 +170,12 @@ <if test="dispatchTime != null"> dispatch_time = #{dispatchTime,jdbcType=TIMESTAMP}, </if> + <if test="clientReportId != null"> + client_report_id = #{clientReportId,jdbcType=BIGINT}, + </if> + <if test="inspectorReportId != null"> + inspector_report_id = #{inspectorReportId,jdbcType=BIGINT}, + </if> <if test="state != null"> `state` = #{state,jdbcType=TINYINT}, </if> @@ -178,6 +199,8 @@ dead_line = #{deadLine,jdbcType=TIMESTAMP}, 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} @@ -187,6 +210,7 @@ <!--鏍规嵁涓婚敭鑾峰彇宸ュ崟瑙嗗浘瀵硅薄--> <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, @@ -195,12 +219,117 @@ 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 + 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-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 96f3f92..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,9 +1,12 @@ package com.dy.pipIrrApp.workOrder; -import com.alibaba.fastjson2.JSON; 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; @@ -21,12 +24,10 @@ import org.springframework.http.MediaType; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.nio.charset.StandardCharsets; +import java.util.List; import java.util.Objects; /** @@ -69,6 +70,10 @@ return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } + if(po.getClientReportId() != null && po.getInspectorReportId() != null) { + return BaseResponseUtils.buildErrorMsg("宸ュ崟浠呰兘鍏宠仈涓�涓棶棰樹笂鎶�"); + } + Long workOrderId = workOrderSv.insertWorkOrder(po); if(workOrderId == null || workOrderId == 0) { return BaseResponseUtils.buildErrorMsg("鍒涘缓宸ュ崟澶辫触"); @@ -79,7 +84,7 @@ return BaseResponseUtils.buildErrorMsg("鑾峰彇宸ュ崟澶辫触"); } - if(!sendWorkOrder(voWorkOrder)) { + if(!sendWorkOrder(voWorkOrder, workOrderId)) { return BaseResponseUtils.buildErrorMsg("宸ュ崟鎺ㄩ�佸け璐�"); } @@ -87,17 +92,20 @@ } /** - * 鎺ㄩ�佸伐鍗� - * @param voWorkOrder + * 閫氳繃RocketMQ鎺ㄩ�佸伐鍗曚富閿� + * @param voWorkOrder 宸ュ崟瑙嗗浘瀵硅薄 + * @param workOrderId 宸ュ崟ID + * @return * @throws MQClientException * @throws MQBrokerException * @throws RemotingException * @throws InterruptedException */ - private Boolean sendWorkOrder(VoWorkOrder voWorkOrder) throws MQClientException, MQBrokerException, RemotingException, 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 = JSON.toJSONString(voWorkOrder); + String message = workOrderId.toString(); DefaultMQProducer producer = new DefaultMQProducer(producerGroup); producer.setNamesrvAddr(nameServer); @@ -111,4 +119,88 @@ 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 1a01ab6..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,13 +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 @@ -22,6 +29,9 @@ @Autowired private OpeWorkOrderMapper opeWorkOrderMapper; + @Autowired + private OpeProcessingResultMapper opeProcessingResultMapper; + /** * 娣诲姞宸ュ崟璁板綍 * @param po @@ -29,7 +39,7 @@ */ public Long insertWorkOrder(OpeWorkOrder po) { po.setDispatchTime(new Date()); - po.setState((byte)1); + po.setState((byte) 1); po.setRejectTimes(0); po.setDeleted(0L); @@ -38,11 +48,75 @@ } /** - * 鏍规嵁涓婚敭鑾峰彇宸ュ崟瑙嗗浘瀵硅薄 + * 鑾峰彇鎸囧畾娲惧崟浜虹殑鎸囧畾鏈垹闄ゅ伐鍗曪紝鍒犻櫎宸ュ崟鍓嶅垽鏂娇鐢ㄤ娇鐢� + * @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"; + } + } + +} -- Gitblit v1.8.0