This commit is contained in:
myname 2025-04-18 09:30:55 +09:00
commit 81e04217df
12 changed files with 389 additions and 33 deletions

View File

@ -0,0 +1,8 @@
package kcc.com.uss.ion.cu.service;
public interface CaseUtilService {
public String updateAutoEndDt(CaseUtilVO caseUtilVO) throws Exception;
public CaseUtilVO selectCaseInfo(CaseUtilVO caseUtilVO) throws Exception;
public void updateCaseEndDt(CaseUtilVO caseUtilVO) throws Exception;
}

View File

@ -0,0 +1,92 @@
package kcc.com.uss.ion.cu.service;
import java.io.Serializable;
import kcc.com.cmm.ComDefaultVO;
public class CaseUtilVO extends ComDefaultVO implements Serializable{
private static final long serialVersionUID = 5641887401063483713L;
public String caseNo =""; //사건번호
public String[] caseNoArray; //사건번호 배열
public String caseDate =""; //접수일
public String mediationEndDt =""; //조정 종료일
public String fixDay =""; //협의회 개최일
public String dblrtYn =""; //심의안건 유무
public String stopReqTerm =""; //중지기간
public String appReqTerm =""; //보완기간
public String pendencyPeriod =""; //처리기간
public String firstEndDt =""; //1차 협의회 개최일
public String secondEndDt =""; //2차 협의회 개최일
public String getCaseNo() {
return caseNo;
}
public void setCaseNo(String caseNo) {
this.caseNo = caseNo;
}
public String getFixDay() {
return fixDay;
}
public void setFixDay(String fixDay) {
this.fixDay = fixDay;
}
public String[] getCaseNoArray() {
return caseNoArray;
}
public void setCaseNoArray(String[] caseNoArray) {
this.caseNoArray = caseNoArray;
}
public String getMediationEndDt() {
return mediationEndDt;
}
public void setMediationEndDt(String mediationEndDt) {
this.mediationEndDt = mediationEndDt;
}
public String getDblrtYn() {
return dblrtYn;
}
public void setDblrtYn(String dblrtYn) {
this.dblrtYn = dblrtYn;
}
public String getCaseDate() {
return caseDate;
}
public void setCaseDate(String caseDate) {
this.caseDate = caseDate;
}
public String getStopReqTerm() {
return stopReqTerm;
}
public void setStopReqTerm(String stopReqTerm) {
this.stopReqTerm = stopReqTerm;
}
public String getAppReqTerm() {
return appReqTerm;
}
public void setAppReqTerm(String appReqTerm) {
this.appReqTerm = appReqTerm;
}
public String getPendencyPeriod() {
return pendencyPeriod;
}
public void setPendencyPeriod(String pendencyPeriod) {
this.pendencyPeriod = pendencyPeriod;
}
public String getFirstEndDt() {
return firstEndDt;
}
public void setFirstEndDt(String firstEndDt) {
this.firstEndDt = firstEndDt;
}
public String getSecondEndDt() {
return secondEndDt;
}
public void setSecondEndDt(String secondEndDt) {
this.secondEndDt = secondEndDt;
}
}

View File

@ -0,0 +1,19 @@
package kcc.com.uss.ion.cu.service.Impl;
import org.springframework.stereotype.Repository;
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
import kcc.com.uss.ion.cu.service.CaseUtilVO;
@Repository("caseUtilDAO")
public class CaseUtilDAO extends EgovAbstractDAO {
public CaseUtilVO selectCaseInfo(CaseUtilVO caseUtilVO) throws Exception{
return (CaseUtilVO) select("caseUtilDAO.selectCaseInfo", caseUtilVO);
}
public void updateCaseEndDt(CaseUtilVO caseUtilVO) throws Exception{
update("caseUtilDAO.updateCaseEndDt", caseUtilVO);
}
}

View File

