package kr.opensoftlab.oslops.dpl.dpl1000.dpl1100.web; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import kr.opensoftlab.oslops.com.vo.LoginVO; import kr.opensoftlab.oslops.dpl.dpl1000.dpl1000.service.Dpl1000Service; import kr.opensoftlab.oslops.dpl.dpl1000.dpl1100.service.Dpl1100Service; import kr.opensoftlab.oslops.dpl.dpl1000.dpl1100.vo.Dpl1100VO; import kr.opensoftlab.sdf.util.OslAgileConstant; import kr.opensoftlab.sdf.util.PagingUtil; import kr.opensoftlab.sdf.util.RequestConvertor; import org.apache.log4j.Logger; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.google.gson.GsonBuilder; import egovframework.com.cmm.EgovMessageSource; import egovframework.rte.fdl.property.EgovPropertyService; import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; /** * @Class Name : Dpl1100Controller.java * @Description : Dpl1100Controller Controller class * @Modification Information * * @author 공대영 * @since 2016.02.08 * @version 1.0 * @see Copyright (C) All right reserved. */ @Controller public class Dpl1100Controller { /** * Logging 을 위한 선언 Log는 반드시 가이드에 맞춰서 작성한다. 개발용으로는 debug 카테고리를 사용한다. */ protected Logger Log = Logger.getLogger(this.getClass()); /** System Property 를 사용하기 위한 Bean Injection */ @Resource(name = "propertiesService") protected EgovPropertyService propertiesService; /** EgovMessageSource */ @Resource(name = "egovMessageSource") EgovMessageSource egovMessageSource; /** Dpl1000Service DI */ @Resource(name = "dpl1000Service") private Dpl1000Service dpl1000Service; /** Dpl1100Service DI */ @Resource(name = "dpl1100Service") private Dpl1100Service dpl1100Service; /** * Dpl1100 배포 계획 요구사항 배정 화면으로 이동한다. * 화면 이동시 배포 계획 목록을 조회하여 가져온다. * 조회된 배포 계획 목록을 그리드에 세팅 * @param * @return * @exception Exception */ @SuppressWarnings({ "unchecked", "rawtypes" }) @RequestMapping(value = "/dpl/dpl1000/dpl1100/selectDpl1100View.do") public String selectDpl1100View(HttpServletRequest request, HttpServletResponse response,ModelMap model) throws Exception { try{ Map paramMap = RequestConvertor.requestParamToMap(request, true); paramMap.put("prjId", request.getSession().getAttribute("selPrjId")); // 배포 버전 정보 리스트 조회 List<Map> selectDpl1000List = (List) dpl1000Service.selectDpl1000DeployVerNormalList(paramMap); String dplListJson = (new GsonBuilder().serializeNulls().create()).toJsonTree(selectDpl1000List).toString(); //첫 화면 배포버전 if(selectDpl1000List != null && selectDpl1000List.size() > 0){ model.addAttribute("srchDplId", selectDpl1000List.get(0).get("dplId")); } model.addAttribute("dplList", dplListJson.replaceAll("<", "<")); // 조회 성공 및 성공메시지 세팅 model.addAttribute("errorYn", 'N'); model.addAttribute("message", egovMessageSource.getMessage("success.common.select")); return "/dpl/dpl1000/dpl1100/dpl1100"; } catch(Exception ex){ Log.error("selectSpr1000BView()", ex); // 조회 실패 및 실패메시지 세팅 model.addAttribute("errorYn", 'Y'); model.addAttribute("message", egovMessageSource.getMessage("fail.common.select")); throw new Exception(ex.getMessage()); } } /** * Dpl1100 배포계획에 요구사항을 배정한다. * @param * @return * @exception Exception */ @RequestMapping(value = "/dpl/dpl1000/dpl1100/insertDpl1100Dpl.do") public ModelAndView insertDpl1100Dpl(HttpServletRequest request,HttpServletResponse response, ModelMap model) throws Exception { try { // request 파라미터를 map으로 변환 Map<String, String> paramMap = RequestConvertor.requestParamToMapAddSelInfo(request, true); HttpSession ss = request.getSession(); // 프로젝트 ID를 가져와 Map에 추가한다. paramMap.put("prjId", ss.getAttribute("selPrjId").toString()); //배포계획 요구사항 배정 dpl1100Service.insertDpl1100ReqDplInfo(paramMap); // 등록 성공여부 및 등록성공 메시지 세팅 model.addAttribute("errorYn", "N"); model.addAttribute("message",egovMessageSource.getMessage("success.common.insert")); return new ModelAndView("jsonView"); } catch (Exception ex) { Log.error("insertDpl1100Dpl()", ex); // 등록 실패여부 및 등록실패 메시지 세팅 model.addAttribute("errorYn", "Y"); model.addAttribute("message",egovMessageSource.getMessage("fail.common.insert")); return new ModelAndView("jsonView"); } } /** * Dpl1100 배포계획에서 요구사항을 배정 제외한다. * @param * @return * @exception Exception */ @RequestMapping(value = "/dpl/dpl1000/dpl1100/deleteDpl1100Dpl.do") public ModelAndView deleteDpl1100Dpl(HttpServletRequest request,HttpServletResponse response, ModelMap model) throws Exception { try { // request 파라미터를 map으로 변환 Map<String, String> paramMap = RequestConvertor.requestParamToMapAddSelInfo(request, true); HttpSession ss = request.getSession(); // 프로젝트 ID를 가져와 Map에 추가한다. paramMap.put("prjId", ss.getAttribute("selPrjId").toString()); //배포계획 요구사항 배정 제외 dpl1100Service.deleteDpl1100ReqDplInfo(paramMap); // 삭제 성공여부 및 삭제성공 메시지 세팅 model.addAttribute("errorYn", "N"); model.addAttribute("message",egovMessageSource.getMessage("success.common.delete")); return new ModelAndView("jsonView"); } catch (Exception ex) { Log.error("deleteDpl1100Dpl()", ex); // 삭제 실패여부 및 삭제실패 메시지 세팅 model.addAttribute("errorYn", "Y"); model.addAttribute("message",egovMessageSource.getMessage("fail.common.delete")); return new ModelAndView("jsonView"); } } /** * Dpl1100 배포버전 요구사항 목록 및 미배정 목록을 조회 한다. * @param * @return * @exception Exception */ @SuppressWarnings("rawtypes") @RequestMapping(value = "/dpl/dpl1000/dpl1100/selectDpl1100DplListAjax.do") public ModelAndView selectDpl1100ReqListAjax(@ModelAttribute("dpl1100VO") Dpl1100VO dpl1100VO, HttpServletRequest request,HttpServletResponse response, ModelMap model) throws Exception { try { // 리퀘스트에서 넘어온 파라미터를 맵으로 세팅 Map<String, String> paramMap = RequestConvertor.requestParamToMap(request, true); // 로그인 VO를 가져온다. HttpSession ss = request.getSession(); LoginVO loginVO = (LoginVO) ss.getAttribute("loginVO"); // 라이선스 그룹 ID String licGrpId = loginVO.getLicGrpId(); // 프로젝트 ID String prjId = (String) paramMap.get("prjId"); // 넘어온 프로젝트 Id가 없을경우 세션의 선택된 프로젝트 Id 가져온다. if(prjId == null || "".equals(prjId)) { prjId = ss.getAttribute("selPrjId").toString(); } //현재 페이지 값, 보여지는 개체 수 String _pageNo_str = paramMap.get("pageNo"); String _pageSize_str = paramMap.get("pageSize"); int _pageNo = 1; int _pageSize = OslAgileConstant.pageSize; // 넘어온 페이지 정보가 있다면 해당 값으로 세팅 if(_pageNo_str != null && !"".equals(_pageNo_str)){ _pageNo = Integer.parseInt(_pageNo_str)+1; } if(_pageSize_str != null && !"".equals(_pageSize_str)){ _pageSize = Integer.parseInt(_pageSize_str); } // 라이선스 그룹 ID, 프로젝트 Id 세팅 dpl1100VO.setLicGrpId(licGrpId); dpl1100VO.setPrjId(prjId); // 페이지 번호, 페이지 사이즈 세팅 dpl1100VO.setPageIndex(_pageNo); dpl1100VO.setPageSize(_pageSize); dpl1100VO.setPageUnit(_pageSize); // 페이징 처리유무 YN 세팅 - 페이징 처리 필요유무 구분값 // 배포계획에 배정/미배정된 요구사항 조회 시 페이징 처리 필요 // 요구사항 상세정보 조회시 해당 요구사항이 배포계획에 배정되어있는지 정보를 // 조회할 떄는 페이징 처리 불필요 dpl1100VO.setPagingYn("Y"); PaginationInfo paginationInfo = PagingUtil.getPaginationInfo(dpl1100VO); /** paging - 신규방식 */ // 총 데이터 건수 int totCnt = 0; // 배포계획 배정/미배정 요구사항 목록 List dplAssignReqList = null; if ("clsAdd".equals(paramMap.get("clsMode"))) { // 배포계획 배정된 요구사항 총 데이터 건수 조회 totCnt = dpl1100Service.selectDpl1100ExistDplListCnt(dpl1100VO) ; // 배포계획 배정된 요구사항 목록 조회 dplAssignReqList = dpl1100Service.selectDpl1100ExistDplList(dpl1100VO); } else if ("clsDel".equals(paramMap.get("clsMode"))) { // 배포계획 미배정된 요구사항 총 데이터 건수 조회 totCnt = dpl1100Service.selectDpl1100NotExistDplListCnt(dpl1100VO) ; // 배포계획 미배정된 요구사항 목록 조회 dplAssignReqList = dpl1100Service.selectDpl1100NotExistDplList(dpl1100VO); } // 총 데이터 건수 세팅 paginationInfo.setTotalRecordCount(totCnt); // 배포계획에 배정/미배정된 요구사항 목록 세팅 model.addAttribute("list", dplAssignReqList); //페이지 정보 보내기 Map<String, Integer> pageMap = new HashMap<String, Integer>(); pageMap.put("pageNo",dpl1100VO.getPageIndex()); pageMap.put("listCount", dplAssignReqList.size()); pageMap.put("totalPages", paginationInfo.getTotalPageCount()); pageMap.put("totalElements", totCnt); pageMap.put("pageSize", _pageSize); // 페이지 정보 세팅 model.addAttribute("page", pageMap); // 조회 성공여부 및 조회성공메시지 세팅 model.addAttribute("errorYn", "N"); model.addAttribute("message",egovMessageSource.getMessage("success.common.select")); return new ModelAndView("jsonView"); } catch (Exception ex) { Log.error("selectDpl1100ReqListAjax()", ex); // 조회 실패여부 및 조회실패 메시지 세팅 model.addAttribute("errorYn", "Y"); model.addAttribute("message",egovMessageSource.getMessage("fail.common.select")); return new ModelAndView("jsonView"); } } }