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);
|
||||
|
||||
|
||||
//필수 조건
|
||||
//step2-1.가능 강사중 월별 시수이상을 받지 않은자 & 해당 요일에 수업 가능한 강사 리스트(필)
|
||||
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);
|
||||
//파라미터
|
||||
VEAutoAsgnmVO vEAutoAsgnmVO = null;
|
||||
|
||||
//step2-2.희망 지역 강사 검색(필)
|
||||
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) {
|
||||
VEInstrAsgnmVO p_vEInstrAsgnmVO = new VEInstrAsgnmVO();
|
||||
p_vEInstrAsgnmVO.setEduAplctOrd(tChasiInfo.getEduAplctOrd());
|
||||
|
||||
@ -575,12 +575,15 @@
|
||||
/* VEAutoAsgnmDAO.selectInstrPriorityList */
|
||||
|
||||
SELECT
|
||||
aaa.userId
|
||||
aaa.user_id AS userId
|
||||
, aaa.instrSumChasi
|
||||
, aaa.asgnmTm
|
||||
, rownum
|
||||
FROM (
|
||||
SELECT bb.*
|
||||
SELECT
|
||||
aa.user_id
|
||||
, bb.userId
|
||||
, bb.instrSumChasi
|
||||
|
||||
, NVL(
|
||||
CASE
|
||||
@ -603,7 +606,8 @@
|
||||
AS asgnmTm
|
||||
|
||||
FROM vea_instr_indvd_mnt_tm aa
|
||||
,(
|
||||
LEFT OUTER JOIN
|
||||
(
|
||||
/* 강사에게 교육이 할당(확정, 반려, 요청전, 요첮우 모두 포함)된 차시수 */
|
||||
SELECT d.user_id AS userId,
|
||||
SUM(NVL(b.chasi, 0)) AS instrSumChasi
|
||||
@ -625,9 +629,12 @@
|
||||
|
||||
GROUP BY d.user_id
|
||||
)bb
|
||||
on(
|
||||
1=1
|
||||
AND aa.user_id=bb.userId
|
||||
)
|
||||
WHERE aa.yr=#yr#
|
||||
AND aa.user_id IN ($userIds$)
|
||||
AND aa.USER_ID =bb.userId
|
||||
AND aa.user_id IN ($userIds$)
|
||||
)aaa
|
||||
ORDER BY aaa.instrSumChasi*10000/(aaa.asgnmTm+1) asc
|
||||
</select>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user