ERP-node/src/com/pms/service/SpecDataService.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;
}
}