This commit is contained in:
myname 2024-12-09 19:08:54 +09:00
commit 252e52f1dd
440 changed files with 132672 additions and 47 deletions

View File

@ -0,0 +1,89 @@
package kcc.com.snd.service;
import java.io.Serializable;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
/**
* @packageName : kcc.com.snd.service
* @templatecode
* @신청인_접수확인_1 :
* TEMPLATE_APP_JUBSU
* @chihwan : 없음
* @신청인_담당자배정_1 :
* TEMPLATE_APP_BAEJUNG
* @chihwan : "caseNo", "team", "examiner", "tel", "email"
* @양당사자_분쟁조정협의회 안건상정 :
* TEMPLATE_BOTH_SANGJUNG
* @chihwan : "caseNo", "cfrnc", "tel", "email"
* @양당사자_출석요구 n차 :
* TEMPLATE_BOTH_CHULSUK
* @chihwan : "caseNo", "nCha"
* @양당사자_통지 :
* TEMPLATE_BOTH_TONGJI
* @chihwan : "caseNo", "cfrnc"
* @신청인_보완요구 n차 :
* TEMPLATE_APP_BOWAN
* @chihwan : "caseNo", "nCha"
*
*/
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SendAtVO implements Serializable {
private static final long serialVersionUID = 1L;
@JsonIgnore
private String accesstoken;
private String type;
@JsonIgnore
private String expired;
private String account;
private String refkey;
private String from;
private String to;
private Content content;
@JsonIgnore
private Map<String, String> chihwan;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class Content {
private At at;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class At {
private String senderkey;
private String templatecode;
private String message;
}
}
public String toJson() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(this);
}
}

View File

@ -0,0 +1,41 @@
package kcc.com.snd.service;
import java.util.Map;
public interface SendService {
/**
* @methodName : sendAt
* @author : JunHo Lee
* @date : 2024.12.09
* @description :
* @param to
* @param templateCode
* @param chihwan
*
* @packageName : kcc.com.snd.service
* @templatecode
* @신청인_접수확인_1 :
* TEMPLATE_APP_JUBSU
* @chihwan : 없음
* @신청인_담당자배정_1 :
* TEMPLATE_APP_BAEJUNG
* @chihwan : "caseNo", "team", "examiner", "tel", "email"
* @양당사자_분쟁조정협의회 안건상정 :
* TEMPLATE_BOTH_SANGJUNG
* @chihwan : "caseNo", "cfrnc", "tel", "email"
* @양당사자_출석요구 n차 :
* TEMPLATE_BOTH_CHULSUK
* @chihwan : "caseNo", "nCha"
* @양당사자_통지 :
* TEMPLATE_BOTH_TONGJI
* @chihwan : "caseNo", "cfrnc"
* @신청인_보완요구 n차 :
* TEMPLATE_APP_BOWAN
* @chihwan : "caseNo", "nCha"
*
*/
void sendAt(String to, String templateCode, Map<String, String> chihwan) throws Exception;
void sendSms(String to, String subject, String smsContent) throws Exception;
}

View File

@ -0,0 +1,48 @@
package kcc.com.snd.service;
import java.io.Serializable;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
/**
* @packageName : kcc.com.snd.service
* @templatecode
* @신청인_접수확인_1 :
* TEMPLATE_APP_JUBSU
* @chihwan : 없음
* @신청인_담당자배정_1 :
* TEMPLATE_APP_BAEJUNG
* @chihwan : "caseNo", "team", "examiner", "tel", "email"
* @양당사자_분쟁조정협의회 안건상정 :
* TEMPLATE_BOTH_SANGJUNG
* @chihwan : "caseNo", "cfrnc", "tel", "email"
* @양당사자_출석요구 n차 :
* TEMPLATE_BOTH_CHULSUK
* @chihwan : "caseNo", "nCha"
* @양당사자_통지 :
* TEMPLATE_BOTH_TONGJI
* @chihwan : "caseNo", "cfrnc"
* @신청인_보완요구 n차 :
* TEMPLATE_APP_BOWAN
* @chihwan : "caseNo", "nCha"
*
*/
@Getter
@Setter
public class SendSmsVO extends SendAtVO implements Serializable {
private static final long serialVersionUID = 1L;
private String subject;
private String smsContent;
}

View File

@ -0,0 +1,18 @@
package kcc.com.snd.service.impl;
import org.springframework.stereotype.Repository;
import kcc.com.cmm.service.impl.EgovComAbstractDAO;
import kcc.com.snd.service.SendAtVO;
@Repository("sendDAO")
public class SendDAO extends EgovComAbstractDAO {
public SendAtVO selectToken() throws Exception{
return (SendAtVO) select("sendDAO.selectToken");
}
public void updateToken(SendAtVO SendAtVO) throws Exception{
update("sendDAO.updateToken", SendAtVO);
}
}

View File

@ -0,0 +1,128 @@
package kcc.com.snd.service.impl;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.commons.beanutils.BeanUtils;
import org.springframework.stereotype.Service;
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
import kcc.com.snd.service.SendAtVO;
import kcc.com.snd.service.SendAtVO.Content;
import kcc.com.snd.service.SendAtVO.Content.At;
import kcc.com.snd.service.SendService;
import kcc.com.snd.service.SendSmsVO;
import seed.utils.FairnetUtils;
@Service("SendService")
public class SendServiceImpl extends EgovAbstractServiceImpl implements SendService {
@Resource(name="sendDAO")
private SendDAO sendDAO;
@Override
public void sendAt(
String to
, String templateCode
, Map<String, String> chihwan
) throws Exception{
SendAtVO vo = new SendAtVO();
vo = sendDAO.selectToken();
//이전 발급 토큰이 만료되었는지 시간비교
if(timeDiffBefore(vo.getExpired())) {
//토큰 발급
if(FairnetUtils.getPpurioToken(vo)) {
//토큰 갱신
sendDAO.updateToken(vo);
}else {
System.out.println("토큰 갱신 실패");
throw new Exception();
}
}
vo = vo.builder()
.accesstoken(vo.getAccesstoken())
.expired(vo.getExpired())
.refkey("test1234")
.type(vo.getType())
.to(to)
.content(Content.builder()
.at(At.builder()
.templatecode(templateCode)
.build()
)
.build()
)
.chihwan(chihwan)
.build()
;
FairnetUtils.sendAt(vo);
System.out.println("test");
}
@Override
public void sendSms(
String to
, String subject
, String smsContent
) throws Exception{
SendAtVO vo = new SendAtVO();
vo = sendDAO.selectToken();
//이전 발급 토큰이 만료되었는지 시간비교
if(timeDiffBefore(vo.getExpired())) {
//토큰 발급
if(FairnetUtils.getPpurioToken(vo)) {
//토큰 갱신
sendDAO.updateToken(vo);
}else {
System.out.println("토큰 갱신 실패");
throw new Exception();
}
}
SendSmsVO smsVO = new SendSmsVO();
BeanUtils.copyProperties(smsVO, vo);
smsVO.setTo(to);
smsVO.setSubject(subject);
smsVO.setSmsContent(smsContent);
FairnetUtils.sendSms(smsVO);
System.out.println("test");
}
/**
* @methodName : timeDiffBefore
* @author : JunHo Lee
* @date : 2024.12.09
* @description :
* @param str
* @return :
* !str이 현재 시간보다 이전이면 true
* !str이 현재 시간보다 이후이면 false
*/
private Boolean timeDiffBefore(String str) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
Date diffDate = sdf.parse(str);
Date currentDate = new Date();
if (diffDate.before(currentDate)) {
return true;
} else {
return false;
}
} catch (Exception e) {
return false;
}
}
}

View File

