DeviceParmMapper.xml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  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.DeviceParmMapper">
  4. <sql id="Base_Column_List">
  5. p.ID as "id"
  6. ,p.TENANT_ID as "tenantId"
  7. ,p.parent_scene_id as "parentSceneId"
  8. ,p.scene_id as "sceneId"
  9. ,p.DEVICE_ID as "deviceId"
  10. ,p.ATTRIBUTE_ID as "attributeId"
  11. ,p.IS_SUSPENSION as "isSuspension"
  12. ,p.IS_REPORT as "isReport"
  13. ,p.IS_CHART as "isChart"
  14. ,p.IS_MAP as "isMap"
  15. ,p.IS_ALARM as "isAlarm"
  16. ,p.IS_ARTWORK as "isArtwork"
  17. ,p.SEQ as "seq"
  18. ,p.REMARK as "remark"
  19. ,p.STATUS as "status"
  20. ,p.DATE_CREATE as "dateCreate"
  21. ,p.CREATE_BY as "createBy"
  22. ,p.DATE_UPDATE as "dateUpdate"
  23. ,p.UPDATE_BY as "updateBy"
  24. ,p.parm_type as "parmType"
  25. ,t.`NAME` as "attributeName"
  26. </sql>
  27. <sql id="deviceParmJoins">
  28. left join sms_device_attribute t on t.id= p.ATTRIBUTE_ID
  29. </sql>
  30. <select id="selectByDeviceId" resultType="com.huaxu.entity.DeviceParmEntity">
  31. select p.ID as "id"
  32. ,p.TENANT_ID as "tenantId"
  33. ,p.parent_scene_id as "parentSceneId"
  34. ,p.scene_id as "sceneId"
  35. ,p.DEVICE_ID as "deviceId"
  36. ,b.id as "attributeId"
  37. ,p.IS_SUSPENSION as "isSuspension"
  38. ,p.IS_REPORT as "isReport"
  39. ,p.IS_CHART as "isChart"
  40. ,p.IS_MAP as "isMap"
  41. ,p.IS_ALARM as "isAlarm"
  42. ,p.IS_ARTWORK as "isArtwork"
  43. ,p.SEQ as "seq"
  44. ,p.REMARK as "remark"
  45. ,p.STATUS as "status"
  46. ,p.DATE_CREATE as "dateCreate"
  47. ,p.CREATE_BY as "createBy"
  48. ,p.DATE_UPDATE as "dateUpdate"
  49. ,p.UPDATE_BY as "updateBy"
  50. ,b.`NAME` as "attributeName"
  51. ,p.PARM_TYPE as "parmType"
  52. from sms_device a
  53. inner join sms_device_parm p on p.DEVICE_ID=a.id and p.scene_id = #{sceneId} and p.`STATUS`=1
  54. inner join sms_device_attribute b on p.ATTRIBUTE_ID=b.id and b.`STATUS`=1
  55. where a.id=#{id}
  56. </select>
  57. <select id="selectByDeviceIdForGis" resultType="com.huaxu.entity.DeviceParmEntity">
  58. select p.ID as "id"
  59. ,p.TENANT_ID as "tenantId"
  60. ,p.DEVICE_ID as "deviceId"
  61. ,b.id as "attributeId"
  62. ,p.IS_SUSPENSION as "isSuspension"
  63. ,p.IS_REPORT as "isReport"
  64. ,p.IS_CHART as "isChart"
  65. ,p.IS_MAP as "isMap"
  66. ,p.IS_ALARM as "isAlarm"
  67. ,p.IS_ARTWORK as "isArtwork"
  68. ,p.SEQ as "seq"
  69. ,p.REMARK as "remark"
  70. ,p.STATUS as "status"
  71. ,p.DATE_CREATE as "dateCreate"
  72. ,p.CREATE_BY as "createBy"
  73. ,p.DATE_UPDATE as "dateUpdate"
  74. ,p.UPDATE_BY as "updateBy"
  75. ,p.parm_type as "parmType"
  76. ,b.`NAME` as "attributeName"
  77. from sms_device a
  78. inner join sms_device_parm p on p.DEVICE_ID=a.id and (p.parent_scene_id = #{sceneId} or p.SCENE_ID= #{sceneId}) and p.`STATUS`=1
  79. inner join sms_device_attribute b on p.ATTRIBUTE_ID=b.id and b.`STATUS`=1
  80. where a.id=#{id} and p.IS_ARTWORK=1 order by p.seq is null,p.seq asc
  81. </select>
  82. <select id="selectById" resultType="com.huaxu.entity.DeviceParmEntity">
  83. select
  84. <include refid="Base_Column_List"/>
  85. from sms_device_parm p
  86. <include refid="deviceParmJoins"/>
  87. where p.ID = #{id} and p.status = 1
  88. </select>
  89. <!--通过实体作为筛选条件查询-->
  90. <select id="selectList" resultType="com.huaxu.entity.DeviceParmEntity">
  91. select
  92. <include refid="Base_Column_List"/>
  93. from sms_device_parm p
  94. <include refid="deviceParmJoins"/>
  95. where p.status = 1
  96. <if test="id != null">
  97. and p.ID = #{id}
  98. </if>
  99. <if test="deviceId != null">
  100. and p.device_id = #{deviceId}
  101. </if>
  102. <if test="attributeId != null">
  103. and p.attribute_id = #{attributeId}
  104. </if>
  105. </select>
  106. <!-- 新增所有列 -->
  107. <insert id="insert" keyProperty="id" useGeneratedKeys="true">
  108. INSERT INTO sms_device_parm (TENANT_ID ,parent_scene_id,scene_id,DEVICE_ID ,ATTRIBUTE_ID ,IS_SUSPENSION ,IS_REPORT ,IS_CHART ,IS_MAP ,IS_ALARM ,IS_ARTWORK,PARM_TYPE ,REMARK ,SEQ,STATUS ,DATE_CREATE ,CREATE_BY ,DATE_UPDATE ,UPDATE_BY )
  109. VALUES(#{tenantId},#{parentSceneId},#{sceneId},#{deviceId},#{attributeId},#{isSuspension},#{isReport},#{isChart},#{isMap},#{isAlarm},#{isArtwork},#{parmType},#{remark},#{seq},#{status},#{dateCreate},#{createBy},#{dateUpdate},#{updateBy})
  110. </insert>
  111. <!-- 批量新增 -->
  112. <insert id="batchInsert">
  113. INSERT INTO sms_device_parm (TENANT_ID ,parent_scene_id,scene_id,DEVICE_ID ,ATTRIBUTE_ID ,IS_SUSPENSION ,IS_REPORT ,IS_CHART ,IS_MAP
  114. ,IS_ALARM ,IS_ARTWORK ,PARM_TYPE,REMARK ,SEQ,STATUS ,DATE_CREATE ,CREATE_BY ,DATE_UPDATE ,UPDATE_BY )
  115. values
  116. <foreach collection="deviceParms" item="item" index="index" separator=",">
  117. (#{item.tenantId},#{item.parentSceneId},#{item.sceneId},#{item.deviceId},#{item.attributeId},#{item.isSuspension},#{item.isReport},#{item.isChart},#{item.isMap},#{item.isAlarm},#{item.isArtwork},#{item.parmType},#{item.remark},#{seq},#{item.status},#{item.dateCreate},#{item.createBy},#{item.dateUpdate},#{item.updateBy})
  118. </foreach>
  119. </insert>
  120. <!-- 通过主键修改数据 -->
  121. <update id="update">
  122. UPDATE sms_device_parm
  123. <set>
  124. <if test="tenantId != null and tenantId != '' ">
  125. TENANT_ID = #{tenantId},
  126. </if>
  127. <if test="deviceId != null ">
  128. DEVICE_ID = #{deviceId},
  129. </if>
  130. <if test="attributeId != null ">
  131. ATTRIBUTE_ID = #{attributeId},
  132. </if>
  133. <if test="isSuspension != null ">
  134. IS_SUSPENSION = #{isSuspension},
  135. </if>
  136. <if test="isReport != null ">
  137. IS_REPORT = #{isReport},
  138. </if>
  139. <if test="isChart != null ">
  140. IS_CHART = #{isChart},
  141. </if>
  142. <if test="isMap != null ">
  143. IS_MAP = #{isMap},
  144. </if>
  145. <if test="isAlarm != null ">
  146. IS_ALARM = #{isAlarm},
  147. </if>
  148. <if test="isArtwork != null ">
  149. IS_ARTWORK = #{isArtwork},
  150. </if>
  151. REMARK = #{remark},
  152. parm_type = #{parmType},
  153. <if test="seq != null and seq != '' ">
  154. SEQ = #{seq},
  155. </if>
  156. <if test="status != null ">
  157. STATUS = #{status},
  158. </if>
  159. <if test="dateUpdate != null ">
  160. DATE_UPDATE = #{dateUpdate},
  161. </if>
  162. <if test="updateBy != null and updateBy != ''">
  163. UPDATE_BY = #{updateBy}
  164. </if>
  165. </set>
  166. WHERE
  167. ID = #{id};
  168. </update>
  169. <!--通过主键删除-->
  170. <delete id="deleteById">
  171. UPDATE sms_device_parm set STATUS = 0 where id = #{id}
  172. </delete>
  173. <delete id="deleteByDeviceId">
  174. UPDATE sms_device_parm set STATUS = 0 where device_id = #{deviceId}
  175. </delete>
  176. <!-- 分页查询 -->
  177. <select id="selectPage" resultType="com.huaxu.entity.DeviceParmEntity">
  178. select
  179. <include refid="Base_Column_List"/>
  180. from sms_device_parm p
  181. <include refid="deviceParmJoins"/>
  182. where p.status = 1
  183. </select>
  184. <select id="findAttributeNameList" resultType="com.huaxu.dto.ReportAttributeDto">
  185. SELECT DISTINCT tab.attributeName,tab.attributeType
  186. from
  187. (SELECT
  188. IFNULL(a.REMARK,b.`NAME`) AS "attributeName",
  189. a.parm_type as "attributeType"
  190. FROM sms_device_parm a
  191. INNER JOIN sms_device_attribute b on a.ATTRIBUTE_ID=b.ID
  192. where
  193. a.IS_REPORT=1
  194. <if test="report.deviceIds != null and report.deviceIds.size() > 0">
  195. and a.DEVICE_ID in
  196. <foreach collection="report.deviceIds" item="dramaId" open="(" close=")" separator=",">
  197. #{dramaId.id}
  198. </foreach>
  199. </if>
  200. ORDER BY a.SEQ
  201. ) as tab
  202. </select>
  203. <select id="findBySceneDeviceId" resultType="com.huaxu.dto.DeviceParmInfoDto">
  204. select a.id as "deviceId",b.id as "attributeId",b.`NAME` as "attributeName"
  205. ,case when p.ID is null then 0 else 1 end as "isCheck"
  206. from sms_device a
  207. inner join sms_device_attribute b on a.DEVICE_TYPE_ID= b.DEVICE_TYPE_ID and b.`STATUS` =1
  208. left join sms_device_parm p on p.DEVICE_ID=a.ID and p.ATTRIBUTE_ID=b.ID and p.`STATUS`=1 and p.SCENE_ID=#{info.sceneId}
  209. where a.id=#{info.deviceId}
  210. <if test="info.sceneIds != null and info.sceneIds.size() > 0">
  211. and b.id not in (
  212. select d.ATTRIBUTE_ID
  213. from sms_device_parm d
  214. where d.`STATUS` =1 and d.DEVICE_ID = #{info.deviceId} and d.scene_id in
  215. <foreach collection="info.sceneIds" item="dramaId" open="(" close=")" separator=",">
  216. #{dramaId}
  217. </foreach>
  218. )
  219. </if>
  220. </select>
  221. <select id="selectBindByDeviceId" resultType="com.huaxu.dto.DeviceParmInfoDto">
  222. select p.id,a.id as "deviceId",p.attribute_id as "attributeId"
  223. from sms_device a
  224. inner join sms_device_parm p on p.DEVICE_ID=a.ID and p.`STATUS`=1 and p.SCENE_ID=#{sceneId}
  225. where a.ID=#{deviceId}
  226. </select>
  227. <select id="selectDeviceBySceneIdAndType" resultType="com.huaxu.entity.DeviceParmEntity">
  228. select a.DEVICE_ID as "deviceId",b.DEVICE_CODE as "deviceCode",a.ATTRIBUTE_ID as "attributeId"
  229. from sms_device_parm a
  230. inner join sms_device b on a.DEVICE_ID=b.id
  231. where a.PARM_TYPE=#{info.parmType} and b.`STATUS`=1 and a.`STATUS`=1
  232. and a.PARENT_SCENE_ID in
  233. <foreach collection="info.sceneEntities" item="dramaId" open="(" close=")" separator=",">
  234. #{dramaId.id}
  235. </foreach>
  236. </select>
  237. <select id="findAlarmCount" resultType="com.huaxu.dto.ParmTypeCountDto">
  238. select b.PARM_TYPE as "parmType",count(a.DEVICE_ID) as "totalCount",count(c.id) as "nbnormalCount"
  239. from sms_device_scene a
  240. INNER JOIN sms_device_parm b on a.DEVICE_ID=b.DEVICE_ID
  241. and a.PARENT_SCENE_ID=b.PARENT_SCENE_ID and b.PARM_TYPE in (15,8,9,11,18,19) and b.`STATUS`=1
  242. LEFT JOIN sms_alarm_details c on c.PARENT_SCENE_ID=b.PARENT_SCENE_ID
  243. and c.ATTRIBUTE_ID=b.ATTRIBUTE_ID and c.STATE=1
  244. where a.PARENT_SCENE_ID in
  245. <foreach collection="info.sceneEntities" item="dramaId" open="(" close=")" separator=",">
  246. #{dramaId.id}
  247. </foreach>
  248. and
  249. a.`STATUS`=1
  250. group by b.PARM_TYPE
  251. </select>
  252. <select id="findAlarmTotalCount" resultType="com.huaxu.dto.ParmTypeCountDto">
  253. select count(1) as "totalCount" ,sum(tab.nbnormalCount) as "nbnormalCount" from(
  254. select a.PARENT_SCENE_ID,a.DEVICE_ID as "deviceId",case when count(c.id)>0 then 1 else 0 end as "nbnormalCount"
  255. from sms_device_scene a
  256. INNER JOIN sms_device_parm b on a.DEVICE_ID=b.DEVICE_ID
  257. and a.PARENT_SCENE_ID=b.PARENT_SCENE_ID and b.PARM_TYPE in (15,8,9,11,18,19) and b.`STATUS`=1
  258. LEFT JOIN sms_alarm_details c on c.PARENT_SCENE_ID=b.PARENT_SCENE_ID
  259. and c.ATTRIBUTE_ID=b.ATTRIBUTE_ID and c.STATE=1
  260. where a.PARENT_SCENE_ID in
  261. <foreach collection="info.sceneEntities" item="dramaId" open="(" close=")" separator=",">
  262. #{dramaId.id}
  263. </foreach>
  264. and
  265. a.`STATUS`=1
  266. group by a.PARENT_SCENE_ID,a.DEVICE_ID
  267. ) as tab
  268. </select>
  269. </mapper>