package com.pms.controller; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.ibatis.session.SqlSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import com.pms.common.SqlMapConfig; import com.pms.common.bean.PersonBean; import com.pms.common.utils.CommonUtils; import com.pms.common.utils.Constants; import com.pms.service.ApprovalService; @Controller public class ApprovalController { protected static final Log logger = LogFactory.getLog("ApprovalController"); ApprovalService approvalService = null; @Autowired public void setApprovalService(ApprovalService approvalService){ this.approvalService = approvalService; } /** * 결재함 목록 조회 * @param request * @param paramMap * @return * @throws Exception */ @RequestMapping("/approval/approvalList.do") public String approvalList(HttpServletRequest request, @RequestParam Map paramMap)throws Exception{ ArrayList list = approvalService.getApprovalList(request, paramMap); request.setAttribute("LIST", list); return "/approval/approvalList"; } /** * 결재 상신 Form * @param request * @param paramMap * @return * @throws Exception */ @RequestMapping("/approval/registApproval.do") public String registApproval(HttpServletRequest request, @RequestParam Map paramMap)throws Exception{ //System.out.println("registApproval - targetObjIds:" + paramMap.get("targetObjIds")); return "/approval/registApproval"; } /** * 결재 상세 * @param request * @param paramMap * @return * @throws Exception */ @RequestMapping("/approval/approvalDetail.do") public String approvalDetail(HttpServletRequest request, @RequestParam Map paramMap)throws Exception{ List routeList = CommonUtils.keyChangeUpperList(approvalService.getRouteList(paramMap)); Map routeInfo = CommonUtils.keyChangeUpperMap(approvalService.getRouteInfo(paramMap)); //1. 일반결재 목록 paramMap.put("approvalType", "normal"); List normalInboxtaskList = CommonUtils.keyChangeUpperList(approvalService.getInboxtaskList(paramMap)); //2. 협조결재 목록 paramMap.put("approvalType", "help"); List helpInboxtaskList = CommonUtils.keyChangeUpperList(approvalService.getInboxtaskList(paramMap)); //3. 참조결재 목록 paramMap.put("approvalType", "ref"); List refInboxtaskList = CommonUtils.keyChangeUpperList(approvalService.getInboxtaskList(paramMap)); //approvalType 초기화 paramMap.remove("approvalType"); request.setAttribute("routeList", routeList); request.setAttribute("routeInfo", routeInfo); request.setAttribute("normalList", normalInboxtaskList); request.setAttribute("helpList", helpInboxtaskList); request.setAttribute("refList", refInboxtaskList); System.out.println("\n\n----------------------------"); System.out.println("paramMap : "+paramMap); System.out.println("routeList : "+routeList); System.out.println("routeInfo : "+routeInfo); System.out.println("normalList : "+normalInboxtaskList); System.out.println("helpList : "+helpInboxtaskList); System.out.println("refList : "+refInboxtaskList); System.out.println("----------------------------\n\n"); return "/approval/approvalDetail"; } /** * 결재상신 프로세스 * @param request * @param paramMap * @return */ @RequestMapping("/approval/approvalProc.do") public String approvalProcess(HttpServletRequest request , @RequestParam Map paramMap , @RequestParam(value = "normalArr[]", defaultValue="null") List normalArr , @RequestParam(value = "helpArr[]", defaultValue = "null") List helpArr , @RequestParam(value = "refArr[]", defaultValue = "null") List refArr ){ System.out.println("/approval/approvalProc.do"); System.out.println("paramMap : "+paramMap); System.out.println("normalArr : "+normalArr); System.out.println("helpArr : "+helpArr); System.out.println("refArr : "+refArr); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false); try{ //writer 정보 등록 HttpSession session = request.getSession(); PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN); String writer = CommonUtils.checkNull(person.getUserId()); paramMap.put("writer", writer); String targetObjId = CommonUtils.checkNull((String)paramMap.get("targetObjId")); //1. approval 체크 String approvalObjId = approvalService.checkApprovalObjId(sqlSession, paramMap); //2. route 생성 String routeObjId = approvalService.createRouteInfo(sqlSession, paramMap); System.out.println("routeObjId : "+routeObjId); paramMap.put("routeObjId", routeObjId); //3. inboxtask 생성 approvalService.createInboxTask(sqlSession, paramMap, normalArr, helpArr, refArr); //4. target의 상태값 변경. approvalService.setTargetStatus(sqlSession, paramMap); //240110 동시 결재 적용(동시발주서) String targetObjIds = CommonUtils.checkNull((String)paramMap.get("targetObjIds")); System.out.println("동시발주 targetObjIds:" + targetObjIds + " writer:"+writer + " targetObjId:"+targetObjId + " approvalTitle:"+paramMap.get("approvalTitle")); logger.info("동시발주 targetObjIds:" + targetObjIds + " writer:"+writer + " targetObjId:"+targetObjId + " approvalTitle:"+paramMap.get("approvalTitle")); String targetObjIdsArr [] = CommonUtils.isBlank(targetObjIds) ? new String[0] : targetObjIds.split(","); paramMap.put("masterTargetObjId", targetObjId); if(!CommonUtils.isEmpty(targetObjIdsArr) && targetObjIdsArr.length > 0) { approvalService.createApprovalTagetInfo(sqlSession, paramMap, targetObjIdsArr); } sqlSession.commit(); }catch(Exception e){ sqlSession.rollback(); e.printStackTrace(); }finally{ sqlSession.close(); } //targetObjId를 통해 등록된 approval이 있는지 확인. request.setAttribute("RESULT", CommonUtils.getJsonString("msg", "처리되었습니다.")); return "/ajax/ajaxResult"; } /** * 결재 처리 팝업 * @param request * @param paramMap * @return */ @RequestMapping("/approval/approvalDetailResultPopup.do") public String approvalDetailResultPopup(HttpServletRequest request, @RequestParam Map paramMap){ System.out.println("paramMap : "+paramMap); return "/approval/approvalDetailResultPopup"; } /** * 결재 승인/반려 처리 * @param request * @param paramMap * @return */ @RequestMapping("/approval/approvalResultProc.do") public String approvalResultProcess(HttpServletRequest request, @RequestParam Map paramMap){ SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false); try{ System.out.println("paramMap : "+paramMap); String result = CommonUtils.checkNull(paramMap.get("result")); String approvalType = CommonUtils.checkNull(paramMap.get("approvalType")); //반려 시 반려 인원에 대한 정보 표시 사용 HttpSession session = request.getSession(); PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN); String actionUser = CommonUtils.checkNull(person.getUserId()); paramMap.put("actionUser", actionUser); if("Y".equals(result)){ //승인 //1. targetUserId의 승인 처리 approvalService.setApprovalResult(sqlSession, paramMap); if("normal".equals(approvalType)){ //2. (승인)다음 결재순번의 상태값을 ready로 변경. approvalService.changeNextApprovalStatus(sqlSession, paramMap); } //3. (승인)모든 결재가 처리되었는지 확인 후, route와 approval의 상태값 변경. // + TARGET의 상태값 변경. approvalService.completeRouteInfo(sqlSession, paramMap); }else if("N".equals(result)){ //반려 //1. targetUserId의 반려 처리 approvalService.setApprovalResult(sqlSession, paramMap); //2. (반려)모든 standby의 상태값을 cancel로 변경. approvalService.setInboxtaskCancel(sqlSession, paramMap); //3. (반려)route의 상태값을 reject로 변경. // + TARGET의 상태값 변경. approvalService.rejectRouteInfo(sqlSession, paramMap); } request.setAttribute("RESULT", CommonUtils.getJsonString("msg", "처리 되었습니다.")); sqlSession.commit(); }catch(Exception e){ request.setAttribute("RESULT", CommonUtils.getJsonString("msg", "처리가 되지 않았습니다. 관리자에게 문의바랍니다.")); sqlSession.rollback(); e.printStackTrace(); }finally{ sqlSession.close(); } return "/ajax/ajaxResult"; } /** * 접속자의 결재건수를 가져온다. * @param request * @param paramMap * @return */ @RequestMapping("/approval/getApprovalCnt.do") public String getApprovalCnt(HttpServletRequest request, @RequestParam Map paramMap){ Map map = approvalService.getApprovalCnt(request, paramMap); request.setAttribute("RESULT", CommonUtils.getJsonMap(map)); return "/ajax/ajaxResult"; } }