Newer
Older
casic-metering-eqpt-xichang / casic-metering-dao / src / main / resources / mapper / board / NoticeBoardMapper.xml
zhangyingjie on 18 Sep 2023 5 KB 业务看板和文档管理问题修改
<?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 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
        from eqpt_equipment_info
        <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[ >= ]]> now(),1,0)) as invalid,
            sum(if(certificate_valid <![CDATA[ < ]]> now(),1,0)) as valid
        from eqpt_equipment_info
        <where>
            <if test="ew != null">
                ${ew.sqlSegment}
            </if>
        </where>
    </select>

    <select id="inCheckEquipmentPage" resultType="com.casic.missiles.dto.board.EquipmentBoardList">
        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,
            r.real_deliver_time,
            '西昌卫星发射中心计量测试站' as checkOrganization,
            r.sample_status as sampleStatus
        from eqpt_equipment_info e
        LEFT JOIN latest_relation r ON e.id = r.sample_id
        <where>
            <if test="ew != null">
                ${ew.sqlSegment}
            </if>
        </where>
    </select>

    <select id="inCheckEquipmentPage" 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 e
        LEFT JOIN latest_relation r ON e.id = r.sample_id
        <where>
            <if test="ew != null">
                ${ew.sqlSegment}
            </if>
        </where>
    </select>

</mapper>