@ -0,0 +1,102 @@
package kcc.com.uss.ion.cu.service.Impl;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
import kcc.com.uss.ion.cu.service.CaseUtilService;
import kcc.com.uss.ion.cu.service.CaseUtilVO;
import kcc.com.uss.ion.hld.service.HolidayService;
import kcc.com.uss.ion.hld.service.HolidayVO;
@Service("caseUtilService")
public class CaseUtilServiceImpl extends EgovAbstractServiceImpl implements CaseUtilService{
@Resource(name="caseUtilDAO")
private CaseUtilDAO caseUtilDAO;
@Resource(name="holidayService")
private HolidayService holidayService;
@Override
public String updateAutoEndDt(CaseUtilVO caseUtilVO) throws Exception {
//업데이트 실패 사건번호
String failCaseNo = "";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
DateTimeFormatter caseDateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter MediationEndDateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
CaseUtilVO caseVO = new CaseUtilVO();
HolidayVO holidayVO = new HolidayVO();
/*사건번호로 심의 안건 조회 있는 경우 - 1차 협의회 개최일을 조정 종요일로 계산, 2차 협의회 개최일을 조정 종료일2로
심의 안건이 없는 경우 현재 협의회 개최일을 조정 종료일로*/
for(String caseNo : caseUtilVO.getCaseNoArray()) {
try {
//처리기간 계산
caseVO.setCaseNo(caseNo);
caseVO = this.selectCaseInfo(caseVO);
String endDateStr = caseUtilVO.getMediationEndDt(); //endDateStr : 'YYYY-MM-DD HH:MM'
String caseDateStr = caseVO.getCaseDate(); //caseDateStr : 'YYYY-MM-DD HH:MM:SS'
String firstEndDtStr = caseVO.getFirstEndDt(); //firstEndDtStr : 'YYYY-MM-DD HH:MM'
LocalDate caseDate = LocalDate.parse(caseDateStr, caseDateFormatter); //caseDate : 'YYYY-MM-DD'
LocalDate endDate = LocalDate.parse(endDateStr, MediationEndDateFormatter); //endDate : 'YYYY-MM-DD'
if("Y".equals(caseVO.getDblrtYn())) { //심의 안건이 있던 경우 firstEndDtStr 사용
String SecondendDateStr = endDate.format(outputFormatter); //SecondendDateStr : 'YYYY-MM-DD HH:MM'(2차 보고일)
endDate = LocalDate.parse(firstEndDtStr, MediationEndDateFormatter);
caseVO.setSecondEndDt(SecondendDateStr);
}
endDateStr = endDate.format(outputFormatter);
caseVO.setMediationEndDt(endDateStr);
holidayVO.setSdt(caseDate.format(formatter));
holidayVO.setEdt(endDate.format(formatter));
int hldCnt = holidayService.selectHolidayCnt(holidayVO);
int workCnt = 0;
//주말, 공휴일 기간
for (LocalDate date = caseDate; !date.isAfter(endDate); date = date.plusDays(1)) {
// 주말이 아닌 경우에만 근무일 증가
if (date.getDayOfWeek().getValue() != 6 && date.getDayOfWeek().getValue() != 7) {
workCnt++;
}
}
workCnt = workCnt - hldCnt;
caseVO.setPendencyPeriod(Integer.toString(workCnt));
this.updateCaseEndDt(caseVO);
}catch(Exception e){
e.printStackTrace();
failCaseNo += caseNo+",";
}
}
if(!failCaseNo.isEmpty()) {
failCaseNo = failCaseNo.substring(0, failCaseNo.length() - 1);//마지막 쉼표 제거
}
return failCaseNo;
}
@Override
public CaseUtilVO selectCaseInfo(CaseUtilVO caseUtilVO) throws Exception{
return caseUtilDAO.selectCaseInfo(caseUtilVO);
}
@Override
public void updateCaseEndDt(CaseUtilVO caseUtilVO) throws Exception{
caseUtilDAO.updateCaseEndDt(caseUtilVO);
}
}

View File

@ -0,0 +1,47 @@
package kcc.com.uss.ion.cu.web;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import kcc.com.uss.ion.cu.service.CaseUtilService;
import kcc.com.uss.ion.cu.service.CaseUtilVO;
@Controller
public class CaseUtilController {
@Resource(name = "caseUtilService")
private CaseUtilService caseUtilService;
/**
* 사건 종료일, 처리기간 자동 계산
* @param request
* @param session
* @param map
* @return
* @throws Exception
*/
@RequestMapping(value="/gtm/caseUtil/updateAutoEndDtAjax.do")
public ResponseEntity<?> updateAutoEndDtAjax(HttpServletRequest request, HttpSession session, CaseUtilVO CaseUtilVO) throws Exception{
Map<String, String> returnData = new HashMap<String, String>();
String failCaseNo = caseUtilService.updateAutoEndDt(CaseUtilVO);
if(failCaseNo.isEmpty()) {
returnData.put("result", "success");
}else {
returnData.put("result", "fail");
returnData.put("failCaseNo", failCaseNo);
}
return new ResponseEntity<>(returnData, HttpStatus.OK);
}
}

