422 lines
14 KiB
Java
422 lines
14 KiB
Java
|
|
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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<fromSpecList.length;i++){
|
||
|
|
String objid = CommonUtils.createObjId();
|
||
|
|
String fromSpecObjid = CommonUtils.checkNull(fromSpecList[i]);
|
||
|
|
sqlParamMap.put("objid", objid);
|
||
|
|
sqlParamMap.put("fromObjid", fromSpecObjid);
|
||
|
|
sqlSession.update("spec.mergeSpecDataTranseWithFrom",sqlParamMap);
|
||
|
|
}
|
||
|
|
}else{
|
||
|
|
sqlSession.delete("spec.deleteSpecDataTranseWithFrom",sqlParamMap);
|
||
|
|
}
|
||
|
|
|
||
|
|
if(null != toSpecList && 0 < toSpecList.length){
|
||
|
|
for(int i=0;i<toSpecList.length;i++){
|
||
|
|
String objid = CommonUtils.createObjId();
|
||
|
|
String toSpecObjid = CommonUtils.checkNull(toSpecList[i]);
|
||
|
|
sqlParamMap.put("objid", objid);
|
||
|
|
sqlParamMap.put("toObjid", toSpecObjid);
|
||
|
|
sqlSession.update("spec.mergeSpecDataTranseWithTo",sqlParamMap);
|
||
|
|
}
|
||
|
|
}else{
|
||
|
|
sqlSession.delete("spec.deleteSpecDataTranseWithTo",sqlParamMap);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
sqlSession.commit();
|
||
|
|
}catch(Exception e){
|
||
|
|
sqlSession.rollback();
|
||
|
|
sqlSession.close();
|
||
|
|
throw e;
|
||
|
|
}finally{
|
||
|
|
sqlSession.close();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 치환된 기술자료(From, To)의 목록을 가져온다.
|
||
|
|
* @param request
|
||
|
|
* @param paramMap
|
||
|
|
*/
|
||
|
|
public ArrayList getTransSpecDataList(HttpServletRequest request,Map<String, Object> 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;
|
||
|
|
}
|
||
|
|
}
|