<?xml version="1.0" encoding="UTF-8"?>

<!--
  ~
  ~      Copyright (c) 2018-2025, lengleng All rights reserved.
  ~
  ~  Redistribution and use in source and binary forms, with or without
  ~  modification, are permitted provided that the following conditions are met:
  ~
  ~ Redistributions of source code must retain the above copyright notice,
  ~  this list of conditions and the following disclaimer.
  ~  Redistributions in binary form must reproduce the above copyright
  ~  notice, this list of conditions and the following disclaimer in the
  ~  documentation and/or other materials provided with the distribution.
  ~  Neither the name of the yifu4cloud.com developer nor the names of its
  ~  contributors may be used to endorse or promote products derived from
  ~  this software without specific prior written permission.
  ~  Author: lengleng (wangiegie@gmail.com)
  ~
  -->

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.yifu.cloud.plus.v1.msg.mapper.MsgInfoMapper">

  <resultMap id="msgInfoMap" type="com.yifu.cloud.plus.v1.msg.entity.MsgInfo">
    <id property="id" column="ID"/>
    <result property="orderId" column="ORDER_ID"/>
    <result property="url" column="URL"/>
    <result property="orderNo" column="ORDER_NO"/>
    <result property="alertType" column="ALERT_TYPE"/>
    <result property="createTime" column="CREATE_TIME"/>
    <result property="readStatus" column="READ_STATUS"/>
    <result property="alertUser" column="ALERT_USER"/>
	<result property="domainName" column="DOMAIN_NAME"/>
  </resultMap>
    <sql id="Base_Column_List">
                a.ID,
                a.ORDER_ID,
                a.URL,
                a.ORDER_NO,
                a.ALERT_TYPE,
                a.CREATE_TIME,
                a.READ_STATUS,
                a.ALERT_USER,
				a.DOMAIN_NAME
    </sql>
    <sql id="msgInfo_where">
        <if test="msgInfo != null">
                    <if test="msgInfo.id != null and msgInfo.id.trim() != ''">
                        AND a.ID = #{msgInfo.id}
                    </if>
                    <if test="msgInfo.orderId != null and msgInfo.orderId.trim() != ''">
                        AND a.ORDER_ID = #{msgInfo.orderId}
                    </if>
                    <if test="msgInfo.url != null and msgInfo.url.trim() != ''">
                        AND a.URL = #{msgInfo.url}
                    </if>
                    <if test="msgInfo.orderNo != null and msgInfo.orderNo.trim() != ''">
                        AND a.ORDER_NO = #{msgInfo.orderNo}
                    </if>
                    <if test="msgInfo.alertType != null and msgInfo.alertType.trim() != ''">
                        AND a.ALERT_TYPE = #{msgInfo.alertType}
                    </if>
                    <if test="msgInfo.createTime != null">
                        AND a.CREATE_TIME = #{msgInfo.createTime}
                    </if>
                    <if test="msgInfo.readStatus != null and msgInfo.readStatus.trim() != ''">
                        AND a.READ_STATUS = #{msgInfo.readStatus}
                    </if>
                    <if test="msgInfo.alertUser != null and msgInfo.alertUser.trim() != ''">
                        AND a.ALERT_USER = #{msgInfo.alertUser}
                    </if>
        </if>
    </sql>
    <!--msgInfo简单分页查询-->
    <select id="getMsgInfoPage" resultMap="msgInfoMap">
        SELECT
        <include refid="Base_Column_List"/>
        FROM msg_info a
        <where>
            1=1
            <include refid="msgInfo_where"/>
        </where>
    </select>
	<select id="getMsgInfo" resultMap="msgInfoMap">
		SELECT
		<include refid="Base_Column_List"/>
		FROM msg_info a
		<where>
			1=1
			<include refid="msgInfo_where"/>
		</where>
	</select>

	<select id="getMsgByOrderId" resultMap="msgInfoMap">
		SELECT
			a.fd_3ac901ba3b9d3e domain_name,
			p.fd_name ALERT_USER,
			a.fd_3ac901c5184274  ORDER_NO,
			a.fd_id  ORDER_ID,
			'0' as ALERT_TYPE
		FROM
			ekp_ea33075576149bb8a4f5 a
				LEFT JOIN sys_org_element p on a.fd_3bb0dd2400b154 = p.fd_id
		WHERE
			a.fd_id = #{orderId} limit 1
	</select>
	<!--  加急（2-3小时）|1  紧急（3-5小时）|4  常规（5-8小时）|7  -->
	<select id="getMsgByTask"  resultMap="msgInfoMap">
		SELECT * from (
		SELECT
			b1.fd_3ac901ba3b9d3e domain_name,
			o.fd_no ALERT_USER,
			b1.fd_3ac901c5184274 ORDER_NO,
			b1.fd_id ORDER_ID,
			'1' AS ALERT_TYPE,
			DATE_ADD(NOW(), INTERVAL 30 MINUTE)  as  'date1',
			IF(b1.fd_3b779ba2168eea = 1,
				DATE_ADD(a.fd_start_date,INTERVAL 3 HOUR),
				IF(b1.fd_3b779ba2168eea = 4,
				   DATE_ADD(a.fd_start_date,INTERVAL 5 HOUR),
				   IF(b1.fd_3b779ba2168eea = 7,
					  DATE_ADD(a.fd_start_date,INTERVAL 8 HOUR),
					  DATE_ADD(a.fd_start_date,INTERVAL 2 MONTH)))) as 'date2'
		FROM
			lbpm_workitem a
		LEFT JOIN lbpm_node e ON e.fd_id = a.fd_node_id
		LEFT JOIN lbpm_process p ON p.fd_id = e.fd_process_id
		LEFT JOIN ekp_ea33075576149bb8a4f5 b1 ON p.fd_model_id = b1.fd_id
		LEFT JOIN sys_org_element o ON o.fd_id = fd_expected_id
		WHERE
			e.fd_fact_node_id = 'N5'
		AND b1.fd_id IS NOT NULL
		) x
		where x.date1 >= date2 GROUP BY x.ORDER_NO
	</select>

	<select id="getMsgByTaskOne"  resultMap="msgInfoMap">
		SELECT
			b1.fd_3ac901ba3b9d3e domain_name,
			o.fd_no ALERT_USER,
			b1.fd_3ac901c5184274 ORDER_NO,
			b1.fd_id ORDER_ID,
			'3' AS ALERT_TYPE,
			b1.fd_3bddc3d6c8a734
		FROM
			ekp_ea33075576149bb8a4f5 b1
				LEFT JOIN sys_org_element o ON o.fd_id = b1.fd_3bf1511f1d618e
		WHERE
			b1.fd_3bddc3d6c8a734 = '待支出'
		  AND b1.fd_id IS NOT NULL and o.fd_id is not null
	</select>

	<delete id="deleteHandledMsg">
		DELETE FROM msg_info where ALERT_TYPE ='0'
		<if test="nos != null and nos.size > 0">
			and ORDER_NO not in
			<foreach item="items" index="index" collection="nos" open="(" separator="," close=")">
				#{items}
			</foreach>
		</if>
	</delete>
	<select id="getOrderNos" resultType="java.lang.String">
		SELECT
			b1.fd_3ac901c5184274 ORDER_NO
		FROM
			lbpm_workitem a
				LEFT JOIN lbpm_node e ON e.fd_id = a.fd_node_id
				LEFT JOIN lbpm_process p ON p.fd_id = e.fd_process_id
				LEFT JOIN ekp_ea33075576149bb8a4f5 b1 ON p.fd_model_id = b1.fd_id
		WHERE
			e.fd_fact_node_id = 'N5'
		  AND b1.fd_id IS NOT NULL
	</select>

	<insert id="insertMsg">
		insert into msg_info (ID,URL,ORDER_ID,ALERT_USER,DOMAIN_NAME,CREATE_TIME,ALERT_TYPE,ORDER_NO)
			value (REPLACE(UUID(),"-",""),#{vo.urlInfo},#{vo.orderId},#{vo.userName},#{vo.domainName},now(),'0',#{vo.dingdanNo})
	</insert>
</mapper>