@ -1,6 +1,7 @@
package kcc.xxx.web;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
@ -20,6 +21,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.CmmUtil;
import kcc.com.snd.service.SendService;
import kcc.utill.CertSettingUtill;
import kcc.utill.OzUtill;
import kcc.xxx.service.XxxService;
@ -35,6 +37,9 @@ public class XxxController {
@Resource(name = "XxxService")
private XxxService xxxService;
@Resource(name = "SendService")
private SendService sendService;
@Resource
private OzUtill ozUtill;
@ -224,4 +229,69 @@ public class XxxController {
}
}
@RequestMapping("/web/xxx/xxxPpurioTest.do")
public String xxxPpurioTest() {
try {
//신청인_접수확인_1
{
Map<String, String> chihwan = new HashMap<String, String>();
sendService.sendAt("01030266269","TEMPLATE_APP_JUBSU", chihwan);
}
//신청인_담당자배정_1
{
Map<String, String> chihwan = new HashMap<String, String>();
chihwan.put("caseNo", "사건번호");
chihwan.put("team", "조사관 팀");
chihwan.put("examiner", "조사관이름");
chihwan.put("tel", "조사관유선전화");
chihwan.put("email", "조사관이메일");
sendService.sendAt("01030266269","TEMPLATE_APP_BAEJUNG", chihwan);
}
//양당사자_분쟁조정협의회 안건상정
{
Map<String, String> chihwan = new HashMap<String, String>();
chihwan.put("caseNo", "사건번호");
chihwan.put("cfrnc", "협의회명");
chihwan.put("tel", "조사관유선전화");
chihwan.put("email", "조사관이메일");
sendService.sendAt("01030266269","TEMPLATE_BOTH_SANGJUNG", chihwan);
}
//양당사자_출석요구 n차
{
Map<String, String> chihwan = new HashMap<String, String>();
chihwan.put("caseNo", "사건번호");
chihwan.put("nCha", "기일차수");
sendService.sendAt("01030266269","TEMPLATE_BOTH_CHULSUK", chihwan);
}
//양당사자_조정결과 통지
{
Map<String, String> chihwan = new HashMap<String, String>();
chihwan.put("caseNo", "사건번호");
chihwan.put("cfrnc", "협의회명");
sendService.sendAt("01030266269","TEMPLATE_BOTH_TONGJI", chihwan);
}
//신청인_보완요구 n차
{
Map<String, String> chihwan = new HashMap<String, String>();
chihwan.put("caseNo", "사건번호");
chihwan.put("nCha", "기일차수");
sendService.sendAt("01030266269","TEMPLATE_APP_BOWAN", chihwan);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@RequestMapping("/web/xxx/xxxSmsTest.do")
public String xxxSmsTest() {
try {
sendService.sendSms("01030266269", "제목입니다.", "내용입니다.");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}

View File

@ -173,8 +173,12 @@ public class SeedFileService {
/*String rootPath = seedProperties.getConfigValue("file.real.path");
String tempPath = seedProperties.getConfigValue("file.temp.path");*/
String rootPath = propertyService.getString("file.real.path");
String tempPath = propertyService.getString("file.temp.path");
/*241216 global 값으로 수정*/
/*String rootPath = propertyService.getString("file.real.path");
String tempPath = propertyService.getString("file.temp.path");*/
String rootPath = globalRealPath;
String tempPath = globalTempPath;
SeedDateUtil seedDateUtil = new SeedDateUtil();
String toDate = seedDateUtil.getSimpleDateFormat(new Date(), "yyyyMMdd");

View File

@ -2711,7 +2711,7 @@ public class MediationController {
/* params.put("fileName", "/pdf/web/compressed.tracemonkey-pldi-09.pdf");
mav.addAllObjects(params);*/
mav.setViewName("_extra/user/mediation/caseViewer");
mav.setViewName("_extra/web/user/mediation/caseViewer");
return mav;
}

View File

@ -23,9 +23,11 @@ import org.springframework.web.servlet.ModelAndView;
import com.ibm.icu.text.SimpleDateFormat;
import egovframework.rte.psl.dataaccess.util.EgovMap;
import kcc.let.uat.uia.service.CertService;
import kcc.let.uat.uia.service.CertVO;
import seed.com.gtm.seedfile.SeedFileService;
import seed.com.gtm.util.JSPUtil;
import seed.com.user.mypage.CaseAuthService;
import seed.com.user.mypage.CaseAuthVO;
import seed.com.user.mypage.MyPageService;
@ -4505,6 +4507,222 @@ public class WebMediationController {
*/
return new ModelAndView("/_extra/web/user/mediation/checkMediationStep03");
}
@RequestMapping("/web/user/mediation/{siteIdx}/04/{siteMenuIdx}/checkMediationWrite.do")
public ModelAndView checkMediationWrite(ModelMap map, HttpServletRequest request, HttpSession session,@RequestParam Map<String,Object> paramMap,
@PathVariable(value="siteIdx") String siteIdx,
@PathVariable(value="siteMenuIdx") Integer siteMenuIdx){
String isGubun = SeedUtils.setReplaceNull(session.getAttribute("isGubun"));
if(isGubun.equals("")){
map.put("siteIdx", "case");
map.put("url", "/user/mediation/case/01/155/checkMediationStep01.do");
map.put("message", "user.message.medi.alert");
map.put("opener", "");
map.put("append", "");
map.put("self", "");
return new ModelAndView("/_common/jsp/umessage");
}
/*----권한체크----*/
setSessionMessageRemove(session);
Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0"));
String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N");
boolean memberAuthM = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx);
boolean memberAuth = managerSiteMenuManagerService.getSiteMenuManagerListCnt(siteMenuIdx, memberIdx);
//메뉴 권한설정
boolean b_ret = true;
b_ret = FairnetUtils.hasUserAuth(memberIdx, memberGrant, memberAuth, session, map);
if (!b_ret) {
return new ModelAndView("/_common/jsp/message");
}
Map<Object, Object> tSiteMenuDB = managerSiteMenuService.getSiteMenuMapForm(siteMenuIdx,
new String[] {"siteMenuName", "siteMenuParentTitle", "siteMenuStatus", "siteMenuType", "siteMenuLinkUrl", "siteMenuCharge", "siteMenuCharge", "siteMenuSNS",
"siteMenuTitle", "siteMenuRegDate", "siteMenuModDate", "siteMenuNameType", "siteMenuIdxs", "siteMenuDepth", "siteMenuSatisfaction", "siteMenuIdx1",
"tSite.siteActiveMenuWidth", "tSite.siteService", "tSite.siteServiceSdate", "tSite.siteServiceSdate"});
if(!memberGrant.equals("S") && !memberAuthM && !memberAuth){
if(!SeedUtils.setReplaceNull(tSiteMenuDB.get("_siteMenuStatus")).equals("U")){
map.put("message", "common.message.no.siteMenu");
map.put("self", "history");
return new ModelAndView("/_common/jsp/umessage");
}
}
if(SeedUtils.setReplaceNull(tSiteMenuDB.get("_siteService")).equals("Y")){
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
try{
Date getDate = new Date();
Date sDate = formatter.parse(SeedUtils.setReplaceNull(tSiteMenuDB.get("_siteServiceSdate")));
Date eDate = formatter.parse(SeedUtils.setReplaceNull(tSiteMenuDB.get("_siteServiceEdate")));
if((sDate.compareTo(formatter.parse(formatter.format(getDate))) > 0 && eDate.compareTo(formatter.parse(formatter.format(getDate))) > 0) ||
(sDate.compareTo(formatter.parse(formatter.format(getDate))) < 0 && eDate.compareTo(formatter.parse(formatter.format(getDate))) < 0)){
return new ModelAndView("redirect:/user/common/service/"+siteIdx+".do");
}
}catch(ParseException e){
log.error("CHECK ERROR:",e);
}
}
if(SeedUtils.setReplaceNull(tSiteMenuDB.get("_siteMenuType")).equals("F") ||
SeedUtils.setReplaceNull(tSiteMenuDB.get("_siteMenuType")).equals("L")){
return new ModelAndView("redirect:"+SeedUtils.setReplaceNull(tSiteMenuDB.get("_siteMenuLinkUrl")));
}
String siteMenuManager = "N";
StringBuffer siteMenuManagerIdx = new StringBuffer();
String siteMenuCharge = SeedUtils.setReplaceNull(tSiteMenuDB.get("_siteMenuCharge"), "N");
List<Map<Object, Object>> siteMenuManagerList =
managerSiteMenuManagerService.getSiteMenuManagerMapList(siteMenuIdx, new String[] {"siteMenuManagerStatus", "tMember.memberIdx"});
for(int i=0; i<siteMenuManagerList.size(); i++){
Map<Object, Object> tSiteMenuManagerDB = siteMenuManagerList.get(i);
if(SeedUtils.setReplaceNull(tSiteMenuManagerDB.get("_siteMenuManagerStatus")).equals("U")){
if(!memberIdx.equals(0) &&
memberIdx.equals(Integer.parseInt(SeedUtils.setReplaceNull(tSiteMenuManagerDB.get("_memberIdx"), "0"))) &&
siteMenuManager.equals("N")){
siteMenuManager = "Y";
}
siteMenuManagerIdx.append(SeedUtils.setReplaceNull(tSiteMenuManagerDB.get("_memberIdx")).toString());
siteMenuManagerIdx.append(",");
}
}
if(memberGrant.equals("S") || memberAuthM){
siteMenuManager = "Y";
}
//편집 권한
map.put("siteMenuManager", siteMenuManager);
//담당자 보기 설정
map.put("siteMenuCharge", siteMenuCharge);
//담당자 이름
map.put("siteMenuManagerIdx", siteMenuManagerIdx.toString());
//만족도 설정
map.put("siteMenuSatisfaction", SeedUtils.setReplaceNull(tSiteMenuDB.get("_siteMenuSatisfaction"), "N"));
map.put("siteMenuSubTitle", managerSiteMenuService.getSiteMenuSubTitleForm(siteIdx, SeedUtils.setReplaceNull(tSiteMenuDB.get("_siteMenuIdx1"))));
String siteMenuTitle = managerSiteMenuService.getSiteMenuParentName(siteIdx, SeedUtils.setReplaceNull(tSiteMenuDB.get("_siteMenuIdxs")), "edit").replaceAll("", "|") +
" | " + SeedUtils.setReplaceNull(tSiteMenuDB.get("_siteMenuName"));
map.put("siteMenuTitle", siteMenuTitle);
//부모메뉴 타이틀 설정한 경우 해당 글의 부모 타이틀을 가져옴
if(SeedUtils.setReplaceNull(tSiteMenuDB.get("_siteMenuParentTitle") ,"N").equals("Y")){
String[] siteMenuTitles = siteMenuTitle.split("\\|");
tSiteMenuDB.put("_siteMenuName", siteMenuTitles[Integer.parseInt(tSiteMenuDB.get("_siteMenuDepth").toString())-1]);
}
map.put("tSiteMenuDB", tSiteMenuDB);
map.put("memberAuthM", memberAuthM);
map.put("seedMenuAuth", managerGroupService.getGroupList(siteIdx, memberIdx, memberMerge, memberMergeSiteIdx));
/*----권한체크 종료----*/
EgovMap params;
params = JSPUtil.makeRequestParams(request, session, true);
params.put("sql", "trublreqstmngCaseFileInsert");
params.put("memberId", session.getAttribute("hpName"));
params.put("memberSeq", session.getAttribute("isSeq"));
/*서비스 로직*/
try{
//fileService.fileInsert(paramMap, request, session);
fileService.fileInsertEgov(params, request, session);
}catch (Exception e) {
log.error("CHECK ERROR:",e);
}
return new ModelAndView("redirect:/web/user/mediation/case/03/155/checkMediationStep03.do");
}
@RequestMapping(value = "/web/user/mediation/case/caseSignPop/popup.do")
public ModelAndView checkMediationSign(ModelMap map, HttpServletRequest request, HttpSession session,@RequestParam Map<String,Object> paramMap)throws Exception{
String isGubun = SeedUtils.setReplaceNull(session.getAttribute("isGubun"));
if(isGubun.equals("")){
map.put("siteIdx", "case");
map.put("url", "/user/mediation/case/01/155/checkMediationStep01.do");
map.put("message", "user.message.medi.alert");
map.put("opener", "");
map.put("append", "");
map.put("self", "");
return new ModelAndView("/_common/jsp/umessage");
}
request.setCharacterEncoding("UTF-8");
ModelAndView mav = new ModelAndView();
EgovMap params;
params = JSPUtil.makeRequestParams(request, session, true);
//시큐어코딩 관련 파라미터는 삭제
params.remove("SpringSecurityFiltersecurityinterceptorFilterapplied");
params.remove("SpringSecuritySessionMgmtFilterApplied");
params.remove("springSecurityContext");
params.remove("SpringSecurityScpfApplied");
params.remove("springSecuritySavedRequest");
log.warn(">>>>>>>>params<<<<<<<<<"+params);
paramMap.put("caseNo", session.getAttribute("caseNo"));
paramMap.put("isSeq", session.getAttribute("isSeq"));
paramMap.put("isGubun", isGubun);
Map<String, Object> masterData = service.masterList(paramMap);
paramMap.put("rceptNo", masterData.get("RCEPT_NO"));
map.put("trublreqstmngCaseFileList", service.trublprocessmngCaseFileList(paramMap));//파일 리스트
map.put("caseComment", service.selectCaseComment(paramMap));
mav.addAllObjects(params);
mav.setViewName("/_extra/web/user/mediation/caseSignPop");
return mav;
}
@RequestMapping(value = "/web/user/mediation/case/pdf/viewer.do")
public ModelAndView checkMediationViewer(ModelMap map, HttpServletRequest request, HttpSession session,@RequestParam Map<String,Object> paramMap)throws Exception{
String isGubun = SeedUtils.setReplaceNull(session.getAttribute("isGubun"));
if(isGubun.equals("")){
map.put("siteIdx", "case");
map.put("url", "/user/mediation/case/01/155/checkMediationStep01.do");
map.put("message", "user.message.medi.alert");
map.put("opener", "");
map.put("append", "");
map.put("self", "");
return new ModelAndView("/_common/jsp/umessage");
}
request.setCharacterEncoding("UTF-8");
ModelAndView mav = new ModelAndView();
EgovMap params;
params = JSPUtil.makeRequestParams(request, session, true);
//시큐어코딩 관련 파라미터는 삭제
params.remove("SpringSecurityFiltersecurityinterceptorFilterapplied");
params.remove("SpringSecuritySessionMgmtFilterApplied");
params.remove("springSecurityContext");
params.remove("SpringSecurityScpfApplied");
params.remove("springSecuritySavedRequest");
/* params.put("fileName", "/pdf/web/compressed.tracemonkey-pldi-09.pdf");
mav.addAllObjects(params);*/
mav.setViewName("_extra/web/user/mediation/caseViewer");
return mav;
}
private Boolean ciCheck(ModelMap map, HttpSession session) {
String certNm = SeedUtils.setReplaceNull(session.getAttribute("certNm"));
String certHpNo = SeedUtils.setReplaceNull(session.getAttribute("certHpNo"));

View File

@ -1,6 +1,16 @@
package seed.utils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Base64;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
@ -15,9 +25,14 @@ import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.json.JSONObject;
import org.springframework.ui.ModelMap;
import org.springframework.web.client.RestTemplate;
@ -27,6 +42,10 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.TextNode;
import com.ibm.icu.text.SimpleDateFormat;
import kcc.com.snd.service.SendAtVO;
import kcc.com.snd.service.SendAtVO.Content;
import kcc.com.snd.service.SendAtVO.Content.At;
import kcc.com.snd.service.SendSmsVO;
import kcc.com.srch.service.SearchVO;
import kcc.let.uat.uia.service.CertVO;
@ -374,4 +393,358 @@ public class FairnetUtils {
return null;
}
public static Boolean getPpurioToken(SendAtVO sendAtVO) {
StringBuffer result = new StringBuffer();
String input = null;
PpurioGlobalSet ppurioGlobalSet = new PpurioGlobalSet();
try {
/** SSL 인증서 무시 : 비즈뿌리오 API 운영을 접속하는 경우 해당 코드 필요 없음 **/
if(ppurioGlobalSet.getHost().contains("https://api.bizppurio.com")) {
TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() { return null; }
public void checkClientTrusted(X509Certificate[] chain, String authType) { }
public void checkServerTrusted(X509Certificate[] chain, String authType) { } } };
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
}
URL url = new URL(ppurioGlobalSet.getHost() + "/v1/token");
/** Connection 설정 **/
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.addRequestProperty("Content-Type", "application/json");
connection.addRequestProperty("Accept-Charset", "UTF-8");
//Base64 인코딩
String idpw = ppurioGlobalSet.getId() + ":" + ppurioGlobalSet.getPw();
String authData = Base64.getEncoder().encodeToString(idpw.getBytes());
connection.addRequestProperty("Authorization", "Basic " + authData);
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.setConnectTimeout(15000);
/** Request **/
OutputStream os = connection.getOutputStream();
os.flush();
/** Response **/
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
while ((input = in.readLine()) != null) {
result.append(input);
}
connection.disconnect();
if (result.length() > 0) {
JSONObject jObject = new JSONObject(result.toString());
if (
jObject.has("accesstoken")
&& !jObject.isNull("accesstoken")
&& jObject.has("type")
&& !jObject.isNull("type")
&& jObject.has("expired")
&& !jObject.isNull("expired")
) {
sendAtVO.setAccesstoken(jObject.getString("accesstoken"));
sendAtVO.setType(jObject.getString("type"));
sendAtVO.setExpired(jObject.getString("expired"));
} else {
System.out.println("response data not found or is null");
return false;
}
} else {
System.out.println("Empty response");
return false;
}
} catch (IOException e) {
System.out.println(e.getMessage());
return false;
} catch (KeyManagementException e) {
System.out.println(e.getMessage());
return false;
} catch (NoSuchAlgorithmException e) {
System.out.println(e.getMessage());
return false;
}
return true;
}
public static String sendAt(SendAtVO sendAtVO) {
StringBuffer result = new StringBuffer();
String input = null;
PpurioGlobalSet ppurioGlobalSet = new PpurioGlobalSet();
try {
/** SSL 인증서 무시 : 비즈뿌리오 API 운영을 접속하는 경우 해당 코드 필요 없음 **/
if(ppurioGlobalSet.getHost().contains("https://api.bizppurio.com")) {
TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() { return null; }
public void checkClientTrusted(X509Certificate[] chain, String authType) { }
public void checkServerTrusted(X509Certificate[] chain, String authType) { } } };
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
}
URL url = new URL(ppurioGlobalSet.getHost() + "/v3/message");
/** Connection 설정 **/
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.addRequestProperty("Content-Type", "application/json");
connection.addRequestProperty("Accept-Charset", "UTF-8");
connection.addRequestProperty("Authorization", "Bearer " + sendAtVO.getAccesstoken());
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.setConnectTimeout(15000);
/** Request **/
At at = sendAtVO.getContent().getAt();
at = messageSet(at, sendAtVO.getChihwan());
sendAtVO = sendAtVO.builder()
.account(ppurioGlobalSet.getId())
.refkey(sendAtVO.getRefkey())
.type("at")
.from(ppurioGlobalSet.getFrom())
.to(sendAtVO.getTo())
.content(Content.builder()
.at(At.builder()
.senderkey(ppurioGlobalSet.getSenderKey())
.templatecode(at.getTemplatecode())
.message(at.getMessage())
.build()
)
.build()
)
.build();
// Request body 전송
try (OutputStream os = connection.getOutputStream()) {
os.write(sendAtVO.toJson().getBytes("UTF-8"));
os.flush();
}
// 서버 응답 처리
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"))) {
while ((input = reader.readLine()) != null) {
result.append(input);
}
}
} else {
// 오류 응답 처리
try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getErrorStream(), "UTF-8"))) {
StringBuilder errorResponse = new StringBuilder();
while ((input = reader.readLine()) != null) {
errorResponse.append(input);
}
System.out.println("Error Response: " + errorResponse.toString());
return "Error: " + errorResponse.toString();
}
}
connection.disconnect();
System.out.println("Response : " + result.toString());
JSONObject jObject = new JSONObject(result.toString());
// status = jObject.getString("description");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (KeyManagementException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
// return status;
}
private static At messageSet(
At at,
Map<String, String> chihwan
) {
String content = "";
Map<String, String[]> requiredPlaceholders = new HashMap<>();
switch (at.getTemplatecode()) {
case "TEMPLATE_APP_JUBSU": // 신청인_접수확인_1
at.setTemplatecode("bizp_2024112810423519814410026");
content = "[한국공정거래조정원] \r\n"
+ "귀사(하)의 조정신청이 접수 완료되었습니다.\r\n"
+ "향후 담당부서 및 담당자가 배정될 예정입니다.";
break;
case "TEMPLATE_APP_BAEJUNG": // 신청인_담당자배정_1
at.setTemplatecode("bizp_2024112810423516931294012");
content = "[한국공정거래조정원]\r\n"
+ "귀사(하)가 (피신청인 상호명)을(를) 상대로 신청한 사건의 사건번호는 #{caseNo}, 담당자는 #{team}팀 #{examiner} 조사관(유선전화:#{tel}, 메일주소 #{email})입니다.\r\n"
+ "향후 담당 조사관이 공문 등을 통해 연락드릴 예정입니다.";
requiredPlaceholders.put(at.getTemplatecode(), new String[]{"caseNo", "team", "examiner", "tel", "email"});
break;
case "TEMPLATE_BOTH_SANGJUNG": // 양당사자_분쟁조정협의회 안건상정
at.setTemplatecode("bizp_2024112810492919814837182");
content = "[한국공정거래조정원]\r\n"
+ "귀사(하)가 진행 중인 분쟁조정 사건 [사건번호 #{caseNo}]이 향후 개최될 #{cfrnc}분쟁조정협의회에 상정될 예정입니다.\r\n"
+ "#{cfrnc}분쟁조정협의회 기일은 담당 조사관(유선전화:#{tel}, 메일주소 #{email})에게 문의주시면 안내드리겠습니다.";
requiredPlaceholders.put(at.getTemplatecode(), new String[]{"caseNo", "cfrnc", "tel", "email"});
break;
case "TEMPLATE_BOTH_CHULSUK": // 양당사자_출석요구 n차
at.setTemplatecode("bizp_2024112810492916931760451");
content = "[한국공정거래조정원]\r\n"
+ "귀사(하)가 진행 중인 분쟁조정 사건 [사건번호 #{caseNo}]의 출석조사(#{nCha}}차) 기일이 확정되었습니다. \r\n"
+ "[https://fairnet.kofair.or.kr]에서 확인해주시기 바랍니다.";
requiredPlaceholders.put(at.getTemplatecode(), new String[]{"caseNo", "nCha"});
break;
case "TEMPLATE_BOTH_TONGJI": // 양당사자_통지
at.setTemplatecode("bizp_2024112810492916931854671");
content = "[한국공정거래조정원]\r\n"
+ "귀사(하)가 진행 중인 분쟁조정 사건 [사건번호 #{caseNo}]에 대한 #{cfrnc}분쟁조정협의회 의결이 완료되었습니다.\r\n"
+ "[https://fairnet.kofair.or.kr]에서 해당 내용을 확인해주시기 바랍니다.";
requiredPlaceholders.put(at.getTemplatecode(), new String[]{"caseNo", "cfrnc"});
break;
case "TEMPLATE_APP_BOWAN": // 신청인_보완요구 n차
at.setTemplatecode("bizp_2024112810522719814540186");
content = "[한국공정거래조정원]\r\n"
+ "귀사(하)가 신청한 분쟁조정 신청사건(사건번호 #{caseNo})에 대한 보완(#{nCha}차)이 필요합니다.\r\n"
+ "[https://fairnet.kofair.or.kr]에서 확인해주시기 바랍니다.";
requiredPlaceholders.put(at.getTemplatecode(), new String[]{"caseNo", "nCha"});
break;
}
String[] placeholders = requiredPlaceholders.get(at.getTemplatecode());
if (placeholders != null) {
for (String placeholder : placeholders) {
String value = chihwan.get(placeholder);
if (value == null || value.isEmpty()) {
throw new IllegalArgumentException(placeholder + " 값이 없습니다.");
}
content = content.replace("#{" + placeholder + "}", value);
}
}
at.setMessage(content);
return at;
}
public static String sendSms(SendSmsVO sendSmsVO) {
StringBuffer result = new StringBuffer();
String input = null;
PpurioGlobalSet ppurioGlobalSet = new PpurioGlobalSet();
try {
/** SSL 인증서 무시 : 비즈뿌리오 API 운영을 접속하는 경우 해당 코드 필요 없음 **/
if(ppurioGlobalSet.getHost().contains("https://api.bizppurio.com")) {
TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() { return null; }
public void checkClientTrusted(X509Certificate[] chain, String authType) { }
public void checkServerTrusted(X509Certificate[] chain, String authType) { } } };
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
}
URL url = new URL(ppurioGlobalSet.getHost() + "/v3/message");
/** Connection 설정 **/
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.addRequestProperty("Content-Type", "application/json");
connection.addRequestProperty("Accept-Charset", "UTF-8");
connection.addRequestProperty("Authorization", "Bearer " + sendSmsVO.getAccesstoken());
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.setConnectTimeout(15000);
JSONObject lms = new JSONObject();
lms.put("message", sendSmsVO.getSmsContent());
lms.put("subject", sendSmsVO.getSubject());
JSONObject content = new JSONObject();
content.put("lms", lms);
JSONObject json = new JSONObject();
json.put("account", ppurioGlobalSet.getId());
json.put("type", "lms");
json.put("from", "15881490");
json.put("to", sendSmsVO.getTo());
json.put("content", content);
json.put("refkey", "test1234");
String body = json.toString();
// Request body 전송
try (OutputStream os = connection.getOutputStream()) {
os.write(body.getBytes("UTF-8"));
os.flush();
}
// 서버 응답 처리
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"))) {
while ((input = reader.readLine()) != null) {
result.append(input);
}
}
} else {
// 오류 응답 처리
try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getErrorStream(), "UTF-8"))) {
StringBuilder errorResponse = new StringBuilder();
while ((input = reader.readLine()) != null) {
errorResponse.append(input);
}
System.out.println("Error Response: " + errorResponse.toString());
return "Error: " + errorResponse.toString();
}
}
connection.disconnect();
System.out.println("Response : " + result.toString());
JSONObject jObject = new JSONObject(result.toString());
// status = jObject.getString("description");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (KeyManagementException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
// return status;
}
}

