<?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>