2023-11-14 18:06 청소년 강사 자동 배정 수정
This commit is contained in:
parent
09ca87f3f7
commit
eca1f9b6bf
@ -640,39 +640,59 @@ public class CommonWebController {
|
|||||||
System.out.println(s_addr);
|
System.out.println(s_addr);
|
||||||
|
|
||||||
|
|
||||||
//필수 조건
|
//파라미터
|
||||||
//step2-1.가능 강사중 월별 시수이상을 받지 않은자 & 해당 요일에 수업 가능한 강사 리스트(필)
|
VEAutoAsgnmVO vEAutoAsgnmVO = null;
|
||||||
VEAutoAsgnmVO vEAutoAsgnmVO = new VEAutoAsgnmVO();
|
|
||||||
vEAutoAsgnmVO.setEduHopeMnt(s_eduHopeDt.substring(5,7));
|
|
||||||
vEAutoAsgnmVO.setYr(s_eduHopeDt.substring(0,4));
|
|
||||||
vEAutoAsgnmVO.setInstrDiv("10"); //10-청소년, 20-성인
|
|
||||||
vEAutoAsgnmVO.setEduChasiOrd(tChasiInfo.getEduChasiOrd());
|
|
||||||
List<VEAutoAsgnmVO> vEInstrAssiEduAplctVOList = vEAutoAsgnmMIXService.selectInstrMntAsgnmtChasiList(vEAutoAsgnmVO);
|
|
||||||
|
|
||||||
//step2-2.희망 지역 강사 검색(필)
|
|
||||||
String s_user_id = "'aaa'";
|
String s_user_id = "'aaa'";
|
||||||
for (int j=0;j<vEInstrAssiEduAplctVOList.size();j++) {
|
|
||||||
s_user_id = s_user_id + ",'" + vEInstrAssiEduAplctVOList.get(j).getUserId()+"'";
|
//대상 강사 리스트
|
||||||
|
List<VEAutoAsgnmVO> vEInstrAssiEduAplctVOList = null;
|
||||||
|
|
||||||
|
//필수 조건(월별시수제한, 요일, 희망지역)
|
||||||
|
{
|
||||||
|
//step2-1.가능 강사중 월별 시수이상을 받지 않은자 & 해당 요일에 수업 가능한 강사 리스트(필)
|
||||||
|
vEAutoAsgnmVO = new VEAutoAsgnmVO();
|
||||||
|
vEAutoAsgnmVO.setEduHopeMnt(s_eduHopeDt.substring(5,7));
|
||||||
|
vEAutoAsgnmVO.setYr(s_eduHopeDt.substring(0,4));
|
||||||
|
vEAutoAsgnmVO.setInstrDiv("10"); //10-청소년, 20-성인
|
||||||
|
vEAutoAsgnmVO.setEduChasiOrd(tChasiInfo.getEduChasiOrd());
|
||||||
|
|
||||||
|
vEInstrAssiEduAplctVOList = vEAutoAsgnmMIXService.selectInstrMntAsgnmtChasiList(vEAutoAsgnmVO);
|
||||||
|
|
||||||
|
//step2-2.희망 지역 강사 검색(필)
|
||||||
|
|
||||||
|
for (int j=0;j<vEInstrAssiEduAplctVOList.size();j++) {
|
||||||
|
s_user_id = s_user_id + ",'" + vEInstrAssiEduAplctVOList.get(j).getUserId()+"'";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!"'aaa'".equals(s_user_id)) { //대상 강사가 있을때만 다음을 실행한다.
|
||||||
|
vEAutoAsgnmVO.setUserIds(s_user_id);
|
||||||
|
vEInstrAssiEduAplctVOList = vEAutoAsgnmMIXService.selectInstrHopeAreaList(vEAutoAsgnmVO);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
vEAutoAsgnmVO.setUserIds(s_user_id);
|
|
||||||
vEInstrAssiEduAplctVOList = vEAutoAsgnmMIXService.selectInstrHopeAreaList(vEAutoAsgnmVO);
|
|
||||||
|
|
||||||
//step2-3.연강가능강사검색(선택)
|
|
||||||
//step2-4.패널티 없는 강사 검색(선택)
|
|
||||||
|
|
||||||
//우선순위
|
|
||||||
//step3-1.월별시수대비할당이적은자 우선(필)
|
|
||||||
s_user_id = "'aaa'";
|
|
||||||
for (int j=0;j<vEInstrAssiEduAplctVOList.size();j++) {
|
|
||||||
s_user_id = s_user_id + ",'" + vEInstrAssiEduAplctVOList.get(j).getUserId()+"'";
|
|
||||||
}
|
|
||||||
vEAutoAsgnmVO.setUserIds(s_user_id);
|
|
||||||
vEInstrAssiEduAplctVOList = vEAutoAsgnmMIXService.selectInstrPriorityList(vEAutoAsgnmVO);
|
|
||||||
|
|
||||||
//step3-2.거주기 강사 우선=>거주지별 배정 비율 필터(선택)
|
|
||||||
|
|
||||||
|
|
||||||
//강사배정
|
//우선순위
|
||||||
|
{
|
||||||
|
//step3-1.거주지 강사 우선(월별배정 비율 적용)
|
||||||
|
//step3-2.연강가능여부(같은날 연강은 연강강사가 우선 배정)
|
||||||
|
//step3-3.패널티(패널티 없는 사람이 우선순위 높게)
|
||||||
|
|
||||||
|
//step3-4.월별시수대비할당이적은자 우선(필)
|
||||||
|
s_user_id = "'aaa'";
|
||||||
|
for (int j=0;j<vEInstrAssiEduAplctVOList.size();j++) {
|
||||||
|
s_user_id = s_user_id + ",'" + vEInstrAssiEduAplctVOList.get(j).getUserId()+"'";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!"'aaa'".equals(s_user_id)) { //대상 강사가 있을때만 다음을 실행한다.
|
||||||
|
vEAutoAsgnmVO.setUserIds(s_user_id);
|
||||||
|
vEInstrAssiEduAplctVOList = vEAutoAsgnmMIXService.selectInstrPriorityList(vEAutoAsgnmVO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//강사배정-대상 강사가 있어야 강사를 할당한다.
|
||||||
if (vEInstrAssiEduAplctVOList.size()>0) {
|
if (vEInstrAssiEduAplctVOList.size()>0) {
|
||||||
VEInstrAsgnmVO p_vEInstrAsgnmVO = new VEInstrAsgnmVO();
|
VEInstrAsgnmVO p_vEInstrAsgnmVO = new VEInstrAsgnmVO();
|
||||||
p_vEInstrAsgnmVO.setEduAplctOrd(tChasiInfo.getEduAplctOrd());
|
p_vEInstrAsgnmVO.setEduAplctOrd(tChasiInfo.getEduAplctOrd());
|
||||||
|
|||||||
@ -575,12 +575,15 @@
|
|||||||
/* VEAutoAsgnmDAO.selectInstrPriorityList */
|
/* VEAutoAsgnmDAO.selectInstrPriorityList */
|
||||||
|
|
||||||
SELECT
|
SELECT
|
||||||
aaa.userId
|
aaa.user_id AS userId
|
||||||
, aaa.instrSumChasi
|
, aaa.instrSumChasi
|
||||||
, aaa.asgnmTm
|
, aaa.asgnmTm
|
||||||
, rownum
|
, rownum
|
||||||
FROM (
|
FROM (
|
||||||
SELECT bb.*
|
SELECT
|
||||||
|
aa.user_id
|
||||||
|
, bb.userId
|
||||||
|
, bb.instrSumChasi
|
||||||
|
|
||||||
, NVL(
|
, NVL(
|
||||||
CASE
|
CASE
|
||||||
@ -603,7 +606,8 @@
|
|||||||
AS asgnmTm
|
AS asgnmTm
|
||||||
|
|
||||||
FROM vea_instr_indvd_mnt_tm aa
|
FROM vea_instr_indvd_mnt_tm aa
|
||||||
,(
|
LEFT OUTER JOIN
|
||||||
|
(
|
||||||
/* 강사에게 교육이 할당(확정, 반려, 요청전, 요첮우 모두 포함)된 차시수 */
|
/* 강사에게 교육이 할당(확정, 반려, 요청전, 요첮우 모두 포함)된 차시수 */
|
||||||
SELECT d.user_id AS userId,
|
SELECT d.user_id AS userId,
|
||||||
SUM(NVL(b.chasi, 0)) AS instrSumChasi
|
SUM(NVL(b.chasi, 0)) AS instrSumChasi
|
||||||
@ -625,9 +629,12 @@
|
|||||||
|
|
||||||
GROUP BY d.user_id
|
GROUP BY d.user_id
|
||||||
)bb
|
)bb
|
||||||
|
on(
|
||||||
|
1=1
|
||||||
|
AND aa.user_id=bb.userId
|
||||||
|
)
|
||||||
WHERE aa.yr=#yr#
|
WHERE aa.yr=#yr#
|
||||||
AND aa.user_id IN ($userIds$)
|
AND aa.user_id IN ($userIds$)
|
||||||
AND aa.USER_ID =bb.userId
|
|
||||||
)aaa
|
)aaa
|
||||||
ORDER BY aaa.instrSumChasi*10000/(aaa.asgnmTm+1) asc
|
ORDER BY aaa.instrSumChasi*10000/(aaa.asgnmTm+1) asc
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user