AlarmDetailMapper.xml 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.huaxu.dao.AlarmDetailMapper">
  4. <sql id="Base_Column_List">
  5. a.ID as "id"
  6. ,a.TENANT_ID as "tenantId"
  7. ,a.DEVICE_ID as "deviceId"
  8. ,a.COMPANY_ORG_ID as "companyOrgId"
  9. ,a.DEPT_ORG_ID as "deptOrgId"
  10. ,a.ALARM_TYPE as "alarmType"
  11. ,a.ATTRIBUTE_ID as "attributeId"
  12. ,a.ALARM_VALUE as "alarmValue"
  13. ,a.ALARM_CONTENT as "alarmContent"
  14. ,a.ALARM_START_TIME as "alarmStartTime"
  15. ,a.ALARM_END_TIME as "alarmEndTime"
  16. ,a.STATE as "state"
  17. ,a.OP_STATE as "opState"
  18. ,a.REMARK as "remark"
  19. ,a.STATUS as "status"
  20. ,a.DATE_CREATE as "dateCreate"
  21. ,a.CREATE_BY as "createBy"
  22. ,a.DATE_UPDATE as "dateUpdate"
  23. ,a.UPDATE_BY as "updateBy"
  24. ,a.MIN_VALUE as "minValue"
  25. ,a.MAX_VALUE as "maxValue"
  26. ,timestampdiff(MINUTE,ifnull(a.ALARM_END_TIME,now()),a.ALARM_START_TIME) as "duration"
  27. /*,(case when ALARM_END_TIME is not null then timestampdiff(MINUTE,a.ALARM_END_TIME,a.ALARM_START_TIME) else null end ) as "duration"*/
  28. ,att.`NAME` as "attributeName"
  29. ,a.SCENE_NAME as "sceneName"
  30. ,d.DEVICE_NAME as "deviceName"
  31. ,t.DEVICE_TYPE as "deviceType"
  32. ,d.ADDRESS as "address"
  33. ,d.POINT_X as "pointX"
  34. ,d.POINT_Y as "pointY"
  35. ,ast.id as "alarmSettingId"
  36. /*,ast.ALARM_CONDITION +" " +ast.ALARM_VALUE as "alermRule"*/
  37. ,concat(ifnull(ast.ALARM_CONDITION,''),ifnull(ast.ALARM_VALUE,'')) as "alermRule"
  38. ,att.UNIT as "unit"
  39. </sql>
  40. <sql id="Base_Column_List_real_time">
  41. a.ID as "id"
  42. ,a.STATE as "state"
  43. ,a.OP_STATE as "opState"
  44. ,a.SCENE_NAME as "sceneName"
  45. ,d.DEVICE_NAME as "deviceName"
  46. ,t.DEVICE_TYPE as "deviceType"
  47. ,a.ALARM_TYPE as "alarmType"
  48. ,att.`NAME` as "attributeName"
  49. ,a.ALARM_START_TIME as "alarmStartTime"
  50. ,d.ADDRESS as "address"
  51. ,d.POINT_X as "pointX"
  52. ,d.POINT_Y as "pointY"
  53. ,concat(a.ALARM_VALUE,ifnull(att.unit,'')) as "alarmValue"
  54. ,a.ALARM_CONTENT as "alarmContent"
  55. </sql>
  56. <sql id="Base_Column_List_history">
  57. a.ID as "id"
  58. ,a.STATE as "state"
  59. ,a.OP_STATE as "opState"
  60. ,a.SCENE_NAME as "sceneName"
  61. ,d.DEVICE_NAME as "deviceName"
  62. ,t.DEVICE_TYPE as "deviceType"
  63. ,a.ALARM_TYPE as "alarmType"
  64. ,att.`NAME` as "attributeName"
  65. ,a.ALARM_START_TIME as "alarmStartTime"
  66. ,d.ADDRESS as "address"
  67. ,d.POINT_X as "pointX"
  68. ,d.POINT_Y as "pointY"
  69. ,concat(a.MIN_VALUE,ifnull(att.unit,'')) as "minValue"
  70. ,concat(a.MAX_VALUE,ifnull(att.unit,''))as "maxValue"
  71. ,ast.id as "alarmSettingId"
  72. ,concat(ifnull(ast.ALARM_CONDITION,''),ifnull(ast.ALARM_VALUE,''),ifnull(att.unit,'')) as "alermRule"
  73. ,a.ALARM_END_TIME as "alarmEndTime"
  74. ,concat(concat(timestampdiff(SECOND,a.ALARM_START_TIME,ifnull(a.ALARM_END_TIME,now())) div 3600,'时'),
  75. concat(timestampdiff(SECOND,a.ALARM_START_TIME,ifnull(a.ALARM_END_TIME,now())) mod 3600 div 60,'分'),
  76. concat(timestampdiff(SECOND,a.ALARM_START_TIME,ifnull(a.ALARM_END_TIME,now())) mod 60,'秒')) as "duration"
  77. </sql>
  78. <sql id="alarmDetailJoins">
  79. left join sms_device d on a.DEVICE_ID =d.id and d.`STATUS` = 1
  80. left join sms_device_type t on d.DEVICE_TYPE_ID =t.ID
  81. left join sms_alarm_setting ast on ast.id= a.alarm_setting_id
  82. left join sms_device_attribute att on att.id=a.ATTRIBUTE_ID
  83. </sql>
  84. <select id="selectById" resultType="com.huaxu.dto.AlarmDetailsDto">
  85. select
  86. <include refid="Base_Column_List"/>
  87. from sms_alarm_details a
  88. <include refid="alarmDetailJoins"/>
  89. where a.`STATUS` = 1
  90. and a.id=#{id}
  91. </select>
  92. <select id="selectRealTimeByIds" resultType="com.huaxu.dto.AlarmDetailsRealTimeDto">
  93. select
  94. <include refid="Base_Column_List_real_time"/>
  95. from sms_alarm_details a
  96. <include refid="alarmDetailJoins"/>
  97. where a.`STATUS` = 1
  98. and a.id in
  99. <foreach collection="ids" item="item" open="(" close=")" separator=",">
  100. #{item}
  101. </foreach>
  102. </select>
  103. <select id="selectHistoryByIds" resultType="com.huaxu.dto.AlarmDetailsHistoryDto">
  104. select
  105. <include refid="Base_Column_List_history"/>
  106. from sms_alarm_details a
  107. <include refid="alarmDetailJoins"/>
  108. where a.`STATUS` = 1
  109. and a.id in
  110. <foreach collection="ids" item="item" open="(" close=")" separator=",">
  111. #{item}
  112. </foreach>
  113. </select>
  114. <!--通过实体作为筛选条件查询-->
  115. <select id="selectList" resultType="com.huaxu.dto.AlarmDetailsDto">
  116. select
  117. <include refid="Base_Column_List"/>
  118. from sms_alarm_details a
  119. <include refid="alarmDetailJoins"/>
  120. where a.`STATUS` = 1
  121. <if test="alarmDetailsDto.condition != null and alarmDetailsDto.condition != ''">
  122. and d.DEVICE_NAME like concat('%', #{alarmDetailsDto.condition},'%')
  123. </if>
  124. <if test="alarmDetailsDto.tenantId != null and alarmDetailsDto.tenantId != ''">
  125. and a.TENANT_ID = #{alarmDetailsDto.tenantId}
  126. </if>
  127. <if test="alarmDetailsDto.alarmType != null and alarmDetailsDto.alarmType != ''">
  128. and a.ALARM_TYPE = #{alarmDetailsDto.alarmType}
  129. </if>
  130. <if test="alarmDetailsDto.opState != null">
  131. and a.OP_STATE =#{alarmDetailsDto.opState}
  132. </if>
  133. <if test="alarmDetailsDto.startTime != null">
  134. and a.ALARM_START_TIME >=#{alarmDetailsDto.startTime}
  135. </if>
  136. <if test="alarmDetailsDto.endTime != null">
  137. and a.ALARM_START_TIME &lt;=DATE_ADD(#{alarmDetailsDto.endTime},INTERVAL 1 DAY)
  138. </if>
  139. <if test="alarmDetailsDto.sceneIds != null and alarmDetailsDto.sceneIds.size() > 0">
  140. and a.SCENE_ID in
  141. <foreach collection="alarmDetailsDto.sceneIds" item="item" open="(" close=")" separator=",">
  142. #{item}
  143. </foreach>
  144. </if>
  145. <if test="alarmDetailsDto.userType!=null and alarmDetailsDto.userType!=-999 and alarmDetailsDto.userType!=-9999 and alarmDetailsDto.programItems != null and alarmDetailsDto.programItems.size() > 0">
  146. <if test="alarmDetailsDto.permissonType == 5 or alarmDetailsDto.permissonType == 2">
  147. and ( a.DEPT_ORG_ID in
  148. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  149. #{item.orgId}
  150. </foreach>
  151. or
  152. a.COMPANY_ORG_ID in
  153. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  154. #{item.orgId}
  155. </foreach>
  156. )
  157. </if>
  158. <if test="alarmDetailsDto.permissonType == 4 or alarmDetailsDto.permissonType == 3">
  159. and a.DEPT_ORG_ID in
  160. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  161. #{item.orgId}
  162. </foreach>
  163. </if>
  164. <if test="alarmDetailsDto.permissonType == 1">
  165. and a.COMPANY_ORG_ID in
  166. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  167. #{item.orgId}
  168. </foreach>
  169. and (a.DEPT_ORG_ID is null or a.DEPT_ORG_ID =0)
  170. </if>
  171. </if>
  172. </select>
  173. <!-- 新增所有列 -->
  174. <insert id="insert" keyProperty="id" useGeneratedKeys="true">
  175. INSERT INTO sms_alarm_details ( TENANT_ID , PARENT_SCENE_ID, PARENT_SCENE_NAME, SCENE_ID, SCENE_NAME, DEVICE_ID , COMPANY_ORG_ID , DEPT_ORG_ID , ALARM_TYPE , ATTRIBUTE_ID , ALARM_VALUE , ALARM_CONTENT , ALARM_START_TIME , ALARM_END_TIME , STATE , OP_STATE , REMARK , STATUS , DATE_CREATE , CREATE_BY , DATE_UPDATE , UPDATE_BY , MIN_VALUE, MAX_VALUE, ALARM_SETTING_ID )
  176. VALUES ( #{tenantId} , #{parentSceneId} ,#{parentSceneName} ,#{sceneId} ,#{sceneName} , #{deviceId} , #{companyOrgId} , #{deptOrgId} , #{alarmType} , #{attributeId} , #{alarmValue} , #{alarmContent} , #{alarmStartTime} , #{alarmEndTime} , #{state} , #{opState} , #{remark} , #{status} , #{dateCreate} , #{createBy} , #{dateUpdate} , #{updateBy},#{minValue} ,#{maxValue}, #{alarmSettingId} )
  177. </insert>
  178. <!-- 批量新增 -->
  179. <insert id="batchInsert">
  180. INSERT INTO sms_alarm_details ( TENANT_ID , PARENT_SCENE_ID, PARENT_SCENE_NAME, SCENE_ID, SCENE_NAME, DEVICE_ID , COMPANY_ORG_ID , DEPT_ORG_ID , ALARM_TYPE , ATTRIBUTE_ID , ALARM_VALUE , ALARM_CONTENT , ALARM_START_TIME , ALARM_END_TIME , STATE , OP_STATE , REMARK , STATUS , DATE_CREATE , CREATE_BY , DATE_UPDATE , UPDATE_BY, MIN_VALUE, MAX_VALUE,ALARM_SETTING_ID )
  181. values
  182. <foreach collection="alarmDetails" item="item" index="index" separator=",">
  183. ( #{item.tenantId} , #{item.parentSceneId} ,#{item.parentSceneName} ,#{item.sceneId} ,#{item.sceneName} , #{item.deviceId} , #{item.companyOrgId} , #{item.deptOrgId} , #{item.alarmType} , #{item.attributeId} , #{item.alarmValue} , #{item.alarmContent} , #{item.alarmStartTime} , #{item.alarmEndTime} , #{item.state} , #{item.opState} , #{item.remark} , #{item.status} , #{item.dateCreate} , #{item.createBy} , #{item.dateUpdate} , #{item.updateBy} ,#{item.minValue} ,#{item.maxValue},#{item.alarmSettingId})
  184. </foreach>
  185. </insert>
  186. <!-- 通过主键修改数据 -->
  187. <update id="update">
  188. UPDATE sms_alarm_details
  189. <set>
  190. <if test="tenantId != null and tenantId != '' ">
  191. TENANT_ID = #{tenantId},
  192. </if>
  193. <if test="deviceId != null and deviceId != 0">
  194. DEVICE_ID = #{deviceId},
  195. </if>
  196. <if test="companyOrgId != null and companyOrgId != 0 ">
  197. COMPANY_ORG_ID = #{companyOrgId},
  198. </if>
  199. <if test="deptOrgId != null and deptOrgId != 0">
  200. DEPT_ORG_ID = #{deptOrgId},
  201. </if>
  202. <if test="alarmType != null and alarmType != ''">
  203. ALARM_TYPE = #{alarmType},
  204. </if>
  205. <if test="attributeId != null and attributeId != 0 ">
  206. ATTRIBUTE_ID = #{attributeId},
  207. </if>
  208. <if test="alarmValue != null ">
  209. ALARM_VALUE = #{alarmValue},
  210. </if>
  211. <if test="alarmContent != null and alarmContent != '' ">
  212. ALARM_CONTENT = #{alarmContent},
  213. </if>
  214. <if test="alarmStartTime != null ">
  215. ALARM_START_TIME = #{alarmStartTime},
  216. </if>
  217. <if test="alarmStartTime != null ">
  218. ALARM_START_TIME = #{alarmStartTime},
  219. </if>
  220. <if test="alarmEndTime != null ">
  221. ALARM_END_TIME = #{alarmEndTime},
  222. </if>
  223. <if test="state != null ">
  224. STATE = #{state},
  225. </if>
  226. <if test="opState != null ">
  227. OP_STATE = #{opState},
  228. </if>
  229. <if test="remark != null and remark != '' ">
  230. REMARK = #{remark},
  231. </if>
  232. <if test="status != null ">
  233. STATUS = #{status},
  234. </if>
  235. <if test="dateUpdate != null ">
  236. DATE_UPDATE = #{dateUpdate},
  237. </if>
  238. <if test="updateBy != null and updateBy != ''">
  239. UPDATE_BY = #{updateBy},
  240. </if>
  241. <if test="minValue != null">
  242. MIN_VALUE = #{minValue},
  243. </if>
  244. <if test="maxValue != null">
  245. MAX_VALUE = #{maxValue},
  246. </if>
  247. <if test="alarmSettingId != null and alarmSettingId != 0 ">
  248. ALARM_SETTING_ID = #{alarmSettingId}
  249. </if>
  250. </set>
  251. WHERE ID = #{id};
  252. </update>
  253. <!--通过主键删除-->
  254. <delete id="deleteById">
  255. UPDATE sms_alarm_details set STATUS = 0 where id = #{id}
  256. </delete>
  257. <!--删除-->
  258. <delete id="batchDelete">
  259. UPDATE sms_alarm_details set STATUS = 0
  260. where id in
  261. <foreach collection="ids" item="item" open="(" close=")" separator=",">
  262. #{item}
  263. </foreach>
  264. </delete>
  265. <!-- 报警挂起、恢复 -->
  266. <delete id="suspendedById">
  267. UPDATE sms_alarm_details set op_state = #{opState} , DATE_UPDATE = #{dateUpdate}, UPDATE_BY = #{updateBy} where id = #{id}
  268. </delete>
  269. <!-- 分页查询 -->
  270. <select id="selectPage" resultType="com.huaxu.dto.AlarmDetailsDto">
  271. select
  272. <include refid="Base_Column_List"/>
  273. from sms_alarm_details a
  274. <include refid="alarmDetailJoins"/>
  275. where a.`STATUS` = 1
  276. <if test="alarmDetailsDto.condition != null and alarmDetailsDto.condition != ''">
  277. and d.DEVICE_NAME like concat('%', #{alarmDetailsDto.condition},'%')
  278. </if>
  279. <if test="alarmDetailsDto.tenantId != null and alarmDetailsDto.tenantId != ''">
  280. and a.TENANT_ID = #{alarmDetailsDto.tenantId}
  281. </if>
  282. <if test="alarmDetailsDto.alarmType != null and alarmDetailsDto.alarmType != ''">
  283. and a.ALARM_TYPE = #{alarmDetailsDto.alarmType}
  284. </if>
  285. <if test="alarmDetailsDto.state != null">
  286. and a.STATE =#{alarmDetailsDto.state}
  287. </if>
  288. <if test="alarmDetailsDto.opState != null">
  289. and a.OP_STATE =#{alarmDetailsDto.opState}
  290. </if>
  291. <if test="alarmDetailsDto.startTime != null">
  292. and a.ALARM_START_TIME >=#{alarmDetailsDto.startTime}
  293. </if>
  294. <if test="alarmDetailsDto.endTime != null">
  295. and a.ALARM_START_TIME &lt;=DATE_ADD(#{alarmDetailsDto.endTime},INTERVAL 1 DAY)
  296. </if>
  297. <if test="alarmDetailsDto.sceneIds != null and alarmDetailsDto.sceneIds.size() > 0">
  298. and a.SCENE_ID in
  299. <foreach collection="alarmDetailsDto.sceneIds" item="item" open="(" close=")" separator=",">
  300. #{item}
  301. </foreach>
  302. </if>
  303. <if test="alarmDetailsDto.userType!=null and alarmDetailsDto.userType!=-999 and alarmDetailsDto.userType!=-9999 and alarmDetailsDto.programItems != null and alarmDetailsDto.programItems.size() > 0">
  304. <if test="alarmDetailsDto.permissonType == 5 or alarmDetailsDto.permissonType == 2">
  305. and ( a.DEPT_ORG_ID in
  306. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  307. #{item.orgId}
  308. </foreach>
  309. or
  310. a.COMPANY_ORG_ID in
  311. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  312. #{item.orgId}
  313. </foreach>
  314. )
  315. </if>
  316. <if test="alarmDetailsDto.permissonType == 4 or alarmDetailsDto.permissonType == 3">
  317. and a.DEPT_ORG_ID in
  318. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  319. #{item.orgId}
  320. </foreach>
  321. </if>
  322. <if test="alarmDetailsDto.permissonType == 1">
  323. and a.COMPANY_ORG_ID in
  324. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  325. #{item.orgId}
  326. </foreach>
  327. and (a.DEPT_ORG_ID is null or a.DEPT_ORG_ID =0)
  328. </if>
  329. </if>
  330. </select>
  331. <!-- 实时数据分页分页查询 -->
  332. <select id="selectRealTimePage" resultType="com.huaxu.dto.AlarmDetailsRealTimeDto">
  333. select
  334. <include refid="Base_Column_List_real_time"/>
  335. from sms_alarm_details a
  336. <include refid="alarmDetailJoins"/>
  337. where a.`STATUS` = 1 and a.state = 1
  338. <if test="alarmDetailsDto.condition != null and alarmDetailsDto.condition != ''">
  339. and d.DEVICE_NAME like concat('%', #{alarmDetailsDto.condition},'%')
  340. </if>
  341. <if test="alarmDetailsDto.tenantId != null and alarmDetailsDto.tenantId != ''">
  342. and a.TENANT_ID = #{alarmDetailsDto.tenantId}
  343. </if>
  344. <if test="alarmDetailsDto.alarmType != null and alarmDetailsDto.alarmType != ''" >
  345. and a.ALARM_TYPE = #{alarmDetailsDto.alarmType}
  346. </if>
  347. <if test="alarmDetailsDto.opState != null">
  348. and a.OP_STATE =#{alarmDetailsDto.opState}
  349. </if>
  350. <if test="alarmDetailsDto.startTime != null">
  351. and a.ALARM_START_TIME >=#{alarmDetailsDto.startTime}
  352. </if>
  353. <if test="alarmDetailsDto.endTime != null">
  354. and a.ALARM_START_TIME &lt;=DATE_ADD(#{alarmDetailsDto.endTime},INTERVAL 1 DAY)
  355. </if>
  356. <if test="alarmDetailsDto.sceneIds != null and alarmDetailsDto.sceneIds.size() > 0">
  357. and a.SCENE_ID in
  358. <foreach collection="alarmDetailsDto.sceneIds" item="item" open="(" close=")" separator=",">
  359. #{item}
  360. </foreach>
  361. </if>
  362. <if test="alarmDetailsDto.userType!=null and alarmDetailsDto.userType!=-999 and alarmDetailsDto.userType!=-9999 and alarmDetailsDto.programItems != null and alarmDetailsDto.programItems.size() > 0">
  363. <if test="alarmDetailsDto.permissonType == 5 or alarmDetailsDto.permissonType == 2">
  364. and ( a.DEPT_ORG_ID in
  365. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  366. #{item.orgId}
  367. </foreach>
  368. or
  369. a.COMPANY_ORG_ID in
  370. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  371. #{item.orgId}
  372. </foreach>
  373. )
  374. </if>
  375. <if test="alarmDetailsDto.permissonType == 4 or alarmDetailsDto.permissonType == 3">
  376. and a.DEPT_ORG_ID in
  377. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  378. #{item.orgId}
  379. </foreach>
  380. </if>
  381. <if test="alarmDetailsDto.permissonType == 1">
  382. and a.COMPANY_ORG_ID in
  383. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  384. #{item.orgId}
  385. </foreach>
  386. and (a.DEPT_ORG_ID is null or a.DEPT_ORG_ID =0)
  387. </if>
  388. </if>
  389. </select>
  390. <!-- 历史数据分页分页查询 -->
  391. <select id="selectHistoryPage" resultType="com.huaxu.dto.AlarmDetailsHistoryDto">
  392. select
  393. <include refid="Base_Column_List_history"/>
  394. from sms_alarm_details a
  395. <include refid="alarmDetailJoins"/>
  396. where a.`STATUS` = 1 and a.state = 0
  397. <if test="alarmDetailsDto.condition != null and alarmDetailsDto.condition != ''">
  398. and d.DEVICE_NAME like concat('%', #{alarmDetailsDto.condition},'%')
  399. </if>
  400. <if test="alarmDetailsDto.tenantId != null and alarmDetailsDto.tenantId != ''">
  401. and a.TENANT_ID = #{alarmDetailsDto.tenantId}
  402. </if>
  403. <if test="alarmDetailsDto.alarmType != null and alarmDetailsDto.alarmType != ''">
  404. and a.ALARM_TYPE = #{alarmDetailsDto.alarmType}
  405. </if>
  406. <if test="alarmDetailsDto.opState != null">
  407. and a.OP_STATE =#{alarmDetailsDto.opState}
  408. </if>
  409. <if test="alarmDetailsDto.startTime != null">
  410. and a.ALARM_START_TIME >=#{alarmDetailsDto.startTime}
  411. </if>
  412. <if test="alarmDetailsDto.endTime != null">
  413. and a.ALARM_START_TIME &lt;=DATE_ADD(#{alarmDetailsDto.endTime},INTERVAL 1 DAY)
  414. </if>
  415. <if test="alarmDetailsDto.sceneIds != null and alarmDetailsDto.sceneIds.size() > 0">
  416. and a.SCENE_ID in
  417. <foreach collection="alarmDetailsDto.sceneIds" item="item" open="(" close=")" separator=",">
  418. #{item}
  419. </foreach>
  420. </if>
  421. <if test="alarmDetailsDto.userType!=null and alarmDetailsDto.userType!=-999 and alarmDetailsDto.userType!=-9999 and alarmDetailsDto.programItems != null and alarmDetailsDto.programItems.size() > 0">
  422. <if test="alarmDetailsDto.permissonType == 5 or alarmDetailsDto.permissonType == 2">
  423. and ( a.DEPT_ORG_ID in
  424. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  425. #{item.orgId}
  426. </foreach>
  427. or
  428. a.COMPANY_ORG_ID in
  429. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  430. #{item.orgId}
  431. </foreach>
  432. )
  433. </if>
  434. <if test="alarmDetailsDto.permissonType == 4 or alarmDetailsDto.permissonType == 3">
  435. and a.DEPT_ORG_ID in
  436. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  437. #{item.orgId}
  438. </foreach>
  439. </if>
  440. <if test="alarmDetailsDto.permissonType == 1">
  441. and a.COMPANY_ORG_ID in
  442. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  443. #{item.orgId}
  444. </foreach>
  445. and (a.DEPT_ORG_ID is null or a.DEPT_ORG_ID =0)
  446. </if>
  447. </if>
  448. </select>
  449. <!--通过实体作为筛选条件查询-->
  450. <select id="selectRealTimeList" resultType="com.huaxu.dto.AlarmDetailsRealTimeDto">
  451. select
  452. <include refid="Base_Column_List_real_time"/>
  453. from sms_alarm_details a
  454. <include refid="alarmDetailJoins"/>
  455. where a.`STATUS` = 1 and a.state = 1
  456. <if test="alarmDetailsDto.condition != null and alarmDetailsDto.condition != ''">
  457. and d.DEVICE_NAME like concat('%', #{alarmDetailsDto.condition},'%')
  458. </if>
  459. <if test="alarmDetailsDto.tenantId != null and alarmDetailsDto.tenantId != ''">
  460. and a.TENANT_ID = #{alarmDetailsDto.tenantId}
  461. </if>
  462. <if test="alarmDetailsDto.alarmType != null and alarmDetailsDto.alarmType != ''">
  463. and a.ALARM_TYPE = #{alarmDetailsDto.alarmType}
  464. </if>
  465. <if test="alarmDetailsDto.opState != null">
  466. and a.OP_STATE =#{alarmDetailsDto.opState}
  467. </if>
  468. <if test="alarmDetailsDto.startTime != null">
  469. and a.ALARM_START_TIME >=#{alarmDetailsDto.startTime}
  470. </if>
  471. <if test="alarmDetailsDto.endTime != null">
  472. and a.ALARM_START_TIME &lt;=DATE_ADD(#{alarmDetailsDto.endTime},INTERVAL 1 DAY)
  473. </if>
  474. <if test="alarmDetailsDto.sceneIds != null and alarmDetailsDto.sceneIds.size() > 0">
  475. and a.SCENE_ID in
  476. <foreach collection="alarmDetailsDto.sceneIds" item="item" open="(" close=")" separator=",">
  477. #{item}
  478. </foreach>
  479. </if>
  480. <if test="alarmDetailsDto.userType!=null and alarmDetailsDto.userType!=-999 and alarmDetailsDto.userType!=-9999 and alarmDetailsDto.programItems != null and alarmDetailsDto.programItems.size() > 0">
  481. <if test="alarmDetailsDto.permissonType == 5 or alarmDetailsDto.permissonType == 2">
  482. and ( a.DEPT_ORG_ID in
  483. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  484. #{item.orgId}
  485. </foreach>
  486. or
  487. a.COMPANY_ORG_ID in
  488. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  489. #{item.orgId}
  490. </foreach>
  491. )
  492. </if>
  493. <if test="alarmDetailsDto.permissonType == 4 or alarmDetailsDto.permissonType == 3">
  494. and a.DEPT_ORG_ID in
  495. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  496. #{item.orgId}
  497. </foreach>
  498. </if>
  499. <if test="alarmDetailsDto.permissonType == 1">
  500. and a.COMPANY_ORG_ID in
  501. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  502. #{item.orgId}
  503. </foreach>
  504. and (a.DEPT_ORG_ID is null or a.DEPT_ORG_ID =0)
  505. </if>
  506. </if>
  507. order by a.ALARM_START_TIME
  508. </select>
  509. <!--通过实体作为筛选条件查询-->
  510. <select id="selectHistoryList" resultType="com.huaxu.dto.AlarmDetailsHistoryDto">
  511. select
  512. <include refid="Base_Column_List_history"/>
  513. from sms_alarm_details a
  514. <include refid="alarmDetailJoins"/>
  515. where a.`STATUS` = 1 and a.state = 0
  516. <if test="alarmDetailsDto.condition != null and alarmDetailsDto.condition != ''">
  517. and d.DEVICE_NAME like concat('%', #{alarmDetailsDto.condition},'%')
  518. </if>
  519. <if test="alarmDetailsDto.tenantId != null and alarmDetailsDto.tenantId != ''">
  520. and a.TENANT_ID = #{alarmDetailsDto.tenantId}
  521. </if>
  522. <if test="alarmDetailsDto.alarmType != null and alarmDetailsDto.alarmType != ''">
  523. and a.ALARM_TYPE = #{alarmDetailsDto.alarmType}
  524. </if>
  525. <if test="alarmDetailsDto.opState != null">
  526. and a.OP_STATE =#{alarmDetailsDto.opState}
  527. </if>
  528. <if test="alarmDetailsDto.startTime != null">
  529. and a.ALARM_START_TIME >=#{alarmDetailsDto.startTime}
  530. </if>
  531. <if test="alarmDetailsDto.endTime != null">
  532. and a.ALARM_START_TIME &lt;=DATE_ADD(#{alarmDetailsDto.endTime},INTERVAL 1 DAY)
  533. </if>
  534. <if test="alarmDetailsDto.sceneIds != null and alarmDetailsDto.sceneIds.size() > 0">
  535. and a.SCENE_ID in
  536. <foreach collection="alarmDetailsDto.sceneIds" item="item" open="(" close=")" separator=",">
  537. #{item}
  538. </foreach>
  539. </if>
  540. <if test="alarmDetailsDto.userType!=null and alarmDetailsDto.userType!=-999 and alarmDetailsDto.userType!=-9999 and alarmDetailsDto.programItems != null and alarmDetailsDto.programItems.size() > 0">
  541. <if test="alarmDetailsDto.permissonType == 5 or alarmDetailsDto.permissonType == 2">
  542. and ( a.DEPT_ORG_ID in
  543. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  544. #{item.orgId}
  545. </foreach>
  546. or
  547. a.COMPANY_ORG_ID in
  548. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  549. #{item.orgId}
  550. </foreach>
  551. )
  552. </if>
  553. <if test="alarmDetailsDto.permissonType == 4 or alarmDetailsDto.permissonType == 3">
  554. and a.DEPT_ORG_ID in
  555. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  556. #{item.orgId}
  557. </foreach>
  558. </if>
  559. <if test="alarmDetailsDto.permissonType == 1">
  560. and a.COMPANY_ORG_ID in
  561. <foreach collection="alarmDetailsDto.programItems" item="item" open="(" close=")" separator=",">
  562. #{item.orgId}
  563. </foreach>
  564. and (a.DEPT_ORG_ID is null or a.DEPT_ORG_ID =0)
  565. </if>
  566. </if>
  567. order by a.ALARM_START_TIME
  568. </select>
  569. <select id="selectDeviceForCheckAlarm" resultType="com.huaxu.dto.DeviceCheckAlarmDto">
  570. select
  571. d.TENANT_ID as "tenantId"
  572. ,d.id as "deviceId"
  573. ,d.DEVICE_NAME as "deviceName"
  574. ,d.COMPANY_ORG_ID as "companyOrgId"
  575. ,d.DEPT_ORG_ID as "deptOrgId"
  576. ,d.address as "address"
  577. ,a.PARENT_SCENE_ID as "parentSceneId"
  578. ,a.PARENT_SCENE_NAME as "parentSceneName"
  579. ,a.SCENE_ID as "sceneId"
  580. ,a.SCENE_NAME as "sceneName"
  581. ,a.ALARM_TYPE as "alarmType"
  582. ,a.ATTRIBUTE_ID as "attributeId"
  583. ,d.LAST_UPDATE_TIME as "lastUpdateTime"
  584. ,timestampdiff(MINUTE,ifnull(d.LAST_UPDATE_TIME,d.DATE_CREATE),now()) AS "duration"
  585. ,a.ALARM_CONDITION as "alarmCondition"
  586. ,a.ALARM_VALUE as "alarmValue"
  587. ,a.id as "alarmSettingId"
  588. ,a.START_TIME as "startTime"
  589. ,a.END_TIME as "endTime"
  590. <if test="deviceId != null">
  591. ,da.id as "attributeId"
  592. ,da.IDENTIFIER as "identifiter"
  593. ,da.`NAME` as "attributeName"
  594. ,da.unit as "unit"
  595. </if>
  596. from sms_device d
  597. left join sms_alarm_setting a on a.DEVICE_ID =d.ID and a.ALARM_TYPE =#{alarmType} and a.ALARM_VALUE is not null
  598. <if test="deviceId != null">
  599. left join sms_device_attribute da on da.id=a.ATTRIBUTE_ID
  600. </if>
  601. where a.ALARM_VALUE is not null and a.ALARM_CONDITION is not null and d.status = 1 and a.status = 1
  602. and a.status = 1
  603. <if test="deviceId != null">
  604. and d.id=#{deviceId}
  605. </if>
  606. </select>
  607. <select id="selectStateAlarm" resultType="com.huaxu.dto.AlarmDetailsDto">
  608. select
  609. id as "id"
  610. ,PARENT_SCENE_ID as "parentSceneId"
  611. ,PARENT_SCENE_NAME as "parentSceneName"
  612. ,SCENE_ID as "sceneId"
  613. ,SCENE_NAME as "sceneName"
  614. ,DEVICE_ID as "deviceId"
  615. ,ATTRIBUTE_ID as "attributeId"
  616. ,ALARM_VALUE as "alarmValue"
  617. ,ALARM_CONTENT as "alarmContent"
  618. ,ALARM_START_TIME as "alarmStartTime"
  619. ,max_value as "maxValue"
  620. ,min_value as "minValue"
  621. ,alarm_setting_id as "alarmSettingId"
  622. from sms_alarm_details
  623. where STATE = 1 and status = 1
  624. <if test="alarmType != null and alarmType != ''">
  625. and ALARM_TYPE=#{alarmType}
  626. </if>
  627. <if test="deviceId != null">
  628. and DEVICE_ID=#{deviceId}
  629. </if>
  630. <if test="alarmSettingIds != null and alarmSettingIds.size() > 0">
  631. and alarm_setting_id IN
  632. <foreach collection="alarmSettingIds" item="item" open="(" close=")" separator=",">
  633. #{item}
  634. </foreach>
  635. </if>
  636. </select>
  637. <update id="udpateLastUpdateTime">
  638. update sms_device set LAST_UPDATE_TIME =#{lastUpdateTime} where id=#{deviceId}
  639. </update>
  640. <select id="selectByDeviceId" resultType="com.huaxu.dto.AlarmDetailsDto">
  641. select
  642. <include refid="Base_Column_List"/>,concat(b.alarm_condition,cast(b.alarm_value as char)+0) alarmRange
  643. from sms_alarm_details a
  644. left join sms_alarm_setting b on a.alarm_setting_id=b.id and b.status = 1 and b.alarm_condition!='='
  645. <include refid="alarmDetailJoins"/>
  646. where a.`STATUS` = 1
  647. and a.DEVICE_ID=#{deviceId} and a.state=1
  648. </select>
  649. <select id="getAlarmInfoForWorkOrderManage" resultType="com.huaxu.dto.DeviceAlarmInfoForOrder">
  650. select
  651. ad.id as "alarmId"
  652. ,ad.PARENT_SCENE_ID as "parentSceneId"
  653. ,ad.PARENT_SCENE_NAME as "parentSceneName"
  654. ,ad.ALARM_TYPE as "alarmType"
  655. ,d.DEVICE_NAME as "deviceName"
  656. ,da.NAME as "attributeName"
  657. ,CONCAT(ast.ALARM_CONDITION,ast.ALARM_VALUE) as "alarmContent"
  658. ,da.UNIT as "unit"
  659. ,d.id as "deviceId"
  660. ,d.TENANT_ID as "tenantId"
  661. ,d.COMPANY_ORG_ID as "companyOrgId"
  662. ,d.DEPT_ORG_ID as "departmentOrgId"
  663. ,d.ADDRESS as "address"
  664. ,DATE_FORMAT(ad.ALARM_START_TIME, '%Y-%m-%d %H:%i:%s') as "orderTime"
  665. ,ad.ALARM_CONTENT as "taskDesc"
  666. ,CONCAT(d.POINT_X,',',d.POINT_Y) as "geo"
  667. from sms_alarm_details ad
  668. left join sms_device d on ad.DEVICE_ID =d.ID
  669. left join sms_device_attribute da on ad.ATTRIBUTE_ID =da.id
  670. left join sms_alarm_setting ast on ast.id=ad.ALARM_SETTING_ID
  671. where ad.OP_STATE=1 and ad.STATE=1 and ad.is_send_message = 0 and d.status = 1 and d.ENABLE_STATE = 1
  672. and timestampdiff(MINUTE,ad.ALARM_START_TIME,now())>10
  673. </select>
  674. <update id="updateAlarmSendMessageState" >
  675. update sms_alarm_details set is_send_message =1
  676. where id in
  677. <foreach collection="list" item="item" open="(" close=")" separator=",">
  678. #{item.alarmId}
  679. </foreach>
  680. </update>
  681. <select id="selectBySceneId" resultType="com.huaxu.dto.AlarmDetailsDto">
  682. select
  683. <include refid="Base_Column_List"/>,concat(b.alarm_condition,cast(b.alarm_value as char)+0) alarmRange
  684. from sms_alarm_details a
  685. left join sms_alarm_setting b on a.alarm_setting_id=b.id and b.status = 1 and b.alarm_condition!='='
  686. <include refid="alarmDetailJoins"/>
  687. where a.`STATUS` = 1
  688. and (a.parent_scene_id =#{sceneId} or a.scene_id=#{sceneId})and a.state=1
  689. </select>
  690. </mapper>