2023-11-15 15:29 청소년 강사 자동 배정 수정

This commit is contained in:
myname 2023-11-15 15:29:39 +09:00
parent 916f0a28c4
commit 8c4f7706be
14 changed files with 799 additions and 34 deletions

View File

@ -630,14 +630,19 @@ public class CommonWebController {
int p=0;
{
for (int i=0;i<vEEduAplctVOList.size();i++) {
//학교 지역, 희망일자가 필요
//chasiord, aplctord, hopedt & loginVO
p = p + this.setTngrInstrAsgnm20231115(vEEduAplctVOList.get(i), loginVO);
/*
//eduChasiOrd, 희망일자가 필요
VEEduAplctVO tChasiInfo = vEEduAplctVOList.get(i);
String s_eduHopeDt = tChasiInfo.getEduHopeDt(); //교육희망일자
String s_addr = tChasiInfo.getAddr(); //지역명
//String s_addr = tChasiInfo.getAddr(); //지역명
System.out.println(s_eduHopeDt);
System.out.println(s_addr);
//System.out.println(s_addr);
//파라미터
@ -712,6 +717,7 @@ public class CommonWebController {
VEInstrAsgnmVO vEInstrAsgnmVOTmp = vEEduChasiInstrAsgnmService.selectDetail(p_vEInstrAsgnmVO);
if (vEInstrAsgnmVOTmp!=null) p = p+1;
}
*/
}
}
@ -864,6 +870,64 @@ public class CommonWebController {
return modelAndView;
}
//강사 대량 자동 배정
@RequestMapping(value="/instrMassAsgnmEAAjax20231115.do")
public ModelAndView instrMassAsgnmEAAjax20231115( HttpServletRequest request , ModelMap model , VEEduAplctVO veEduAplctVO) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//기존에 강사 배정이 안된 차시에 대해서만 자동 배정 조건에 따라서 강사 배정을 한다.
//step0.소속 차시 정보 가져오기
//step1.온오프라인 여부 확인
//step2.대상 리스트 가져오기
//step3.없으면 저장하고, 있으면 skip
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
//private String strtOprtnDt; //시작운영일
//private String endOprtnDt; //마감운영일
//String strtOprtnDt = veEduAplctVO.getStrtOprtnDt().replace(".", "").trim();
//String endOprtnDt = veEduAplctVO.getEndOprtnDt().replace(".", "").trim();
//step1.전달 파라미터를 대상 쿼리로 변경 하기
String s_query = " SELECT '' AS edu_aplct_ord, '' AS edu_chasi_ord FROM DUAL ";
String[] s_arr = veEduAplctVO.getEduAplctOrd().split("__");
for (int i=0;i<s_arr.length;i++) {
String[] s_arr_in = s_arr[i].split("@");
if (s_arr_in.length==2) {
s_query = s_query + " UNION ALL SELECT '"+s_arr_in[0]+"' AS edu_aplct_ord, '"+s_arr_in[1]+"' AS edu_chasi_ord FROM DUAL ";
}
}
System.out.println("===대상차시 가져오기===");
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setSelectPagingListQuery(s_query);
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectTngrRsltPagingList_EA(vEEduAplctVO);
//step2.배정 대상별 가능한 대상 강사 찾기 등록
int p=0;
{
for (int i=0;i<vEEduAplctVOList.size();i++) {
//chasiord, aplctord, hopedt & loginVO
p = p + this.setTngrInstrAsgnm20231115(vEEduAplctVOList.get(i), loginVO);
}
}
//modelAndView.addObject("rsCnt", rs);
modelAndView.addObject("result", "success");
return modelAndView;
}
//강사 대량 삭제
@RequestMapping(value="/instrMassAsgnmDeleteAjax.do")
public ModelAndView instrMassAsgnmDeleteAjax( HttpServletRequest request , ModelMap model , VEEduAplctVO veEduAplctVO) throws Exception {
@ -1226,4 +1290,121 @@ public class CommonWebController {
}
}
}
//청소년 강사 배정 - 20231115
private int setTngrInstrAsgnm20231115(
VEEduAplctVO p_tChasiInfo //대상 차시 정보
, LoginVO p_loginVO //등록자 정보
) throws Exception{
int i_ret = 0; //성공시 1 ret
//eduChasiOrd, 희망일자가 필요
//VEEduAplctVO tChasiInfo = vEEduAplctVOList.get(i);
String s_eduHopeDt = p_tChasiInfo.getEduHopeDt(); //교육희망일자
//String s_addr = tChasiInfo.getAddr(); //지역명
System.out.println(s_eduHopeDt);
//System.out.println(s_addr);
//파라미터
VEAutoAsgnmVO vEAutoAsgnmVO = null;
String s_user_id = "'aaa'";
//대상 강사 리스트
List<VEAutoAsgnmVO> vEInstrAssiEduAplctVOList = null;
//필수 조건(월별시수제한, 요일, 희망지역)
{
System.out.println("===step2-1.가능 강사중 월별 시수이상을 받지 않은자 & 해당 요일에 수업 가능한 강사 리스트(필)===");
//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(p_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)) { //대상 강사가 있을때만 다음을 실행한다.
System.out.println("===O있음===");
System.out.println("===////step2-2.희망 지역 강사 검색(필)===");
vEAutoAsgnmVO.setUserIds(s_user_id);
vEInstrAssiEduAplctVOList = vEAutoAsgnmMIXService.selectInstrHopeAreaList(vEAutoAsgnmVO);
}else {
System.out.println("===X없음===");
}
}
//우선순위
{
//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)) { //대상 강사가 있을때만 다음을 실행한다.
System.out.println("===O있음===");
System.out.println("===//step3-4.월별시수대비할당이적은자 우선(필)===");
vEAutoAsgnmVO.setUserIds(s_user_id);
vEInstrAssiEduAplctVOList = vEAutoAsgnmMIXService.selectInstrPriorityList(vEAutoAsgnmVO);
}else {
System.out.println("===X없음===");
}
}
//강사배정-대상 강사가 있어야 강사를 할당한다.
if (vEInstrAssiEduAplctVOList.size()>0) {
VEInstrAsgnmVO p_vEInstrAsgnmVO = new VEInstrAsgnmVO();
p_vEInstrAsgnmVO.setEduAplctOrd(p_tChasiInfo.getEduAplctOrd());
p_vEInstrAsgnmVO.setEduChasiOrd(p_tChasiInfo.getEduChasiOrd());
p_vEInstrAsgnmVO.setUserId(vEInstrAssiEduAplctVOList.get(0).getUserId()); //배정 강사
p_vEInstrAsgnmVO.setRmrks("배정기준1순위");
p_vEInstrAsgnmVO.setFrstRegisterId(p_loginVO.getUniqId());
p_vEInstrAsgnmVO.setAsgnmAprvlCd("10"); //수락요청전
p_vEInstrAsgnmVO.setAsgnmAprvlId(p_loginVO.getUniqId());
System.out.println("===//강사배정-대상 강사가 있어야 강사를 할당한다.===");
//저장
vEEduChasiInstrAsgnmService.insert(p_vEInstrAsgnmVO);
//저장여부 확인
//step3-1.해당 차시에 강사 배정이 있는지 확인
VEInstrAsgnmVO vEInstrAsgnmVOTmp = vEEduChasiInstrAsgnmService.selectDetail(p_vEInstrAsgnmVO);
if (vEInstrAsgnmVOTmp!=null) {
System.out.println("===O저장확인===");
i_ret = 1;
}else {
System.out.println("===X저장안됨===");
}
}
return i_ret;
}
}

