package com.pms.service; import java.sql.Clob; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.ibatis.session.SqlSession; 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; @Service public class SpecDataService { /** * 기술자료를 등록한다. * @param request * @param paramMap */ public void mergeSpecData(HttpServletRequest request, Map paramMap){ SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); try{ String objid = CommonUtils.checkNull(paramMap.get("objid")); String isLast = CommonUtils.checkNull(paramMap.get("isLast")); String actionType = CommonUtils.checkNull(paramMap.get("actionType")); if("regist".equals(actionType)){ HttpSession session = request.getSession(); PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN); paramMap.put("writer", CommonUtils.checkNull(person.getUserId())); HashMap specBaseDataMap = (HashMap)sqlSession.selectOne("spec.createCategoryDocBaseInfo", paramMap); paramMap.put("revision", "A"); paramMap.put("docNo", CommonUtils.checkNull(specBaseDataMap.get("DOC_NO"))); paramMap.put("isLast", "1"); String categoryMidObjId = CommonUtils.checkNull(paramMap.get("categoryMid")); String categoryLowObjId = CommonUtils.checkNull(paramMap.get("categoryLow")); HashMap categoryInfoMap = new HashMap(); HashMap sqlParamMap = new HashMap(); sqlParamMap.put("OBJID", categoryMidObjId); categoryInfoMap = (HashMap)sqlSession.selectOne("admin.getSpecCategoryBaseInfo",sqlParamMap); String categoryMidName = CommonUtils.checkNull(categoryInfoMap.get("CATEGORY_NAME")); categoryInfoMap = new HashMap(); sqlParamMap = new HashMap(); sqlParamMap.put("OBJID", categoryLowObjId); categoryInfoMap = (HashMap)sqlSession.selectOne("admin.getSpecCategoryBaseInfo",sqlParamMap); String categoryLowName = CommonUtils.checkNull(categoryInfoMap.get("CATEGORY_NAME")); //SPEC 제정 시 공지사항에 등록 if("SPEC".equals(categoryMidName)){ //SPEC의 개정 시 알림 //개정 시 공지사항에 입력된다. String specCategoryName = categoryLowName; String specNo = CommonUtils.checkNull(paramMap.get("specNo")); String revisionNoticeTitle = "["+specCategoryName+" "+specNo+"가 제정되었습니다.]"; paramMap.put("writer", CommonUtils.checkNull(person.getUserId())); HashMap specRevisionMap = new HashMap(); specRevisionMap.put("objId", CommonUtils.createObjId()); specRevisionMap.put("systemType", Constants.SYSTEM_NAME); specRevisionMap.put("boardType", "notice"); specRevisionMap.put("reqCategory", "specRevision"); specRevisionMap.put("title", revisionNoticeTitle); specRevisionMap.put("reqContents", objid); specRevisionMap.put("reqWriter", CommonUtils.checkNull(person.getUserId())); sqlSession.insert("board.mergeBoardInfo", specRevisionMap); } } sqlSession.insert("spec.saveSpecData", paramMap); }catch(Exception e){ throw e; }finally{ sqlSession.close(); } } /** * 기술자료를 revision 한다. * @param request * @param paramMap */ public void revisionSpecData(HttpServletRequest request, Map paramMap){ SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false); try{ String objid = CommonUtils.checkNull(paramMap.get("objid")); String revision = CommonUtils.checkNull(paramMap.get("revision")); String actionType = CommonUtils.checkNull(paramMap.get("actionType")); System.out.println("revisionSpecData(paramMap):"+paramMap); if("revision".equals(actionType)){ //기존 데이터의 is_last를 0으로 변경한다. paramMap.put("objid", objid); sqlSession.insert("spec.updateSpecDataIsLast", paramMap); String newObjid = CommonUtils.createObjId(); paramMap.put("objid", newObjid); paramMap.put("oldObjid", objid); //해당 Revision의 다음 Revision을 지정한다. paramMap.put("revision", CommonUtils.getNextRevision(revision)); HttpSession session = request.getSession(); PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN); paramMap.put("writer", CommonUtils.checkNull(person.getUserId())); sqlSession.insert("spec.revisionSpecData", paramMap); //revision 후 지정된 인원에게 SPEC의 개정여부를 알려준다. HashMap specInfoMap = new HashMap(); //SPEC의 상세 정보를 가져온다. paramMap.put("objid", objid); specInfoMap = getSpecDataInfo(request, paramMap); String specNo = CommonUtils.checkNull(specInfoMap.get("SPEC_NO")); String writerUserName = CommonUtils.checkNull(specInfoMap.get("USER_NAME")); String writerDeptName = CommonUtils.checkNull(specInfoMap.get("DEPT_NAME")); String specType = CommonUtils.checkNull(specInfoMap.get("CATEGORY_TYPE")); String specCategoryName = CommonUtils.checkNull(specInfoMap.get("CATEGORY_NAME")); //카테고리 구분이 SPEC인 경우만 프로세스 진행 if("SPEC".equals(specType)){ //SPEC의 개정 시 알림(개발중) //개정 시 공지사항에 입력된다. String revisionNoticeTitle = "["+specCategoryName+" "+specNo+"가 개정되었습니다.]"; HashMap specRevisionMap = new HashMap(); specRevisionMap.put("objId", CommonUtils.createObjId()); specRevisionMap.put("systemType", Constants.SYSTEM_NAME); specRevisionMap.put("boardType", "notice"); specRevisionMap.put("reqCategory", "specRevision"); specRevisionMap.put("title", revisionNoticeTitle); specRevisionMap.put("reqContents", newObjid); specRevisionMap.put("reqWriter", CommonUtils.checkNull(person.getUserId())); sqlSession.insert("board.mergeBoardInfo", specRevisionMap); } sqlSession.commit(); } }catch(Exception e){ sqlSession.rollback(); sqlSession.close(); throw e; }finally{ sqlSession.close(); } } /** * 기술자료의 상세 내용을 가져온다. * @param request * @param paramMap */ public HashMap getSpecDataInfo(HttpServletRequest request,Map paramMap){ SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); HashMap specDataMap = new HashMap(); try{ specDataMap = (HashMap)sqlSession.selectOne("spec.getSpecDataInfo", paramMap); if(null != specDataMap){ String description = CommonUtils.getClobToString((Clob)specDataMap.get("DESCRIPTION")); specDataMap.put("DESCRIPTION", description); String changeHistory = CommonUtils.getClobToString((Clob)specDataMap.get("CHANGE_HISTORY")); specDataMap.put("CHANGE_HISTORY", changeHistory); } }catch(Exception e){ throw e; }finally{ sqlSession.close(); } return specDataMap; } /** * 기술자료의 목록을 가져온다.(페이징 O) * @param request * @param paramMap */ public ArrayList getSpecDataInfoListPaging(HttpServletRequest request,Map paramMap){ SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); ArrayList specDataList = new ArrayList(); try{ String menuObjId = CommonUtils.checkNull(request.getParameter("menuObjId")); /* boolean isFirst = false; if(!"".equals(menuObjId)){ isFirst = true; } if(!isFirst){*/ String page = CommonUtils.checkNull(request.getParameter("page")); String countPerPage = CommonUtils.checkNull("15", ""+Constants.ADMIN_COUNT_PER_PAGE+""); paramMap.put("search_isLast", "1"); paramMap.put("COUNT_PER_PAGE", Integer.parseInt(countPerPage)); HashMap pageMap = new HashMap(); pageMap = (HashMap)sqlSession.selectOne("spec.getSpecDataListCnt", paramMap); pageMap = (HashMap)CommonUtils.setPagingInfo(request, pageMap,countPerPage); paramMap.put("PAGE_END", CommonUtils.checkNull(pageMap.get("PAGE_END"))); paramMap.put("PAGE_START", CommonUtils.checkNull(pageMap.get("PAGE_START"))); specDataList = (ArrayList)sqlSession.selectList("spec.getSpecDataList", paramMap); //} }catch(Exception e){ throw e; }finally{ sqlSession.close(); } return specDataList; } /** * 기술자료 Revision 리스트 가져온다 * @param request * @param paramMap */ public ArrayList getRevisionList(HttpServletRequest request,Map paramMap){ SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); ArrayList revisionList = new ArrayList(); ArrayList fileList = new ArrayList(); HashMap fileMap = new HashMap(); HashMap objmap = new HashMap(); HashMap fileListMap = new HashMap(); int cnt = 0; try{ revisionList = (ArrayList)sqlSession.selectList("spec.getRevisionList", paramMap); /* for(Object value : revisionList){ System.out.println("value : ->"+value ); fileMap = (HashMap) value; System.out.println(fileMap.get("OBJID")); objmap.put("targetObjId", fileMap.get("OBJID")); fileList = (ArrayList)sqlSession.selectList("common.getFileList", objmap); fileListMap.put("FILELIST", fileList); //revisionList.add(cnt, fileListMap); System.out.println(fileMap.get("OBJID")); System.out.println(fileMap.get("OBJID")); cnt++; } */ }catch(Exception e){ throw e; }finally{ sqlSession.close(); } return revisionList; } /** * 기술자료의 목록을 가져온다.(페이징 X) * @param request * @param paramMap */ public ArrayList getSpecDataInfoList(HttpServletRequest request,Map paramMap){ SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); ArrayList specDataList = new ArrayList(); try{ specDataList = (ArrayList)sqlSession.selectList("spec.getSpecDataInfoList", paramMap); }catch(Exception e){ throw e; }finally{ sqlSession.close(); } return specDataList; } /** * 기술자료의 치환시 조회된 기술자료목록을 가져온다.(페이징 X) * @param request * @param paramMap */ public ArrayList getTransSpecDataTargetList(HttpServletRequest request,Map paramMap){ SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); ArrayList specDataList = new ArrayList(); try{ specDataList = (ArrayList)sqlSession.selectList("spec.getTransSpecDataTargetList", paramMap); }catch(Exception e){ throw e; }finally{ sqlSession.close(); } return specDataList; } /** * 기술자료의 카테고리 데이터셋(대, 중, 소분류를 가져온다.) * @param request * @param paramMap */ public HashMap getSpecDataInfoCategorySet(HttpServletRequest request,Map paramMap){ SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); HashMap categorySetMap = new HashMap(); try{ paramMap.put("status", "active"); categorySetMap = sqlSession.selectOne("spec.getSpecDataInfoCategorySet",paramMap); }catch(Exception e){ throw e; }finally{ sqlSession.close(); } return categorySetMap; } /** * 기술자료를 치환한다. * @param request * @param paramMap */ public void mergeSpecDataTrans(HttpServletRequest request,Map paramMap){ SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false); try{ String[] fromSpecList = request.getParameterValues("spec_fromObjid"); String[] toSpecList = request.getParameterValues("spec_toObjid"); String targetObjid = CommonUtils.checkNull(request.getParameter("targetObjid")); String categoryObjId = CommonUtils.checkNull(request.getParameter("categoryObjId")); System.out.println("targetObjid:"+targetObjid); System.out.println("categoryObjId:"+categoryObjId); HashMap sqlParamMap = new HashMap(); sqlParamMap.put("targetObjid", targetObjid); sqlParamMap.put("categoryObjId", categoryObjId); if("" != targetObjid){ if(null != fromSpecList && 0 < fromSpecList.length){ for(int i=0;i paramMap){ ArrayList specDataList = new ArrayList(); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); try{ String selectType = CommonUtils.checkNull(paramMap.get("type")); if("from".equals(selectType)){ specDataList = (ArrayList)sqlSession.selectList("spec.getTransSpecDataFromList",paramMap); }else if("to".equals(selectType)){ specDataList = (ArrayList)sqlSession.selectList("spec.getTransSpecDataToList",paramMap); } }catch(Exception e){ throw e; }finally{ sqlSession.close(); } return specDataList; } }