업무지원 - 민원상담 수정.

main
jjh 5 months ago
parent f51182404d
commit 00fc87b978

@ -82,9 +82,15 @@ public class CvlcptDscsn extends AbstractEntity {
*/
private String delRsn;
/**
* Ids
*/
private String[] cvlcptDscsnIds;
/**
* ID
*/
private String rtpyrId;
}

@ -17,28 +17,28 @@ public class CvlcptDscsnQuery extends CmmnQuery {
private static final long serialVersionUID = 1L;
// ID
private String cvlcptDscsnId; // 민원 상담 ID
private String[] cvlcptDscsnIDs; // 민원 상담 IDs
private String crdnId; // 단속 ID
private String[] cvlcptDscsnIds; // 민원 상담 Ids
private String cvlcptDscsnId; // 민원 상담 ID
private String crdnId; // 단속 ID
// 검색 조건
private String schDscsnYmdFrom; // 상담 일자 시작
private String schDscsnYmdTo; // 상담 일자 종료
private String schVhrno; // 차량번호
private String schCvlprNm; // 민원인 명
private String schRtpyrNo; // 납부자 번호
private String schDscsnYmdFrom; // 상담 일자 시작
private String schDscsnYmdTo; // 상담 일자 종료
private String schVhrno; // 차량번호
private String schCvlprNm; // 민원인 명
private String schRtpyrNo; // 납부자 번호
// 상세 검색 조건
// 동적 검색 조건
private String inquiryCondition;
private String cvlcptRcptSeCd; // 민원 접수 구분 코드
private String vhrno; // 차량번호
private String rtpyrNo; // 납부자 번호
private String dscsnYmd; // 상담 일자
private String weekNm; // 요일 명
private String cvlprNm; // 민원인 명
private String cvlprCttpc; // 민원인 연락처
private String dscsnCn; // 상담 내용
private String cvlcptRcptSeCd; // 민원 접수 구분 코드
private String vhrno; // 차량번호
private String rtpyrNo; // 납부자 번호
private String dscsnYmd; // 상담 일자
private String weekNm; // 요일 명
private String cvlprNm; // 민원인 명
private String cvlprCttpc; // 민원인 연락처
private String dscsnCn; // 상담 내용
// ETC
private String callPurpose; // 자료 조회시 호출용도. (view 조회, create 등록, update 수정, refresh 재조회)
@ -53,12 +53,12 @@ public class CvlcptDscsnQuery extends CmmnQuery {
return self();
}
public String[] getCvlcptDscsnIDs() {
return ifEmpty(cvlcptDscsnIDs, () -> null);
public String[] getCvlcptDscsnIds() {
return ifEmpty(cvlcptDscsnIds, () -> null);
}
public <T extends CvlcptDscsnQuery> T setCvlcptDscsnIDs(String... cvlcptDscsnIDs) {
this.cvlcptDscsnIDs = cvlcptDscsnIDs;
public <T extends CvlcptDscsnQuery> T setCvlcptDscsnIds(String... cvlcptDscsnIds) {
this.cvlcptDscsnIds = cvlcptDscsnIds;
return self();
}

@ -1,14 +1,13 @@
package cokr.xit.fims.sprt.dao;
import java.util.List;
import java.util.Map;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
import cokr.xit.foundation.component.AbstractMapper;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.sprt.CvlcptDscsn;
import cokr.xit.fims.sprt.CvlcptDscsnQuery;
import cokr.xit.foundation.component.AbstractMapper;
import cokr.xit.foundation.data.DataObject;
/** - DAO
*
@ -62,18 +61,7 @@ public interface CvlcptDscsnMapper extends AbstractMapper {
* </ul>
* @return
*/
int insertCvlcptDscsn(Map<String, Object> params);
/** .
* @param cvlcptDscsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean insert(CvlcptDscsn cvlcptDscsn) {
return cvlcptDscsn != null && insertCvlcptDscsn(params().set("cvlcptDscsn", cvlcptDscsn)) == 1;
}
int insertCvlcptDscsn(CvlcptDscsn cvlcptDscsn);
/** .
* @param params
@ -82,18 +70,7 @@ public interface CvlcptDscsnMapper extends AbstractMapper {
* </ul>
* @return
*/
int updateCvlcptDscsn(Map<String, Object> params);
/** .
* @param cvlcptDscsnCn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean update(CvlcptDscsn cvlcptDscsn) {
return cvlcptDscsn != null && updateCvlcptDscsn(params().set("cvlcptDscsn", cvlcptDscsn)) == 1;
}
int updateCvlcptDscsn(CvlcptDscsn cvlcptDscsn);
/** .
* @param params
@ -102,18 +79,7 @@ public interface CvlcptDscsnMapper extends AbstractMapper {
* </ul>
* @return
*/
int deleteCvlcptDscsn(Map<String, ?> params);
/** .
* @param cvlcptDscsnCn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean delete(CvlcptDscsn cvlcptDscsn) {
return cvlcptDscsn != null && deleteCvlcptDscsn(params().set("cvlcptDscsn", cvlcptDscsn)) == 1;
}
int deleteCvlcptDscsn(CvlcptDscsn cvlcptDscsn);
/** ID .
* @param crdnId ID
@ -121,5 +87,4 @@ public interface CvlcptDscsnMapper extends AbstractMapper {
*/
DataObject selectCrdn(CvlcptDscsnQuery req);
}

@ -60,15 +60,6 @@ public interface CvlcptDscsnService {
*/
String updateCvlcptDscsn(CvlcptDscsn cvlcptDscsnCn);
/** .
* @param req
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
String removeCvlcptDscsnList(CvlcptDscsnQuery req);
/** .
* @param cvlcptDscsnCn
* @return

@ -6,6 +6,7 @@ import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import cokr.xit.fims.cmmn.CmmnUtil;
import cokr.xit.fims.sprt.CvlcptDscsn;
import cokr.xit.fims.sprt.CvlcptDscsnQuery;
import cokr.xit.fims.sprt.dao.CvlcptDscsnMapper;
@ -34,11 +35,17 @@ public class CvlcptDscsnBean extends AbstractBean {
* @return
*/
public List<DataObject> getCvlcptDscsnList(CvlcptDscsnQuery req) {
// 삭제 여부 확인
if (req.getDelYn() == null) {
req.setDelYn("N");
}
// 정렬 확인
if (req.getOrderBy() == null) {
req.setOrderBy("REG_DT");
if (req.getBy() == null) {
req.setOrderBy("REG_DT");
} else {
req.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(req.getBy()));
}
}
return cvlcptDscsnMapper.selectCvlcptDscsnList(req);
@ -49,6 +56,11 @@ public class CvlcptDscsnBean extends AbstractBean {
* @return
*/
public List<DataObject> getCvlcptDscsns(CvlcptDscsnQuery req) {
// 삭제 여부 확인
if (req.getDelYn() == null) {
req.setDelYn("N");
}
// 정렬 확인
if (req.getOrderBy() == null) {
req.setOrderBy("CD.CVLCPT_DSCSN_ID DESC");
}
@ -61,10 +73,6 @@ public class CvlcptDscsnBean extends AbstractBean {
* @return
*/
public DataObject getCvlcptDscsnNocs(CvlcptDscsnQuery req) {
if (req.getOrderBy() == null) {
req.setOrderBy("CD.CVLCPT_DSCSN_ID DESC");
}
return cvlcptDscsnMapper.selectCvlcptDscsnNocs(req);
}
@ -84,10 +92,7 @@ public class CvlcptDscsnBean extends AbstractBean {
* </ul>
*/
public String createCvlcptDscsn(CvlcptDscsn cvlcptDscsn) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
//
if (cvlcptDscsn.getCvlcptRcptSeCd().equals("01")) {
cvlcptDscsn.setVhrno(null);
cvlcptDscsn.setRtpyrNo(null);
@ -97,15 +102,13 @@ public class CvlcptDscsnBean extends AbstractBean {
cvlcptDscsn.setVhrno(null);
}
rtnScs = cvlcptDscsnMapper.insert(cvlcptDscsn);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("민원상담내용 대장 등록에 실패하였습니다.");
// 민원상담(TB_CVLCPT_DSCSN) 대장을 등록 한다.
int rtnNocs = cvlcptDscsnMapper.insertCvlcptDscsn(cvlcptDscsn);
if (rtnNocs != 1) {
throw new RuntimeException("민원상담내용 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
@ -116,19 +119,13 @@ public class CvlcptDscsnBean extends AbstractBean {
* </ul>
*/
public String updateCvlcptDscsn(CvlcptDscsn cvlcptDscsn) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
rtnScs = cvlcptDscsnMapper.update(cvlcptDscsn);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("민원상담내용 대장 수정에 실패하였습니다.");
// 민원상담(TB_CVLCPT_DSCSN) 대장을 수정 한다.
int rtnNocs = cvlcptDscsnMapper.updateCvlcptDscsn(cvlcptDscsn);
if (rtnNocs != 1) {
throw new RuntimeException("민원상담내용 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
@ -139,19 +136,13 @@ public class CvlcptDscsnBean extends AbstractBean {
* </ul>
*/
public String removeCvlcptDscsn(CvlcptDscsn cvlcptDscsn) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
rtnScs = cvlcptDscsnMapper.delete(cvlcptDscsn);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("민원상담내용 대장 삭제에 실패하였습니다.");
// 민원상담(TB_CVLCPT_DSCSN) 대장을 삭제 한다.
int rtnNocs = cvlcptDscsnMapper.deleteCvlcptDscsn(cvlcptDscsn);
if (rtnNocs < 1) {
throw new RuntimeException("민원상담내용 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** ID .<br />

@ -63,35 +63,6 @@ public class CvlcptDscsnServiceBean extends AbstractServiceBean implements Cvlcp
return cvlcptDscsnBean.updateCvlcptDscsn(cvlcptDscsn);
}
@Override
public String removeCvlcptDscsnList(CvlcptDscsnQuery req) {
// 변수 선언
String rtnMsg = ""; // 처리 결과 메시지
// 민원 상담 IDs 건수를 확인하여 1건이하면.. 종료
if (req.getCvlcptDscsnIDs().length < 1) {
rtnMsg = "작업 중 선택 자료가 존재하지 않습니다.";
return rtnMsg;
}
// 민원 상담 IDs 만큼 반복..
for (int iLoop = 0; iLoop < req.getCvlcptDscsnIDs().length; iLoop++) {
CvlcptDscsn cvlcptDscsn = new CvlcptDscsn();
cvlcptDscsn.setCvlcptDscsnId(req.getCvlcptDscsnIDs()[iLoop]); // 민원 상담 ID
cvlcptDscsn.setDelRsn(req.getDelRsn()); // 삭제 사유
// 부과제외 삭제 호출
rtnMsg = cvlcptDscsnBean.removeCvlcptDscsn(cvlcptDscsn);
// 오류가 발생하였으면 종료..
if (rtnMsg.contains("[F]")) {
return rtnMsg;
}
}
return rtnMsg;
}
@Override
public String removeCvlcptDscsn(CvlcptDscsn cvlcptDscsn) {
return cvlcptDscsnBean.removeCvlcptDscsn(cvlcptDscsn);

@ -6,6 +6,7 @@ import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.poi.ss.usermodel.CellStyle;
import org.springframework.stereotype.Controller;
@ -46,14 +47,13 @@ public class Sprt04Controller extends ApplicationController {
public class METHOD_URL {
public static final String
civilComplaintDiscussionMain = "/010/main.do" // 민원 상담 관리 메인 화면
, getCvlcptDscsnList = "/010/list.do" // 민원 상담 내용 대장 목록 조회
, getCvlcptDscsnNocs = "/010/nocs.do" // 민원 상담 내용 건수 조회
, getCvlcptDscsnInfo = "/020/info.do" // 민원 상담 내용 정보 조회
, createCvlcptDscsn = "/020/create.do" // 민원 상담 내용 대장 등럭
, updateCvlcptDscsn = "/020/update.do" // 민원 상담 내용 대장 수정
, removeCvlcptDscsnList = "/010/removes.do" // 민원 상담 내용 대장 목록 삭제
, removeCvlcptDscsn = "/010/remove.do" // 민원 상담 내용 대장 삭제
civilComplaintDiscussionMain = "/010/main.do" // 민원 상담 관리 메인 화면
, getCvlcptDscsnList = "/010/list.do" // 민원 상담 내용 대장 목록 조회
, getCvlcptDscsnNocs = "/010/nocs.do" // 민원 상담 내용 건수 조회
, getCvlcptDscsnInfo = "/020/info.do" // 민원 상담 내용 정보 조회
, createCvlcptDscsn = "/020/create.do" // 민원 상담 내용 대장 등럭
, updateCvlcptDscsn = "/020/update.do" // 민원 상담 내용 대장 수정
, removeCvlcptDscsn = "/010/remove.do" // 민원 상담 내용 대장 삭제
;
}
@ -70,7 +70,6 @@ public class Sprt04Controller extends ApplicationController {
*/
@RequestMapping(name="민원 상담 내용 메인", value="/010/main.do")
public ModelAndView civilComplaintDiscussionMain() {
// View(jsp)
ModelAndView mav = new ModelAndView("fims/sprt/sprt04010-main");
// 사용자 정보
@ -81,9 +80,9 @@ public class Sprt04Controller extends ApplicationController {
return mav.addObject("pageName", "sprt04010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "cvlcptDscsn") // prefix
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054")))
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
;
}
@ -155,7 +154,6 @@ public class Sprt04Controller extends ApplicationController {
@Task
@RequestMapping(name="민원 상담 대장 건수 조회", value=METHOD_URL.getCvlcptDscsnNocs)
public ModelAndView getCvlcptDscsnNocs(CvlcptDscsnQuery req) {
//
DataObject result = cvlcptDscsnService.getCvlcptDscsnNocs(req);
boolean json = jsonResponse();
@ -173,20 +171,21 @@ public class Sprt04Controller extends ApplicationController {
*/
@Task
@RequestMapping(name="민원 상담 정보 조회", value=METHOD_URL.getCvlcptDscsnInfo)
public ModelAndView getCvlcptDscsnInfo(CvlcptDscsnQuery req) {
public ModelAndView getCvlcptDscsnInfo(HttpServletRequest hReq, CvlcptDscsnQuery req) {
DataObject cvlcptDscsnInfo = cvlcptDscsnService.getCvlcptDscsnInfo(req);
boolean json = jsonResponse();
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sprt/sprt04020-info");
// View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM065");
return mav
.addObject("pageName", "sprt04020") //
.addObject("FIM065List", commonCodes.get("FIM065")) // 민원 접수 구분 코드(CVLCPT_RCPT_SE_CD)
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("openerPageName", hReq.getParameter("openerPageName")) // 호출한 Jsp PageName
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("pageName", "sprt04020") //
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("FIM065List", commonCodes.get("FIM065")) // 민원 접수 구분 코드(CVLCPT_RCPT_SE_CD)
.addObject("cvlcptDscsnInfo", json ? cvlcptDscsnInfo : toJson(cvlcptDscsnInfo)) // 민원 상담 정보
;
}
@ -239,31 +238,6 @@ public class Sprt04Controller extends ApplicationController {
.addObject("rtnMsg", rtnMsg);
}
/** .
* @param cvlcptDscsnIDs s
* @return jsonView
* <pre><code> {
* "affected":
* "saved": true, false
* }</code></pre>
*/
@Task
@RequestMapping(name="민원 상담 대장 목록 삭제", value=METHOD_URL.removeCvlcptDscsnList)
public ModelAndView removeCvlcptDscsnList(CvlcptDscsnQuery req) {
boolean saved = false;
String rtnMsg = cvlcptDscsnService.removeCvlcptDscsnList(req);
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
/** .
* @param cvlcptDscsnId
* @return jsonView

@ -31,30 +31,30 @@
</resultMap>
<sql id="select">
SELECT CD.CVLCPT_DSCSN_ID <!-- 민원 상담 ID -->
, CD.SGG_CD <!-- 시군구 코드 -->
, CD.TASK_SE_CD <!-- 업무 구분 코드 -->
, CD.CVLCPT_RCPT_SE_CD <!-- 민원 접수 구분 코드 -->
, CD.CRDN_ID <!-- 단속 ID -->
, CD.VHRNO <!-- 차량번호 -->
, CD.RTPYR_NO <!-- 납부자 번호 -->
, CD.DSCSN_YMD <!-- 상담 일자 -->
, CD.WEEK_NM <!-- 요일 명 -->
, CD.CVLPR_NM <!-- 민원인 명 -->
, CD.CVLPR_CTTPC <!-- 민원인 연락처 -->
, CD.DSCSN_CN <!-- 상담 내용 -->
, CD.DEL_YN <!-- 삭제 여부 -->
, CD.REG_DT <!-- 등록 일시 -->
, CD.RGTR <!-- 등록자 -->
, CD.MDFCN_DT <!-- 수정 일시 -->
, CD.MDFR <!-- 수정자 -->
, CD.DEL_DT <!-- 삭제 일시 -->
, CD.DLTR <!-- 삭제자 -->
, CD.DEL_RSN <!-- 삭제 사유 -->
SELECT CD.CVLCPT_DSCSN_ID <!-- 민원 상담 ID -->
, CD.SGG_CD <!-- 시군구 코드 -->
, CD.TASK_SE_CD <!-- 업무 구분 코드 -->
, CD.CVLCPT_RCPT_SE_CD <!-- 민원 접수 구분 코드 -->
, (SELECT GET_CODE_NM('FIM065', CD.CVLCPT_RCPT_SE_CD) FROM DUAL) AS CVLCPT_RCPT_SE_NM <!-- 민원 접수 구분 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = CD.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = CD.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = CD.DLTR) AS DLTR_NM <!-- 삭제자 명 -->
, CD.CRDN_ID <!-- 단속 ID -->
, CD.VHRNO <!-- 차량번호 -->
, CD.RTPYR_NO <!-- 납부자 번호 -->
, CD.DSCSN_YMD <!-- 상담 일자 -->
, CD.WEEK_NM <!-- 요일 명 -->
, CD.CVLPR_NM <!-- 민원인 명 -->
, CD.CVLPR_CTTPC <!-- 민원인 연락처 -->
, CD.DSCSN_CN <!-- 상담 내용 -->
, CD.DEL_YN <!-- 삭제 여부 -->
, CD.REG_DT <!-- 등록 일시 -->
, CD.RGTR <!-- 등록자 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = CD.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, CD.MDFCN_DT <!-- 수정 일시 -->
, CD.MDFR <!-- 수정자 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = CD.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, CD.DEL_DT <!-- 삭제 일시 -->
, CD.DLTR <!-- 삭제자 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = CD.DLTR) AS DLTR_NM <!-- 삭제자 명 -->
, CD.DEL_RSN <!-- 삭제 사유 -->
FROM TB_CVLCPT_DSCSN CD
</sql>
@ -89,7 +89,7 @@
<include refid="select" />
<where>
<if test="cvlcptDscsnId != null">
AND CD.CVLCPT_DSCSN_ID = #{cvlcptDscsnId} <!-- 민원 상담 ID -->
AND CD.CVLCPT_DSCSN_ID = #{cvlcptDscsnId} <!-- 민원 상담 ID -->
</if>
<choose>
<when test="inquiryCondition == 'crdnId_vhrno_rtpyrNo'">
@ -100,17 +100,17 @@
</when>
<otherwise>
<if test="crdnId != null">
AND CD.CRDN_ID = #{crdnId} <!-- 단속 ID -->
AND CD.CRDN_ID = #{crdnId} <!-- 단속 ID -->
</if>
<if test="vhrno != null">
AND CD.VHRNO = #{vhrno} <!-- 차량번호 -->
AND CD.VHRNO = #{vhrno} <!-- 차량번호 -->
</if>
<if test="rtpyrNo != null">
AND CD.RTPYR_NO = #{rtpyrNo} <!-- 납부자 번호 -->
AND CD.RTPYR_NO = #{rtpyrNo} <!-- 납부자 번호 -->
</if>
</otherwise>
</choose>
AND CD.DEL_YN = 'N' <!-- 삭제 여부 -->
AND CD.DEL_YN = 'N' <!-- 삭제 여부 -->
</where>
<include refid="utility.orderBy" />
</select>
@ -132,50 +132,52 @@
AND DEL_YN = 'N'
</select>
<insert id="insertCvlcptDscsn" parameterType="map">/* 민원 상담 내용 등록(cvlcptDscsnMapper.insertCvlcptDscsn) */
<selectKey resultType="string" keyProperty="cvlcptDscsn.cvlcptDscsnId" keyColumn="NEW_ID" order="BEFORE">
SELECT CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(CVLCPT_DSCSN_ID, 5)) + 1, 1) AS INT), 16, '0')) AS NEW_ID
FROM TB_CVLCPT_DSCSN
WHERE CVLCPT_DSCSN_ID LIKE CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), '%')
<insert id="insertCvlcptDscsn" parameterType="cokr.xit.fims.sprt.CvlcptDscsn">/* 민원 상담 내용 등록(cvlcptDscsnMapper.insertCvlcptDscsn) */
<selectKey resultType="string" keyProperty="cvlcptDscsnId" keyColumn="NEW_ID" order="BEFORE">
<include refid="numbering.keyByYear">
<property name="TABLE_NAME" value="TB_CVLCPT_DSCSN" />
<property name="TABLE_KEY" value="CVLCPT_DSCSN_ID" />
<property name="pad" value="20" />
</include>
</selectKey>
INSERT
INTO TB_CVLCPT_DSCSN (
CVLCPT_DSCSN_ID <!-- 민원 상담 ID -->
, SGG_CD <!-- 시군구 코드 -->
, TASK_SE_CD <!-- 업무 구분 코드 -->
, CVLCPT_RCPT_SE_CD <!-- 민원 접수 구분 코드 -->
, CRDN_ID <!-- 단속 ID -->
, VHRNO <!-- 차량번호 -->
, RTPYR_NO <!-- 납부자 번호 -->
, DSCSN_YMD <!-- 상담 일자 -->
, WEEK_NM <!-- 요일 명 -->
, CVLPR_NM <!-- 민원인 명 -->
, CVLPR_CTTPC <!-- 민원인 연락처 -->
, DSCSN_CN <!-- 상담 내용 -->
, DEL_YN <!-- 삭제 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
CVLCPT_DSCSN_ID <!-- 민원 상담 ID -->
, SGG_CD <!-- 시군구 코드 -->
, TASK_SE_CD <!-- 업무 구분 코드 -->
, CVLCPT_RCPT_SE_CD <!-- 민원 접수 구분 코드 -->
, CRDN_ID <!-- 단속 ID -->
, VHRNO <!-- 차량번호 -->
, RTPYR_NO <!-- 납부자 번호 -->
, DSCSN_YMD <!-- 상담 일자 -->
, WEEK_NM <!-- 요일 명 -->
, CVLPR_NM <!-- 민원인 명 -->
, CVLPR_CTTPC <!-- 민원인 연락처 -->
, DSCSN_CN <!-- 상담 내용 -->
, DEL_YN <!-- 삭제 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
)
VALUES (
#{cvlcptDscsn.cvlcptDscsnId} <!-- 민원 상담 ID -->
, #{cvlcptDscsn.sggCd} <!-- 시군구 코드 -->
, #{cvlcptDscsn.taskSeCd} <!-- 업무 구분 코드 -->
, #{cvlcptDscsn.cvlcptRcptSeCd} <!-- 민원 접수 구분 코드 -->
, #{cvlcptDscsn.crdnId} <!-- 단속 ID -->
#{cvlcptDscsnId} <!-- 민원 상담 ID -->
, #{sggCd} <!-- 시군구 코드 -->
, #{taskSeCd} <!-- 업무 구분 코드 -->
, #{cvlcptRcptSeCd} <!-- 민원 접수 구분 코드 -->
, #{crdnId} <!-- 단속 ID -->
<choose>
<when test="cvlcptDscsn.cvlcptRcptSeCd == '02'">
, #{cvlcptDscsn.vhrno} <!-- 차량번호 -->
, NULL <!-- 납부자 번호 -->
<when test="cvlcptRcptSeCd == '02'">
, #{vhrno} <!-- 차량번호 -->
, NULL <!-- 납부자 번호 -->
</when>
<when test="cvlcptDscsn.cvlcptRcptSeCd == '03'">
, NULL <!-- 차량번호 -->
, #{cvlcptDscsn.rtpyrNo} <!-- 납부자 번호 -->
<when test="cvlcptRcptSeCd == '03'">
, NULL <!-- 차량번호 -->
, #{rtpyrNo} <!-- 납부자 번호 -->
</when>
<otherwise>
, NULL <!-- 차량번호 -->
, NULL <!-- 납부자 번호 -->
, NULL <!-- 차량번호 -->
, NULL <!-- 납부자 번호 -->
</otherwise>
</choose>
, <include refid="utility.today" /> <!-- 상담 일자 -->
@ -187,55 +189,64 @@
WHEN '5' THEN '목'
WHEN '6' THEN '금'
WHEN '7' THEN '토'
END ) <!-- 요일 명 -->
, #{cvlcptDscsn.cvlprNm} <!-- 민원인 명 -->
, #{cvlcptDscsn.cvlprCttpc} <!-- 민원인 연락처 -->
, #{cvlcptDscsn.dscsnCn} <!-- 상담 내용 -->
, 'N' <!-- 삭제 여부 -->
END ) <!-- 요일 명 -->
, #{cvlprNm} <!-- 민원인 명 -->
, #{cvlprCttpc} <!-- 민원인 연락처 -->
, #{dscsnCn} <!-- 상담 내용 -->
, 'N' <!-- 삭제 여부 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
, #{cvlcptDscsn.createdBy} <!-- 등록자 -->
, #{createdBy} <!-- 등록자 -->
, <include refid="utility.now" /> <!-- 수정 일시 -->
, #{cvlcptDscsn.modifiedBy} <!-- 수정자 -->
, #{modifiedBy} <!-- 수정자 -->
)
</insert>
<update id="updateCvlcptDscsn" parameterType="map">/* 민원 상담 내용 수정(cvlcptDscsnMapper.updateCvlcptDscsn) */
<update id="updateCvlcptDscsn" parameterType="cokr.xit.fims.sprt.CvlcptDscsn">/* 민원 상담 내용 수정(cvlcptDscsnMapper.updateCvlcptDscsn) */
UPDATE TB_CVLCPT_DSCSN
SET CVLPR_NM = #{cvlcptDscsn.cvlprNm} <!-- 민원인 명 -->
, CVLPR_CTTPC = #{cvlcptDscsn.cvlprCttpc} <!-- 민원인 연락처 -->
, DSCSN_CN = #{cvlcptDscsn.dscsnCn} <!-- 상담 내용 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{cvlcptDscsn.modifiedBy} <!-- 수정자 -->
WHERE CVLCPT_DSCSN_ID = #{cvlcptDscsn.cvlcptDscsnId} <!-- 민원 상담 ID -->
AND DEL_YN = 'N'
SET CVLPR_NM = #{cvlprNm} <!-- 민원인 명 -->
, CVLPR_CTTPC = #{cvlprCttpc} <!-- 민원인 연락처 -->
, DSCSN_CN = #{dscsnCn} <!-- 상담 내용 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{modifiedBy} <!-- 수정자 -->
WHERE CVLCPT_DSCSN_ID = #{cvlcptDscsnId} <!-- 민원 상담 ID -->
AND DEL_YN = 'N'
</update>
<update id="deleteCvlcptDscsn" parameterType="map">/* 민원 상담 내용 삭제(cvlcptDscsnMapper.deleteCvlcptDscsn) */
<update id="deleteCvlcptDscsn" parameterType="cokr.xit.fims.sprt.CvlcptDscsn">/* 민원 상담 내용 삭제(cvlcptDscsnMapper.deleteCvlcptDscsn) */
UPDATE TB_CVLCPT_DSCSN
SET DEL_YN = 'Y' <!-- 삭제 여부 -->
, DEL_DT = <include refid="utility.now" /> <!-- 삭제 일시 -->
, DLTR = #{cvlcptDscsn.modifiedBy} <!-- 삭제자 -->
, DEL_RSN = #{cvlcptDscsn.delRsn} <!-- 삭제 사유 -->
WHERE CVLCPT_DSCSN_ID = #{cvlcptDscsn.cvlcptDscsnId} <!-- 민원 상담 ID -->
AND DEL_YN = 'N'
SET DEL_YN = 'Y' <!-- 삭제 여부 -->
, DEL_DT = <include refid="utility.now" /> <!-- 삭제 일시 -->
, DLTR = #{modifiedBy} <!-- 삭제자 -->
, DEL_RSN = #{delRsn} <!-- 삭제 사유 -->
<choose>
<when test="cvlcptDscsnIds != null">
WHERE CVLCPT_DSCSN_ID IN ( <!-- 민원 상담 Ids -->
<foreach collection="cvlcptDscsnIds" item="cvlcptDscsnId" separator=","> #{cvlcptDscsnId} </foreach>
)
</when>
<otherwise>
WHERE CVLCPT_DSCSN_ID = #{cvlcptDscsnId} <!-- 민원 상담 ID -->
</otherwise>
</choose>
AND DEL_YN = 'N'
</update>
<select id="selectCrdn" parameterType="map" resultType="dataobject">/* 단속 대장 객체 가져오기(cvlcptDscsnCnMapper.selectCrdn) */
SELECT C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, C.VHRNO <!-- 차량번호 -->
, P.RTPYR_ID <!-- 납부자 ID -->
, P.RTPYR_NO <!-- 납부자 번호 -->
FROM TB_CRDN C
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
WHERE C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
SELECT C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, C.VHRNO <!-- 차량번호 -->
, P.RTPYR_ID <!-- 납부자 ID -->
, P.RTPYR_NO <!-- 납부자 번호 -->
FROM TB_CRDN C
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
WHERE C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
<choose>
<when test="delYn != null">
AND C.DEL_YN = #{delYn}
AND C.DEL_YN = #{delYn}
</when>
<otherwise>
AND C.DEL_YN = 'N'
AND C.DEL_YN = 'N'
</otherwise>
</choose>
</select>

@ -122,13 +122,13 @@
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-120" id="btnCreate--${pageName}" title="안내문 등록">
등록
안내문 등록
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnUpdate--${pageName}" title="안내문 수정">
수정
안내문 수정
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnRemove--${pageName}" title="안내문 삭제">
삭제
안내문 삭제
</button>
</span>
</span>

@ -467,7 +467,7 @@
$P.control.load(1);
// 합계금액 검색 - 검색시 log에 등록할때 MAX+1 오류 발생으로 인한 타이머 동작
setTimeout(() => $P.getSumAmtInfo($P.control.query), 250);
setTimeout(() => $P.getSumAmtInfo($P.control.query), 500);
//$P.getSumAmtInfo($P.control.query);
}

@ -1,14 +1,15 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<c:set var="prefixName" scope="request">민원상담 관리</c:set>
<!-- inner page html -->
<div class="content-wrapper">
<!-- Content -->
<div class="container-xxl flex-grow-1 px-0">
<c:set var="prefixName" scope="request">민원상담 관리</c:set>
<!-- Page Body -->
<div class="card">
<div class="wrapper-list">
<!-- 상단 버튼 -->
<div class="container-page-btn">
@ -36,12 +37,12 @@
<div class="row g-1">
<!-- 업무구분 -->
<div class="col-12">
<span class="form-label fw-bold form-search-title text-end">업무구분</span>
<span class="form-label fw-bold form-search-title w-px-120 text-end">업무구분</span>
<span class="form-search-linebox">
<c:forEach items="${taskListForSgg}" var="item">
<label>
<input type="radio" class="form-check-input" name="taskSeCd" alt="업무구분"
value="${item.code}" onchange="fnResetAndChangeBiz${pageName}(this.value);">
value="${item.code}" onchange="pageObject['${pageName}'].fnResetAndChangeBiz(this.value);">
${item.value}
</label>
</c:forEach>
@ -49,7 +50,7 @@
</div>
<!-- 상담일자 -->
<div class="col-6">
<span class="form-label fw-bold form-search-title text-end">상담일자</span>
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schDscsnYmdFrom--${pageName}">상담일자</label>
<span class="form-search-linebox">
<input type="text" class="form-control form-date" id="schDscsnYmdFrom--${pageName}" name="schDscsnYmdFrom"
data-fmt-type="day" autocomplete="off" title="시작 날짜 선택" />
@ -60,31 +61,23 @@
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</span>
</div>
<!-- -->
<div class="col-6">
</div>
<!-- 차량번호 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end" for="schVhrno--${pageName}">차량번호</label>
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schVhrno--${pageName}">차량번호</label>
<input type="text" class="form-control w-px-160" id="schVhrno--${pageName}" name="schVhrno" autocomplete="off" />
</div>
<!-- 납부자번호 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end" for="schRtpyrNo--${pageName}">납부자번호</label>
<input type="text" class="form-control w-px-160" id="schRtpyrNo--${pageName}" name="schRtpyrNo"autocomplete="off" />
</div>
<!-- 민원인명 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end" for="schCvlprNm--${pageName}">민원인명</label>
<label class="form-label fw-bold form-search-title w-px-120 text-end" for="schCvlprNm--${pageName}">민원인명</label>
<input type="text" class="form-control w-px-160" id="schCvlprNm--${pageName}" name="schCvlprNm"autocomplete="off" />
</div>
<!-- 동적검색 -->
<div class="col-6">
<input type="hidden" id="by--${pageName}" name="by" />
<input type="text" class="form-control" id="byOutput--${pageName}" value="동적 검색" readonly />
<input type="text" class="form-control fw-bold w-px-120 text-end" id="byOutput--${pageName}" value="동적 검색" readonly />
<input type="hidden" id="mainOption--${pageName}" name="mainOption" />
<input type="hidden" id="subOption--${pageName}" name="subOption" />
<input type="text" class="form-control w-px-320" id="term--${pageName}" name="term" autocomplete="off" />
<input type="text" class="form-control w-px-400" id="term--${pageName}" name="term" autocomplete="off" />
<!-- 상세 검색조건 버튼 -->
<span class="flr">
<button type="button" class="btn btn-open-detail" data-bs-toggle="collapse" data-bs-target="#searchDetail--${pageName}">
@ -101,7 +94,7 @@
<div class="row g-1">
<!-- 등록일자, 수정일자 -->
<div class="col-6">
<select class="form-select text-center" id="schRegDateOpt--${pageName}" name="schRegDateOpt">
<select class="form-select w-px-120 text-center" id="schRegDateOpt--${pageName}" name="schRegDateOpt">
<option value="regDt">등록일자</option>
<option value="mdfcnDt">수정일자</option>
</select>
@ -117,21 +110,17 @@
</div>
<!-- 등록자명, 수정자명 -->
<div class="col-6">
<select class="form-select text-center" id="schRgtrOpt--${pageName}" name="schRgtrOpt">
<select class="form-select w-px-120 text-center" id="schRgtrOpt--${pageName}" name="schRgtrOpt">
<option value="rgtr">등록자</option>
<option value="mdfr">수정자</option>
</select>
<input type="hidden" id="schRgtrCd--${pageName}" name="schRgtrCd" />
<input type="text" class="form-control" id="schRgtrNm--${pageName}" name="schRgtrNm" />
<button type="button" class="btn btn-sm btn-outline-dark" id="btnFindUser--${pageName}" title="사용자 검색">
검색
</button>
<input type="text" class="form-control w-px-160" id="schRgtrNm--${pageName}" name="schRgtrNm" />
<button type="button" class="btn btn-sm btn-outline-dark" id="btnFindUser--${pageName}" title="사용자 검색">검색</button>
</div>
</div>
</div>
<!-- / 상세 조건 -->
</form>
<!-- / 검색 조건 영역 -->
</div> <!-- / 상세 조건 -->
</form> <!-- / 검색 조건 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
@ -144,11 +133,11 @@
</div>
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-120" id="btnUpdateCvlcptDscsn--${pageName}" title="민원상담 수정">
수정
<button type="button" class="btn btn-primary w-px-120" id="btnUpdate--${pageName}" title="민원상담내용 수정">
상담내용 수정
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnRemoveCvlcptDscsn--${pageName}" title="민원상담 삭제">
삭제
<button type="button" class="btn btn-primary w-px-120" id="btnRemove--${pageName}" title="민원상담내용 삭제">
상담내용 삭제
</button>
</span>
</span>
@ -231,10 +220,8 @@
**************************************************************************/
$(document).ready(function() {
// pageObject
var $P = pageObject["${pageName}"];
let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/sprt/sprt04";
// FormFields
$P.formFields = new FimsFormFields("#frmSearch--${pageName}");
@ -242,45 +229,45 @@
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix : "cvlcptDscsn"
, prefixName : "민원상담"
, infoSize : "lg"
, keymapper : info => info ? info.CVLCPT_DSCSN_ID : ""
, dataGetter : obj => obj.cvlcptDscsnList
, appendData : true
, formats : {
DSCSN_YMD : dateFormat
, REG_DT : datetimeFormat
, MDFCN_DT : datetimeFormat
prefix: "cvlcptDscsn"
, prefixName: "민원상담"
, keymapper: info => info ? info.CVLCPT_DSCSN_ID : ""
, dataGetter: obj => obj.${infoPrefix}List
, appendData: true
, infoSize: "lg"
, formats: {
DSCSN_YMD: dateFormat
, REG_DT: datetimeFormat
, MDFCN_DT: datetimeFormat
}
});
// $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/**************************************************************************
* DatasetControl 이벤트
**************************************************************************/
// Dataset 변경 이벤트
$P.control.onDatasetChange = obj => {
$P.control.onDatasetChange = (obj) => {
$P.renderList(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({
list : $P.control.dataset
, prefix : "paging--${pageName}"
, start : obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch
, func : "$P.control.load({index})"
list: $P.control.dataset
, prefix: "paging--${pageName}"
, start: obj.${infoPrefix}Start
, totalSize: obj.${infoPrefix}Total
, fetchSize: obj.${infoPrefix}Fetch
, func: "pageObject['${pageName}'].control.load({index})"
});
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
};
// 현재 선택 자료 변경 이벤트
$P.control.onCurrentChange = item => {
$P.control.onCurrentChange = (item) => {
if (!item) return;
let key = item.data.CVLCPT_DSCSN_ID;
@ -295,19 +282,26 @@
$("#tbody--${pageName} input[type='checkbox']").each(function() {
let checkbox = $(this);
checkbox.prop("checked", keys.includes(checkbox.val()));
});
$("#btnRemove--${pageName}").prop("disabled", keys.length < 1);
// DataTables(그리드) 전체 선택(checkbox)
if (keys.length < 1) {
$("th input[type='checkbox']").prop("checked", false); // 체크 해제
} else if (keys.length == ${infoPrefix}List.length) {
$("th input[type='checkbox']").prop("checked", true); // 체크 설정
} else {
$("th input[type='checkbox']").prop("checked", false); // 체크 해제
}
};
// 민원상담 정보 dialog
// 상세정보 dialog
$P.control.getInfo = (params) => {
if (!params) return;
let dialogTitle = "";
if (params.callPurpose == "create") {
dialogTitle = $P.control.prefixName + " 등록";
} else if (params.callPurpose == "update") {
@ -317,15 +311,15 @@
}
ajax.get({
url : $P.control.urls.getInfo
, data : params || {}
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/020/info.do") + "?openerPageName=${pageName}"
, data: params || {}
, success: resp => {
dialog.open({
id : $P.control.prefixed("Dialog")
, title : dialogTitle
, content : resp
, size : $P.control.infoSize
, onClose : () => { $P.refreshList(); }
id: $P.control.prefixed("Dialog--${pageName}")
, title: dialogTitle
, content: resp
, size: $P.control.infoSize
, onClose: () => { $P.fnRefreshList(); } // 자료 재조회
});
}
});
@ -338,13 +332,11 @@
// 메시지 출력
dialog.alert({
content : showMessage
, onOK : () => { }
content: showMessage
, onOK: () => { }
});
if (resp.saved) {
$P.refreshList(); // 자료 재조회
}
if (resp.saved) { $P.fnRefreshList(); } // 자료 재조회
}
// 삭제
@ -352,9 +344,9 @@
if (!params) return;
ajax.post({
url : $P.control.urls.remove
, data : params
, success : resp => $P.control.onRemove(resp)
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/010/remove.do")
, data: params || {}
, success: resp => $P.control.onRemove(resp)
});
}
@ -372,7 +364,7 @@
document.getElementById("${infoPrefix}Row--${pageName}").innerHTML, <%-- from template#${infoPrefix}Row --%>
(str, dataItem) => str
.replace(/{onclick}/gi, "pageObject['${pageName}'].control.setCurrent('" + dataItem.getValue("CVLCPT_DSCSN_ID") + "');")
.replace(/{ondblclick}/gi, "pageObject['${pageName}'].fnUpdateCvlcptDscsn('민원상담 수정');")
.replace(/{ondblclick}/gi, "pageObject['${pageName}'].fnUpdate('민원상담 수정');")
);
let noMore = (totalSize == ${infoPrefix}List.length);
@ -395,7 +387,7 @@
// DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
$P.scrollDataList = () => {
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false
$P.control.load($P.control.query.pageNum + 1);
}
@ -403,47 +395,30 @@
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// callback 사용자 검색
$P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
// 사용자 검색
$P.getFindUser = () => {
let params = {
openerPageName : "${pageName}"
, callbackFuncName : "pageObject['${pageName}']['callbackFindUser']"
}
ajax.get({
url : wctx.url("/user/user02/010/main.do")
, data : params || {}
, success : resp => {
dialog.open({
id : "userDialog"
, title : "사용자 검색"
, content : resp
, size : "lg"
});
}
});
}
// 검색 자료 재조회
$P.refreshList = () => {
$P.fnRefreshList = () => {
$P.control.untilPageNum = $P.control.query.pageNum;
$P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum;
$P.control.load(1);
}
// 사유 callback
// 사용자검색 callback
$P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
// 삭제사유 callback
$P.callbackRsn = (obj) => {
// 서버에 전송할 data(파라미터) 생성
let params = {};
params[$P.control.prefixed("Ids")] = selected.join(","); // Ids
params.delRsn = obj.reason; // 삭제 사유
let selected = $P.control.dataset.getKeys("selected");
params[$P.control.prefixed("Ids")] = selected.join(","); // Ids
params.sggCd = $("#sggCd--${pageName}").val(); // 시군구 코드
params.taskSeCd = $("input[name=taskSeCd]:checked").val(); // 업무 구분 코드
params.delRsn = obj.reason; // 삭제 사유
$P.control.remove(params);
}
@ -459,9 +434,7 @@
}
// 초기 기본 설정
$P.initForm();
// 기본 데이터 설정
$P.initData(taskSeCd);
$P.initForm(taskSeCd);
// 업무 구분별 설정
$P.setTask(taskSeCd);
@ -469,12 +442,34 @@
$P.control.dataset.clear();
}
// 사용자검색 버튼 클릭 이벤트
$P.fnGetFindUser = () => {
let params = {
openerPageName: "${pageName}"
, callbackFuncName: "pageObject['${pageName}']['callbackFindUser']"
}
ajax.get({
url: wctx.url("/user/user02/010/main.do")
, data: params || {}
, success: resp => {
dialog.open({
id: "userDialog"
, title: "사용자 검색"
, content: resp
, size: "lg"
, init: () => { setDialogZindex(); }
});
}
});
}
// 검색 버튼 이벤트
$P.fnSearchList = () => {
// 검색조건
$P.control.query = $P.formFields.get();
$P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수
$P.control.query.delYn = "N"; // 삭제 여부
$P.control.query = $P.formFields.get(); // 검색 조건
$P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수
$P.control.query.delYn = "N"; // 삭제 여부
$P.control.load(1);
}
@ -483,10 +478,9 @@
$P.fnExcel = () => {
if ($P.control.dataset.empty) {
dialog.alert({
content : "검색된 자료가 없습니다."
, onOK : () => { }
content: "검색된 자료가 없습니다."
, onOK: () => { }
});
return;
}
@ -498,53 +492,52 @@
$P.control.download();
}
// 사용자 조회 버튼 이벤트
$P.fnFindUser = () => {
$P.getFindUser();
}
// 수정 버튼 이벤트
$P.fnUpdateCvlcptDscsn = (title) => {
$P.fnUpdate = (title) => {
// 민원상담 ID
let cvlcptDscsnId = $P.control.dataset.getValue("CVLCPT_DSCSN_ID");
// 민원상담 ID 가 없다면.. 입력
if (typeof cvlcptDscsnId == "undefined" || cvlcptDscsnId == null || cvlcptDscsnId == "") return;
let params = {
title : title
, callPurpose : "update"
, cvlcptDscsnId : cvlcptDscsnId // 민원상담 ID
, sggCd : $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
title: title
, callPurpose: "update"
, sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, cvlcptDscsnId: cvlcptDscsnId // 민원상담 ID
};
$P.control.getInfo(params);
}
// 삭제 버튼 이벤트
$P.fnRemoveCvlcptDscsn = (title) => {
$P.fnRemove = (title) => {
// 선택 자료
let selected = $P.control.dataset.getKeys("selected");
if (selected.length < 1) return;
if (selected.length < 1) {
dialog.alert({
content: "선택하신 " + $P.control.prefixName + " 정보가 없습니다."
, onOK: () => { }
});
return;
}
// 삭제 메세지 확인
dialog.alert({
content : "선택하신 " + selected.length + "건의 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?"
, onOK : async() => {
// 삭제 사유 입력
var resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html"));
var template = await resp.text();
let resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html"));
let template = await resp.text();
dialog.open({
id : "inputDelRsnDialog",
title: title,
size : "lg",
content: template,
init : () => {
setDialogZindex();
},
onOK : () => {
id: "inputDelRsnDialog"
, title: title
, size: "lg"
, content: template
, init: () => { setDialogZindex(); }
, onOK: () => {
$P.callbackRsn({ reason : $("#reason").val() });
}
});
@ -561,7 +554,7 @@
$("#btnReset--${pageName}").on("click", () => $P.fnResetAndChangeBiz()); // 초기화
$("#btnSearch--${pageName}").on("click", () => $P.fnSearchList()); // 검색
$("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀
$("#btnFindUser--${pageName}").on("click", () => $P.fnFindUser()); // 사용자 검색
$("#btnFindUser--${pageName}").on("click", () => $P.fnGetFindUser()); // 사용자 검색
// 동적검색에서 엔터(Enter) 키를 누르면 검색한다.
$("#term--${pageName}").keypress(function(e) {
@ -583,13 +576,12 @@
});
});
// 민원상담 수정 버튼 이벤트
$("#btnUpdateCvlcptDscsn--${pageName}").on("click", function() {
$P.fnUpdateCvlcptDscsn($(this).attr("title"));
// 버튼 이벤트
$("#btnUpdate--${pageName}").on("click", function() {
$P.fnUpdate($(this).attr("title")); // 민원상담 수정
});
// 민원상담 삭제 버튼 이벤트
$("#btnRemoveCvlcptDscsn--${pageName}").on("click", function() {
$P.fnRemoveCvlcptDscsn($(this).attr("title"));
$("#btnRemove--${pageName}").on("click", function() {
$P.fnRemove($(this).attr("title")); // 민원상담 삭제
});
// DataTables width 변경 조정
@ -600,7 +592,7 @@
}
// 초기 화면 설정
$P.initForm = () => {
$P.initForm = (taskSeCd) => {
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
@ -617,41 +609,20 @@
$(this).prop("disabled", "true");
});
// 달력 초기화
initDatepicker("frmSearch--${pageName}");
$("#schDscsnYmdFrom--${pageName}").datepicker("setDate", new Date());
$("#schDscsnYmdTo--${pageName}").datepicker("setDate", new Date());
// 동적 검색
$("#byOutput--${pageName}").val("동적 검색");
// 사용자 이름
$("#schRgtrNm--${pageName}").prop("readonly", true);
}
// 기본 데이터 설정
$P.initData = (taskSeCd) => {
// 시군구 코드
$("#sggCd--${pageName}").val("${sggCd}");
// 업무 구분 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true);
// 일자
// 기본 데이터 설정
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); // 업무 구분 코드
initDatepicker("frmSearch--${pageName}"); // 달력 초기화
$("#schDscsnYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date);
$("#schDscsnYmdTo--${pageName}").datepicker("setDate", new Date());
$("#byOutput--${pageName}").val("동적 검색"); // 동적 검색
$("#schRgtrNm--${pageName}").prop("readonly", true); // 사용자 이름
}
// 업무 구분별 설정
$P.setTask = (taskSeCd) => {
// URL 설정
$P.setURL(taskSeCd);
}
// 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => {
$P.control.urls.load = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/010/list.do"); // 조회
$P.control.urls.remove = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/010/removes.do"); // 삭제
$P.control.urls.getInfo = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/020/info.do"); // 정보
// 업무구분에 따른 URL 설정
$P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/010/list.do"); // 조회
}
/**************************************************************************

@ -1,20 +1,21 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<c:set var="prefixName" scope="request">민원 상담 내용 정보</c:set>
<!-- inner page html -->
<div class="content-wrapper">
<!-- Content -->
<div class="container flex-grow-1 px-0">
<c:set var="prefixName" scope="request">민원 상담 내용 정보</c:set>
<!-- Page Body -->
<div class="card">
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<!-- hidden -->
<input type="hidden" id="crdnId--${pageName}" name="crdnId" data-map="CRDN_ID" />
<input type="hidden" id="sggCd--${pageName}" name="sggCd" data-map="SGG_CD" />
<input type="hidden" id="taskSeCd--${pageName}" name="taskSeCd" data-map="TASK_SE_CD" />
<input type="hidden" id="crdnId--${pageName}" name="crdnId" data-map="CRDN_ID" />
<input type="hidden" id="cvlcptDscsnId--${pageName}" name="cvlcptDscsnId" data-map="CVLCPT_DSCSN_ID" />
<input type="hidden" id="vhrno--${pageName}" name="vhrno" data-map="VHRNO" />
<input type="hidden" id="rtpyrNo--${pageName}" name="rtpyrNo" data-map="RTPYR_NO" />
@ -76,10 +77,8 @@
**************************************************************************/
$(document).ready(function() {
// pageObject
var $P = pageObject["${pageName}"];
let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/sprt/sprt04";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// FormFields
@ -89,10 +88,10 @@
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix : "cvlcptDscsn"
, prefixName : "민원상담"
, keymapper : info => info ? info.CVLCPT_DSCSN_ID : ""
, dataGetter : obj => obj.cvlcptDscsnInfo
prefix: "cvlcptDscsn"
, prefixName: "민원상담"
, keymapper: info => info ? info.CVLCPT_DSCSN_ID : ""
, dataGetter: obj => obj.${infoPrefix}Info
});
/**************************************************************************
@ -106,22 +105,23 @@
$P.formFields.set($P.control,item);
// 업무구분에 따른 URL 변경
$P.setURL(item.data.TASK_SE_CD);
$P.fnSetURL(item.data.TASK_SE_CD);
}
// 저장 callback
$P.control.onSave = (resp) => {
let dialogTitle = $("#" + $P.control.prefix + "Dialog").find("h5.modal-title").html();
let dialogTitle = $("#" + $P.control.prefix + "Dialog--${openerPageName}").find("h5.modal-title").html();
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, dialogTitle);
// 메시지 출력
dialog.alert({
content : showMessage
, onOK : () => { }
content: showMessage
, init: () => { setDialogZindex(); }
, onOK: () => { }
});
if (resp.saved) {
dialog.close($P.control.prefix + "Dialog");
dialog.close($P.control.prefix + "Dialog--${openerPageName}");
}
}
@ -132,16 +132,20 @@
let create = ($P.callPurpose == "create");
ajax.post({
url : !create ? $P.control.urls.update : $P.control.urls.create
, data : info
, success : resp => $P.control.onSave(resp)
url: !create ? $P.control.urls.update : $P.control.urls.create
, data: info
, success: resp => $P.control.onSave(resp)
});
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 업무구분에 따른 URL 설정
$P.fnSetURL = (taskSeCd) => {
$P.control.urls.create = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/020/create.do"); // 등록
$P.control.urls.update = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/020/update.do"); // 수정
}
/**************************************************************************
* 버튼 clickEvent
@ -153,12 +157,9 @@
dialog.alert({
content : "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => {
// 파리미터 설정
let params = $P.formFields.get(); // formFields
params.title = title; // 타이틀
$P.control.save(params);
, init: () => { setDialogZindex(); }
, onOK: () => {
$P.control.save($P.formFields.get()); // formFields
}
});
}
@ -181,38 +182,26 @@
});
});
// 저장 버튼 이벤트
$("#btnSave--${pageName}").on("click", function() {
$P.fnSave($(this).attr("title"));
});
// 버튼 이벤트
$("#btnSave--${pageName}").on("click", () => $P.fnSave()); // 저장
}
// 초기 화면 설정
$P.initForm = () => {
// Dialog 마우스로 드래그 할 수 있도록 설정.
fnMakeDraggableDialog(document.getElementById($P.control.prefix + "Dialog"));
// 달력 초기화
initDatepicker("frmEdit--${pageName}");
if ($P.callPurpose == "view") { // view
// View로 호출
if ($P.callPurpose == "view") {
// input 요소들을 disabled
$("#frmEdit--${pageName}").find("input,textarea,select").prop("disabled", true);
// button 요소들을 disabled
$("btnSave--${pageName}").prop("disabled", true);
} else if ($P.callPurpose == "create") { // create
//
} else if ($P.callPurpose == "update") { // update
} else if ($P.callPurpose == "update") {
$("#cvlcptRcptSeCd--${pageName}").prop("disabled", true);
}
}
// 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => {
$P.control.urls.create = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/020/create.do"); // 등록
$P.control.urls.update = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/020/update.do"); // 수정
}
/**************************************************************************
* 최초 실행 함수
**************************************************************************/

Loading…
Cancel
Save