View File

@ -0,0 +1,121 @@
package seed.utils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class PpurioGlobalSet {
private static String id;
private static String pw;
private static String host;
private static String senderKey;
private static String templateCode1;
private static String templateCode2;
private static String templateCode3;
private static String templateCode4;
private static String templateCode5;
private static String templateCode6;
private static String from;
@Value("#{globalSettings['ppurio.id']}")
public void setId(String id) {
PpurioGlobalSet.id = id;
}
public static String getId() {
return id;
}
@Value("#{globalSettings['ppurio.pw']}")
public void setPw(String pw) {
PpurioGlobalSet.pw = pw;
}
public static String getPw() {
return pw;
}
@Value("#{globalSettings['ppurio.host']}")
public void setHost(String host) {
PpurioGlobalSet.host = host;
}
public static String getHost() {
return host;
}
@Value("#{globalSettings['ppurio.senderKey']}")
public void setSenderKey(String senderKey) {
PpurioGlobalSet.senderKey = senderKey;
}
public static String getSenderKey() {
return senderKey;
}
@Value("#{globalSettings['ppurio.templateCode1']}")
public void setTemplateCode1(String templateCode1) {
PpurioGlobalSet.templateCode1 = templateCode1;
}
public static String getTemplateCode1() {
return templateCode1;
}
@Value("#{globalSettings['ppurio.templateCode2']}")
public void setTemplateCode2(String templateCode2) {
PpurioGlobalSet.templateCode2 = templateCode2;
}
public static String getTemplateCode2() {
return templateCode2;
}
@Value("#{globalSettings['ppurio.templateCode3']}")
public void setTemplateCode3(String templateCode3) {
PpurioGlobalSet.templateCode3 = templateCode3;
}
public static String getTemplateCode3() {
return templateCode3;
}
@Value("#{globalSettings['ppurio.templateCode4']}")
public void setTemplateCode4(String templateCode4) {
PpurioGlobalSet.templateCode4 = templateCode4;
}
public static String getTemplateCode4() {
return templateCode4;
}
@Value("#{globalSettings['ppurio.templateCode5']}")
public void setTemplateCode5(String templateCode5) {
PpurioGlobalSet.templateCode5 = templateCode5;
}
public static String getTemplateCode5() {
return templateCode5;
}
@Value("#{globalSettings['ppurio.templateCode6']}")
public void setTemplateCode6(String templateCode6) {
PpurioGlobalSet.templateCode6 = templateCode6;
}
public static String getTemplateCode6() {
return templateCode6;
}
@Value("#{globalSettings['ppurio.from']}")
public void setFrom(String from) {
PpurioGlobalSet.from = from;
}
public static String getFrom() {
return from;
}
}

