의견제출 체크자료 삭제 수정.

main
jjh 11 months ago
parent f840a5e8be
commit 3273208cec

@ -167,7 +167,7 @@ public class OpnnSbmsn extends AbstractEntity {
/**
* IDs
*/
private String opnnIDs;
private String[] opnnIDs;
// 추가 /////////////////////////////////////////////////////////////////////
/**

@ -55,6 +55,18 @@ public interface OpnnSbmsnMapper extends AbstractMapper {
return !opnnSbmsns.isEmpty() ? opnnSbmsns.get(0) : null;
}
/** .
* @param crdnId ID
* @return
*/
List<DataObject> selectCrdn(LevyExclQuery req);
default DataObject selectCrdnInfo(LevyExclQuery req) {
List<DataObject> crdn = selectCrdn(req);
return !crdn.isEmpty() ? crdn.get(0) : null;
}
/** .
* @param opnnId ID
* @return

@ -75,15 +75,6 @@ public interface OpnnSbmsnService {
*/
String removeOpnnSbmsn(OpnnSbmsn opnnSbmsn);
/** .
* @param req
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
String removeOpnnSbmsnList(LevyExclQuery req);
/** .
* @param formatType ,formatName , printOption , opnnIDs
* @return map
@ -93,4 +84,31 @@ public interface OpnnSbmsnService {
*/
Map<String, String> makeDlbrDecsnFileFromHwpFormat(String formatType, String formatName, PrintOption printOption, LevyExclQuery req);
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean create(OpnnSbmsn opnnSbmsn);
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean update(OpnnSbmsn opnnSbmsn);
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean remove(OpnnSbmsn opnnSbmsn);
}

