feat: Implement web reservation functionality with new controllers, services, data access objects, mappers, and UI components.
This commit is contained in:
240
src/main/resources/mappers/ReservationMapper.xml
Normal file
240
src/main/resources/mappers/ReservationMapper.xml
Normal file
@@ -0,0 +1,240 @@
|
||||
<?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="Reservation">
|
||||
|
||||
<!-- 병원 휴일 조회 (달력 표출용) -->
|
||||
<select id="selectHospitalHolidayList" parameterType="hashmap" resultType="hashmap">
|
||||
SELECT 'hospitalHoliday' AS "dateType"
|
||||
, HOSPITAL_HOLIDAY_NAME AS "hospitalHolidayName"
|
||||
, DATE_FORMAT(LOC_DATE, '%Y-%m-%d') AS "locDate"
|
||||
FROM MU_HOSPITAL_HOLIDAY MH
|
||||
WHERE MH.USE_YN = 'Y'
|
||||
AND MH.MU_HOSPITAL_ID = (SELECT MU_HOSPITAL_ID FROM MU_HOSPITAL WHERE USE_YN='Y' AND CENTER_DIV_CD='DIET' LIMIT 1)
|
||||
AND (
|
||||
(MH.REPEAT_YN = 'Y')
|
||||
OR
|
||||
(MH.REPEAT_YN = 'N' AND DATE_FORMAT( MH.LOC_DATE, '%Y' ) >= DATE_FORMAT( CURDATE( ), '%Y' ))
|
||||
)
|
||||
UNION ALL
|
||||
(
|
||||
SELECT 'publicHoliday' AS "dateType"
|
||||
, MPH.PUBLIC_HOLIDAY_NAME AS "publicHolidayName"
|
||||
, DATE_FORMAT(MPH.LOC_DATE, '%Y-%m-%d') AS "locDate"
|
||||
FROM MU_PUBLIC_HOLIDAY MPH
|
||||
JOIN MU_HOSPITAL MH
|
||||
ON MH.MU_HOSPITAL_ID = (SELECT MU_HOSPITAL_ID FROM MU_HOSPITAL WHERE USE_YN='Y' AND CENTER_DIV_CD='DIET' LIMIT 1)
|
||||
AND MH.PUBLIC_HOLIDAY_USE_YN = 'Y'
|
||||
WHERE MPH.USE_YN = 'Y'
|
||||
AND DATE_FORMAT( MPH.LOC_DATE, '%Y' ) >= DATE_FORMAT( CURDATE( ), '%Y' )
|
||||
)
|
||||
UNION ALL
|
||||
(
|
||||
SELECT CASE WHEN OPEN_YN = 'Y' THEN 'hospitalScheduleOpen' ELSE 'hospitalSchedule' END AS "dateType"
|
||||
, CASE WHEN OPEN_YN = 'Y' THEN '운영' ELSE '휴무' END AS "hospitalHolidayName"
|
||||
, DATE_FORMAT(SCHEDULE_DATE, '%Y-%m-%d') AS "locDate"
|
||||
FROM MU_HOSPITAL_SCHEDULE
|
||||
WHERE MU_HOSPITAL_ID = (SELECT MU_HOSPITAL_ID FROM MU_HOSPITAL WHERE USE_YN='Y' AND CENTER_DIV_CD='DIET' LIMIT 1)
|
||||
AND USE_YN = 'Y'
|
||||
AND DATE_FORMAT( SCHEDULE_DATE, '%Y' ) >= DATE_FORMAT( CURDATE( ), '%Y' )
|
||||
)
|
||||
</select>
|
||||
|
||||
<!-- 특정 날짜 운영시간 조회 -->
|
||||
<select id="selectHospitalWorkTime" parameterType="hashmap" resultType="hashmap">
|
||||
SELECT MH.MU_HOSPITAL_ID AS "muHospitalId"
|
||||
,MH.HOSPITAL_NAME AS "hospitalName"
|
||||
,CASE
|
||||
WHEN MHS.MU_HOSPITAL_SCHEDULE_ID IS NOT NULL THEN MHS.OPEN_YN
|
||||
ELSE
|
||||
CASE DAYOFWEEK(#{searchDate})
|
||||
WHEN 2 THEN MH.MON_OPEN_YN
|
||||
WHEN 3 THEN MH.TUE_OPEN_YN
|
||||
WHEN 4 THEN MH.WED_OPEN_YN
|
||||
WHEN 5 THEN MH.THU_OPEN_YN
|
||||
WHEN 6 THEN MH.FRI_OPEN_YN
|
||||
WHEN 7 THEN MH.SAT_OPEN_YN
|
||||
WHEN 1 THEN MH.SUN_OPEN_YN
|
||||
END
|
||||
END AS "openYn"
|
||||
,CASE
|
||||
WHEN MHS.MU_HOSPITAL_SCHEDULE_ID IS NOT NULL AND MHS.OPEN_YN = 'Y' THEN 'N'
|
||||
WHEN MHS.MU_HOSPITAL_SCHEDULE_ID IS NOT NULL AND MHS.OPEN_YN = 'N' THEN 'Y'
|
||||
WHEN EXISTS (
|
||||
SELECT 1
|
||||
FROM MU_HOSPITAL_HOLIDAY HH
|
||||
WHERE HH.USE_YN = 'Y'
|
||||
AND HH.MU_HOSPITAL_ID = MH.MU_HOSPITAL_ID
|
||||
AND (
|
||||
(HH.REPEAT_YN = 'Y' AND DATE_FORMAT(HH.LOC_DATE, '%m-%d') = DATE_FORMAT(#{searchDate}, '%m-%d'))
|
||||
OR
|
||||
(HH.REPEAT_YN = 'N' AND HH.LOC_DATE = #{searchDate})
|
||||
)) OR
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM MU_PUBLIC_HOLIDAY MPH
|
||||
WHERE MPH.USE_YN = 'Y'
|
||||
AND MH.PUBLIC_HOLIDAY_USE_YN='Y'
|
||||
AND MPH.LOC_DATE = #{searchDate}
|
||||
)
|
||||
THEN 'Y'
|
||||
ELSE 'N'
|
||||
END AS "holidayYn"
|
||||
,CASE
|
||||
WHEN MHS.MU_HOSPITAL_SCHEDULE_ID IS NOT NULL THEN MHS.OPEN_START_TIME
|
||||
ELSE
|
||||
CASE DAYOFWEEK(#{searchDate})
|
||||
WHEN 2 THEN MH.MON_OPEN_START_TIME
|
||||
WHEN 3 THEN MH.TUE_OPEN_START_TIME
|
||||
WHEN 4 THEN MH.WED_OPEN_START_TIME
|
||||
WHEN 5 THEN MH.THU_OPEN_START_TIME
|
||||
WHEN 6 THEN MH.FRI_OPEN_START_TIME
|
||||
WHEN 7 THEN MH.SAT_OPEN_START_TIME
|
||||
WHEN 1 THEN MH.SUN_OPEN_START_TIME
|
||||
END
|
||||
END AS "openStartTime"
|
||||
,CASE
|
||||
WHEN MHS.MU_HOSPITAL_SCHEDULE_ID IS NOT NULL THEN MHS.OPEN_END_TIME
|
||||
ELSE
|
||||
CASE DAYOFWEEK(#{searchDate})
|
||||
WHEN 2 THEN MH.MON_OPEN_END_TIME
|
||||
WHEN 3 THEN MH.TUE_OPEN_END_TIME
|
||||
WHEN 4 THEN MH.WED_OPEN_END_TIME
|
||||
WHEN 5 THEN MH.THU_OPEN_END_TIME
|
||||
WHEN 6 THEN MH.FRI_OPEN_END_TIME
|
||||
WHEN 7 THEN MH.SAT_OPEN_END_TIME
|
||||
WHEN 1 THEN MH.SUN_OPEN_END_TIME
|
||||
END
|
||||
END AS "openEndTime"
|
||||
,CASE
|
||||
WHEN MHS.MU_HOSPITAL_SCHEDULE_ID IS NOT NULL THEN MHS.BREAK_START_TIME
|
||||
ELSE
|
||||
CASE DAYOFWEEK(#{searchDate})
|
||||
WHEN 2 THEN MH.MON_BREAK_START_TIME
|
||||
WHEN 3 THEN MH.TUE_BREAK_START_TIME
|
||||
WHEN 4 THEN MH.WED_BREAK_START_TIME
|
||||
WHEN 5 THEN MH.THU_BREAK_START_TIME
|
||||
WHEN 6 THEN MH.FRI_BREAK_START_TIME
|
||||
WHEN 7 THEN MH.SAT_BREAK_START_TIME
|
||||
WHEN 1 THEN MH.SUN_BREAK_START_TIME
|
||||
END
|
||||
END AS "breakStartTime"
|
||||
,CASE
|
||||
WHEN MHS.MU_HOSPITAL_SCHEDULE_ID IS NOT NULL THEN MHS.BREAK_END_TIME
|
||||
ELSE
|
||||
CASE DAYOFWEEK(#{searchDate})
|
||||
WHEN 2 THEN MH.MON_BREAK_END_TIME
|
||||
WHEN 3 THEN MH.TUE_BREAK_END_TIME
|
||||
WHEN 4 THEN MH.WED_BREAK_END_TIME
|
||||
WHEN 5 THEN MH.THU_BREAK_END_TIME
|
||||
WHEN 6 THEN MH.FRI_BREAK_END_TIME
|
||||
WHEN 7 THEN MH.SAT_BREAK_END_TIME
|
||||
WHEN 1 THEN MH.SUN_BREAK_END_TIME
|
||||
END
|
||||
END AS "breakEndTime"
|
||||
,MH.PUBLIC_HOLIDAY_USE_YN AS "publicHolidayUseYn"
|
||||
FROM MU_HOSPITAL AS MH
|
||||
LEFT JOIN MU_HOSPITAL_SCHEDULE MHS
|
||||
ON MH.MU_HOSPITAL_ID = MHS.MU_HOSPITAL_ID
|
||||
AND MHS.SCHEDULE_DATE = #{searchDate}
|
||||
AND MHS.USE_YN = 'Y'
|
||||
WHERE MH.USE_YN = 'Y'
|
||||
AND MH.CENTER_DIV_CD = 'DIET'
|
||||
LIMIT 0, 1
|
||||
</select>
|
||||
|
||||
<!-- 예약 카운트 조회 -->
|
||||
<select id="selectReservationCnt" resultType="hashmap" parameterType="hashmap">
|
||||
SELECT COUNT(*) AS RES_CNT
|
||||
FROM MU_RESERVE
|
||||
WHERE RESERVE_DATE = #{SELECTED_DATE}
|
||||
AND RESERVE_TIME = #{TIME}
|
||||
</select>
|
||||
|
||||
<!-- 예약 시술 정보 조회 -->
|
||||
<select id="selectReservationService" resultType="hashmap" parameterType="hashmap">
|
||||
SELECT A.TREATMENT_PROCEDURE_NAME, (B.PRICE + B.VAT) AS PRICE, B.VAT, B.DISCOUNT_PRICE, C.MU_TREATMENT_ID, C.TREATMENT_NAME, B.MU_TREATMENT_PROCEDURE_ID
|
||||
FROM MU_TREATMENT_PROCEDURE A
|
||||
LEFT OUTER JOIN MU_TREATMENT_PROCEDURE_PRICE B ON A.MU_TREATMENT_PROCEDURE_ID = B.MU_TREATMENT_PROCEDURE_ID AND B.USE_YN = 'Y'
|
||||
LEFT OUTER JOIN MU_TREATMENT C ON A.MU_TREATMENT_ID = C.MU_TREATMENT_ID
|
||||
WHERE A.MU_TREATMENT_PROCEDURE_ID = #{PROCEDURE_ID}
|
||||
</select>
|
||||
|
||||
<!-- 시술 상세 조회 (CRM 연동용) -->
|
||||
<select id="selectServiceDetail" resultType="hashmap" parameterType="hashmap">
|
||||
SELECT A.CATEGORY_DIV_CD
|
||||
, A.CATEGORY_NO
|
||||
, A.POST_NO
|
||||
, C.CATEGORY_NM
|
||||
, A.TITLE
|
||||
, A.CONTENT
|
||||
, A.THUMBNAIL_BOTTOM_TXT
|
||||
, A.HASHTAG
|
||||
, A.OLD_CRM_ITEM_ID as oldCrmItemId
|
||||
, D.FILE_PATH AS THUMBNAIL_PATH
|
||||
, E.FILE_PATH AS CONTENTS_PATH
|
||||
, (SELECT MIN(PRICE + VAT) FROM MU_TREATMENT_PROCEDURE_PRICE C
|
||||
LEFT OUTER JOIN HP_CONTENTS_BBS_PROCEDURE B ON A.POST_NO = B.POST_NO AND A.CATEGORY_DIV_CD = B.CATEGORY_DIV_CD AND A.CATEGORY_NO = B.CATEGORY_NO AND B.USE_YN = 'Y'
|
||||
WHERE B.MU_TREATMENT_PROCEDURE_ID = C.MU_TREATMENT_PROCEDURE_ID AND C.USE_YN = 'Y') AS PRICE
|
||||
, (SELECT MIN(DISCOUNT_PRICE) FROM MU_TREATMENT_PROCEDURE_PRICE C
|
||||
LEFT OUTER JOIN HP_CONTENTS_BBS_PROCEDURE B ON A.POST_NO = B.POST_NO AND A.CATEGORY_DIV_CD = B.CATEGORY_DIV_CD AND A.CATEGORY_NO = B.CATEGORY_NO AND B.USE_YN = 'Y'
|
||||
WHERE B.MU_TREATMENT_PROCEDURE_ID = C.MU_TREATMENT_PROCEDURE_ID AND C.USE_YN = 'Y') AS DISCOUNT_PRICE
|
||||
FROM HP_CONTENTS_BBS A
|
||||
LEFT OUTER JOIN HP_CATEGORY C ON A.CATEGORY_NO = C.CATEGORY_NO AND A.CATEGORY_DIV_CD = C.CATEGORY_DIV_CD
|
||||
LEFT OUTER JOIN HP_ATTACH_FILE D ON A.THUMBNAIL_ATTACHFILE_ID = D.ATTACHFILE_ID
|
||||
LEFT OUTER JOIN HP_ATTACH_FILE E ON A.CONTENTS_ATTACHFILE_ID = E.ATTACHFILE_ID
|
||||
WHERE A.USE_YN = 'Y'
|
||||
AND A.CATEGORY_DIV_CD = #{CATEGORY_DIV_CD}
|
||||
AND A.CATEGORY_NO = #{CATEGORY_NO}
|
||||
AND A.POST_NO = #{POST_NO}
|
||||
</select>
|
||||
|
||||
<!-- 예약 저장 -->
|
||||
<insert id="insertReservation" parameterType="hashmap">
|
||||
<selectKey resultType="string" keyProperty="id" order="BEFORE">
|
||||
SELECT CONCAT(#{muReserveId},LPAD((SELECT NEXTVAL(MU_RESERVE_SEQ)), 11, 0))
|
||||
</selectKey>
|
||||
INSERT INTO MU_RESERVE(
|
||||
MU_RESERVE_ID
|
||||
,USER_NAME
|
||||
,PHONE_NUMBER
|
||||
,RESERVE_DATE
|
||||
,RESERVE_TIME
|
||||
,MU_TREATMENT_ID
|
||||
,TREATMENT_NAME
|
||||
,MU_TREATMENT_PROCEDURE_ID
|
||||
,TREATMENT_PROCEDURE_NAME
|
||||
,ETC
|
||||
,STATUS
|
||||
,STATUS2
|
||||
,WRITE_DATE
|
||||
,WRITE_TIME
|
||||
,CUD_FLAG
|
||||
,USE_YN
|
||||
,REG_ID
|
||||
,REG_DATE
|
||||
,MOD_ID
|
||||
,MOD_DATE
|
||||
)VALUES(
|
||||
#{id}
|
||||
,#{NAME}
|
||||
,#{PHONE_NUMBER}
|
||||
,#{SELECTED_DATE}
|
||||
,#{TIME}
|
||||
,#{P_TREATMENT_ID}
|
||||
,#{P_TREATMENT_NM}
|
||||
,#{P_PROCEDURE_ID}
|
||||
,#{P_PROCEDURE_NM}
|
||||
,#{ETC,jdbcType=VARCHAR}
|
||||
,'T'
|
||||
,'N'
|
||||
,CURDATE()
|
||||
,CURTIME()
|
||||
,'C'
|
||||
,'Y'
|
||||
,'customer'
|
||||
,NOW()
|
||||
,'customer'
|
||||
,NOW()
|
||||
)
|
||||
</insert>
|
||||
</mapper>
|
||||
@@ -69,71 +69,5 @@
|
||||
AND A.CATEGORY_NO = #{CATEGORY_NO}
|
||||
AND A.POST_NO = #{POST_NO}
|
||||
</select>
|
||||
|
||||
<!-- 예약 조회 -->
|
||||
<select id="selectReservationCnt" resultType="hashmap" parameterType="hashmap">
|
||||
SELECT COUNT(*) AS RES_CNT
|
||||
FROM MU_RESERVE
|
||||
WHERE RESERVE_DATE = #{SELECTED_DATE}
|
||||
AND RESERVE_TIME = #{TIME}
|
||||
</select>
|
||||
|
||||
<!-- 시술 목록 조회 -->
|
||||
<select id="selectReservationService" resultType="hashmap" parameterType="hashmap">
|
||||
SELECT A.TREATMENT_PROCEDURE_NAME, (B.PRICE + B.VAT) AS PRICE, B.VAT, B.DISCOUNT_PRICE, C.MU_TREATMENT_ID, C.TREATMENT_NAME, B.MU_TREATMENT_PROCEDURE_ID
|
||||
FROM MU_TREATMENT_PROCEDURE A
|
||||
LEFT OUTER JOIN MU_TREATMENT_PROCEDURE_PRICE B ON A.MU_TREATMENT_PROCEDURE_ID = B.MU_TREATMENT_PROCEDURE_ID AND B.USE_YN = 'Y'
|
||||
LEFT OUTER JOIN MU_TREATMENT C ON A.MU_TREATMENT_ID = C.MU_TREATMENT_ID
|
||||
WHERE A.MU_TREATMENT_PROCEDURE_ID = #{PROCEDURE_ID}
|
||||
</select>
|
||||
|
||||
<!-- 예약 저장 -->
|
||||
<insert id="insertReservation" parameterType="hashmap">
|
||||
<selectKey resultType="string" keyProperty="id" order="BEFORE">
|
||||
SELECT CONCAT(#{muReserveId},LPAD((SELECT NEXTVAL(MU_RESERVE_SEQ)), 11, 0))
|
||||
</selectKey>
|
||||
INSERT INTO MU_RESERVE(
|
||||
MU_RESERVE_ID
|
||||
,USER_NAME
|
||||
,PHONE_NUMBER
|
||||
,RESERVE_DATE
|
||||
,RESERVE_TIME
|
||||
,MU_TREATMENT_ID
|
||||
,TREATMENT_NAME
|
||||
,MU_TREATMENT_PROCEDURE_ID
|
||||
,TREATMENT_PROCEDURE_NAME
|
||||
,ETC
|
||||
,STATUS
|
||||
,STATUS2
|
||||
,WRITE_DATE
|
||||
,WRITE_TIME
|
||||
,CUD_FLAG
|
||||
,USE_YN
|
||||
,REG_ID
|
||||
,REG_DATE
|
||||
,MOD_ID
|
||||
,MOD_DATE
|
||||
)VALUES(
|
||||
#{id}
|
||||
,#{NAME}
|
||||
,#{PHONE_NUMBER}
|
||||
,#{SELECTED_DATE}
|
||||
,#{TIME}
|
||||
,#{P_TREATMENT_ID}
|
||||
,#{P_TREATMENT_NM}
|
||||
,#{P_PROCEDURE_ID}
|
||||
,#{P_PROCEDURE_NM}
|
||||
,#{ETC,jdbcType=VARCHAR}
|
||||
,'T'
|
||||
,'N'
|
||||
,CURDATE()
|
||||
,CURTIME()
|
||||
,'C'
|
||||
,'Y'
|
||||
,'customer'
|
||||
,NOW()
|
||||
,'customer'
|
||||
,NOW()
|
||||
)
|
||||
</insert>
|
||||
</mapper>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user