2022-12-07 16:35 조정사건부 통계 작업

This commit is contained in:
myname 2022-12-07 16:35:22 +09:00
parent 931ddf9f3f
commit 703b631890
8 changed files with 334 additions and 4 deletions

View File

@ -29,4 +29,6 @@ public interface SttsService {
// 분쟁조정 통계
public List<SttsVO> sttsYrlyPrcsList(SttsVO sttsVO) throws Exception;
// 조정 사건부 현황 통계화면
public List<SttsVO> sttsAdjAdrList(SttsVO sttsVO) throws Exception;
}

View File

@ -39,6 +39,17 @@ public class SttsVO extends ComDefaultVO implements Serializable {
private String finalTotCnt = ""; // 종결총계
private String ingCnt = ""; // 진행 건수
//조정사건부 현황 통계
private String sbmtDeDay = ""; // 접수일자
private String appliCantNm = ""; //신청인(대리인)
private String resPonDentNm = ""; //피신청인(대리인)
private String ccTyTx = ""; //저작물유형
private String reqCn2 = ""; //분쟁내용
private String closeCn1 = ""; //종결내용
private String statCd = ""; //상태코드
private String reqOlCd = ""; //사건구분코드 1-오프라인, 2-과거사건 , 나머지값 일반(0,00) */
public String getAdrSeq() {
return adrSeq;
}
@ -213,6 +224,54 @@ public class SttsVO extends ComDefaultVO implements Serializable {
public void setIngCnt(String ingCnt) {
this.ingCnt = ingCnt;
}
public String getSbmtDeDay() {
return sbmtDeDay;
}
public void setSbmtDeDay(String sbmtDeDay) {
this.sbmtDeDay = sbmtDeDay;
}
public String getAppliCantNm() {
return appliCantNm;
}
public void setAppliCantNm(String appliCantNm) {
this.appliCantNm = appliCantNm;
}
public String getResPonDentNm() {
return resPonDentNm;
}
public void setResPonDentNm(String resPonDentNm) {
this.resPonDentNm = resPonDentNm;
}
public String getCcTyTx() {
return ccTyTx;
}
public void setCcTyTx(String ccTyTx) {
this.ccTyTx = ccTyTx;
}
public String getReqCn2() {
return reqCn2;
}
public void setReqCn2(String reqCn2) {
this.reqCn2 = reqCn2;
}
public String getCloseCn1() {
return closeCn1;
}
public void setCloseCn1(String closeCn1) {
this.closeCn1 = closeCn1;
}
public String getStatCd() {
return statCd;
}
public void setStatCd(String statCd) {
this.statCd = statCd;
}
public String getReqOlCd() {
return reqOlCd;
}
public void setReqOlCd(String reqOlCd) {
this.reqOlCd = reqOlCd;
}

View File

@ -43,5 +43,10 @@ public class SttsDAO extends EgovAbstractDAO {
public List<SttsVO> sttsYrlyPrcsList(SttsVO sttsVO) throws Exception {
return (List<SttsVO>) list("SttsDAO.sttsYrlyPrcsList", sttsVO);
}
// 조정사건부 현황 통계화면
@SuppressWarnings("unchecked")
public List<SttsVO> sttsAdjAdrList(SttsVO sttsVO) throws Exception {
return (List<SttsVO>) list("SttsDAO.sttsAdjAdrList", sttsVO);
}
}

View File

@ -45,5 +45,9 @@ public class SttsServiceImpl implements SttsService {
public List<SttsVO> sttsYrlyPrcsList(SttsVO sttsVO) throws Exception {
return sttsDAO.sttsYrlyPrcsList(sttsVO);
}
// 조정 처리 현황 통계화면
public List<SttsVO> sttsAdjAdrList(SttsVO sttsVO) throws Exception {
return sttsDAO.sttsAdjAdrList(sttsVO);
}
}

View File

@ -115,6 +115,126 @@ public class SttsPrcsController {
modelAndView.addObject(model);
return modelAndView;
}
/**
* (관리자) 조정 사건부 현황 통계화면
*
* @return String
* @exception Exception
*/
@RequestMapping(value = "/kccadr/stts/sttsAdjAdr.do")
public String sttsAdjAdr(ModelMap model, SttsVO sttsVO) throws Exception {
//조정사건부
List<SttsVO> list = sttsService.sttsAdjAdrList(sttsVO);
for (SttsVO vo : (List<SttsVO>)list) {
vo.setAppliCantNm(egovCryptoUtil.decrypt(vo.getAppliCantNm()));
vo.setResPonDentNm(egovCryptoUtil.decrypt(vo.getResPonDentNm()));
vo.setRpplNm1(egovCryptoUtil.decrypt(vo.getRpplNm1()));
vo.setRpplNm2(egovCryptoUtil.decrypt(vo.getRpplNm2()));
vo.setRpplNm3(egovCryptoUtil.decrypt(vo.getRpplNm3()));
vo.setRpplNm4(egovCryptoUtil.decrypt(vo.getRpplNm4()));
vo.setRpplAddr1(egovCryptoUtil.decrypt(vo.getRpplAddr1()));
vo.setRpplAddr2(egovCryptoUtil.decrypt(vo.getRpplAddr2()));
// 주소 지역만 자르기
if (vo.getRpplAddr1() != null && !("").equals(vo.getRpplAddr1())) {
String[] rpplAddr1 = vo.getRpplAddr1().split(" ");
vo.setRpplAddr1(rpplAddr1[0]);
}
if (vo.getRpplAddr2() != null && !("").equals(vo.getRpplAddr2())) {
String[] rpplAddr2 = vo.getRpplAddr2().split(" ");
vo.setRpplAddr2(rpplAddr2[0]);
}
}
model.addAttribute("list", list);
model.addAttribute("sttsVO", sttsVO);
return "/kccadr/stts/sttsAdjAdr";
}
/**
* 조정 사건부 현황 통계 Excel
*
* @param apmVO
* @param model
* @return
* @throws Exception
*/
@SuppressWarnings("rawtypes")
@RequestMapping(value = "/kccadr/stts/sttsAdjAdrExcel.do")
public ModelAndView sttsAdjAdrExcel(@ModelAttribute("sttsVO") SttsVO sttsVO, ModelMap model) throws Exception {
List list = sttsService.sttsAdjAdrList(sttsVO);
// model.addAttribute("list", list);
for (SttsVO vo : (List<SttsVO>)list) {
vo.setAppliCantNm(egovCryptoUtil.decrypt(vo.getAppliCantNm()));
vo.setResPonDentNm(egovCryptoUtil.decrypt(vo.getResPonDentNm()));
vo.setRpplNm1(egovCryptoUtil.decrypt(vo.getRpplNm1()));
vo.setRpplNm2(egovCryptoUtil.decrypt(vo.getRpplNm2()));
vo.setRpplNm3(egovCryptoUtil.decrypt(vo.getRpplNm3()));
vo.setRpplNm4(egovCryptoUtil.decrypt(vo.getRpplNm4()));
vo.setRpplAddr1(egovCryptoUtil.decrypt(vo.getRpplAddr1()));
vo.setRpplAddr2(egovCryptoUtil.decrypt(vo.getRpplAddr2()));
// 주소 지역만 자르기
if (vo.getRpplAddr1() != null && !("").equals(vo.getRpplAddr1())) {
String[] rpplAddr1 = vo.getRpplAddr1().split(" ");
vo.setRpplAddr1(rpplAddr1[0]);
}
if (vo.getRpplAddr2() != null && !("").equals(vo.getRpplAddr2())) {
String[] rpplAddr2 = vo.getRpplAddr2().split(" ");
vo.setRpplAddr2(rpplAddr2[0]);
}
}
// 세팅값
String title = "조정사건부 현황";
int[] width = {
4000, 5000, 5000, 5000, 5000
, 5000, 5000, 20000, 5000, 5000
, 5000, 5000, 5000, 5000, 5000
, 5000, 5000, 5000, 5000, 5000
, 5000, 5000
}; // 너비
String[] header = {
"접수번호", "접수일자", "신청인(대리인)", "피신청인(대리인)", "저작물 유형"
, "분쟁 내용", "청구내역", "조정 목적 값(원)", "조정결과", "유형"
, "성립내역", "합의금액(원)", "조정부", "위원교체", "수수료"
, "기일수", "기일수(일자)/완료일", "기일 상황(출석여부 등)", "신청인 유형", "신청인지역"
, "피신청인지역", "비고"
}; // 헤더에 들어갈 이름
String[] order = {
"AdrNo", "SbmtDeDay", "AppliCantNm", "ResPonDentNm", "CcTyTx"
, "ReqCn2", "ReqCn1", "", "", ""
, "CloseCn1", "", "MemDeptNm", "", "AdrCost"
, "", "", "", "ReqTy", ""
, "", ""
}; // vo 내부의 필드 이름 (첫글자 대문자, 낙타체 사용)
// 호출
SXSSFWorkbook workbook = ExcelUtil.makeSimpleFruitExcelWorkbook(list, header, order, width, title);
model.addAttribute("locale", Locale.KOREA);
model.addAttribute("workbook", workbook);
model.addAttribute("workbookName", title);
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("excelDownloadView");
modelAndView.addObject(model);
return modelAndView;
}

View File

@ -231,5 +231,140 @@
) t
</select>
<!-- 조정 사건부 현황 통계화면 -->
<select id="SttsDAO.sttsAdjAdrList" parameterClass="SttsVO" resultClass="SttsVO">
SELECT M.ADR_NO AS adrNo
/* 조정사건번호 */
,
TO_CHAR ( M.SBMT_DE, 'YYYY/MM/DD' ) AS sbmtDeDay
/* 신청일 */
,
AP.RPPL_NM AS appliCantNm
/* 신청인 */
,
( SELECT GROUP_CONCAT ( RPPL_NM SEPARATOR ', ' )
FROM ADR_RPPL S1
WHERE S1.ADR_SEQ = M.ADR_SEQ
AND S1.RPPL_TY = '20'
GROUP BY S1.ADR_SEQ
ORDER BY S1.FRST_REGIST_PNTTM
)
AS resPonDentNm
/* 피신청인 */
,
CCD.CODE_NM AS ccTyTx
/* 저작물 유형_Tx */
,
M.req_cn1 AS reqCn1
/*신청취지*/
,
M.req_cn2 AS reqCn2
/*신청원인*/
,
DM.MEM_DEPT_NM AS memDeptNm
/* 조정부명 */
,
M.adr_cost AS adrCost
/*조정비용*/
,
M.req_ty AS reqTy
/*신청유형*/
,
ACD.close_cn1 AS closeCn1
,
ACD.close_cn2 AS closeCn2
,
ROW_NUMBER() OVER ( ORDER BY M.ADR_NO IS NULL DESC, M.ADR_NO DESC, M.SBMT_DE DESC ) rnum ,
M.ADR_SEQ AS adrSeq
/* 조정일련번호 */
, M.req_ol_cd AS reqOlCd
/* 온_오프라인_과거사건 구분 코드 1-오프라인, 2-과거사건 */
FROM ADR_MGR_MASTER M
LEFT JOIN
( SELECT ADR_SEQ ,
MAX ( ADR_SN ) AS ADR_SN
FROM ADR_MGR_DETAIL
GROUP BY ADR_SEQ
)
Z
ON M.ADR_SEQ = Z.ADR_SEQ
LEFT JOIN ADR_MGR_DETAIL D
ON M.ADR_SEQ = D.ADR_SEQ
AND D.ADR_SN = Z.ADR_SN
/*
LEFT JOIN LETTNEMPLYRINFO AU
ON D.ADR_ADM_ID = AU.ESNTL_ID
LEFT JOIN LETTCCMMNDETAILCODE SCD
ON SCD.CODE_ID = 'CC013'
AND SCD.CODE = M.STAT_CD
LEFT JOIN LETTCCMMNDETAILCODE RCD
ON RCD.CODE_ID = 'CC014'
AND RCD.CODE = TRIM ( M.REQ_OL_CD )
*/
LEFT JOIN LETTCCMMNDETAILCODE CCD
ON CCD.CODE_ID = 'CC002'
AND CCD.CODE = TRIM ( M.CC_TY )
LEFT JOIN ADR_MEM_DEPT_MGR DM
ON DM.MEM_DEPT_SEQ = D.MEM_DEPT_SEQ
LEFT JOIN ADR_RPPL AP
ON AP.ADR_SEQ = M.ADR_SEQ
AND AP.RPPL_TY = '10'
LEFT JOIN
( SELECT ADR_SEQ ,
ADR_SN ,
MAX ( APP_SEQ ) AS APP_SEQ
FROM ADR_APP_MGR
GROUP BY ADR_SEQ,
ADR_SN
)
ZAM
ON M.ADR_SEQ = ZAM.ADR_SEQ
AND D.ADR_SN = ZAM.ADR_SN
LEFT JOIN ADR_APP_MGR AM
ON M.ADR_SEQ = AM.ADR_SEQ
AND D.ADR_SN = AM.ADR_SN
AND ZAM.APP_SEQ = AM.APP_SEQ
LEFT JOIN ADR_CLOSE_DOC ACD
ON ACD.ADR_SEQ = AM.ADR_SEQ
AND ACD.ADR_SN = AM.ADR_SN
WHERE 1=1
AND M.stat_cd ='400000' /* 현재는 종결된 사건만 필요시 조절한다. */
<isEqual property="searchCondition" compareValue="1">
<isNotEmpty property="searchMonth2">
/* 월 */
AND am.appr_de BETWEEN TO_DATE(#searchYear#||#searchMonth2#||'01', 'yyyyMMdd')
AND LAST_DAY(TO_DATE(#searchYear#||#searchMonth2#, 'yyyyMM'))
</isNotEmpty>
<isEmpty property="searchMonth">
<isNotEmpty property="searchYear">
/* 년 */
AND am.appr_de BETWEEN TO_DATE(#searchYear#||'0101', 'yyyyMMdd')
AND TO_DATE(#searchYear#||'1231', 'yyyyMMdd')
</isNotEmpty>
</isEmpty>
</isEqual>
<isEqual property="searchCondition" compareValue="2">
<isNotEmpty property="searchQuarter">
/* 분기 */
AND am.appr_de BETWEEN add_months(trunc(NOW(),'yyyy'),(#searchQuarter# - 1) * 3)
AND add_months(trunc(NOW(),'yyyy'),#searchQuarter# * 3) - 1
</isNotEmpty>
</isEqual>
GROUP BY am.adr_seq
ORDER BY am.appr_de DESC
</select>
</sqlMap>

View File

@ -137,8 +137,13 @@ $(document).ready(function() {
<option value="3" ${sttsVO.searchQuarter eq '3' ? 'selected' : '' }>3분기</option>
<option value="4" ${sttsVO.searchQuarter eq '4' ? 'selected' : '' }>4분기</option>
</select>
<button class="btnType07 btn_search" onclick="linkPage()">검색</button>
</li>
</ul>
</div>
</div>
</div>

View File

@ -107,7 +107,7 @@
<div class="box">
<div class="box_tit">
<p>조정처리 성립률</p>
<button type="button" class="btn_plus">더보기 +</button>
<!-- <button type="button" class="btn_plus">더보기 +</button> -->
</div>
<div class="box_cont chart_box">
<img src="/kccadrPb/adm/image/dashboard/chart03.jpg" alt="">