package com.pms.service; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.net.URLDecoder; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; 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.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.text.PDFTextStripper; import org.springframework.beans.factory.annotation.Autowired; 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; @Service public class EOService { @Autowired CommonService commonService; /** * EO 정보를 merge 한다. * @param request * @param paramMap */ public void mergeEO(HttpServletRequest request, Map paramMap){ SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false); try{ String objid = CommonUtils.checkNull(paramMap.get("objId")); String actionType = CommonUtils.checkNull(paramMap.get("actionType")); //EO 정보를 Merge 한다. sqlSession.update("eo.mergeEO",paramMap); //EO의 object id를 가진 Part의 EO 정보를 Update 한다. sqlSession.update("eo.updateConnectedPartEOInfo",paramMap); sqlSession.commit(); }catch(Exception e){ sqlSession.rollback(); throw e; }finally{ sqlSession.close(); } } /** * part를 연결한다. * @param request * @param paramMap */ public void connectPart(HttpServletRequest request, Map paramMap){ SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false); try{ String objId = CommonUtils.checkNull(paramMap.get("eoObjId")); String partObjIdList[] = request.getParameterValues("partObjId"); HttpSession session = request.getSession(); PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN); String personId = CommonUtils.checkNull(person.getUserId()); HashMap eoMap = new HashMap(); paramMap.put("objId", objId); eoMap = getEOInfo(request, paramMap); if(null != partObjIdList && 0 < partObjIdList.length){ for(int i=0;i 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 HashMap packgeingPartFile(HttpServletRequest request, Map paramMap){ HashMap fileMap = new HashMap(); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); try{ String batchType = CommonUtils.checkNull(paramMap.get("fileType")); List docTypeList = new ArrayList(); if("etc".equals(batchType)){ docTypeList.add("PART_MNG_ITEM"); //관리항목 docTypeList.add("PART_ECD"); //ECD }else{ docTypeList.add("PART_SHAPE"); //형상 docTypeList.add("PART_2D"); //2D 도면 docTypeList.add("PART_2D_PDF"); //2D PDF docTypeList.add("PART_3D"); //3D 도면 } //압푹파일 정보로 사용될 EO 정보를 가져온다. String objId = CommonUtils.checkNull(paramMap.get("objId")); HashMap eoMap = new HashMap(); eoMap = getEOInfo(request, paramMap); String eoNo = CommonUtils.checkNull(eoMap.get("EO_NO")).replaceAll("/", ""); String eoDate = CommonUtils.checkNull(eoMap.get("EO_ISSUE_DATE")).replaceAll("/", ""); String carName = CommonUtils.checkNull(eoMap.get("CAR_NAME")).replaceAll("/", ""); String carCode = CommonUtils.checkNull(eoMap.get("CAR_CODE")).replaceAll("/", ""); File zipStorage = new File(Constants.PART_ATTACH_FILE_PAKEGE); if(!zipStorage.exists()) zipStorage.mkdirs(); //선택된 part 목록 String connectedParts[] = request.getParameterValues("connectedPart"); if(null != connectedParts && 0 < connectedParts.length && null != eoMap){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_kkmmss"); Calendar cal = Calendar.getInstance(); String timeStamp = sdf.format(cal.getTime()); //다운받을 zip 파일 set String zipFileName = eoNo+"_"+eoDate+"_"+carName+"_"+carCode+"_"+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 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; } /** * 결재 상신 전 EO의 유효성을 검사한다. * @param request * @param paramMap * @return */ public HashMap checkEOValidate(HttpServletRequest request, Map paramMap){ HashMap resultMap = new HashMap(); HashMap eoMap = new HashMap(); ArrayList partList = new ArrayList(); try{ eoMap = getEOInfo(request, paramMap); if(!eoMap.isEmpty()){ String eoNo = CommonUtils.checkNull(eoMap.get("EO_NO")); String oemObjId = CommonUtils.checkNull(eoMap.get("OEM_OBJID")); String carObjId = CommonUtils.checkNull(eoMap.get("CAR_OBJID")); String eoType = CommonUtils.checkNull(eoMap.get("EO_TYPE")); String designTeam = CommonUtils.checkNull(eoMap.get("DESIGN_TEAM")); String eoIssuDate = CommonUtils.checkNull(eoMap.get("EO_ISSUE_DATE")); String urgentDegree = CommonUtils.checkNull(eoMap.get("URGENT_DEGREE")); String hkmcDate = CommonUtils.checkNull(eoMap.get("HKMC_DISTRIBUTE_DATE")); //EO No 검사 if("".equals(eoNo)){ //EO No가 비어있음 resultMap.put("eoNo", "empty"); }else if(eoNo.toUpperCase().replaceAll(" ", "").contains("NEWEO")){ //EO No가 수정되지 않았음 resultMap.put("eoNo", "default"); }else{ resultMap.put("eoNo", "ok"); } //고객사 검사 if("".equals(oemObjId)){ //선택된 고객사 정보 없음 resultMap.put("oem", "empty"); }else{ resultMap.put("oem", "ok"); } //차종 검사 if("".equals(carObjId)){ //선택된 차종 정보 없음 resultMap.put("car", "empty"); }else{ resultMap.put("car", "ok"); } //EO 종류 if("".equals(eoType)){ //선택된 EO 종류 없음 resultMap.put("eoType", "empty"); }else{ resultMap.put("eoType", "ok"); } //고객사 설계팀 if("".equals(designTeam)){ resultMap.put("designTeam", "empty"); }else{ resultMap.put("designTeam", "ok"); } //EO Issue Date if("".equals(eoIssuDate)){ resultMap.put("eoIssuDate", "empty"); }else{ resultMap.put("eoIssuDate", "ok"); } //긴급도 if("".equals(urgentDegree)){ resultMap.put("urgentDegree", "empty"); }else{ resultMap.put("urgentDegree", "ok"); } //구매배포일 if("".equals(hkmcDate)){ resultMap.put("hkmcDate", "empty"); }else{ resultMap.put("hkmcDate", "ok"); } } partList = getConnectPartList(request, paramMap); if(0 < partList.size()){ resultMap.put("connectPart", "ok"); }else{ resultMap.put("connectPart", "empty"); } }catch(Exception e){ e.printStackTrace(); } return resultMap; } /** * SOP 적용 먼 기준 상위차종 5개의 EO 발행현황을 보여준다. * @param request * @param paramMap * @return */ public ArrayList getEOReleaseList(HttpServletRequest request, Map paramMap){ ArrayList eoList = new ArrayList(); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); try{ eoList = (ArrayList)sqlSession.selectList("eo.getDistantSOPCarEORelease",paramMap); }catch(Exception e){ throw e; }finally{ sqlSession.close(); } return eoList; } }