151 lines
5.0 KiB
XML
151 lines
5.0 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="io.company.localhost.mapper.NetprojctMapper">
|
|
|
|
<!-- 프로젝트 목록 조회 -->
|
|
<select id="selectProject" parameterType="map" resultType="io.company.localhost.common.dto.MapDto">
|
|
SELECT DISTINCT
|
|
p.*,
|
|
c.CMNCODNAM AS projctcolor,
|
|
(SELECT COUNT(*)
|
|
FROM promember pm2
|
|
WHERE pm2.PROJCTSEQ = p.PROJCTSEQ
|
|
AND pm2.PROJCTYON = '1') AS participant_count
|
|
FROM netprojct p
|
|
LEFT JOIN commoncod c ON p.PROJCTCOL = c.CMNCODVAL AND c.CMNCODYNP = '1'
|
|
LEFT JOIN promember pm ON p.PROJCTSEQ = pm.PROJCTSEQ
|
|
WHERE 1=1
|
|
<if test="searchKeyword != null and searchKeyword != ''">
|
|
AND (
|
|
p.PROJCTNAM LIKE CONCAT('%', #{searchKeyword}, '%')
|
|
OR EXISTS (
|
|
SELECT 1
|
|
FROM promember pm2
|
|
JOIN netmember m ON pm2.MEMBERSEQ = m.MEMBERSEQ
|
|
WHERE pm2.PROJCTSEQ = p.PROJCTSEQ
|
|
AND pm2.PROJCTYON = '1'
|
|
AND m.membernam LIKE CONCAT('%', #{searchKeyword}, '%')
|
|
)
|
|
OR p.PROJCTARR LIKE CONCAT('%', #{searchKeyword}, '%')
|
|
OR p.PROJCTDTL LIKE CONCAT('%', #{searchKeyword}, '%')
|
|
OR p.PROJCTZIP LIKE CONCAT('%', #{searchKeyword}, '%')
|
|
)
|
|
</if>
|
|
<if test="category != null and category != ''">
|
|
AND SUBSTRING(p.PROJCTSTR, 1, 4) = #{category}
|
|
</if>
|
|
<if test="excludeEnded != null and excludeEnded == 'true'">
|
|
AND (p.PROJCTEND IS NULL OR p.PROJCTEND > CURDATE())
|
|
</if>
|
|
ORDER BY p.PROJCTSTR DESC
|
|
</select>
|
|
|
|
|
|
|
|
<!-- 프로젝트 등록 -->
|
|
<insert id="insertProject" useGeneratedKeys="true" keyProperty="PROJCTSEQ">
|
|
INSERT INTO netprojct (
|
|
PROJCTNAM,
|
|
PROJCTCOL,
|
|
PROJCTSTR,
|
|
PROJCTEND,
|
|
PROJCTDES,
|
|
PROJCTARR,
|
|
PROJCTDTL,
|
|
PROJCTZIP,
|
|
PROJCTCDT,
|
|
PROJCTCMB
|
|
) VALUES (
|
|
#{projctNam},
|
|
#{projctCol},
|
|
#{projctStr},
|
|
#{projctEnd},
|
|
#{projctDes},
|
|
#{projctArr},
|
|
#{projctDtl},
|
|
#{projctZip},
|
|
#{projctCdt},
|
|
#{projctCmb}
|
|
)
|
|
</insert>
|
|
|
|
<!-- 프로젝트 수정 -->
|
|
<update id="updateProject">
|
|
UPDATE netprojct
|
|
SET PROJCTNAM = #{projctNam},
|
|
PROJCTCOL = #{projctCol},
|
|
PROJCTARR = #{projctArr},
|
|
PROJCTDTL = #{projctDtl},
|
|
PROJCTZIP = #{projctZip},
|
|
PROJCTSTR = #{projctStr},
|
|
PROJCTEND = #{projctEnd},
|
|
PROJCTDES = #{projctDes},
|
|
PROJCTUDT = #{projctUdt},
|
|
PROJCTUMB = #{projctUmb}
|
|
WHERE PROJCTSEQ = #{projctSeq}
|
|
</update>
|
|
|
|
<!-- 프로젝트 등록·수정자 조회 -->
|
|
<select id="selectProjectLog" parameterType="int" resultType="map">
|
|
SELECT logDate, logMessage
|
|
FROM (
|
|
SELECT
|
|
DATE_FORMAT(p.PROJCTCDT, '%Y-%m-%d %H:%i') AS logDate,
|
|
CONCAT('[', m.MEMBERNAM, '] 프로젝트 등록') AS logMessage
|
|
FROM netprojct p
|
|
JOIN netmember m ON p.PROJCTCMB = m.MEMBERSEQ
|
|
WHERE p.PROJCTSEQ = #{projctSeq}
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
DATE_FORMAT(p.PROJCTUDT, '%Y-%m-%d %H:%i') AS logDate,
|
|
CONCAT('[', m.MEMBERNAM, '] 프로젝트 수정') AS logMessage
|
|
FROM netprojct p
|
|
JOIN netmember m ON p.PROJCTUMB = m.MEMBERSEQ
|
|
WHERE p.PROJCTSEQ = #{projctSeq}
|
|
AND p.PROJCTUDT IS NOT NULL
|
|
) AS logs
|
|
ORDER BY logDate DESC;
|
|
</select>
|
|
|
|
<!-- 프로젝트 삭제 -->
|
|
<delete id="deleteProject" parameterType="int">
|
|
DELETE FROM netprojct WHERE PROJCTSEQ = #{projctSeq}
|
|
</delete>
|
|
|
|
<!-- 프로젝트 모든 사용자 참여기간 조회 -->
|
|
<select id="selectUserProjectPeriod" resultType="io.company.localhost.common.dto.MapDto">
|
|
SELECT
|
|
m.MEMBERSEQ,
|
|
m.MEMBERNAM,
|
|
p.PROJCTSEQ,
|
|
p.PROJCTNAM,
|
|
p.PROJCTSTR as projectStartDate,
|
|
p.PROJCTEND as projectEndDate,
|
|
(
|
|
SELECT MIN(c2.COMMUTDAY)
|
|
FROM commuters c2
|
|
WHERE c2.PROJCTSEQ = p.PROJCTSEQ
|
|
AND c2.MEMBERSEQ = m.MEMBERSEQ
|
|
) as userStartDate,
|
|
(
|
|
SELECT MAX(c2.COMMUTDAY)
|
|
FROM commuters c2
|
|
WHERE c2.PROJCTSEQ = p.PROJCTSEQ
|
|
AND c2.MEMBERSEQ = m.MEMBERSEQ
|
|
) as userEndDate
|
|
FROM
|
|
netprojct p
|
|
INNER JOIN
|
|
commuters c ON p.PROJCTSEQ = c.PROJCTSEQ
|
|
INNER JOIN
|
|
netmember m ON c.MEMBERSEQ = m.MEMBERSEQ
|
|
WHERE
|
|
p.PROJCTSEQ = #{projectSeq}
|
|
GROUP BY
|
|
m.MEMBERSEQ, p.PROJCTSEQ
|
|
</select>
|
|
|
|
</mapper>
|