View File

@ -240,3 +240,16 @@ email.password=@caseadmin2024
#\uac80\uc0c9\uc194\ub8e8\uc158
search.host=http://192.168.0.60:7578
#\uc54c\ub9bc\ud1a1
ppurio.id=kofair
ppurio.pw=kofa2024@
ppurio.host=https://api.bizppurio.com
ppurio.senderKey=953031f0c131963c2fa9cd004f9965f9d487bdc5
ppurio.templateCode1=bizp_2024112810423519814410026
ppurio.templateCode2=bizp_2024112810423516931294012
ppurio.templateCode3=bizp_2024112810492919814837182
ppurio.templateCode4=bizp_2024112810492916931760451
ppurio.templateCode5=bizp_2024112810492916931854671
ppurio.templateCode6=bizp_2024112810522719814540186
ppurio.from=15881490

View File

@ -245,3 +245,16 @@ email.password=@caseadmin2024
#\uac80\uc0c9\uc194\ub8e8\uc158
search.host=http://192.168.0.60:7578
#\uc54c\ub9bc\ud1a1
ppurio.id=kofair
ppurio.pw=kofa2024@
ppurio.host=https://dev-api.bizppurio.com
ppurio.senderKey=953031f0c131963c2fa9cd004f9965f9d487bdc5
ppurio.templateCode1=bizp_2024112810423519814410026
ppurio.templateCode2=bizp_2024112810423516931294012
ppurio.templateCode3=bizp_2024112810492919814837182
ppurio.templateCode4=bizp_2024112810492916931760451
ppurio.templateCode5=bizp_2024112810492916931854671
ppurio.templateCode6=bizp_2024112810522719814540186
ppurio.from=15881490

