- Add Docker Compose configurations for dev, prod, and standalone environments - Add database initialization scripts (init-db.sh, init-db-docker.sh) - Add enhanced start-docker-linux.sh with DB init support - Add comprehensive database initialization guide - Support for automatic dbexport.pgsql import on first run - Include safety checks for production environment
271 lines
9.3 KiB
Java
271 lines
9.3 KiB
Java
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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> paramMap
|
|
, @RequestParam(value = "normalArr[]", defaultValue="null") List<String> normalArr
|
|
, @RequestParam(value = "helpArr[]", defaultValue = "null") List<String> helpArr
|
|
, @RequestParam(value = "refArr[]", defaultValue = "null") List<String> 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<String, Object> 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<String, Object> 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";
|
|
}
|
|
|
|
}
|