1. 의견제출 불필요 소스 제거 및 소스 수정.

main
jjh 6 months ago
parent 9442935123
commit f7087d6247

@ -46,7 +46,7 @@ public class DlbrDecsnList extends HWPFormat {
writer.setValue("접수일", one.string("RCPT_YMD_MASK")); writer.setValue("접수일", one.string("RCPT_YMD_MASK"));
writer.setValue("위반정보", one.string("TASK_SE_NM")); writer.setValue("위반정보", one.string("TASK_SE_NM"));
writer.setValue("진술자명", one.string("STTR_NM")); writer.setValue("진술자명", one.string("STTR_NM"));
writer.setValue("진술자생년월일", one.string("STTR_BRDT_FORMAT")); writer.setValue("진술자생년월일", one.string("STTR_BRDT_MASK"));
writer.setValue("진술자연락처", one.string("STTR_CTTPC")); writer.setValue("진술자연락처", one.string("STTR_CTTPC"));
writer.setValue("소유주관계", one.string("OWNR_REL_NM")); writer.setValue("소유주관계", one.string("OWNR_REL_NM"));
writer.setValue("진술자주소", one.string("STTR_WHOL_ADDR")); writer.setValue("진술자주소", one.string("STTR_WHOL_ADDR"));

@ -77,7 +77,7 @@ public interface OpnnSbmsnMapper extends AbstractMapper {
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
default boolean insert(OpnnSbmsn opnnSbmsn) { default boolean insertOpnnSbmsn(OpnnSbmsn opnnSbmsn) {
return opnnSbmsn != null && insertOpnnSbmsn(params().set("opnnSbmsn", opnnSbmsn)) == 1; return opnnSbmsn != null && insertOpnnSbmsn(params().set("opnnSbmsn", opnnSbmsn)) == 1;
} }
@ -97,7 +97,7 @@ public interface OpnnSbmsnMapper extends AbstractMapper {
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
default boolean update(OpnnSbmsn opnnSbmsn) { default boolean updateOpnnSbmsn(OpnnSbmsn opnnSbmsn) {
return opnnSbmsn != null && updateOpnnSbmsn(params().set("opnnSbmsn", opnnSbmsn)) == 1; return opnnSbmsn != null && updateOpnnSbmsn(params().set("opnnSbmsn", opnnSbmsn)) == 1;
} }
@ -108,7 +108,7 @@ public interface OpnnSbmsnMapper extends AbstractMapper {
* </ul> * </ul>
* @return * @return
*/ */
int updateAnsSttsCd(Map<String, Object> params); int updateOpnnSbmsnAnswer(Map<String, Object> params);
/** () . /** () .
* @param opnnSbmsn * @param opnnSbmsn
@ -118,7 +118,7 @@ public interface OpnnSbmsnMapper extends AbstractMapper {
* </ul> * </ul>
*/ */
default boolean updateOpnnSbmsnAnswer(OpnnSbmsn opnnSbmsn) { default boolean updateOpnnSbmsnAnswer(OpnnSbmsn opnnSbmsn) {
return opnnSbmsn != null && updateAnsSttsCd(params().set("opnnSbmsn", opnnSbmsn)) == 1; return opnnSbmsn != null && updateOpnnSbmsnAnswer(params().set("opnnSbmsn", opnnSbmsn)) == 1;
} }
/** . /** .
@ -137,16 +137,10 @@ public interface OpnnSbmsnMapper extends AbstractMapper {
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
default boolean delete(OpnnSbmsn opnnSbmsn) { default boolean deleteOpnnSbmsn(OpnnSbmsn opnnSbmsn) {
return opnnSbmsn != null && deleteOpnnSbmsn(params().set("opnnSbmsn", opnnSbmsn)) == 1; return opnnSbmsn != null && deleteOpnnSbmsn(params().set("opnnSbmsn", opnnSbmsn)) == 1;
} }
/** ID .
* @param crdnId ID
* @return
*/
DataObject selectCrdnInfo(String crdnId);
/** . /** .
* @param params * @param params
* <ul><li>"crdn" - </li> * <ul><li>"crdn" - </li>
@ -156,7 +150,7 @@ public interface OpnnSbmsnMapper extends AbstractMapper {
*/ */
int updateCrdnOpnnSbmsnYn(Map<String, Object> params); int updateCrdnOpnnSbmsnYn(Map<String, Object> params);
default boolean updateCrdn(Crdn crdn) { default boolean updateCrdnOpnnSbmsnYn(Crdn crdn) {
return crdn != null && updateCrdnOpnnSbmsnYn(params().set("crdn", crdn)) == 1; return crdn != null && updateCrdnOpnnSbmsnYn(params().set("crdn", crdn)) == 1;
} }

@ -31,12 +31,18 @@ public interface OpnnSbmsnService {
*/ */
List<DataObject> getOpnnSbmsns(LevyExclQuery req); List<DataObject> getOpnnSbmsns(LevyExclQuery req);
/** ID .<br /> /** ID .
* @param req * @param req
* @return * @return
*/ */
DataObject getOpnnSbmsnInfo(LevyExclQuery req); DataObject getOpnnSbmsnInfo(LevyExclQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getOpnnSbmsnDlbrDecsns(LevyExclQuery req);
/** . /** .
* @param opnnSbmsn * @param opnnSbmsn
* @return * @return
@ -73,5 +79,4 @@ public interface OpnnSbmsnService {
*/ */
String removeOpnnSbmsn(OpnnSbmsn opnnSbmsn); String removeOpnnSbmsn(OpnnSbmsn opnnSbmsn);
} }

@ -33,19 +33,19 @@ import cokr.xit.foundation.data.DataObject;
public class LevyExclBean extends AbstractComponent { public class LevyExclBean extends AbstractComponent {
/** 부과제외 대장 정보 DAO */ /** 부과제외 대장 정보 DAO */
@Resource(name = "levyExclMapper") @Resource(name="levyExclMapper")
private LevyExclMapper levyExclMapper; private LevyExclMapper levyExclMapper;
/** 단속 상태 이력 정보 Bean */ /** 단속 상태 이력 정보 Bean */
@Resource(name = "crdnSttsHstryBean") @Resource(name="crdnSttsHstryBean")
private CrdnSttsHstryBean crdnSttsHstryBean; private CrdnSttsHstryBean crdnSttsHstryBean;
/** 부과 대장 정보 DAO */ /** 부과 대장 정보 DAO */
@Resource(name = "levyMapper") @Resource(name="levyMapper")
private LevyMapper levyMapper; private LevyMapper levyMapper;
/** 감액 대장 정보 Bean */ /** 감액 대장 정보 Bean */
@Resource(name = "rdcamtBean") @Resource(name="rdcamtBean")
private RdcamtBean rdcamtBean; private RdcamtBean rdcamtBean;
/** . /** .
@ -78,6 +78,7 @@ public class LevyExclBean extends AbstractComponent {
if (req.getDelYn() == null) { if (req.getDelYn() == null) {
req.setDelYn("N"); req.setDelYn("N");
} }
// 정렬 확인
if (req.getOrderBy() == null) { if (req.getOrderBy() == null) {
req.setOrderBy("LE.LEVY_EXCL_ID DESC"); req.setOrderBy("LE.LEVY_EXCL_ID DESC");
} }
@ -85,16 +86,16 @@ public class LevyExclBean extends AbstractComponent {
return levyExclMapper.selectLevyExcls(req); return levyExclMapper.selectLevyExcls(req);
} }
/** ID .<br /> /** ID .
* @param req * @param req
* @return * @return
*/ */
public DataObject getLevyExclInfo(LevyExclQuery req) { public DataObject getLevyExclInfo(LevyExclQuery req) {
DataObject info = levyExclMapper.selectLevyExclInfo(req); DataObject info = levyExclMapper.selectLevyExclInfo(req);
// 신규 등록 // 신규 부과제외 등록일 경우 부과제외 구분코드를 입력한다.
if (req.getCallPurpose().equals("create")) { if (req.getCallPurpose().equals("create")) {
info.set("LEVY_EXCL_SE_CD", req.getLevyExclSeCd()); // 부과제외 구분 코드 info.set("LEVY_EXCL_SE_CD", req.getLevyExclSeCd());
} }
return info; return info;
@ -111,54 +112,45 @@ public class LevyExclBean extends AbstractComponent {
// 변수 선언 // 변수 선언
boolean rtnScs = false; // DB 처리 결과 boolean rtnScs = false; // DB 처리 결과
String rtnMsg = ""; // 처리 결과 메시지 String rtnMsg = ""; // 처리 결과 메시지
String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_STTS_CD)
// 단속 ID로 단속, 부과제외 정보 조회 // 단속 ID로 단속, 부과제외 정보 조회
DataObject levyExclInfo = levyExclMapper.selectLevyExclInfo(new LevyExclQuery().setCrdnId(levyExcl.getCrdnId())); DataObject crdnLevyExclInfo = levyExclMapper.selectLevyExclInfo(new LevyExclQuery().setCrdnId(levyExcl.getCrdnId())
.setDelYn("N"));
// 조회된 자료 정보로 등록 가능한지 검증 // 조회된 자료 정보로 등록 가능한지 검증
if (!levyExclInfo.string("LEVY_EXCL_ID").equals("")) { // 부과제외 ID가 있다면 이미 부과제외 자료가 존재하므로 종료.. if (!crdnLevyExclInfo.string("LEVY_EXCL_ID").equals("")) { // 부과제외 ID가 있다면 이미 부과제외 자료가 존재하므로 종료..
rtnMsg = "[F] 작업중 이미 등록된 부과제외 자료가 존재합니다."; rtnMsg = "[F] 작업중 이미 등록된 부과제외 자료가 존재합니다.";
return rtnMsg; return rtnMsg;
} }
if (levyExcl.getLevyExclSeCd().contains("1,2")) { // 비부과(서손), 계고 if (levyExcl.getLevyExclSeCd().contains("1,2")) { // 비부과(서손), 계고
if (levyExclInfo.number("CRDN_STTS_CD").intValue() >= 51) { // 단속상태코드가 부과(51) 보다 크다면, 비부과 또는 계고 등록을 할 수 없다. if (crdnLevyExclInfo.number("CRDN_STTS_CD").intValue() >= 51) { // 단속상태코드가 부과(51) 보다 크다면, 비부과 또는 계고 등록을 할 수 없다.
rtnMsg = "[F] 작업중 오류가 발생하였습니다.<br>현재 자료의 단속상태가 " + levyExclInfo.string("CRDN_STTS_NM") + " 상태 입니다."; rtnMsg = "[F] 작업중 오류가 발생하였습니다.<br>현재 자료의 단속상태가 " + crdnLevyExclInfo.string("CRDN_STTS_NM") + " 상태 입니다.";
return rtnMsg; return rtnMsg;
} }
} else if (levyExcl.getLevyExclSeCd().equals("3")) { // 부과취소 } else if (levyExcl.getLevyExclSeCd().equals("3")) { // 부과취소
if (levyExclInfo.number("CRDN_STTS_CD").intValue() < 51) { // 단속상태코드가 부과(51) 보다 작다면, 전액감액 등록 할 수 없다. if (crdnLevyExclInfo.number("CRDN_STTS_CD").intValue() < 51) { // 단속상태코드가 부과(51) 보다 작다면, 전액감액 등록 할 수 없다.
rtnMsg = "[F] 작업중 오류가 발생하였습니다.<br>현재 자료의 단속상태가 " + levyExclInfo.string("CRDN_STTS_NM") + " 상태 입니다."; rtnMsg = "[F] 작업중 오류가 발생하였습니다.<br>현재 자료의 단속상태가 " + crdnLevyExclInfo.string("CRDN_STTS_NM") + " 상태 입니다.";
return rtnMsg; return rtnMsg;
} }
} }
// 단속 민원(TB_CRDN_CVLCPT) 민원 처리 확인 // 단속 민원(TB_CRDN_CVLCPT) 민원 처리 확인
if (!levyExclInfo.string("CVLCPT_LINK_ID").equals("")) { if (!crdnLevyExclInfo.string("CVLCPT_LINK_ID").equals("")) {
if (levyExclInfo.string("CVLCPT_PRCS_CD").equals("00")) { if (crdnLevyExclInfo.string("CVLCPT_PRCS_CD").equals("00")) {
rtnMsg = "[F] 작업중 단속 민원 자료가 처리 되지 않았습니다.<br>단속 민원 업무를 먼저 처리 하시기 바랍니다.<br>"; rtnMsg = "[F] 작업중 단속 민원 자료가 처리 되지 않았습니다.<br>단속 민원 업무를 먼저 처리 하시기 바랍니다.<br>";
return rtnMsg; return rtnMsg;
} }
} }
// 단속상태코드 설정
if (levyExcl.getLevyExclSeCd().equals("1")) { // 비부과
newCrdnSttsCd = "81"; // 비부과(서손)
} else if (levyExcl.getLevyExclSeCd().equals("2")) { // 계고
newCrdnSttsCd = "83"; // 계고
} else if (levyExcl.getLevyExclSeCd().equals("3")) { // 부과취소(전액감액)
newCrdnSttsCd = "80"; // 부과취소
}
// 부과취소(전액감액)일 경우 부과(TB_LEVY)에 감액금액 입력이 필요.. // 부과취소(전액감액)일 경우 부과(TB_LEVY)에 감액금액 입력이 필요..
if (levyExcl.getLevyExclSeCd().equals("3")) { if (levyExcl.getLevyExclSeCd().equals("3")) {
if (levyExclInfo.string("LEVY_ID").equals("")) { if (crdnLevyExclInfo.string("LEVY_ID").equals("")) {
rtnMsg = "[F] 작업 중 부과 자료가 존재하지 않습니다.<br>비부과로 처리 하시기 바랍니다.<br>"; rtnMsg = "[F] 작업 중 부과 자료가 존재하지 않습니다.<br>비부과로 처리 하시기 바랍니다.<br>";
return rtnMsg; return rtnMsg;
} }
// 감액(TB_RDCAMT) 등록 // 감액(TB_RDCAMT) 등록
Rdcamt rdcamt = new Rdcamt(); Rdcamt rdcamt = new Rdcamt();
rdcamt.setLevyId(levyExclInfo.string("LEVY_ID")); // 부과 ID rdcamt.setLevyId(crdnLevyExclInfo.string("LEVY_ID")); // 부과 ID
rdcamt.setRdcamtYmd(levyExcl.getLevyExclYmd()); // 감액 일자 rdcamt.setRdcamtYmd(levyExcl.getLevyExclYmd()); // 감액 일자
rdcamt.setRdcamtSeCd("02"); // 감액 구분 코드 FIM085 - 02:부과취소 rdcamt.setRdcamtSeCd("02"); // 감액 구분 코드 FIM085 - 02:부과취소
rdcamt.setRdcamtRsnCd(levyExcl.getLevyExclRsnCd()); // 감액 사유 코드 rdcamt.setRdcamtRsnCd(levyExcl.getLevyExclRsnCd()); // 감액 사유 코드
@ -175,15 +167,25 @@ public class LevyExclBean extends AbstractComponent {
throw new RuntimeException("부과제외 정보 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("부과제외 정보 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
} }
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_STTS_CD)
if (levyExcl.getLevyExclSeCd().equals("1")) { // 비부과
newCrdnSttsCd = "81"; // 비부과(서손)
} else if (levyExcl.getLevyExclSeCd().equals("2")) { // 계고
newCrdnSttsCd = "83"; // 계고
} else if (levyExcl.getLevyExclSeCd().equals("3")) { // 부과취소(전액감액)
newCrdnSttsCd = "80"; // 부과취소
}
// 단속상태이력(TB_CRDN_STTS_HSTRY) // 단속상태이력(TB_CRDN_STTS_HSTRY)
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(levyExclInfo.string("CRDN_ID")); crdnSttsHstry.setCrdnId(crdnLevyExclInfo.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(levyExclInfo.string("CRDN_STTS_CD")); crdnSttsHstry.setBfrSttsCd(crdnLevyExclInfo.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(levyExclInfo.string("CRDN_STTS_CHG_DT")); crdnSttsHstry.setBfrSttsChgDt(crdnLevyExclInfo.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd); crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd);
crdnSttsHstry.setTaskDtlId(levyExcl.getLevyExclId()); crdnSttsHstry.setTaskDtlId(levyExcl.getLevyExclId());
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!rtnScs) { if (!rtnScs) {
throw new RuntimeException("부과제외 등록 작업 중 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("부과제외 등록 작업 중 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback

@ -36,7 +36,7 @@ import cokr.xit.foundation.data.DataObject;
public class OpnnSbmsnBean extends AbstractComponent { public class OpnnSbmsnBean extends AbstractComponent {
/** 의견제출 대장 정보 DAO */ /** 의견제출 대장 정보 DAO */
@Resource(name = "opnnSbmsnMapper") @Resource(name="opnnSbmsnMapper")
private OpnnSbmsnMapper opnnSbmsnMapper; private OpnnSbmsnMapper opnnSbmsnMapper;
/** 첨부파일 Bean */ /** 첨부파일 Bean */
@ -44,11 +44,11 @@ public class OpnnSbmsnBean extends AbstractComponent {
private FileBean fileBean; private FileBean fileBean;
/** 단속 상태 이력 정보 Bean */ /** 단속 상태 이력 정보 Bean */
@Resource(name = "crdnSttsHstryBean") @Resource(name="crdnSttsHstryBean")
private CrdnSttsHstryBean crdnSttsHstryBean; private CrdnSttsHstryBean crdnSttsHstryBean;
/** 과태료 감경 대장 정보 Bean */ /** 과태료 감경 대장 정보 Bean */
@Resource(name = "rductBean") @Resource(name="rductBean")
private RductBean rductBean; private RductBean rductBean;
/** . /** .
@ -77,9 +77,11 @@ public class OpnnSbmsnBean extends AbstractComponent {
* @return * @return
*/ */
public List<DataObject> getOpnnSbmsns(LevyExclQuery req) { public List<DataObject> getOpnnSbmsns(LevyExclQuery req) {
// 삭제 여부 확인
if (req.getDelYn() == null) { if (req.getDelYn() == null) {
req.setDelYn("N"); req.setDelYn("N");
} }
// 정렬 확인
if (req.getOrderBy() == null) { if (req.getOrderBy() == null) {
req.setOrderBy("OS.OPNN_ID DESC"); req.setOrderBy("OS.OPNN_ID DESC");
} }
@ -87,20 +89,12 @@ public class OpnnSbmsnBean extends AbstractComponent {
return opnnSbmsnMapper.selectOpnnSbmsns(req); return opnnSbmsnMapper.selectOpnnSbmsns(req);
} }
/** ID .<br /> /** ID .
* @param req * @param req
* @return * @return
*/ */
public DataObject getOpnnSbmsnInfo(LevyExclQuery req) { public DataObject getOpnnSbmsnInfo(LevyExclQuery req) {
DataObject opnnSbmsnInfo = new DataObject(); return opnnSbmsnMapper.selectOpnnSbmsnInfo(req);
if (req.getCallPurpose().equals("create")) {
opnnSbmsnInfo = opnnSbmsnMapper.selectCrdnInfo(req.getCrdnId());
} else {
opnnSbmsnInfo = opnnSbmsnMapper.selectOpnnSbmsnInfo(req);
}
return opnnSbmsnInfo;
} }
/** . /** .
@ -108,6 +102,7 @@ public class OpnnSbmsnBean extends AbstractComponent {
* @return * @return
*/ */
public List<DataObject> getOpnnSbmsnDlbrDecsns(LevyExclQuery req) { public List<DataObject> getOpnnSbmsnDlbrDecsns(LevyExclQuery req) {
// 정렬 확인
if (req.getOrderBy() == null) { if (req.getOrderBy() == null) {
req.setOrderBy("OS.OPNN_ID DESC"); req.setOrderBy("OS.OPNN_ID DESC");
} }
@ -124,27 +119,28 @@ public class OpnnSbmsnBean extends AbstractComponent {
*/ */
public String createOpnnSbmsn(OpnnSbmsn opnnSbmsn, List<FileInfo> fileInfoList) { public String createOpnnSbmsn(OpnnSbmsn opnnSbmsn, List<FileInfo> fileInfoList) {
// 변수 선언 // 변수 선언
boolean rtnScs = false; // DB 처리 결과 boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지 String rtnMsg = ""; // 처리 결과 메시지
// 단속 ID로 단속 정보 조회 // 단속 ID로 단속, 의견제출 정보 조회
DataObject crdnInfo = opnnSbmsnMapper.selectCrdnInfo(opnnSbmsn.getCrdnId()); DataObject crdnOpnnSbmsnInfo = opnnSbmsnMapper.selectOpnnSbmsnInfo(new LevyExclQuery().setCrdnId(opnnSbmsn.getCrdnId())
.setDelYn("N"));
// 의견제출ID가 있다면 이미 자료가 존재하므로 종료.. // 의견제출ID가 있다면 이미 자료가 존재하므로 종료..
if (!crdnInfo.string("OPNN_ID").equals("")) { if (!crdnOpnnSbmsnInfo.string("OPNN_ID").equals("")) {
rtnMsg = "[F] 작업 중 이미 등록된 자료가 존재합니다."; rtnMsg = "[F] 작업 중 이미 등록된 자료가 존재합니다.";
return rtnMsg; return rtnMsg;
} }
// 단속 상태 코드가 부과(51) 보다 크다면, 의견제출 등록을 할 수 없다. 종료.. // 단속 상태 코드가 부과(51) 보다 크다면, 의견제출 등록을 할 수 없다. 종료..
if (crdnInfo.number("CRDN_STTS_CD").intValue() >= 51) { if (crdnOpnnSbmsnInfo.number("CRDN_STTS_CD").intValue() >= 51) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + crdnInfo.string("CRDN_STTS_NM") + " 상태 입니다."; rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + crdnOpnnSbmsnInfo.string("CRDN_STTS_NM") + " 상태 입니다.";
return rtnMsg; return rtnMsg;
} }
// 의견제출 대장을 등록 한다. // 의견제출 대장을 등록 한다.
opnnSbmsn.setOpnnSbmsnSttsCd("00"); // 의견 제출 상태 코드 00:접수 opnnSbmsn.setOpnnSbmsnSttsCd("00"); // 의견 제출 상태 코드 00:접수
rtnScs = opnnSbmsnMapper.insert(opnnSbmsn); // 의견제출 등록 rtnScs = opnnSbmsnMapper.insertOpnnSbmsn(opnnSbmsn); // 의견제출 등록
if (!rtnScs) { if (!rtnScs) {
throw new RuntimeException("의견제출 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("의견제출 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
} }
@ -157,13 +153,12 @@ public class OpnnSbmsnBean extends AbstractComponent {
} }
// 단속 상태 코드가 사전통보중 이전일때만 단속의 상태를 의견제출 중으로 수정 한다. // 단속 상태 코드가 사전통보중 이전일때만 단속의 상태를 의견제출 중으로 수정 한다.
if (crdnInfo.number("CRDN_STTS_CD").intValue() <= 42) { // 사전통보 완료 if (crdnOpnnSbmsnInfo.number("CRDN_STTS_CD").intValue() <= 42) { // 사전통보 완료
// 단속상태이력(TB_CRDN_STTS_HSTRY) // 단속상태이력(TB_CRDN_STTS_HSTRY)
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(crdnOpnnSbmsnInfo.string("CRDN_ID"));
crdnSttsHstry.setCrdnId(crdnInfo.string("CRDN_ID")); crdnSttsHstry.setBfrSttsCd(crdnOpnnSbmsnInfo.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsCd(crdnInfo.string("CRDN_STTS_CD")); crdnSttsHstry.setBfrSttsChgDt(crdnOpnnSbmsnInfo.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setBfrSttsChgDt(crdnInfo.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd("31"); // 의견제출 접수 crdnSttsHstry.setCrdnSttsCd("31"); // 의견제출 접수
crdnSttsHstry.setTaskDtlId(opnnSbmsn.getOpnnId()); crdnSttsHstry.setTaskDtlId(opnnSbmsn.getOpnnId());
@ -176,11 +171,10 @@ public class OpnnSbmsnBean extends AbstractComponent {
// 단속 대장(TB_CRDN) 의견제출여부(OPNN_SBMSN_YN) 정보를 수정 한다. // 단속 대장(TB_CRDN) 의견제출여부(OPNN_SBMSN_YN) 정보를 수정 한다.
Crdn crdn = new Crdn(); Crdn crdn = new Crdn();
crdn.setCrdnId(crdnOpnnSbmsnInfo.string("CRDN_ID"));
crdn.setCrdnId(crdnInfo.string("CRDN_ID"));
crdn.setOpnnSbmsnYn("Y"); crdn.setOpnnSbmsnYn("Y");
rtnScs = opnnSbmsnMapper.updateCrdn(crdn); // 단속 대장 수정 rtnScs = opnnSbmsnMapper.updateCrdnOpnnSbmsnYn(crdn); // 단속 대장 수정
if (!rtnScs) { if (!rtnScs) {
throw new RuntimeException("의견제출 등록 중 단속대장의 의견제출여부 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("의견제출 등록 중 단속대장의 의견제출여부 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
} }
@ -199,15 +193,15 @@ public class OpnnSbmsnBean extends AbstractComponent {
*/ */
public String updateOpnnSbmsn(OpnnSbmsn opnnSbmsn, List<FileInfo> fileInfoList) { public String updateOpnnSbmsn(OpnnSbmsn opnnSbmsn, List<FileInfo> fileInfoList) {
// 변수 선언 // 변수 선언
boolean rtnScs = false; // DB 처리 결과 boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지 String rtnMsg = ""; // 처리 결과 메시지
// 의견제출 첨부파일 등록 // 의견제출 첨부파일 등록
if (fileInfoList != null && !fileInfoList.isEmpty()) { if (fileInfoList != null && !fileInfoList.isEmpty()) {
fileInfoList.forEach(fileInfo -> fileInfo.setInfoType(OpnnSbmsn.INF_TYPE) fileInfoList.forEach(fileInfo -> fileInfo.setInfoType(OpnnSbmsn.INF_TYPE)
.setInfoKey(opnnSbmsn.getOpnnId())); .setInfoKey(opnnSbmsn.getOpnnId()));
fileBean.create(fileInfoList); // 파일 등록 fileBean.create(fileInfoList); // 파일 등록
// 의견제출 ID로 파일(TB_FILE) 정보 조회 // 의견제출 ID로 파일(TB_FILE) 정보 조회
List<DataObject> infoFileList = fileBean.getFileList(new FileQuery().setInfoType(OpnnSbmsn.INF_TYPE) List<DataObject> infoFileList = fileBean.getFileList(new FileQuery().setInfoType(OpnnSbmsn.INF_TYPE)
@ -226,7 +220,7 @@ public class OpnnSbmsnBean extends AbstractComponent {
} }
// 의견제출 대장을 수정 한다. // 의견제출 대장을 수정 한다.
rtnScs = opnnSbmsnMapper.update(opnnSbmsn); rtnScs = opnnSbmsnMapper.updateOpnnSbmsn(opnnSbmsn);
if (!rtnScs) { if (!rtnScs) {
throw new RuntimeException("의견제출 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("의견제출 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
} }
@ -245,9 +239,8 @@ public class OpnnSbmsnBean extends AbstractComponent {
*/ */
public String updateOpnnSbmsnAnswer(OpnnSbmsn opnnSbmsn) { public String updateOpnnSbmsnAnswer(OpnnSbmsn opnnSbmsn) {
// 변수 선언 // 변수 선언
boolean rtnScs = false; // DB 처리 결과 boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지 String rtnMsg = ""; // 처리 결과 메시지
String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_STTS_CD)
// 의견제출(TB_OPNN_SBMSN) 자료 조회 // 의견제출(TB_OPNN_SBMSN) 자료 조회
DataObject opnnSbmsnInfo = opnnSbmsnMapper.selectOpnnSbmsnInfo(new LevyExclQuery().setOpnnId(opnnSbmsn.getOpnnId())); DataObject opnnSbmsnInfo = opnnSbmsnMapper.selectOpnnSbmsnInfo(new LevyExclQuery().setOpnnId(opnnSbmsn.getOpnnId()));
@ -278,26 +271,9 @@ public class OpnnSbmsnBean extends AbstractComponent {
// 조회된 의견제출상태 코드와 수정 할 의견제출상태 코드가 다르다면.. // 조회된 의견제출상태 코드와 수정 할 의견제출상태 코드가 다르다면..
if (!opnnSbmsn.getOpnnSbmsnSttsCd().equals(opnnSbmsnInfo.string("OPNN_SBMSN_STTS_CD"))) { if (!opnnSbmsn.getOpnnSbmsnSttsCd().equals(opnnSbmsnInfo.string("OPNN_SBMSN_STTS_CD"))) {
if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("02")) { // 수용
newCrdnSttsCd = "82"; // 의견제출 수용
} else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("01") || opnnSbmsn.getOpnnSbmsnSttsCd().equals("03")
|| opnnSbmsn.getOpnnSbmsnSttsCd().equals("04") || opnnSbmsn.getOpnnSbmsnSttsCd().equals("05")) { // 미수용, 자진취하, 과태료감경, 심의제외
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 자료 조회
DataObject infoCrdnSttsHstry = crdnSttsHstryBean.getCrdnSttsHstryInfo(opnnSbmsnInfo.string("CRDN_ID"), "31", "Y");
newCrdnSttsCd = infoCrdnSttsHstry.string("BFR_STTS_CD"); // 이전 단속상태코드 유지
} else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("06")) {
newCrdnSttsCd = "87"; // 경찰서 이첩
} else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("00")) {
newCrdnSttsCd = "31";
} else {
throw new RuntimeException("의견제출 심의 처리중 지정되지 않은 심의 상태가 입력되었습니다."); // 예외를 발생시켜서 DB Rollback
}
// 의견제출답변결과(OPNN_SBMSN_STTS_CD)가 과태료감경(04) 이라면.. // 의견제출답변결과(OPNN_SBMSN_STTS_CD)가 과태료감경(04) 이라면..
if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("04")) { if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("04")) {
Rduct rduct = new Rduct(); Rduct rduct = new Rduct();
rduct.setCrdnId(opnnSbmsnInfo.string("CRDN_ID")); rduct.setCrdnId(opnnSbmsnInfo.string("CRDN_ID"));
rduct.setRtpyrId(opnnSbmsnInfo.string("RTPYR_ID")); rduct.setRtpyrId(opnnSbmsnInfo.string("RTPYR_ID"));
rduct.setRductYmd(opnnSbmsn.getAnsYmd()); rduct.setRductYmd(opnnSbmsn.getAnsYmd());
@ -313,7 +289,6 @@ public class OpnnSbmsnBean extends AbstractComponent {
// 의견제출 심의로 인한 과태료 감경 대장인지 확인 // 의견제출 심의로 인한 과태료 감경 대장인지 확인
if (crdnRductInfo != null && crdnRductInfo.string("RDUCT_ETC_CN").contains("의견제출 심의 처리")) { if (crdnRductInfo != null && crdnRductInfo.string("RDUCT_ETC_CN").contains("의견제출 심의 처리")) {
Rduct rduct = new Rduct(); Rduct rduct = new Rduct();
rduct.setRductId(opnnSbmsnInfo.string("RDUCT_ID")); rduct.setRductId(opnnSbmsnInfo.string("RDUCT_ID"));
rduct.setDelRsn("의견제출 심의 처리에 의한 감경 삭제"); rduct.setDelRsn("의견제출 심의 처리에 의한 감경 삭제");
@ -324,9 +299,27 @@ public class OpnnSbmsnBean extends AbstractComponent {
} }
} }
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록 한다.
String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_STTS_CD)
if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("02")) { // 수용
newCrdnSttsCd = "82"; // 의견제출 수용
} else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("01") || opnnSbmsn.getOpnnSbmsnSttsCd().equals("03")
|| opnnSbmsn.getOpnnSbmsnSttsCd().equals("04") || opnnSbmsn.getOpnnSbmsnSttsCd().equals("05")) { // 미수용, 자진취하, 과태료감경, 심의제외
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 자료 조회
DataObject infoCrdnSttsHstry = crdnSttsHstryBean.getCrdnSttsHstryInfo(opnnSbmsnInfo.string("CRDN_ID"), "31", "Y");
newCrdnSttsCd = infoCrdnSttsHstry.string("BFR_STTS_CD"); // 이전 단속상태코드 유지
} else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("06")) {
newCrdnSttsCd = "87"; // 경찰서 이첩
} else if (opnnSbmsn.getOpnnSbmsnSttsCd().equals("00")) {
newCrdnSttsCd = "31";
} else {
throw new RuntimeException("의견제출 심의 처리중 지정되지 않은 심의 상태가 입력되었습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속상태이력(TB_CRDN_STTS_HSTRY) 변경 // 단속상태이력(TB_CRDN_STTS_HSTRY) 변경
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(opnnSbmsnInfo.string("CRDN_ID")); crdnSttsHstry.setCrdnId(opnnSbmsnInfo.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(opnnSbmsnInfo.string("CRDN_STTS_CD")); crdnSttsHstry.setBfrSttsCd(opnnSbmsnInfo.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(opnnSbmsnInfo.string("CRDN_STTS_CHG_DT")); crdnSttsHstry.setBfrSttsChgDt(opnnSbmsnInfo.string("CRDN_STTS_CHG_DT"));
@ -334,7 +327,6 @@ public class OpnnSbmsnBean extends AbstractComponent {
crdnSttsHstry.setTaskDtlId(opnnSbmsn.getOpnnId()); crdnSttsHstry.setTaskDtlId(opnnSbmsn.getOpnnId());
crdnSttsHstry.setEtcCn("의견제출 심의 처리로 인한 단속상태 변경"); crdnSttsHstry.setEtcCn("의견제출 심의 처리로 인한 단속상태 변경");
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록 한다.
rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!rtnScs) { if (!rtnScs) {
throw new RuntimeException("의견제출 심의(답변) 처리 중 단속대장의 단속상태 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("의견제출 심의(답변) 처리 중 단속대장의 단속상태 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
@ -355,8 +347,8 @@ public class OpnnSbmsnBean extends AbstractComponent {
*/ */
public String removeOpnnSbmsn(OpnnSbmsn opnnSbmsn) { public String removeOpnnSbmsn(OpnnSbmsn opnnSbmsn) {
// 변수 선언 // 변수 선언
boolean rtnScs = false; // DB 처리 결과 boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지 String rtnMsg = ""; // 처리 결과 메시지
// 의견제출(TB_OPNN_SBMSN) 정보를 조회한다. // 의견제출(TB_OPNN_SBMSN) 정보를 조회한다.
LevyExclQuery req = new LevyExclQuery(); LevyExclQuery req = new LevyExclQuery();
@ -372,12 +364,12 @@ public class OpnnSbmsnBean extends AbstractComponent {
} }
// 의견제출 상태 코드(OPNN_SBMSN_STTS_CD) 확인.. // 의견제출 상태 코드(OPNN_SBMSN_STTS_CD) 확인..
if (!opnnSbmsnInfo.string("OPNN_SBMSN_STTS_CD").equals("00")) { if (!opnnSbmsnInfo.string("OPNN_SBMSN_STTS_CD").equals("00")) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 의견제출 상태가 " + opnnSbmsnInfo.string("OPNN_SBMSN_STTS_NM") + " 이(가) 아닙니다."; rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 의견제출 상태가 " + opnnSbmsnInfo.string("OPNN_SBMSN_STTS_NM") + " 니다.";
return rtnMsg; return rtnMsg;
} }
// 의견제출(TB_OPNN_SBMSN) 대장을 삭제 한다. // 의견제출(TB_OPNN_SBMSN) 대장을 삭제 한다.
rtnScs = opnnSbmsnMapper.delete(opnnSbmsn); rtnScs = opnnSbmsnMapper.deleteOpnnSbmsn(opnnSbmsn);
if (!rtnScs) { if (!rtnScs) {
throw new RuntimeException("의견제출 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("의견제출 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
} }
@ -421,11 +413,10 @@ public class OpnnSbmsnBean extends AbstractComponent {
if (crdnRductInfo != null && crdnRductInfo.string("RDUCT_ETC_CN").contains("의견제출 심의 처리")) { if (crdnRductInfo != null && crdnRductInfo.string("RDUCT_ETC_CN").contains("의견제출 심의 처리")) {
Rduct rduct = new Rduct(); Rduct rduct = new Rduct();
rduct.setRductId(opnnSbmsnInfo.string("RDUCT_ID")); rduct.setRductId(opnnSbmsnInfo.string("RDUCT_ID"));
rduct.setDelRsn("의견제출 심의 처리에 의한 감경 삭제"); rduct.setDelRsn("의견제출 심의 처리에 의한 감경 삭제");
rtnMsg = rductBean.removeRduct(rduct); // 과태료 감경(TB_RDUCT) 대장 삭제 rtnMsg = rductBean.removeRduct(rduct); // 과태료 감경(TB_RDUCT) 대장 삭제
if (rtnMsg.contains("[F]")) { if (rtnMsg.contains("[F]")) {
throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
} }
@ -437,7 +428,7 @@ public class OpnnSbmsnBean extends AbstractComponent {
crdn.setCrdnId(opnnSbmsnInfo.string("CRDN_ID")); crdn.setCrdnId(opnnSbmsnInfo.string("CRDN_ID"));
crdn.setOpnnSbmsnYn("N"); crdn.setOpnnSbmsnYn("N");
rtnScs = opnnSbmsnMapper.updateCrdn(crdn); // 단속(TB_CRDN) 대장 수정 rtnScs = opnnSbmsnMapper.updateCrdnOpnnSbmsnYn(crdn); // 단속(TB_CRDN) 대장 수정
if (!rtnScs) { if (!rtnScs) {
throw new RuntimeException("의견제출 삭제 중 단속대장의 의견제출여부 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("의견제출 삭제 중 단속대장의 의견제출여부 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
} }

@ -50,6 +50,11 @@ public class OpnnSbmsnServiceBean extends AbstractServiceBean implements OpnnSbm
return opnnSbmsnBean.getOpnnSbmsnInfo(req); return opnnSbmsnBean.getOpnnSbmsnInfo(req);
} }
@Override
public List<DataObject> getOpnnSbmsnDlbrDecsns(LevyExclQuery req) {
return opnnSbmsnBean.getOpnnSbmsnDlbrDecsns(req);
}
@Override @Override
public String createOpnnSbmsn(OpnnSbmsn opnnSbmsn, List<FileInfo> fileInfoList) { public String createOpnnSbmsn(OpnnSbmsn opnnSbmsn, List<FileInfo> fileInfoList) {
return opnnSbmsnBean.createOpnnSbmsn(opnnSbmsn, fileInfoList); return opnnSbmsnBean.createOpnnSbmsn(opnnSbmsn, fileInfoList);
@ -65,43 +70,9 @@ public class OpnnSbmsnServiceBean extends AbstractServiceBean implements OpnnSbm
return opnnSbmsnBean.updateOpnnSbmsnAnswer(opnnSbmsn); return opnnSbmsnBean.updateOpnnSbmsnAnswer(opnnSbmsn);
} }
@Override @Override
public String removeOpnnSbmsn(OpnnSbmsn opnnSbmsn) { public String removeOpnnSbmsn(OpnnSbmsn opnnSbmsn) {
// 변수 선언 return opnnSbmsnBean.removeOpnnSbmsn(opnnSbmsn);
String rtnMsg = "[F] "; // 처리 결과 메시지
// 의견제출 ID 및 의견제출 IDs 확인하여 null이면 종료
if (opnnSbmsn.getOpnnId() == null && opnnSbmsn.getOpnnIds() == null) {
rtnMsg = "[F] 작업 중 선택 자료가 존재하지 않습니다.";
return rtnMsg;
}
// 의견제출 삭제 처리
if (opnnSbmsn.getOpnnId() != null) {
rtnMsg = opnnSbmsnBean.removeOpnnSbmsn(opnnSbmsn);
} else {
// 의견제출 Ids 를 확인하여 건수가 1보다 작다면 종료..
if (opnnSbmsn.getOpnnIds().length < 1) {
rtnMsg = "[F] 작업 중 선택 자료가 존재하지 않습니다.";
return rtnMsg;
}
// 의견제출 IDs 만큼 반복..
for (int iLoop = 0; iLoop < opnnSbmsn.getOpnnIds().length; iLoop++) {
// 부과제외 ID 설정
opnnSbmsn.setOpnnId(opnnSbmsn.getOpnnIds()[iLoop]);
// 부과제외 삭제 호출
rtnMsg = opnnSbmsnBean.removeOpnnSbmsn(opnnSbmsn);
// 오류가 발생하였으면 종료..
if (rtnMsg.contains("[F]")) {
return rtnMsg;
}
}
}
return rtnMsg;
} }
} }

@ -84,7 +84,7 @@ public class Excl01Controller extends ApplicationController {
.addObject("infoPrefix", "levyExcl") // prefix .addObject("infoPrefix", "levyExcl") // prefix
.addObject("infoPrefixUrl", "/excl/excl01") // prefixUrl .addObject("infoPrefixUrl", "/excl/excl01") // prefixUrl
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD) .addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) .addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) // 업무 구분 코드(TASK_SE_CD)
.addObject("FIM021List", commonCodes.get("FIM021")) // 부과 제외 구분 코드(LEVY_EXCL_SE_CD) .addObject("FIM021List", commonCodes.get("FIM021")) // 부과 제외 구분 코드(LEVY_EXCL_SE_CD)
.addObject("FIM022List", commonCodes.get("FIM022")) // 부과 제외 사유 코드(LEVY_EXCL_RSN_CD) .addObject("FIM022List", commonCodes.get("FIM022")) // 부과 제외 사유 코드(LEVY_EXCL_RSN_CD)
; ;

@ -33,7 +33,6 @@ import cokr.xit.fims.cmmn.xls.StyleMaker;
import cokr.xit.fims.excl.LevyExclQuery; import cokr.xit.fims.excl.LevyExclQuery;
import cokr.xit.fims.excl.OpnnSbmsn; import cokr.xit.fims.excl.OpnnSbmsn;
import cokr.xit.fims.excl.service.OpnnSbmsnService; import cokr.xit.fims.excl.service.OpnnSbmsnService;
import cokr.xit.fims.excl.service.bean.OpnnSbmsnBean;
import cokr.xit.fims.mngt.service.bean.FactionBean; import cokr.xit.fims.mngt.service.bean.FactionBean;
import cokr.xit.fims.task.Task; import cokr.xit.fims.task.Task;
import cokr.xit.foundation.UserInfo; import cokr.xit.foundation.UserInfo;
@ -70,27 +69,25 @@ public class Excl02Controller extends ApplicationController {
} }
/** 의견제출 대장 서비스 */ /** 의견제출 대장 서비스 */
@Resource(name = "opnnSbmsnService") @Resource(name="opnnSbmsnService")
protected OpnnSbmsnService opnnSbmsnService; protected OpnnSbmsnService opnnSbmsnService;
/** 파일 정보 서비스 서비스 */ /** 파일 정보 서비스 서비스 */
@Resource(name="fileService") @Resource(name="fileService")
private FileService fileService; private FileService fileService;
@Resource(name = "stngBean") /**설정 정보 Bean */
@Resource(name="stngBean")
private StngBean stngBean; private StngBean stngBean;
@Resource(name = "factionBean") @Resource(name="factionBean")
private FactionBean factionBean; private FactionBean factionBean;
@Resource(name = "opnnSbmsnBean")
private OpnnSbmsnBean opnnSbmsnBean;
/** (fims/excl/excl02/010-main) . /** (fims/excl/excl02/010-main) .
* *
* @return /fims/excl/excl02010 * @return /fims/excl/excl02010
*/ */
@RequestMapping(name = "의견제출 관리 메인", value = METHOD_URL.opinionSubmissionMain) @RequestMapping(name="의견제출 관리 메인", value = METHOD_URL.opinionSubmissionMain)
public ModelAndView opinionSubmissionMain() { public ModelAndView opinionSubmissionMain() {
ModelAndView mav = new ModelAndView("fims/excl/excl02010-main"); ModelAndView mav = new ModelAndView("fims/excl/excl02010-main");
@ -101,13 +98,13 @@ public class Excl02Controller extends ApplicationController {
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM031", "FIM033", "FIM054"); Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM031", "FIM033", "FIM054");
return mav return mav
.addObject("pageName", "excl02010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix .addObject("pageName", "excl02010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "opnnSbmsn") // prefix .addObject("infoPrefix", "opnnSbmsn") // prefix
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD) .addObject("infoPrefixUrl", "/excl/excl02") // prefixUrl
.addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) .addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("FIM031List", commonCodes.get("FIM031")) // 의견 제출 답변 결과(OPNN_SBMSN_STTS_CD) .addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) // 업무 구분 코드(TASK_SE_CD)
.addObject("FIM033List", commonCodes.get("FIM033")) // 의견제출 구분 코드(OPNN_SBMSN_SE_CD) .addObject("FIM031List", commonCodes.get("FIM031")) // 의견 제출 답변 결과(OPNN_SBMSN_STTS_CD)
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) .addObject("FIM033List", commonCodes.get("FIM033")) // 의견제출 구분 코드(OPNN_SBMSN_SE_CD)
; ;
} }
@ -206,7 +203,6 @@ public class Excl02Controller extends ApplicationController {
@Task @Task
@RequestMapping(name="의견제출 정보 조회", value=METHOD_URL.getOpinionSubmissionInfo) @RequestMapping(name="의견제출 정보 조회", value=METHOD_URL.getOpinionSubmissionInfo)
public ModelAndView getOpinionSubmissionInfo(LevyExclQuery req) { public ModelAndView getOpinionSubmissionInfo(LevyExclQuery req) {
// 의견제출 정보 조회
DataObject info = opnnSbmsnService.getOpnnSbmsnInfo(req); DataObject info = opnnSbmsnService.getOpnnSbmsnInfo(req);
// 등록을 호출하였지만 등록된 의견제출 ID가 있는지 확인. // 등록을 호출하였지만 등록된 의견제출 ID가 있는지 확인.
@ -224,7 +220,10 @@ public class Excl02Controller extends ApplicationController {
return mav return mav
.addObject("pageName", "excl02020") .addObject("pageName", "excl02020")
.addObject("infoPrefix", "opnnSbmsn") // prefix
.addObject("infoPrefixUrl", "/excl/excl02") // prefixUrl
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도 .addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("FIM019List", commonCodes.get("FIM019")) // 감경 사유 구분 코드(RDUCT_RSN_CD)
.addObject("FIM029List", commonCodes.get("FIM029")) // 접수 구분 코드(RCPT_SE_CD) .addObject("FIM029List", commonCodes.get("FIM029")) // 접수 구분 코드(RCPT_SE_CD)
.addObject("FIM030List", commonCodes.get("FIM030")) // 통보 구분 코드(NTFCTN_SE_CD) .addObject("FIM030List", commonCodes.get("FIM030")) // 통보 구분 코드(NTFCTN_SE_CD)
.addObject("FIM032List", commonCodes.get("FIM032")) // 소유주 관계 구분 코드(OWNR_REL_CD) .addObject("FIM032List", commonCodes.get("FIM032")) // 소유주 관계 구분 코드(OWNR_REL_CD)
@ -245,14 +244,14 @@ public class Excl02Controller extends ApplicationController {
@Task @Task
@RequestMapping(name="의견제출 대장 등록", value=METHOD_URL.createOpinionSubmission) @RequestMapping(name="의견제출 대장 등록", value=METHOD_URL.createOpinionSubmission)
public ModelAndView createOpinionSubmission(OpnnSbmsn opnnSbmsn, MultipartFile[] uploadFiles) { public ModelAndView createOpinionSubmission(OpnnSbmsn opnnSbmsn, MultipartFile[] uploadFiles) {
// 파일 boolean saved = false;
List<FileInfo> fileInfoList = new ArrayList<FileInfo>();
// 첨부 파일
List<FileInfo> fileInfoList = new ArrayList<FileInfo>();
if (uploadFiles != null && uploadFiles.length > 0) { if (uploadFiles != null && uploadFiles.length > 0) {
fileInfoList = new FileInfoFactory().makeFileInfos(null, uploadFiles); fileInfoList = new FileInfoFactory().makeFileInfos(null, uploadFiles);
} }
boolean saved = false;
String rtnMsg = opnnSbmsnService.createOpnnSbmsn(opnnSbmsn, fileInfoList); String rtnMsg = opnnSbmsnService.createOpnnSbmsn(opnnSbmsn, fileInfoList);
if (rtnMsg.contains("[S]")) { if (rtnMsg.contains("[S]")) {
@ -276,14 +275,15 @@ public class Excl02Controller extends ApplicationController {
@Task @Task
@RequestMapping(name="의견제출 대장 수정", value=METHOD_URL.updateOpinionSubmission) @RequestMapping(name="의견제출 대장 수정", value=METHOD_URL.updateOpinionSubmission)
public ModelAndView updateOpinionSubmission(OpnnSbmsn opnnSbmsn, MultipartFile[] uploadFiles) { public ModelAndView updateOpinionSubmission(OpnnSbmsn opnnSbmsn, MultipartFile[] uploadFiles) {
// 파일 boolean saved = false;
// 첨부 파일
List<FileInfo> fileInfoList = new ArrayList<FileInfo>(); List<FileInfo> fileInfoList = new ArrayList<FileInfo>();
if (uploadFiles != null && uploadFiles.length > 0) { if (uploadFiles != null && uploadFiles.length > 0) {
fileInfoList = new FileInfoFactory().makeFileInfos(null, uploadFiles); fileInfoList = new FileInfoFactory().makeFileInfos(null, uploadFiles);
} }
boolean saved = false;
String rtnMsg = opnnSbmsnService.updateOpnnSbmsn(opnnSbmsn, fileInfoList); String rtnMsg = opnnSbmsnService.updateOpnnSbmsn(opnnSbmsn, fileInfoList);
if (rtnMsg.contains("[S]")) { if (rtnMsg.contains("[S]")) {
@ -305,9 +305,8 @@ public class Excl02Controller extends ApplicationController {
* }</pre> * }</pre>
*/ */
@Task @Task
@RequestMapping(name="의견제출 대장 심의 조회", value=METHOD_URL.getOpinionSubmissionAnswerInfo) @RequestMapping(name="의견제출 대장 심의정보 조회", value=METHOD_URL.getOpinionSubmissionAnswerInfo)
public ModelAndView getOpinionSubmissionAnswerInfo(LevyExclQuery req) { public ModelAndView getOpinionSubmissionAnswerInfo(LevyExclQuery req) {
//
DataObject info = opnnSbmsnService.getOpnnSbmsnInfo(req); DataObject info = opnnSbmsnService.getOpnnSbmsnInfo(req);
boolean json = jsonResponse(); boolean json = jsonResponse();
@ -319,12 +318,14 @@ public class Excl02Controller extends ApplicationController {
return mav return mav
.addObject("pageName", "excl02030") .addObject("pageName", "excl02030")
.addObject("infoPrefix", "opnnSbmsn") // prefix
.addObject("infoPrefixUrl", "/excl/excl02") // prefixUrl
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("FIM019List", commonCodes.get("FIM019")) // 감경 사유 구분 코드(RDUCT_RSN_CD) .addObject("FIM019List", commonCodes.get("FIM019")) // 감경 사유 구분 코드(RDUCT_RSN_CD)
.addObject("FIM030List", commonCodes.get("FIM030")) // 통보 구분 코드(NTFCTN_SE_CD) .addObject("FIM030List", commonCodes.get("FIM030")) // 통보 구분 코드(NTFCTN_SE_CD)
.addObject("FIM031List", commonCodes.get("FIM031")) // 의견 제출 상태 코드(OPNN_SBMSN_STTS_CD) .addObject("FIM031List", commonCodes.get("FIM031")) // 의견 제출 상태 코드(OPNN_SBMSN_STTS_CD)
.addObject("FIM033List", commonCodes.get("FIM033")) // 의견 제출 구분 코드(OPNN_SBMSN_SE_CD) .addObject("FIM033List", commonCodes.get("FIM033")) // 의견 제출 구분 코드(OPNN_SBMSN_SE_CD)
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("opnnSbmsnInfo", json ? info : toJson(info)) .addObject("opnnSbmsnInfo", json ? info : toJson(info))
; ;
} }
@ -337,7 +338,7 @@ public class Excl02Controller extends ApplicationController {
* }</code></pre> * }</code></pre>
*/ */
@Task @Task
@RequestMapping(name="의견제출 대장 심의 수정", value=METHOD_URL.updateOpinionSubmissionAnswer) @RequestMapping(name="의견제출 대장 심의정보 수정", value=METHOD_URL.updateOpinionSubmissionAnswer)
public ModelAndView updateOpinionSubmissionAnswer(OpnnSbmsn opnnSbmsn) { public ModelAndView updateOpinionSubmissionAnswer(OpnnSbmsn opnnSbmsn) {
boolean saved = false; boolean saved = false;
String rtnMsg = opnnSbmsnService.updateOpnnSbmsnAnswer(opnnSbmsn); String rtnMsg = opnnSbmsnService.updateOpnnSbmsnAnswer(opnnSbmsn);
@ -353,7 +354,7 @@ public class Excl02Controller extends ApplicationController {
.addObject("rtnMsg", rtnMsg); .addObject("rtnMsg", rtnMsg);
} }
/** . /** .
* @param opnnSbmsnIDs IDs * @param opnnSbmsnIDs IDs
* @return jsonView * @return jsonView
* <pre><code> { * <pre><code> {
@ -364,15 +365,15 @@ public class Excl02Controller extends ApplicationController {
@Task @Task
@RequestMapping(name="의견제출 심의의결서 출력", value=METHOD_URL.makeDlbrDecsnFileFromHwpFormat) @RequestMapping(name="의견제출 심의의결서 출력", value=METHOD_URL.makeDlbrDecsnFileFromHwpFormat)
public ModelAndView makeDlbrDecsnFileFromHwpFormat(LevyExclQuery req) { public ModelAndView makeDlbrDecsnFileFromHwpFormat(LevyExclQuery req) {
UserInfo userInfo = currentUser(); UserInfo userInfo = currentUser();
factionBean.initUserInfo(userInfo); factionBean.initUserInfo(userInfo);
Print print = new Print(); Print print = new Print();
print.setPrintRequestUserInfo(userInfo); print.setPrintRequestUserInfo(userInfo);
PrintOption printOption = new PrintOption(); PrintOption printOption = new PrintOption();
List<DataObject> dataObjectList = opnnSbmsnBean.getOpnnSbmsnDlbrDecsns(req); List<DataObject> dataObjectList = opnnSbmsnService.getOpnnSbmsnDlbrDecsns(req);
DlbrDecsnList hwpFormat = new DlbrDecsnList(print, printOption, dataObjectList); DlbrDecsnList hwpFormat = new DlbrDecsnList(print, printOption, dataObjectList);
HashMap<String, Object> result = hwpFormat.makeFile(); HashMap<String, Object> result = hwpFormat.makeFile();
@ -394,7 +395,21 @@ public class Excl02Controller extends ApplicationController {
@RequestMapping(name="의견제출 대장 삭제", value=METHOD_URL.removeOpinionSubmission) @RequestMapping(name="의견제출 대장 삭제", value=METHOD_URL.removeOpinionSubmission)
public ModelAndView removeOpinionSubmission(OpnnSbmsn opnnSbmsn) { public ModelAndView removeOpinionSubmission(OpnnSbmsn opnnSbmsn) {
boolean saved = false; boolean saved = false;
String rtnMsg = opnnSbmsnService.removeOpnnSbmsn(opnnSbmsn); String rtnMsg = "";
if (opnnSbmsn.getOpnnIds() == null || opnnSbmsn.getOpnnIds().length < 1) {
rtnMsg = opnnSbmsnService.removeOpnnSbmsn(opnnSbmsn);
} else {
// 의견제출 IDs 만큼 반복..
for (int iLoop = 0; iLoop < opnnSbmsn.getOpnnIds().length; iLoop++) {
opnnSbmsn.setOpnnId(opnnSbmsn.getOpnnIds()[iLoop]); // 의견제출 ID 설정
// 의견제출 삭제 호출
rtnMsg = opnnSbmsnService.removeOpnnSbmsn(opnnSbmsn);
if (rtnMsg.contains("[F]")) // 오류가 발생하였으면 종료..
break;
}
}
if (rtnMsg.contains("[S]")) { if (rtnMsg.contains("[S]")) {
saved = true; saved = true;

@ -28,50 +28,49 @@
</resultMap> </resultMap>
<sql id="selectList"> <sql id="selectList">
SELECT LE.LEVY_EXCL_ID <!-- 부과제외 ID --> SELECT LE.LEVY_EXCL_ID <!-- 부과제외 ID -->
, LE.LEVY_EXCL_YMD <!-- 부과제외 일자 --> , LE.LEVY_EXCL_YMD <!-- 부과제외 일자 -->
, LE.LEVY_EXCL_SE_CD <!-- 부과제외 구분 코드 -->
, (SELECT GET_CODE_NM('FIM021', LE.LEVY_EXCL_SE_CD) FROM DUAL) AS LEVY_EXCL_SE_NM <!-- 부과 제외 구분 명 --> , (SELECT GET_CODE_NM('FIM021', LE.LEVY_EXCL_SE_CD) FROM DUAL) AS LEVY_EXCL_SE_NM <!-- 부과 제외 구분 명 -->
, LE.LEVY_EXCL_RSN_CD <!-- 부과제외 사유 코드 -->
, (SELECT GET_CODE_NM('FIM022', LE.LEVY_EXCL_RSN_CD) FROM DUAL) AS LEVY_EXCL_RSN_NM <!-- 부과 제외 사유 명 --> , (SELECT GET_CODE_NM('FIM022', LE.LEVY_EXCL_RSN_CD) FROM DUAL) AS LEVY_EXCL_RSN_NM <!-- 부과 제외 사유 명 -->
, LE.ETC_CN <!-- 기타 내용 --> , LE.ETC_CN <!-- 기타 내용 -->
, LE.DEL_YN <!-- 삭제 여부 --> , LE.DEL_YN <!-- 삭제 여부 -->
, LE.REG_DT <!-- 등록 일시 --> , LE.REG_DT <!-- 등록 일시 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.RGTR) AS RGTR_NM <!-- 등록자 명 --> , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, LE.MDFCN_DT <!-- 수정 일시 --> , LE.MDFCN_DT <!-- 수정 일시 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.MDFR) AS MDFR_NM <!-- 수정자 명 --> , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, C.CRDN_ID <!-- 단속 ID --> , C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 --> , C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 --> , C.TASK_SE_CD <!-- 업무 구분 코드 -->
, (SELECT GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM <!-- 업무 구분 명 --> , (SELECT GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM <!-- 업무 구분 명 -->
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM <!-- 단속 일시 --> , (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM <!-- 단속 일시 -->
, C.VHRNO <!-- 차량번호 --> , C.VHRNO <!-- 차량번호 -->
, C.CRDN_STDG_NM <!-- 단속 법정동 명 --> , C.CRDN_STDG_NM <!-- 단속 법정동 명 -->
, C.CRDN_PLC <!-- 단속 장소 --> , C.CRDN_ROAD_NM <!-- 단속 도로 명 -->
, C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 --> , C.CRDN_PLC <!-- 단속 장소 -->
, C.FFNLG_AMT <!-- 과태료 금액 --> , C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 --> , C.FFNLG_AMT <!-- 과태료 금액 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 --> , C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM <!-- 단속 구분 명 --> , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
, (SELECT GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD) FROM DUAL) AS CRDN_SPAREA_NM <!-- 단속 특별구역 명 --> , (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM <!-- 단속 구분 명 -->
, (SELECT GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD) FROM DUAL) AS CRDN_SPAREA_NM <!-- 단속 특별구역 명 -->
, (SELECT GET_CODE_NM('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM <!-- 주차 가능 결과 명 --> , (SELECT GET_CODE_NM('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM <!-- 주차 가능 결과 명 -->
, V.VLTN_ID <!-- 위반 ID --> , V.VLTN_ID <!-- 위반 ID -->
, V.VLTN_CD <!-- 위반 코드 --> , V.VLTN_CD <!-- 위반 코드 -->
, V.VLTN_ARTCL <!-- 위반 항목 --> , V.VLTN_ARTCL <!-- 위반 항목 -->
, P.RTPYR_ID <!-- 납부자 ID --> , P.RTPYR_ID <!-- 납부자 ID -->
, (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM <!-- 납부자 구분 명 --> , (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM <!-- 납부자 구분 명 -->
, P.RTPYR_NO <!-- 납부자 번호 --> , P.RTPYR_NO <!-- 납부자 번호 -->
, P.RTPYR_NM <!-- 납부자 명 -->
, (SELECT GET_BRDT_FORMAT(P.RTPYR_BRDT, '.') FROM DUAL) AS RTPYR_BRDT_MASK <!-- 납부자 생년월일 마스크 --> , (SELECT GET_BRDT_FORMAT(P.RTPYR_BRDT, '.') FROM DUAL) AS RTPYR_BRDT_MASK <!-- 납부자 생년월일 마스크 -->
, P.RTPYR_NM <!-- 납부자 명 --> , P.ZIP <!-- 우편번호 -->
, P.ZIP <!-- 우편번호 --> , P.ADDR <!-- 주소 -->
, P.ADDR <!-- 주소 --> , P.DTL_ADDR <!-- 상세 주소 -->
, P.DTL_ADDR <!-- 상세 주소 --> , CC.CVLCPT_LINK_ID <!-- 민원 연계 ID -->
, CC.CVLCPT_LINK_ID <!-- 민원 연계 ID --> , CC.CVLCPT_RCPT_YMD <!-- 민원 접수 일자 -->
, CC.CVLCPT_RCPT_YMD <!-- 민원 접수 일자 --> , CC.CVLCPT_APLY_NO <!-- 민원 신청 번호 -->
, CC.CVLCPT_APLY_NO <!-- 민원 신청 번호 --> , CC.CVLCPT_RCPT_NO <!-- 민원 접수 번호 -->
, CC.CVLCPT_RCPT_NO <!-- 민원 접수 번호 --> , CC.CVLCPT_PRCS_CD <!-- 민원 처리 코드 -->
, CC.CVLCPT_PRCS_CD <!-- 민원 처리 코드 --> , (SELECT GET_CODE_NM('FIM017', CC.CVLCPT_PRCS_CD) FROM DUAL) AS CVLCPT_PRCS_NM <!-- 민원 처리 명 -->
, (SELECT GET_CODE_NM('FIM017', CC.CVLCPT_PRCS_CD) FROM DUAL) AS CVLCPT_PRCS_NM <!-- 민원 처리 명 -->
FROM TB_LEVY_EXCL LE FROM TB_LEVY_EXCL LE
INNER JOIN TB_CRDN C ON (LE.CRDN_ID = C.CRDN_ID) INNER JOIN TB_CRDN C ON (LE.CRDN_ID = C.CRDN_ID)
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID) INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID)
@ -219,18 +218,21 @@
<include refid="select" /> <include refid="select" />
<where> <where>
<if test="levyExclIds != null"> <if test="levyExclIds != null">
AND LE.LEVY_EXCL_ID IN ( <!-- 부과 제외 Ids --> AND LE.LEVY_EXCL_ID IN ( <!-- 부과 제외 Ids -->
<foreach collection="levyExclIds" item="levyExclId" separator=","> #{levyExclId} </foreach> <foreach collection="levyExclIds" item="levyExclId" separator=","> #{levyExclId} </foreach>
) )
</if> </if>
<if test="levyExclId != null"> <if test="levyExclId != null">
AND LE.LEVY_EXCL_ID = #{levyExclId} <!-- 부과 제외 ID --> AND LE.LEVY_EXCL_ID = #{levyExclId} <!-- 부과 제외 ID -->
</if>
<if test="delYn != null">
AND LE.DEL_YN = #{delYn} <!-- 삭제 여부 -->
</if> </if>
<if test="crdnId != null"> <if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} <!-- 단속 ID --> AND C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
</if> </if>
AND C.DEL_YN = 'N' <!-- 삭제 여부 -->
</where> </where>
AND C.DEL_YN = 'N' <!-- 단속 삭제 여부 -->
<include refid="utility.orderBy" /> <include refid="utility.orderBy" />
</select> </select>

@ -8,7 +8,6 @@
============================ --> ============================ -->
<resultMap id="opnnSbmsnRow" type="cokr.xit.fims.excl.OpnnSbmsn"> <resultMap id="opnnSbmsnRow" type="cokr.xit.fims.excl.OpnnSbmsn">
<!-- TB_OPNN_SBMSN 의견제출 대장 -->
<result property="opnnId" column="OPNN_ID" /> <!-- 의견 ID --> <result property="opnnId" column="OPNN_ID" /> <!-- 의견 ID -->
<result property="crdnId" column="CRDN_ID" /> <!-- 단속 ID --> <result property="crdnId" column="CRDN_ID" /> <!-- 단속 ID -->
<result property="rcptNo" column="RCPT_NO" /> <!-- 접수 번호 --> <result property="rcptNo" column="RCPT_NO" /> <!-- 접수 번호 -->
@ -51,12 +50,12 @@
<sql id="selectList"> <sql id="selectList">
SELECT OS.OPNN_ID <!-- 의견 ID --> SELECT OS.OPNN_ID <!-- 의견 ID -->
, OS.RCPT_NO <!-- 접수 번호 --> , (CONCAT(SUBSTR(OS.RCPT_NO,1,4), '-', SUBSTR(OS.RCPT_NO,5,6))) AS RCPT_NO_MASK <!-- 접수 번호 -->
, OS.RCPT_YMD <!-- 접수 일자 --> , OS.RCPT_YMD <!-- 접수 일자 -->
, OS.RCPT_SE_CD <!-- 접수 구분 코드 --> , (SELECT GET_CODE_NM('FIM029', OS.RCPT_SE_CD) FROM DUAL) AS RCPT_SE_NM <!-- 접수 구분 명 -->
, OS.OWNR_REL_CD <!-- 소유주 관계 코드 --> , (SELECT GET_CODE_NM('FIM032', OS.OWNR_REL_CD) FROM DUAL) AS OWNR_REL_NM <!-- 소유주 관계 명 -->
, OS.STTR_NM <!-- 진술자 명 --> , OS.STTR_NM <!-- 진술자 명 -->
, OS.STTR_BRDT <!-- 진술자 생년월일 --> , (SELECT GET_BRDT_FORMAT(OS.STTR_BRDT, '.') FROM DUAL) AS STTR_BRDT_MASK <!-- 진술자 생년월일 마스크 -->
, OS.STTR_RRNO <!-- 진술자 주민등록번호 --> , OS.STTR_RRNO <!-- 진술자 주민등록번호 -->
, OS.STTR_ADDR <!-- 진술자 주소 --> , OS.STTR_ADDR <!-- 진술자 주소 -->
, OS.STTR_DADDR <!-- 진술자 상세주소 --> , OS.STTR_DADDR <!-- 진술자 상세주소 -->
@ -64,33 +63,25 @@
, OS.STTR_CTTPC <!-- 진술자 연락처 --> , OS.STTR_CTTPC <!-- 진술자 연락처 -->
, OS.STTR_EML <!-- 진술자 이메일 --> , OS.STTR_EML <!-- 진술자 이메일 -->
, OS.OPNN_SBMSN_CN <!-- 의견 제출 내용 --> , OS.OPNN_SBMSN_CN <!-- 의견 제출 내용 -->
, OS.OPNN_SBMSN_SE_CD <!-- 의견 제출 구분 코드 --> , (SELECT GET_CODE_NM('FIM033', OS.OPNN_SBMSN_SE_CD) FROM DUAL) AS OPNN_SBMSN_SE_NM <!-- 의견 제출 구분 명 -->
, OS.OPNN_SBMSN_GIST <!-- 의견 제출 요지 --> , OS.OPNN_SBMSN_GIST <!-- 의견 제출 요지 -->
, OS.DOC_NO <!-- 문서 번호 --> , OS.DOC_NO <!-- 문서 번호 -->
, OS.NTFCTN_SE_CD <!-- 통보 구분 코드 --> , (SELECT GET_CODE_NM('FIM030', OS.NTFCTN_SE_CD) FROM DUAL) AS NTFCTN_SE_NM <!-- 통보 구분 명 -->
, OS.PIC_RVW_OPNN <!-- 담당자 검토 의견 --> , OS.PIC_RVW_OPNN <!-- 담당자 검토 의견 -->
, OS.OPNN_SBMSN_STTS_CD <!-- 의견 제출 상태 코드 --> , OS.OPNN_SBMSN_STTS_CD <!-- 의견 제출 상태 코드 -->
, OS.ANS_YMD <!-- 답변 일자 --> , (SELECT GET_CODE_NM('FIM031', OS.OPNN_SBMSN_STTS_CD) FROM DUAL) AS OPNN_SBMSN_STTS_NM <!-- 의견 제출 상태 명 -->
, OS.ANS_TM <!-- 답변 시각 --> , (CONCAT(OS.ANS_YMD, OS.ANS_TM)) AS ANS_YMD_TM <!-- 답변 일시 -->
, OS.ANS_CN <!-- 답변 내용 --> , OS.ANS_CN <!-- 답변 내용 -->
, OS.DEL_YN <!-- 삭제 여부 --> , OS.DEL_YN <!-- 삭제 여부 -->
, OS.REG_DT <!-- 등록 일시 --> , OS.REG_DT <!-- 등록 일시 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = OS.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, OS.MDFCN_DT <!-- 수정 일시 --> , OS.MDFCN_DT <!-- 수정 일시 -->
, OS.DEL_DT <!-- 삭제 일시 --> , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = OS.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, (CONCAT(OS.ANS_YMD, OS.ANS_TM)) AS ANS_YMD_TM <!-- 답변 일시 -->
, (GET_BRDT_FORMAT(OS.STTR_BRDT, '.')) AS STTR_BRDT_MASK <!-- 진술자 생년월일 마스크 -->
, (SELECT GET_CODE_NM('FIM029', OS.RCPT_SE_CD) FROM DUAL) AS RCPT_SE_NM <!-- 접수 구분 명 -->
, (SELECT GET_CODE_NM('FIM032', OS.OWNR_REL_CD) FROM DUAL) AS OWNR_REL_NM <!-- 소유주 관계 명 -->
, (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 USER_NM FROM TB_USER X WHERE X.USER_ID = OS.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = OS.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = OS.DLTR) AS DLTR_NM <!-- 삭제자 명 -->
, C.CRDN_ID <!-- 단속 ID --> , C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 --> , C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 --> , C.TASK_SE_CD <!-- 업무 구분 코드 -->
, C.CRDN_INPT_SE_CD <!-- 단속 입력 구분 코드 --> , (SELECT GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM <!-- 업무 구분 명 -->
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM <!-- 단속 일시 -->
, C.VHRNO <!-- 차량번호 --> , C.VHRNO <!-- 차량번호 -->
, C.CRDN_STDG_NM <!-- 단속 법정동 명 --> , C.CRDN_STDG_NM <!-- 단속 법정동 명 -->
, C.CRDN_ROAD_NM <!-- 단속 도로 명 --> , C.CRDN_ROAD_NM <!-- 단속 도로 명 -->
@ -98,13 +89,7 @@
, C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 --> , C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 -->
, C.FFNLG_AMT <!-- 과태료 금액 --> , C.FFNLG_AMT <!-- 과태료 금액 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 --> , C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, (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('FIM003', C.CRDN_INPT_SE_CD) FROM DUAL) AS CRDN_INPT_SE_NM <!-- 단속 입력 구분 명 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 --> , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
, CA.CRDN_SE_CD <!-- 단속 구분 코드 -->
, CA.CRDN_SPAREA_CD <!-- 단속 특별구역 코드 -->
, CA.PARKNG_PSBLTY_RSLT_CD <!-- 주차 가능 결과 코드 -->
, (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM <!-- 단속 구분 명 --> , (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM <!-- 단속 구분 명 -->
, (SELECT GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD) FROM DUAL) AS CRDN_SPAREA_NM <!-- 단속 특별구역 명 --> , (SELECT GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD) FROM DUAL) AS CRDN_SPAREA_NM <!-- 단속 특별구역 명 -->
, (SELECT GET_CODE_NM('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM <!-- 주차 가능 결과 명 --> , (SELECT GET_CODE_NM('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM <!-- 주차 가능 결과 명 -->
@ -112,19 +97,18 @@
, V.VLTN_CD <!-- 위반 코드 --> , V.VLTN_CD <!-- 위반 코드 -->
, V.VLTN_ARTCL <!-- 위반 항목 --> , V.VLTN_ARTCL <!-- 위반 항목 -->
, P.RTPYR_ID <!-- 납부자 ID --> , P.RTPYR_ID <!-- 납부자 ID -->
, P.RTPYR_SE_CD <!-- 납부자 구분 코드 --> , (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM <!-- 납부자 구분 명 -->
, P.RTPYR_NO <!-- 납부자 번호 --> , P.RTPYR_NO <!-- 납부자 번호 -->
, P.RTPYR_NM <!-- 납부자 명 --> , P.RTPYR_NM <!-- 납부자 명 -->
, (GET_BRDT_FORMAT(P.RTPYR_BRDT, '.')) AS RTPYR_BRDT_MASK <!-- 납부자 생년월일 마스크 -->
, P.ZIP <!-- 우편번호 --> , P.ZIP <!-- 우편번호 -->
, P.ADDR <!-- 주소 --> , P.ADDR <!-- 주소 -->
, P.DTL_ADDR <!-- 상세 주소 --> , P.DTL_ADDR <!-- 상세 주소 -->
, (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM <!-- 납부자 구분 명 -->
, (GET_BRDT_FORMAT(P.RTPYR_BRDT, '.')) AS RTPYR_BRDT_MASK <!-- 납부자 생년월일 마스크 -->
, R.RDUCT_ID <!-- 감경 ID --> , R.RDUCT_ID <!-- 감경 ID -->
, R.RDUCT_RSN_CD <!-- 감경 사유 코드 --> , R.RDUCT_RSN_CD <!-- 감경 사유 코드 -->
, (CASE WHEN R.RDUCT_AMT IS NOT NULL THEN R.RDUCT_AMT , (CASE WHEN R.RDUCT_AMT IS NOT NULL THEN R.RDUCT_AMT
ELSE (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') ELSE (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')
END ) AS RDUCT_AMT <!-- 감경 금액 --> END ) AS RDUCT_AMT <!-- 감경 금액 -->
FROM TB_OPNN_SBMSN OS FROM TB_OPNN_SBMSN OS
INNER JOIN TB_CRDN C ON (OS.CRDN_ID = C.CRDN_ID) INNER JOIN TB_CRDN C ON (OS.CRDN_ID = C.CRDN_ID)
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID) INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID)
@ -160,15 +144,6 @@
</if> </if>
<if test="delYn != null"> <if test="delYn != null">
AND OS.DEL_YN = #{delYn} <!-- 삭제 여부 --> AND OS.DEL_YN = #{delYn} <!-- 삭제 여부 -->
</if>
<if test="sggCd != null">
AND C.SGG_CD = #{sggCd} <!-- 시군구 코드 -->
</if>
<if test="taskSeCd != null">
AND C.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 -->
</if>
<if test="schVhrno != null">
AND C.VHRNO = #{schVhrno} <!-- 차량번호 -->
</if> </if>
<if test="schCrdnYmdFrom != null"> <if test="schCrdnYmdFrom != null">
AND C.CRDN_YMD <![CDATA[>=]]> #{schCrdnYmdFrom} <!-- 단속 일자 시작 --> AND C.CRDN_YMD <![CDATA[>=]]> #{schCrdnYmdFrom} <!-- 단속 일자 시작 -->
@ -176,7 +151,12 @@
<if test="schCrdnYmdTo != null"> <if test="schCrdnYmdTo != null">
AND C.CRDN_YMD <![CDATA[<=]]> #{schCrdnYmdTo} <!-- 단속 일자 종료 --> AND C.CRDN_YMD <![CDATA[<=]]> #{schCrdnYmdTo} <!-- 단속 일자 종료 -->
</if> </if>
AND C.DEL_YN = 'N' <!-- 단속 삭제 여부 --> <if test="schVhrno != null">
AND C.VHRNO = #{schVhrno} <!-- 차량번호 -->
</if>
<if test="schRtpyrNm != null">
AND P.RTPYR_NM = #{schRtpyrNm} <!-- 납부자 명 -->
</if>
<choose> <choose>
<when test="schRegDateOpt == 'regDt'"> <when test="schRegDateOpt == 'regDt'">
<if test="schRegDateFrom != null"> <if test="schRegDateFrom != null">
@ -245,95 +225,94 @@
</choose> </choose>
</if> </if>
</where> </where>
AND C.SGG_CD = #{sggCd} <!-- 시군구 코드 -->
AND C.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 -->
AND C.DEL_YN = 'N' <!-- 단속 삭제 여부 -->
<include refid="utility.orderBy" /> <include refid="utility.orderBy" />
<include refid="utility.paging-suffix" /> <include refid="utility.paging-suffix" />
</select> </select>
<sql id="select"> <sql id="select">
SELECT OS.OPNN_ID <!-- 의견 ID --> SELECT C.CRDN_ID <!-- 단속 ID -->
, OS.RCPT_NO <!-- 접수 번호 --> , C.SGG_CD <!-- 시군구 코드 -->
, OS.RCPT_YMD <!-- 접수 일자 --> , C.TASK_SE_CD <!-- 업무 구분 코드 -->
, OS.RCPT_SE_CD <!-- 접수 구분 코드 --> , C.CRDN_YMD <!-- 단속 일자 -->
, OS.OWNR_REL_CD <!-- 소유주 관계 코드 --> , C.CRDN_TM <!-- 단속 시각 -->
, OS.STTR_NM <!-- 진술자 명 -->
, OS.STTR_BRDT <!-- 진술자 생년월일 -->
, OS.STTR_RRNO <!-- 진술자 주민등록번호 -->
, OS.STTR_ADDR <!-- 진술자 주소 -->
, OS.STTR_DADDR <!-- 진술자 상세주소 -->
, OS.STTR_ZIP <!-- 진술자 우편번호 -->
, OS.STTR_CTTPC <!-- 진술자 연락처 -->
, OS.STTR_EML <!-- 진술자 이메일 -->
, OS.OPNN_SBMSN_CN <!-- 의견 제출 내용 -->
, OS.OPNN_SBMSN_SE_CD <!-- 의견 제출 구분 코드 -->
, OS.OPNN_SBMSN_GIST <!-- 의견 제출 요지 -->
, OS.DOC_NO <!-- 문서 번호 -->
, OS.NTFCTN_SE_CD <!-- 통보 구분 코드 -->
, OS.PIC_RVW_OPNN <!-- 담당자 검토 의견 -->
, OS.OPNN_SBMSN_STTS_CD <!-- 의견 제출 상태 코드 -->
, OS.ANS_YMD <!-- 답변 일자 -->
, OS.ANS_TM <!-- 답변 시각 -->
, OS.ANS_CN <!-- 답변 내용 -->
, OS.DEL_YN <!-- 삭제 여부 -->
, OS.REG_DT <!-- 등록 일시 -->
, OS.RGTR <!-- 등록자 -->
, OS.MDFCN_DT <!-- 수정 일시 -->
, OS.MDFR <!-- 수정자 -->
, OS.DEL_DT <!-- 삭제 일시 -->
, OS.DLTR <!-- 삭제자 -->
, OS.DEL_RSN <!-- 삭제 사유 -->
, (CONCAT(OS.ANS_YMD, OS.ANS_TM)) AS ANS_YMD_TM <!-- 답변 일시 -->
, (GET_BRDT_FORMAT(OS.STTR_BRDT, '.')) AS STTR_BRDT_MASK <!-- 진술자 생년월일 -->
, (SELECT GET_CODE_NM('FIM029', OS.RCPT_SE_CD) FROM DUAL) AS RCPT_SE_NM <!-- 접수 구분 코드 -->
, (SELECT GET_CODE_NM('FIM032', OS.OWNR_REL_CD) FROM DUAL) AS OWNR_REL_NM <!-- 소유주 관계 코드 -->
, (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
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 <!-- 감경 금액 -->
, 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 <!-- 단속 일시 --> , (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 <!-- 업무 구분 명 --> , C.VHRNO <!-- 차량번호 -->
, C.CRDN_STDG_NM <!-- 단속 법정동 명 -->
, C.CRDN_PLC <!-- 단속 장소 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 --> , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
, P.RTPYR_ID <!-- 납부자 ID --> , C.CRDN_STTS_CHG_DT <!-- 단속 상태 변경 일시 -->
, P.RTPYR_NO <!-- 납부자 번호 --> , OS.OPNN_ID <!-- 의견 ID -->
, P.RTPYR_NM <!-- 납부자 명 --> , OS.RCPT_NO <!-- 접수 번호 -->
, P.RTPYR_TELNO <!-- 납부자 전화번호 --> , (CONCAT(SUBSTR(OS.RCPT_NO,1,4), '-', SUBSTR(OS.RCPT_NO,5,6))) AS RCPT_NO_MASK <!-- 접수 번호 -->
, P.RTPYR_MBL_TELNO <!-- 납부자 휴대 전화번호 --> , OS.RCPT_YMD <!-- 접수 일자 -->
, P.RTPYR_EML <!-- 납부자 이메일 --> , OS.RCPT_SE_CD <!-- 접수 구분 코드 -->
, P.RTPYR_BRDT <!-- 납부자 생년월일 --> , (SELECT GET_CODE_NM('FIM029', OS.RCPT_SE_CD) FROM DUAL) AS RCPT_SE_NM <!-- 접수 구분 코드 -->
, P.ZIP <!-- 우편번호 --> , OS.OWNR_REL_CD <!-- 소유주 관계 코드 -->
, P.ADDR <!-- 주소 --> , (SELECT GET_CODE_NM('FIM032', OS.OWNR_REL_CD) FROM DUAL) AS OWNR_REL_NM <!-- 소유주 관계 코드 -->
, P.DTL_ADDR <!-- 상세 주소 --> , OS.STTR_NM <!-- 진술자 명 -->
FROM TB_OPNN_SBMSN OS , OS.STTR_BRDT <!-- 진술자 생년월일 -->
INNER JOIN TB_CRDN C ON (OS.CRDN_ID = C.CRDN_ID) , (SELECT GET_BRDT_FORMAT(OS.STTR_BRDT, '.') FROM DUAL) AS STTR_BRDT_MASK <!-- 진술자 생년월일 -->
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) , OS.STTR_RRNO <!-- 진술자 주민등록번호 -->
, OS.STTR_ADDR <!-- 진술자 주소 -->
, OS.STTR_DADDR <!-- 진술자 상세주소 -->
, OS.STTR_ZIP <!-- 진술자 우편번호 -->
, OS.STTR_CTTPC <!-- 진술자 연락처 -->
, OS.STTR_EML <!-- 진술자 이메일 -->
, OS.OPNN_SBMSN_CN <!-- 의견 제출 내용 -->
, OS.OPNN_SBMSN_SE_CD <!-- 의견 제출 구분 코드 -->
, (SELECT GET_CODE_NM('FIM033', OS.OPNN_SBMSN_SE_CD) FROM DUAL) AS OPNN_SBMSN_SE_NM <!-- 의견 제출 구분 명 -->
, OS.OPNN_SBMSN_GIST <!-- 의견 제출 요지 -->
, OS.DOC_NO <!-- 문서 번호 -->
, OS.NTFCTN_SE_CD <!-- 통보 구분 코드 -->
, (SELECT GET_CODE_NM('FIM030', OS.NTFCTN_SE_CD) FROM DUAL) AS NTFCTN_SE_NM <!-- 통보 구분 코드 -->
, OS.PIC_RVW_OPNN <!-- 담당자 검토 의견 -->
, OS.OPNN_SBMSN_STTS_CD <!-- 의견 제출 상태 코드 -->
, (SELECT GET_CODE_NM('FIM031', OS.OPNN_SBMSN_STTS_CD) FROM DUAL) AS OPNN_SBMSN_STTS_NM <!-- 의견 제출 상태 명 -->
, OS.ANS_YMD <!-- 답변 일자 -->
, OS.ANS_TM <!-- 답변 시각 -->
, (CONCAT(OS.ANS_YMD, OS.ANS_TM)) AS ANS_YMD_TM <!-- 답변 일시 -->
, OS.ANS_CN <!-- 답변 내용 -->
, OS.REG_DT <!-- 등록 일시 -->
, OS.RGTR <!-- 등록자 -->
, OS.MDFCN_DT <!-- 수정 일시 -->
, OS.MDFR <!-- 수정자 -->
, (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 <!-- 감경 금액 -->
, 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 <!-- 상세 주소 -->
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')
</sql> </sql>
<select id="selectOpnnSbmsns" parameterType="map" resultType="dataobject">/* 의견제출 대장 객체 가져오기(opnnSbmsnMapper.selectOpnnSbmsns) */ <select id="selectOpnnSbmsns" parameterType="map" resultType="dataobject">/* 의견제출 대장 객체 가져오기(opnnSbmsnMapper.selectOpnnSbmsns) */
<include refid="select" /> <include refid="select" />
<where> <where>
<if test="opnnIds != null"> <if test="opnnIds != null">
AND OS.OPNN_ID IN ( <!-- 의견제출 ID --> AND OS.OPNN_ID IN ( <!-- 의견제출 ID -->
<foreach collection="opnnIds" item="opnnId" separator=","> #{opnnId} </foreach> <foreach collection="opnnIds" item="opnnId" separator=","> #{opnnId} </foreach>
) )
</if> </if>
<if test="opnnId != null"> <if test="opnnId != null">
AND OS.OPNN_ID = #{opnnId} <!-- 의견제출 ID --> AND OS.OPNN_ID = #{opnnId} <!-- 의견제출 ID -->
</if>
<if test="delYn != null">
AND OS.DEL_YN = #{delYn} <!-- 삭제 여부 -->
</if> </if>
<if test="crdnId != null"> <if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} <!-- 단속 ID --> AND C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
AND C.DEL_YN = 'N' <!-- 단속 삭제 여부 -->
</if> </if>
</where> </where>
AND C.DEL_YN = 'N' <!-- 단속 삭제 여부 -->
<include refid="utility.orderBy" /> <include refid="utility.orderBy" />
</select> </select>
@ -365,6 +344,8 @@
, C.CRDN_ID <!-- 단속 ID --> , C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 --> , C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 --> , C.TASK_SE_CD <!-- 업무 구분 코드 -->
, (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 <!-- 단속 일시 마스크 -->
, C.VHRNO <!-- 차량번호 --> , C.VHRNO <!-- 차량번호 -->
, C.CRDN_STDG_NM <!-- 단속 법정동 명 --> , C.CRDN_STDG_NM <!-- 단속 법정동 명 -->
, C.CRDN_ROAD_NM <!-- 단속 도로 명 --> , C.CRDN_ROAD_NM <!-- 단속 도로 명 -->
@ -372,10 +353,8 @@
, C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 --> , C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 -->
, C.FFNLG_AMT <!-- 과태료 금액 --> , C.FFNLG_AMT <!-- 과태료 금액 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 --> , C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
, C.CRDN_STTS_CHG_DT <!-- 단속 상태 변경 일시 --> , C.CRDN_STTS_CHG_DT <!-- 단속 상태 변경 일시 -->
, (GET_MASK_DATETIME(C.CRDN_YMD, '-', C.CRDN_TM, ':')) AS CRDN_YMD_TM_MASK <!-- 단속 일시 마스크 -->
, (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 <!-- 단속 상태 명 -->
, DLBR_MBR_JBGD1 <!-- 심의 회원 직급1 --> , DLBR_MBR_JBGD1 <!-- 심의 회원 직급1 -->
, DLBR_MBR_NM1 <!-- 심의 회원 명1 --> , DLBR_MBR_NM1 <!-- 심의 회원 명1 -->
, DLBR_MBR_JBGD2 <!-- 심의 회원 직급2 --> , DLBR_MBR_JBGD2 <!-- 심의 회원 직급2 -->
@ -496,20 +475,19 @@
AND DEL_YN = 'N' AND DEL_YN = 'N'
</update> </update>
<update id="updateAnsSttsCd" parameterType="map">/* 의견제출 대장 답변 수정(opnnSbmsnMapper.updateAnsSttsCd) */ <update id="updateOpnnSbmsnAnswer" parameterType="map">/* 의견제출 대장 답변 수정(opnnSbmsnMapper.updateOpnnSbmsnAnswer) */
UPDATE TB_OPNN_SBMSN UPDATE TB_OPNN_SBMSN
SET OPNN_SBMSN_GIST = #{opnnSbmsn.opnnSbmsnGist} <!-- 의견 제출 요지 --> SET DOC_NO = #{opnnSbmsn.docNo} <!-- 문서 번호 -->
, DOC_NO = #{opnnSbmsn.docNo} <!-- 문서 번호 --> , NTFCTN_SE_CD = #{opnnSbmsn.ntfctnSeCd} <!-- 통보 구분 코드 -->
, NTFCTN_SE_CD = #{opnnSbmsn.ntfctnSeCd} <!-- 통보 구분 코드 --> , PIC_RVW_OPNN = #{opnnSbmsn.picRvwOpnn} <!-- 담당자 검토 의견 -->
, PIC_RVW_OPNN = #{opnnSbmsn.picRvwOpnn} <!-- 담당자 검토 의견 --> , OPNN_SBMSN_STTS_CD= #{opnnSbmsn.opnnSbmsnSttsCd} <!-- 의견 제출 상태 코드 -->
, OPNN_SBMSN_STTS_CD = #{opnnSbmsn.opnnSbmsnSttsCd} <!-- 의견 제출 상태 코드 --> , ANS_YMD = #{opnnSbmsn.ansYmd} <!-- 답변 일자 -->
, ANS_YMD = #{opnnSbmsn.ansYmd} <!-- 답변 일자 --> , ANS_TM = #{opnnSbmsn.ansTm} <!-- 답변 시각 -->
, ANS_TM = #{opnnSbmsn.ansTm} <!-- 답변 시각 --> , ANS_CN = #{opnnSbmsn.ansCn} <!-- 답변 내용 -->
, ANS_CN = #{opnnSbmsn.ansCn} <!-- 답변 내용 --> , MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 --> , MDFR = #{opnnSbmsn.modifiedBy} <!-- 수정자 -->
, MDFR = #{opnnSbmsn.modifiedBy} <!-- 수정자 --> WHERE OPNN_ID = #{opnnSbmsn.opnnId} <!-- 의견 ID -->
WHERE OPNN_ID = #{opnnSbmsn.opnnId} <!-- 의견 ID --> AND DEL_YN = 'N'
AND DEL_YN = 'N'
</update> </update>
<update id="deleteOpnnSbmsn" parameterType="map">/* 의견제출 대장 삭제(opnnSbmsnMapper.deleteOpnnSbmsn) */ <update id="deleteOpnnSbmsn" parameterType="map">/* 의견제출 대장 삭제(opnnSbmsnMapper.deleteOpnnSbmsn) */
@ -522,33 +500,6 @@
AND DEL_YN = 'N' AND DEL_YN = 'N'
</update> </update>
<select id="selectCrdnInfo" parameterType="string" resultType="dataobject">/* 단속 대장 객체 가져오기(levyExclMapper.selectCrdnInfo) */
SELECT 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('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>
<update id="updateCrdnOpnnSbmsnYn" parameterType="map">/* 단속 대장 의견제출여부 수정(opnnSbmsnMapper.updateCrdnOpnnSbmsnYn) */ <update id="updateCrdnOpnnSbmsnYn" parameterType="map">/* 단속 대장 의견제출여부 수정(opnnSbmsnMapper.updateCrdnOpnnSbmsnYn) */
UPDATE TB_CRDN UPDATE TB_CRDN
SET OPNN_SBMSN_YN= #{crdn.opnnSbmsnYn} <!-- 의견 제출 여부 --> SET OPNN_SBMSN_YN= #{crdn.opnnSbmsnYn} <!-- 의견 제출 여부 -->

@ -143,8 +143,8 @@
</button> </button>
</div> </div>
</div> </div>
</div> <!-- / 상세 조건 --> </div> <!-- / 상세 조건 -->
</form> <!-- / 검색 조건 영역 --> </form> <!-- / 검색 조건 영역 -->
<!-- 업무 버튼 및 건수 표시 --> <!-- 업무 버튼 및 건수 표시 -->
<div> <div>
@ -165,8 +165,7 @@
</button> </button>
</span> </span>
</span> </span>
</div> </div> <!-- / 업무 버튼 및 건수 표시 -->
<!-- / 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) --> <!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap"> <div class="card-datatable text-nowrap">
@ -273,9 +272,9 @@
</div> </div>
</div> </div>
<!-- / DataTables(그리드) --> <!-- / DataTables(그리드) -->
</div> <!-- <div class="wrapper-list"> --> </div> <!-- / <div class="wrapper-list"> -->
</div> <!-- <div class="card"> --> </div> <!-- / <div class="card"> -->
</div> <!-- <div class="container-xxl flex-grow-1 px-0"> --> </div> <!-- / <div class="container-xxl flex-grow-1 px-0"> -->
<!-- / Content --> <!-- / Content -->
<div class="content-backdrop fade"></div> <div class="content-backdrop fade"></div>
@ -331,12 +330,12 @@
$P.renderList(obj.${infoPrefix}Total); $P.renderList(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({ $("#paging--${pageName}").setPagingInfo({
list : $P.control.dataset list: $P.control.dataset
, prefix : "paging--${pageName}" , prefix: "paging--${pageName}"
, start : obj.${infoPrefix}Start , start: obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total , totalSize: obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch , fetchSize: obj.${infoPrefix}Fetch
, func : "pageObject['${pageName}'].control.load({index})" , func: "pageObject['${pageName}'].control.load({index})"
}); });
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료 $P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
@ -366,15 +365,15 @@
// DataTables(그리드) 전체 선택(checkbox) // DataTables(그리드) 전체 선택(checkbox)
if (keys.length < 1) { if (keys.length < 1) {
$("th input[type='checkbox']").prop("checked", false); // 체크 해제 $("th input[type='checkbox']").prop("checked", false); // 체크 해제
} else if (keys.length == ${infoPrefix}List.length) { } else if (keys.length == ${infoPrefix}List.length) {
$("th input[type='checkbox']").prop("checked", true); // 체크 설정 $("th input[type='checkbox']").prop("checked", true); // 체크 설정
} else { } else {
$("th input[type='checkbox']").prop("checked", false); // 체크 해제 $("th input[type='checkbox']").prop("checked", false); // 체크 해제
} }
}; };
// 부과제외 상세정보 dialog // 상세정보 dialog
$P.control.getInfo = (params) => { $P.control.getInfo = (params) => {
if (!params) return; if (!params) return;
@ -406,7 +405,7 @@
}); });
if (resp.saved) { if (resp.saved) {
$P.fnRefreshList(); // 자료 재조회 $P.fnRefreshList(); // 자료 재조회
} }
} }
@ -467,7 +466,7 @@
// DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트 // DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
$P.scrollDataList = () => { $P.scrollDataList = () => {
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false $P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false
$P.control.load($P.control.query.pageNum + 1); $P.control.load($P.control.query.pageNum + 1);
} }
@ -529,14 +528,14 @@
$P.control.dataset.clear(); $P.control.dataset.clear();
} }
// 사용자 검색 callback // 사용자검색 callback
$P.callbackFindUser = (userId, userNm) => { $P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID $("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명 $("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
} }
// 사용자 조회 버튼 클릭 이벤트 // 사용자검색 버튼 클릭 이벤트
$P.fnFindUser = () => { $P.fnGetFindUser = () => {
let params = { let params = {
openerPageName: "${pageName}" openerPageName: "${pageName}"
, callbackFuncName: "pageObject['${pageName}']['callbackFindUser']" , callbackFuncName: "pageObject['${pageName}']['callbackFindUser']"
@ -584,7 +583,7 @@
$P.control.download(); $P.control.download();
} }
// 수정 버튼 클릭 이벤트 // 부과제외 수정 버튼 클릭 이벤트
$P.fnUpdate = (title) => { $P.fnUpdate = (title) => {
// 부과제외 ID // 부과제외 ID
let levyExclId = $P.control.dataset.getValue("LEVY_EXCL_ID"); let levyExclId = $P.control.dataset.getValue("LEVY_EXCL_ID");
@ -603,24 +602,21 @@
$P.control.getInfo(params); $P.control.getInfo(params);
} }
// 삭제 사유 callback // 부과제외 삭제사유 callback
$P.callbackRsn = (obj) => { $P.callbackRsn = (obj) => {
// 선택 자료
let selected = $P.control.dataset.getKeys("selected");
if (selected.length < 1) return;
// 서버에 전송할 data(파라미터) 생성 // 서버에 전송할 data(파라미터) 생성
let params = {}; let params = {};
params[$P.control.prefixed("Ids")] = selected.join(","); // Ids let selected = $P.control.dataset.getKeys("selected");
params.sggCd = $("#sggCd--${pageName}").val(); // sggCd
params.taskSeCd = $("input[name=taskSeCd]:checked").val(); // taskSeCd params[$P.control.prefixed("Ids")] = selected.join(","); // IDs
params.sggCd = $("#sggCd--${pageName}").val(); // 시군구 코드
params.taskSeCd = $("input[name=taskSeCd]:checked").val(); // 업무 구분 코드
params.delRsn = obj.reason; // 삭제 사유 params.delRsn = obj.reason; // 삭제 사유
$P.control.remove(params); $P.control.remove(params);
} }
// 삭제 버튼 클릭 이벤트 // 부과제외 삭제 버튼 클릭 이벤트
$P.fnRemove = (title) => { $P.fnRemove = (title) => {
// 선택 자료 // 선택 자료
let selected = $P.control.dataset.getKeys("selected"); let selected = $P.control.dataset.getKeys("selected");
@ -664,7 +660,7 @@
$("#btnReset--${pageName}").on("click", () => $P.fnResetAndChangeBiz()); // 초기화 $("#btnReset--${pageName}").on("click", () => $P.fnResetAndChangeBiz()); // 초기화
$("#btnSearch--${pageName}").on("click", () => $P.fnSearchList()); // 검색 $("#btnSearch--${pageName}").on("click", () => $P.fnSearchList()); // 검색
$("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀 $("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀
$("#btnFindUser--${pageName}").on("click", () => $P.fnFindUser()); // 사용자 검색 $("#btnFindUser--${pageName}").on("click", () => $P.fnGetFindUser()); // 사용자 검색
// 동적검색에서 엔터(Enter) 키를 누르면 검색한다. // 동적검색에서 엔터(Enter) 키를 누르면 검색한다.
$("#term--${pageName}").keypress(function(e) { $("#term--${pageName}").keypress(function(e) {
@ -695,7 +691,7 @@
$P.fnRemove($(this).attr("title")); $P.fnRemove($(this).attr("title"));
}); });
// DataTables width 변경 조정 업무별 그리드가 존재 한다면.. crdn06010-main.jsp 참고 // DataTables width 변경 조정 (업무별 그리드가 존재 한다면.. crdn06010-main.jsp 참고)
fnMakeResizableTable($("#table-responsive--${pageName}")[0]); fnMakeResizableTable($("#table-responsive--${pageName}")[0]);
// DataTables 스크롤 이벤트 생성 // DataTables 스크롤 이벤트 생성
@ -760,7 +756,6 @@
cols.each(function() { cols.each(function() {
colsOuterHTML += this.outerHTML; colsOuterHTML += this.outerHTML;
}); });
$("#table-responsive--${pageName}")[0].changeColumn(colsOuterHTML); $("#table-responsive--${pageName}")[0].changeColumn(colsOuterHTML);
} }

@ -117,7 +117,7 @@
if (!item) return; if (!item) return;
// Dataset 셋팅 // Dataset 셋팅
$P.formFields.set($P.control,item); $P.formFields.set($P.control, item);
// 업무구분에 따른 URL 변경 // 업무구분에 따른 URL 변경
$P.fnSetURL(item.data.TASK_SE_CD); $P.fnSetURL(item.data.TASK_SE_CD);
// 부과제외구분에 따른 부과제외사유 설정 // 부과제외구분에 따른 부과제외사유 설정

@ -167,10 +167,8 @@
</button> </button>
</div> </div>
</div> </div>
</div> </div> <!-- / 상세 조건 -->
<!-- / 상세 조건 --> </form> <!-- / 검색 조건 영역 -->
</form>
<!-- / 검색 조건 영역 -->
<!-- 업무 버튼 및 건수 표시 --> <!-- 업무 버튼 및 건수 표시 -->
<div> <div>
@ -183,19 +181,18 @@
</div> </div>
<span class="container-window-btn-right"> <span class="container-window-btn-right">
<!-- 업무 버튼 --> <!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-120" id="btnUpdateOpnn--${pageName}" title="의견제출 수정"> <button type="button" class="btn btn-primary w-px-120" id="btnUpdate--${pageName}" title="의견제출 수정">
의견제출 수정 의견제출 수정
</button> </button>
<button type="button" class="btn btn-primary w-px-120" id="btnUpdateOpnnDlbr--${pageName}" title="의견제출 심의"> <button type="button" class="btn btn-primary w-px-120" id="btnUpdateOpnnDlbr--${pageName}" title="의견제출 심의">
의견제출 심의 의견제출 심의
</button> </button>
<button type="button" class="btn btn-primary w-px-120" id="btnRemoveOpnn--${pageName}" title="의견제출 삭제"> <button type="button" class="btn btn-primary w-px-120" id="btnRemove--${pageName}" title="의견제출 삭제">
의견제출 삭제 의견제출 삭제
</button> </button>
</span> </span>
</span> </span>
</div> </div> <!-- / 업무 버튼 및 건수 표시 -->
<!-- / 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) --> <!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap"> <div class="card-datatable text-nowrap">
@ -221,14 +218,14 @@
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('OWNR_REL_CD', this.innerText, 'codeValue', 'FIM032');">소유주관계</th> <th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('OWNR_REL_CD', this.innerText, 'codeValue', 'FIM032');">소유주관계</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('STTR_NM', this.innerText, 'match', 'part');">진술자명</th> <th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('STTR_NM', this.innerText, 'match', 'part');">진술자명</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('STTR_BRDT', this.innerText, 'ymd', '');">진술자생일</th> <th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('STTR_BRDT', this.innerText, 'ymd', '');">진술자생일</th>
<th class="cmn" style="width: 100px;" onclick="searchFromGridTitle('STTR_ZIP', this.innerText, 'match', 'part');">진술자우편번호</th> <th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('STTR_ZIP', this.innerText, 'match', 'part');">진술자우편번호</th>
<th class="cmn" style="width: 280px;" onclick="searchFromGridTitle('STTR_ADDR', this.innerText, 'match', 'part');">진술자주소</th> <th class="cmn" style="width: 280px;" onclick="searchFromGridTitle('STTR_ADDR', this.innerText, 'match', 'part');">진술자주소</th>
<th class="cmn" style="width: 320px;" onclick="searchFromGridTitle('STTR_DADDR', this.innerText, 'match', 'part');">진술자상세주소</th> <th class="cmn" style="width: 320px;" onclick="searchFromGridTitle('STTR_DADDR', this.innerText, 'match', 'part');">진술자상세주소</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('OPNN_SBMSN_STTS_CD', this.innerText, 'codeValue', 'FIM031');">의견제출상태</th> <th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('OPNN_SBMSN_STTS_CD', this.innerText, 'codeValue', 'FIM031');">의견제출상태</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('OPNN_SBMSN_SE_CD', this.innerText, 'codeValue', 'FIM033');">의견제출분류</th> <th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('OPNN_SBMSN_SE_CD', this.innerText, 'codeValue', 'FIM033');">의견제출분류</th>
<th class="cmn" style="width: 280px;" onclick="searchFromGridTitle('OPNN_SBMSN_GIST', this.innerText, 'match', 'part');">의견제출요지</th> <th class="cmn" style="width: 280px;" onclick="searchFromGridTitle('OPNN_SBMSN_GIST', this.innerText, 'match', 'part');">의견제출요지</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('DOC_NO', this.innerText, 'ymd', '');">문서번호</th> <th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('DOC_NO', this.innerText, 'ymd', '');">문서번호</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('ANS_YMD', this.innerText, 'ymd', '');">답변일</th> <th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('ANS_YMD', this.innerText, 'ymd', '');">답변일</th>
<th class="cmn" style="width: 280px;" onclick="searchFromGridTitle('ANS_CN', this.innerText, 'match', 'part');">답변내용</th> <th class="cmn" style="width: 280px;" onclick="searchFromGridTitle('ANS_CN', this.innerText, 'match', 'part');">답변내용</th>
<th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('CRDN_YMD', this.innerText, 'ymd', '');">단속일시</th> <th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('CRDN_YMD', this.innerText, 'ymd', '');">단속일시</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('VHRNO', this.innerText, 'match', 'part');">차량번호</th> <th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('VHRNO', this.innerText, 'match', 'part');">차량번호</th>
@ -259,7 +256,7 @@
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td>
<td class="cmn text-center"><input type="checkbox" class="form-check-input" name="gridCheckbox" value="{OPNN_ID}" onchange="pageObject['${pageName}'].control.select('{OPNN_ID}', this.checked);" /></td> <td class="cmn text-center"><input type="checkbox" class="form-check-input" name="gridCheckbox" value="{OPNN_ID}" onchange="pageObject['${pageName}'].control.select('{OPNN_ID}', this.checked);" /></td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{TASK_SE_NM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{TASK_SE_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCPT_NO}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCPT_NO_MASK}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCPT_YMD}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCPT_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCPT_SE_NM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCPT_SE_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{NTFCTN_SE_NM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{NTFCTN_SE_NM}</td>
@ -273,7 +270,7 @@
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{OPNN_SBMSN_SE_NM}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{OPNN_SBMSN_SE_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{OPNN_SBMSN_GIST}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{OPNN_SBMSN_GIST}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DOC_NO}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DOC_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ANS_YMD}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ANS_YMD_TM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ANS_CN}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ANS_CN}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_YMD_TM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_YMD_TM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td>
@ -322,9 +319,9 @@
</div> </div>
</div> </div>
<!-- / DataTables(그리드) --> <!-- / DataTables(그리드) -->
</div> <!-- / Wrapper-list --> </div> <!-- / <div class="wrapper-list"> -->
</div> <!-- / Card --> </div> <!-- / <div class="card"> -->
</div> </div> <!-- / <div class="container-xxl flex-grow-1 px-0"> -->
<!-- / Content --> <!-- / Content -->
<div class="content-backdrop fade"></div> <div class="content-backdrop fade"></div>
@ -342,10 +339,8 @@
**************************************************************************/ **************************************************************************/
$(document).ready(function() { $(document).ready(function() {
// pageObject // pageObject
var $P = pageObject["${pageName}"]; let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/excl/excl02";
// FormFields // FormFields
$P.formFields = new FimsFormFields("#frmSearch--${pageName}"); $P.formFields = new FimsFormFields("#frmSearch--${pageName}");
@ -353,28 +348,28 @@
* DatasetControl * DatasetControl
**************************************************************************/ **************************************************************************/
$P.control = new DatasetControl({ $P.control = new DatasetControl({
prefix : "opnn" prefix: "opnn"
, prefixName : "의견제출" , prefixName: "의견제출"
, infoSize : "xl" , infoSize: "xl"
, keymapper : info => info ? info.OPNN_ID : "" , keymapper: info => info ? info.OPNN_ID : ""
, dataGetter : obj => obj.opnnSbmsnList , dataGetter: obj => obj.${infoPrefix}List
, appendData : true , appendData: true
, formats : { , formats: {
RCPT_YMD : dateFormat RCPT_YMD: dateFormat
, ANS_YMD : dateFormat , ANS_YMD: dateFormat
, ANS_YMD_TM : datetimeFormat , ANS_YMD_TM: datetimeFormat
, CRDN_YMD_TM : datetimeFormat , CRDN_YMD_TM: datetimeFormat
, FFNLG_CRDN_AMT : numberFormat , FFNLG_CRDN_AMT: numberFormat
, FFNLG_AMT : numberFormat , FFNLG_AMT: numberFormat
, REG_DT : datetimeFormat , REG_DT: datetimeFormat
, MDFCN_DT : datetimeFormat , MDFCN_DT: datetimeFormat
} }
}); });
// $P.control 설정 // $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30 $P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호 $P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.beforeCurrent = null; $P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/************************************************************************** /**************************************************************************
* DatasetControl 이벤트 * DatasetControl 이벤트
@ -384,15 +379,15 @@
$P.renderList(obj.${infoPrefix}Total); $P.renderList(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({ $("#paging--${pageName}").setPagingInfo({
list : $P.control.dataset list: $P.control.dataset
, prefix : "paging--${pageName}" , prefix: "paging--${pageName}"
, start : obj.${infoPrefix}Start , start: obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total , totalSize: obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch , fetchSize: obj.${infoPrefix}Fetch
, func : "$P.control.load({index})" , func: "$P.control.load({index})"
}); });
$P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료 $P.control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
}; };
// 현재 선택 자료 변경 이벤트 // 현재 선택 자료 변경 이벤트
@ -411,47 +406,36 @@
$("#tbody--${pageName} input[type='checkbox']").each(function() { $("#tbody--${pageName} input[type='checkbox']").each(function() {
let checkbox = $(this); let checkbox = $(this);
checkbox.prop("checked", keys.includes(checkbox.val())); checkbox.prop("checked", keys.includes(checkbox.val()));
}); });
// 삭제 버튼 // 삭제 버튼
$("#btnRemoveOpnn--${pageName}").prop("disabled", keys.length < 1); $("#btnRemove--${pageName}").prop("disabled", keys.length < 1);
// DataTables(그리드) 전체 선택(checkbox) // DataTables(그리드) 전체 선택(checkbox)
if (keys.length < 1) { if (keys.length < 1) {
$("th input[type='checkbox']").prop("checked", false); // 체크 해제 $("th input[type='checkbox']").prop("checked", false); // 체크 해제
} else if (keys.length == ${infoPrefix}List.length) { } else if (keys.length == ${infoPrefix}List.length) {
$("th input[type='checkbox']").prop("checked", true); // 체크 설정 $("th input[type='checkbox']").prop("checked", true); // 체크 설정
} else { } else {
$("th input[type='checkbox']").prop("checked", false); // 체크 해제 $("th input[type='checkbox']").prop("checked", false); // 체크 해제
} }
}; };
// 수정 dialog // 상세정보 dialog
$P.control.getInfo = (params) => { $P.control.getInfo = (params) => {
if (!params) return; if (!params) return;
let dialogTitle = "";
if (params.callPurpose == "create") {
dialogTitle = $P.control.prefixName + " 등록";
} else if (params.callPurpose == "update") {
dialogTitle = $P.control.prefixName + " 수정";
} else {
dialogTitle = $P.control.prefixName + " 정보";
}
ajax.get({ ajax.get({
url : $P.control.urls.getInfo url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/020/info.do")
, data : params || {} , data: params || {}
, success : resp => { , success: resp => {
dialog.open({ dialog.open({
id : $P.control.prefixed("Dialog") id: $P.control.prefixed("Dialog")
, title : dialogTitle , title: params.title
, content : resp , content: resp
, size : $P.control.infoSize , size: $P.control.infoSize
, onClose : () => { $P.refreshList(); } , onClose: () => { $P.fnRefreshList(); } // 자료 재조회
}); });
} }
}); });
@ -459,17 +443,17 @@
// 삭제 callback // 삭제 callback
$P.control.onRemove = (resp) => { $P.control.onRemove = (resp) => {
let btnTitle = $("#btnRemoveOpnn--${pageName}").attr("title"); let btnTitle = $("#btnRemove--${pageName}").attr("title");
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, btnTitle); let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, btnTitle);
// 메시지 출력 // 메시지 출력
dialog.alert({ dialog.alert({
content : showMessage content: showMessage
, onOK : () => { } , onOK: () => { }
}); });
if (resp.saved) { if (resp.saved) {
$P.refreshList(); // 자료 재조회 $P.fnRefreshList(); // 자료 재조회
} }
} }
@ -478,9 +462,9 @@
if (!params) return; if (!params) return;
ajax.post({ ajax.post({
url : $P.control.urls.remove url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/010/remove.do")
, data : params , data: params || {}
, success : resp => $P.control.onRemove(resp) , success: resp => $P.control.onRemove(resp)
}); });
} }
@ -530,103 +514,47 @@
// DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트 // DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
$P.scrollDataList = () => { $P.scrollDataList = () => {
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false $P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false
$P.control.load($P.control.query.pageNum + 1); $P.control.load($P.control.query.pageNum + 1);
} }
/************************************************************************** // DataTables에 더블 클릭시 개별총정보 dialog
* 사용자 함수(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"
});
}
});
}
// 개별총정보 dialog
$P.getTotalInfo = (crdnId) => { $P.getTotalInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return; if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = { let params = {
callControlName : "pageObject['${pageName}'].control" callControlName: "pageObject['${pageName}'].control"
, sggCd : $("#sggCd--${pageName}").val() , sggCd: $("#sggCd--${pageName}").val()
, taskSeCd : $("input[name=taskSeCd]:checked").val() , taskSeCd: $("input[name=taskSeCd]:checked").val()
, crdnId : crdnId , crdnId: crdnId
} }
ajax.get({ ajax.get({
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do") url: wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params , data: params
, success : resp => { , success: resp => {
dialog.open({ dialog.open({
id : "totalInfoMainDialog" id: "totalInfoMainDialog"
, title : "개별총정보" , title: "개별총정보"
, content : resp , content: resp
, size : "xxl" , size: "xxl"
}); });
} }
}); });
} }
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 검색 자료 재조회 // 검색 자료 재조회
$P.refreshList = () => { $P.fnRefreshList = () => {
$P.control.untilPageNum = $P.control.query.pageNum; $P.control.untilPageNum = $P.control.query.pageNum;
$P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum; $P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum;
$P.control.load(1); $P.control.load(1);
} }
// 심의 정보 Dialog
$P.getDlbrInfo = (params) => {
if (!params) return;
ajax.get({
url : $P.control.urls.getDlbrInfo
, data : params || {}
, success : resp => {
dialog.open({
id : $P.control.prefixed("SbmsnDialog")
, title : $P.control.prefixName + " 심의"
, content : resp
, size : "lg"
, onClose : () => { $P.refreshList; }
});
}
});
}
// 사유 callback
$P.callbackRsn = (obj) => {
// 서버에 전송할 data(파라미터) 생성
let params = {};
params[$P.control.prefixed("IDs")] = selected.join(","); // IDs
params.delRsn = obj.reason; // 삭제 사유
$P.control.remove(params);
}
/************************************************************************** /**************************************************************************
* 버튼 clickEvent * 버튼 clickEvent
**************************************************************************/ **************************************************************************/
@ -639,8 +567,6 @@
// 초기 기본 설정 // 초기 기본 설정
$P.initForm(); $P.initForm();
// 기본 데이터 설정
$P.initData(taskSeCd);
// 업무 구분별 설정 // 업무 구분별 설정
$P.setTask(taskSeCd); $P.setTask(taskSeCd);
@ -648,12 +574,39 @@
$P.control.dataset.clear(); $P.control.dataset.clear();
} }
// 사용자검색 callback
$P.callbackFindUser = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
$("#schRgtrNm--${pageName}").val(userNm); // 사용자 명
}
// 사용자검색 버튼 클릭 이벤트
$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"
});
}
});
}
// 검색 버튼 이벤트 // 검색 버튼 이벤트
$P.fnSearchList = () => { $P.fnSearchList = () => {
// 검색조건 // 검색조건
$P.control.query = $P.formFields.get(); $P.control.query = $P.formFields.get(); // 검색 조건
$P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수 FETCH_XS = 30 $P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수 FETCH_XS = 30
$P.control.query.delYn = "N"; // 삭제 여부 $P.control.query.delYn = "N"; // 삭제 여부
$P.control.load(1); $P.control.load(1);
} }
@ -662,10 +615,9 @@
$P.fnExcel = () => { $P.fnExcel = () => {
if ($P.control.dataset.empty) { if ($P.control.dataset.empty) {
dialog.alert({ dialog.alert({
content : "검색된 자료가 없습니다." content: "검색된 자료가 없습니다."
, onOK : () => { } , onOK: () => { }
}); });
return; return;
} }
@ -677,75 +629,99 @@
$P.control.download(); $P.control.download();
} }
// 사용자 조회 버튼 이벤트 // 의견제출 수정 버튼 클릭 이벤트
$P.fnFindUser = () => { $P.fnUpdate = (title) => {
$P.getFindUser(); // 의견제출 ID
}
// 수정 버튼 클릭 이벤트
$P.fnUpdateOpnn = (title) => {
let opnnId = $P.control.dataset.getValue("OPNN_ID"); let opnnId = $P.control.dataset.getValue("OPNN_ID");
// 의견제출 ID 가 없다면.. return // 의견제출 ID 가 없다면.. return
if (typeof opnnId == "undefined" || opnnId == null || opnnId == "") return; if (typeof opnnId == "undefined" || opnnId == null || opnnId == "") return;
let params = { let params = {
title : title title: title
, callPurpose : "update" , callPurpose: "update" // 호출용도: 수정
, sggCd : $P.control.dataset.getValue("SGG_CD") // 시군구 코드 , sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드 , taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, opnnId : opnnId // 의견제출 ID , opnnId: opnnId // 의견제출 ID
}; };
$P.control.getInfo(params); $P.control.getInfo(params);
} }
// 심의 버튼 클릭 이벤트 // 의견제출 심의 버튼 클릭 이벤트
$P.fnUpdateOpnnDlbr = (title) => { $P.fnUpdateOpnnDlbr = (title) => {
// 의견제출 ID
let opnnId = $P.control.dataset.getValue("OPNN_ID"); let opnnId = $P.control.dataset.getValue("OPNN_ID");
// 의견제출 ID 가 없다면.. return // 의견제출 ID 가 없다면.. return
if (typeof opnnId == "undefined" || opnnId == null || opnnId == "") return; if (typeof opnnId == "undefined" || opnnId == null || opnnId == "") return;
let params = { let params = {
title : title title: title
, callPurpose : "update" , callPurpose: "update" // 호출용도: 수정
, sggCd : $P.control.dataset.getValue("SGG_CD") // 시군구 코드 , sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드 , taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, opnnId : opnnId // 의견제출 ID , opnnId: opnnId // 의견제출 ID
}; };
$P.getDlbrInfo(params); ajax.get({
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/030/info.do")
, data: params
, success: resp => {
dialog.open({
id: $P.control.prefixed("DlbrDialog")
, title: $P.control.prefixName + " 심의"
, content: resp
, size: "lg"
, onClose: () => { $P.fnRefreshList(); } // 자료 재조회
});
}
});
}
// 의견제출 삭제사유 callback
$P.callbackRsn = (obj) => {
// 서버에 전송할 data(파라미터) 생성
let params = {};
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);
} }
// 삭제 버튼 클릭 이벤트 // 의견제출 삭제 버튼 클릭 이벤트
$P.fnRemoveOpnn = (title) => { $P.fnRemove = (title) => {
// 선택 자료 // 선택 자료
let selected = $P.control.dataset.getKeys("selected"); let selected = $P.control.dataset.getKeys("selected");
if (selected.length < 1) return; if (selected.length < 1) {
dialog.alert({
content: "선택하신 의견제출 정보가 없습니다."
, onOK: () => { }
});
return;
}
// 삭제 메세지 확인 // 삭제 메세지 확인
dialog.alert({ dialog.alert({
content : "선택하신 " + selected.length + "건의 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?" content: "선택하신 " + selected.length + "건의 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?"
, onOK : async() => { , onOK: async() => {
// 삭제 사유 입력 // 삭제 사유 입력
var resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html")); let resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html"));
var template = await resp.text(); let template = await resp.text();
dialog.open({ dialog.open({
id : "inputDelRsnDialog", id: "inputDelRsnDialog"
title: title, , title: title
size : "lg", , size: "lg"
content: template, , content: template
init : () => { , init: () => { setDialogZindex(); }
setDialogZindex(); , onOK: () => {
},
onOK : () => {
$P.callbackRsn({ reason : $("#reason").val() }); $P.callbackRsn({ reason : $("#reason").val() });
} }
}); });
} }
}); });
} }
@ -759,7 +735,7 @@
$("#btnReset--${pageName}").on("click", () => $P.fnResetAndChangeBiz()); // 초기화 $("#btnReset--${pageName}").on("click", () => $P.fnResetAndChangeBiz()); // 초기화
$("#btnSearch--${pageName}").on("click", () => $P.fnSearchList()); // 검색 $("#btnSearch--${pageName}").on("click", () => $P.fnSearchList()); // 검색
$("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀 $("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀
$("#btnFindUser--${pageName}").on("click", () => $P.fnFindUser()); // 사용자 검색 $("#btnFindUser--${pageName}").on("click", () => $P.fnGetFindUser()); // 사용자 검색
// 동적검색에서 엔터(Enter) 키를 누르면 검색한다. // 동적검색에서 엔터(Enter) 키를 누르면 검색한다.
$("#term--${pageName}").keypress(function(e) { $("#term--${pageName}").keypress(function(e) {
@ -782,16 +758,16 @@
}); });
// 의견제출 수정 버튼 이벤트 // 의견제출 수정 버튼 이벤트
$("#btnUpdateOpnn--${pageName}").on("click", function() { $("#btnUpdate--${pageName}").on("click", function() {
$P.fnUpdateOpnn($(this).attr("title")); $P.fnUpdate($(this).attr("title"));
}); });
// 의견제출 심의 버튼 이벤트 // 의견제출 심의 버튼 이벤트
$("#btnUpdateOpnnDlbr--${pageName}").on("click", function() { $("#btnUpdateOpnnDlbr--${pageName}").on("click", function() {
$P.fnUpdateOpnnDlbr($(this).attr("title")); $P.fnUpdateOpnnDlbr($(this).attr("title"));
}); });
// 의견제출 삭제 버튼 이벤트 // 의견제출 삭제 버튼 이벤트
$("#btnRemoveOpnn--${pageName}").on("click", function() { $("#btnRemove--${pageName}").on("click", function() {
$P.fnRemoveOpnn($(this).attr("title")); $P.fnRemove($(this).attr("title"));
}); });
// DataTables width 변경 조정 // DataTables width 변경 조정
@ -821,14 +797,13 @@
// 달력 초기화 // 달력 초기화
initDatepicker("frmSearch--${pageName}"); initDatepicker("frmSearch--${pageName}");
$("#schRcptYmdFrom--${pageName}").datepicker("setDate", new Date());
$("#schRcptYmdTo--${pageName}").datepicker("setDate", new Date());
// 동적 검색 // 동적 검색
$("#byOutput--${pageName}").val("동적 검색"); $("#byOutput--${pageName}").val("동적 검색");
// 사용자 이름 // 사용자 이름
$("#schRgtrNm--${pageName}").prop("readonly", true); $("#schRgtrNm--${pageName}").prop("readonly", true);
// 기본 데이터 설정(업무구분)
$P.initData($("input[name=taskSeCd]:checked").val());
} }
// 기본 데이터 설정 // 기본 데이터 설정
@ -844,6 +819,9 @@
// 업무 구분별 설정 // 업무 구분별 설정
$P.setTask = (taskSeCd) => { $P.setTask = (taskSeCd) => {
// 검색 url
$P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/010/list.do");
let clsForTask = taskSeCd.toLowerCase(); let clsForTask = taskSeCd.toLowerCase();
// 업무별 조회조건 // 업무별 조회조건
@ -858,17 +836,6 @@
colsOuterHTML += this.outerHTML; colsOuterHTML += this.outerHTML;
}); });
$("#table-responsive--${pageName}")[0].changeColumn(colsOuterHTML); $("#table-responsive--${pageName}")[0].changeColumn(colsOuterHTML);
// 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/remove.do"); // 삭제
$P.control.urls.getInfo = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/020/info.do"); // 수정
$P.control.urls.getDlbrInfo = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/030/info.do"); // 심의
} }
/************************************************************************** /**************************************************************************

@ -12,9 +12,9 @@
<!-- 입력 영역 --> <!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit"> <form id="frmEdit--${pageName}" name="frmEdit">
<!-- hidden --> <!-- 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="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="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="opnnId--${pageName}" name="opnnId" data-map="OPNN_ID" /> <input type="hidden" id="opnnId--${pageName}" name="opnnId" data-map="OPNN_ID" />
<div class="row g-1"> <div class="row g-1">
@ -185,10 +185,8 @@
**************************************************************************/ **************************************************************************/
$(document).ready(function() { $(document).ready(function() {
// pageObject // pageObject
var $P = pageObject["${pageName}"]; let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/excl/excl02";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정) // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}"; $P.callPurpose = "${callPurpose}";
// FormFields // FormFields
@ -200,10 +198,10 @@
* DatasetControl * DatasetControl
**************************************************************************/ **************************************************************************/
$P.control = new DatasetControl({ $P.control = new DatasetControl({
prefix : "opnn" prefix: "opnn"
, prefixName : "의견제출" , prefixName: "의견제출"
, keymapper : info => info ? info.OPNN_ID : "" , keymapper: info => info ? info.OPNN_ID : ""
, dataGetter : obj => obj.opnnSbmsnInfo , dataGetter: obj => obj.${infoPrefix}Info
}); });
/************************************************************************** /**************************************************************************
@ -214,10 +212,9 @@
if (!item) return; if (!item) return;
// Dataset 셋팅 // Dataset 셋팅
$P.formFields.set($P.control.item); $P.formFields.set($P.control, item);
// 업무구분에 따른 URL 변경 // 업무구분에 따른 URL 변경
$P.setURL(item.data.TASK_SE_CD); $P.fnSetURL(item.data.TASK_SE_CD);
// 호출용도가 등록 이라면.. // 호출용도가 등록 이라면..
if ($P.callPurpose == "create") { if ($P.callPurpose == "create") {
@ -235,8 +232,8 @@
// 메시지 출력 // 메시지 출력
dialog.alert({ dialog.alert({
content : showMessage content: showMessage
, onOK : () => { } , onOK: () => { }
}); });
if (resp.saved) { if (resp.saved) {
@ -251,36 +248,34 @@
$P.control.save = (info) => { $P.control.save = (info) => {
if (!info) return; if (!info) return;
let formData = new FormData();
let create = ($P.callPurpose == "create"); let create = ($P.callPurpose == "create");
let formData = new FormData();
// 첨부파일 배열에 있는 내용을 등록 // 첨부파일 배열에 있는 내용을 등록
for (let iLoop = 0; iLoop < $P.fileListArr.length; iLoop++) { for (let iLoop = 0; iLoop < $P.fileListArr.length; iLoop++) {
formData.append("uploadFiles" , $P.fileListArr[iLoop]); formData.append("uploadFiles" , $P.fileListArr[iLoop]);
} }
for (let key in info) { for (let key in info) {
let value = info[key]; let value = info[key];
formData.append(key, value); formData.append(key, value);
} }
ajax.post({ ajax.post({
url : !create ? $P.control.urls.update : $P.control.urls.create url: !create ? $P.control.urls.update : $P.control.urls.create
, data : formData , data: formData
, contentType : false , contentType: false
, processData : false , processData: false
, success : resp => $P.control.onSave(resp) , success: resp => $P.control.onSave(resp)
}); });
} }
/************************************************************************** /**************************************************************************
* 사용자 함수(function) * 사용자 함수(function)
**************************************************************************/ **************************************************************************/
// 주소 검색 결과 callback // 업무구분에 따른 url 변경
$P.callbackSearchAddr = (obj) => { $P.fnSetURL = (taskSeCd) => {
$("#sttrAddr--${pageName}").val(obj.ADDR); // 주소 $P.control.urls.create = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/020/create.do"); // 등록
$("#sttrZip--${pageName}").val(obj.ZIP); // 우편번호 $P.control.urls.update = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/020/update.do"); // 수정
$("#sttrDaddr--${pageName}").val(obj.DTL_ADDR); // 상세 주소
} }
/************************************************************************** /**************************************************************************
@ -303,41 +298,45 @@
$("#sttrEml--${pageName}").val($P.control.getValue("RTPYR_EML")); $("#sttrEml--${pageName}").val($P.control.getValue("RTPYR_EML"));
} }
// 주소 검색 결과 callback
$P.callbackSearchAddr = (obj) => {
$("#sttrAddr--${pageName}").val(obj.ADDR); // 주소
$("#sttrZip--${pageName}").val(obj.ZIP); // 우편번호
$("#sttrDaddr--${pageName}").val(obj.DTL_ADDR); // 상세 주소
}
// 주소 검색 // 주소 검색
$P.fnSearchAddr = async(title) => { $P.fnSearchAddr = async(title) => {
let resp = await fetch(wctx.url("/resources/html/searchAddr.html"));
var resp = await fetch(wctx.url("/resources/html/searchAddr.html")); let template = await resp.text();
var template = await resp.text();
dialog.open({ dialog.open({
id : "searchAddrDialog", id: "searchAddrDialog"
title: title, , title: title
size : "lg", , size: "lg"
content: template, , content: template
init : () => { , init: () => {
$("#searchAddrCallback").val("pageObject['${pageName}'].callbackSearchAddr"); $("#searchAddrCallback").val("pageObject['${pageName}'].callbackSearchAddr");
setDialogZindex(); setDialogZindex();
} }
}); });
} }
// 첨부파일 조회 // 첨부파일 조회
$P.fnSearchFileList = (opnnId) => { $P.fnSearchFileList = (opnnId) => {
// 의견제출 등록일 경우에는 첨부파일을 조회하지 안는다.. // 의견제출 등록일 경우에는 첨부파일을 조회하지 안는다..
if (opnnId == null || opnnId == "") { if (opnnId == null || opnnId == "") return;
return;
}
// 첨부파일 리스트 // 첨부파일 리스트
ajax.get({ ajax.get({
url : "file/list.do" url: "file/list.do"
, data : { , data: {
infoType : "110" infoType: "110"
, infoKeys : opnnId , infoKeys: opnnId
, fetchSize : 0 , fetchSize: 0
} }
, success : resp => { , success: resp => {
let fileNo = 0; let fileNo = 0;
let fileList = resp.fileList; let fileList = resp.fileList;
@ -345,16 +344,13 @@
fileNo = index + 1; fileNo = index + 1;
let innerHtml = ""; let innerHtml = "";
innerHtml += "<tr>"; innerHtml += "<tr>";
innerHtml += "<td class='text-center'>" + fileNo + "</td>"; innerHtml += "<td class='text-center'>" + fileNo + "</td>";
innerHtml += "<td class='text-center'>" + item.FILE_ID + "</td>"; innerHtml += "<td class='text-center'>" + item.FILE_ID + "</td>";
innerHtml += "<td class='text-center'>" + item.FILE_NM + "</td>"; innerHtml += "<td class='text-center'>" + item.FILE_NM + "</td>";
innerHtml += "<td class='text-center'>" + item.FILE_SIZE + " byte</td>"; innerHtml += "<td class='text-center'>" + item.FILE_SIZE + " byte</td>";
// innerHtml += "<td class='text-center'>" + "<button type='button' class='btn' onclick='fnFileDownload${pageName}(" + item.FILE_ID + ");'><i class='bx bx-download me-1'></i></button>" + "</td>";
innerHtml += "<td class='text-center'>" + "<button type='button' class='btn' onclick="; innerHtml += "<td class='text-center'>" + "<button type='button' class='btn' onclick=";
innerHtml += "pageObject['${pageName}'].fnFileDownload(" + item.FILE_ID + ");" + "><i class='bx bx-download me-1'></i></button>" + "</td>"; innerHtml += "pageObject['${pageName}'].fnFileDownload(" + item.FILE_ID + ");" + "><i class='bx bx-download me-1'></i></button>" + "</td>";
// innerHtml += "<td class='text-center'>" + "<button type='button' class='btn' onclick='fnFileRemove${pageName}(this);'><i class='bx bx-trash me-1'></i></button>" + "</td>";
innerHtml += "<td class='text-center'>" + "<button type='button' class='btn' onclick="; innerHtml += "<td class='text-center'>" + "<button type='button' class='btn' onclick=";
innerHtml += "pageObject['${pageName}'].fnFileRemove(this);" + "><i class='bx bx-trash me-1'></i></button>" + "</td>"; innerHtml += "pageObject['${pageName}'].fnFileRemove(this);" + "><i class='bx bx-trash me-1'></i></button>" + "</td>";
innerHtml += "</tr>"; innerHtml += "</tr>";
@ -380,7 +376,6 @@
dialog.alert({ dialog.alert({
content : "첨부파일은 최대 " + maxFileCnt + "개 까지 첨부 가능합니다." content : "첨부파일은 최대 " + maxFileCnt + "개 까지 첨부 가능합니다."
}); });
return; return;
} }
@ -410,19 +405,18 @@
// 첨부파일 삭제 아이콘 클릭 이벤트 // 첨부파일 삭제 아이콘 클릭 이벤트
$P.fnFileRemove = (obj) => { $P.fnFileRemove = (obj) => {
dialog.alert({ dialog.alert({
content : "선택한 파일을 삭제하시겠습니까?" content: "선택한 파일을 삭제하시겠습니까?"
, onOK : () => { , onOK: () => {
let tr = $(obj).parent().parent(); // 클릭한 버튼이 속한 tr 요소 let tr = $(obj).parent().parent(); // 클릭한 버튼이 속한 tr 요소
let td = tr.children(); let td = tr.children();
let fileNo = td.eq(0).text(); // 삭제할 파일 번호 let fileNo = td.eq(0).text(); // 삭제할 파일 번호
let fileId = td.eq(1).text(); let fileId = td.eq(1).text();
if (fileId != null && fileId != "") { if (fileId != null && fileId != "") {
ajax.post({ ajax.post({
url : "file/remove.do" url: "file/remove.do"
, data : { fileIDs : fileId } , data: { fileIDs : fileId }
, success : resp => { , success: resp => { // 성공
// 성공
} }
}); });
} else { } else {
@ -430,7 +424,7 @@
$P.fileListArr.splice(fileNo - 1); $P.fileListArr.splice(fileNo - 1);
} }
$(obj).closest("tr").remove(); // table 에서 제거 $(obj).closest("tr").remove(); // table 에서 제거
} }
}); });
} }
@ -441,18 +435,14 @@
} }
// 저장 // 저장
$P.fnSave = (title) => { $P.fnSave = () => {
// validate 확인 // validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return; if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
dialog.alert({ dialog.alert({
content : "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?" content: "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => { , onOK: () => {
// 파리미터 설정 $P.control.save($P.formFields.get()); // formFields
let params = $P.formFields.get(); // formFields
params.title = title; // 타이틀
$P.control.save(params);
} }
}); });
} }
@ -484,13 +474,9 @@
$P.fnSearchAddr($(this).attr("title")); $P.fnSearchAddr($(this).attr("title"));
}); });
// 파일 등록 버튼 이벤트 // 파일 등록 버튼 이벤트
$("#btnAddFile--${pageName}").on('click', function() { $("#btnAddFile--${pageName}").on('click', () => $("#uploadFiles--${pageName}").trigger("click"));
$("#uploadFiles--${pageName}").trigger("click");
});
// 저장 버튼 이벤트 // 저장 버튼 이벤트
$("#btnSave--${pageName}").on("click", function() { $("#btnSave--${pageName}").on("click", () => $P.fnSave());
$P.fnSave($(this).attr("title"));
});
} }
// 초기 화면 설정 // 초기 화면 설정
@ -507,6 +493,7 @@
$("#crdnYmdTm--${pageName}").prop("readonly", true); // 단속 일자 $("#crdnYmdTm--${pageName}").prop("readonly", true); // 단속 일자
$("#rtpyrNm--${pageName}").prop("readonly", true); // 납부자 명 $("#rtpyrNm--${pageName}").prop("readonly", true); // 납부자 명
// View로 호출
if ($P.callPurpose == "view") { if ($P.callPurpose == "view") {
// input 요소들을 disabled // input 요소들을 disabled
$("#frmEdit--${pageName}").find("input,textarea,select").prop("disabled", true); $("#frmEdit--${pageName}").find("input,textarea,select").prop("disabled", true);
@ -519,17 +506,9 @@
} else if ($P.callPurpose == "create") { } else if ($P.callPurpose == "create") {
$("#rcptNo--${pageName}").prop("readonly", true); // 접수 번호 $("#rcptNo--${pageName}").prop("readonly", true); // 접수 번호
$("#rcptYmd--${pageName}").datepicker("setDate", new Date()); // 접수 일자 $("#rcptYmd--${pageName}").datepicker("setDate", new Date()); // 접수 일자
} else if ($P.callPurpose == "update") {
//
} }
} }
// 업무구분에 따른 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"); // 수정
}
/************************************************************************** /**************************************************************************
* 최초 실행 함수 * 최초 실행 함수
**************************************************************************/ **************************************************************************/

@ -66,7 +66,7 @@
<!-- 의견 제출 상태 코드 --> <!-- 의견 제출 상태 코드 -->
<div class="col-md-6"> <div class="col-md-6">
<label for="opnnSbmsnSttsCd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">심의결과</label> <label for="opnnSbmsnSttsCd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">심의결과</label>
<select class="form-select" id="opnnSbmsnSttsCd--${pageName}" name="opnnSbmsnSttsCd" data-map="OPNN_SBMSN_STTS_CD" onchange="fnChangeOpnnSbmsnSttsCd(this.value);" required> <select class="form-select" id="opnnSbmsnSttsCd--${pageName}" name="opnnSbmsnSttsCd" data-map="OPNN_SBMSN_STTS_CD" onchange="pageObject['${pageName}'].fnChangeOpnnSbmsnSttsCd(this.value);" required>
<option value="">선택하세요</option> <option value="">선택하세요</option>
<c:forEach items="${FIM031List}" var="item"> <c:forEach items="${FIM031List}" var="item">
<option value="${item.code}">${item.value}</option> <option value="${item.code}">${item.value}</option>
@ -130,10 +130,8 @@
**************************************************************************/ **************************************************************************/
$(document).ready(function() { $(document).ready(function() {
// pageObject // pageObject
var $P = pageObject["${pageName}"]; let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/excl/excl02";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정) // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}"; $P.callPurpose = "${callPurpose}";
// FormFields // FormFields
@ -143,10 +141,10 @@
* DatasetControl * DatasetControl
**************************************************************************/ **************************************************************************/
$P.control = new DatasetControl({ $P.control = new DatasetControl({
prefix : "opnnSbmsn" prefix: "opnnDlbr"
, prefixName : "의견제출 심의" , prefixName: "의견제출 심의"
, keymapper : info => info ? info.OPNN_ID : "" , keymapper: info => info ? info.OPNN_ID : ""
, dataGetter : obj => obj.opnnSbmsnInfo , dataGetter: obj => obj.${infoPrefix}Info
}); });
/************************************************************************** /**************************************************************************
@ -157,20 +155,15 @@
if (!item) return; if (!item) return;
// Dataset 셋팅 // Dataset 셋팅
$P.formFields.set($P.control,item); $P.formFields.set($P.control, item);
// 업무구분에 따른 URL 변경 // 업무구분에 따른 URL 변경
$P.setURL(item.data.TASK_SE_CD); $P.fnSetURL(item.data.TASK_SE_CD);
// 의견제출 상태 코드 변경
//
$P.fnChangeOpnnSbmsnSttsCd(item.data.OPNN_SBMSN_STTS_CD); $P.fnChangeOpnnSbmsnSttsCd(item.data.OPNN_SBMSN_STTS_CD);
// 호출용도가 등록 이라면.. if (item.data.ANS_YMD == null || item.data.ANS_YMD == "") {
if ($P.callPurpose == "create") { $("#ansYmd--${pageName}").datepicker("setDate", new Date()); // 날짜
// 날짜 $("#ansTm--${pageName}").val(new Date().toTimeString().split(" ")[0]); // 시간 "09:51:35 GMT+0900 (한국 표준시)"의 형식에서 공백을 기준으로 잘라 시간 부분만 가져와줍니다.
$("#ansYmd--${pageName}").datepicker("setDate", new Date());
// 시간 "09:51:35 GMT+0900 (한국 표준시)"의 형식에서 공백을 기준으로 잘라 시간 부분만 가져와줍니다.
$("#ansTm--${pageName}").val(new Date().toTimeString().split(" ")[0]);
} }
} }
@ -181,8 +174,8 @@
// 메시지 출력 // 메시지 출력
dialog.alert({ dialog.alert({
content : showMessage content: showMessage
, onOK : () => { } , onOK: () => { }
}); });
if (resp.saved) { if (resp.saved) {
@ -195,27 +188,36 @@
if (!info) return; if (!info) return;
ajax.post({ ajax.post({
url : $P.control.urls.update url: $P.control.urls.update
, data : info , data: info
, success : resp => $P.control.onSave(resp) , success: resp => $P.control.onSave(resp)
}); });
} }
/************************************************************************** /**************************************************************************
* 사용자 함수(function) * 사용자 함수(function)
**************************************************************************/ **************************************************************************/
// 업무구분에 따른 URL 설정
$P.fnSetURL = (taskSeCd) => {
$P.control.urls.update = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/030/update.do"); // 수정
}
// 의견제출 상태 코드 변경
$P.fnChangeOpnnSbmsnSttsCd = (obj) => { $P.fnChangeOpnnSbmsnSttsCd = (obj) => {
// javascript를 이용한 visibility 변경 (이 방법을 사용하는 경우, 안에 있는 요소들이 보이지않지만 그 요소들이 할당 하고 있는 공간은 그대로 유지(공백처리)) // javascript를 이용한 visibility 변경 (이 방법을 사용하는 경우, 안에 있는 요소들이 보이지않지만 그 요소들이 할당 하고 있는 공간은 그대로 유지(공백처리))
// document.getElementById("divRductRsnCd--${pageName}").style.visibility = "hidden"; // document.getElementById("divRductRsnCd--${pageName}").style.visibility = "hidden";
// document.getElementById("divRductRsnCd--${pageName}").style.visibility = "visible"; // document.getElementById("divRductRsnCd--${pageName}").style.visibility = "visible";
$("#divRductRsnCd--${pageName}").hide(); $("#divRductRsnCd--${pageName}").hide();
$("#divRductAmt--${pageName}").hide(); $("#divRductAmt--${pageName}").hide();
$("#rductRsnCd--${pageName}").attr("required", false);
$("#rductAmt--${pageName}").attr("required", false);
if (obj == "04") { if (obj == "04") { // 의견제출 상태 코드(FIM031) 04: 과태료감경
// 필수 선택 추가 필요 // 필수 선택 추가 필요
$("#divRductRsnCd--${pageName}").show(); $("#divRductRsnCd--${pageName}").show();
$("#divRductAmt--${pageName}").show(); $("#divRductAmt--${pageName}").show();
$("#rductRsnCd--${pageName}").attr("required", true);
$("#rductAmt--${pageName}").attr("required", true);
} }
} }
@ -223,7 +225,7 @@
* 버튼 clickEvent * 버튼 clickEvent
**************************************************************************/ **************************************************************************/
// 저장 // 저장
$P.fnSave = (title) => { $P.fnSave = () => {
// validate 확인 // validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return; if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
@ -234,21 +236,17 @@
if (opnnSbmsnSttsCd == "04" && rductRsnCd == "00") { if (opnnSbmsnSttsCd == "04" && rductRsnCd == "00") {
dialog.alert({ dialog.alert({
content : "감경사유가 '" + rductRsnNm + "' 입니다." content: "감경사유가 '" + rductRsnNm + "' 입니다."
+ "<br>" + "[" + title + "]" + " 실행이 취소되었습니다." + "<br>" + "[" + $P.control.prefixName + " 저장" + "]" + " 실행이 취소되었습니다."
, onOK : () => { } , onOK: () => { }
}); });
return; return;
} }
dialog.alert({ dialog.alert({
content : "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?" content: "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => { , onOK: () => {
// 파리미터 설정 $P.control.save($P.formFields.get()); // formFields
let params = $P.formFields.get(); // formFields
params.title = title; // 타이틀
$P.control.save(params);
} }
}); });
} }
@ -285,9 +283,7 @@
}); });
// 저장 버튼 이벤트 // 저장 버튼 이벤트
$("#btnSave--${pageName}").on("click", function() { $("#btnSave--${pageName}").on("click", () => $P.fnSave());
$P.fnSave($(this).attr("title"));
});
} }
// 초기 화면 설정 // 초기 화면 설정
@ -306,11 +302,6 @@
} }
} }
// 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => {
$P.control.urls.update = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/030/update.do"); // 수정
}
/************************************************************************** /**************************************************************************
* 최초 실행 함수 * 최초 실행 함수
**************************************************************************/ **************************************************************************/

@ -37,8 +37,8 @@
<div class="row g-1"> <div class="row g-1">
<!-- 접수 번호 --> <!-- 접수 번호 -->
<div class="col-md-4"> <div class="col-md-4">
<label for="rcptNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">접수번호</label> <label for="rcptNoMask--${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="rcptNo--${pageName}" name="rcptNo" data-map="RCPT_NO" readonly /> <input type="text" class="form-control w-30" id="rcptNoMask--${pageName}" name="rcptNoMask" data-map="RCPT_NO_MASK" readonly />
</div> </div>
<!-- 접수 일자 --> <!-- 접수 일자 -->
<div class="col-md-4"> <div class="col-md-4">
@ -57,8 +57,8 @@
</div> </div>
<!-- 진술자 생년월일 --> <!-- 진술자 생년월일 -->
<div class="col-md-4"> <div class="col-md-4">
<label for="sttrBrdt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">생년월일</label> <label for="sttrBrdtMask--${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_FORMAT" placeholder="YY-MM-DD" readonly /> <input type="text" class="form-control w-25" id="sttrBrdtMask--${pageName}" name="sttrBrdtMask" data-map="STTR_BRDT_MASK" readonly />
</div> </div>
<!-- 소유주 관계 구분 명 --> <!-- 소유주 관계 구분 명 -->
<div class="col-md-4"> <div class="col-md-4">
@ -94,7 +94,7 @@
<!-- 의견 제출 구분 명 --> <!-- 의견 제출 구분 명 -->
<div class="col-md-4"> <div class="col-md-4">
<label for="opnnSbmsnSeNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">의견제출구분</label> <label for="opnnSbmsnSeNm--${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="opnnSbmsnSeNm--${pageName}" name="opnnSbmsnSeNm" data-map="OPNN_SBMSN_SE_NM" readonly /> <input type="text" class="form-control w-50" id="opnnSbmsnSeNm--${pageName}" name="opnnSbmsnSeNm" data-map="OPNN_SBMSN_SE_NM" readonly />
</div> </div>
<!-- 의견 제출 요지 --> <!-- 의견 제출 요지 -->
<div class="col-md-8"> <div class="col-md-8">
@ -188,7 +188,7 @@
**************************************************************************/ **************************************************************************/
$(document).ready(function() { $(document).ready(function() {
// pageObject // pageObject
var $P = pageObject["${pageName}"]; let $P = pageObject["${pageName}"];
// FormFields // FormFields
$P.formFields = new FimsFormFields("#frmEdit--${pageName}"); $P.formFields = new FimsFormFields("#frmEdit--${pageName}");
@ -199,13 +199,13 @@
* DatasetControl * DatasetControl
**************************************************************************/ **************************************************************************/
$P.control = new DatasetControl({ $P.control = new DatasetControl({
prefix : "opnn" prefix: "opnn"
, prefixName : "의견제출" , prefixName: "의견제출"
, keymapper : info => info ? info.OPNN_ID : "" , keymapper: info => info ? info.OPNN_ID : ""
, dataGetter : obj => obj.opnnSbmsn , dataGetter: obj => obj.opnnSbmsn
, formats : { , formats: {
RCPT_YMD : dateFormat RCPT_YMD: dateFormat
, ANS_YMD_TM : datetimeFormat , ANS_YMD_TM: datetimeFormat
} }
}); });
@ -216,7 +216,7 @@
$P.control.onCurrentChange = item => { $P.control.onCurrentChange = item => {
if (!item) return; if (!item) return;
$P.formFields.set($P.control,item); $P.formFields.set($P.control, item);
let key = item.data.OPNN_ID; let key = item.data.OPNN_ID;
@ -231,9 +231,9 @@
if (!params) return; if (!params) return;
ajax.get({ ajax.get({
url : wctx.url("/" + params.taskSeCd + "/excl/excl02/020/info.do") url: wctx.url("/" + params.taskSeCd + "/excl/excl02/020/info.do")
, data : params || {} , data: params || {}
, success : resp => { , success: resp => {
if ((typeof resp) != "string") { if ((typeof resp) != "string") {
if (resp.rtnMsg != "") { if (resp.rtnMsg != "") {
dialog.alert(resp.rtnMsg); dialog.alert(resp.rtnMsg);
@ -241,11 +241,11 @@
return; return;
} else { } else {
dialog.open({ dialog.open({
id : $P.control.prefixed("Dialog") id: $P.control.prefixed("Dialog")
, title : params.title , title: params.title
, content : resp , content: resp
, size : "lg" , size: "lg"
, onClose : () => { $P.refreshDataInfo(); } , onClose: () => { $P.refreshDataInfo(); }
}); });
} }
} }
@ -258,12 +258,12 @@
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, btnTitle); let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, btnTitle);
dialog.alert({ dialog.alert({
content : showMessage content: showMessage
, onOK : () => { } , onOK: () => { }
}); });
if (resp.saved) { if (resp.saved) {
$P.refreshDataInfo(); // 자료 재조회 $P.refreshDataInfo(); // 자료 재조회
} }
} }
@ -272,9 +272,9 @@
if (!params) return; if (!params) return;
ajax.post({ ajax.post({
url : wctx.url("/" + params.taskSeCd + "/excl/excl02/010/remove.do") url: wctx.url("/" + params.taskSeCd + "/excl/excl02/010/remove.do")
, data : params || {} , data: params || {}
, success : resp => $P.control.onRemove(resp) , success: resp => $P.control.onRemove(resp)
}); });
} }
@ -289,21 +289,21 @@
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return; if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = { let params = {
callPurpose : "refresh" callPurpose: "refresh"
, crdnId : crdnId , crdnId: crdnId
, sggCd : $("#sggCd--${pageNameMain}").val() , sggCd: $("#sggCd--${pageNameMain}").val()
, taskSeCd : $("#taskSeCd--${pageNameMain}").val() , taskSeCd: $("#taskSeCd--${pageNameMain}").val()
, delYn : "N" , delYn: "N"
}; };
ajax.get({ ajax.get({
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/030/info.do") url: wctx.url("/" + params.taskSeCd + "/sprt/sprt02/030/info.do")
, headers: { Accept: "application/json; charset=utf-8" } // json , headers: { Accept: "application/json; charset=utf-8" } // json
, data : params || {} , data: params || {}
, success : resp => { , success: resp => {
// 초기화 // 초기화
$("#frmEdit--${pageName}")[0].reset(); // 화면 초기화 $("#frmEdit--${pageName}")[0].reset(); // 화면 초기화
$P.control.dataset.clear(); // Dataset 초기화 $P.control.dataset.clear(); // Dataset 초기화
// 의견제출 정보 // 의견제출 정보
if (resp.opnnSbmsn) { if (resp.opnnSbmsn) {
@ -322,15 +322,15 @@
if (!params) return; if (!params) return;
ajax.get({ ajax.get({
url : wctx.url("/" + params.taskSeCd + "/excl/excl02/030/info.do") url: wctx.url("/" + params.taskSeCd + "/excl/excl02/030/info.do")
, data : params || {} , data: params || {}
, success : resp => { , success: resp => {
dialog.open({ dialog.open({
id : "opnnSbmsnDialog" id: "opnnDlbrDialog"
, title : params.title , title: params.title
, content : resp , content: resp
, size : "lg" , size: "lg"
, onClose : () => { $P.refreshDataInfo(); } , onClose: () => { $P.refreshDataInfo(); }
}); });
} }
}); });
@ -340,11 +340,11 @@
$P.callbackRsn = (obj) => { $P.callbackRsn = (obj) => {
// 서버에 전송할 data(파라미터) 생성 // 서버에 전송할 data(파라미터) 생성
let params = { let params = {
callPurpose : "remove" callPurpose: "remove"
, opnnId : $P.control.dataset.getValue("OPNN_ID") // 의견제출 ID , sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, sggCd : $P.control.dataset.getValue("SGG_CD") // 시군구 코드 , taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드 , opnnId: $P.control.dataset.getValue("OPNN_ID") // 의견제출 ID
, delRsn : obj.reason // 삭제 사유 , delRsn: obj.reason // 삭제 사유
}; };
$P.control.remove(params); $P.control.remove(params);
@ -357,8 +357,8 @@
let url = wctx.url("/" + params.taskSeCd + "/excl/excl02/010/makeHwp.do") let url = wctx.url("/" + params.taskSeCd + "/excl/excl02/010/makeHwp.do")
let parameter = toQuery({ let parameter = toQuery({
opnnIds : params.opnnIds opnnIds: params.opnnIds
, taskSeCd : params.taskSeCd , taskSeCd: params.taskSeCd
}); });
document.location.href = url + "?" + parameter; document.location.href = url + "?" + parameter;
@ -380,20 +380,20 @@
// 단속 상태 코드 확인 // 단속 상태 코드 확인
if (Number(crdnSttsCd) < 01 || Number(crdnSttsCd) > 45) { if (Number(crdnSttsCd) < 01 || Number(crdnSttsCd) > 45) {
dialog.alert({ dialog.alert({
content : "[" + title + "]" + " 작업은 단속상태가 '부과 이전' 자료만 처리 가능합니다." content: "[" + title + "]" + " 작업은 단속상태가 '부과 이전' 자료만 처리 가능합니다."
+ "<br>" + "단속상태 : " + crdnSttsNm + "<br>" + "단속상태 : " + crdnSttsNm
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다." + "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."
, onOK : () => { } , onOK: () => { }
}); });
return; return;
} }
let params = { let params = {
callPurpose : "create" callPurpose: "create"
, title : title , title: title
, crdnId : crdnId // 단속 ID , sggCd: $("#sggCd--${pageNameMain}").val() // 시군구 코드
, sggCd : $("#sggCd--${pageNameMain}").val() // 시군구 코드 , taskSeCd: $("#taskSeCd--${pageNameMain}").val() // 업무 구분 코드
, taskSeCd : $("#taskSeCd--${pageNameMain}").val() // 업무 구분 코드 , crdnId: crdnId // 단속 ID
}; };
$P.control.getInfo(params); $P.control.getInfo(params);
@ -406,19 +406,19 @@
// 의견제출 ID 가 없다면.. return // 의견제출 ID 가 없다면.. return
if (typeof opnnId == "undefined" || opnnId == null || opnnId == "") { if (typeof opnnId == "undefined" || opnnId == null || opnnId == "") {
dialog.alert({ dialog.alert({
content : "조회된 의견제출 대장 정보가 없습니다." content: "조회된 의견제출 대장 정보가 없습니다."
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다." + "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."
, onOK : () => { } , onOK: () => { }
}); });
return; return;
} }
let params = { let params = {
callPurpose : "update" callPurpose: "update"
, title : title , title: title
, opnnId : opnnId // 의견제출 ID , sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, sggCd : $P.control.dataset.getValue("SGG_CD") // 시군구 코드 , taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드 , opnnId: opnnId // 의견제출 ID
}; };
$P.control.getInfo(params); $P.control.getInfo(params);
@ -431,9 +431,9 @@
// 의견제출 ID 가 없다면.. return // 의견제출 ID 가 없다면.. return
if (typeof opnnId == "undefined" || opnnId == null || opnnId == "") { if (typeof opnnId == "undefined" || opnnId == null || opnnId == "") {
dialog.alert({ dialog.alert({
content : "조회된 의견제출 대장 정보가 없습니다." content: "조회된 의견제출 대장 정보가 없습니다."
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다." + "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."
, onOK : () => { } , onOK: () => { }
}); });
return; return;
} }
@ -444,31 +444,29 @@
// 의견제출 상태 코드 확인 // 의견제출 상태 코드 확인
if (opnnSbmsnSttsCd != '00' && opnnSbmsnSttsCd != '03') { if (opnnSbmsnSttsCd != '00' && opnnSbmsnSttsCd != '03') {
dialog.alert({ dialog.alert({
content : "[" + title + "]" + " 작업은 심의결과가 '접수', '자진취하' 자료만 삭제 가능합니다." content: "[" + title + "]" + " 작업은 심의결과가 '접수', '자진취하' 자료만 삭제 가능합니다."
+ "<br>" + "심의결과 : " + opnnSbmsnSttsNm + "<br>" + "심의결과 : " + opnnSbmsnSttsNm
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다." + "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."
, onOK : () => { } , onOK: () => { }
}); });
return; return;
} }
// 삭제 메세지 확인 // 삭제 메세지 확인
dialog.alert({ dialog.alert({
content : "선택한 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?" content: "선택한 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?"
, onOK : async() => { , onOK: async() => {
// 사유 입력 // 사유 입력
var resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html")); let resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html"));
var template = await resp.text(); let template = await resp.text();
dialog.open({ dialog.open({
id : "inputDelRsnDialog", id: "inputDelRsnDialog"
title: title, , title: title
size : "lg", , size: "lg"
content: template, , content: template
init : () => { , init: () => { setDialogZindex(); }
setDialogZindex(); , onOK : () => {
},
onOK : () => {
$P.callbackRsn({ reason : $("#reason").val() }); $P.callbackRsn({ reason : $("#reason").val() });
} }
}); });
@ -483,19 +481,19 @@
// 의견제출 ID 가 없다면.. return // 의견제출 ID 가 없다면.. return
if (typeof opnnId == "undefined" || opnnId == null || opnnId == "") { if (typeof opnnId == "undefined" || opnnId == null || opnnId == "") {
dialog.alert({ dialog.alert({
content : "조회된 의견제출 대장 정보가 없습니다." content: "조회된 의견제출 대장 정보가 없습니다."
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다." + "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."
, onOK : () => { } , onOK: () => { }
}); });
return; return;
} }
let params = { let params = {
callPurpose : "download" callPurpose: "download"
, title : title , title: title
, opnnIds : opnnId // 의견제출 ID , sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, sggCd : $P.control.dataset.getValue("SGG_CD") // 시군구 코드 , taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드 , opnnIds: opnnId // 의견제출 ID
}; };
$P.makeHwpFileDlbrDecsn(params); $P.makeHwpFileDlbrDecsn(params);
@ -508,9 +506,9 @@
// 의견제출 ID 가 없다면.. return // 의견제출 ID 가 없다면.. return
if (typeof opnnId == "undefined" || opnnId == null || opnnId == "") { if (typeof opnnId == "undefined" || opnnId == null || opnnId == "") {
dialog.alert({ dialog.alert({
content : "조회된 의견제출 대장 정보가 없습니다." content: "조회된 의견제출 대장 정보가 없습니다."
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다." + "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."
, onOK : () => { } , onOK: () => { }
}); });
return; return;
} }
@ -521,20 +519,20 @@
// 단속 상태 코드 확인 // 단속 상태 코드 확인
if ( (Number(crdnSttsCd) != 82 && Number(crdnSttsCd) != 87) && (Number(crdnSttsCd) < 21 || Number(crdnSttsCd) > 45) ) { if ( (Number(crdnSttsCd) != 82 && Number(crdnSttsCd) != 87) && (Number(crdnSttsCd) < 21 || Number(crdnSttsCd) > 45) ) {
dialog.alert({ dialog.alert({
content : "[" + title + "]" + " 작업은 단속상태가 '의견제출수용', '경찰서이첩', '부과 이전' 자료만 처리 가능합니다." content: "[" + title + "]" + " 작업은 단속상태가 '의견제출수용', '경찰서이첩', '부과 이전' 자료만 처리 가능합니다."
+ "<br>" + "단속상태 : " + crdnSttsNm + "<br>" + "단속상태 : " + crdnSttsNm
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다." + "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."
, onOK : () => { } , onOK: () => { }
}); });
return; return;
} }
let params = { let params = {
callPurpose : "update" callPurpose: "update"
, title : title , title: title
, opnnId : opnnId // 의견제출 ID , sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, sggCd : $P.control.dataset.getValue("SGG_CD") // 시군구 코드 , taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드 , opnnId: opnnId // 의견제출 ID
}; };
$P.getOpnnSbmsnDlbrtInfo(params); $P.getOpnnSbmsnDlbrtInfo(params);

Loading…
Cancel
Save