View File

@ -16,5 +16,9 @@ public interface VEAutoAsgnmMIXService {
//step3-1.월별시수대비할당이적은자 우선()
List<VEAutoAsgnmVO> selectInstrPriorityList(VEAutoAsgnmVO paramVO) throws Exception;
//월별 교육시간 배정 정보
List<VEAutoAsgnmVO> selectAsgnmInfoList(VEAutoAsgnmVO paramVO) throws Exception;
}

View File

@ -30,6 +30,49 @@ public class VEAutoAsgnmVO extends ComDefaultVO implements Serializable {
private String rownum; //배정순번
private String m01Tm; //할당된 시간
private String m02Tm; //할당된 시간
private String m03Tm; //할당된 시간
private String m04Tm; //할당된 시간
private String m05Tm; //할당된 시간
private String m06Tm; //할당된 시간
private String m07Tm; //할당된 시간
private String m08Tm; //할당된 시간
private String m09Tm; //할당된 시간
private String m10Tm; //할당된 시간
private String m11Tm; //할당된 시간
private String m12Tm; //할당된 시간
private String mTmSum; //할당된 시간
private String m01Area; //할당된 지역수
private String m02Area; //할당된 지역수
private String m03Area; //할당된 지역수
private String m04Area; //할당된 지역수
private String m05Area; //할당된 지역수
private String m06Area; //할당된 지역수
private String m07Area; //할당된 지역수
private String m08Area; //할당된 지역수
private String m09Area; //할당된 지역수
private String m10Area; //할당된 지역수
private String m11Area; //할당된 지역수
private String m12Area; //할당된 지역수
private String m01Isc; //실제 받은 시간
private String m02Isc; //받은 시간
private String m03Isc; //받은 시간
private String m04Isc; //받은 시간
private String m05Isc; //받은 시간
private String m06Isc; //받은 시간
private String m07Isc; //받은 시간
private String m08Isc; //받은 시간
private String m09Isc; //받은 시간
private String m10Isc; //받은 시간
private String m11Isc; //받은 시간
private String m12Isc; //받은 시간
private String mIscSum; //받은 시간
public String getEduHopeMnt() {
return eduHopeMnt;
@ -118,6 +161,310 @@ public class VEAutoAsgnmVO extends ComDefaultVO implements Serializable {
public void setRownum(String rownum) {
this.rownum = rownum;
}
public String getM01Tm() {
return m01Tm;
}
public void setM01Tm(String m01Tm) {
this.m01Tm = m01Tm;
}
public String getM02Tm() {
return m02Tm;
}
public void setM02Tm(String m02Tm) {
this.m02Tm = m02Tm;
}
public String getM03Tm() {
return m03Tm;
}
public void setM03Tm(String m03Tm) {
this.m03Tm = m03Tm;
}
public String getM04Tm() {
return m04Tm;
}
public void setM04Tm(String m04Tm) {
this.m04Tm = m04Tm;
}
public String getM05Tm() {
return m05Tm;
}
public void setM05Tm(String m05Tm) {
this.m05Tm = m05Tm;
}
public String getM06Tm() {
return m06Tm;
}
public void setM06Tm(String m06Tm) {
this.m06Tm = m06Tm;
}
public String getM07Tm() {
return m07Tm;
}
public void setM07Tm(String m07Tm) {
this.m07Tm = m07Tm;
}
public String getM08Tm() {
return m08Tm;
}
public void setM08Tm(String m08Tm) {
this.m08Tm = m08Tm;
}
public String getM09Tm() {
return m09Tm;
}
public void setM09Tm(String m09Tm) {
this.m09Tm = m09Tm;
}
public String getM10Tm() {
return m10Tm;
}
public void setM10Tm(String m10Tm) {
this.m10Tm = m10Tm;
}
public String getM11Tm() {
return m11Tm;
}
public void setM11Tm(String m11Tm) {
this.m11Tm = m11Tm;
}
public String getM12Tm() {
return m12Tm;
}
public void setM12Tm(String m12Tm) {
this.m12Tm = m12Tm;
}
public String getM01Area() {
return m01Area;
}
public void setM01Area(String m01Area) {
this.m01Area = m01Area;
}
public String getM02Area() {
return m02Area;
}
public void setM02Area(String m02Area) {
this.m02Area = m02Area;
}
public String getM03Area() {
return m03Area;
}
public void setM03Area(String m03Area) {
this.m03Area = m03Area;
}
public String getM04Area() {
return m04Area;
}
public void setM04Area(String m04Area) {
this.m04Area = m04Area;
}
public String getM05Area() {
return m05Area;
}
public void setM05Area(String m05Area) {
this.m05Area = m05Area;
}
public String getM06Area() {
return m06Area;
}
public void setM06Area(String m06Area) {
this.m06Area = m06Area;
}
public String getM07Area() {
return m07Area;
}
public void setM07Area(String m07Area) {
this.m07Area = m07Area;
}
public String getM08Area() {
return m08Area;
}
public void setM08Area(String m08Area) {
this.m08Area = m08Area;
}
public String getM09Area() {
return m09Area;
}
public void setM09Area(String m09Area) {
this.m09Area = m09Area;
}
public String getM10Area() {
return m10Area;
}
public void setM10Area(String m10Area) {
this.m10Area = m10Area;
}
public String getM11Area() {
return m11Area;
}
public void setM11Area(String m11Area) {
this.m11Area = m11Area;
}
public String getM12Area() {
return m12Area;
}
public void setM12Area(String m12Area) {
this.m12Area = m12Area;
}
public String getM01Isc() {
return m01Isc;
}
public void setM01Isc(String m01Isc) {
this.m01Isc = m01Isc;
}
public String getM02Isc() {
return m02Isc;
}
public void setM02Isc(String m02Isc) {
this.m02Isc = m02Isc;
}
public String getM03Isc() {
return m03Isc;
}
public void setM03Isc(String m03Isc) {
this.m03Isc = m03Isc;
}
public String getM04Isc() {
return m04Isc;
}
public void setM04Isc(String m04Isc) {
this.m04Isc = m04Isc;
}
public String getM05Isc() {
return m05Isc;
}
public void setM05Isc(String m05Isc) {
this.m05Isc = m05Isc;
}
public String getM06Isc() {
return m06Isc;
}
public void setM06Isc(String m06Isc) {
this.m06Isc = m06Isc;
}
public String getM07Isc() {
return m07Isc;
}
public void setM07Isc(String m07Isc) {
this.m07Isc = m07Isc;
}
public String getM08Isc() {
return m08Isc;
}
public void setM08Isc(String m08Isc) {
this.m08Isc = m08Isc;
}
public String getM09Isc() {
return m09Isc;
}
public void setM09Isc(String m09Isc) {
this.m09Isc = m09Isc;
}
public String getM10Isc() {
return m10Isc;
}
public void setM10Isc(String m10Isc) {
this.m10Isc = m10Isc;
}
public String getM11Isc() {
return m11Isc;
}
public void setM11Isc(String m11Isc) {
this.m11Isc = m11Isc;
}
public String getM12Isc() {
return m12Isc;
}
public void setM12Isc(String m12Isc) {
this.m12Isc = m12Isc;
}
public String getmTmSum() {
return mTmSum;
}
public void setmTmSum(String mTmSum) {
this.mTmSum = mTmSum;
}
public String getmIscSum() {
return mIscSum;
}
public void setmIscSum(String mIscSum) {
this.mIscSum = mIscSum;
}
}

View File

@ -27,6 +27,9 @@ public interface VEEduMIXService {
List<VEEduAplctVO> selectTngrRsltPagingList(VEEduAplctVO paramVO) throws Exception;
//대량강사자동배정대상 - step0,1 - 개별
List<VEEduAplctVO> selectTngrRsltPagingList_EA(VEEduAplctVO paramVO) throws Exception;
List<VEEduAplctVO> selectTngrRsltList(VEEduAplctVO paramVO) throws Exception;
//특정강사배정을 위한 대상 차시 리스트

View File

@ -34,5 +34,12 @@ public class VEAutoAsgnmMIXDAO extends EgovAbstractDAO {
return tlist;
}
public List<VEAutoAsgnmVO> selectAsgnmInfoList(VEAutoAsgnmVO paramVO) {
@SuppressWarnings("unchecked")
List<VEAutoAsgnmVO> tlist = (List<VEAutoAsgnmVO>) list("VEAutoAsgnmDAO.selectAsgnmInfoList", paramVO);
return tlist;
}
}

View File

@ -38,4 +38,9 @@ public class VEAutoAsgnmMIXServiceImpl implements VEAutoAsgnmMIXService {
return vEAutoAsgnmMIXDAO.selectInstrPriorityList(paramVO);
}
@Override
public List<VEAutoAsgnmVO> selectAsgnmInfoList(VEAutoAsgnmVO paramVO) throws Exception{
return vEAutoAsgnmMIXDAO.selectAsgnmInfoList(paramVO);
}
}

View File

@ -67,7 +67,12 @@ public class VEEduMIXDAO extends EgovAbstractDAO {
List<VEEduAplctVO> tlist = (List<VEEduAplctVO>) list("VEEduMIXDAO.selectTngrRsltPagingList", paramVO);
return tlist;
}
public List<VEEduAplctVO> selectTngrRsltPagingList_EA(VEEduAplctVO paramVO) {
@SuppressWarnings("unchecked")
List<VEEduAplctVO> tlist = (List<VEEduAplctVO>) list("VEEduMIXDAO.selectTngrRsltPagingList_EA", paramVO);
return tlist;
}
public List<VEEduAplctVO> selectTngrRsltList(VEEduAplctVO paramVO) {
@SuppressWarnings("unchecked")

View File

@ -60,6 +60,11 @@ public class VEEduMIXServiceImpl implements VEEduMIXService {
return vEEduMIXDAO.selectTngrRsltPagingList(paramVO);
}
@Override
public List<VEEduAplctVO> selectTngrRsltPagingList_EA(VEEduAplctVO paramVO) throws Exception{
return vEEduMIXDAO.selectTngrRsltPagingList_EA(paramVO);
}
@Override
public List<VEEduAplctVO> selectTngrRsltList(VEEduAplctVO paramVO) throws Exception{
return vEEduMIXDAO.selectTngrRsltList(paramVO);

View File

@ -53,6 +53,8 @@ import kcc.ve.aplct.cpyrgExprnClsrm.exprnClsrmAplct.service.ScholInfoService;
import kcc.ve.aplct.cpyrgExprnClsrm.exprnClsrmAplct.service.ScholInfoVO;
import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEEduPnltyService;
import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrAsgnmVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEAutoAsgnmMIXService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEAutoAsgnmVO;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailService;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrMixService;
@ -224,6 +226,9 @@ public class OprtnInstrTngrPrflContoller {
@Resource(name="instrHstryOrdGnrService")
private EgovIdGnrService instrHstryOrdGnrService;
@Resource(name = "vEAutoAsgnmMIXService")
private VEAutoAsgnmMIXService vEAutoAsgnmMIXService;
/**
* 1.강사등록신청 목록 조회 -
*/
@ -1770,6 +1775,13 @@ public class OprtnInstrTngrPrflContoller {
List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectAsgnmInfoT2(t_vEInstrDetailVO);
model.addAttribute("asgnmInfoT2List",selectAsgnmInfoT2List);
VEAutoAsgnmVO vEAutoAsgnmVO = new VEAutoAsgnmVO();
vEAutoAsgnmVO.setUserId(vEInstrDetailVO.getUserId());
List<VEAutoAsgnmVO> vEInstrAssiEduAplctVOList = null;
vEInstrAssiEduAplctVOList = vEAutoAsgnmMIXService.selectAsgnmInfoList(vEAutoAsgnmVO);
model.addAttribute("vEInstrAssiEduAplctVOList",vEInstrAssiEduAplctVOList);
return "/oprtn/tngrVisitEdu/instrMngDetail";
}

View File

@ -637,5 +637,113 @@
AND aa.user_id IN ($userIds$)
)aaa
ORDER BY aaa.instrSumChasi*10000/(aaa.asgnmTm+1) asc
</select>
</select>
<!-- //월별 교육시간 배정 정보 L page -->
<select id="VEAutoAsgnmDAO.selectAsgnmInfoList" parameterClass="VEAutoAsgnmVO" resultClass="VEAutoAsgnmVO" remapResults="true">
/* VEAutoAsgnmDAO.selectAsgnmInfoList */
SELECT aa.yr
, aa.user_id AS userId
, NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='01' THEN bb.instrSumChasi END),0) AS m01Isc
, NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='02' THEN bb.instrSumChasi END),0) AS m02Isc
, NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='03' THEN bb.instrSumChasi END),0) AS m03Isc
, NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='04' THEN bb.instrSumChasi END),0) AS m04Isc
, NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='05' THEN bb.instrSumChasi END),0) AS m05Isc
, NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='06' THEN bb.instrSumChasi END),0) AS m06Isc
, NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='07' THEN bb.instrSumChasi END),0) AS m07Isc
, NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='08' THEN bb.instrSumChasi END),0) AS m08Isc
, NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='09' THEN bb.instrSumChasi END),0) AS m09Isc
, NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='10' THEN bb.instrSumChasi END),0) AS m10Isc
, NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='11' THEN bb.instrSumChasi END),0) AS m11Isc
, NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='12' THEN bb.instrSumChasi END),0) AS m12Isc
, NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='01' THEN bb.instrSumChasi END),0)
+ NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='02' THEN bb.instrSumChasi END),0)
+ NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='03' THEN bb.instrSumChasi END),0)
+ NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='04' THEN bb.instrSumChasi END),0)
+ NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='05' THEN bb.instrSumChasi END),0)
+ NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='06' THEN bb.instrSumChasi END),0)
+ NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='07' THEN bb.instrSumChasi END),0)
+ NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='08' THEN bb.instrSumChasi END),0)
+ NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='09' THEN bb.instrSumChasi END),0)
+ NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='10' THEN bb.instrSumChasi END),0)
+ NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='11' THEN bb.instrSumChasi END),0)
+ NVL(SUM(CASE WHEN substring(bb.yrmnt,6,7)='12' THEN bb.instrSumChasi END),0) AS mIscSum
, NVL(aa.m01_tm,0) AS m01Tm
, NVL(aa.m02_tm,0) AS m02Tm
, NVL(aa.m03_tm,0) AS m03Tm
, NVL(aa.m04_tm,0) AS m04Tm
, NVL(aa.m05_tm,0) AS m05Tm
, NVL(aa.m06_tm,0) AS m06Tm
, NVL(aa.m07_tm,0) AS m07Tm
, NVL(aa.m08_tm,0) AS m08Tm
, NVL(aa.m09_tm,0) AS m09Tm
, NVL(aa.m10_tm,0) AS m10Tm
, NVL(aa.m11_tm,0) AS m11Tm
, NVL(aa.m12_tm,0) AS m12Tm
, NVL(aa.m01_tm,0)
+ NVL(aa.m02_tm,0)
+ NVL(aa.m03_tm,0)
+ NVL(aa.m04_tm,0)
+ NVL(aa.m05_tm,0)
+ NVL(aa.m06_tm,0)
+ NVL(aa.m07_tm,0)
+ NVL(aa.m08_tm,0)
+ NVL(aa.m09_tm,0)
+ NVL(aa.m10_tm,0)
+ NVL(aa.m11_tm,0)
+ NVL(aa.m12_tm,0) AS mTmSum
FROM vea_instr_indvd_mnt_tm aa
LEFT OUTER JOIN (
SELECT d.user_id,
substring(b.EDU_HOPE_DT ,0,7) AS yrMnt ,
SUM(NVL(b.chasi, 0)) AS instrSumChasi
FROM ve_edu_aplct a ,
ve_edu_chasi b
LEFT OUTER JOIN ve_edu_chasi_instr_asgnm d
ON (
b.edu_aplct_ord=d.edu_aplct_ord
AND b.edu_chasi_ord=d.edu_chasi_ord
)
WHERE 1 =1
AND a.edu_aplct_ord =b.edu_aplct_ord
AND NVL(A.USE_YN, 'Y') <![CDATA[ <> ]]> 'N'
AND a.LCTR_DIV_CD = '10'
AND a.aprvl_cd = '60'
AND 1 =1
GROUP BY d.user_id
, substring(b.EDU_HOPE_DT ,0,7)
)bb
on(
aa.user_id=bb.user_id
AND aa.yr=substring(bb.yrMnt,0,4)
)
WHERE aa.user_id=#userId#
GROUP BY aa.yr
, aa.user_id
, aa.m01_tm
, aa.m02_tm
, aa.m03_tm
, aa.m04_tm
, aa.m05_tm
, aa.m06_tm
, aa.m07_tm
, aa.m08_tm
, aa.m09_tm
, aa.m10_tm
, aa.m11_tm
, aa.m12_tm
ORDER BY aa.yr
</select>
</sqlMap>

