package com.pms.service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.session.SqlSession; import org.json.simple.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; 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.common.utils.MailUtil; import com.pms.salesmgmt.service.SalesMngService; @Service public class ApprovalService { @Autowired CommonService commonService; @Autowired SalesMngService salesMngService; @Autowired PurchaseOrderService purchaseOrderService; /** *
* targetObjId를 통해 등록된 approval이 있는지 체크한다. * 있다면 해당 approval object id를 리턴. * 없다면 approval을 생성 후, object id를 리턴. * * transaction 관리대상. ** @param sqlSession * @param paramMap * @return approval의 object id * @throws Exception */ public String checkApprovalObjId(SqlSession sqlSession, Map paramMap)throws Exception{ String result = ""; Map map = sqlSession.selectOne("approval.selectApprovalInfo", paramMap); if(map != null) result = CommonUtils.checkNull(map.get("OBJID")); if("".equals(result)){ result = CommonUtils.createObjId(); paramMap.put("objId", result); paramMap.put("systemType", Constants.SYSTEM_NAME); sqlSession.insert("approval.insertApprovalInfo", paramMap); } paramMap.put("approvalObjId", result); return result; } public Map getLastApprovalInfo(SqlSession sqlSession, Map paramMap)throws Exception{ paramMap.put("search_type", "last"); Map map = sqlSession.selectOne("approval.selectApprovalInfo", paramMap); return map; } /** *
* Route 신규 생성 * 반려 후, 생성이 될 수 있으니 Approval의 상태값을 inProcess로 변경. * paramMap의 approvalObjId가 필요함. * * transaction 관리대상. ** @param sqlSession * @param paramMap * @return route의 object id * @throws Exception */ public String createRouteInfo(SqlSession sqlSession, Map paramMap)throws Exception{ String result = ""; //1. Approval의 status를 inProcess로 변경. Map approvalParamMap = new HashMap(); approvalParamMap.put("approvalObjId", CommonUtils.checkNull(paramMap.get("approvalObjId"))); approvalParamMap.put("status", "inProcess"); sqlSession.update("approval.changeApprovalStatus", approvalParamMap); //2. route 생성 result = CommonUtils.checkNull(CommonUtils.createObjId()); paramMap.put("routeObjId", result); paramMap.put("systemType", Constants.SYSTEM_NAME); sqlSession.insert("approval.createRouteInfo", paramMap); return result; } public void createApprovalTagetInfo(SqlSession sqlSession, Map paramMap, String targetObjIdsArr [])throws Exception{ if(!CommonUtils.isEmpty(targetObjIdsArr) && targetObjIdsArr.length > 0) { Map dupCheckMap = new HashMap(); for (String targetObjId : targetObjIdsArr) { if(StringUtils.isNotBlank(targetObjId) && !dupCheckMap.containsKey(targetObjId)) { //중복제거 dupCheckMap.put(targetObjId, ""); //1. APPROVAL_TARGET 생성 String objid = CommonUtils.checkNull(CommonUtils.createObjId()); paramMap.put("objId", objid); paramMap.put("targetObjId", targetObjId); //paramMap.put("systemType", Constants.SYSTEM_NAME); sqlSession.insert("approval.createApprovalTagetInfo", paramMap); } } } } /** *
* Inboxtask 신규 생성 * * transaction 관리대상. ** @param sqlSession * @param paramMap * @param normalArr * @param helpArr * @param refArr * @return * @throws Exception */ public boolean createInboxTask(SqlSession sqlSession, Map paramMap, List