Files
foton-slrs-system-rest/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandWarning/EarlyWraningEOMapper.xml
T
2022-06-27 11:32:12 +08:00

316 lines
12 KiB
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.adc.da.slrs.sarStandWarning.dao.EarlyWarningEODao">
<!-- Result Map-->
<resultMap id="resultMap" type="com.adc.da.slrs.sarStandWarning.entity.StandWarningEO" >
<id column="ID" property="id" />
<result column="STAND_ID" property="standId"></result>
<result column="STAND_TYPE" property="standType"></result>
<result column="STAND_CODE" property="standCode"></result>
<result column="STAND_NAME" property="standName"></result>
<result column="ISSUE_TIME" property="issueTime"></result>
<result column="APPLY_TYPE" property="applyType"></result>
<result column="DUTY_ENGINEER" property="dutyEngineer"></result>
<result column="ITEM_ID" property="itemsId"></result>
<result column="ITEMS_NUM" property="itemsNum"></result>
<result column="ITEMS_NAME" property="itemsName"></result>
<result column="TERMS_CONDITIONS" property="termsConditions"></result>
<result column="POLICY_ID" property="policyId"></result>
<result column="POLICY_NAME" property="policyName"></result>
<result column="MARK" property="mark"></result>
<result column="POWER" property="power"></result>
<result column="XCXSSRQ" property="XCXSSRQ"></result>
<result column="ZCCSSRQ" property="ZCCSSRQ"></result>
<result column="SSRQ" property="SSRQ"></result>
</resultMap>
<sql id="stand_column">
warning.id AS ID,
sarInfo.ID AS STAND_ID,
sarInfo.STAND_TYPE,
CONCAT(sarInfo.STAND_SORT,' ',sarInfo.STAND_NUMBER,'-',sarInfo.STAND_YEAR) AS STAND_CODE,
sarInfo.STAND_NAME,
sarInfo.ISSUE_TIME,
attr.SSRQ as SSRQ
</sql>
<sql id="stand_where">
<if test="waringEO.standCode != null and waringEO.standCode != ''">
AND trim(replace(CONCAT(
sarInfo.STAND_SORT,
' ',
sarInfo.STAND_NUMBER,
'-',
sarInfo.STAND_YEAR
),' ','')) LIKE trim(replace(CONCAT('%',#{waringEO.standCode},'%'),' ',''))
</if>
<if test="waringEO.standName != null and waringEO.standName != ''">
AND sarInfo.STAND_NAME like concat('%', #{waringEO.standName},'%')
</if>
<if test="waringEO.startIssueTime != null and waringEO.startIssueTime != '' and waringEO.endIssueTime != null and waringEO.endIssueTime != '' ">
AND (
DATE_FORMAT(sarInfo.ISSUE_TIME, '%Y-%m-%d') &gt;= DATE_FORMAT(
#{waringEO.startIssueTime},
'%Y-%m-%d'
)
AND
DATE_FORMAT( sarInfo.ISSUE_TIME, '%Y-%m-%d') &lt;= DATE_FORMAT(
#{waringEO.endIssueTime},
'%Y-%m-%d'
)
)
</if>
<if test="waringEO.startSSRQ != null and waringEO.startSSRQ != '' and waringEO.endSSRQ != null and waringEO.endSSRQ != ''">
AND (
sarInfo.ID IN (SELECT DISTINCT law_id FROM warning_date as t WHERE
DATE_FORMAT(t.SSRQ, '%Y-%m-%d') &gt;= DATE_FORMAT(#{waringEO.startSSRQ}, '%Y-%m-%d')
AND
DATE_FORMAT(t.SSRQ, '%Y-%m-%d') &lt;= DATE_FORMAT(#{waringEO.endSSRQ}, '%Y-%m-%d') AND t.time_name = 'SSRQ' )
)
</if>
</sql>
<sql id="export_column">
warning.id AS ID,
sarInfo.ID AS STAND_ID,
sarInfo.STAND_TYPE,
CONCAT(sarInfo.STAND_SORT,' ',sarInfo.STAND_NUMBER,'-',sarInfo.STAND_YEAR) AS STAND_CODE,
sarInfo.STAND_NAME,
sarInfo.ISSUE_TIME,
attr.SSRQ as SSRQ,
case stand_type
when 'INLAND' then '国内标准'
when 'FOREIGN' then '国外标准'
ELSE ''
END
as standTypeShow
</sql>
<select id="exportWarning" resultType="com.adc.da.slrs.sarStandWarning.entity.WarningExportVO">
SELECT WARNING_RESULT.* FROM
(
SELECT
<include refid="export_column"/> ,
attr.CLLX AS APPLY_TYPE ,
attr.ZRGCS AS DUTY_ENGINEER ,
NULL AS ITEM_ID ,
NULL AS ITEMS_NUM ,
NULL AS ITEMS_NAME ,
NULL AS TERMS_CONDITIONS,
NULL AS POLICY_ID ,
NULL AS POLICY_NAME ,
MARK ,
POWER,
attr.XCXSSRQ AS XCXSSRQ ,
attr.ZCCSSRQ AS ZCCSSRQ
FROM sar_stand_warning AS warning
LEFT JOIN sar_standards_info AS sarInfo on sarInfo.id=warning.STAND_ID
LEFT JOIN sar_stand_attr_info AS attr on attr.STAND_ID=warning.STAND_ID
<where>
POWER = '1'
AND (MARK = 'stand')
AND sarInfo.VALID_FLAG='0'
<if test="idList != null and idList.size() > 0">
AND
warning.ID
IN
<foreach collection="idList" item="id" open="(" close=")" separator=",">
<!-- 每个遍历需要生成的串 -->
#{id}
</foreach>
</if>
</where>
UNION ALL
SELECT
<include refid="export_column"/> ,
items.APPLY_ARCTIC AS APPLY_TYPE ,
items.DUTY_ENGINEER AS DUTY_ENGINEER ,
items.ID AS ITEM_ID ,
items.ITEMS_NUM ,
items.ITEMS_NAME ,
items.TERMS_CONDITIONS,
NULL AS POLICY_ID ,
NULL AS POLICY_NAME ,
MARK ,
POWER,
items.XCXSSRQ AS XCXSSRQ ,
items.ZCCSSRQ AS ZCCSSRQ
FROM
sar_stand_warning AS warning
LEFT JOIN sar_standards_info AS sarInfo ON sarInfo.id = warning.STAND_ID
LEFT JOIN sar_stand_items AS items ON items.ID = warning.ITEM_ID
LEFT JOIN sar_stand_attr_info AS attr ON attr.STAND_ID = warning.STAND_ID
<where>
POWER = '1'
AND (MARK = 'item')
AND sarInfo.VALID_FLAG='0'
<if test="idList != null and idList.size() > 0">
AND
warning.ID
IN
<foreach collection="idList" item="id" open="(" close=")" separator=",">
<!-- 每个遍历需要生成的串 -->
#{id}
</foreach>
</if>
</where>
)
WARNING_RESULT
LEFT JOIN
(
SELECT item_id,law_id,MIN(SSRQ) SSRQ_MIN FROM warning_date
GROUP BY warning_date.law_id,item_id
) warning_date
ON warning_date.law_id = WARNING_RESULT.STAND_ID
AND warning_date.item_id = WARNING_RESULT.ITEM_ID
ORDER BY warning_date.SSRQ_MIN
</select>
<select id="selectWarningPage" resultMap="resultMap">
SELECT WARNING_RESULT.* FROM
(
SELECT
<include refid="stand_column"/>
,
attr.CLLX AS
APPLY_TYPE ,
attr
.ZRGCS AS DUTY_ENGINEER ,
ITEM_ID ,
NULL AS ITEMS_NUM ,
NULL AS ITEMS_NAME ,
NULL AS TERMS_CONDITIONS,
NULL AS POLICY_ID ,
NULL AS POLICY_NAME ,
MARK ,
POWER,
attr.XCXSSRQ AS XCXSSRQ ,
attr.ZCCSSRQ AS ZCCSSRQ
FROM sar_stand_warning AS warning
LEFT JOIN sar_standards_info AS sarInfo on sarInfo.id=warning.STAND_ID
LEFT JOIN sar_stand_attr_info AS attr on attr.STAND_ID=warning.STAND_ID
<where>
POWER = '1'
<if test="waringEO.mark != null and waringEO.mark != ''">
AND (MARK = #{mark})
</if>
<if test="waringEO.mark == null or waringEO.mark == ''">
AND (MARK = 'stand')
</if>
AND sarInfo.VALID_FLAG='0'
<include refid="stand_where"/>
<if test="waringEO.applyType != null and waringEO.applyType != ''">AND attr.CLLX LIKE CONCAT('%',
#{waringEO.applyType},'%')
</if>
<if test="waringEO.startXCXSSRQ != null and waringEO.startXCXSSRQ != '' and waringEO.endXCXSSRQ != null and waringEO.endXCXSSRQ != ''">
AND (
sarInfo.ID IN (SELECT DISTINCT law_id FROM warning_date as t WHERE
DATE_FORMAT(t.SSRQ, '%Y-%m-%d') between DATE_FORMAT(#{waringEO.startXCXSSRQ}, '%Y-%m-%d') AND DATE_FORMAT(#{waringEO.endXCXSSRQ}, '%Y-%m-%d')
AND t.time_name = 'XCXSSRQ' )
)
</if>
<if test="waringEO.startZCCSSRQ != null and waringEO.startZCCSSRQ != '' and waringEO.endZCCSSRQ != null and waringEO.endZCCSSRQ != ''">
AND (
sarInfo.ID IN (SELECT DISTINCT law_id FROM warning_date as t WHERE
DATE_FORMAT(t.SSRQ, '%Y-%m-%d') between DATE_FORMAT(#{waringEO.startZCCSSRQ}, '%Y-%m-%d') AND DATE_FORMAT(#{waringEO.endZCCSSRQ}, '%Y-%m-%d')
AND t.time_name = 'ZCCSSRQ' )
)
</if>
</where>
UNION ALL
SELECT
<include refid="stand_column"/> ,
items.APPLY_ARCTIC AS APPLY_TYPE ,
items.DUTY_ENGINEER AS DUTY_ENGINEER ,
items.ID AS ITEM_ID ,
items.ITEMS_NUM ,
items.ITEMS_NAME ,
items.TERMS_CONDITIONS,
NULL AS POLICY_ID ,
NULL AS POLICY_NAME ,
MARK ,
POWER,
items.XCXSSRQ AS XCXSSRQ ,
items.ZCCSSRQ AS ZCCSSRQ
FROM
sar_stand_warning AS warning
LEFT JOIN sar_standards_info AS sarInfo ON sarInfo.id = warning.STAND_ID
LEFT JOIN sar_stand_attr_info AS attr ON attr.STAND_ID = warning.STAND_ID
LEFT JOIN sar_stand_items AS items ON items.ID = warning.ITEM_ID
<where>
POWER = '1'
<if test="waringEO.mark != null and waringEO.mark != ''">
AND (MARK = #{mark})
</if>
<if test="waringEO.mark == null or waringEO.mark == ''">
AND (MARK = 'item')
</if>
AND sarInfo.VALID_FLAG='0'
<include refid="stand_where"/>
<if test="waringEO.applyType != null and waringEO.applyType != ''">
AND items.APPLY_ARCTIC LIKE CONCAT('%', #{waringEO.applyType},'%')
</if>
<if test="waringEO.startXCXSSRQ != null and waringEO.startXCXSSRQ != '' and waringEO.endXCXSSRQ != null and waringEO.endXCXSSRQ != ''">
AND (
DATE_FORMAT( items.XCXSSRQ, '%Y-%m-%d') between DATE_FORMAT(#{waringEO.startXCXSSRQ},'%Y-%m-%d')
AND
DATE_FORMAT(#{waringEO.endXCXSSRQ},'%Y-%m-%d')
)
</if>
<if test="waringEO.startZCCSSRQ != null and waringEO.startZCCSSRQ != '' and waringEO.endZCCSSRQ != null and waringEO.endZCCSSRQ != ''">
AND(
DATE_FORMAT( items.ZCCSSRQ, '%Y-%m-%d') between DATE_FORMAT(#{waringEO.startZCCSSRQ},'%Y-%m-%d') AND DATE_FORMAT(#{waringEO.endZCCSSRQ},'%Y-%m-%d' )
)
</if>
</where>
)
WARNING_RESULT
LEFT JOIN
(
SELECT item_id,law_id,MIN(SSRQ) SSRQ_MIN FROM warning_date
GROUP BY warning_date.law_id,item_id
) warning_date
ON warning_date.law_id = WARNING_RESULT.STAND_ID
AND warning_date.item_id = WARNING_RESULT.ITEM_ID
ORDER BY warning_date.SSRQ_MIN
</select>
<select id="exportShow" resultType="java.lang.String">
SELECT
group_concat( td.DIC_TYPE_NAME SEPARATOR ',' ) as applyTypeShow
FROM
ts_dictype td
WHERE
td.DIC_TYPE_CODE
IN
<foreach collection="str" item="dicTypeCode" open="(" close=")" separator=",">
<!-- 每个遍历需要生成的串 -->
#{dicTypeCode}
</foreach>
</select>
</mapper>