FAISP/src/main/resources/mybatisMapper/AffairMapper.xml

659 lines
20 KiB
XML
Raw Normal View History

<?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.dbnt.faisp.main.fpiMgt.affair.mapper.AffairMapper">
<sql id="selectAffairBoardWhere">
<where>
<if test='affairCategory != null and affairCategory != ""'>
and a.affair_category = #{affairCategory}
</if>
<if test='wrtUserSeq != null and wrtUserSeq != ""'>
and a.wrt_user_seq = #{wrtUserSeq}
</if>
<if test='wrtUserNm != null and wrtUserNm != ""'>
and a.wrt_user_nm like '%'||#{wrtUserNm}||'%'
</if>
2023-02-08 09:19:52 +00:00
<if test='queryType != "openReportList"'>
<if test='wrtOrgan != null and wrtOrgan != ""'>
and a.wrt_organ = #{wrtOrgan}
</if>
</if>
<if test='affairType1 != null and affairType1 != ""'>
and a.affair_type1 = #{affairType1}
</if>
<if test='affairType2 != null and affairType2 != ""'>
and a.affair_type2 = #{affairType2}
</if>
<if test='affairType3 != null and affairType3 != ""'>
and a.affair_type3 = #{affairType3}
</if>
<if test='affairType4 != null and affairType4 != ""'>
and a.affair_type4 = #{affairType4}
</if>
<if test='title != null and title != ""'>
and a.title like '%'||#{title}||'%'
</if>
<if test='affairStatus != null and affairStatus != ""'>
and c.affair_status = #{affairStatus}
</if>
<if test='startDate != null and startDate != ""'>
and a.wrt_dt >= #{startDate}::date
</if>
<if test='endDate != null and endDate != ""'>
and a.wrt_dt &lt;= #{endDate}::date+1
</if>
<choose>
<when test='ratingOrgan != null and ratingOrgan != ""'>
and c.rating_organ = #{ratingOrgan}
</when>
<otherwise>
and (c.organ_up != 'T' or c.organ_up is null)
</otherwise>
</choose>
2023-02-08 09:19:52 +00:00
<if test='queryType != "openReportList"'>
<if test="downOrganCdList != null">
and a.wrt_organ in
<foreach collection="downOrganCdList" item="organCd" separator="," open="(" close=")">
#{organCd}
</foreach>
</if>
</if>
2023-02-08 09:19:52 +00:00
<if test='queryType != null and queryType != ""'>
<if test='queryType == "normalStayList"'>
and c.affair_status in ('DST002', 'DST004')
</if>
2023-02-08 09:19:52 +00:00
<if test='queryType == "normalCommitList"'>
and c.affair_status in ('DST003', 'DST005', 'DST006')
</if>
2023-02-08 09:19:52 +00:00
<if test='queryType == "sectionCommitList"'>
and c.affair_status in ('DST003', 'DST004', 'DST005', 'DST006')
</if>
2023-02-08 09:19:52 +00:00
<if test='queryType == "headCommitList"'>
and c.affair_status in ('DST003', 'DST005', 'DST006')
</if>
2023-02-08 09:19:52 +00:00
<if test='queryType == "openReportList"'>
and view_status &lt;> 'AVS001'
and (
(view_status = 'AVS002' and a.wrt_organ = #{wrtOrgan}) or
(view_status = 'AVS003' and a.wrt_organ in
<foreach collection="downOrganCdList" item="organCd" separator="," open="(" close=")">
#{organCd}
</foreach>
) or
<if test='groupOrganCdList!=null'>
(view_status = 'AVS005' and a.wrt_organ in
<foreach collection="groupOrganCdList" item="organCd" separator="," open="(" close=")">
#{organCd}
</foreach>
) or
</if>
(view_status = 'AVS004')
)
</if>
</if>
</where>
</sql>
<select id="selectAffairBoardList" resultType="AffairBoard" parameterType="AffairBoard">
select a.affair_key,
a.affair_type1,
a.affair_type2,
a.affair_type3,
a.affair_type4,
a.title,
a.wrt_organ,
a.wrt_part,
a.wrt_user_nm,
a.wrt_user_seq,
a.wrt_dt,
b.fileCnt,
2023-02-16 09:50:49 +00:00
c.rating_organ,
c.affair_status,
c.affair_rate,
c.organ_up,
a.doc_no
from affair_board a
left outer join (select affair_key,
count(file_seq) as fileCnt
from affair_file
group by affair_key) b
on a.affair_key = b.affair_key
inner join affair_rating c
on a.affair_key = c.affair_key
<include refid="selectAffairBoardWhere"></include>
order by a.affair_key desc
limit #{rowCnt} offset #{firstIndex}
</select>
<select id="selectAffairBoardCnt" resultType="int" parameterType="AffairBoard">
select count(*)
from affair_board a
inner join affair_rating c
on a.affair_key = c.affair_key
<include refid="selectAffairBoardWhere"></include>
</select>
<select id="selectHashTags" resultType="string" parameterType="int">
select array_to_string(array_agg(b.tag_nm), ' ') as hashTags
from hash_tag_link a
inner join hash_tag b on a.tag_key = b.tag_key
where a.affair_key = #{affairKey}
</select>
<select id="selectDocNo" resultType="string" parameterType="hashMap">
select count(*)+1 as cnt
from affair_board a
inner join affair_rating b
on a.affair_key = b.affair_key and a.wrt_organ = b.rating_organ and b.affair_status = 'DST006'
where wrt_organ = #{wrtOrgan}
and a.doc_no is not null
and EXTRACT(YEAR FROM report_dt) = #{year}::numeric
</select>
<sql id="searchStatistics">
<if test='userNm != null and userNm != ""'>
and wrt_user_nm like '%'||#{userNm}||'%'
</if>
<if test='startDate != null and startDate != ""'>
and wrt_dt >= #{startDate}::date
</if>
<if test='endDate != null and endDate != ""'>
and wrt_dt &lt;= #{endDate}::date+1
</if>
<if test='rating != null and rating != "" or sangbo != null and sangbo != ""'>
and ab.affair_key in (
select affair_key
from affair_rating ar2
inner join organ_config oc2
on ar2.rating_organ = oc2.organ_cd
<where>
<if test='rating != null and rating != ""'>
and ar2.affair_rate in
<foreach collection="rating" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if>
<if test='sangbo != null and sangbo != ""'>
and ar2.organ_up = 'T'
and oc2.organ_type in
<foreach collection="sangbo" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if>
</where>
)
</if>
</sql>
<sql id="statisticsCategory1">
<choose>
<when test='category1 != null and category1 != ""'>
and item_cd in
<foreach collection="category1" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</when>
<otherwise>
and item_cd not in (select item_cd from code_mgt where category_cd = 'DC01')
</otherwise>
</choose>
</sql>
<sql id="statisticsCategory2">
<choose>
<when test='category2 != null and category2 != ""'>
and item_cd in
<foreach collection="category2" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</when>
<otherwise>
and item_cd not in (select item_cd from code_mgt where category_cd = 'DC02')
</otherwise>
</choose>
</sql>
<sql id="statisticsCategory3">
<choose>
<when test='category3 != null and category3 != ""'>
and item_cd in
<foreach collection="category3" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</when>
<otherwise>
and item_cd not in (select item_cd from code_mgt where category_cd = 'DC03')
</otherwise>
</choose>
</sql>
<sql id="statisticsCategory4">
<choose>
<when test='category4 != null and category4 != ""'>
and item_cd in
<foreach collection="category4" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</when>
<otherwise>
and item_cd not in (select item_cd from code_mgt where category_cd = 'DC04')
</otherwise>
</choose>
</sql>
<select id="selectStatusTotal" resultType="TypeStatistics" parameterType="TypeStatistics">
select item_cd as wrt_organ,
item_value,
coalesce(cnt,0) as cnt
from(
select item_cd,
item_value
from code_mgt
where category_cd = 'OG'
and use_chk = 'T'
<choose>
<when test='organList != null and organList != ""'>
and item_cd in
<foreach collection="organList" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</when>
<otherwise>
and item_cd not in (select item_cd from code_mgt where category_cd = 'OG' and use_chk = 'T')
</otherwise>
</choose>
order by item_cd asc) a left outer join
(select wrt_organ,
count(*) as cnt
from affair_board ab,
affair_rating ar
where ab.affair_key = ar.affair_key
and (ar.organ_up != 'T' or ar.organ_up is null)
<if test='userNm != null and userNm != ""'>
and wrt_user_nm like '%'||#{userNm}||'%'
</if>
<if test='startDate != null and startDate != ""'>
and wrt_dt >= #{startDate}::date
</if>
<if test='endDate != null and endDate != ""'>
and wrt_dt &lt;= #{endDate}::date+1
</if>
<if test='rating != null and rating != "" or sangbo != null and sangbo != ""'>
and ab.affair_key in (
select affair_key
from affair_rating ar2
inner join organ_config oc2
on ar2.rating_organ = oc2.organ_cd
<where>
<if test='rating != null and rating != ""'>
and ar2.affair_rate in
<foreach collection="rating" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if>
<if test='sangbo != null and sangbo != ""'>
and ar2.organ_up = 'T'
and oc2.organ_type in
<foreach collection="sangbo" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if>
</where>
)
</if>
<if test='category1 != null and category1 != ""'>
and affair_type1 in
<foreach collection="category1" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if>
<if test='category2 != null and category2 != ""'>
and affair_type2 in
<foreach collection="category2" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if>
<if test='category3 != null and category3 != ""'>
and affair_type3 in
<foreach collection="category3" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if>
<if test='category4 != null and category4 != ""'>
and affair_type4 in
<foreach collection="category4" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if>
group by wrt_organ)b on
a.item_cd = b.wrt_organ
order by wrt_organ asc
</select>
<select id="selecType1ListCnt" resultType="TypeStatistics" parameterType="TypeStatistics">
select b.item_cd as wrt_organ ,
b.item_value,
a.item_cd as affair_type,
coalesce(cnt,0) as cnt
from
(select item_cd,
item_value
from code_mgt
where category_cd = 'DC01'
<include refid="statisticsCategory1"></include>
)a left join
(select item_cd,
item_value
from code_mgt
where category_cd = 'OG'
and use_chk = 'T'
<if test='organList != null and organList != ""'>
and item_cd in
<foreach collection="organList" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if>
order by item_cd asc) b on 1=1
left outer join
(select wrt_organ,
affair_type1 as affair_type,
count(*) as cnt
from affair_board ab,
affair_rating ar
where ab.affair_key = ar.affair_key
and (ar.organ_up != 'T' or ar.organ_up is null)
<include refid="searchStatistics"></include>
group by wrt_organ,affair_type1) c
on a.item_cd = c.affair_type and b.item_cd = c.wrt_organ
order by wrt_organ,affair_type asc
</select>
<select id="selecType2ListCnt" resultType="TypeStatistics" parameterType="TypeStatistics">
select b.item_cd as wrt_organ ,
b.item_value,
a.item_cd as affair_type,
coalesce(cnt,0) as cnt
from
(select item_cd,
item_value
from code_mgt
where category_cd = 'DC02'
<include refid="statisticsCategory2"></include>
)a left join
(select item_cd,
item_value
from code_mgt
where category_cd = 'OG'
and use_chk = 'T'
<if test='organList != null and organList != ""'>
and item_cd in
<foreach collection="organList" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if>
order by item_cd asc) b on 1=1
left outer join
(select wrt_organ,
affair_type2 as affair_type,
count(*) as cnt
from affair_board ab,
affair_rating ar
where ab.affair_key = ar.affair_key
and (ar.organ_up != 'T' or ar.organ_up is null)
<include refid="searchStatistics"></include>
group by wrt_organ,affair_type2) c
on a.item_cd = c.affair_type and b.item_cd = c.wrt_organ
order by wrt_organ,affair_type asc
</select>
<select id="selecType3ListCnt" resultType="TypeStatistics" parameterType="TypeStatistics">
select b.item_cd as wrt_organ ,
b.item_value,
a.item_cd as affair_type,
coalesce(cnt,0) as cnt
from
(select item_cd,
item_value
from code_mgt
where category_cd = 'DC03'
<include refid="statisticsCategory3"></include>
)a left join
(select item_cd,
item_value
from code_mgt
where category_cd = 'OG'
and use_chk = 'T'
<if test='organList != null and organList != ""'>
and item_cd in
<foreach collection="organList" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if>
order by item_cd asc) b on 1=1
left outer join
(select wrt_organ,
affair_type3 as affair_type,
count(*) as cnt
from affair_board ab,
affair_rating ar
where ab.affair_key = ar.affair_key
and (ar.organ_up != 'T' or ar.organ_up is null)
<include refid="searchStatistics"></include>
group by wrt_organ,affair_type3) c
on a.item_cd = c.affair_type and b.item_cd = c.wrt_organ
order by wrt_organ,affair_type asc
</select>
<select id="selecType4ListCnt" resultType="TypeStatistics" parameterType="TypeStatistics">
select b.item_cd as wrt_organ ,
b.item_value,
a.item_cd as affair_type,
coalesce(cnt,0) as cnt
from
(select item_cd,
item_value
from code_mgt
where category_cd = 'DC04'
<include refid="statisticsCategory4"></include>
)a left join
(select item_cd,
item_value
from code_mgt
where category_cd = 'OG'
and use_chk = 'T'
<if test='organList != null and organList != ""'>
and item_cd in
<foreach collection="organList" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if>
order by item_cd asc) b on 1=1
left outer join
(select wrt_organ,
affair_type4 as affair_type,
count(*) as cnt
from affair_board ab,
affair_rating ar
where ab.affair_key = ar.affair_key
and (ar.organ_up != 'T' or ar.organ_up is null)
<include refid="searchStatistics"></include>
group by wrt_organ,affair_type4) c
on a.item_cd = c.affair_type and b.item_cd = c.wrt_organ
order by wrt_organ,affair_type asc
</select>
<sql id="raitingSearch">
<if test='userNm != null and userNm != ""'>
and wrt_user_nm like '%'||#{userNm}||'%'
</if>
<if test='startDate != null and startDate != ""'>
and wrt_dt >= #{startDate}::date
</if>
<if test='endDate != null and endDate != ""'>
and wrt_dt &lt;= #{endDate}::date+1
</if>
<if test='rating != null and rating != "" or sangbo != null and sangbo != ""'>
and ab.affair_key in (
select affair_key
from affair_rating ar2
inner join organ_config oc2
on ar2.rating_organ = oc2.organ_cd
<where>
<if test='rating != null and rating != ""'>
and ar2.affair_rate in
<foreach collection="rating" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if>
<if test='sangbo != null and sangbo != ""'>
and ar2.organ_up = 'T'
and oc2.organ_type in
<foreach collection="sangbo" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if>
</where>
)
</if>
<if test='category1 != null and category1 != ""'>
and affair_type1 in
<foreach collection="category1" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if>
<if test='category2 != null and category2 != ""'>
and affair_type2 in
<foreach collection="category2" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if>
<if test='category3 != null and category3 != ""'>
and affair_type3 in
<foreach collection="category3" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if>
<if test='category4 != null and category4 != ""'>
and affair_type4 in
<foreach collection="category4" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if>
</sql>
<select id="selectRatingStatusTotal" resultType="TypeStatistics" parameterType="TypeStatistics">
select item_cd as wrt_organ,
item_value,
coalesce(cnt,0) as cnt
from
(select item_cd,
item_value
from code_mgt
where category_cd = 'OG'
and use_chk = 'T'
<choose>
<when test='organList != null and organList != ""'>
and item_cd in
<foreach collection="organList" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</when>
<otherwise>
and item_cd not in (select item_cd from code_mgt where category_cd = 'OG' and use_chk = 'T')
</otherwise>
</choose>
) a
left outer join
(select ab.wrt_organ,
count(*) as cnt
from affair_board ab,
affair_rating ar
where ab.affair_key = ar.affair_key
and (ar.organ_up != 'T' or ar.organ_up is null)
<include refid="raitingSearch"></include>
group by ab.wrt_organ) c
on a.item_cd = c.wrt_organ
order by item_cd asc
</select>
<select id="selectSangboTotal" resultType="TypeStatistics" parameterType="TypeStatistics">
select item_cd as wrt_organ,
item_value,
b.organ_type as affairType,
coalesce(cnt,0) as cnt
from
(select item_cd,
item_value
from code_mgt
where category_cd = 'OG'
and use_chk = 'T') a left join
(select organ_type
from organ_config
<where>
<choose>
<when test='sangbo != null and sangbo != ""'>
organ_type in
<foreach collection="sangbo" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</when>
<otherwise>
organ_type not in (select organ_type from organ_config)
</otherwise>
</choose>
</where>
group by organ_type) b on 1=1
left outer join
(select ab.wrt_organ,
oc.organ_type,
count(*) as cnt
from affair_board ab,
affair_rating ar,
organ_config oc
where ab.affair_key = ar.affair_key
and ar.rating_organ = oc.organ_cd
and (ar.organ_up != 'T' or ar.organ_up is null)
<include refid="raitingSearch"></include>
group by ab.wrt_organ,oc.organ_type) c
on a.item_cd = c.wrt_organ and b.organ_type = c.organ_type
order by item_cd, affairType asc
</select>
<select id="selectArrCntList" resultType="TypeStatistics" parameterType="TypeStatistics">
select a.item_cd as wrt_organ,
b.item_cd as affairType,
coalesce(cnt,0) as cnt
from
(select item_cd,
item_value
from code_mgt
where category_cd = 'OG'
and use_chk = 'T') a left join
(select item_cd
from code_mgt
where category_cd='AAR'
<choose>
<when test='rating != null and rating != ""'>
and item_cd in
<foreach collection="rating" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</when>
<otherwise>
and item_cd not in (select item_cd from code_mgt where category_cd='AAR')
</otherwise>
</choose>
) b on 1=1
left outer join
(select ab.wrt_organ,
ar.affair_rate,
count(*) as cnt
from affair_board ab,
affair_rating ar
where ab.affair_key = ar.affair_key
and (ar.organ_up != 'T' or ar.organ_up is null)
<include refid="raitingSearch"></include>
group by ab.wrt_organ,ar.affair_rate) c
on c.wrt_organ = a.item_cd and c.affair_rate = b.item_cd
order by wrt_organ,affairType asc
</select>
</mapper>