ERP-node/src/com/pms/service/DistributionService.java

490 lines
16 KiB
Java

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();
}
}
}