View File

@ -419,3 +419,16 @@ email.password=@caseadmin2024
#\uac80\uc0c9\uc194\ub8e8\uc158
search.host=http://192.168.0.60:7578
#\uc54c\ub9bc\ud1a1
ppurio.id=kofair
ppurio.pw=kofa2024@
ppurio.host=https://api.bizppurio.com
ppurio.senderKey=953031f0c131963c2fa9cd004f9965f9d487bdc5
ppurio.templateCode1=bizp_2024112810423519814410026
ppurio.templateCode2=bizp_2024112810423516931294012
ppurio.templateCode3=bizp_2024112810492919814837182
ppurio.templateCode4=bizp_2024112810492916931760451
ppurio.templateCode5=bizp_2024112810492916931854671
ppurio.templateCode6=bizp_2024112810522719814540186
ppurio.from=15881490

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="Send">
<typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
<typeAlias alias="sendAtVO" type="kcc.com.snd.service.SendAtVO"/>
<select id="sendDAO.selectToken" resultClass="sendAtVO">
SELECT
A.ACCESSTOKEN,
A.TYPE,
A.EXPIRED
FROM
UNP_PPURIO_TOKEN A
</select>
<update id="sendDAO.updateToken" parameterClass="sendAtVO">
UPDATE UNP_PPURIO_TOKEN
SET
ACCESSTOKEN = #accesstoken#,
TYPE = #type#,
EXPIRED = #expired#
</update>
</sqlMap>

View File

@ -3,6 +3,7 @@
<mapper namespace="mediation">
<select id="number" resultType="String">
<![CDATA[
SELECT
CASE
WHEN NVL(MAX(SUBSTR(RCEPT_NO,1,8)), '0') = TO_CHAR(SYSDATE,'YYYYMMDD')
@ -10,7 +11,8 @@
ELSE TO_CHAR(SYSDATE,'YYYYMMDD') || '-' || '001'
END
FROM C_RCEPTMST
WHERE (SELECT MAX(SUBSTR(RCEPT_NO,1,8)) FROM C_RCEPTMST) = SUBSTR(RCEPT_NO,1,8)
WHERE (SELECT MAX(SUBSTR(RCEPT_NO,1,8)) FROM C_RCEPTMST WHERE SUBSTR(RCEPT_NO, 1, 8) <= TO_CHAR(SYSDATE, 'YYYYMMDD')) = SUBSTR(RCEPT_NO,1,8)
]]>
</select>
<select id="code" parameterType="java.util.HashMap" resultType="java.util.HashMap">

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<sqlMap resource="egovframework/sqlmap/com/cmm/snd/Send_SQL_Oracle.xml"/>
</sqlMapConfig>

