package com.pms.service; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.sql.Clob; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; 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.JsonUtil; 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 DevMngService extends BaseService{ CommonService commonService = null; @Autowired public void setCommonService(CommonService commonService){ this.commonService = commonService; } /** * 공통코드 조회 시 부모에 해당하는 키를 설정한다. * @param request * @param paramMap */ public void setDevMngCommonCD(HttpServletRequest request, Map paramMap){ paramMap.put("PRODUCT_CD", Constants.PRODUCT_CD); paramMap.put("PRODUCT_GROUP_CODE", Constants.PRODUCT_GROUP_CODE); paramMap.put("OEM_FACTROY_CODE", Constants.OEM_FACTROY_CODE); } public void setPartMngCommonCD(Map paramMap){ paramMap.put("PRODUCT_GROUP_CODE", Constants.PRODUCT_GROUP_CODE); paramMap.put("MATERIAL_CODE", Constants.MATERIAL_CODE); paramMap.put("SPEC_NO_CODE", Constants.SPEC_NO_CODE); paramMap.put("DESIGN_APPLY_POINT_CODE", Constants.DESIGN_APPLY_POINT_CODE); } /** * 프로젝트 베이스 내외작검토 목록 조회 * @param request * @param paramMap * @return */ public List externalWorkReviewList(HttpServletRequest request,Map paramMap){ List> resultList = new ArrayList(); setDevMngCommonCD(request, paramMap); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); try{ resultList = sqlSession.selectList("devMng.externalWorkReviewList", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return CommonUtils.toUpperCaseMapKey(resultList); } /** * 내외작검토 저장 * @param request * @param paramMap * @return */ public Map saveExternalWorkReview(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false); try{ PersonBean person = (PersonBean)request.getSession().getAttribute(Constants.PERSON_BEAN); String writer = CommonUtils.checkNull(person.getUserId()); List> gridDataList = JsonUtil.JsonToList(CommonUtils.checkNull(paramMap.get("gridData"))); for(int i=0;i> spareList = new ArrayList(); List> resultList = new ArrayList(); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); try{ if(paramMap != null && !paramMap.isEmpty()) setPartMngCommonCD(paramMap); spareList = sqlSession.selectList("devMng.structureAscendingList", paramMap); spareList = CommonUtils.toUpperCaseMapKey(spareList); int maxLevel = 0; if(null != spareList && 0 < spareList.size()){ for(int i=0;i> resultList = new ArrayList(); setDevMngCommonCD(request, paramMap); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); try{ resultList = sqlSession.selectList("devMng.moldDevRequestList", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return CommonUtils.toUpperCaseMapKey(resultList); } /** * 금형제작의뢰 상세 조회 * @param request * @param paramMap * @return */ public Map moldDevRequestInfo(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); setDevMngCommonCD(request, paramMap); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); try{ resultMap = sqlSession.selectOne("devMng.moldDevRequestInfo", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return CommonUtils.toUpperCaseMapKey(resultMap); } /** * 내외작검토 저장 * @param request * @param paramMap * @return */ public Map saveMoldDevRequestInfo(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false); try{ PersonBean person = (PersonBean)request.getSession().getAttribute(Constants.PERSON_BEAN); String writer = CommonUtils.checkNull(person.getUserId()); String objId = CommonUtils.checkNull(paramMap.get("OBJID"),CommonUtils.createObjId()); paramMap.put("OBJID",objId); paramMap.put("WRITER",writer); sqlSession.update("devMng.saveMoldDevRequestInfo", paramMap); resultMap.put("result",true); resultMap.put("message", Message.SAVE_SUCCESS); sqlSession.commit(); }catch(Exception e){ resultMap.put("result",false); resultMap.put("message", Message.SAVE_FAILED); sqlSession.rollback(); e.printStackTrace(); }finally{ sqlSession.close(); } return resultMap; } /** * 업체발송처리 * @param request * @param paramMap * @return */ public Map sendMoldDevRequest(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false); try{ PersonBean person = (PersonBean)request.getSession().getAttribute(Constants.PERSON_BEAN); String writer = CommonUtils.checkNull(person.getUserId()); paramMap.put("WRITER",writer); sqlSession.update("devMng.changeMoldDevRequestStatus", paramMap); resultMap.put("result",true); resultMap.put("message", Message.COMPLETE_SUCCESS); sqlSession.commit(); }catch(Exception e){ resultMap.put("result",false); resultMap.put("message", Message.FAILED); sqlSession.rollback(); e.printStackTrace(); }finally{ sqlSession.close(); } return resultMap; } /** * 도면일괄다운로드 * @param request * @param paramMap * @return */ public HashMap getDrawingDownload(HttpServletRequest request, Map paramMap){ HashMap fileMap = new HashMap(); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); try{ System.out.println("paramMap:"+paramMap); String targetPartObjId = CommonUtils.checkNull(paramMap.get("TARGET_DRAWING_DOWNLOAD")); String targetList[] = targetPartObjId.split(","); if(null == targetList || 0 == targetList.length){ targetList[0] = targetPartObjId; } List docTypeList = new ArrayList(); docTypeList.add("3D_CAD"); docTypeList.add("2D_DRAWING_CAD"); docTypeList.add("2D_PDF_CAD"); File zipStorage = new File(Constants.PART_ATTACH_FILE_PAKEGE); if(!zipStorage.exists()) zipStorage.mkdirs(); //선택된 part 목록 if(null != targetList && 0 < targetList.length){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_kkmmss"); Calendar cal = Calendar.getInstance(); String timeStamp = sdf.format(cal.getTime()); //다운받을 zip 파일 set String zipFileName = "금형제작의뢰_"+timeStamp+".zip"; String zipFilePath = Constants.PART_ATTACH_FILE_PAKEGE+File.separator+zipFileName; ZipOutputStream zout = null; zout = new ZipOutputStream(new FileOutputStream(zipFilePath)); byte[] buf = new byte[1024]; //선택된 파트의 첨부파일 정보를 가져온다. for(int i=0;i> fileList = (ArrayList)sqlSession.selectList("devMng.getPartFileList", sqlParamMap); if(0 < fileList.size()){ fileList = CommonUtils.toUpperCaseMapKey(fileList); } if(null != fileList && 0 < fileList.size()){ for(int k=0;k 0){ zout.write(buf, 0, len); } zout.closeEntry(); fis.close(); } } } } zout.close(); fileMap.put("SAVED_FILE_NAME", zipFileName); fileMap.put("REAL_FILE_NAME", zipFileName); fileMap.put("FILE_PATH", Constants.PART_ATTACH_FILE_PAKEGE); } }catch(Exception e){ try { throw e; } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } }finally{ sqlSession.close(); } return fileMap; } /** * * @param request * @param paramMap * @return */ public List eoChangeHistoryList(HttpServletRequest request,Map paramMap){ List> resultList = new ArrayList(); setDevMngCommonCD(request, paramMap); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); try{ resultList = sqlSession.selectList("devMng.eoChangeHistoryList", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return CommonUtils.toUpperCaseMapKey(resultList); } /** * EO 수정이력 대상 Project 정보 조회 * @param request * @param paramMap * @return */ public Map eoChangeHistoryTargetProjectInfo(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); setDevMngCommonCD(request, paramMap); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); try{ resultMap = sqlSession.selectOne("devMng.eoChangeHistoryTargetProjectInfo", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return CommonUtils.toUpperCaseMapKey(resultMap); } /** * EO 수정이력 Project 대상 Part 정보 조회 * @param request * @param paramMap * @return */ public Map eoChangeHistoryTargetPartInfo(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); setDevMngCommonCD(request, paramMap); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); try{ resultMap = sqlSession.selectOne("devMng.eoChangeHistoryTargetProjectInfo", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return CommonUtils.toUpperCaseMapKey(resultMap); } /** * EO 수정이력 대상 Part 목록 조회 * @param request * @param paramMap * @return */ public List eoChangeHistoryPartList(HttpServletRequest request,Map paramMap){ List> resultList = new ArrayList(); setDevMngCommonCD(request, paramMap); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); try{ resultList = sqlSession.selectList("devMng.eoChangeHistoryPartList", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return CommonUtils.toUpperCaseMapKey(resultList); } /** * EO 수정이력 대상 Part 목록 조회 * @param request * @param paramMap * @return */ public List eoChangeHistoryTargetPartList(HttpServletRequest request,Map paramMap){ List> resultList = new ArrayList(); setDevMngCommonCD(request, paramMap); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); try{ resultList = sqlSession.selectList("devMng.eoChangeHistoryTargetPartList", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return CommonUtils.toUpperCaseMapKey(resultList); } /** * EO 수정이력을 저장한다. * @param request * @param paramMap * @return */ public Map saveEOChangeHistoryPart(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false); System.out.println("paramMap:"+paramMap); String targetColumnArr1[] = { "PROJECT_OBJID","OEM_OBJID","CAR_OBJID","PRODUCT_GROUP_OBJID","PRODUCT_OBJID" }; String targetColumnArr2[] ={ "PART_OBJID","PART_NO","EO_NO","EO_PUBLISHED_DATE","EO_APPLY_DATE","EO_STEP","CHANGE_CONTENTS","MEASURE_TYPE","MEASURE_DATE", "CVT","SET","PARTNER_CODE","OEM_ATTRITION_RATE","MY_ATTRITION_RATE","PARTNER_ATTRITION_RATE","PARTNER_ESTIMATE_COST", "MY_COST","OEM_CONTRIBUTION_AMOUNT","MY_CONTRIBUTION_AMOUNT","PARTNER_CONTRIBUTION_AMOUNT" }; try{ PersonBean person = (PersonBean)request.getSession().getAttribute(Constants.PERSON_BEAN); String writer = CommonUtils.checkNull(person.getUserId()); String objIdArr[] = request.getParameterValues("OBJID"); if(null != objIdArr && 0 < objIdArr.length){ 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; } }