From d15cae9e8d2cabf8d0f3ed41f2f88b04131f8c76 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期四, 31 七月 2025 14:18:58 +0800
Subject: [PATCH] 增加查询单个设备(RTU或FBox)是否在线的功能接口
---
pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml | 378 +++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 291 insertions(+), 87 deletions(-)
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml
index 7f5b8fc..1545ca5 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml
@@ -5,6 +5,7 @@
<!--@mbg.generated-->
<!--@Table ir_irrigate_plan-->
<id column="id" jdbcType="BIGINT" property="id" />
+ <result column="project_id" jdbcType="BIGINT" property="projectId" />
<result column="plan_name" jdbcType="VARCHAR" property="planName" />
<result column="startup_mode" jdbcType="TINYINT" property="startupMode" />
<result column="plan_start_time" jdbcType="TIMESTAMP" property="planStartTime" />
@@ -16,7 +17,7 @@
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
- id, plan_name, startup_mode, plan_start_time, plan_stop_time, duration,
+ id, project_id, plan_name, startup_mode, plan_start_time, plan_stop_time, duration,
plan_state, executing_state, deleted
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
@@ -33,11 +34,11 @@
</delete>
<insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan">
<!--@mbg.generated-->
- insert into ir_irrigate_plan (id, plan_name,
+ insert into ir_irrigate_plan (id, project_id, plan_name,
startup_mode, plan_start_time, plan_stop_time,
duration, plan_state, executing_state,
deleted)
- values (#{id,jdbcType=BIGINT}, #{planName,jdbcType=VARCHAR},
+ values (#{id,jdbcType=BIGINT}, #{projectId,jdbcType=BIGINT}, #{planName,jdbcType=VARCHAR},
#{startupMode,jdbcType=TINYINT}, #{planStartTime,jdbcType=TIMESTAMP}, #{planStopTime,jdbcType=TIMESTAMP},
#{duration,jdbcType=INTEGER}, #{planState,jdbcType=TINYINT}, #{executingState,jdbcType=TINYINT},
#{deleted,jdbcType=BIGINT})
@@ -48,6 +49,9 @@
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
+ </if>
+ <if test="projectId != null">
+ project_id,
</if>
<if test="planName != null">
plan_name,
@@ -77,6 +81,9 @@
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=BIGINT},
+ </if>
+ <if test="projectId != null">
+ #{projectId,jdbcType=BIGINT},
</if>
<if test="planName != null">
#{planName,jdbcType=VARCHAR},
@@ -108,6 +115,9 @@
<!--@mbg.generated-->
update ir_irrigate_plan
<set>
+ <if test="projectId != null">
+ project_id = #{projectId,jdbcType=BIGINT},
+ </if>
<if test="planName != null">
plan_name = #{planName,jdbcType=VARCHAR},
</if>
@@ -138,7 +148,8 @@
<update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan">
<!--@mbg.generated-->
update ir_irrigate_plan
- set plan_name = #{planName,jdbcType=VARCHAR},
+ set project_id = #{projectId,jdbcType=BIGINT},
+ plan_name = #{planName,jdbcType=VARCHAR},
startup_mode = #{startupMode,jdbcType=TINYINT},
plan_start_time = #{planStartTime,jdbcType=TIMESTAMP},
plan_stop_time = #{planStopTime,jdbcType=TIMESTAMP},
@@ -152,111 +163,111 @@
<!--鏍规嵁鎸囧畾鐨勮鍒扞D鑾峰彇鍚姩妯″紡-->
<select id="getStartupMode" resultType="java.lang.Byte">
SELECT
- startup_mode AS startupMode
+ startup_mode AS startupMode
FROM ir_irrigate_plan
WHERE id = #{planId}
</select>
<!--鏍规嵁鎸囧畾鐨勬潯浠惰幏鍙栬鍒掓暟閲�-->
-<!-- <select id="getIrrigatePlanCount" resultType="java.lang.Long">-->
-<!-- SELECT COUNT(*)-->
-<!-- FROM ir_irrigate_plan plan-->
-<!-- INNER JOIN ir_project pro ON pro.id = plan.project_id-->
-<!-- <where>-->
-<!-- AND plan.deleted = 0-->
-<!-- AND pro.deleted = 0-->
-<!-- <if test="projectName != null and projectName != ''">-->
-<!-- AND pro.project_name LIKE CONCAT('%', #{projectName}, '%')-->
-<!-- </if>-->
+ <!-- <select id="getIrrigatePlanCount" resultType="java.lang.Long">-->
+ <!-- SELECT COUNT(*)-->
+ <!-- FROM ir_irrigate_plan plan-->
+ <!-- INNER JOIN ir_project pro ON pro.id = plan.project_id-->
+ <!-- <where>-->
+ <!-- AND plan.deleted = 0-->
+ <!-- AND pro.deleted = 0-->
+ <!-- <if test="projectName != null and projectName != ''">-->
+ <!-- AND pro.project_name LIKE CONCAT('%', #{projectName}, '%')-->
+ <!-- </if>-->
-<!-- <if test="planName != null and planName != ''">-->
-<!-- AND plan.plan_name LIKE CONCAT('%', #{planName}, '%')-->
-<!-- </if>-->
+ <!-- <if test="planName != null and planName != ''">-->
+ <!-- AND plan.plan_name LIKE CONCAT('%', #{planName}, '%')-->
+ <!-- </if>-->
-<!-- <if test="startupMode != null">-->
-<!-- AND plan.startup_mode = #{startupMode}-->
-<!-- </if>-->
+ <!-- <if test="startupMode != null">-->
+ <!-- AND plan.startup_mode = #{startupMode}-->
+ <!-- </if>-->
-<!-- <if test="planState != null">-->
-<!-- AND plan.plan_state = #{planState}-->
-<!-- </if>-->
+ <!-- <if test="planState != null">-->
+ <!-- AND plan.plan_state = #{planState}-->
+ <!-- </if>-->
-<!-- <if test="executingState != null">-->
-<!-- AND plan.executing_state = #{executingState}-->
-<!-- </if>-->
-<!-- </where>-->
-<!-- </select>-->
+ <!-- <if test="executingState != null">-->
+ <!-- AND plan.executing_state = #{executingState}-->
+ <!-- </if>-->
+ <!-- </where>-->
+ <!-- </select>-->
<!--鏍规嵁鎸囧畾鐨勬潯浠惰幏鍙栬鍒掑垪琛�-->
-<!-- <select id="getIrrigatePlans" resultType="com.dy.pipIrrGlobal.voIr.VoIrrigatePlan">-->
-<!-- SELECT-->
-<!-- plan.id AS planId,-->
-<!-- pro.project_name AS projectName,-->
-<!-- plan.plan_name AS planName,-->
-<!-- CASE plan.startup_mode-->
-<!-- WHEN 1 THEN '鎵嬪姩鍚姩'-->
-<!-- WHEN 2 THEN '鑷姩鍚姩'-->
-<!-- END AS startupMode,-->
-<!-- plan.plan_start_time AS startTime,-->
-<!-- plan.plan_stop_time AS stopTime,-->
-<!-- plan.duration AS duration,-->
-<!-- CASE plan.plan_state-->
-<!-- WHEN 1 THEN '鑽夌'-->
-<!-- WHEN 2 THEN '宸插彂甯�'-->
-<!-- END AS planState,-->
+ <!-- <select id="getIrrigatePlans" resultType="com.dy.pipIrrGlobal.voIr.VoIrrigatePlan">-->
+ <!-- SELECT-->
+ <!-- plan.id AS planId,-->
+ <!-- pro.project_name AS projectName,-->
+ <!-- plan.plan_name AS planName,-->
+ <!-- CASE plan.startup_mode-->
+ <!-- WHEN 1 THEN '鎵嬪姩鍚姩'-->
+ <!-- WHEN 2 THEN '鑷姩鍚姩'-->
+ <!-- END AS startupMode,-->
+ <!-- plan.plan_start_time AS startTime,-->
+ <!-- plan.plan_stop_time AS stopTime,-->
+ <!-- plan.duration AS duration,-->
+ <!-- CASE plan.plan_state-->
+ <!-- WHEN 1 THEN '鑽夌'-->
+ <!-- WHEN 2 THEN '宸插彂甯�'-->
+ <!-- END AS planState,-->
-<!-- CASE plan.executing_state-->
-<!-- WHEN 1 THEN-->
-<!-- '鏈墽琛�'-->
-<!-- WHEN 2 THEN-->
-<!-- '鎵ц涓�'-->
-<!-- WHEN 3 THEN-->
-<!-- '宸叉殏鍋�'-->
-<!-- WHEN 4 THEN-->
-<!-- '宸茬粓姝�'-->
-<!-- END AS executingState-->
-<!-- FROM ir_irrigate_plan plan-->
-<!-- INNER JOIN ir_project pro ON pro.id = plan.project_id-->
-<!-- <where>-->
-<!-- AND plan.deleted = 0-->
-<!-- AND pro.deleted = 0-->
-<!-- <if test="projectName != null and projectName != ''">-->
-<!-- AND pro.project_name LIKE CONCAT('%', #{projectName}, '%')-->
-<!-- </if>-->
+ <!-- CASE plan.executing_state-->
+ <!-- WHEN 1 THEN-->
+ <!-- '鏈墽琛�'-->
+ <!-- WHEN 2 THEN-->
+ <!-- '鎵ц涓�'-->
+ <!-- WHEN 3 THEN-->
+ <!-- '宸叉殏鍋�'-->
+ <!-- WHEN 4 THEN-->
+ <!-- '宸茬粓姝�'-->
+ <!-- END AS executingState-->
+ <!-- FROM ir_irrigate_plan plan-->
+ <!-- INNER JOIN ir_project pro ON pro.id = plan.project_id-->
+ <!-- <where>-->
+ <!-- AND plan.deleted = 0-->
+ <!-- AND pro.deleted = 0-->
+ <!-- <if test="projectName != null and projectName != ''">-->
+ <!-- AND pro.project_name LIKE CONCAT('%', #{projectName}, '%')-->
+ <!-- </if>-->
-<!-- <if test="planName != null and planName != ''">-->
-<!-- AND plan.plan_name LIKE CONCAT('%', #{planName}, '%')-->
-<!-- </if>-->
+ <!-- <if test="planName != null and planName != ''">-->
+ <!-- AND plan.plan_name LIKE CONCAT('%', #{planName}, '%')-->
+ <!-- </if>-->
-<!-- <if test="startupMode != null">-->
-<!-- AND plan.startup_mode = #{startupMode}-->
-<!-- </if>-->
+ <!-- <if test="startupMode != null">-->
+ <!-- AND plan.startup_mode = #{startupMode}-->
+ <!-- </if>-->
-<!-- <if test="planState != null">-->
-<!-- AND plan.plan_state = #{planState}-->
-<!-- </if>-->
+ <!-- <if test="planState != null">-->
+ <!-- AND plan.plan_state = #{planState}-->
+ <!-- </if>-->
-<!-- <if test="executingState != null">-->
-<!-- AND plan.executing_state = #{executingState}-->
-<!-- </if>-->
-<!-- </where>-->
-<!-- ORDER BY plan.plan_state DESC, plan.plan_start_time-->
-<!-- <trim prefix="limit ">-->
-<!-- <if test="start != null and count != null">-->
-<!-- #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}-->
-<!-- </if>-->
-<!-- </trim>-->
-<!-- </select>-->
+ <!-- <if test="executingState != null">-->
+ <!-- AND plan.executing_state = #{executingState}-->
+ <!-- </if>-->
+ <!-- </where>-->
+ <!-- ORDER BY plan.plan_state DESC, plan.plan_start_time-->
+ <!-- <trim prefix="limit ">-->
+ <!-- <if test="start != null and count != null">-->
+ <!-- #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}-->
+ <!-- </if>-->
+ <!-- </trim>-->
+ <!-- </select>-->
<!--鏍规嵁璁″垝ID鑾峰彇璁″垝绠�鍗曚俊鎭�-->
<select id="getPlanSimple" resultType="com.dy.pipIrrGlobal.voIr.VoPlanSimple">
SELECT
- plan.startup_mode AS startupMode,
- plan.plan_start_time AS planStartTime,
- plan.duration AS duration
+ plan.startup_mode AS startupMode,
+ plan.plan_start_time AS planStartTime,
+ plan.duration AS duration
FROM ir_irrigate_plan plan
WHERE plan.id = #{planId}
- AND plan.deleted = 0 AND plan_state = 1
+ AND plan.deleted = 0 AND plan_state = 1
LIMIT 1
</select>
@@ -267,4 +278,197 @@
WHERE id = #{planId}
</update>
+ <!--鑾峰彇鏈畬鎴愮殑璁″垝鍒楄〃锛屽皬绋嬪簭璁″垝鍒楄〃椤典娇鐢�-->
+ <select id="getNotCompletePlans" resultType="com.dy.pipIrrGlobal.voIr.VoPlans">
+ SELECT
+ pro.project_name AS projectName,
+ plan.id AS planId,
+ plan.plan_name AS planName,
+ plan.startup_mode AS startupMode,
+ plan.plan_start_time AS planStartTime,
+ plan.plan_stop_time AS planStopTime,
+ plan.duration,
+ IF(plan.plan_state = 1, 1,
+ IF(NOW() < plan.plan_start_time, 2,
+ IF(NOW() >= plan.plan_start_time AND NOW() < plan.plan_stop_time, 3, 4)
+ )
+ ) AS planState
+ FROM ir_irrigate_plan plan
+ INNER JOIN ir_project pro ON pro.id = plan.project_id
+ <where>
+ AND plan.deleted = 0
+ AND (plan.plan_state = 1 OR NOW() < plan.plan_stop_time)
+ AND plan.executing_state != 3
+ </where>
+ ORDER BY plan.plan_state DESC
+ </select>
+
+ <!--鑾峰彇宸插畬鎴愮殑璁″垝鏁伴噺-->
+ <select id="getCompletedPlansCount" resultType="java.lang.Long">
+ SELECT
+ COUNT(*) AS recordCount
+ FROM ir_irrigate_plan plan
+ INNER JOIN ir_project pro ON pro.id = plan.project_id
+ WHERE plan.deleted = 0 AND ((plan.plan_state = 2 AND NOW() >= plan.plan_stop_time) OR (plan.executing_state = 3))
+ </select>
+
+ <!--鑾峰彇宸插畬鎴愮殑璁″垝鍒楄〃锛屽皬绋嬪簭璁″垝鍒楄〃椤典娇鐢�-->
+ <select id="getCompletedPlans" resultType="com.dy.pipIrrGlobal.voIr.VoPlans">
+ SELECT
+ pro.project_name AS projectName,
+ plan.id AS planId,
+ plan.plan_name AS planName,
+ plan.startup_mode AS startupMode,
+ plan.plan_start_time AS planStartTime,
+ plan.plan_stop_time AS planStopTime,
+ plan.duration,
+ IF(plan.executing_state = 3, 5, 4) AS planState
+ FROM ir_irrigate_plan plan
+ INNER JOIN ir_project pro ON pro.id = plan.project_id
+ INNER JOIN ir_plan_operate po ON po.plan_id = plan.id
+ WHERE plan.deleted = 0 AND ((plan.plan_state = 2 AND NOW() >= plan.plan_stop_time) OR (plan.executing_state = 3)) AND po.operate_type = 1
+ ORDER BY po.operate_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>
+
+ <!--鏍规嵁璁″垝ID鑾峰彇寰呯粓姝㈣鍒掔殑缁撴潫鏃堕棿锛氭湭鍒犻櫎銆佹湭缁堟銆佸凡鍙戝竷銆佸綋鍓嶆椂闂村皬浜庤鍒掔粨鏉熸椂闂�-->
+ <select id="getToTerminatePlan" resultType="java.util.Date">
+ SELECT
+ plan_start_time AS planStartTime
+ FROM ir_irrigate_plan
+ <where>
+ AND deleted = 0
+ AND executing_state != 3
+ AND plan_state = 2
+ AND NOW() < plan_stop_time
+ <if test = "planId != null">
+ AND id = #{planId}
+ </if>
+ </where>
+
+ </select>
+
+ <!--鏍规嵁璁″垝ID鑾峰彇璁″垝璇︽儏锛屽寘鎷鍒掑悕绉帮紝椤圭洰鍚嶏紝璁″垝寮�濮嬫椂闂达紝璁″垝缁撴潫鏃堕棿锛岃鍒掕鎯呴〉浣跨敤-->
+ <select id="getPlanDetails" resultType="com.dy.pipIrrGlobal.voIr.VoPlanDetails">
+ SELECT
+ plan.plan_name AS planName,
+ pro.project_name AS projectName,
+ IF(plan.executing_state = 3, '5',
+ IF(NOW() < plan.plan_start_time,'2',
+ IF(NOW() < plan.plan_stop_time, '3', '4'))) AS state,
+ plan.plan_start_time AS planStartTime,
+ plan.plan_stop_time AS planStopTime,
+ NULL AS groupDetails,
+ NULL AS failureCount
+ FROM ir_irrigate_plan plan
+ INNER JOIN ir_project pro ON pro.id = plan.project_id
+ WHERE plan.id = #{planId}
+ AND plan.deleted = 0
+ </select>
+
+ <!--鏍规嵁璁″垝ID鑾峰彇宸茬粓姝㈣鍒掔殑璇︽儏锛岀粨鏉熸椂闂翠负瀹為檯缁堟鏃堕棿-->
+ <select id="getPlanDetails_terminate" resultType="com.dy.pipIrrGlobal.voIr.VoPlanDetails">
+ SELECT
+ plan.plan_name AS planName,
+ pro.project_name AS projectName,
+<!-- IF(#{terminateTime} < plan.plan_start_time, 6,-->
+<!-- IF(#{terminateTime} < plan.plan_stop_time, 5, 4)) AS state,-->
+ IF(plan.executing_state = 3, 5,
+ IF(NOW() < plan_start_time, 2,
+ IF(NOW() < plan_stop_time, 3, 4)
+ )
+ ) AS state,
+ plan.plan_start_time AS planStartTime,
+ plan.plan_stop_time AS planStopTime,
+ #{terminateTime} AS realStopTime,
+ NULL AS groupDetails,
+ NULL AS failureCount
+ FROM ir_irrigate_plan plan
+ INNER JOIN ir_project pro ON pro.id = plan.project_id
+ WHERE plan.id = #{planId}
+ AND plan.deleted = 0
+ </select>
+
+ <!--鏍规嵁璁″垝ID鑾峰彇璁″垝鐘舵�侊紝鐢ㄤ簬鍒ゆ柇鏄惁鍙互鍒犻櫎璁″垝-->
+ <select id="getPlanState" resultType="java.lang.Integer">
+ SELECT
+ plan_state
+ FROM ir_irrigate_plan
+ WHERE id = #{planId}
+ AND deleted = 0
+ </select>
+
+ <!--鍒ゆ柇褰撳墠椤圭洰鏄惁瀛樺湪宸插彂甯冦�佹湭缁堟銆佹湭鍒犻櫎銆佹湭瀹屾垚鐨勮鍒掞紝鍙戝竷璁″垝鍓嶅垽鏂娇鐢�-->
+ <select id="hasPlan_CurrentProject" resultType="java.lang.Integer">
+ SELECT
+ COUNT(*) AS recordCount
+ FROM ir_irrigate_plan
+ WHERE project_id = (SELECT project_id FROM ir_irrigate_plan WHERE id = #{planId})
+ AND id != #{planId}
+ AND plan_state = 2
+ AND executing_state != 3
+ AND deleted = 0
+ AND NOW() < plan_stop_time
+ </select>
+
+ <!--鍒ゆ柇褰撳墠璁″垝鍖呭惈鐨勮疆鐏岀粍鏄惁涓庡叾浠栭」鐩笅璁″垝鍖呭惈鐨勮疆鐏岀粍鏈変氦闆嗭紝涓斿叾浠栭」鐩殑璁″垝鐘舵�佷负宸插彂甯冦�佹湭缁堟銆佹湭鍒犻櫎銆佹湭瀹屾垚锛屽彂甯冭鍒掑墠鍒ゆ柇浣跨敤-->
+ <select id="hasPlan_OtherProject" resultType="java.lang.Integer">
+ SELECT EXISTS(
+ SELECT sche.group_id
+ FROM ir_irrigate_plan plan
+ INNER JOIN ir_plan_schedule ps ON ps.plan_id = plan.id
+ INNER JOIN ir_irrigate_schedule sche ON sche.id = ps.schedule_id
+ WHERE plan.project_id != (SELECT project_id FROM ir_irrigate_plan WHERE id = #{planId})
+ AND plan_state = 2
+ AND executing_state != 3
+ AND deleted = 0
+ AND NOW() < plan_stop_time
+
+ INTERSECT
+
+ SELECT sche.group_id
+ FROM ir_irrigate_schedule sche
+ INNER JOIN ir_plan_schedule ps ON schedule_id = sche.id
+ WHERE ps.plan_id = #{planId}
+<!-- LIMIT 1-->
+ ) AS has_intersection
+ </select>
+
+ <!--鍒ゆ柇褰撳墠璁″垝涓庢渶杩戠粓姝㈢殑璁″垝鐨勮疆鐏岀粍鏄惁鏈夐噸鍙� -->
+ <select id="hasPlanOverlapWithTerminated" resultType="java.lang.Integer">
+ SELECT COUNT(1)
+ FROM (
+ SELECT sche1.group_id
+ FROM ir_plan_schedule ps1
+ INNER JOIN ir_irrigate_schedule sche1 ON ps1.schedule_id = sche1.id
+ WHERE ps1.plan_id = #{planId}
+ ) AS current_groups
+ INNER JOIN (
+ SELECT sche2.group_id
+ FROM ir_plan_schedule ps2
+ INNER JOIN ir_irrigate_schedule sche2 ON ps2.schedule_id = sche2.id
+ WHERE ps2.plan_id = #{terminatedPlanId}
+ ) AS terminated_groups
+ ON current_groups.group_id = terminated_groups.group_id
+ LIMIT 1
+ </select>
+
+ <!--鏍规嵁璁″垝ID鑾峰彇璁″垝鏈�鏂扮姸鎬�-->
+ <select id="getPlanLatestState" resultType="java.lang.Integer">
+ SELECT
+ IF(plan_state = 1, 1,
+ IF(executing_state = 3, 5,
+ IF(NOW() < plan_start_time, 2,
+ IF(NOW() < plan_stop_time, 3, 4)
+ )
+ )
+ ) AS planState
+ FROM ir_irrigate_plan
+ WHERE deleted = 0 AND id = #{planId}
+ </select>
+
</mapper>
\ No newline at end of file
--
Gitblit v1.8.0