View File

@ -8851,8 +8851,11 @@ v_ret = this.receiverHeader();
"5411000000".equals(emap.get("codeNo")) || "5511000000".equals(emap.get("codeNo")) ||
"5611000000".equals(emap.get("codeNo")) || "5811000000".equals(emap.get("codeNo"))
){
params.put("sql", "nanumMasterEndDt2");
bservice.update(params);
/*250414 - 조정종료일은 협의회 보고일로 자동 업데이트 처리*/
/*params.put("sql", "nanumMasterEndDt2");
bservice.update(params);*/
/*[조정원]종료보고서/조사보고서 결재 완료시
*5?11000000 = 종료보고서
*5?12000000 = 조사보고서
@ -8894,7 +8897,8 @@ v_ret = this.receiverHeader();
}
//
if(emap2.get("mediationEndDt") == null || SeedUtils.setReplaceNull(emap2.get("mediationEndDt")).equals("")){
/*250414 - 조정종료일은 협의회 보고일로 자동 업데이트 처리*/
/*if(emap2.get("mediationEndDt") == null || SeedUtils.setReplaceNull(emap2.get("mediationEndDt")).equals("")){
params.put("sql", "nanumMasterEndDt");
bservice.update(params);
@ -8913,7 +8917,7 @@ v_ret = this.receiverHeader();
pendencyPeriod = ((endDt.getTime() - caseDate.getTime()) / currDay) - appReqTerm +1;
params.put("pendencyPeriod", pendencyPeriod);
params.put("sql", "nanumMasterPendencyPeriodUp");
bservice.update(params);
bservice.update(params);*/
}else if("5223000000".equals(emap.get("codeNo")) || "5323000000".equals(emap.get("codeNo"))

View File

@ -0,0 +1,53 @@
<?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="caseUtilDAO">
<typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
<typeAlias alias="caseUtilVO" type="kcc.com.uss.ion.cu.service.CaseUtilVO"/>
<select id="caseUtilDAO.selectCaseInfo" parameterClass="caseUtilVO" resultClass="caseUtilVO">
SELECT
cm.CASE_NO AS caseNo,
cm.CASE_DATE AS caseDate,
cm.STOP_REQ_TERM AS stopReqTerm,
cm.APP_REQ_TERM AS appReqTerm,
CASE
WHEN
jcd.CASE_NO IS NOT NULL
THEN 'Y'
ELSE 'N'
END AS dblrtYn,
ccm.FIX_DAY AS firstEndDt
FROM C_MASTER cm
LEFT JOIN (
SELECT
cd.CASE_NO,
MIN(cd.CFRNC_NO) AS CFRNC_NO
FROM
C_DLBRTMTR cd
GROUP BY cd.CASE_NO
) jcd
ON cm.CASE_NO = jcd.CASE_NO
LEFT JOIN
C_CFRNCMANAGE ccm
ON ccm.CFRNC_NO = jcd.CFRNC_NO
WHERE cm.CASE_NO = #caseNo#
</select>
<update id="caseUtilDAO.updateCaseEndDt" parameterClass="caseUtilVO">
UPDATE
C_MASTER
SET
<isEqual property="dblrtYn" compareValue="Y">
MEDIATION_END_DT = #mediationEndDt#,
MEDIATION_END_DT2 = #secondEndDt#,
</isEqual>
<isNotEqual property="dblrtYn" compareValue="Y">
MEDIATION_END_DT = #mediationEndDt#,
</isNotEqual>
PENDENCY_PERIOD = #pendencyPeriod#
WHERE
CASE_NO = #caseNo#
</update>
</sqlMap>

View File

@ -513,6 +513,7 @@
UPDATE C_ENDMTR SET
MEDIATION_BIG = #{mediationBig}
, MEDIATION_SMALL = #{mediationSmall}
, MEDIATION_ETC_DETAIL = #{mediationETCDetail}
WHERE CASE_NO = #{caseNo}
AND CFRNC_NO = #{cfrncNo}
</update>
@ -548,14 +549,16 @@
SEQ_NO,
CASE_NO,
MEDIATION_BIG,
MEDIATION_SMALL)
MEDIATION_SMALL,
MEDIATION_ETC_DETAIL)
SELECT
#{caseGubun} AS CASE_GUBUN,
#{cfrncNo} AS CFRNC_NO,
C_ENDMTR_SEQ.NEXTVAL AS SEQ_NO,
CASE_NO,
MEDIATION_BIG,
MEDIATION_SMALL
MEDIATION_SMALL,
MEDIATION_ETC_DETAIL
FROM C_MASTER A
<where>
TRANSFER_CHECK = 'N'
@ -1044,12 +1047,12 @@
NVL(B.MEDIATION_BIG, '-') AS MEDIATION_BIG_CODE,
NVL((SELECT CODE_NAME FROM C_CODE WHERE CODE_IDXS = B.MEDIATION_SMALL), '-') AS MEDIATION_SMALL,
NVL(B.MEDIATION_SMALL, '-') AS MEDIATION_SMALL_CODE,
MEDIATION_ETC_DETAIL,
B.MEDIATION_ETC_DETAIL,
TO_CHAR(CASE_DATE, 'YYYYMMDD') AS CASE_DATE,
(SELECT MEMBER_NAME FROM T_MEMBER WHERE MEMBER_ID = CASE_EXAMINER) AS CASE_EXAMINER,
MOD_RESOLUTION
FROM C_MASTER A, (SELECT
CASE_NO, MEDIATION_BIG, MEDIATION_SMALL, MOD_RESOLUTION
CASE_NO, MEDIATION_BIG, MEDIATION_SMALL, MOD_RESOLUTION, MEDIATION_ETC_DETAIL
FROM C_ENDMTR
WHERE CFRNC_NO = #{cfrncNo}) B
WHERE

View File

@ -3060,8 +3060,8 @@
ANSWER_REQ_DT = #{answerReqDt, jdbcType=VARCHAR},
RESPONDENT_REQ_DT = #{respondentReqDt, jdbcType=VARCHAR},
ANSWER_TERM = #{answerTerm, jdbcType=INTEGER},
MEDIATION_END_DT = #{mediationEndDt, jdbcType=VARCHAR},
PENDENCY_PERIOD = #{pendencyPeriod, jdbcType=INTEGER},
<!-- MEDIATION_END_DT = #{mediationEndDt, jdbcType=VARCHAR},
PENDENCY_PERIOD = #{pendencyPeriod, jdbcType=INTEGER}, -->
FTC_CHECK =
CASE
WHEN (SELECT A1.REQUEST_CHECK FROM C_RCEPTMST A1

View File

@ -0,0 +1,7 @@
<?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/uss/ion/cu/CaseUtil_SQL_Oracle.xml"/>
</sqlMapConfig>

View File

@ -447,7 +447,7 @@ function loadChamData(){
$("#arrCheckMemberNo").val(result4);
}else{
html += '<tr>';
html += '<td colspan="5">선택된 참여위원이 없습니다.</td>';
html += '<td colspan="9">선택된 참여위원이 없습니다.</td>';
html += '</tr>';
$("#cham").html(html);
}
@ -1101,23 +1101,32 @@ function StateProUpdt(statePro){
function resultGo(){
if(confirm("종료통지 단계로 넘어가시겠습니까?")){
var url = "";
$("#statePro").val('0503000000');
//$("#masterStatePro").val('0405000000');
$("#type").val("U");
var param = jQuery('#frm').serialize();
url = "/gtm/case/trublcfrncmng/ajax/StateProUpdt.do";
//협의회를 종료단계료
XHR2(url, param, function(r){
//사건처리를 종료단계로
/* url = "/gtm/case/trublcfrncmng/ajax/MasterStateProUpdt.do";
XHR2(url, param, function(r){
alert("종료통지 단계로 수정되었습니다. 리스트로 돌아갑니다.");
location.href='/gtm/case/trublcfrncmng/trublcfrncmngList/TrublcfrncmngPagingList.do';
}); */
alert("종료통지 단계로 수정되었습니다. 리스트로 돌아갑니다.");
location.href='/gtm/case/trublcfrncmng/trublcfrncmngList/TrublcfrncmngPagingList.do';
});
//보고안건 사건들 조정종료일, 처리기간 자동 저장
if(bogolist.length != 0){
$("#caseNoArray").val(bogolist);
$("#mediationEndDt").val($("#fixDay").val());
var url = "/gtm/caseUtil/updateAutoEndDtAjax.do";
var param = jQuery('#dateFrm').serialize();
XHR2(url, param, function(r){
if(r.result == 'success'){
var url = "";
$("#statePro").val('0503000000');
//$("#masterStatePro").val('0405000000');
$("#type").val("U");
var param = jQuery('#frm').serialize();
url = "/gtm/case/trublcfrncmng/ajax/StateProUpdt.do";
//협의회를 종료단계료
XHR2(url, param, function(r){
});
alert("종료통지 단계로 수정되었습니다. 리스트로 돌아갑니다.");
location.href='/gtm/case/trublcfrncmng/trublcfrncmngList/TrublcfrncmngPagingList.do';
}else{
alert(r.failCaseNo+" 오류 발생하였습니다. 담당자에게 문의 바랍니다.");
return false;
}
});
}
}
}
@ -3618,6 +3627,7 @@ function nanumHisDel(){
<input type="hidden" name="checkNo" id="checkNo" value="">
<h2 class="title depth01">분쟁조정 협의회 관리</h2>
<div class="cs-container confer_content">
@ -4321,4 +4331,11 @@ function nanumHisDel(){
<input type="hidden" id="content15View" name="content15" value=""/>
</form>
<!-- 조정 종료,처리기간 계산 폼 -->
<form name="dateFrm" id="dateFrm" action="" method="post">
<input type="hidden" name="caseNoArray" id="caseNoArray" value="">
<input type="hidden" name="mediationEndDt" id="mediationEndDt" value="">
</form>

View File

@ -5696,17 +5696,21 @@ function docOpen(obj) {
<p class="item-title no-bullet">조정종료일</p>
<!-- 약관유통팀장 and 보고단계 and 조정종료일이 빈값 -->
<div class="item-box">
<input type="text" class="datepicker" name="mediationEndDt" id="mediationEndDt" value="${masterData.mediationEndDt}" style="width: calc(100% - 150px);" readonly="readonly">
<%-- <input type="text" class="datepicker" name="mediationEndDt" id="mediationEndDt" value="${masterData.mediationEndDt}" style="width: calc(100% - 150px);" readonly="readonly"> --%>
<input type="text" name="mediationEndDt" id="mediationEndDt" value="${masterData.mediationEndDt}" style="width: calc(100% - 150px);" readonly="readonly">
<c:if test="${memberPosition == SeedConstants.GWANRIJA and masterData.statePro == '0404000000' and empty masterData.mediationEndDt}">
<!-- 250414 - 조정종료일은 협의회 보고일로 자동 업데이트 처리 -->
<%-- <c:if test="${memberPosition == SeedConstants.GWANRIJA and masterData.statePro == '0404000000' and empty masterData.mediationEndDt}">
<button type="button" class="btn-default btn btn_text btn_36 orange_border" id="addMediation">조정종료일 저장</button>
</c:if>
</c:if> --%>
</div>
<p class="item-title no-bullet">처리기간</p>
<div class="item-box">
<input type="text" name="pendencyPeriod" id="pendencyPeriod" value="${masterData.pendencyPeriod}" style="width: calc(100% - 168px);">
<button type="button" class="btn-default btn btn_text btn_36 orange_border" id="periodCalulation">처리기간 자동계산</button>
<input type="text" name="pendencyPeriod" id="pendencyPeriod" value="${masterData.pendencyPeriod}" style="width: calc(100% - 168px);" readonly="readonly">
<!-- 250414 - 조정종료일은 협의회 보고일로 자동 업데이트 처리 -->
<!-- <button type="button" class="btn-default btn btn_text btn_36 orange_border" id="periodCalulation">처리기간 자동계산</button> -->
</div>
<p class="item-title no-bullet">보고서결재일</p>
<div class="item-box">