Files
wace_plm/src/com/pms/controller/ApprovalController.java
chpark da06c4684c Initial commit: WACE PLM with database initialization features
- 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
2025-08-29 15:46:08 +09:00

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";
}
}