View File

@ -2435,6 +2435,23 @@
</isNotEqual>
</select>
<!-- 청소년 교육 결과 L page -->
<select id="VEEduMIXDAO.selectTngrRsltPagingList_EA" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO" remapResults="true">
/* VEEduMIXDAO.selectTngrRsltPagingList_EA */
SELECT b.edu_aplct_ord AS eduAplctOrd
, b.edu_chasi_ord AS eduChasiOrd
, b.edu_hope_dt AS eduHopeDt
from ve_edu_aplct a
, ve_edu_chasi b
, (
$selectPagingListQuery$
) c
WHERE 1=1
AND a.edu_aplct_ord=b.edu_aplct_ord
AND b.edu_aplct_ord=c.edu_aplct_ord
AND b.edu_chasi_ord=c.edu_chasi_ord
</select>
<!-- 청소년 교육 결과 L page -->
<select id="VEEduMIXDAO.selectTngrRsltList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO" remapResults="true">
/* VEEduMIXDAO.selectTngrRsltList */

View File

@ -560,6 +560,71 @@
}
});
}
function fncInstrMassAsgnmEA20231115(){ //개별 선택한 경우만 처리한다.
var pageIndex = $('#listForm [name=pageIndex]').val();
var varEduAplctOrd = '';
var fnExit = false;
$('input:checkbox[name="chk"]:checked').each(function(idx) {
if($(this).attr("class") != "") {
alert("선택한 목록 중 교욱확정알림이 불가능한 건이 있습니다.");
fnExit = true;
}else{
varEduAplctOrd = varEduAplctOrd + $(this).val() + "__";
}
});
//체크한 리스트 중 해당 상태에 실행 불가능한 건이 있는지 체크 후, 존재 시 함수 종료
if(fnExit) return false;
if (varEduAplctOrd==''){
alert("선택된 항목이 없습니다.");
return ;
}
//alert(varEduAplctOrd);
/*
if (varEduHopeDtStrt=='' || varEduHopeDtEnd==''){
alert("대상의 교육일자 기간은 반드시 선택해야 합니다.");
return ;
}
*/
//private String strtOprtnDt; //시작운영일
//private String endOprtnDt; //마감운영일
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/web/ve/comm/instrMassAsgnmEAAjax20231115.do",
data: {
"eduAplctOrd":varEduAplctOrd,
//"strtOprtnDt" : varEduHopeDtStrt ,
//"endOprtnDt" : varEduHopeDtEnd ,
//"instrDiv" : "10" ,
},
dataType:'json',
success:function(returnData){
if(returnData.result=="success"){
alert("상태가 변경 되었습니다.");
linkPage(pageIndex);
}else{
alert("강사 자동 배정 중에 오류가 발생 되었습니다.");
linkPage(pageIndex);
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
//강사교육확정
function fncInstrMassAsgnm30(){
@ -911,9 +976,10 @@
<button class="btn_type03" onclick="fncReset(this); return false;">초기화</button>
<div class="btn_wrap btn_layout01" style="width:100%;">
<div class="btn_right" style="width:100%;margin-bottom:40px;">
<button type="button" class="btn_type06" onclick="fncInstrMassAsgnm(); return false;">강사배정(전체)X</button>
<button type="button" class="btn_type06" onclick="fncInstrMassAsgnm20231109(); return false;">강사배정(전체)N-X</button>
<button type="button" class="btn_type06" onclick="fncInstrMassAsgnmEA(); return false;">강사배정(개별)X</button>
<!-- <button type="button" class="btn_type06" onclick="fncInstrMassAsgnm(); return false;">강사배정(전체)X</button> -->
<button type="button" class="btn_type06" onclick="fncInstrMassAsgnm20231109(); return false;">강사배정(전체)</button>
<!-- <button type="button" class="btn_type06" onclick="fncInstrMassAsgnmEA(); return false;">강사배정(개별)X</button> -->
<button type="button" class="btn_type06" onclick="fncInstrMassAsgnmEA20231115(); return false;">강사배정(개별)</button>
<button type="button" style="width:200px;" class="btn_type06" onclick="fncSpcfcInstrAsgnmInfo(); return false;">특정강사배정</button>
</div>

View File

@ -756,23 +756,25 @@
<div class="tb_type01 list2">
<table>
<colgroup>
<col style="width: 4.0%;">
<col style="width: 9.5%;">
<col style="width: 7.5%;">
<col style="width: 7.5%;">
<col style="width: 7.5%;">
<col style="width: 7.5%;">
<col style="width: 7.5%;">
<col style="width: 7.5%;">
<col style="width: 7.5%;">
<col style="width: 7.5%;">
<col style="width: 7.5%;">
<col style="width: 7.5%;">
<col style="width: 7.5%;">
<col style="width: 7.0%;">
<col style="width: 7.0%;">
<col style="width: 7.0%;">
<col style="width: 7.0%;">
<col style="width: 7.0%;">
<col style="width: 7.0%;">
<col style="width: 7.0%;">
<col style="width: 7.0%;">
<col style="width: 7.0%;">
<col style="width: 7.0%;">
<col style="width: 7.0%;">
<col style="width: auto;">
</colgroup>
<thead>
<tr>
<th scope="col">1월(일수/지역수)</th>
<th scope="col">년도</th>
<th scope="col">1월(배정차시/배정가능수)</th>
<th scope="col">2월</th>
<th scope="col">3월</th>
<th scope="col">4월</th>
@ -790,22 +792,23 @@
<tbody>
<c:forEach var="asgnmInfoT2" items="${asgnmInfoT2List}" varStatus="status">
<c:forEach var="asgnmInfoT2" items="${vEInstrAssiEduAplctVOList}" varStatus="status">
<tr>
<td><c:out value="${asgnmInfoT2.asgnmTm1}" /></td>
<td><c:out value="${asgnmInfoT2.asgnmTm2}" /></td>
<td><c:out value="${asgnmInfoT2.asgnmTm3}" /></td>
<td><c:out value="${asgnmInfoT2.asgnmTm4}" /></td>
<td><c:out value="${asgnmInfoT2.asgnmTm5}" /></td>
<td><c:out value="${asgnmInfoT2.asgnmTm6}" /></td>
<td><c:out value="${asgnmInfoT2.asgnmTm7}" /></td>
<td><c:out value="${asgnmInfoT2.asgnmTm8}" /></td>
<td><c:out value="${asgnmInfoT2.asgnmTm9}" /></td>
<td><c:out value="${asgnmInfoT2.asgnmTm10}" /></td>
<td><c:out value="${asgnmInfoT2.asgnmTm11}" /></td>
<td><c:out value="${asgnmInfoT2.asgnmTm12}" /></td>
<td><c:out value="${asgnmInfoT2.yr}" /></td>
<td><c:out value="${asgnmInfoT2.m01Isc}" />/<c:out value="${asgnmInfoT2.m01Tm}" /></td>
<td><c:out value="${asgnmInfoT2.m02Isc}" />/<c:out value="${asgnmInfoT2.m02Tm}" /></td>
<td><c:out value="${asgnmInfoT2.m03Isc}" />/<c:out value="${asgnmInfoT2.m03Tm}" /></td>
<td><c:out value="${asgnmInfoT2.m04Isc}" />/<c:out value="${asgnmInfoT2.m04Tm}" /></td>
<td><c:out value="${asgnmInfoT2.m05Isc}" />/<c:out value="${asgnmInfoT2.m05Tm}" /></td>
<td><c:out value="${asgnmInfoT2.m06Isc}" />/<c:out value="${asgnmInfoT2.m06Tm}" /></td>
<td><c:out value="${asgnmInfoT2.m07Isc}" />/<c:out value="${asgnmInfoT2.m07Tm}" /></td>
<td><c:out value="${asgnmInfoT2.m08Isc}" />/<c:out value="${asgnmInfoT2.m08Tm}" /></td>
<td><c:out value="${asgnmInfoT2.m09Isc}" />/<c:out value="${asgnmInfoT2.m09Tm}" /></td>
<td><c:out value="${asgnmInfoT2.m10Isc}" />/<c:out value="${asgnmInfoT2.m10Tm}" /></td>
<td><c:out value="${asgnmInfoT2.m11Isc}" />/<c:out value="${asgnmInfoT2.m11Tm}" /></td>
<td><c:out value="${asgnmInfoT2.m12Isc}" />/<c:out value="${asgnmInfoT2.m12Tm}" /></td>
<td><c:out value="${asgnmInfoT2.mntSum}" /></td>
<td><c:out value="${asgnmInfoT2.mIscSum}" />/<c:out value="${asgnmInfoT2.mTmSum}" /></td>
</tr>
</c:forEach>

View File

@ -235,6 +235,7 @@
<label for="cntnsLctrPsblYn_n">아니오</label>
</td>
</tr>
<!--
<tr>
<th scope="row">연 최대 배정시간</th>
<td><input type="text" name="yrMxmmAsgnmTm" value="<c:out value='${lctrStngInfo.yrMxmmAsgnmTm }' />" />
@ -245,6 +246,7 @@
<th scope="row">월 최소시간</th>
<td><input type="text" name="mntMnmmTm" value="<c:out value='${lctrStngInfo.mntMnmmTm}' />" /></td>
</tr>
-->
</tbody>
</table>