Files
wace_plm/src/com/pms/service/DevMngService.java
chpark da06c4684c Initial commit: WACE PLM with database initialization features
- Add Docker Compose configurations for dev, prod, and standalone environments
- Add database initialization scripts (init-db.sh, init-db-docker.sh)
- Add enhanced start-docker-linux.sh with DB init support
- Add comprehensive database initialization guide
- Support for automatic dbexport.pgsql import on first run
- Include safety checks for production environment
2025-08-29 15:46:08 +09:00

1182 lines
39 KiB
Java

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<Map<String,Object>> 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<Map<String, Object>> gridDataList = JsonUtil.JsonToList(CommonUtils.checkNull(paramMap.get("gridData")));
for(int i=0;i<gridDataList.size();i++){
Map sqlParamMap = new HashMap();
sqlParamMap = gridDataList.get(i);
String objId = CommonUtils.checkNull(sqlParamMap.get("OBJID"),CommonUtils.createObjId());
sqlParamMap.put("OBJID",objId);
sqlParamMap.put("WRITER",writer);
System.out.println("sqlParamMap:"+sqlParamMap);
sqlSession.update("devMng.saveExternalWorkReview", sqlParamMap);
}
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 paramMap
* @return
*/
public List getStructureAscendingList(HttpServletRequest request,Map paramMap){
List<Map<String,Object>> spareList = new ArrayList();
List<Map<String,Object>> 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<spareList.size();i++){
Map resultMap = new HashMap();
resultMap = (HashMap)spareList.get(i);
int resultLevel = Integer.parseInt(CommonUtils.checkNull(resultMap.get("LEV"),"0"));
if(maxLevel < resultLevel){
maxLevel = resultLevel;
}
}
for(int i=0;i<spareList.size();i++){
Map resultMap = new HashMap();
resultMap = (HashMap)spareList.get(i);
resultMap.put("MAX_LEVEL", maxLevel);
int level = Integer.parseInt(CommonUtils.checkNull(resultMap.get("LEV"),"0"));
for(int j=0;j<maxLevel;j++){
String levelSymbol = "";
if((j+1) == level){
levelSymbol = "*";
}else{
levelSymbol = "";
}
resultMap.put("LEV_"+Integer.toString((j+1)), levelSymbol);
}
resultList.add(resultMap);
}
}
System.out.println("resultList:"+resultList);
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
return CommonUtils.toUpperCaseMapKey(resultList);
}
/**
* 금형제작의뢰 목록 조회
* @param request
* @param paramMap
* @return
*/
public List moldDevRequestList(HttpServletRequest request,Map paramMap){
List<Map<String,Object>> 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<targetList.length;i++){
String targetObjId = CommonUtils.checkNull(targetList[i]);
for(int j=0;j<docTypeList.size();j++){
String targetDocType = CommonUtils.checkNull(docTypeList.get(j));
Map sqlParamMap = new HashMap();
sqlParamMap.put("TARGET_OBJID", targetObjId);
sqlParamMap.put("TARGET_DOC_TYPE", targetDocType);
ArrayList<HashMap<String,Object>> 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<fileList.size();k++){
HashMap fileListMap = (HashMap)fileList.get(k);
String savedFileName = CommonUtils.checkNull(fileListMap.get("SAVED_FILE_NAME"));
String saveFilePath = CommonUtils.checkNull(fileListMap.get("FILE_PATH"));
String docType = CommonUtils.checkNull(fileListMap.get("DOC_TYPE"));
String partNo = CommonUtils.checkNull(fileListMap.get("PART_NO"));
String partRevision = CommonUtils.checkNull(fileListMap.get("REV"));
String realFileName = CommonUtils.checkNull(fileListMap.get("REAL_FILE_NAME"));
String targetFilePath = saveFilePath+File.separator+savedFileName;
System.out.println("targetFilePath:"+targetFilePath);
FileInputStream fis = new FileInputStream(targetFilePath);
//ZIP 파일에 들어갈 파일명을 "품번_revision_문서타입_실제업로드 파일명" 형식으로 지정한다.
zout.putNextEntry(new ZipEntry(partNo+"_"+partRevision+"_"+realFileName));
int len;
while((len = fis.read(buf)) > 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<Map<String,Object>> 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<String,Object> 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<String,Object> 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<Map<String,Object>> 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<Map<String,Object>> 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<objIdArr.length;i++){
String objId = CommonUtils.checkNull(objIdArr[i]);
Map sqlParamMap = new HashMap();
sqlParamMap.put("OBJID", objId);
sqlParamMap.put("STATUS", "create");
sqlParamMap.put("WRITER", writer);
for(int j=0;j<targetColumnArr1.length;j++){
String colName = CommonUtils.checkNull(targetColumnArr1[j]);
sqlParamMap.put(colName, CommonUtils.checkNull(request.getParameter(colName)));
}
for(int k=0;k<targetColumnArr2.length;k++){
String colName = CommonUtils.checkNull(targetColumnArr2[k]);
sqlParamMap.put(colName, CommonUtils.checkNull(request.getParameter(colName+"_"+objId)));
}
sqlSession.update("devMng.saveEOChangeHistoryPart", sqlParamMap);
}
}
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;
}
/**
* 등록된 개발 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<notConnectPartList.size();i++){
Map partMap = (HashMap)notConnectPartList.get(i);
String partNo = CommonUtils.checkNull(partMap.get("PART_NO"));
Map sqlParamMap = new HashMap();
sqlParamMap.put("targetObjId", devMasterObjId);
sqlParamMap.put("partNo", partNo);
sqlParamMap.put("writer", CommonUtils.checkNull(paramMap.get("writer")));
//공법승인
sqlParamMap.put("objId", CommonUtils.createObjId());
sqlParamMap.put("devPoint", "1methodAccept");
sqlSession.insert("devInfoMng.saveDevMasterNotConnectPartInfo",sqlParamMap);
//실제작
sqlParamMap.put("objId", CommonUtils.createObjId());
sqlParamMap.put("devPoint", "2realisticProduce");
sqlSession.insert("devInfoMng.saveDevMasterNotConnectPartInfo",sqlParamMap);
//HMC Nego
sqlParamMap.put("objId", CommonUtils.createObjId());
sqlParamMap.put("devPoint", "3hmcNego");
sqlSession.insert("devInfoMng.saveDevMasterNotConnectPartInfo",sqlParamMap);
}
sqlSession.commit();
}
}catch(Exception e){
sqlSession.rollback();
e.printStackTrace();
}finally{
sqlSession.close();
}
return resultMap;
}
/**
* 개발 Master의 저장,수정에 따른 메일을 발송한다.
* @param request
* @param paramMap
* @return
*/
public Map sendDevMasterInfoSaveMail(HttpServletRequest request,Map paramMap){
Map resultMap = new HashMap();
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession();
try{
String[] receivers = request.getParameterValues("chk");
String objId = CommonUtils.checkNull(request.getParameter("targetObjId"));
if(!"".equals(objId)){
Map devMasterMap = new HashMap();
Map sqlMap = new HashMap();
sqlMap.put("objId", objId);
devMasterMap = sqlSession.selectOne("mail.getDevMasterInfo", sqlMap);
Map mailParamMap = new HashMap();
String subject = "["+CommonUtils.checkNull(devMasterMap.get("CAR_CODE"))+" ("+CommonUtils.checkNull(devMasterMap.get("CAR_NAME"))+")] ["+CommonUtils.checkNull(devMasterMap.get("PRODUCT_GROUP_NAME"))+"] ["+CommonUtils.checkNull(devMasterMap.get("PRODUCT_NAME"))+"] "+Message.MAIL_SUBJECT_DEV_MASTER_CHANGE;
mailParamMap.put("SUBJECT", subject);
mailParamMap.putAll(devMasterMap);
String bodyContents = MailUtil.getHTMLContents("devMasterChangeMailTemplate", mailParamMap);
//3. 메일 발송 대상 조회
for(String receiver : receivers){
if(receiver.contains(":")){
String[] receiverSplit = receiver.split(":");
String receiverId = CommonUtils.checkNull(receiverSplit[0]);
String receiverEmail = CommonUtils.checkNull(receiverSplit[1]);
//4. 메일 발송
MailUtil.sendMail(Constants.ADMIN_USER_ID, Constants.FROM_ADDR, receiverId, receiverEmail, null, subject, bodyContents, Constants.MAIL_TYPE_PROBLEM_RES_DISTRIBUTE);
}
}
resultMap.put("result", true);
resultMap.put("msg", Message.SEND_MAIL_SUCCESS);
}
}catch(Exception e){
resultMap.put("result", false);
resultMap.put("msg", Message.FAILED);
e.printStackTrace();
}finally{
sqlSession.close();
}
return resultMap;
}
/**
* 개발 Master의 가소요 적용 작성 및 수정 시 메일배포
* @param request
* @param paramMap
* @return
*/
public Map sendDevMasterApplyEOInfoSaveMail(HttpServletRequest request,Map paramMap){
Map resultMap = new HashMap();
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession();
try{
String[] receivers = request.getParameterValues("chk");
String objId = CommonUtils.checkNull(request.getParameter("targetObjId"));
if(!"".equals(objId)){
Map devMasterMap = new HashMap();
Map sqlMap = new HashMap();
sqlMap.put("objId", objId);
devMasterMap = sqlSession.selectOne("mail.getDevMasterApplyEOInfo", sqlMap);
Map mailParamMap = new HashMap();
String subject = "["+CommonUtils.checkNull(devMasterMap.get("CAR_CODE"))+" ("+CommonUtils.checkNull(devMasterMap.get("CAR_NAME"))+")] ["+CommonUtils.checkNull(devMasterMap.get("PRODUCT_GROUP_NAME"))+"] ["+CommonUtils.checkNull(devMasterMap.get("PRODUCT_NAME"))+"] "+Message.MAIL_SUBJECT_DEV_MASTER_APPLY_EO_CHANGE;
mailParamMap.put("SUBJECT", subject);
mailParamMap.putAll(devMasterMap);
String bodyContents = MailUtil.getHTMLContents("devMasterApplyEOInfoSaveMailTemplate", mailParamMap);
//3. 메일 발송 대상 조회
for(String receiver : receivers){
if(receiver.contains(":")){
String[] receiverSplit = receiver.split(":");
String receiverId = CommonUtils.checkNull(receiverSplit[0]);
String receiverEmail = CommonUtils.checkNull(receiverSplit[1]);
//4. 메일 발송
MailUtil.sendMail(Constants.ADMIN_USER_ID, Constants.FROM_ADDR, receiverId, receiverEmail, null, subject, bodyContents, Constants.MAIL_TYPE_PROBLEM_RES_DISTRIBUTE);
}
}
resultMap.put("result", true);
resultMap.put("msg", Message.SEND_MAIL_SUCCESS);
}
}catch(Exception e){
resultMap.put("result", false);
resultMap.put("msg", Message.FAILED);
e.printStackTrace();
}finally{
sqlSession.close();
}
return resultMap;
}
/**
* 개발 Master에 연결된 Part별 개발마스터 정보를 저장한다.
* @param request
* @param paramMap
* @return
*/
public Map saveDevMasterConnectPartListInfo(HttpServletRequest request,Map paramMap){
Map resultMap = new HashMap();
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
try{
String[] connectedParts = request.getParameterValues("connectedPartObjId");
String targetObjId = CommonUtils.checkNull(request.getParameter("targetObjId"));
if(null != connectedParts && 0 < connectedParts.length){
for(int i=0;i<connectedParts.length;i++){
String connectPartObjId = CommonUtils.checkNull(connectedParts[i].toString());
Map sqlParamMap = new HashMap();
sqlParamMap.put("objId",connectPartObjId);
sqlParamMap.put("targetObjId",targetObjId);
sqlParamMap.put("devPoint",CommonUtils.checkNull(request.getParameter("connectedPartDevPoint_"+connectPartObjId)));
sqlParamMap.put("partNo",CommonUtils.checkNull(request.getParameter("connectedPartNo_"+connectPartObjId)));
sqlParamMap.put("eoObjId",CommonUtils.checkNull(request.getParameter("eoObjId_"+connectPartObjId)));
sqlParamMap.put("rate",CommonUtils.checkNull(request.getParameter("rate_"+connectPartObjId)));
sqlParamMap.put("commonType",CommonUtils.checkNull(request.getParameter("commonType_"+connectPartObjId)));
sqlParamMap.put("prodCount",CommonUtils.checkNull(request.getParameter("prodCount_"+connectPartObjId)));
sqlParamMap.put("netWeight",CommonUtils.checkNull(request.getParameter("netWeight_"+connectPartObjId)));
sqlParamMap.put("widthPitch",CommonUtils.checkNull(request.getParameter("widthPitch_"+connectPartObjId)));
sqlParamMap.put("sourcingMake",CommonUtils.checkNull(request.getParameter("sourcingMake_"+connectPartObjId)));
sqlParamMap.put("sourcingProd",CommonUtils.checkNull(request.getParameter("sourcingProd_"+connectPartObjId)));
sqlParamMap.put("prodSizeHorizon",CommonUtils.checkNull(request.getParameter("prodSizeHorizon_"+connectPartObjId)));
sqlParamMap.put("prodSizeVertical",CommonUtils.checkNull(request.getParameter("prodSizeVertical_"+connectPartObjId)));
sqlParamMap.put("prodSizeHeight",CommonUtils.checkNull(request.getParameter("prodSizeHeight_"+connectPartObjId)));
sqlParamMap.put("blkExpandSizeWidth",CommonUtils.checkNull(request.getParameter("blkExpandSizeWidth_"+connectPartObjId)));
sqlParamMap.put("blkExpandSizePitch",CommonUtils.checkNull(request.getParameter("blkExpandSizePitch_"+connectPartObjId)));
sqlParamMap.put("blkMarginSizeWidth",CommonUtils.checkNull(request.getParameter("blkMarginSizeWidth_"+connectPartObjId)));
sqlParamMap.put("blkMarginSizePitch",CommonUtils.checkNull(request.getParameter("blkMarginSizePitch_"+connectPartObjId)));
sqlParamMap.put("blkSizeRealWidth",CommonUtils.checkNull(request.getParameter("blkSizeRealWidth_"+connectPartObjId)));
sqlParamMap.put("blkSizeViewWidth",CommonUtils.checkNull(request.getParameter("blkSizeViewWidth_"+connectPartObjId)));
sqlParamMap.put("blkSizeRealPitch",CommonUtils.checkNull(request.getParameter("blkSizeRealPitch_"+connectPartObjId)));
sqlParamMap.put("blkSizeViewPitch",CommonUtils.checkNull(request.getParameter("blkSizeViewPitch_"+connectPartObjId)));
sqlParamMap.put("blkArrayType",CommonUtils.checkNull(request.getParameter("blkArrayType_"+connectPartObjId)));
sqlParamMap.put("blkCVT",CommonUtils.checkNull(request.getParameter("blkCVT_"+connectPartObjId)));
sqlParamMap.put("inputWeightRealValue",CommonUtils.checkNull(request.getParameter("inputWeightRealValue_"+connectPartObjId)));
sqlParamMap.put("inputWeightViewValue",CommonUtils.checkNull(request.getParameter("inputWeightViewValue_"+connectPartObjId)));
sqlParamMap.put("yield",CommonUtils.checkNull(request.getParameter("yield_"+connectPartObjId)));
sqlParamMap.put("targetYield",CommonUtils.checkNull(request.getParameter("targetYield_"+connectPartObjId)));
sqlParamMap.put("plasticTheoryTon",CommonUtils.checkNull(request.getParameter("plasticTheoryTon_"+connectPartObjId)));
sqlParamMap.put("prodTon",CommonUtils.checkNull(request.getParameter("prodTon_"+connectPartObjId)));
sqlParamMap.put("moldPlasticType",CommonUtils.checkNull(request.getParameter("moldPlasticType_"+connectPartObjId)));
sqlParamMap.put("moldProdType",CommonUtils.checkNull(request.getParameter("moldProdType_"+connectPartObjId)));
sqlParamMap.put("moldSubType1",CommonUtils.checkNull(request.getParameter("moldSubType1_"+connectPartObjId)));
sqlParamMap.put("moldSubType2",CommonUtils.checkNull(request.getParameter("moldSubType2_"+connectPartObjId)));
sqlParamMap.put("op05",CommonUtils.checkNull(request.getParameter("op05_"+connectPartObjId)));
sqlParamMap.put("op10",CommonUtils.checkNull(request.getParameter("op10_"+connectPartObjId)));
sqlParamMap.put("op20",CommonUtils.checkNull(request.getParameter("op20_"+connectPartObjId)));
sqlParamMap.put("op30",CommonUtils.checkNull(request.getParameter("op30_"+connectPartObjId)));
sqlParamMap.put("op40",CommonUtils.checkNull(request.getParameter("op40_"+connectPartObjId)));
sqlParamMap.put("op50",CommonUtils.checkNull(request.getParameter("op50_"+connectPartObjId)));
sqlParamMap.put("op60",CommonUtils.checkNull(request.getParameter("op60_"+connectPartObjId)));
sqlParamMap.put("op70",CommonUtils.checkNull(request.getParameter("op70_"+connectPartObjId)));
sqlParamMap.put("op80",CommonUtils.checkNull(request.getParameter("op80_"+connectPartObjId)));
sqlParamMap.put("moldMakeCompany",CommonUtils.checkNull(request.getParameter("moldMakeCompany_"+connectPartObjId)));
sqlParamMap.put("prodCompany",CommonUtils.checkNull(request.getParameter("prodCompany_"+connectPartObjId)));
sqlParamMap.put("remarks",CommonUtils.checkNull(request.getParameter("remarks_"+connectPartObjId)));
System.out.println("saveDevMasterConnectPartListInfo(sqlParamMap):"+sqlParamMap);
sqlSession.update("devInfoMng.saveDevMasterConnectPartInfo", sqlParamMap);
}
sqlSession.commit();
}
resultMap.put("result",true);
}catch(Exception e){
resultMap.put("result",false);
sqlSession.rollback();
e.printStackTrace();
}finally{
sqlSession.close();
}
return resultMap;
}
/**
* 개발 Master에 연결된 Part별 적용 EO 정보를 저장한다.
* @param request
* @param paramMap
* @return
*/
public Map saveDevMasterPartApplyEOInfo(HttpSession session,HttpServletRequest request,Map paramMap){
Map resultMap = new HashMap();
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
try{
PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN);
paramMap.put("writer", CommonUtils.checkNull(person.getUserId()));
sqlSession.update("devInfoMng.mregeDevMasterPartApplyEOInfo", paramMap);
sqlSession.commit();
resultMap.put("result",true);
}catch(Exception e){
resultMap.put("result",false);
sqlSession.rollback();
e.printStackTrace();
}finally{
sqlSession.close();
}
return resultMap;
}
/**
* 개발 Master에 연결된 개발 Master Part의 상세 정보를 가져온다.
* @param request
* @param paramMap
* @return
*/
public Map getDevMasterPartInfo(HttpServletRequest request,Map paramMap){
Map resultMap = new HashMap();
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession();
try{
String objId = CommonUtils.checkNull(request.getParameter("objId"));
if(!"".equals(objId)){
resultMap = sqlSession.selectOne("devInfoMng.getDevMasterPartInfo", paramMap);
}
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
return resultMap;
}
/**
* 개발 Master에 연결된 Part별 EO 적용 목록을 가져온다.
* @param request
* @param paramMap
* @return
*/
public List getDevMasterPartApplyEOInfoList(HttpServletRequest request,Map paramMap){
List resultList = new ArrayList();
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession();
try{
String targetObjId = CommonUtils.checkNull(request.getParameter("targetObjId"));
resultList = sqlSession.selectList("devInfoMng.getDevMasterPartEOInfoList", paramMap);
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
return resultList;
}
/**
* 개발 Master에 연결된 Part별 EO 적용 상세내용을 가져온다(단건).
* @param request
* @param paramMap
* @return
*/
public Map getDevMasterPartApplyEOInfo(HttpServletRequest request,Map paramMap){
Map resultMap = new HashMap();
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession();
try{
String targetObjId = CommonUtils.checkNull(request.getParameter("targetObjId"));
String objId = CommonUtils.checkNull(request.getParameter("objId"));
if("".equals(objId)){
resultMap.put("OBJID", CommonUtils.createObjId());
}else{
resultMap = sqlSession.selectOne("devInfoMng.getDevMasterPartEOInfo", paramMap);
}
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
return resultMap;
}
/**
* Part Master에 해당하는 Part정보를 가져온다.
* @param sqlSession
* @param paramMap
* @return
*/
public List getPartMasterConnectedPartList(SqlSession sqlSession,Map paramMap){
List resultList = new ArrayList();
try{
resultList = sqlSession.selectList("devInfoMng.getPartMasterConnectedPartList", paramMap);
}catch(Exception e){
e.printStackTrace();
}
return resultList;
}
/**
* 개발 Master에 연결된 Part Master의 Part중
* 개발 Master와 연결되지 않은 Part의 목록을 가져온다.
* @param sqlSession
* @param paramMap
* @return
*/
public List getDevMasterNotConnectPartList(SqlSession sqlSession,Map paramMap){
List resultList = new ArrayList();
try{
resultList = sqlSession.selectList("devInfoMng.getDevMasterNotConnectPartList", paramMap);
}catch(Exception e){
e.printStackTrace();
}
return resultList;
}
/**
* 개발 Master에 연결된 Part Master의 Part List목록을 가져온다.
* @param request
* @param paramMap
* @return
*/
public List getDevMasterConnectPartInfoList(HttpServletRequest request,Map paramMap){
List<Map> 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<HashMap> 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;
}
}