Newer
Older
casic-metering-eqpt-xichang / casic-metering-dao / src / main / resources / mapper / board / NoticeBoardMapper.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.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>