Merge branch 'tolag3' into advc

This commit is contained in:
leejunho 2023-11-24 09:37:13 +09:00
commit f96399a6b5
6 changed files with 470 additions and 6 deletions

View File

@ -100,8 +100,8 @@ public class ExcelUtil {
for (int i = 0; i < order.length; i++) { for (int i = 0; i < order.length; i++) {
for (Method method : methods) { // vo 내부 메소드 반복 for (Method method : methods) { // vo 내부 메소드 반복
//System.out.println("voList.method()"); System.out.println("voList.method()");
//System.out.println(method.getName()); System.out.println(method.getName());
if (method.getName().equals("get" + (order[i] == null ? "" : order[i]))) { // vo메소드 이름과 order의 이름 비교 if (method.getName().equals("get" + (order[i] == null ? "" : order[i]))) { // vo메소드 이름과 order의 이름 비교
// getter 호출 준비 // getter 호출 준비

View File

@ -799,6 +799,26 @@ public class UserQustnrManageController {
} }
/**
* @methodName : UserQustnrManageQrCreate
* @author : JunHo Lee
* @date : 2023.11.23
* @description : qr코드 생성
* @param qustnrQestnManageVO
* @param model
* @return
* @throws Exception
*/
@RequestMapping(value="/uss/olp/qqm/UserQustnrManageQrCreate.do")
public String UserQustnrManageQrCreate(
@ModelAttribute("qustnrQestnManageVO") QustnrQestnManageVO qustnrQestnManageVO,
ModelMap model) throws Exception {
return "/uss/olp/qqm/UserQustnrManageQrCreate";
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// //

View File

@ -26,6 +26,7 @@ public class CndtnTrgtMngVO extends ComDefaultVO implements Serializable {
private String trgtNm; // 대상자성명 private String trgtNm; // 대상자성명
private String clphone; // 연락처 private String clphone; // 연락처
private String dBirth; // 생년월일 private String dBirth; // 생년월일
private String DBirth; // 생년월일
private String addr; // 주소 private String addr; // 주소
private String addrDetail; // 상세주소 private String addrDetail; // 상세주소
private String email; // 이메일주소 private String email; // 이메일주소
@ -210,6 +211,12 @@ public class CndtnTrgtMngVO extends ComDefaultVO implements Serializable {
public void setSearchSelStatusToList(String searchSelStatus) { public void setSearchSelStatusToList(String searchSelStatus) {
this.searchSelStatusList = Arrays.asList(searchSelStatus.split(",")); this.searchSelStatusList = Arrays.asList(searchSelStatus.split(","));
} }
public String getDBirth() {
return DBirth;
}
public void setDBirth(String dBirth) {
DBirth = dBirth;
}

View File

@ -5,12 +5,16 @@ import java.time.Period;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.Map;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
@ -29,6 +33,7 @@ import kcc.com.cmm.service.CmmnDetailCode;
import kcc.com.cmm.service.EgovCmmUseService; import kcc.com.cmm.service.EgovCmmUseService;
import kcc.com.cmm.service.EgovFileMngService; import kcc.com.cmm.service.EgovFileMngService;
import kcc.com.cmm.service.FileVO; import kcc.com.cmm.service.FileVO;
import kcc.com.cmm.spring.data.util.ExcelUtil;
import kcc.com.cmm.util.DateUtil; import kcc.com.cmm.util.DateUtil;
import kcc.com.cmm.util.StringUtil; import kcc.com.cmm.util.StringUtil;
import kcc.com.utl.user.service.CheckFileUtil; import kcc.com.utl.user.service.CheckFileUtil;
@ -494,7 +499,7 @@ public class CndtnTrgtMngController {
private String getReqNmbr(CndtnTrgtMngVO cndtnTrgtInfoMngVO) { private String getReqNmbr(CndtnTrgtMngVO cndtnTrgtInfoMngVO) {
//성인 미성년 구분 //성인 미성년 구분
String adultWhether = getIsAdultInKorea(cndtnTrgtInfoMngVO.getdBirth()); String adultWhether = getIsAdultInKorea(cndtnTrgtInfoMngVO.getDBirth());
String reqNmbrTemp = adultWhether+"-"+cndtnTrgtInfoMngVO.getCmptntAthrt()+"-"+DateUtil.getStringToLocalDateYear(); String reqNmbrTemp = adultWhether+"-"+cndtnTrgtInfoMngVO.getCmptntAthrt()+"-"+DateUtil.getStringToLocalDateYear();
int cnt = cndtnTrgtInfoMngService.findCntreqNmber("%" + reqNmbrTemp + "%"); int cnt = cndtnTrgtInfoMngService.findCntreqNmber("%" + reqNmbrTemp + "%");
@ -684,10 +689,10 @@ public class CndtnTrgtMngController {
List<CndtnTrgtMngVO> cndtnTrgtInfoMngVOList = new ArrayList<CndtnTrgtMngVO>(); List<CndtnTrgtMngVO> cndtnTrgtInfoMngVOList = new ArrayList<CndtnTrgtMngVO>();
System.out.println(StringUtils.isEmpty(cndtnTrgtInfoMngVO.getTrgtNm()) || StringUtils.isEmpty(cndtnTrgtInfoMngVO.getdBirth())); System.out.println(StringUtils.isEmpty(cndtnTrgtInfoMngVO.getTrgtNm()) || StringUtils.isEmpty(cndtnTrgtInfoMngVO.getDBirth()));
System.out.println("StringUtils.isEmpty(cndtnTrgtInfoMngVO.getTrgtNm()) : "+ StringUtils.isEmpty(cndtnTrgtInfoMngVO.getTrgtNm())); System.out.println("StringUtils.isEmpty(cndtnTrgtInfoMngVO.getTrgtNm()) : "+ StringUtils.isEmpty(cndtnTrgtInfoMngVO.getTrgtNm()));
System.out.println("StringUtils.isEmpty(cndtnTrgtInfoMngVO.getdBirth()) : "+ StringUtils.isEmpty(cndtnTrgtInfoMngVO.getdBirth())); System.out.println("StringUtils.isEmpty(cndtnTrgtInfoMngVO.getdBirth()) : "+ StringUtils.isEmpty(cndtnTrgtInfoMngVO.getDBirth()));
if(StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getTrgtNm()) || StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getdBirth())) if(StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getTrgtNm()) || StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getDBirth()))
{ {
cndtnTrgtInfoMngVO.setFirstIndex(0); cndtnTrgtInfoMngVO.setFirstIndex(0);
cndtnTrgtInfoMngVO.setRecordCountPerPage(100000); cndtnTrgtInfoMngVO.setRecordCountPerPage(100000);
@ -910,6 +915,162 @@ public class CndtnTrgtMngController {
} }
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtMngExcel.do")
public ModelAndView trgtMngExcel(
@ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("excelDownloadView");
//로그인 처리====================================
//로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
System.out.println("loginVO.getAuthority() :: "+ loginVO.getAuthority());
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) {
modelAndView.addObject(model);
return modelAndView;
}
//로그인 처리====================================
//1.pageing step1
PaginationInfo paginationInfo = this.setCndtnPagingStep1(cndtnTrgtInfoMngVO);
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
cndtnTrgtInfoMngVO = this.setCndtnPagingStep2(cndtnTrgtInfoMngVO, paginationInfo);
//검색 조회
String selectCondition = "";
if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeyword())){
String searchStatus = cndtnTrgtInfoMngVO.getSearchStatus();
// selectCondition = "AND a."+searchStatus+" LIKE CONCAT ('%', '" +cndtnTrgtInfoMngVO.getSearchKeyword() + "', '%')";
selectCondition = "AND a."+searchStatus+" LIKE '%" +cndtnTrgtInfoMngVO.getSearchKeyword() + "%'";
cndtnTrgtInfoMngVO.setSearchQuery(selectCondition);
}
if(StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getSearchSelStatus()))
{
cndtnTrgtInfoMngVO.setSearchSelStatusToList(cndtnTrgtInfoMngVO.getSearchSelStatus());
}
List<CndtnTrgtMngVO> cndtnTrgtInfoMngVOList = null;
try {
cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
ComDefaultCodeVO vo = new ComDefaultCodeVO();
for(CndtnTrgtMngVO tmp : cndtnTrgtInfoMngVOList) {
//의뢰읠
tmp.setReqPnttm(tmp.getReqPnttm().substring(0, 10));
//사건번호
tmp.setVntYear(tmp.getVntYear()+"형제"+tmp.getVntNmbr());
//관할청
if(StringUtil.isNotEmpty(tmp.getCmptntAthrt())) {
vo.setCodeId("VEA008");
vo.setCode(tmp.getCmptntAthrt());
CmmnDetailCode cmmnDetailCode= egovCmmUseService.selectCmmCodeDetailValue(vo);
tmp.setCmptntAthrt(StringUtil.escapeXml(cmmnDetailCode.getCodeNm()));
}
//생년월일
if(StringUtil.isNotEmpty(tmp.getdBirth())) {
tmp.setDBirth(tmp.getdBirth());
}
//성별
if(StringUtil.isNotEmpty(tmp.getSex())) {
vo.setCodeId("COM014");
vo.setCode(tmp.getSex());
CmmnDetailCode cmmnDetailCodeSex= egovCmmUseService.selectCmmCodeDetailValue(vo);
tmp.setSex((StringUtil.escapeXml(cmmnDetailCodeSex.getCodeNm())));
}
//의뢰상태
if(StringUtil.isNotEmpty(tmp.getReqStateCd())) {
vo.setCodeId("VEA005");
vo.setCode(tmp.getReqStateCd());
CmmnDetailCode cmmnDetailCodeReqState= egovCmmUseService.selectCmmCodeDetailValue(vo);
tmp.setReqStateCd((StringUtil.escapeXml(cmmnDetailCodeReqState.getCodeNm())));
}
//교육상태
if(StringUtil.isNotEmpty(tmp.getEduStateCd())) {
vo.setCodeId("VEA002");
vo.setCode(tmp.getEduStateCd());
CmmnDetailCode cmmnDetailCodeEduState= egovCmmUseService.selectCmmCodeDetailValue(vo);
tmp.setEduStateCd((StringUtil.escapeXml(cmmnDetailCodeEduState.getCodeNm())));
}
//주소
if(StringUtil.isNotEmpty(tmp.getAddr()) && StringUtil.isNotEmpty(tmp.getAddrDetail())) {
tmp.setAddr(tmp.getAddr()+" "+tmp.getAddrDetail());
}
}
int[] width = {
4000, 5000, 5000, 5000, 3000
, 3000, 5000, 4000, 5000, 13000
, 3500
}; // 너비
String[] header = {
"의뢰일", "사건번호", "관할청", "생년월일", "성명"
, "성별" , "의뢰번호", "의뢰상태", "교육상태", "주소"
, "검사명"
}; // 헤더에 들어갈 이름
String[] order = {
"ReqPnttm", "VntYear", "CmptntAthrt", "DBirth", "TrgtNm"
, "Sex", "ReqNmbr", "ReqStateCd", "EduStateCd", "Addr"
, "PrsctrNm"
}; // vo 내부의 필드 이름 (첫글자 대문자, 낙타체 사용)
excelDown(
cndtnTrgtInfoMngVOList,
"대상자 목록",
width,
header,
order,
model
);
//3.pageing step3
// paginationInfo = this.setCndtnPagingStep3(cndtnTrgtInfoMngVOList, paginationInfo);
//
// model.addAttribute("paginationInfo", paginationInfo);
//
//
// //대상 리스트, 페이징 정보 전달
// model.addAttribute("list", cndtnTrgtInfoMngVOList);
//
// ComDefaultCodeVO codeParam = new ComDefaultCodeVO();
// codeParam.setCodeId("VEA008");
// List<CmmnDetailCode> CmmnDetailCodeList = egovCmmUseService.selectCmmCodeDetailOrderByCode(codeParam);
// model.addAttribute("CmmnDetailCodeList", CmmnDetailCodeList);
modelAndView.addObject(model);
return modelAndView;
}
@ -1010,4 +1171,26 @@ public class CndtnTrgtMngController {
return p_paginationInfo; return p_paginationInfo;
} }
@SuppressWarnings("unused")
private void excelDown(
List list,
String title,
int[] width,
String[] header,
String[] order,
ModelMap model
){
// 호출
SXSSFWorkbook workbook;
try {
workbook = ExcelUtil.makeSimpleFruitExcelWorkbook(list, header, order, width, title);
model.addAttribute("locale", Locale.KOREA);
model.addAttribute("workbook", workbook);
model.addAttribute("workbookName", title);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} }

View File

@ -215,6 +215,13 @@
} }
function fncExcel(){
var listForm = document.listForm ;
// listForm.searchCondition.value = $("#searchCondition").val() ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/trgtMngExcel.do'/>";
listForm.submit();
}
</script> </script>
<title>교육과정관리</title> <title>교육과정관리</title>
</head> </head>
@ -309,6 +316,14 @@
<button type="button" class="btn_type08" onclick="fncGoList(); return false;">검색</button> <button type="button" class="btn_type08" onclick="fncGoList(); return false;">검색</button>
</div> </div>
</div> </div>
<div class="list_top_2">
<div class="util_left">
<p>엑셀 다운로드</p>
</div>
<div class="util_right">
<button type="button" class="btn_type08" onclick="fncExcel();">엑셀 다운로드</button>
</div>
</div>
</div> </div>
<div class="list_util"> <div class="list_util">

View File

@ -0,0 +1,239 @@
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<title>qr 생성</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="content-language" content="ko">
<script type="text/javaScript" language="javascript">
$( document ).ready(function(){
});
function fnList() {
document.searchForm.submit();
}
</script>
<!-- 자바스크립트 경고 태그 -->
<noscript class="noScriptTitle">자바스크립트를 지원하지 않는 브라우저에서는 일부 기능을 사용하실 수 없습니다.</noscript>
<div class="cont_wrap">
<div class="box">
<div class="cont_tit">
<h2>설문문항 등록</h2>
</div>
<div class="cont">
<div class="tbType02">
<table>
<colgroup>
<col style="width: 20%">
<col style="width: 80%">
</colgroup>
<tbody>
<tr>
<th><span class="reqArea">설문지정보(제목)</span></th>
<td>
<c:out value="${qestnrInfo.qustnrSj}" escapeXml="true"/>
<input type="hidden" name="qestnrCn" id="qestnrCn" value="${qestnrInfo.qustnrSj}" />
</td>
</tr>
<tr>
<th><span class="reqArea">질문 내용</span></th>
<td>
<textarea id="qestnCn" name="qestnCn">${qestnrInfo.qestnCn}</textarea>
</td>
</tr>
<tr>`
<th><span class="reqArea">질문 순번</span></th>
<td>
${qustnrQestnManageVO.qestnSn}
<input type="hidden" name="qestnSn" id="qestnSn" value="${qustnrQestnManageVO.qestnSn}">
</td>
</tr>
<tr>
<th><span class="reqArea">질문 유형</span></th>
<td>
<kc:select codeId="COM018" id="appPlaceTy" name="qestnTyCode" selectedValue="${qestnrInfo.qestnTyCode}" styleClass="sel_type1" onChange="selectTyCode()"/>
</td>
</tr>
<tr style="display: none;">
<th><span class="reqArea">최대선택건수</span></th>
<td>
<select id="mxmmChoiseCo" name="mxmmChoiseCo" title="최대선택건수 선택" class="sel_type1">
<option value="1" <c:if test="${qestnrInfo.mxmmChoiseCo == '1' }"> selected="selected" </c:if>>1</option>
<option value="2" <c:if test="${qestnrInfo.mxmmChoiseCo == '2' }"> selected="selected" </c:if>>2</option>
<option value="3" <c:if test="${qestnrInfo.mxmmChoiseCo == '3' }"> selected="selected" </c:if>>3</option>
<option value="4" <c:if test="${qestnrInfo.mxmmChoiseCo == '4' }"> selected="selected" </c:if>>4</option>
<option value="5" <c:if test="${qestnrInfo.mxmmChoiseCo == '5' }"> selected="selected" </c:if>>5</option>
<option value="6" <c:if test="${qestnrInfo.mxmmChoiseCo == '6' }"> selected="selected" </c:if>>6</option>
<option value="7" <c:if test="${qestnrInfo.mxmmChoiseCo == '7' }"> selected="selected" </c:if>>7</option>
<option value="8" <c:if test="${qestnrInfo.mxmmChoiseCo == '8' }"> selected="selected" </c:if>>8</option>
<option value="9" <c:if test="${qestnrInfo.mxmmChoiseCo == '9' }"> selected="selected" </c:if>>9</option>
<option value="10" <c:if test="${qestnrInfo.mxmmChoiseCo == '10' }"> selected="selected" </c:if>>10</option>
</select>
</td>
</tr>
</tbody>
</table>
</div>
<div class="tbType02">
<table id="itemTable">
<colgroup>
<col style="width: 20%">
<col style="width: 80%">
</colgroup>
<tbody id="itemTableTbody">
<c:choose>
<c:when test="${fn:length(qustnrItemList) < 1}">
<tr>
<th>1</th>
<td>
<input type="text" name="iemCn" style='width:90%; float:left;' maxlength="50" />
</td>
</tr>
<tr>
<th>2</th>
<td>
<input type="text" name="iemCn" style='width:90%; float:left;' maxlength="50" />
</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach var="resultList" items="${qustnrItemList}" varStatus="status">
<tr>
<th>${status.count}</th>
<td>
<input type="text" name="iemCn" maxlength="50" style='width:90%; float:left;' value="${resultList.iemCn}"/>
</td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
<div class="btn_wrap btn_layout01">
<div class="area_left">
<input type="button" class="btnType04" value="문항추가" onclick="addRow(); return false;">
<input type="button" class="btnType04" value="문항삭제" onclick="delRow(); return false;">
</div>
<div class="area_right">
<input type="button" class="btnType03" value="이전페이지" onclick="fnList(); return false;">
<c:choose>
<c:when test="${fn:length(qustnrItemList) == 0}">
<input type="button" class="btnType06" value="저장" onclick="fn_egov_save_QustnrItemManage('regi'); return false; ">
</c:when>
<c:otherwise>
<input type="button" class="btnType06" value="수정" onclick="fn_egov_save_QustnrItemManage('upda'); return false; ">
</c:otherwise>
</c:choose>
</div>
</div>
</div>
</div>
</div>
</form>
<div style="display: none;">
<table id="tempTable">
<tr>
<th>1</th>
<td>
<input type="text" style='width:90%; float:left;' maxlength="50"/>
</td>
</tr>
<tr>
<th>2</th>
<td>
<input type="text" style='width:90%; float:left;' maxlength="50"/>
</td>
</tr>
</table>
<table id="tempTable_10">
<tr>
<th>1</th>
<td>
<input type="text" style='width:90%; float:left;' maxlength="50" value="매우만족" readonly/>
</td>
</tr>
<tr>
<th>2</th>
<td>
<input type="text" style='width:90%; float:left;' maxlength="50" value="만족" readonly/>
</td>
</tr>
<tr>
<th>3</th>
<td>
<input type="text" style='width:90%; float:left;' maxlength="50" value="보통" readonly/>
</td>
</tr>
<tr>
<th>4</th>
<td>
<input type="text" style='width:90%; float:left;' maxlength="50" value="불만족" readonly/>
</td>
</tr>
<tr>
<th>5</th>
<td>
<input type="text" style='width:90%; float:left;' maxlength="50" value="매우 불만족" readonly/>
</td>
</tr>
</table>
<table id="tempTable_30">
<tr>
<th>1</th>
<td>
<input type="text" style='width:90%; float:left;' maxlength="50" value="전혀 그렇지 않다" readonly/>
</td>
</tr>
<tr>
<th>2</th>
<td>
<input type="text" style='width:90%; float:left;' maxlength="50" value="그렇지 않다" readonly/>
</td>
</tr>
<tr>
<th>3</th>
<td>
<input type="text" style='width:90%; float:left;' maxlength="50" value="약간 그렇지 않다" readonly/>
</td>
</tr>
<tr>
<th>4</th>
<td>
<input type="text" style='width:90%; float:left;' maxlength="50" value="보통이다" readonly/>
</td>
</tr>
<tr>
<th>5</th>
<td>
<input type="text" style='width:90%; float:left;' maxlength="50" value="약간 그렇다" readonly/>
</td>
</tr>
<tr>
<th>6</th>
<td>
<input type="text" style='width:90%; float:left;' maxlength="50" value="그렇다" readonly/>
</td>
</tr>
<tr>
<th>7</th>
<td>
<input type="text" style='width:90%; float:left;' maxlength="50" value="매우 그렇다" readonly/>
</td>
</tr>
</table>
</div>
<form name="searchForm" id="searchForm" method="get" action="<c:url value='/uss/olp/qmc/UserQustnrManageModify.do'/>" >
<input name="qestnrId" type="hidden" value="${qustnrQestnManageVO.qestnrId}" />
</form>