<?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.casic.missiles.mapper.board.NoticeBoardMapper">
<select id="statisticsInfoList" resultType="com.casic.missiles.dto.board.EquipmentStatisticsList">
select * from (
WITH latest_relation AS (
SELECT *
FROM biz_business_order_sample_relation a
WHERE id = (
SELECT max( id )
FROM biz_business_order_sample_relation b
WHERE a.sample_id = b.sample_id )
)
SELECT
e.id AS equipmentId,
e.dept_id AS deptId,
d.FULL_NAME AS deptname,
e.usage_status AS usageStatus,
e.equipment_type as equipmentType,
e.certificate_valid AS certificateValid,
r.sample_status AS latestSampleStatus,
IF(EXISTS (SELECT id FROM biz_business_order_sample_relation tmp
WHERE tmp.sample_id = e.id
AND YEAR ( tmp.update_time ) = YEAR (NOW())
AND tmp.sample_status IN
<foreach collection="checkedStatus" item="item" index="index" open="(" close=")" separator=",">#{item}
</foreach>),
1,
0
) AS
yearChecked
FROM eqpt_equipment_info_view e
LEFT JOIN latest_relation r ON e.id = r.sample_id
LEFT JOIN sys_dept d ON e.dept_id = d.id
WHERE
e.is_del = '0'
<if test="equipmentType != null and equipmentType != ''">
AND e.equipment_type = #{equipmentType}
</if>
<if test="deptName != null and deptName != ''">
and d.FULL_NAME like concat('%',#{deptName},'%')
</if>
<if test="deptIds != null">
and e.dept_id in
<foreach collection="deptIds" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</if>) a
</select>
<select id="toCheckEquipmentPage" resultType="com.casic.missiles.dto.board.EquipmentBoardList">
select
id as id,
equipment_no as equipmentNo,
equipment_name as equipmentName,
company_id as companyId,
dept_id as deptId,
director_name as directorName,
certificate_valid as certificateValid,
usage_status as usageStatus,
model as model
from eqpt_equipment_info_view
<where>
<if test="ew != null">
${ew.sqlSegment}
</if>
</where>
</select>
<select id="toCheckStatistics" resultType="com.casic.missiles.dto.board.EquipmentToCheckAggr">
select
sum(if(certificate_valid <![CDATA[ >= ]]> TIMESTAMP(CURDATE()),1,0)) as invalid,
sum(if(certificate_valid <![CDATA[ < ]]> TIMESTAMP(CURDATE()),1,0)) as valid
from eqpt_equipment_info
<where>
<if test="ew != null">
${ew.sqlSegment}
</if>
</where>
</select>
<select id="inCheckEquipmentList" resultType="com.casic.missiles.dto.board.EquipmentBoardList">
select * from
(
WITH latest_relation AS (
SELECT *
FROM biz_business_order_sample_relation a
WHERE id = (
SELECT max( id )
FROM biz_business_order_sample_relation b
WHERE a.sample_id = b.sample_id )
)
select
e.id as id,
e.equipment_no as equipmentNo,
e.equipment_name as equipmentName,
e.company_id as companyId,
e.dept_id as deptId,
e.director_name as directorName,
e.certificate_valid as certificateValid,
e.usage_status as usageStatus,
e.model as model,
e.manufacturer as manufacturer,
e.manufacture_no as manufactureNo,
e.meter_identify as meterIdentify,
e.use_position_id as usePositionId,
e.use_position as usePosition,
r.real_deliver_time,
'西昌卫星发射中心计量测试站' as checkOrganization,
r.sample_status as sampleStatus
from eqpt_equipment_info_view e
LEFT JOIN latest_relation r ON e.id = r.sample_id
<where>
<if test="ew != null">
${ew.sqlSegment}
</if>
</where>)A
</select>
<select id="inCheckEquipmentPage" resultType="com.casic.missiles.dto.board.EquipmentBoardList">
select * from
(
WITH latest_relation AS (
SELECT *
FROM biz_business_order_sample_relation a
WHERE id = (
SELECT max( id )
FROM biz_business_order_sample_relation b
WHERE a.sample_id = b.sample_id )
)
select
e.id as id,
e.equipment_no as equipmentNo,
e.equipment_name as equipmentName,
e.company_id as companyId,
e.dept_id as deptId,
e.director_name as directorName,
e.certificate_valid as certificateValid,
e.usage_status as usageStatus,
e.model as model,
e.manufacturer as manufacturer,
e.manufacture_no as manufactureNo,
e.meter_identify as meterIdentify,
e.use_position_id as usePositionId,
e.use_position as usePosition,
r.real_deliver_time,
'西昌卫星发射中心计量测试站' as checkOrganization,
r.sample_status as sampleStatus
from eqpt_equipment_info_view e
LEFT JOIN latest_relation r ON e.id = r.sample_id
<where>
<if test="ew != null">
${ew.sqlSegment}
</if>
</where>)A
</select>
<select id="inCheckStatistics" resultType="com.casic.missiles.dto.board.EquipmentInCheckAggr">
WITH latest_relation AS (
SELECT *
FROM biz_business_order_sample_relation a
WHERE id = (
SELECT max( id )
FROM biz_business_order_sample_relation b
WHERE a.sample_id = b.sample_id )
)
select
sum(if(r.sample_status in
<foreach collection="unCheckStatus" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
,1,0)) as unCheck,
sum(if(r.sample_status in
<foreach collection="inCheckStatus" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
,1,0)) as inCheck,
sum(if(r.sample_status in
<foreach collection="checkedStatus" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
,1,0)) as checked
from eqpt_equipment_info_view e
LEFT JOIN latest_relation r ON e.id = r.sample_id
<where>
<if test="ew != null">
${ew.sqlSegment}
</if>
</where>
</select>
<select id="shouldCheckAggr" resultType="com.casic.missiles.dto.board.EquipmentCommonAggr">
WITH certificate_info AS (
SELECT equipment_id, certificate_valid
FROM `eqpt_equipment_special_certificate`
UNION ALL
SELECT equipment_id, certificate_valid
FROM eqpt_subcontract_certificate
UNION ALL
SELECT sample_id AS equipment_id, expiration_date AS certificate_valid
FROM biz_business_certificate_report_view
WHERE approval_status = '4' AND expiration_date IS NOT NULL
UNION ALL
SELECT id AS equipment_id, certificate_valid
FROM eqpt_equipment_info_view
)
SELECT
count( DISTINCT e.id ) as count,
DATE_FORMAT( c.certificate_valid, '%Y-%m' ) as name
FROM
eqpt_equipment_info_view e
RIGHT JOIN certificate_info c ON e.id = c.equipment_id
WHERE e.is_del = 0 AND e.equipment_type = '1'
AND c.certificate_valid <![CDATA[ >= ]]> #{startTime}
AND c.certificate_valid <![CDATA[ <= ]]> #{endTime}
<if test="deptIds != null">
and e.dept_id in
<foreach collection="deptIds" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
GROUP BY (DATE_FORMAT( c.certificate_valid, '%Y-%m' ))
</select>
<select id="haveCheckAggr" resultType="com.casic.missiles.dto.board.EquipmentCommonAggr">
SELECT
count( DISTINCT e.id ) AS count,
DATE_FORMAT( r.measure_complete_time, '%Y-%m' ) AS NAME
FROM
eqpt_equipment_info_view e
LEFT JOIN biz_business_order_sample_relation r ON e.id = r.sample_id
WHERE
r.sample_status IN
<foreach collection="checkedStatus" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
AND e.is_del = 0
AND e.equipment_type = '1'
AND r.measure_complete_time <![CDATA[ >= ]]> #{startTime}
AND r.measure_complete_time <![CDATA[ <= ]]> #{endTime}
<if test="deptIds != null">
and e.dept_id in
<foreach collection="deptIds" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
GROUP BY( DATE_FORMAT( r.measure_complete_time, '%Y-%m' ))
</select>
</mapper>