package com.pms.service; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.sql.Clob; 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.ibatis.session.SqlSession; import org.codehaus.jackson.map.ObjectMapper; import org.json.simple.JSONArray; import org.json.simple.JSONValue; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.pms.common.Message; import com.pms.common.SqlMapConfig; import com.pms.common.bean.PersonBean; import com.pms.common.service.BaseService; import com.pms.common.utils.CommonUtils; import com.pms.common.utils.Constants; import com.pms.common.utils.MailUtil; @Service public class DevInfoMngService extends BaseService{ CommonService commonService = null; @Autowired public void setCommonService(CommonService commonService){ this.commonService = commonService; } /** * 등록된 개발 Master의 목록을 가져온다. * @param request * @param paramMap * @return */ public List getDevMasterList(HttpServletRequest request,Map paramMap){ List resultList = new ArrayList(); Map pageMap = new HashMap(); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); try{ //paging start PersonBean person = (PersonBean)request.getSession().getAttribute(Constants.PERSON_BEAN); paramMap.put("connectedUserId", person.getUserId()); String countPerPage = CommonUtils.checkNull(request.getParameter("countPerPage"), ""+Constants.COUNT_PER_PAGE+""); paramMap.put("COUNT_PER_PAGE", Integer.parseInt(countPerPage)); pageMap = (HashMap)sqlSession.selectOne("devInfoMng.getDevMasterListCnt", 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"))); //해당 Task에 연결된 WBS Task 수를 가져오기 위한 기준으로 사용 paramMap.put("TASK_REL_TYPE", CommonUtils.checkNull(Constants.CONNECT_TYPE_CODE_DEV_MASTER)); //paging end resultList = sqlSession.selectList("devInfoMng.getDevMasterList", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return resultList; } /** * 등록된 개발 Master의 상세내용을 가져온다. * @param request * @param paramMap * @return */ public Map getDevMasterInfo(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); try{ resultMap = sqlSession.selectOne("devInfoMng.getDevMasterInfo", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return resultMap; } /** * 등록된 Part Master의 목록을 가져온다. * @param request * @param paramMap * @return */ public List getPartMasterList(HttpServletRequest request,Map paramMap){ List resultList = new ArrayList(); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); try{ resultList = sqlSession.selectList("devInfoMng.getPartMasterList", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return resultList; } /** * 개발 Master를 저장한다. * @param request * @param paramMap * @return */ public Map saveDevMasterInfo(HttpSession session,HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false); PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN); paramMap.put("writer", CommonUtils.checkNull(person.getUserId())); try{ sqlSession.update("devInfoMng.saveDevMasterInfo", paramMap); resultMap.put("result",true); sqlSession.commit(); }catch(Exception e){ resultMap.put("result",false); sqlSession.rollback(); e.printStackTrace(); }finally{ sqlSession.close(); } return resultMap; } /** * 개발 Master 갑지의 중복여부를 확인한다. * @param request * @param paramMap * @return */ public Map checkDevMasterDuplicate(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); try{ resultMap = sqlSession.selectOne("devInfoMng.checkDevMasterDuplicate", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return resultMap; } /** * 개발 Master와 연결된 Part Master를 확인하여 개발 Master와 연결해준다. * @param request * @param paramMap * @return */ public Map checkDevMasterConnectedPartMasterPart(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false); try{ String partMasterObjId = CommonUtils.checkNull(paramMap.get("partMasterObjId")); String devMasterObjId = CommonUtils.checkNull(paramMap.get("objId")); if(!"".equals(partMasterObjId)){ List notConnectPartList = new ArrayList(); //Part Master의 정보가 있을 경우 연결된 Part의 정보 목록을 가져온다. notConnectPartList = getDevMasterNotConnectPartList(sqlSession, paramMap); //연결되지 않은 Part가 있을 경우 Part 별 구분(공법승인,실제작,HMC Nego)에 해당하는 데이터를 insert 하여준다. for(int i=0;i resultList = new ArrayList(); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); try{ resultList = sqlSession.selectList("devInfoMng.getDevMasterConnectPartInfoList", paramMap); if(null != resultList && 0 < resultList.size()){ for(Map partMap : resultList){ partMap.put("REMARKS", CommonUtils.getClobToString((Clob)partMap.get("REMARKS"))); String partObjId = CommonUtils.checkNull(partMap.get("PART_OBJID")); String drawingPartObjId = CommonUtils.checkNull(partMap.get("DRAWING_NO_OBJID")); String targetObjId = ""; if(!"".equals(drawingPartObjId)){ targetObjId = drawingPartObjId; }else{ targetObjId = partObjId; } Map shapeFileMap = new HashMap(); shapeFileMap.put("targetObjId", targetObjId); shapeFileMap.put("docType", CommonUtils.checkNull(Constants.FILE_DOC_TYPE_PART_SHAPE_CODE)); //해당 Row에 해당하는 첨부파일을 가져온다. ArrayList shapeFileList = commonService.getFileList(shapeFileMap); if(null != shapeFileList && 0 < shapeFileList.size()){ for(int i = 0 ; i < shapeFileList.size() ; i++){ Map fileResultMap = (HashMap)shapeFileList.get(i); partMap.put("DEV_MASTER_ATTACH_FILE_PATH", CommonUtils.checkNull(fileResultMap.get("FILE_PATH"))); partMap.put("DEV_MASTER_ATTACH_SAVED_FILE_NAME", CommonUtils.checkNull(fileResultMap.get("SAVED_FILE_NAME"))); partMap.put("DEV_MASTER_ATTACH_UPPER_FILE_EXT", CommonUtils.checkNull(fileResultMap.get("UPPER_FILE_EXT"))); partMap.put("DEV_MASTER_ATTACH_REAL_FILE_NAME", CommonUtils.checkNull(fileResultMap.get("REAL_FILE_NAME"))); } } String partNo = CommonUtils.checkNull(partMap.get("PART_NO")); List connectEOList = new ArrayList(); if(!"".equals(partNo)){ Map eoSqlMap = new HashMap(); eoSqlMap.put("partNo", partNo); connectEOList = sqlSession.selectList("devInfoMng.getConnectPartEOList", eoSqlMap); partMap.put("EO_LIST",connectEOList); } } } }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return resultList; } /** * 개발마스터 Part별 시점정보조회 * @param paramMap * @return */ public Map getDevMasterPartDetailByDevPoint(Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = null; try{ sqlSession = SqlMapConfig.getInstance().getSqlSession(); resultMap = sqlSession.selectOne("devInfoMng.getDevMasterPartDetailByDevPoint", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return resultMap; } public List getCostSystemYieldInfoList(HttpServletRequest request,Map paramMap){ List costYieldList = new ArrayList(); List resultList = new ArrayList(); String partNo = CommonUtils.checkNull(request.getParameter("partNo")); String url = "http://cost.iljitech.co.kr/Api/yield?SID=ILJIAPI2ca144c2137&partNo="+partNo; System.out.println("getCostSystemYieldInfoList(url):"+url); try{ URL jsonUrl = new URL(url); HttpURLConnection conn = (HttpURLConnection)jsonUrl.openConnection(); Object obj = JSONValue.parse(new InputStreamReader(conn.getInputStream())); JSONArray jsonArr = (JSONArray)obj; System.out.println("getCostSystemYieldInfoList(jsonArr):"+jsonArr); costYieldList = jsonArr; }catch(Exception e){ e.printStackTrace(); } return costYieldList; } }