View File

@ -82,6 +82,7 @@
<pattern>*/gtm/case/visualFormPreview.do*</pattern>
<pattern>*/gtm/case/trublprocessmng/dtaPop/jsp/Page.do*</pattern>
<pattern>*/gtm/case/trublprocessmng/atendPop/jsp/Page.do*</pattern>
<pattern>*/gtm/case/trublprocessmng/fileHistoryPop/jsp/Page.do*</pattern>
<!-- <pattern>*/manager/skin/siteSkinHtml.jsp*</pattern> -->
</excludes>
@ -157,6 +158,7 @@
<pattern>/kccadr/textsence/textSenseResponse.do</pattern>
<pattern>/web/user/mypage/case/01/168/devCiMakePop.do</pattern>
<pattern>/web/user/siren/case/04/154/check.do</pattern>
<pattern>*/web/user/mediation/case/caseSignPop/popup.do*</pattern>
</decorator>

View File

@ -28,10 +28,13 @@
<![endif]-->
<!-- js -->
<script src="/js/base64.js"></script>
<script src="/kofair_case_seed/script/lib/jquery-3.5.0.js"></script>
<script src="/js/lib/base64.js"></script>
<script src="/js/common.js"></script>
<script src="/js/lib/jquery.blockUI.js"></script>
<script src="/js/jquery.form.js"></script>
<script src="/js/datepicker.js"></script>
<!-- <script src="/js/jquery.form.js"></script> -->
<script src="/js/common_XHR.js"></script>
<script src="/AnySign4PC/anySign4PCInterface.js"></script>
<!-- js -->

View File

@ -11,16 +11,16 @@
<title>PDF 문서 VIEW</title>
<link rel="stylesheet" href="/pdf/web/viewer.css">
<link rel="stylesheet" href="/js/pdf/web/viewer.css">
<!-- This snippet is used in production (included from viewer.html) -->
<link rel="resource" type="application/l10n" href="/pdf/web/locale/locale.properties">
<script src="/pdf/build/pdf.js"></script>
<link rel="resource" type="application/l10n" href="/js/pdf/web/locale/locale.properties">
<script src="/js/pdf/build/pdf.js"></script>
<script src="/pdf/web/viewer.js"></script>
<script src="/js/pdf/web/viewer.js"></script>
<script src="/kccadrPb/usr/script/jquery-3.5.0.js"></script>
</head>
<body tabindex="1" class="loadingInProgress">

View File

@ -252,7 +252,7 @@
var popOption = "width=900, height=800, resizable=no, scrollbars=no, status=no;";
var pop = window.open('', "caseSignPop", popOption);
f.target = "caseSignPop";
f.action = "/user/mediation/case/caseSignPop/popup.do";
f.action = "/web/user/mediation/case/caseSignPop/popup.do";
f.submit();
}
</script>
@ -327,7 +327,7 @@
</div>
</div>
<form:form name="applyForm" id="applyForm" method="post" action="/user/mediation/${siteIdx}/04/${siteMenuIdx}/checkMediationWrite.do">
<form:form name="applyForm" id="applyForm" method="post" action="/web/user/mediation/${siteIdx}/04/${siteMenuIdx}/checkMediationWrite.do">
<input type="hidden" name="rceptNo" value="${masterData.RCEPT_NO}">
<input type="hidden" name="fileFuncType" value="mediation">
<input type="hidden" name="hpName" id="hpName" value="${hpName}" />
@ -343,7 +343,7 @@
<dd>
<div class="file_upload_wrap">
<div class="file_button">
<label for="upFile_1" class="file btn btn_text btn_40 darkblue_border">파일선택</label>
<label for="upFile_1" class="file btn btn_text btn_40 darkblue_border" style="display:flex;justify-content:center;align-items:center;">파일선택</label>
</div>
<ul class="file_list fill">
<div class="cs-files fl" id="upFileHtml1">
@ -384,7 +384,7 @@
<dd>
<div class="file_upload_wrap">
<div class="file_button">
<label for="upFile_2" class="file btn btn_text btn_40 darkblue_border">파일선택</label>
<label for="upFile_2" class="file btn btn_text btn_40 darkblue_border" style="display:flex;justify-content:center;align-items:center;">파일선택</label>
</div>
<ul class="file_list fill">
<div class="cs-files fl" id="upFileHtml2">
@ -406,7 +406,7 @@
<dd>
<div class="file_upload_wrap">
<div class="file_button">
<label for="upFile_3" class="file btn btn_text btn_40 darkblue_border">파일선택</label>
<label for="upFile_3" class="file btn btn_text btn_40 darkblue_border" style="display:flex;justify-content:center;align-items:center;">파일선택</label>
</div>
<ul class="file_list fill">
<div class="cs-files fl" id="upFileHtml3">
@ -425,7 +425,7 @@
<dd>
<c:forEach items="${trublreqstmngCaseFileList}" var="file" varStatus="status">
<c:if test="${file.fileGubun == '4812000000'}">
<div id="fileUploadP${status.count}">
<%-- <div id="fileUploadP${status.count}"> --%>
<img src="/img/user/bbs/icon_file.gif" alt="gif" style="margin-top: 14px">&nbsp;&nbsp;<a href="/seed/extra/down/file.do?dataIdx=${file.seqNo}&funcType=${file.fileFunc}&pathKey1=${siteIdx}&downUserl=user">${file.fileName} (${file.regDt}, ${file.fileOwner})</a>
</div>
</c:if>
@ -435,10 +435,10 @@
<dd>
<div class="file_upload_wrap">
<div class="file_button">
<label for="upFile_4" class="file btn btn_text btn_40 darkblue_border">파일선택</label>
<label for="upFile_4" class="file btn btn_text btn_40 darkblue_border" style="display:flex;justify-content:center;align-items:center;">파일선택</label>
</div>
<ul class="file_list fill">
<div class="cs-files fl" id="upFileHtml3">
<div class="cs-files fl" id="upFileHtml4">
<c:forEach items="${trublreqstmngCaseFileList}" var="file" varStatus="status">
<c:if test="${file.fileGubun == '4820000000' and file.memberSeq eq isSeq}">
<div id="fileUploadP${status.count}">
@ -458,17 +458,32 @@
<b class="title depth02">조정절차 관련 공문서 확인</b>
<dl class="blue_row_dl">
<dt>접수사실 통지 및 신청서 보완요구</dt>
<dd>
<ul class="file_list fill">
<c:forEach items="${trublreqstmngCaseFileList}" var="file" varStatus="status">
<c:if test="${file.fileGubun == '4815000000'}">
<li><a href="/seed/extra/down/file.do?dataIdx=${file.seqNo}&funcType=${file.fileFunc}&pathKey1=${siteIdx}&downUserl=user" download="download"><i class="icon file clip"></i><span class="file_name">${file.fileName} (${file.regDt}, ${file.fileOwner})</span></a> <button type="button" class="btn only_icon round"><i class="icon delete gray_fill"></i></button></li>
</c:if>
</c:forEach>
</ul>
</dd>
<c:choose>
<c:when test="${isGubun == 'app'}">
<dt>접수사실 통지 및 신청서 보완요구</dt>
<dd>
<ul class="file_list fill">
<c:forEach items="${trublreqstmngCaseFileList}" var="file" varStatus="status">
<c:if test="${file.fileGubun == '4815000000'}">
<li><a href="/seed/extra/down/file.do?dataIdx=${file.seqNo}&funcType=${file.fileFunc}&pathKey1=${siteIdx}&downUserl=user" download="download"><i class="icon file clip"></i><span class="file_name">${file.fileName} (${file.regDt}, ${file.fileOwner})</span></a> <button type="button" class="btn only_icon round"><i class="icon delete gray_fill"></i></button></li>
</c:if>
</c:forEach>
</ul>
</dd>
</c:when>
<c:when test="${isGubun == 'res'}">
<dt>피신청인 자료제출 요구</dt>
<dd>
<ul class="file_list fill">
<c:forEach items="${trublreqstmngCaseFileList}" var="file" varStatus="status">
<c:if test="${file.fileGubun == '4828000000'}">
<li><a href="/seed/extra/down/file.do?dataIdx=${file.seqNo}&funcType=${file.fileFunc}&pathKey1=${siteIdx}&downUserl=user" download="download"><i class="icon file clip"></i><span class="file_name">${file.fileName} (${file.regDt}, ${file.fileOwner})</span></a> <button type="button" class="btn only_icon round"><i class="icon delete gray_fill"></i></button></li>
</c:if>
</c:forEach>
</ul>
</dd>
</c:when>
</c:choose>
<dt>사실관계의 확인을 위한 출석요구</dt>
<dd>
<ul class="file_list fill">
@ -509,12 +524,32 @@
<dd>-</dd>
<dt>신청취하서</dt>
<dd>-</dd>
<dt>조정조서</dt>
<dd>-</dd>
<c:if test="${masterData.CASE_D_TYPE eq '2'}">
<c:if test="${masterData.CASE_D_USER eq '3' or (isGubun eq 'app' and masterData.CASE_D_USER eq '1') or (isGubun eq 'res' and masterData.CASE_D_USER eq '2')}">
<dt>조정조서</dt>
<dd>
<c:set var="caseDFile" value="0" />
<c:forEach items="${trublreqstmngCaseFileList}" var="file" varStatus="status">
<c:if test="${file.fileGubun == '4808000000'}">
<c:if test="${caseDFile eq '0'}">
<c:choose>
<c:when test="${empty caseComment.CASE_D_SIGN}">
<button type="button" class="btn_inner_violet caseDBtn" style="line-height: 22px;" onclick="fn_caseSign('D');">서명</button>
</c:when>
<c:otherwise>
<button type="button" class="btn_inner_violet caseDBtn" style="line-height: 22px; background:#04B431;" onclick="fn_caseSign('D');">서명완료</button>
</c:otherwise>
</c:choose>
</c:if>
</c:if>
</c:forEach>
</dd>
</c:if>
</c:if>
</dl>
<div class="btn_wrap right">
<button type="button" class="btn btn_text btn_45 darkblue_fill" onclick="applyBtn();">등록</button>
<button type="submit" class="btn btn_text btn_45 darkblue_fill" onclick="applyBtn();">등록</button>
</div>
</form:form>
<form id="fileTempUpFrm1" action="/seed/extra/temp/file.do" method="post" enctype="multipart/form-data">

