itsm_ysm/bin/main/mapper/primarydb/sqlmap/itms/srm/HomeMapper.xml
2025-08-11 18:00:07 +09:00

253 lines
10 KiB
XML

<?xml version="1.0" encoding="UTF-8"?><!--Converted at: Wed May 11 15:49:39 KST 2016-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.urpsys.itmsapi.srm.dao.HomeDao">
<resultMap type="java.util.LinkedHashMap" id="incident">
<result property="inIncidentSeq" column="IN_INCIDENT_SEQ"/>
<result property="vcIncidentNum" column="VC_INCIDENT_NUM"/>
<result property="inServiceCode" column="IN_SERVICE_CODE"/>
<result property="vcServiceName" column="VC_SERVICE_NAME"/>
<result property="inChargeUser" column="IN_CHARGE_USER"/>
<result property="vcChargeUser" column="VC_CHARGE_USER"/>
<result property="dtReceiptDatetime" column="DT_RECEIPT_DATETIME"/>
<result property="dtReqDatetime" column="DT_REQ_DATETIME"/>
<result property="dtCompleteDatetime" column="DT_COMPLETE_DATETIME"/>
<result property="vcIncidentTitle" column="VC_INCIDENT_TITLE"/>
<result property="txIncidentBody" column="TX_INCIDENT_BODY"/>
<result property="vcIncidentStatus" column="VC_INCIDENT_STATUS"/>
<result property="inRegUser" column="IN_REG_USER"/>
<result property="vcRegUser" column="VC_REG_USER"/>
</resultMap>
<resultMap type="java.util.LinkedHashMap" id="reportVo">
<result property="inReportSeq" column="IN_REPORT_SEQ"/>
<result property="inReportStatus" column="IN_REPORT_STATUS"/>
<result property="vcReportId" column="VC_REPORT_ID"/>
<result property="inIncidentSeq" column="IN_INCIDENT_SEQ"/>
<result property="inServiceCode" column="IN_SERVICE_CODE"/>
<result property="vcServiceName" column="VC_SERVICE_NAME"/>
<result property="dtStartDatetime" column="DT_START_DATETIME"/>
<result property="dtFinishDatetime" column="DT_FINISH_DATETIME"/>
<result property="inTaskUser" column="IN_TASK_USER"/>
<result property="vcTaskUser" column="VC_TASK_USER"/>
<result property="inRegUser" column="IN_REG_USER"/>
<result property="vcRegUser" column="VC_REG_USER"/>
<result property="dtLastUpdate" column="DT_LAST_UPDATE"/>
<result property="inTask" column="IN_TASK"/>
<result property="inDowntime" column="IN_DOWNTIME"/>
<result property="dtDownstartDatetime" column="DT_DOWNSTART_DATETIME"/>
<result property="dtDownfinishDatetime" column="DT_DOWNFINISH_DATETIME"/>
<result property="vcReportTitle" column="VC_REPORT_TITLE"/>
<result property="vcReportStatus" column="VC_REPORT_STATUS"/>
<result property="txReportBody" column="TX_REPORT_BODY"/>
<result property="vcTask" column="VC_TASK"/>
</resultMap>
<resultMap type="java.util.LinkedHashMap" id="todoVo">
<result property="inSeq" column="IN_SEQ"/>
<result property="inType" column="IN_TYPE"/>
<result property="vcType" column="VC_TYPE"/>
<result property="vcTitle" column="VC_TITLE"/>
<result property="vcRegUser" column="VC_REG_USER"/>
<result property="dtRegDatetime" column="DT_REG_DATETIME"/>
<result property="inTask" column="IN_TASK" />
</resultMap>
<!-- 엔지니어 권한 사용자가 보고서 검색시 본인 회사 소속인 작성글만 조회되도록. inPrivTemplateSeq 는 사이트마다 다를 수 있음. 신정원요구사항-->
<sql id="customizing">
<if test="customizing == 'kcredit' and inPrivTemplateSeq == 5">
AND (
A.IN_REG_USER IN (SELECT IN_USER_SEQ
FROM CM_USER
WHERE IN_COMPANY_SEQ=${reqUserCompany})
)
</if>
</sql>
<select id="getMyUserGroups" parameterType="String" resultType="java.lang.String">
SELECT IN_USER_GROUP_SEQ
FROM CM_USER_GROUP_MAP
WHERE IN_USER_SEQ=#{value}
</select>
<select id="getMyIncidents" parameterType="java.util.LinkedHashMap" resultMap="incident">
<![CDATA[
SELECT A.IN_INCIDENT_SEQ
, A.VC_INCIDENT_NUM
, A.IN_SERVICE_CODE
, A.IN_CHARGE_USER
, A.VC_CHARGE_USER
, DATE_FORMAT(A.DT_RECEIPT_DATETIME, '%Y-%m-%d %H:%i') AS DT_RECEIPT_DATETIME
, DATE_FORMAT(A.DT_REQ_DATETIME, '%Y-%m-%d %H:%i') AS DT_REQ_DATETIME
, IFNULL(A.DT_COMPLETE_DATETIME, "") AS DT_COMPLETE_DATETIME
, A.VC_INCIDENT_TITLE
, '' AS TX_INCIDENT_BODY
, A.IN_REG_USER
, A.VC_REG_USER
, IF(IN_INCIDENT_STATUS=0 , IF(UNIX_TIMESTAMP(DT_REQ_DATETIME) > UNIX_TIMESTAMP() , "접수", "지연")
, IF(IN_INCIDENT_STATUS=1, "승인요청"
, IF(IN_INCIDENT_STATUS=2, "반려"
, "완료"))) AS VC_INCIDENT_STATUS
, B.VC_SERVICE_NAME
FROM CM_INCIDENT A
, CM_SERVICE B
WHERE 1=1
AND A.IN_SERVICE_CODE=B.IN_SERVICE_CODE
]]>
<if test="inUserSeq != 'USRCNFRM_00000000000'">
<if test="groups != null">
AND (
A.IN_INCIDENT_SEQ IN ( SELECT IN_TARGET_SEQ
FROM CM_SHARING_MEMBER
WHERE IN_TYPE=2 AND IN_USER_GROUP_SEQ IN (#{groups}) )
OR A.IN_INCIDENT_SEQ NOT IN (SELECT IN_TARGET_SEQ FROM CM_SHARING_MEMBER WHERE IN_TYPE=2)
)
</if>
</if>
<!-- 현재월에 등록된 건 전부 + 현재월 기준 미완료 건(현재월보다 미래 등로된 건 제외.). -->
<![CDATA[
AND (
( A.IN_INCIDENT_STATUS < 3
AND UNIX_TIMESTAMP(DT_RECEIPT_DATETIME) <= UNIX_TIMESTAMP(CONCAT(LAST_DAY("${ym}-01"), " 23:59:59")) AND IN_COMPLETED=0)
OR (DT_RECEIPT_DATETIME LIKE "${ym}%")
)
]]>
AND
(IN_INCIDENT_STATUS=0 OR IN_INCIDENT_STATUS=1)
ORDER BY A.IN_RECEIPT_TIMESTAMP DESC
</select>
<select id="getMyReports" parameterType="java.lang.String" resultMap="reportVo">
<![CDATA[
SELECT A.IN_REPORT_SEQ
, A.IN_REPORT_STATUS
, A.VC_REPORT_ID
, A.IN_INCIDENT_SEQ
, DATE_FORMAT(A.DT_START_DATETIME, '%Y-%m-%d %H:%i') AS DT_START_DATETIME
, DATE_FORMAT(A.DT_FINISH_DATETIME, '%Y-%m-%d %H:%i') AS DT_FINISH_DATETIME
, A.IN_TASK_USER
, A.VC_TASK_USER
, A.IN_REG_USER
, A.VC_REG_USER
, A.DT_LAST_UPDATE
, A.IN_TASK
, A.IN_DOWNTIME
, A.VC_REPORT_TITLE
, DATE_FORMAT(A.DT_DOWNSTART_DATETIME, '%Y-%m-%d %H:%i') AS DT_DOWNSTART_DATETIME
, DATE_FORMAT(A.DT_DOWNFINISH_DATETIME, '%Y-%m-%d %H:%i') AS DT_DOWNFINISH_DATETIME
, A.IN_SERVICE_CODE
, '' AS TX_REPORT_BODY
, B.CD_NM AS VC_TASK
, D.VC_SERVICE_NAME
, IF(A.IN_REPORT_STATUS=3, "완료", IF(A.IN_REPORT_STATUS=2, "반려"
, IF(A.IN_REPORT_STATUS=1, "승인요청"
, "접수"))) AS VC_REPORT_STATUS
FROM CM_REPORT A
LEFT OUTER JOIN TB_CMM_DTL_CD_INFO B ON A.IN_TASK=B.CD
AND B.CD_ID ='SM_002'
LEFT OUTER JOIN CM_SERVICE D ON A.IN_SERVICE_CODE=D.IN_SERVICE_CODE
WHERE 1=1
]]>
<include refid="customizing"/>
<if test="inUserSeq != 'USRCNFRM_00000000000'">
<if test="groups != null ">
AND (
A.IN_REPORT_SEQ IN ( SELECT IN_TARGET_SEQ
FROM CM_SHARING_MEMBER
WHERE IN_TYPE=1 AND IN_USER_GROUP_SEQ IN (${groups}) )
OR A.IN_REPORT_SEQ NOT IN (SELECT IN_TARGET_SEQ FROM CM_SHARING_MEMBER WHERE IN_TYPE=1)
)
</if>
</if>
<!-- 현재월에 등록된 건 전부 + 현재월 기준 미완료 건(현재월보다 미래 등로된 건 제외.). -->
<![CDATA[
AND (
( A.IN_REPORT_STATUS<2
AND UNIX_TIMESTAMP(A.DT_LAST_UPDATE) <= UNIX_TIMESTAMP(CONCAT(LAST_DAY("${ym}-01"), " 23:59:59")))
OR
(A.DT_LAST_UPDATE LIKE "${ym}%" )
)
]]>
AND
(IN_REPORT_STATUS=0 OR IN_REPORT_STATUS=1)
ORDER BY A.IN_REPORT_SEQ DESC
</select>
<select id="getMyTodo" parameterType="java.util.LinkedHashMap" resultMap="todoVo">
<![CDATA[
/* HomeDao.getMyTodo */
SELECT A.IN_TYPE
, A.VC_TYPE
, A.VC_TITLE
, A.VC_REG_USER
, A.DT_REG_DATETIME
, A.IN_SEQ
, A.IN_TASK
FROM (
SELECT IN_REPORT_SEQ AS IN_SEQ
, 1 AS IN_TYPE
, "보고서" AS VC_TYPE
, VC_REPORT_TITLE AS VC_TITLE
, VC_REG_USER
, DATE_FORMAT(DT_LAST_UPDATE, '%Y-%m-%d %H:%i') AS DT_REG_DATETIME
, IN_TASK AS IN_TASK
FROM CM_REPORT
WHERE IN_REPORT_STATUS < 2 AND IN_TASK_USER=#{inUserSeq}
UNION
SELECT IN_INCIDENT_SEQ AS IN_SEQ
, 2 AS IN_TYPE
, "서비스데스크" AS VC_TYPE
, VC_INCIDENT_TITLE AS VC_TITLE
, VC_REG_USER
, DATE_FORMAT(DT_RECEIPT_DATETIME, '%Y-%m-%d %H:%i') AS DT_REG_DATETIME
, '' AS IN_TASK
FROM CM_INCIDENT
WHERE IN_COMPLETED=0
AND (IN_REG_USER=#{inUserSeq} OR IN_DEV_USER=#{inUserSeq})
UNION
SELECT A.IN_REPORT_SEQ AS IN_SEQ
, 1 AS IN_TYPE
, "결재요청" AS VC_TYPE
, B.VC_REPORT_TITLE AS VC_TITLE
, B.VC_REQ_APPROVAL_USER AS VC_REG_USER
, DATE_FORMAT(B.DT_REQ_APPROVAL_DATETIME, '%Y-%m-%d %H:%i') AS DT_REG_DATETIME
, IN_TASK AS IN_TASK
FROM CM_REPORT_APPROVAL A
, CM_REPORT B
WHERE A.IN_REPORT_SEQ=B.IN_REPORT_SEQ
AND A.IN_USER_SEQ=#{inUserSeq}
AND A.IN_STATUS=1
UNION
SELECT A.IN_INCIDENT_SEQ AS IN_SEQ
, 2 AS IN_TYPE, "결재요청" AS VC_TYPE
, B.VC_INCIDENT_TITLE AS VC_TITLE
, B.VC_REQ_APPROVAL_USER AS VC_REG_USER
, DATE_FORMAT(B.DT_REQ_APPROVAL_DATETIME, '%Y-%m-%d %H:%i') AS DT_REG_DATETIME
, '' AS IN_TASK
FROM CM_INCIDENT_APPROVAL A
, CM_INCIDENT B
WHERE A.IN_INCIDENT_SEQ=B.IN_INCIDENT_SEQ
AND A.IN_USER_SEQ=#{inUserSeq}
AND A.IN_STATUS=1
) A
ORDER BY A.DT_REG_DATETIME
]]>
</select>
</mapper>