智慧水务管理系统 - 精河县供水工程综合管理平台

PatrolDeviceMapper.xml 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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.water.patrol.mapper.PatrolDeviceMapper">
  4. <resultMap id="BaseResultMap" type="com.water.patrol.entity.PatrolDevice">
  5. <id column="id" property="id" />
  6. <result column="device_no" property="deviceNo" />
  7. <result column="device_name" property="deviceName" />
  8. <result column="device_type" property="deviceType" />
  9. <result column="location" property="location" />
  10. <result column="lng" property="lng" />
  11. <result column="lat" property="lat" />
  12. <result column="status" property="status" />
  13. <result column="last_maintenance_date" property="lastMaintenanceDate" />
  14. <result column="area" property="area" />
  15. <result column="point_seq" property="pointSeq" />
  16. <result column="remark" property="remark" />
  17. <result column="created_at" property="createdAt" />
  18. <result column="updated_at" property="updatedAt" />
  19. </resultMap>
  20. <select id="generateDeviceNo" resultType="string">
  21. SELECT 'PD' || to_char(NOW(), 'YYYYMMDD') || '-' || LPAD(nextval('seq_patrol_device')::text, 4, '0')
  22. </select>
  23. <select id="statsByStatus" resultType="map">
  24. SELECT status, COUNT(*) as count FROM patrol_device GROUP BY status
  25. </select>
  26. <select id="statsByType" resultType="map">
  27. SELECT device_type, COUNT(*) as count FROM patrol_device GROUP BY device_type
  28. </select>
  29. <select id="selectNeedMaintenance" resultMap="BaseResultMap">
  30. SELECT * FROM patrol_device
  31. WHERE status != 'maintenance'
  32. AND (last_maintenance_date IS NULL OR last_maintenance_date &lt; NOW() - (#{days} || ' days')::INTERVAL)
  33. ORDER BY last_maintenance_date ASC NULLS FIRST
  34. </select>
  35. <update id="updateStatus">
  36. UPDATE patrol_device SET status = #{status}, updated_at = NOW() WHERE id = #{id}
  37. </update>
  38. </mapper>