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
This commit is contained in:
489
src/com/pms/service/DistributionService.java
Normal file
489
src/com/pms/service/DistributionService.java
Normal file
@@ -0,0 +1,489 @@
|
||||
package com.pms.service;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.sql.Clob;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
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.service.BaseService;
|
||||
import com.pms.common.utils.CommonUtils;
|
||||
import com.pms.common.utils.Constants;
|
||||
import com.pms.common.utils.MailUtil;
|
||||
|
||||
@Service
|
||||
public class DistributionService extends BaseService{
|
||||
|
||||
/**
|
||||
* 비정규배포 목록을 가져온다.
|
||||
* @param request
|
||||
* @param paramMap
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public ArrayList<HashMap<String,Object>> getDistributionMngList(HttpServletRequest request, Map paramMap){
|
||||
ArrayList<HashMap<String,Object>> distributionMngList = new ArrayList();
|
||||
HashMap pageMap = new HashMap();
|
||||
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession();
|
||||
try{
|
||||
String page = CommonUtils.checkNull(request.getParameter("page"));
|
||||
String countPerPage = CommonUtils.checkNull(request.getParameter("countPerPage"), ""+Constants.ADMIN_COUNT_PER_PAGE+"");
|
||||
|
||||
paramMap.put("COUNT_PER_PAGE", Integer.parseInt(countPerPage));
|
||||
|
||||
pageMap = (HashMap)sqlSession.selectOne("distribution.getDistributionMngListCnt", paramMap);
|
||||
pageMap = (HashMap)CommonUtils.setPagingInfo(request, pageMap);
|
||||
|
||||
paramMap.put("PAGE_END", CommonUtils.checkNull(pageMap.get("PAGE_END")));
|
||||
paramMap.put("PAGE_START", CommonUtils.checkNull(pageMap.get("PAGE_START")));
|
||||
|
||||
distributionMngList = (ArrayList)sqlSession.selectList("distribution.getDistributionMngList", paramMap);
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
}finally{
|
||||
sqlSession.close();
|
||||
}
|
||||
return distributionMngList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 비정규배포를 등록/수정한다.
|
||||
* @param request
|
||||
* @param paramMap
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public void mergeDistribution(HttpServletRequest request, Map paramMap){
|
||||
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession();
|
||||
try{
|
||||
|
||||
String distributeObjid = CommonUtils.checkNull(paramMap.get("objId"));
|
||||
|
||||
PersonBean person = (PersonBean)request.getSession().getAttribute(Constants.PERSON_BEAN);
|
||||
String writer = CommonUtils.checkNull(person.getUserId());
|
||||
String status = CommonUtils.checkNull(paramMap.get("status"));
|
||||
if("".equals(status)){
|
||||
paramMap.put("status", "create");
|
||||
}
|
||||
paramMap.put("writer", writer);
|
||||
|
||||
if("".equals(distributeObjid)){
|
||||
distributeObjid = CommonUtils.createObjId();
|
||||
}
|
||||
paramMap.put("distributeObjid", distributeObjid);
|
||||
|
||||
sqlSession.update("distribution.mergeDistribution", paramMap);
|
||||
|
||||
ArrayList distributeList = (ArrayList)sqlSession.selectList("admin.getCarDistributeMngList", paramMap);
|
||||
|
||||
for(int i=0; i<distributeList.size(); i++){
|
||||
HashMap map = (HashMap)distributeList.get(i);
|
||||
String userId = CommonUtils.checkNull(map.get("MEMBER_USER_ID"));
|
||||
String distributePointObjid = CommonUtils.checkNull(new UUID(0, 9).randomUUID().toString().replaceAll("-", "").hashCode());
|
||||
|
||||
paramMap.put("distributePointObjid", distributePointObjid);
|
||||
paramMap.put("userId", userId);
|
||||
sqlSession.update("distribution.mergeDistributionPoint", paramMap);
|
||||
}
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
sqlSession.rollback();
|
||||
}finally{
|
||||
sqlSession.commit();
|
||||
sqlSession.close();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 비정규배포를 조회한다.(단건)
|
||||
* @param request
|
||||
* @param paramMap
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public HashMap getDistributionInfo(HttpServletRequest request, Map paramMap){
|
||||
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession();
|
||||
HashMap distributionInfo = new HashMap();
|
||||
try{
|
||||
distributionInfo = sqlSession.selectOne("distribution.getDistributionInfo", paramMap);
|
||||
|
||||
String contents = "";
|
||||
if(null != distributionInfo.get("CONTENTS")){
|
||||
Clob clob = (Clob)distributionInfo.get("CONTENTS");
|
||||
StringBuffer strOut = new StringBuffer();
|
||||
|
||||
String str = "";
|
||||
|
||||
BufferedReader br = new BufferedReader(clob.getCharacterStream());
|
||||
|
||||
while ((str = br.readLine()) != null) {
|
||||
strOut.append(str);
|
||||
}
|
||||
contents = strOut.toString();
|
||||
distributionInfo.put("CONTENTS", contents);
|
||||
}
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
}finally{
|
||||
sqlSession.close();
|
||||
}
|
||||
return distributionInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 비정규배포를 진행한다.
|
||||
* @param request
|
||||
* @param paramMap
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public void releaseIrregular(HttpServletRequest request, Map paramMap){
|
||||
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
|
||||
HashMap distributionInfo = new HashMap();
|
||||
ArrayList releaseMemberList = new ArrayList();
|
||||
try{
|
||||
|
||||
String carObjId = CommonUtils.checkNull(paramMap.get("carObjId"));
|
||||
if(!"".equals(carObjId)){
|
||||
paramMap.put("search_carObjid", carObjId);
|
||||
releaseMemberList = (ArrayList)sqlSession.selectList("admin.getCarDistributeMngList", paramMap);
|
||||
}
|
||||
|
||||
if(0 < releaseMemberList.size()){
|
||||
//배포할 인원이 있을 경우
|
||||
//배포내용을 가져온다.
|
||||
distributionInfo = sqlSession.selectOne("distribution.getDistributionInfo", paramMap);
|
||||
|
||||
String carName = CommonUtils.checkNull(distributionInfo.get("CAR_NAME"));
|
||||
String carCode = CommonUtils.checkNull(distributionInfo.get("CAR_CODE"));
|
||||
|
||||
String writerDept = CommonUtils.checkNull(distributionInfo.get("DEPT_NAME"));
|
||||
String writerName = CommonUtils.checkNull(distributionInfo.get("USER_NAME"));
|
||||
String receiveType = CommonUtils.checkNull(distributionInfo.get("RECEIVE_TYPE"));
|
||||
String receiveTitle = "";
|
||||
if(!"".equals(receiveType)){
|
||||
if("hkmc".equals(receiveType)){
|
||||
receiveTitle = "HKMC";
|
||||
}else if("supporter".equals(receiveType)){
|
||||
receiveTitle = "협력업체";
|
||||
}else if("etc".equals(receiveType)){
|
||||
receiveTitle = "기타";
|
||||
}
|
||||
}
|
||||
|
||||
String subReceiveType = CommonUtils.checkNull(distributionInfo.get("SUB_RECEIVE_TYPE"));
|
||||
String subReceiveTitle = "";
|
||||
if(!"".equals(receiveType)){
|
||||
if("structure".equals(receiveType)){
|
||||
subReceiveTitle = "스트럭쳐설계";
|
||||
}else if("startCar".equals(receiveType)){
|
||||
subReceiveTitle = "시작차체팀";
|
||||
}else if("chinaLab".equals(receiveType)){
|
||||
subReceiveTitle = "중국기술연구소";
|
||||
}else if("etc".equals(receiveType)){
|
||||
subReceiveTitle = "기타";
|
||||
}
|
||||
}
|
||||
|
||||
String receiveDate = CommonUtils.checkNull(distributionInfo.get("RECEIVE_DATE"));
|
||||
|
||||
String releaseTitle = CommonUtils.checkNull(distributionInfo.get("SUBJECT"));
|
||||
|
||||
String contents = "";
|
||||
if(null != distributionInfo.get("CONTENTS")){
|
||||
Clob clob = (Clob)distributionInfo.get("CONTENTS");
|
||||
StringBuffer strOut = new StringBuffer();
|
||||
|
||||
String str = "";
|
||||
|
||||
BufferedReader br = new BufferedReader(clob.getCharacterStream());
|
||||
|
||||
while ((str = br.readLine()) != null) {
|
||||
strOut.append(str);
|
||||
}
|
||||
contents = strOut.toString();
|
||||
distributionInfo.put("CONTENTS", contents);
|
||||
}
|
||||
|
||||
for(int i=0;i<releaseMemberList.size();i++){
|
||||
HashMap releaseMemberMap = (HashMap)releaseMemberList.get(i);
|
||||
|
||||
String userId = CommonUtils.checkNull(releaseMemberMap.get("MEMBER_USER_ID"));
|
||||
String email = CommonUtils.checkNull(releaseMemberMap.get("EMAIL"));
|
||||
|
||||
HashMap mailMap = new HashMap();
|
||||
mailMap.put("approvalType", "비정규 배포");
|
||||
|
||||
//ex. [비정규 배포] IK(제네시스 G70)_HKMC_스트럭쳐설계
|
||||
String mailTitle = "[비정규 배포] "+carCode+"("+carName+")_"+receiveTitle+"_"+subReceiveTitle;
|
||||
|
||||
mailMap.put("routeTitle", releaseTitle);
|
||||
mailMap.put("approvalUser", writerDept+" "+writerName);
|
||||
mailMap.put("comment", contents);
|
||||
mailMap.put("userType", "배포자");
|
||||
|
||||
String mailContents = MailUtil.getHTMLContents("eoApprovalMailTemplate", mailMap);
|
||||
|
||||
//사용자 메일 통해 메일 발송
|
||||
MailUtil.sendMail(CommonUtils.checkNull(paramMap.get("writer")), "bestcw8388@iljitech.co.kr", userId, email, "", "", "", mailTitle, mailContents, Constants.MAIL_TYPE_RELEASE_IRREGULAR);
|
||||
MailUtil.sendMail(CommonUtils.checkNull(paramMap.get("writer")), "bestcw8388@iljitech.co.kr", userId, "don38317@gmail.com", "", "", "", mailTitle, mailContents, Constants.MAIL_TYPE_RELEASE_IRREGULAR);
|
||||
}
|
||||
|
||||
String distributeObjId = CommonUtils.checkNull(distributionInfo.get("OBJID"));
|
||||
|
||||
HashMap distributeParamMap = new HashMap();
|
||||
distributeParamMap.put("objId", distributeObjId);
|
||||
distributeParamMap.put("status", "release");
|
||||
sqlSession.update("distribution.changeDistributeStatus", distributeParamMap);
|
||||
}
|
||||
sqlSession.commit();
|
||||
}catch(Exception e){
|
||||
sqlSession.rollback();
|
||||
e.printStackTrace();
|
||||
}finally{
|
||||
sqlSession.close();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 배포처에 해당하는 인원이 확인 했을 시 배포확인 DB에 입력한다.
|
||||
* @param request
|
||||
* @param paramMap
|
||||
*/
|
||||
public void distributeConfirm(HttpServletRequest request,Map paramMap){
|
||||
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
|
||||
HashMap distributionInfo = new HashMap();
|
||||
try{
|
||||
distributionInfo = sqlSession.selectOne("distribution.getDistributionInfo", paramMap);
|
||||
|
||||
PersonBean person = (PersonBean)request.getSession().getAttribute(Constants.PERSON_BEAN);
|
||||
String writer = CommonUtils.checkNull(person.getUserId());
|
||||
|
||||
paramMap.put("carObjId", CommonUtils.checkNull(distributionInfo.get("CAR_OBJID")));
|
||||
paramMap.put("distributeDate", CommonUtils.checkNull(distributionInfo.get("REGDATE")));
|
||||
paramMap.put("distributeObjid", CommonUtils.checkNull(distributionInfo.get("OBJID")));
|
||||
paramMap.put("distributeUserId", CommonUtils.checkNull(distributionInfo.get("WRITER")));
|
||||
paramMap.put("objId", CommonUtils.createObjId());
|
||||
paramMap.put("userId", writer);
|
||||
sqlSession.update("distribution.mergeDistributeConfirm",paramMap);
|
||||
|
||||
sqlSession.commit();
|
||||
}catch(Exception e){
|
||||
sqlSession.rollback();
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 배포처에 해당하는 인원들의 배포내용 확인 목록을 가져온다.
|
||||
* @param request
|
||||
* @param paramMap
|
||||
*/
|
||||
public ArrayList getDistributeMemberList(HttpServletRequest request,Map paramMap){
|
||||
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
|
||||
ArrayList result = new ArrayList();
|
||||
try{
|
||||
result = (ArrayList)sqlSession.selectList("distribution.getDistributeMemberList",paramMap);
|
||||
sqlSession.commit();
|
||||
}catch(Exception e){
|
||||
sqlSession.rollback();
|
||||
e.printStackTrace();
|
||||
}
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 파일송부 목록조회
|
||||
* @param paramMap
|
||||
* @return
|
||||
*/
|
||||
public List getSendFileList(HttpServletRequest request,Map paramMap){
|
||||
List resultList = new ArrayList();
|
||||
SqlSession sqlSession = null;
|
||||
|
||||
try{
|
||||
sqlSession = SqlMapConfig.getInstance().getSqlSession();
|
||||
|
||||
String countPerPage = CommonUtils.checkNull(request.getParameter("countPerPage"),Constants.ADMIN_COUNT_PER_PAGE+"");
|
||||
|
||||
paramMap.put("COUNT_PER_PAGE", Integer.parseInt(countPerPage));
|
||||
|
||||
Map pageMap = (HashMap)sqlSession.selectOne("distribution.getSendFileListCnt",paramMap);
|
||||
pageMap = (HashMap)CommonUtils.setPagingInfo(request,pageMap);
|
||||
|
||||
paramMap.put("PAGE_END",CommonUtils.checkNull(pageMap.get("PAGE_END")));
|
||||
paramMap.put("PAGE_START",CommonUtils.checkNull(pageMap.get("PAGE_START")));
|
||||
|
||||
resultList = sqlSession.selectList("distribution.getSendFileList", paramMap);
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
}finally{
|
||||
sqlSession.close();
|
||||
}
|
||||
|
||||
return resultList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 파일송부 수신인 목록조회
|
||||
* @param paramMap
|
||||
* @return
|
||||
*/
|
||||
public List getSendFileReceiverList(Map paramMap){
|
||||
List resultList = new ArrayList();
|
||||
SqlSession sqlSession = null;
|
||||
|
||||
try{
|
||||
sqlSession = SqlMapConfig.getInstance().getSqlSession();
|
||||
resultList = sqlSession.selectList("distribution.getSendFileReceiverList", paramMap);
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
}finally{
|
||||
sqlSession.close();
|
||||
}
|
||||
|
||||
return resultList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 파일송부 상세조회
|
||||
* @param paramMap
|
||||
* @return
|
||||
*/
|
||||
public Map getSendFileInfo(Map paramMap){
|
||||
Map resultMap = new HashMap();
|
||||
SqlSession sqlSession = null;
|
||||
|
||||
try{
|
||||
sqlSession = SqlMapConfig.getInstance().getSqlSession();
|
||||
resultMap = sqlSession.selectOne("distribution.getSendFileInfo", paramMap);
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
}finally{
|
||||
sqlSession.close();
|
||||
}
|
||||
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 파일송부 저장
|
||||
* @param paramMap
|
||||
* @return
|
||||
*/
|
||||
public Map saveSendFileInfo(Map paramMap){
|
||||
Map resultMap = new HashMap();
|
||||
SqlSession sqlSession = null;
|
||||
|
||||
try{
|
||||
sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
|
||||
int cnt = sqlSession.insert("distribution.saveSendFileInfo", paramMap);
|
||||
|
||||
if(cnt > 0){
|
||||
resultMap.put("result", true);
|
||||
resultMap.put("msg", "발송되었습니다.");
|
||||
|
||||
//메일발송
|
||||
Map sqlParam = new HashMap();
|
||||
sqlParam.put("targetObjId", CommonUtils.checkNull(paramMap.get("objId")));
|
||||
List<Map> addressList = sqlSession.selectList("distribution.getSendFileReceiversMailAddressList", sqlParam);
|
||||
|
||||
//메일 body에 들어갈 map setting
|
||||
String subject = CommonUtils.checkNull(paramMap.get("title"));
|
||||
String contents = CommonUtils.checkNull(paramMap.get("description"));
|
||||
|
||||
HashMap bodyContentsMap = new HashMap();
|
||||
bodyContentsMap.put("SUBJECT", subject);
|
||||
bodyContentsMap.put("CONTENTS", contents);
|
||||
|
||||
String bodyContents = MailUtil.getHTMLContents("sendFileMailTemplate", bodyContentsMap);
|
||||
|
||||
if(addressList != null){
|
||||
for(Map addressMap : addressList){
|
||||
String receiverUserId = CommonUtils.checkNull(addressMap.get("RECEIVER"));
|
||||
String receiverEmail = CommonUtils.checkNull(addressMap.get("RECEIVER_EMAIL"));
|
||||
|
||||
MailUtil.sendMail(receiverUserId, receiverEmail, subject, bodyContents, Constants.MAIL_TYPE_FILE_SEND_MAIL);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
resultMap.put("result", false);
|
||||
resultMap.put("msg", "발송에 실패하였습니다.");
|
||||
}
|
||||
|
||||
sqlSession.commit();
|
||||
}catch(Exception e){
|
||||
sqlSession.rollback();
|
||||
resultMap.put("result", false);
|
||||
resultMap.put("msg", "시스템 에러입니다. 증상이 반복되면 관리자에게 문의바랍니다.");
|
||||
e.printStackTrace();
|
||||
}finally{
|
||||
sqlSession.close();
|
||||
}
|
||||
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 파일송부 수신인 저장
|
||||
* @param paramMap
|
||||
* @return
|
||||
*/
|
||||
public void addSendFileReceivers(HttpServletRequest request, Map paramMap){
|
||||
SqlSession sqlSession = null;
|
||||
|
||||
try{
|
||||
sqlSession = SqlMapConfig.getInstance().getSqlSession();
|
||||
String targetObjId = CommonUtils.checkNull(paramMap.get("targetObjId"));
|
||||
String[] receivers = request.getParameterValues("userId");
|
||||
|
||||
for(int i = 0; i < receivers.length ; i++){
|
||||
String receiver = CommonUtils.checkNull(receivers[i]);
|
||||
if(!"".equals(receiver)){
|
||||
Map sqlMap = new HashMap();
|
||||
sqlMap.put("objId", CommonUtils.createObjId());
|
||||
sqlMap.put("targetObjId", targetObjId);
|
||||
sqlMap.put("receiver", receiver);
|
||||
System.out.println("sqlMap : "+sqlMap);
|
||||
|
||||
sqlSession.insert("distribution.insertSendFileReceiverInfo", sqlMap);
|
||||
}
|
||||
}
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
}finally{
|
||||
sqlSession.close();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 파일송부 수신자 삭제
|
||||
* @param paramMap
|
||||
*/
|
||||
public void deleteSendFileReceiverInfo(Map paramMap){
|
||||
SqlSession sqlSession = null;
|
||||
|
||||
try{
|
||||
sqlSession = SqlMapConfig.getInstance().getSqlSession();
|
||||
int cnt = sqlSession.insert("distribution.deleteSendFileReceiverInfo", paramMap);
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
}finally{
|
||||
sqlSession.close();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user