| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="com.water.patrol.mapper.PatrolDeviceMapper">
-
- <resultMap id="BaseResultMap" type="com.water.patrol.entity.PatrolDevice">
- <id column="id" property="id" />
- <result column="device_no" property="deviceNo" />
- <result column="device_name" property="deviceName" />
- <result column="device_type" property="deviceType" />
- <result column="location" property="location" />
- <result column="lng" property="lng" />
- <result column="lat" property="lat" />
- <result column="status" property="status" />
- <result column="last_maintenance_date" property="lastMaintenanceDate" />
- <result column="area" property="area" />
- <result column="point_seq" property="pointSeq" />
- <result column="remark" property="remark" />
- <result column="created_at" property="createdAt" />
- <result column="updated_at" property="updatedAt" />
- </resultMap>
-
- <select id="generateDeviceNo" resultType="string">
- SELECT 'PD' || to_char(NOW(), 'YYYYMMDD') || '-' || LPAD(nextval('seq_patrol_device')::text, 4, '0')
- </select>
-
- <select id="statsByStatus" resultType="map">
- SELECT status, COUNT(*) as count FROM patrol_device GROUP BY status
- </select>
-
- <select id="statsByType" resultType="map">
- SELECT device_type, COUNT(*) as count FROM patrol_device GROUP BY device_type
- </select>
-
- <select id="selectNeedMaintenance" resultMap="BaseResultMap">
- SELECT * FROM patrol_device
- WHERE status != 'maintenance'
- AND (last_maintenance_date IS NULL OR last_maintenance_date < NOW() - (#{days} || ' days')::INTERVAL)
- ORDER BY last_maintenance_date ASC NULLS FIRST
- </select>
-
- <update id="updateStatus">
- UPDATE patrol_device SET status = #{status}, updated_at = NOW() WHERE id = #{id}
- </update>
-
- </mapper>
|