View File

@ -217,7 +217,7 @@ function bbsMasterExcelDownload(){
<col style="width: 10%">
<col style="width: 9%">
<%-- <col style="width: 8%"> --%>
<col style="width: 20%">
<col style="width: 25%">
</colgroup>
<thead>
<tr>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,146 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta name="robots" content="noindex">
<meta id="viewport" name="viewport" content="initial-scale=1.0, width=device-width, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<!--[if IE]>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<![endif]-->
<title>자료요구현황</title>
<link rel="shortcut icon" href="/img/favicon.ico" type="image/x-icon">
<link rel="icon" href="/img/favicon.ico" type="image/x-icon">
<!-- css -->
<link rel="stylesheet" href="/css/seed.reset.css">
<link rel="stylesheet" href="/css/seed.layout.css">
<link rel="stylesheet" href="/css/layout.css">
<link rel="stylesheet" href="/css/button.css">
<link rel="stylesheet" href="/css/seed.contents.css">
<link rel="stylesheet" href="/css/seed.mediaquery.css">
<link rel="stylesheet" href="/css/lib/jquery.mCustomScrollbar.min.css">
<link rel="stylesheet" href="/css/jquery-ui.css"/>
<link rel="stylesheet" href="/css/smartPop.css"/>
<link rel="stylesheet" href="/css/space.css"/>
<link rel="stylesheet" href="/css/picker.default.css">
<link rel="stylesheet" href="/css/picker.default.date.css">
<link rel="stylesheet" href="/css/case/common.css">
<!-- css -->
<!--[if lt IE 9]>
<script src="/js/lib/polyfill/IE9.js"></script>
<script src="/js/lib/polyfill/respond.min.js"></script>
<![endif]-->
<!-- js -->
<!-- 라이브러리, 플러그인 -->
<script src="/js/lib/jquery-1.9.1.min.js"></script>
<script src="/js/lib/jquery-ui.min.js"></script>
<script src="/js/lib/jquery.blockUI.js"></script>
<script src="/js/lib/jquery.pjax.js"></script>
<script src="/js/lib/modernizr-custom.js"></script>
<script src="/js/lib/jquery.mCustomScrollbar.concat.min.js"></script>
<script src="/js/lib/jquery.bxslider.min.js"></script>
<script src="/js/lib/picker.js"></script>
<script src="/js/lib/picker.date.js"></script>
<script src="/js/lib/legacy.js"></script>
<script src="/js/lib/base64.js"></script>
<!-- 라이브러리, 플러그인 끝 -->
<script src="/js/jquery.seed.js"></script>
<script src="/js/seed.common.js"></script>
<script src="/js/seed.app.js"></script>
<script src="/js/jquery.form.js"></script>
<script src="/js/commonFileUtil.js"></script>
<script src="/js/common_XHR.js"></script>
<script src="/js/common.js"></script>
<script src="/js/DateTimePicker.js"></script>
<script src="/js/jquery.selectboxes.js"></script>
<!-- js -->
</head>
<body>
<h2 class="mb10 mt30">■ ${param.title} 열람이력</h2>
<form name="frm" id="frm" action="" method="post">
<input type="hidden" name="fileSeq" value="">
<div class="form-wrap">
<div class="table-layout br-none">
<table>
<caption>분쟁조정 사례 테이블입니다.</caption>
<colgroup>
<col style="width:10%">
<col style="width:10%">
<col style="width:10%">
<col style="width:10%">
</colgroup>
<thead>
<tr>
<th scope="col">파일이름</th>
<th scope="col">열람자구분</th>
<th scope="col">열람자</th>
<th scope="col">열람일</th>
</tr>
</thead>
<tbody id="innertBox">
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="ac mt20 mb60">
<button type="button" class="btn-default responsive returnList" onclick="window.close()">닫기</button>
</div>
</form>
<form name="frmTemp" id="frmTemp" action="" method="post">
<input type="hidden" name="seqNo" id="seqNo" value="">
<input type="hidden" name="attendanceReqdt" id="attendanceReqdt" value="">
<input type="hidden" name="attendanceEnddt" id="attendanceEnddt" value="">
<input type="hidden" name="attendanceDt" id="attendanceDt" value="">
<input type="hidden" name="attendanceCheck" id="attendanceCheck" value="">
</form>
<script type="text/javascript">
$(document).ready(function(){
var sqlVal = '${param.fileSeq}';
if(sqlVal != ""){
var sqlArr = sqlVal.split(",");
sqlHtml = "";
for(var i = 0; i < sqlArr.length; i++){
sqlHtml += '<input type="hidden" name="fileSeq" value="'+sqlArr[i]+'">';
}
$("#frm").prepend(sqlHtml);
$("#typeTemp").val("L");
var param = jQuery('#frm').serialize();
url = "/gtm/case/trublprocessmng/ajax/FileHistory.do";
XHR2(url, param, function(r){
if(r.data.length > 0){
var htmlVal = "";
for(var i = 0; i < r.data.length; i++){
htmlVal +='<tr>';
htmlVal += '<td>'+r.data[i].fileName+'</td>';
htmlVal += '<td>'+(r.data[i].readerGubun == "app" ? "신청인" : "피신청인") +'</td>';
htmlVal += '<td>'+r.data[i].readerId+'</td>';
htmlVal += '<td>'+r.data[i].regDt+'</td>';
htmlVal +='</tr>';
}
$("#innertBox").html(htmlVal);
}else{
}
});
}
});
</script>
</body>
</html>

View File

@ -69,7 +69,8 @@
.pop-address-search .pop-address-search-inner .wrap:after {content:""; display:block; clear:both}
.pop-address-search .pop-address-search-inner .wrap *{height:39px; border:0 none}
.pop-address-search .pop-address-search-inner .wrap input[type="text"] {width:100%; line-height:39px; font-size: 14px;}
.pop-address-search .pop-address-search-inner .wrap input[type="button"] {position:absolute; right:0; top:0; width:39px; background:url(../img/btn-search.png) 50% 50% no-repeat}
/* .pop-address-search .pop-address-search-inner .wrap input[type="button"] {position:absolute; right:0; top:0; width:39px; background:url(../img/btn-search.png) 50% 50% no-repeat} */
.pop-address-search .pop-address-search-inner .wrap input[type="button"] {position:absolute; right:0; top:0; width:39px; background:url(/kofair_case_seed/usr/images/component/icon_search_black_m.png) 50% 50% no-repeat;background-size:20px;}
.pop-address-search .pop-address-search-inner .guide {display:inline-block; margin-top:14px; color:#186bb9; padding-right:39px}
.pop-address-search .pop-address-search-inner .logo {text-align:center; margin-top:15px;}
.pop-address-search .pop-address-search-inner .exam {text-align:left; margin-top:5px}

View File

@ -0,0 +1,346 @@
/* 민규 추가 */
.col-table table{
table-layout:fixed;
}
.col-table table .col-th{
width: 150px;
}
.col-table table input[type="text"]{
width: 100%;
}
.col-table table input.date-input{
width: 45%;
float: left;
}
.col-table table input.date-input_40{
width: 40%;
}
.col-table table .flow{
float: left;
display: block;
width: 10%;
line-height: 30px;
height: 30px;
text-align: center;
}
.col-table table input.phone-input{
width: 30%;
float: left;
}
.col-table table .hyphen{
float: left;
display: block;
width: 5%;
line-height: 30px;
height: 30px;
text-align: center;
}
.col-table table input.widhtAtuo{
width: auto;
}
.data-table.border-table table td{
border-bottom: 1px solid #e8e8e8;
border-left: 1px solid #e8e8e8;
}
.tit-box{
margin-top: 30px;
margin-bottom: 20px;
overflow: hidden;
}
.tit-box h4{
float: left;
}
.tit-box div{
float: right;
}
.col-sch-wrap .bbs-view-layout{
padding-right: 40px;
}
.col-sch-wrap .bbs-view-layout .bbs-view-item{
border: none;
width: 100%;
}
.col-sch-wrap .bbs-view-layout .bbs-view-item .item-box{
padding: 0;
}
.col-sch-wrap .bbs-view-layout .bbs-view-item .item-title{
padding-left: 40px;
}
.col-sch-wrap .bbs-view-layout .bbs-view-item .item-title.col-tit-1{
width: 11.55%;
}
.col-sch-wrap .bbs-view-layout .bbs-view-item .item-title.col-tit-1 + .item-box{
width: 88.4%;
}
.col-sch-wrap .bbs-view-layout select{
width: 100%;
}
.col-sch-wrap .sch-content-wrap .btn-page-sch{
float: right;
margin-top: 15px;
}
@media screen and (max-width: 768px){
.col-sch-wrap .bbs-view-layout{
padding-right: 0;
padding: 0 20px;
}
.col-sch-wrap .bbs-view-layout .bbs-view-item .item-title + .item-box + .item-title{
margin-top: 10px;
}
.col-sch-wrap .bbs-view-layout .bbs-view-item .item-title{
padding-left: 0;
}
.col-sch-wrap .sch-content-wrap .btn-page-sch{
position: static;
right: 0;
top: 0;
width: auto;
height: auto;
padding: 6px 20px;
}
.col-sch-wrap .bbs-view-layout .bbs-view-item .item-title.col-tit-1{
width: 100%;
}
.col-sch-wrap .bbs-view-layout .bbs-view-item .item-title.col-tit-1 + .item-box{
width: 100%;
}
}
/* 민규 추가 */
.cs-container{
padding:0 20px;
}
.cs-container *{
vertical-align:initial;
}
.cs-container td,
.cs-container th{
vertical-align:middle;
}
.data-table.bordered{
border:0;
}
.data-table.no-gradient th{
background:#F2F2F2;
}
.data-table.no-hover table tbody tr:hover {
background: #fff;
}
.item-box input{
vertical-align:initial;
}
.cs-container h3{
font-size:17px;
}
.cs-step {
display: table;
width:100%;
margin-top:60px;
margin-bottom: 30px;
overflow: hidden;
counter-reset: step;
}
.cs-step li {
display: table-cell;
color: #fff;
text-transform: uppercase;
font-size: 9px;
position: relative;
text-align: center;
white-space: nowrap;
}
.cs-step li a{
display: block;
font-size: 16px;
}
.cs-step li a:before {
content: "Step "counter(step);
counter-increment: step;
padding:0 10px;
line-height: 36px;
display: block;
font-size: 13px;
font-weight: 600;
color: #333;
background: white;
margin: 0 auto 10px auto;
}
.cs-step li:first-child a:before{
border-radius:3px 0 0 3px;
}
.cs-step li:last-child a:before{
border-radius:0 3px 3px 0;
}
.cs-step li:hover a:before,
.cs-step li.active a:before{
background: #676fb2;
color: white;
}
.data-table.inp-scroll input[type="text"].form-element{
min-width: 126px;
}
.data-table.layout-type table tr{
border-top:0
}
.data-table.layout-type table th{
width:23%;
background:#f3f3f3;
border-right: 1px solid #e8e8e8;
}
.data-table.layout-type table td{
text-align:left;
}
.data-table.layout-type table tr:hover th{
background:#f3f3f3;
}
.data-table.layout-type table tr:hover td{
background:#fff;
}
.cs-panel {
margin-bottom: 20px;
background-color: #fff;
border: 1px solid transparent;
border-radius: 4px;
-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);
box-shadow: 0 1px 1px rgba(0,0,0,.05);
border-color: #dcdcdc;
}
.cs-panel-heading {
color: #333;
font-size:16px;
background-color: #f3f3f3;
border-color: #dcdcdc;
letter-spacing:-1px;
font-weight:700;
}
.cs-panel-title{
float:left;
font-size:14px;
line-height:30px;
}
.cs-panel-btn-zone{
float:right;
}
.cs-panel-heading {
padding:10px 15px;
border-bottom: 1px solid #dcdcdc;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.cs-panel-body {
padding: 15px;
}
.cs-toggle-container{
margin-top:10px;
}
.cs-toggle-container:first-child{
margin-top:0;
}
.cs-toggle-btn{
width: 100%;
text-align: center;
height: 34px;
background: #7e7e7e;
color: #fff;
font-size:14px;
padding:0 20px;
}
.cs-toggle-btn [data-nth]{
vertical-align: middle;
}
.cs-toggle{
display: none;
}
.cs-essential{
font-weight:700;
color:#ff4315;
}
.btn-default{
vertical-align:middle;
}
.btn-default.transparent{
background: transparent;
color:#212121 !important;
border: 1px solid #ddd;
border-radius: 3px;
}
.btn-default.sm-size{
padding:5px 12px;
}
.bbs-view-item .item-box .cs-files .row{
margin:7px 0
}
.bbs-view-item .item-box .cs-files .row:last-child {
margin: 0;
}
.item-box input[type="file"].file-unset{
display: initial !important;
overflow: initial !important;
position: static !important;
width: auto ;
height: auto ;
font-size: 13px !important;
line-height: initial !important;
text-indent: initial !important;
vertical-align: initial !important;
padding: initial !important;
text-indent:0;
}
.item-box input[type="file"].file-unset + label{
position: initial !important;
display: initial !important;
background: initial !important;
height: initial !important;
line-height: initial !important;
color: initial !important;
border-radius: initial !important;
padding: initial !important;
vertical-align:initial !important;
overflow: unsert !important;
margin: initial !important;
max-width: initial !important;
font-weight: initial !important;
}
input[type="file"].file-unset + label:before{
display:none !important;
}
@media (max-width:1024px){
.cs-panel-btn-zone{
width:30%;
text-align:right;
}
.cs-panel-btn-zone button{
width:100%;
}
.col-table table{
table-layout:auto;
}
.col-table table .col-th{
width: auto;
}
}
@media (max-width: 768px){
.bbs-view-item .item-title.no-bullet:before {
content: '';
}
.cs-panel-body{
padding:10px;
}
.cs-toggle-container{
margin-top:5px;
}
}
@media (max-width:640px){
.cs-container{
padding:0 5px;
}
.cs-step li a{
font-size:14px;
}
.item-box input[type="file"].file-unset{
max-width:180px;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,3 @@
àRCopyright 1990-2009 Adobe Systems Incorporated.
All rights reserved.
See ./LICENSEáCNS2-H

View File

@ -0,0 +1,3 @@
àRCopyright 1990-2009 Adobe Systems Incorporated.
All rights reserved.
See ./LICENSEá ETen-B5-H` ^

Some files were not shown because too many files have changed in this diff Show More