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

    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.casic.missiles.model.board.BoardMessage">
        <id column="id" property="id" />
        <result column="message_module" property="messageModule" />
        <result column="message_type" property="messageType" />
        <result column="message_topic" property="messageTopic" />
        <result column="source_module" property="sourceModule" />
        <result column="read_status" property="readStatus" />
        <result column="notify_user_id" property="notifyUserId" />
        <result column="notify_dept_id" property="notifyDeptId" />
        <result column="biz_id" property="bizId" />
        <result column="message_time" property="messageTime" />
        <result column="create_time" property="createTime" />
        <result column="update_time" property="updateTime" />
        <result column="set_top" property="setTop"/>
    </resultMap>

    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, message_module, message_type, message_topic, source_module, read_status, notify_user_id, notify_dept_id, biz_id, message_time, create_time, update_time,set_top
    </sql>

    <select id="checkMessagePage" resultMap="BaseResultMap">
        with message_1 as (
            select * from eqpt_board_message where message_module = '检定通知' and notify_user_id = #{userId}
        ),
             message_2 as (
                 select
                     null as id,
                     '检定通知' as message_module,
                     '任务单检完' as message_type,
                     concat('任务单', order_no,'已检完') as message_topic,
                     '计量计划' as source_module,
                     '0' as read_status,
                     create_user_id as notify_user_id,
                     customer_id as notify_dept_id,
                     id as biz_id,
                     update_time as message_time,

                     null as create_time,
                     null as update_time,
                     0 as set_top
                 from biz_business_order_info
                 where receive_status = '4' and id not in (select biz_id from message_1 where message_module = '检定通知' and message_type = '任务单检完')
             ),
             message_3 as (
                 select
                     null as id,
                     '检定通知' as message_module,
                     '任务单退回' as message_type,
                     concat('任务单', order_no,'已退回') as message_topic,
                     '计量计划' as source_module,
                     '0' as read_status,
                     create_user_id as notify_user_id,
                     customer_id as notify_dept_id,
                     id as biz_id,
                     update_time as message_time,
                     null as create_time,
                     null as update_time,
                     0 as set_top
                 from biz_business_order_info
                 where receive_status = '5' and id not in (select biz_id from message_1 where message_module = '检定通知' and message_type = '任务单退回')
             ),
             message_4 as (
                 select
                     null as id,
                     '检定通知' as message_module,
                     '设备退回' as message_type,
                     concat('受检设备', r.sample_no,'已退回') as message_topic,
                     '计量计划' as source_module,
                     '0' as read_status,
                     o.create_user_id as notify_user_id,
                     o.customer_id as notify_dept_id,
                     o.id as biz_id,
                     r.update_time as message_time,

                     null as create_time,
                     null as update_time,
                     0 as set_top
                 from biz_business_order_sample_relation r
                          LEFT JOIN biz_business_order_info o on r.order_id = o.id
                 where r.sample_status = '10' and o.id not in (select biz_id from message_1 where message_module = '检定通知' and message_type = '设备退回')
             ),
            message as (
                (select * from message_1
                <where>
                    <if test="ew != null">
                        ${ew.sqlSegment}
                    </if>
                </where>)
                union all
                (select * from message_2
                <where>
                    <if test="ew != null">
                        ${ew.sqlSegment}
                    </if>
                </where>)
                union all
                (select * from message_3
                <where>
                    <if test="ew != null">
                        ${ew.sqlSegment}
                    </if>
                </where>)
                union all
                (select * from message_4
                <where>
                    <if test="ew != null">
                        ${ew.sqlSegment}
                    </if>
                </where>)
            )

        select
            <include refid="Base_Column_List"/>
        from message
        order by set_top desc, message_time desc, biz_id

    </select>

    <select id="noticeMessagePage" resultMap="BaseResultMap">
        with message_1 as (
            select * from eqpt_board_message where message_module = '通知公告' and notify_user_id = #{userId}
        ),
             message_2 as (
                 select
                     null as id,
                     '通知公告' as message_module,
                     '单位通知' as message_type,
                     notice_title as message_topic,
                     '单位通知' as source_module,
                     '0' as read_status,
                     null as notify_user_id,
                     #{userCompanyId} as notify_dept_id,
                     id as biz_id,
                     notice_time as message_time,
                     null as create_time,
                     null as update_time,
                     set_top as set_top
                 from system_notice
                 where system_type = '2' and id not in (select biz_id from message_1 where message_module = '通知公告' and message_type = '单位通知')
                   and (notice_company = #{userCompanyName} or notice_company = #{topCompanyName})
             ),
             message_3 as (
                 select
                     null as id,
                     '通知公告' as message_module,
                     '溯源公示' as message_type,
                     notice_title as message_topic,
                     '溯源公示' as source_module,
                     '0' as read_status,
                     null as notify_user_id,
                     #{userCompanyId} as notify_dept_id,
                     id as biz_id,
                     notice_time as message_time,
                     null as create_time,
                     null as update_time,
                     set_top as set_top
                 from system_notice
                 where system_type = '1' and id not in (select biz_id from message_1 where message_module = '通知公告' and message_type = '溯源公示')
                   and sync_eqpt = 1
             ),
             message_4 as (
                 select
                     null as id,
                     '通知公告' as message_module,
                     '分包通知' as message_type,
                     concat(notice_name,notice_no) as message_topic,
                     '计量业务' as source_module,
                     '0' as read_status,
                     null as notify_user_id,
                     customer_id as notify_dept_id,
                     id as biz_id,
                     create_time as message_time,
                     null as create_time,
                     null as update_time,
                     0 as set_top
                 from biz_business_outsource_notice
                 where approval_status = '4' and id not in (select biz_id from message_1 where message_module = '通知公告' and message_type = '分包通知')
             ),
            message as (
                (select * from message_1
                <where>
                    <if test="ew != null">
                        ${ew.sqlSegment}
                    </if>
                </where>)
                union all
                (select * from message_2
                <where>
                    <if test="ew != null">
                        ${ew.sqlSegment}
                    </if>
                </where>)
                union all
                (select * from message_3
                <where>
                    <if test="ew != null">
                        ${ew.sqlSegment}
                    </if>
                </where>)
                union all
                (select * from message_4
                <where>
                    <if test="ew != null">
                        ${ew.sqlSegment}
                    </if>
                </where>)
        )
        select
            <include refid="Base_Column_List"/>
        from message
        order by set_top desc, message_time desc, biz_id


    </select>

    <select id="remindMessagePage" resultMap="BaseResultMap">
        with message_1 as (
            select * from eqpt_board_message where message_module = '工作提醒' and notify_user_id = #{userId}
        ),
            message_2 as (
                select
                    null as id,
                    '工作提醒' as message_module,
                    '设备到期' as message_type,
                    concat(equipment_name,equipment_no,'已超有效期') as message_topic,
                    '设备台账' as source_module,
                    '0' as read_status,
                    #{userId} as notify_user_id,
                    null as notify_dept_id,
                    id as biz_id,
                    certificate_valid as message_time,
                    null as create_time,
                    null as update_time,
                    0 as set_top
                from eqpt_equipment_info
                where director_name = #{userName} and id not in (select biz_id from message_1 where message_module = '工作提醒' and message_type = '设备到期')
                  and certificate_valid <![CDATA[ < ]]> TIMESTAMP(CURDATE())
            ),
            message_3 as (
                select
                    null as id,
                    '工作提醒' as message_module,
                    '计量计划' as message_type,
                    concat(plan_name,'已发布') as message_topic,
                    '溯源公示' as source_module,
                    '0' as read_status,
                    null as notify_user_id,
                    create_dept_id as notify_dept_id,
                    id as biz_id,
                    create_time as message_time,
                    null as create_time,
                    null as update_time,
                    0 as set_top
                from eqpt_plan
                where approval_status = '4' and id not in (select biz_id from message_1 where message_module = '工作提醒' and message_type = '计量计划')
            ),
            message_4 as (
                select
                    null as id,
                    '工作提醒' as message_module,
                    '合同通知' as message_type,
                    concat(form_name,form_no,'待签署') as message_topic,
                    '计量业务' as source_module,
                    '0' as read_status,
                    sign_user_id as notify_user_id,
                    null as notify_dept_id,
                    id as biz_id,
                    create_time as message_time,
                    null as create_time,
                    null as update_time,
                    0 as set_top
                from biz_resource_customer_examine_form
                where approval_status = '4' and id not in (select biz_id from message_1 where message_module = '工作提醒' and message_type = '合同通知')
            ),
            message as (
                (select * from message_1
                <where>
                    <if test="ew != null">
                        ${ew.sqlSegment}
                    </if>
                </where>)
                union all
                (select * from message_2
                <where>
                    <if test="ew != null">
                        ${ew.sqlSegment}
                    </if>
                </where>)
                union all
                (select * from message_3
                <where>
                    <if test="ew != null">
                        ${ew.sqlSegment}
                    </if>
                </where>)
                union all
                (select * from message_4
                <where>
                    <if test="ew != null">
                        ${ew.sqlSegment}
                    </if>
                </where>)
            )

        select
            <include refid="Base_Column_List"/>
        from message
        order by set_top desc, message_time desc, biz_id
    </select>
</mapper>