GZMachinesWeb/resources/mybatis/index/PositionMapper.xml

330 lines
13 KiB
XML

<?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.bonus.index.dao.PositionDao" >
<resultMap id="position" type="com.bonus.index.beans.PositionBean"></resultMap>
<resultMap id="ZNode" type="com.bonus.sys.beans.ZNode"></resultMap>
<select id="findNoPage" parameterType="com.bonus.index.beans.PositionBean" resultType="com.bonus.index.beans.PositionBean">
select bpd.ID as id,bpd.GPS_CODE as code, bpd.LON as lon,bpd.LAT as lat,bpd.UPLOAD_CYCLE as uploadCycle,bb.BIND_STATUS as status
from bm_position_device bpd
left join bm_binding bb on bb.GPS_CODE = bpd.GPS_CODE
where bpd.IS_ACTIVE = 1
<if test="param.keyWord != null and param.keyWord != ''">
and bpd.GPS_CODE like CONCAT('%',#{param.keyWord},'%') or
bb.BIND_STATUS like CONCAT('%',#{param.keyWord},'%') or
bpd.LON like CONCAT('%',#{param.keyWord},'%') or
bpd.LAT like CONCAT('%',#{param.keyWord},'%') or
bpd.UPLOAD_CYCLE like CONCAT('%',#{param.keyWord},'%')
</if>
</select>
<select id="findBindPosition" parameterType="com.bonus.index.beans.PositionBean" resultType="com.bonus.index.beans.PositionBean">
select bb.ID as id,bd.DEVICE_CODE as deviceCode,bd.BATCH_STATUS status,
bp.GPS_CODE as code,drt.LON as lon,drt.LAT as lat,drt.UP_TIME AS upTime,
drt.ELECT_QUANTITY AS electQuantity,drt.`STATUS` as gpsStatus,
drt.POS_TYPE as posType,drt.COLLECT_TIME as collectTime,
drt.EXPIRE_FLAG as expireFlag,bmdt.`NAME` as typeName,b.useUnit,b.proName,b.useTime
from mm_machines bd
LEFT JOIN gps_binding bb ON bd.DEVICE_CODE = bb.DEVICE_CODE
LEFT JOIN mm_type bdt on bdt.id = bd.TYPE
LEFT JOIN mm_type bmdt on bmdt.ID = bdt.PARENT_ID
LEFT JOIN gps_position_device bp ON bb.GPS_CODE = bp.GPS_CODE
LEFT JOIN gps_real_time_data drt ON bp.GPS_CODE = drt.GPS_CODE
LEFT JOIN ( SELECT
*
FROM
(
SELECT
mm.ID,
bu.`NAME` as useUnit,
bp.`NAME` as proName ,
wir.`TIME` as useTime
FROM
wf_info_record wir
LEFT JOIN mm_machines mm ON wir.ma_id = mm.id
LEFT JOIN wf_task_record wtr on wir.SUP_ID = wtr.ID
LEFT JOIN wf_agreement_task wat on wtr.SUP_ID = wat.TASK_ID
LEFT JOIN wf_lease_agreement wla ON wat.AGREEMENT_ID = wla.ID
LEFT JOIN bm_unit bu ON wla.LEASE_COMPANY = bu.ID
LEFT JOIN bm_project bp ON wla.PROJECT = bp.ID
where wir.TYPE = 2 and mm.BATCH_STATUS = 6
GROUP BY mm.ID,wat.AGREEMENT_ID
ORDER BY wir.TIME desc
) a group by id) b on bd.id = b.ID
where bb.id in(select max(id) from gps_binding group by DEVICE_CODE) and bd.DEVICE_TYPE=#{deviceType}
<if test="keyWord!=null and keyWord!=''">
and (
bd.DEVICE_CODE like CONCAT('%',#{keyWord},'%') or
bdt.`NAME` like CONCAT('%',#{keyWord},'%') or
bmdt.`NAME` like CONCAT('%',#{keyWord},'%')
)
</if>
</select>
<select id="findDeviceDetail" parameterType="com.bonus.index.beans.PositionBean" resultType="com.bonus.index.beans.PositionBean">
select bb.ID as id,bd.DEVICE_CODE as deviceCode,bd.BIND_STATUS status,
bp.GPS_CODE as code,drt.LON as lon,drt.LAT as lat,drt.UP_TIME AS upTime,
drt.ELECT_QUANTITY AS electQuantity,drt.`STATUS` as gpsStatus,
drt.POS_TYPE as posType,drt.COLLECT_TIME as collectTime,
drt.EXPIRE_FLAG as expireFlag,bw.POINTS,bw.`NAME` as fenceName,
aa.TYPE as alarmType,bmdt.`NAME` as typeName,bdt.`NAME` as deviceModel
from bm_device bd
LEFT JOIN bm_binding bb ON bd.DEVICE_CODE = bb.DEVICE_CODE
LEFT JOIN bm_device_type bdt on bdt.id = bd.TYPE
LEFT JOIN bm_device_type bmdt on bmdt.ID = bdt.PARENT_ID
LEFT JOIN bm_position_device bp ON bb.GPS_CODE = bp.GPS_CODE
LEFT JOIN dm_real_time_data drt ON bp.GPS_CODE = drt.GPS_CODE
LEFT JOIN bm_warehouse bw ON bd.WAREHOUSE_ID = bw.id
LEFT JOIN (SELECT * FROM am_alarm GROUP BY DEVICE_CODE) aa ON bd.DEVICE_CODE = aa.DEVICE_CODE
where bb.id in(select max(id) from bm_binding group by DEVICE_CODE) and bb.id= #{param.id}
<if test="param.keyWord != null and param.keyWord != ''">
and (bp.GPS_CODE like CONCAT('%',#{param.keyWord},'%') or
bd.DEVICE_CODE like CONCAT('%',#{param.keyWord},'%') or
drt.LON like CONCAT('%',#{param.keyWord},'%') or
drt.LAT like CONCAT('%',#{param.keyWord},'%') or
bmdt.`NAME` like CONCAT('%',#{param.keyWord},'%') or
bdt.`NAME` like CONCAT('%',#{param.keyWord},'%') )
</if>
</select>
<select id="findAll" parameterType="com.bonus.index.beans.PositionBean" resultType="com.bonus.index.beans.PositionBean">
SELECT mm.ID as id,mm.GPS_CODE as code
FROM mm_machines mm
where mm.GPS_CODE is not null
</select>
<select id="find" parameterType="com.bonus.index.beans.PositionBean" resultType="com.bonus.index.beans.PositionBean">
select ID as id,GPS_CODE as code,GPS_STATUS as status, LON as lon,LAT as lat,UPLOAD_CYCLE as uploadCycle
from bm_position_device
where ID =#{id} and IS_ACTIVE = 1
</select>
<update id="delete" parameterType="com.bonus.index.beans.PositionBean">
update bm_position_device set IS_ACTIVE = '0'
where ID =#{id}
</update>
<update id="update" parameterType="com.bonus.index.beans.PositionBean">
update bm_position_device set GPS_CODE = #{code},GPS_STATUS = #{status},LON = #{lon},LAT = #{lat},
UPLOAD_CYCLE = #{uploadCycle}
where ID = #{id}
</update>
<insert id="insert" parameterType="com.bonus.index.beans.PositionBean">
insert into bm_position_device(GPS_CODE,GPS_STATUS,LON,LAT,UPLOAD_CYCLE,IS_ACTIVE) values
(#{code},#{status},#{lon},#{lat},#{uploadCycle},1)
</insert>
<!-- 替换绑定 -->
<select id="gpsCode" parameterType="com.bonus.index.beans.PositionBean" resultType="java.lang.String">
select GPS_CODE as newgpsCode
from bm_position_device where GPS_CODE=#{param.newgpsCode}
</select>
<!-- 绑定gps -->
<select id="gpsCodeBind" parameterType="com.bonus.index.beans.PositionBean" resultType="java.lang.String">
select GPS_CODE as gpsCode
from bm_position_device where GPS_CODE=#{param.gpsCode}
</select>
<select id="findInLibDevice" parameterType="com.bonus.index.beans.PositionBean" resultType="com.bonus.index.beans.PositionBean">
SELECT bmd.ID,bdy.`NAME` as typeName,bdt.`NAME` as deviceModel,bmd.DEVICE_CODE as deviceCode,
bmd.BIND_STATUS status,bp.GPS_CODE as code,drt.LON as lon,drt.LAT as lat,drt.UP_TIME AS upTime,
drt.ELECT_QUANTITY AS electQuantity,drt.`STATUS` as gpsStatus,drt.POS_TYPE as posType,
drt.COLLECT_TIME as collectTime,drt.EXPIRE_FLAG as expireFlag
FROM bm_device bmd,bm_device_type bdt,bm_device_type bdy,bm_binding bb,bm_position_device bp,dm_real_time_data drt
WHERE bmd.TYPE = bdt.ID AND bdt.PARENT_ID = bdy.ID AND bmd.DEVICE_CODE = bb.DEVICE_CODE
AND bb.GPS_CODE = bp.GPS_CODE AND bp.GPS_CODE = drt.GPS_CODE
AND bmd.DEVICE_STATUS = 1
<if test="param.deviceType != 0 and param.deviceType != '0'">
AND bdy.ID = #{param.deviceType}
</if>
</select>
<select id="findOldGpsData" parameterType="com.bonus.index.beans.PositionBean" resultType="com.bonus.index.beans.PositionBean">
select DISTINCT bd.DEVICE_CODE as deviceCode,bd.BATCH_STATUS status,
bd.GPS_CODE as code,bb.LON as lon,bb.LAT as lat,bb.UP_TIME AS upTime,
bb.ELECT_QUANTITY AS electQuantity,bb.`STATUS` as gpsStatus,
bb.POS_TYPE as posType,bb.COLLECT_TIME as collectTime,
bb.EXPIRE_FLAG as expireFlag,bmdt.`NAME` as typeName,bdt.`NAME` as deviceModel,
b.useUnit,b.proName,b.useTime
from mm_machines bd
LEFT JOIN gps_history_data bb ON bd.GPS_CODE = bb.GPS_CODE
LEFT JOIN mm_type bdt on bdt.id = bd.TYPE
LEFT JOIN mm_type bmdt on bmdt.ID = bdt.PARENT_ID
LEFT JOIN ( SELECT
*
FROM
(
SELECT
mm.ID,
bu.`NAME` as useUnit,
bp.`NAME` as proName ,
bu.`TIME` as useTime
FROM mm_machines mm
LEFT JOIN ma_type_project_storage ps on mm.ID = ps.machine
LEFT JOIN wf_lease_agreement wla ON ps.agreement_id = wla.ID
LEFT JOIN bm_unit bu on wla.LEASE_COMPANY = bu.ID
LEFT JOIN bm_project bp on wla.PROJECT = bp.ID
WHERE mm.BATCH_STATUS = 6
<if test="param.code != null and param.code != ''">
and mm.GPS_CODE = #{param.code}
</if>
GROUP BY mm.ID
) a ) b on bd.id = b.ID
where 1=1
<if test="param.code != null and param.code != ''">
and bd.GPS_CODE = #{param.code}
</if>
and bb.UP_TIME between #{param.startTime} and #{param.endTime}
<if test="param.code != null and param.code != ''">
AND bd.GPS_CODE = #{param.code}
</if>
<if test="param.deviceCode != null and param.deviceCode != ''">
AND bd.ID = #{param.deviceCode}
</if>
<if test="param.typeNameId != null and param.typeNameId != ''">
AND bmdt.`ID` = #{param.typeNameId}
</if>
<if test="param.deviceModel != null and param.deviceModel != ''">
AND bdt.`ID` = #{param.deviceModel}
</if>
<if test="param.keyWord!=null and param.keyWord!=''">
and (
bd.GPS_CODE like CONCAT('%',#{param.keyWord},'%') or
bd.DEVICE_CODE like CONCAT('%',#{param.keyWord},'%') or
bdt.`NAME` like CONCAT('%',#{param.keyWord},'%') or
bmdt.`NAME` like CONCAT('%',#{param.keyWord},'%')
)
</if>
</select>
<select id="getMainTree" parameterType="com.bonus.index.beans.PositionBean" resultMap="ZNode">
SELECT
mt2.ID as id ,
0 as pId ,
mt2.`NAME` as name,
2 as `LEVEL`
from mm_machines mm
LEFT JOIN mm_type mt on mm.TYPE = mt.ID
LEFT JOIN mm_type mt2 ON mt.PARENT_ID = mt2.ID
where GPS_CODE is not null AND DEVICE_TYPE=1
GROUP BY mt2.ID
union
SELECT
mm.TYPE as id ,
mt.PARENT_ID as pId ,
mt.`NAME` as name,
3 as `LEVEL`
from mm_machines mm
LEFT JOIN mm_type mt on mm.TYPE = mt.ID
LEFT JOIN mm_type mt2 ON mt.PARENT_ID = mt2.ID
where GPS_CODE is not null AND DEVICE_TYPE=1
GROUP BY mt.ID
union
SELECT
CONCAT(mm.ID,"-",mm.TYPE) as id ,
mm.TYPE as pId ,
if(drt.ELECT_QUANTITY ="null" or drt.ELECT_QUANTITY is null,CONCAT(mm.DEVICE_CODE,"[电量:暂无]"),CONCAT(mm.DEVICE_CODE,"[电量:",drt.ELECT_QUANTITY,"%]")) as name,
4 as `LEVEL`
from mm_machines mm
LEFT JOIN gps_binding bb ON mm.DEVICE_CODE = bb.DEVICE_CODE
LEFT JOIN mm_type mt on mm.TYPE = mt.ID
LEFT JOIN mm_type mt2 ON mt.PARENT_ID = mt2.ID
LEFT JOIN gps_position_device bp ON mm.GPS_CODE = bp.GPS_CODE
LEFT JOIN gps_real_time_data drt ON bp.GPS_CODE = drt.GPS_CODE
where mm.GPS_CODE is not null AND DEVICE_TYPE=1
GROUP BY mm.ID
</select>
<select id="getMainSpecialTree" parameterType="com.bonus.index.beans.PositionBean" resultMap="ZNode">
SELECT
mt2.ID as id ,
0 as pId ,
mt2.`NAME` as name,
2 as `LEVEL`
from mm_machines mm
LEFT JOIN mm_type mt on mm.TYPE = mt.ID
LEFT JOIN mm_type mt2 ON mt.PARENT_ID = mt2.ID
where GPS_CODE is not null AND DEVICE_TYPE=2
GROUP BY mt2.ID
union
SELECT
mm.TYPE as id ,
mt.PARENT_ID as pId ,
mt.`NAME` as name,
3 as `LEVEL`
from mm_machines mm
LEFT JOIN mm_type mt on mm.TYPE = mt.ID
LEFT JOIN mm_type mt2 ON mt.PARENT_ID = mt2.ID
where GPS_CODE is not null AND DEVICE_TYPE=2
GROUP BY mt.ID
union
SELECT
CONCAT(mm.ID,"-",mm.TYPE) as id ,
mm.TYPE as pId ,
if(drt.ELECT_QUANTITY ="null" or drt.ELECT_QUANTITY is null,CONCAT(mm.DEVICE_CODE,"[电量:暂无]"),CONCAT(mm.DEVICE_CODE,"[电量:",drt.ELECT_QUANTITY,"%]")) as name,
4 as `LEVEL`
from mm_machines mm
LEFT JOIN gps_binding bb ON mm.DEVICE_CODE = bb.DEVICE_CODE
LEFT JOIN mm_type mt on mm.TYPE = mt.ID
LEFT JOIN mm_type mt2 ON mt.PARENT_ID = mt2.ID
LEFT JOIN gps_position_device bp ON mm.GPS_CODE = bp.GPS_CODE
LEFT JOIN gps_real_time_data drt ON bp.GPS_CODE = drt.GPS_CODE
where mm.GPS_CODE is not null AND DEVICE_TYPE=2
GROUP BY mm.ID
</select>
<select id="getTypeName" parameterType="com.bonus.index.beans.PositionBean" resultType="com.bonus.index.beans.PositionBean">
SELECT
mt2.ID as id ,
mt2.`NAME` as name,
2 as `LEVEL`
from mm_machines mm
LEFT JOIN mm_type mt on mm.TYPE = mt.ID
LEFT JOIN mm_type mt2 ON mt.PARENT_ID = mt2.ID
GROUP BY mt2.ID
</select>
<select id="getDeviceModel" parameterType="com.bonus.index.beans.PositionBean" resultType="com.bonus.index.beans.PositionBean">
SELECT
mm.TYPE as id ,
mt.`NAME` as name,
3 as `LEVEL`
from mm_machines mm
LEFT JOIN mm_type mt on mm.TYPE = mt.ID
LEFT JOIN mm_type mt2 ON mt.PARENT_ID = mt2.ID
GROUP BY mt.ID
</select>
<select id="getDeviceCode" parameterType="com.bonus.index.beans.PositionBean" resultType="com.bonus.index.beans.PositionBean">
SELECT
mm.ID as id ,
mm.DEVICE_CODE as name,
4 as `LEVEL`
from mm_machines mm
LEFT JOIN mm_type mt on mm.TYPE = mt.ID
LEFT JOIN mm_type mt2 ON mt.PARENT_ID = mt2.ID
GROUP BY mm.ID
</select>
<select id="getCode" parameterType="com.bonus.index.beans.PositionBean" resultType="com.bonus.index.beans.PositionBean">
SELECT
mm.GPS_CODE as id ,
mm.GPS_CODE as name
from mm_machines mm
where mm.GPS_CODE is not NULL
GROUP BY mm.ID
</select>
</mapper>