@ -96,7 +96,15 @@ public class OpnnSbmsnBean extends AbstractComponent {
* @return
*/
public DataObject getOpnnSbmsnInfo(LevyExclQuery req) {
return opnnSbmsnMapper.selectOpnnSbmsnInfo(req);
DataObject opnnSbmsnInfo = new DataObject();
if (req.getCallPurpose().equals("create")) {
opnnSbmsnInfo = opnnSbmsnMapper.selectCrdnInfo(req);
} else {
opnnSbmsnInfo = opnnSbmsnMapper.selectOpnnSbmsnInfo(req);
}
return opnnSbmsnInfo;
}
/** .
@ -123,17 +131,17 @@ public class OpnnSbmsnBean extends AbstractComponent {
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 단속 ID로 단속, 의견제출 정보 조회
DataObject infoCrdnOpnnSbmsn = opnnSbmsnMapper.selectOpnnSbmsnInfo(new LevyExclQuery().setCrdnId(opnnSbmsn.getCrdnId()));
// 단속 ID로 단속 정보 조회
DataObject crdnInfo = opnnSbmsnMapper.selectCrdnInfo(new LevyExclQuery().setCrdnId(opnnSbmsn.getCrdnId()));
// 의견제출ID가 있다면 이미 자료가 존재하므로 종료..
if (!infoCrdnOpnnSbmsn.string("OPNN_ID").equals("")) {
if (!crdnInfo.string("OPNN_ID").equals("")) {
rtnMsg = "[F] 작업 중 이미 등록된 자료가 존재합니다.";
return rtnMsg;
}
// 단속 상태 코드가 부과(51) 보다 크다면, 의견제출 등록을 할 수 없다. 종료..
if (infoCrdnOpnnSbmsn.number("CRDN_STTS_CD").intValue() >= 51) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + infoCrdnOpnnSbmsn.string("CRDN_STTS_NM") + " 상태 입니다.";
if (crdnInfo.number("CRDN_STTS_CD").intValue() >= 51) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + crdnInfo.string("CRDN_STTS_NM") + " 상태 입니다.";
return rtnMsg;
}
@ -153,13 +161,13 @@ public class OpnnSbmsnBean extends AbstractComponent {
}
// 단속 상태 코드가 사전통보중 이전일때만 단속의 상태를 의견제출 중으로 수정 한다.
if (infoCrdnOpnnSbmsn.number("CRDN_STTS_CD").intValue() <= 42) { // 사전통보 완료
if (crdnInfo.number("CRDN_STTS_CD").intValue() <= 42) { // 사전통보 완료
// 단속상태이력(TB_CRDN_STTS_HSTRY)
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(infoCrdnOpnnSbmsn.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(infoCrdnOpnnSbmsn.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(infoCrdnOpnnSbmsn.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnId(crdnInfo.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(crdnInfo.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(crdnInfo.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd("31"); // 의견제출 접수
crdnSttsHstry.setTaskDtlId(opnnSbmsn.getOpnnId());
@ -173,7 +181,7 @@ public class OpnnSbmsnBean extends AbstractComponent {
// 단속 대장(TB_CRDN) 의견제출여부(OPNN_SBMSN_YN) 정보를 수정 한다.
Crdn crdn = new Crdn();
crdn.setCrdnId(infoCrdnOpnnSbmsn.string("CRDN_ID"));
crdn.setCrdnId(crdnInfo.string("CRDN_ID"));
crdn.setOpnnSbmsnYn("Y");
rtnScs = opnnSbmsnMapper.updateCrdn(crdn); // 단속 대장 수정
@ -436,4 +444,37 @@ public class OpnnSbmsnBean extends AbstractComponent {
return rtnMsg;
}
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean create(OpnnSbmsn opnnSbmsn) {
return opnnSbmsnMapper.insert(opnnSbmsn);
}
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean update(OpnnSbmsn opnnSbmsn) {
return opnnSbmsnMapper.update(opnnSbmsn);
}
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean remove(OpnnSbmsn opnnSbmsn) {
return opnnSbmsnMapper.delete(opnnSbmsn);
}
}

@ -79,36 +79,40 @@ public class OpnnSbmsnServiceBean extends AbstractServiceBean implements OpnnSbm
@Override
public String removeOpnnSbmsn(OpnnSbmsn opnnSbmsn) {
return opnnSbmsnBean.removeOpnnSbmsn(opnnSbmsn);
}
@Override
public String removeOpnnSbmsnList(LevyExclQuery req) {
// 변수 선언
String retMessage = ""; // 처리 결과 메시지
String rtnMsg = "[F] "; // 처리 결과 메시지
// 의견제출 IDs 건수를 확인하여 1건이하면.. 종료
if (req.getOpnnIDs().length < 1) {
retMessage = "작업 중 선택 자료가 존재하지 않습니다.";
return retMessage;
// 의견제출 ID 및 의견제출 IDs 확인하여 null이면 종료
if (opnnSbmsn.getOpnnId() == null && opnnSbmsn.getOpnnIDs() == null) {
rtnMsg = "[F] 작업 중 선택 자료가 존재하지 않습니다.";
return rtnMsg;
}
// 의견제출 IDs 만큼 반복..
for (int iLoop = 0; iLoop < req.getOpnnIDs().length; iLoop++) {
OpnnSbmsn opnnSbmsn = new OpnnSbmsn();
// 부과제외 삭제 처리
if (opnnSbmsn.getOpnnId() != null) {
rtnMsg = opnnSbmsnBean.removeOpnnSbmsn(opnnSbmsn);
} else {
// 의견제출 IDs 를 확인하여 건수가 1보다 작다면 종료..
if (opnnSbmsn.getOpnnIDs().length < 1) {
rtnMsg = "[F] 작업 중 선택 자료가 존재하지 않습니다.";
return rtnMsg;
}
opnnSbmsn.setOpnnId(req.getOpnnIDs()[iLoop]); // 의견제출 ID
opnnSbmsn.setDelRsn(req.getDelRsn()); // 삭제 사유
// 의견제출 IDs 만큼 반복..
for (int iLoop = 0; iLoop < opnnSbmsn.getOpnnIDs().length; iLoop++) {
// 부과제외 ID 설정
opnnSbmsn.setOpnnId(opnnSbmsn.getOpnnIDs()[iLoop]);
// 부과제외 삭제 호출
retMessage = opnnSbmsnBean.removeOpnnSbmsn(opnnSbmsn);
rtnMsg = opnnSbmsnBean.removeOpnnSbmsn(opnnSbmsn);
// 오류가 발생하였으면 종료..
if (retMessage.contains("[F]")) {
return retMessage;
if (rtnMsg.contains("[F]")) {
return rtnMsg;
}
}
}
return retMessage;
return rtnMsg;
}
@Override
@ -189,4 +193,19 @@ public class OpnnSbmsnServiceBean extends AbstractServiceBean implements OpnnSbm
return result;
}
@Override
public boolean create(OpnnSbmsn opnnSbmsn) {
return opnnSbmsnBean.create(opnnSbmsn);
}
@Override
public boolean update(OpnnSbmsn opnnSbmsn) {
return opnnSbmsnBean.update(opnnSbmsn);
}
@Override
public boolean remove(OpnnSbmsn opnnSbmsn) {
return opnnSbmsnBean.remove(opnnSbmsn);
}
}

@ -324,7 +324,7 @@ public class Excl02Controller extends ApplicationController {
.addObject("rtnMsg", rtnMsg);
}
/** .
/** ID .
* @param opnnSbmsnId Id
* @return jsonView
* <pre><code> {
@ -347,29 +347,6 @@ public class Excl02Controller extends ApplicationController {
.addObject("rtnMsg", rtnMsg);
}
/** .
* @param opnnSbmsnIDs IDs
* @return jsonView
* <pre><code> {
* "affected":
* "saved": true, false
* }</code></pre>
*/
public ModelAndView removeOpinionSubmissionList(LevyExclQuery req) {
boolean saved = false;
String rtnMsg = opnnSbmsnService.removeOpnnSbmsnList(req);
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
/** .
* @param opnnSbmsnIDs IDs
* @return jsonView
@ -391,4 +368,47 @@ public class Excl02Controller extends ApplicationController {
return mav;
}
/** .
* @param opnnSbmsn
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
// @PostMapping(name = "의견제출 대장 등록", value = "/create.do")
public ModelAndView create(OpnnSbmsn opnnSbmsn) {
boolean saved = opnnSbmsnService.create(opnnSbmsn);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
/** .
* @param opnnSbmsn
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
// @PostMapping(name = "의견제출 대장 수정", value = "/update.do")
public ModelAndView update(OpnnSbmsn opnnSbmsn) {
boolean saved = opnnSbmsnService.update(opnnSbmsn);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
/** .
* @param opnnSbmsnIDs
* @return jsonView
* <pre><code> {
* "affected":
* "saved": true, false
* }</code></pre>
*/
// @PostMapping(name = "의견제출 대장 제거", value = "/remove.do")
public ModelAndView remove(OpnnSbmsn opnnSbmsn) {
boolean saved = opnnSbmsnService.remove(opnnSbmsn);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
}

@ -453,12 +453,6 @@ public class BpvController {
return super.updateOpinionSubmissionAnswer(opnnSbmsn);
}
@Override
@RequestMapping(name="의견제출 대장 목록 삭제", value=METHOD_URL.removeOpinionSubmissionList)
public ModelAndView removeOpinionSubmissionList(LevyExclQuery req) {
return super.removeOpinionSubmissionList(req);
}
@Override
@RequestMapping(name="의견제출 대장 삭제", value=METHOD_URL.removeOpinionSubmission)
public ModelAndView removeOpinionSubmission(OpnnSbmsn opnnSbmsn) {

@ -415,12 +415,6 @@ public class DpvController {
return super.updateOpinionSubmissionAnswer(opnnSbmsn);
}
@Override
@RequestMapping(name="의견제출 대장 목록 삭제", value=METHOD_URL.removeOpinionSubmissionList)
public ModelAndView removeOpinionSubmissionList(LevyExclQuery req) {
return super.removeOpinionSubmissionList(req);
}
@Override
@RequestMapping(name="의견제출 대장 삭제", value=METHOD_URL.removeOpinionSubmission)
public ModelAndView removeOpinionSubmission(OpnnSbmsn opnnSbmsn) {

@ -374,12 +374,6 @@ public class EcaController {
return super.updateOpinionSubmissionAnswer(opnnSbmsn);
}
@Override
@RequestMapping(name="의견제출 대장 목록 삭제", value=METHOD_URL.removeOpinionSubmissionList)
public ModelAndView removeOpinionSubmissionList(LevyExclQuery req) {
return super.removeOpinionSubmissionList(req);
}
@Override
@RequestMapping(name="의견제출 대장 삭제", value=METHOD_URL.removeOpinionSubmission)
public ModelAndView removeOpinionSubmission(OpnnSbmsn opnnSbmsn) {

@ -423,12 +423,6 @@ public class PvsController {
return super.updateOpinionSubmissionAnswer(opnnSbmsn);
}
@Override
@RequestMapping(name="의견제출 대장 목록 삭제", value=METHOD_URL.removeOpinionSubmissionList)
public ModelAndView removeOpinionSubmissionList(LevyExclQuery req) {
return super.removeOpinionSubmissionList(req);
}
@Override
@RequestMapping(name="의견제출 대장 삭제", value=METHOD_URL.removeOpinionSubmission)
public ModelAndView removeOpinionSubmission(OpnnSbmsn opnnSbmsn) {

@ -117,7 +117,7 @@
, #{crdnSttsHstry.crdnSttsCd} /* 단속 상태 코드 */
, #{crdnSttsHstry.taskDtlId} /* 업무 상세 ID */
, #{crdnSttsHstry.etcCn} /* 기타 내용 */
, 'Y' /* 단속 상태 변경 일시 */
, #{crdnSttsHstry.useYN} /* 사용 여부 */
, <include refid="utility.now" /> /* 등록 일시 */
, #{crdnSttsHstry.createdBy} /* 등록자 */
, <include refid="utility.now" /> /* 수정 일시 */

@ -242,31 +242,7 @@
</select>
<sql id="select">
SELECT C.CRDN_ID /* 단속 ID */
, C.SGG_CD /* 시군구 코드 */
, C.TASK_SE_CD /* 업무 구분 코드 */
, C.CRDN_REG_SE_CD /* 단속 등록 구분 코드 */
, C.CRDN_YMD /* 단속 일자 */
, C.CRDN_TM /* 단속 시각 */
, C.VHRNO /* 차량번호 */
, C.CRDN_STDG_NM /* 단속 법정동 명 */
, C.CRDN_ROAD_NM /* 단속 도로 명 */
, C.CRDN_PLC /* 단속 장소 */
, C.CRDN_STTS_CD /* 단속 상태 코드 */
, C.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM /* 단속 일시 */
, (SELECT GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM /* 업무 구분 명 */
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, P.RTPYR_ID /* 납부자 ID */
, P.RTPYR_NM /* 납부자 명 */
, P.RTPYR_TELNO /* 납부자 전화번호 */
, P.RTPYR_MBL_TELNO /* 납부자 휴대 전화번호 */
, P.RTPYR_EML /* 납부자 이메일 */
, P.RTPYR_BRDT /* 납부자 생년월일 */
, P.ZIP /* 우편번호 */
, P.ADDR /* 주소 */
, P.DTL_ADDR /* 상세 주소 */
, OS.OPNN_ID /* 의견 ID */
SELECT OS.OPNN_ID /* 의견 ID */
, OS.RCPT_NO /* 접수 번호 */
, OS.RCPT_YMD /* 접수 일자 */
, OS.RCPT_SE_CD /* 접수 구분 코드 */
@ -296,22 +272,29 @@
, (SELECT GET_CODE_NM('FIM033', OS.OPNN_SBMSN_SE_CD) FROM DUAL) AS OPNN_SBMSN_SE_NM /* 의견 제출 구분 명 */
, (SELECT GET_CODE_NM('FIM030', OS.NTFCTN_SE_CD) FROM DUAL) AS NTFCTN_SE_NM /* 통보 구분 코드 */
, (SELECT GET_CODE_NM('FIM031', OS.OPNN_SBMSN_STTS_CD) FROM DUAL) AS OPNN_SBMSN_STTS_NM /* 의견 제출 상태 명 */
, (SELECT C.FFNLG_CRDN_AMT*T.WKSN_RDUCT_RT/100
, (SELECT C.FFNLG_CRDN_AMT * T.WKSN_RDUCT_RT / 100
FROM TB_TASK T
WHERE C.SGG_CD = T.SGG_CD AND C.TASK_SE_CD = T.TASK_SE_CD
AND T.USE_YN = 'Y') AS RDUCT_AMT /* 감경 금액 */
FROM TB_CRDN C
WHERE C.SGG_CD=T.SGG_CD AND C.TASK_SE_CD=T.TASK_SE_CD AND T.USE_YN='Y') AS RDUCT_AMT /* 감경 금액 */
, C.CRDN_ID /* 단속 ID */
, C.SGG_CD /* 시군구 코드 */
, C.TASK_SE_CD /* 업무 구분 코드 */
, C.VHRNO /* 차량번호 */
, C.CRDN_STTS_CD /* 단속 상태 코드 */
, C.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM /* 단속 일시 */
, (SELECT GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM /* 업무 구분 명 */
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, P.RTPYR_ID /* 납부자 ID */
, P.RTPYR_NO /* 납부자 번호 */
, P.RTPYR_NM /* 납부자 명 */
FROM TB_OPNN_SBMSN OS
LEFT OUTER JOIN TB_CRDN C ON (OS.CRDN_ID = C.CRDN_ID)
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_OPNN_SBMSN OS ON (C.CRDN_ID = OS.CRDN_ID AND OS.DEL_YN = 'N')
</sql>
<select id="selectOpnnSbmsns" parameterType="map" resultType="dataobject">/* 의견제출 대장 객체 가져오기(opnnSbmsnMapper.selectOpnnSbmsns) */
<include refid="select" />
<where>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} /* 단속 ID */
AND C.DEL_YN = 'N' /* 단속 삭제 여부 */
</if>
<if test="opnnIDs != null">
AND OS.OPNN_ID IN ( /* 의견제출 ID */
<foreach collection="opnnIDs" item="opnnId" separator=","> #{opnnId} </foreach>
@ -320,24 +303,46 @@
<if test="opnnId != null">
AND OS.OPNN_ID = #{opnnId} /* 의견제출 ID */
</if>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} /* 단속 ID */
AND C.DEL_YN = 'N' /* 단속 삭제 여부 */
</if>
<if test="delYN != null">
AND OS.DEL_YN = #{delYN} /* 삭제 여부 */
</if>
</where>
<include refid="utility.orderBy" />
</select>
<select id="selectOpnnSbmsnDlbrDecsns" parameterType="map" resultType="dataobject">/* 의견제출 심의 의결서 가져오기(opnnSbmsnMapper.selectOpnnSbmsns) */
<select id="selectCrdn" parameterType="map" resultType="dataobject">/* 단속 대장 객체 가져오기(levyExclMapper.selectCrdn) */
SELECT C.CRDN_ID /* 단속 ID */
, C.SGG_CD /* 시군구 코드 */
, C.TASK_SE_CD /* 업무 구분 코드 */
, C.CRDN_YMD /* 단속 일자 */
, C.CRDN_TM /* 단속 시각 */
, C.VHRNO /* 차량번호 */
, C.CRDN_PLC /* 단속장소 */
, C.CRDN_STTS_CD /* 단속 상태 코드 */
, C.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */
, (SELECT GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM /* 업무 구분 명 */
, (SELECT GET_MASK_DATETIME(C.CRDN_YMD, '-', C.CRDN_TM, ':') FROM DUAL) AS CRDN_YMD_TM_MASK /* 단속 일시 마스크 */
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM /* 단속 일시 */
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, P.RTPYR_ID /* 납부자 ID */
, P.RTPYR_NO /* 납부자 번호 */
, P.RTPYR_NM /* 납부자 명 */
, P.RTPYR_TELNO /* 납부자 전화번호 */
, P.RTPYR_MBL_TELNO /* 납부자 휴대 전화번호 */
, P.RTPYR_EML /* 납부자 이메일 */
, P.RTPYR_BRDT /* 납부자 생년월일 */
, P.ZIP /* 우편번호 */
, P.ADDR /* 주소 */
, P.DTL_ADDR /* 상세 주소 */
, OS.OPNN_ID /* 의견 ID */
FROM TB_CRDN C
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_OPNN_SBMSN OS ON (C.CRDN_ID = OS.CRDN_ID AND OS.DEL_YN = 'N')
WHERE C.CRDN_ID = #{crdnId} /* 단속 ID */
AND C.DEL_YN = 'N' /* 삭제 여부 */
</select>
<select id="selectOpnnSbmsnDlbrDecsns" parameterType="map" resultType="dataobject">/* 의견제출 심의 의결서 가져오기(opnnSbmsnMapper.selectOpnnSbmsnDlbrDecsns) */
SELECT OS.OPNN_ID /* 의견 ID */
, OS.RCPT_NO /* 접수 번호 */
, OS.RCPT_YMD /* 접수 일자 */
, OS.RCPT_SE_CD /* 접수 구분 코드 */
@ -354,15 +359,44 @@
, OS.NTFCTN_SE_CD /* 통보 구분 코드 */
, OS.PIC_RVW_OPNN /* 담당자 검토 의견 */
, OS.OPNN_SBMSN_STTS_CD /* 의견 제출 상태 코드 */
, (CONCAT(SUBSTR(OS.RCPT_NO, 1, 4), '-', SUBSTR(OS.RCPT_NO, 5, 6))) AS RCPT_NO_MASK /* 접수 번호 */
, (CONCAT(SUBSTR(OS.RCPT_NO,1,4), '-', SUBSTR(OS.RCPT_NO,5,6))) AS RCPT_NO_MASK /* 접수 번호 */
, (SELECT GET_MASK_DATE(OS.RCPT_YMD, '-') FROM DUAL) AS RCPT_YMD_MASK /* 접수 일자 마스크 */
, (SELECT GET_CODE_NM('FIM032', OS.OWNR_REL_CD) FROM DUAL) AS OWNR_REL_NM /* 소유주 관계 코드 */
, (SELECT GET_BRDT_FORMAT(OS.STTR_BRDT, '.') FROM DUAL) AS STTR_BRDT_FORMAT /* 진술자 생년월일 */
, (CONCAT(OS.STTR_ADDR, ' ', OS.STTR_DADDR)) AS STTR_WHOL_ADDR /* 진술자 전체 주소 */
, (SELECT GET_CODE_NM('FIM033', OS.OPNN_SBMSN_SE_CD) FROM DUAL) AS OPNN_SBMSN_SE_NM /* 의견 제출 구분 명 */
, (SELECT GET_CODE_NM('FIM031', OS.OPNN_SBMSN_STTS_CD) FROM DUAL) AS OPNN_SBMSN_STTS_NM /* 의견 제출 상태 명 */
FROM TB_CRDN C
LEFT OUTER JOIN TB_OPNN_SBMSN OS ON (C.CRDN_ID = OS.CRDN_ID AND OS.DEL_YN = 'N')
, C.CRDN_ID /* 단속 ID */
, C.SGG_CD /* 시군구 코드 */
, C.TASK_SE_CD /* 업무 구분 코드 */
, C.VHRNO /* 차량번호 */
, C.CRDN_STDG_NM /* 단속 법정동 명 */
, C.CRDN_ROAD_NM /* 단속 도로 명 */
, C.CRDN_PLC /* 단속 장소 */
, C.FFNLG_CRDN_AMT /* 과태료 단속 금액 */
, C.FFNLG_AMT /* 과태료 금액 */
, C.CRDN_STTS_CD /* 단속 상태 코드 */
, C.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */
, (SELECT GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM /* 업무 구분 명 */
, (SELECT GET_MASK_DATETIME(C.CRDN_YMD, '-', C.CRDN_TM, ':') FROM DUAL) AS CRDN_YMD_TM_MASK /* 단속 일시 마스크 */
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, DLBR_MBR_JBGD1 /* 심의 회원 직급1 */
, DLBR_MBR_NM1 /* 심의 회원 명1 */
, DLBR_MBR_JBGD2 /* 심의 회원 직급2 */
, DLBR_MBR_NM2 /* 심의 회원 명2 */
, DLBR_MBR_JBGD3 /* 심의 회원 직급3 */
, DLBR_MBR_NM3 /* 심의 회원 명3 */
, DLBR_MBR_JBGD4 /* 심의 회원 직급4 */
, DLBR_MBR_NM4 /* 심의 회원 명4 */
, DLBR_MBR_JBGD5 /* 심의 회원 직급5 */
, DLBR_MBR_NM5 /* 심의 회원 명5 */
, DLBR_MBR_JBGD6 /* 심의 회원 직급6 */
, DLBR_MBR_NM6 /* 심의 회원 명6 */
, DLBR_MBR_JBGD7 /* 심의 회원 직급7 */
, DLBR_MBR_NM7 /* 심의 회원 명7 */
FROM TB_OPNN_SBMSN OS
LEFT OUTER JOIN TB_CRDN C ON (OS.CRDN_ID = C.CRDN_ID)
LEFT OUTER JOIN TB_OPNN_DLBR_MBR ODM ON (C.SGG_CD = ODM.SGG_CD AND C.TASK_SE_CD = ODM.TASK_SE_CD)
WHERE OS.OPNN_ID IN (
<foreach collection="opnnIDs" item="opnnId" separator=","> #{opnnId} </foreach>
)

@ -407,7 +407,7 @@
let btnTitle = $("#btnRemove--${pageName}").attr("title");
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, btnTitle);
dialog.alert(showMessage);
dialog.alert(showMessage); // 메시지 출력
if (resp.saved) {
refreshList${pageName}(); // 자료 재조회
@ -547,11 +547,9 @@
if (selected.length < 1) return;
// 서버에 전송할 data(파라미터) 생성
let params = {
callPurpose : "remove" // 호출 용도
, delRsn : obj.reason // 삭제 사유
};
let params = {};
params[${pageName}Control.prefixed("IDs")] = selected.join(","); // IDs
params.delRsn = obj.reason; // 삭제 사유
${pageName}Control.remove(params);
}
@ -606,10 +604,16 @@
return;
}
// DataTables(그리드) 타이틀
let headerInfo = $("#theadTr--${pageName} th").not(".dummy-th").not(":eq(0)").getHeaderInfo();
${pageName}Control.query.excelTitle = headerInfo.excelTitle;
${pageName}Control.query.excelTitleWidth = headerInfo.excelTitleWidth;
// DataTables(그리드) 데이터
let colDefs = getColDefs($("#theadTr--${pageName} th").not(".dummy-th").not(":eq(0)")
, $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td").not(":eq(0)"));
${pageName}Control.query.colDefs = colDefs;
${pageName}Control.download();
}
@ -734,7 +738,7 @@
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url( taskSeCd + ${pageName}PrefixUrl + "/010/list.do"); // 조회
${pageName}Control.urls.remove = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/010/removes.do"); // 삭제
${pageName}Control.urls.remove = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/010/remove.do"); // 삭제
${pageName}Control.urls.getInfo = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/020/info.do"); // 수정
${pageName}Control.urls.getDlbrInfo = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/030/info.do"); // 심의
}

@ -18,15 +18,15 @@
<input type="hidden" id="opnnId--${pageName}" name="opnnId" data-map="OPNN_ID" />
<div class="row g-1">
<!-- 차량번호 -->
<!-- 단속일시 -->
<div class="col-md-4">
<label for="vhrno--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">차량번호</label>
<input type="text" class="form-control w-35" id="vhrno--${pageName}" name="vhrno" data-map="VHRNO" />
<label for="crdnYmdTm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">단속일시</label>
<input type="text" class="form-control w-50" id="crdnYmdTm--${pageName}" name="crdnYmdTm" data-map="CRDN_YMD_TM" data-fmt-type="dt" />
</div>
<!-- 단속일시 -->
<!-- 차량번호 -->
<div class="col-md-4">
<label for="crdnYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">단속일시</label>
<input type="text" class="form-control w-30" id="crdnYmd--${pageName}" name="crdnYmd" data-map="CRDN_YMD" data-fmt-type="day" />
<label for="vhrno--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">차량번호</label>
<input type="text" class="form-control w-40" id="vhrno--${pageName}" name="vhrno" data-map="VHRNO" />
</div>
<!-- 납부자 명 -->
<div class="col-md-4">
@ -36,7 +36,7 @@
<!-- 접수 번호 -->
<div class="col-md-4">
<label for="rcptNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">접수번호</label>
<input type="text" class="form-control w-35" id="rcptNo--${pageName}" name="rcptNo" data-map="RCPT_NO" />
<input type="text" class="form-control w-40" id="rcptNo--${pageName}" name="rcptNo" data-map="RCPT_NO" />
</div>
<!-- 접수 일자 -->
<div class="col-md-4">
@ -66,7 +66,7 @@
<!-- 진술자 생년월일 -->
<div class="col-md-4">
<label for="sttrBrdt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">생년월일</label>
<input type="text" class="form-control w-25" id="sttrBrdt--${pageName}" name="sttrBrdt" data-map="STTR_BRDT" placeholder="YY-MM-DD" />
<input type="text" class="form-control w-30" id="sttrBrdt--${pageName}" name="sttrBrdt" data-map="STTR_BRDT" placeholder="YYMMDD" />
</div>
<!-- 소유주 관계 구분 코드 -->
<div class="col-md-4">
@ -81,7 +81,7 @@
<!-- 진술자 주소 --><!-- 진술자 우편번호 -->
<div class="col-md-12">
<label for="sttrAddr--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">주소</label>
<input type="text" class="form-control w-75" id="sttrAddr--${pageName}" name="sttrAddr" data-map="STTR_ADDR" />
<input type="text" class="form-control w-70" id="sttrAddr--${pageName}" name="sttrAddr" data-map="STTR_ADDR" />
<input type="text" class="form-control w-px-75" id="sttrZip--${pageName}" name="sttrZip" data-map="STTR_ZIP" />
<button type="button" class="btn btn-sm btn-outline-dark" id="btnZip--${pageName}" title="우편번호 검색" onclick="fnZip${pageName}();">
검색
@ -90,25 +90,25 @@
<!-- 진술자 상세주소 -->
<div class="col-md-12">
<label for="sttrDaddr--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">상세주소</label>
<input type="text" class="form-control w-87" id="sttrDaddr--${pageName}" name="sttrDaddr" data-map="STTR_DADDR" />
<input type="text" class="form-control w-85" id="sttrDaddr--${pageName}" name="sttrDaddr" data-map="STTR_DADDR" />
</div>
<!-- 진술자 연락처 -->
<div class="col-md-4">
<label for="sttrCttpc--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">연락처</label>
<input type="text" class="form-control w-35" id="sttrCttpc--${pageName}" name="sttrCttpc" data-map="STTR_CTTPC" />
<input type="text" class="form-control w-45" id="sttrCttpc--${pageName}" name="sttrCttpc" data-map="STTR_CTTPC" />
</div>
<!-- 진술자 이메일 -->
<div class="col-md-8">
<label for="sttrEml--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">이메일</label>
<input type="text" class="form-control w-35" id="sttrEml--${pageName}" name="sttrEml" data-map="STTR_EML" />
<input type="text" class="form-control w-40" id="sttrEml--${pageName}" name="sttrEml" data-map="STTR_EML" />
</div>
<!-- 의견 제출 내용 -->
<div class="col-md-12">
<label for="opnnSbmsnCn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">의견제출내용</label>
<textarea type="text" class="form-control w-87" id="opnnSbmsnCn--${pageName}" name="opnnSbmsnCn" data-map="OPNN_SBMSN_CN" rows="5" data-maxlengthb="4000"></textarea>
<textarea type="text" class="form-control w-85" id="opnnSbmsnCn--${pageName}" name="opnnSbmsnCn" data-map="OPNN_SBMSN_CN" rows="5" data-maxlengthb="4000"></textarea>
</div>
<!-- 의견 제출 구분 코드 -->
<div class="col-md-4">
<div class="col-md-12">
<label for="opnnSbmsnSeCd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">의견제출구분</label>
<select class="form-select" id="opnnSbmsnSeCd--${pageName}" name="opnnSbmsnSeCd" data-map="OPNN_SBMSN_SE_CD" required>
<option value="">선택하세요</option>
@ -118,14 +118,14 @@
</select>
</div>
<!-- 의견 제출 요지 -->
<div class="col-md-8">
<div class="col-md-12">
<label for="opnnSbmsnGist--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">의견제출요지</label>
<input type="text" class="form-control w-80" id="opnnSbmsnGist--${pageName}" name="opnnSbmsnGist" data-map="OPNN_SBMSN_GIST" data-maxlengthb="300" />
<input type="text" class="form-control w-85" id="opnnSbmsnGist--${pageName}" name="opnnSbmsnGist" data-map="OPNN_SBMSN_GIST" data-maxlengthb="300" />
</div>
<!-- 담당자 검토 의견 -->
<div class="col-md-12">
<label for="picRvwOpnn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">검토의견</label>
<textarea class="form-control w-87" id="picRvwOpnn--${pageName}" name="picRvwOpnn" data-map="PIC_RVW_OPNN" rows="3" data-maxlengthb="1000">
<textarea class="form-control w-85" id="picRvwOpnn--${pageName}" name="picRvwOpnn" data-map="PIC_RVW_OPNN" rows="3" data-maxlengthb="1000">
</textarea>
</div>
</div>
@ -139,7 +139,7 @@
</form>
<div class="row g-1">
<div class="col-md-12">
<button type="button" class="btn btn-blue - w-px-120" id="btnAddFile--${pageName}" title="첨부파일 추가">파일추가</button>
<button type="button" class="btn btn-blue w-px-120" id="btnAddFile--${pageName}" title="첨부파일 추가">파일추가</button>
</div>
</div>
<!-- 첨부 파일 테이블 -->
@ -464,7 +464,7 @@
// 기본 데이터 설정
setFormData${pageName} = () => {
$("#vhrno--${pageName}").prop("readonly", true); // 차량번호
$("#crdnYmd--${pageName}").prop("readonly", true); // 단속 일자
$("#crdnYmdTm--${pageName}").prop("readonly", true); // 단속 일자
$("#rtpyrNm--${pageName}").prop("readonly", true); // 납부자 명
if (${pageName}CallPurpose == "view") {

@ -21,7 +21,7 @@
<!-- 접수 번호 -->
<div class="col-md-6">
<label for="rcptNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">접수번호</label>
<input type="text" class="form-control w-35" id="rcptNo--${pageName}" name="rcptNo" data-map="RCPT_NO" readonly />
<input type="text" class="form-control w-30" id="rcptNo--${pageName}" name="rcptNo" data-map="RCPT_NO" readonly />
</div>
<!-- 접수 일자 -->
<div class="col-md-6">
@ -31,7 +31,7 @@
<!-- 진술자 이름 -->
<div class="col-md-6">
<label for="sttrNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">성명</label>
<input type="text" class="form-control w-35" id="sttrNm--${pageName}" name="sttrNm" data-map="STTR_NM" readonly />
<input type="text" class="form-control w-30" id="sttrNm--${pageName}" name="sttrNm" data-map="STTR_NM" readonly />
</div>
<!-- 의견 제출 구분 코드 -->
<div class="col-md-6">
@ -46,12 +46,12 @@
<!-- 담당자 검토 의견 -->
<div class="col-md-12">
<label for="picRvwOpnn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">검토의견</label>
<textarea class="form-control w-85" id="picRvwOpnn--${pageName}" name="picRvwOpnn" data-map="PIC_RVW_OPNN" rows="5" data-maxlengthb="1000"></textarea>
<textarea class="form-control w-85" id="picRvwOpnn--${pageName}" name="picRvwOpnn" data-map="PIC_RVW_OPNN" rows="3" data-maxlengthb="1000"></textarea>
</div>
<!-- 문서 번호 -->
<div class="col-md-12">
<div class="col-md-6">
<label for="docNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">문서번호</label>
<input type="text" class="form-control w-25" id="docNo--${pageName}" name="docNo" data-map="DOC_NO" />
<input type="text" class="form-control w-40" id="docNo--${pageName}" name="docNo" data-map="DOC_NO" />
</div>
<!-- 통보 구분 코드 -->
<div class="col-md-6">
@ -73,6 +73,15 @@
</c:forEach>
</select>
</div>
<!-- 답변 일시 -->
<div class="col-md-6">
<label for="ansYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">답변일시</label>
<input type="text" class="form-control form-date" id="ansYmd--${pageName}" name="ansYmd" data-map="ANS_YMD"
data-fmt-type="day" maxlength="10" required />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
<input type="text" class="form-control form-time" id="ansTm--${pageName}" name="ansTm" data-map="ANS_TM"
data-fmt-type="time" maxlength="8" placeholder="시:분:초" required />
</div>
<!-- 감경 사유 코드 -->
<div class="col-md-6" id="divRductRsnCd--${pageName}">
<label for="rductRsnCd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">감경사유</label>
@ -87,19 +96,6 @@
<label for="rductAmt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">감경금액</label>
<input type="text" class="form-control w-30 text-end" id="rductAmt--${pageName}" name="rductAmt" data-map="RDUCT_AMT" readonly />
</div>
<!-- 답변 일자 -->
<div class="col-md-6">
<label for="ansYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">답변일자</label>
<input type="text" class="form-control form-date" id="ansYmd--${pageName}" name="ansYmd" data-map="ANS_YMD"
data-fmt-type="day" maxlength="10" required />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</div>
<!-- 답변 시간 -->
<div class="col-md-6">
<label for="ansTm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">답변시간</label>
<input type="text" class="form-control form-time" id="ansTm--${pageName}" name="ansTm" data-map="ANS_TM"
data-fmt-type="time" maxlength="8" placeholder="시:분:초" required />
</div>
<!-- 답변 내용 -->
<div class="col-md-12">
<label for="ansCn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">답변내용</label>
@ -212,7 +208,6 @@
if (opnnSbmsnSttsCd == "04" && rductRsn == "00") {
dialog.alert("감경 사유를 다시 선택하여 주시기 바랍니다.");
return;
}
@ -284,6 +279,9 @@
if ($("#ansTm--${pageName}").val() == "" || $("#ansTm--${pageName}").val() == "::") {
$("#ansTm--${pageName}").val(new Date().toTimeString().split(" ")[0]); // "09:51:35 GMT+0900 (한국 표준시)"의 형식에서 공백을 기준으로 잘라 시간 부분만 가져와줍니다.
}
// 과태료 감경사유, 감경금액
fnChangeOpnnSbmsnSttsCd($("#opnnSbmsnSttsCd--${pageName}").val());
}
/**************************************************************************
@ -301,8 +299,6 @@
// 화면 데이터 셋팅
setFormData${pageName}();
fnChangeOpnnSbmsnSttsCd($("#opnnSbmsnSttsCd--${pageName}").val());
});
</script>

Loading…
Cancel
Save