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("TASK_SE_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("OWNR_REL_NM"));
writer.setValue("진술자주소", one.string("STTR_WHOL_ADDR"));

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

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

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

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

@ -50,6 +50,11 @@ public class OpnnSbmsnServiceBean extends AbstractServiceBean implements OpnnSbm
return opnnSbmsnBean.getOpnnSbmsnInfo(req);
}
@Override
public List<DataObject> getOpnnSbmsnDlbrDecsns(LevyExclQuery req) {
return opnnSbmsnBean.getOpnnSbmsnDlbrDecsns(req);
}
@Override
public String createOpnnSbmsn(OpnnSbmsn opnnSbmsn, List<FileInfo> fileInfoList) {
return opnnSbmsnBean.createOpnnSbmsn(opnnSbmsn, fileInfoList);
@ -65,43 +70,9 @@ public class OpnnSbmsnServiceBean extends AbstractServiceBean implements OpnnSbm
return opnnSbmsnBean.updateOpnnSbmsnAnswer(opnnSbmsn);
}
@Override
public String removeOpnnSbmsn(OpnnSbmsn 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;
return opnnSbmsnBean.removeOpnnSbmsn(opnnSbmsn);
}
}

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

@ -28,50 +28,49 @@
</resultMap>
<sql id="selectList">
SELECT LE.LEVY_EXCL_ID <!-- 부과제외 ID -->
, LE.LEVY_EXCL_YMD <!-- 부과제외 일자 -->
, LE.LEVY_EXCL_SE_CD <!-- 부과제외 구분 코드 -->
SELECT LE.LEVY_EXCL_ID <!-- 부과제외 ID -->
, LE.LEVY_EXCL_YMD <!-- 부과제외 일자 -->
, (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 <!-- 부과 제외 사유 명 -->
, LE.ETC_CN <!-- 기타 내용 -->
, LE.DEL_YN <!-- 삭제 여부 -->
, LE.REG_DT <!-- 등록 일시 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, LE.MDFCN_DT <!-- 수정 일시 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, LE.ETC_CN <!-- 기타 내용 -->
, LE.DEL_YN <!-- 삭제 여부 -->
, LE.REG_DT <!-- 등록 일시 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, LE.MDFCN_DT <!-- 수정 일시 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_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.CRDN_STDG_NM <!-- 단속 법정동 명 -->
, C.CRDN_PLC <!-- 단속 장소 -->
, C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 -->
, C.FFNLG_AMT <!-- 과태료 금액 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_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 <!-- 단속 특별구역 명 -->
, C.VHRNO <!-- 차량번호 -->
, C.CRDN_STDG_NM <!-- 단속 법정동 명 -->
, C.CRDN_ROAD_NM <!-- 단속 도로 명 -->
, C.CRDN_PLC <!-- 단속 장소 -->
, C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 -->
, C.FFNLG_AMT <!-- 과태료 금액 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_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 <!-- 주차 가능 결과 명 -->
, V.VLTN_ID <!-- 위반 ID -->
, V.VLTN_CD <!-- 위반 코드 -->
, V.VLTN_ARTCL <!-- 위반 항목 -->
, P.RTPYR_ID <!-- 납부자 ID -->
, V.VLTN_ID <!-- 위반 ID -->
, V.VLTN_CD <!-- 위반 코드 -->
, V.VLTN_ARTCL <!-- 위반 항목 -->
, P.RTPYR_ID <!-- 납부자 ID -->
, (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 <!-- 납부자 생년월일 마스크 -->
, P.RTPYR_NM <!-- 납부자 명 -->
, P.ZIP <!-- 우편번호 -->
, P.ADDR <!-- 주소 -->
, P.DTL_ADDR <!-- 상세 주소 -->
, CC.CVLCPT_LINK_ID <!-- 민원 연계 ID -->
, CC.CVLCPT_RCPT_YMD <!-- 민원 접수 일자 -->
, CC.CVLCPT_APLY_NO <!-- 민원 신청 번호 -->
, CC.CVLCPT_RCPT_NO <!-- 민원 접수 번호 -->
, CC.CVLCPT_PRCS_CD <!-- 민원 처리 코드 -->
, (SELECT GET_CODE_NM('FIM017', CC.CVLCPT_PRCS_CD) FROM DUAL) AS CVLCPT_PRCS_NM <!-- 민원 처리 명 -->
, P.ZIP <!-- 우편번호 -->
, P.ADDR <!-- 주소 -->
, P.DTL_ADDR <!-- 상세 주소 -->
, CC.CVLCPT_LINK_ID <!-- 민원 연계 ID -->
, CC.CVLCPT_RCPT_YMD <!-- 민원 접수 일자 -->
, CC.CVLCPT_APLY_NO <!-- 민원 신청 번호 -->
, CC.CVLCPT_RCPT_NO <!-- 민원 접수 번호 -->
, CC.CVLCPT_PRCS_CD <!-- 민원 처리 코드 -->
, (SELECT GET_CODE_NM('FIM017', CC.CVLCPT_PRCS_CD) FROM DUAL) AS CVLCPT_PRCS_NM <!-- 민원 처리 명 -->
FROM TB_LEVY_EXCL LE
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)
@ -219,18 +218,21 @@
<include refid="select" />
<where>
<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>
)
</if>
<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 test="crdnId != null">
AND C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
AND C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
</if>
AND C.DEL_YN = 'N' <!-- 삭제 여부 -->
</where>
AND C.DEL_YN = 'N' <!-- 단속 삭제 여부 -->
<include refid="utility.orderBy" />
</select>

@ -8,7 +8,6 @@
============================ -->
<resultMap id="opnnSbmsnRow" type="cokr.xit.fims.excl.OpnnSbmsn">
<!-- TB_OPNN_SBMSN 의견제출 대장 -->
<result property="opnnId" column="OPNN_ID" /> <!-- 의견 ID -->
<result property="crdnId" column="CRDN_ID" /> <!-- 단속 ID -->
<result property="rcptNo" column="RCPT_NO" /> <!-- 접수 번호 -->
@ -51,12 +50,12 @@
<sql id="selectList">
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_SE_CD <!-- 접수 구분 코드 -->
, OS.OWNR_REL_CD <!-- 소유주 관계 코드 -->
, (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 <!-- 소유주 관계 명 -->
, OS.STTR_NM <!-- 진술자 명 -->
, OS.STTR_BRDT <!-- 진술자 생년월일 -->
, (SELECT GET_BRDT_FORMAT(OS.STTR_BRDT, '.') FROM DUAL) AS STTR_BRDT_MASK <!-- 진술자 생년월일 마스크 -->
, OS.STTR_RRNO <!-- 진술자 주민등록번호 -->
, OS.STTR_ADDR <!-- 진술자 주소 -->
, OS.STTR_DADDR <!-- 진술자 상세주소 -->
@ -64,33 +63,25 @@
, 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 <!-- 의견 제출 상태 코드 -->
, OS.ANS_YMD <!-- 답변 일자 -->
, OS.ANS_TM <!-- 답변 시각 -->
, (SELECT GET_CODE_NM('FIM031', OS.OPNN_SBMSN_STTS_CD) FROM DUAL) AS OPNN_SBMSN_STTS_NM <!-- 의견 제출 상태 명 -->
, (CONCAT(OS.ANS_YMD, OS.ANS_TM)) AS ANS_YMD_TM <!-- 답변 일시 -->
, OS.ANS_CN <!-- 답변 내용 -->
, OS.DEL_YN <!-- 삭제 여부 -->
, OS.REG_DT <!-- 등록 일시 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = OS.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, OS.MDFCN_DT <!-- 수정 일시 -->
, OS.DEL_DT <!-- 삭제 일시 -->
, (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 <!-- 삭제자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = OS.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, C.CRDN_ID <!-- 단속 ID -->
, C.SGG_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.CRDN_STDG_NM <!-- 단속 법정동 명 -->
, C.CRDN_ROAD_NM <!-- 단속 도로 명 -->
@ -98,13 +89,7 @@
, C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 -->
, C.FFNLG_AMT <!-- 과태료 금액 -->
, 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 <!-- 단속 상태 명 -->
, 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('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 <!-- 주차 가능 결과 명 -->
@ -112,19 +97,18 @@
, V.VLTN_CD <!-- 위반 코드 -->
, V.VLTN_ARTCL <!-- 위반 항목 -->
, 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_NM <!-- 납부자 명 -->
, (GET_BRDT_FORMAT(P.RTPYR_BRDT, '.')) AS RTPYR_BRDT_MASK <!-- 납부자 생년월일 마스크 -->
, P.ZIP <!-- 우편번호 -->
, P.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_RSN_CD <!-- 감경 사유 코드 -->
, (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')
END ) AS RDUCT_AMT <!-- 감경 금액 -->
END ) AS RDUCT_AMT <!-- 감경 금액 -->
FROM TB_OPNN_SBMSN OS
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)
@ -160,15 +144,6 @@
</if>
<if test="delYn != null">
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 test="schCrdnYmdFrom != null">
AND C.CRDN_YMD <![CDATA[>=]]> #{schCrdnYmdFrom} <!-- 단속 일자 시작 -->
@ -176,7 +151,12 @@
<if test="schCrdnYmdTo != null">
AND C.CRDN_YMD <![CDATA[<=]]> #{schCrdnYmdTo} <!-- 단속 일자 종료 -->
</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>
<when test="schRegDateOpt == 'regDt'">
<if test="schRegDateFrom != null">
@ -245,95 +225,94 @@
</choose>
</if>
</where>
AND C.SGG_CD = #{sggCd} <!-- 시군구 코드 -->
AND C.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 -->
AND C.DEL_YN = 'N' <!-- 단속 삭제 여부 -->
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" />
</select>
<sql id="select">
SELECT OS.OPNN_ID <!-- 의견 ID -->
, OS.RCPT_NO <!-- 접수 번호 -->
, OS.RCPT_YMD <!-- 접수 일자 -->
, OS.RCPT_SE_CD <!-- 접수 구분 코드 -->
, OS.OWNR_REL_CD <!-- 소유주 관계 코드 -->
, 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 <!-- 단속 상태 변경 일시 -->
SELECT C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, C.CRDN_YMD <!-- 단속 일자 -->
, C.CRDN_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 <!-- 단속 상태 명 -->
, 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_OPNN_SBMSN OS
INNER JOIN TB_CRDN C ON (OS.CRDN_ID = C.CRDN_ID)
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
, C.CRDN_STTS_CHG_DT <!-- 단속 상태 변경 일시 -->
, 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_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_BRDT <!-- 진술자 생년월일 -->
, (SELECT GET_BRDT_FORMAT(OS.STTR_BRDT, '.') FROM DUAL) AS STTR_BRDT_MASK <!-- 진술자 생년월일 -->
, 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>
<select id="selectOpnnSbmsns" parameterType="map" resultType="dataobject">/* 의견제출 대장 객체 가져오기(opnnSbmsnMapper.selectOpnnSbmsns) */
<include refid="select" />
<where>
<if test="opnnIds != null">
AND OS.OPNN_ID IN ( <!-- 의견제출 ID -->
AND OS.OPNN_ID IN ( <!-- 의견제출 ID -->
<foreach collection="opnnIds" item="opnnId" separator=","> #{opnnId} </foreach>
)
</if>
<if test="opnnId != null">
AND OS.OPNN_ID = #{opnnId} <!-- 의견제출 ID -->
</if>
<if test="delYn != null">
AND OS.DEL_YN = #{delYn} <!-- 삭제 여부 -->
AND OS.OPNN_ID = #{opnnId} <!-- 의견제출 ID -->
</if>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
AND C.DEL_YN = 'N' <!-- 단속 삭제 여부 -->
AND C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
</if>
</where>
AND C.DEL_YN = 'N' <!-- 단속 삭제 여부 -->
<include refid="utility.orderBy" />
</select>
@ -365,6 +344,8 @@
, C.CRDN_ID <!-- 단속 ID -->
, C.SGG_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.CRDN_STDG_NM <!-- 단속 법정동 명 -->
, C.CRDN_ROAD_NM <!-- 단속 도로 명 -->
@ -372,10 +353,8 @@
, C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 -->
, C.FFNLG_AMT <!-- 과태료 금액 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
, 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_NM1 <!-- 심의 회원 명1 -->
, DLBR_MBR_JBGD2 <!-- 심의 회원 직급2 -->
@ -496,20 +475,19 @@
AND DEL_YN = 'N'
</update>
<update id="updateAnsSttsCd" parameterType="map">/* 의견제출 대장 답변 수정(opnnSbmsnMapper.updateAnsSttsCd) */
<update id="updateOpnnSbmsnAnswer" parameterType="map">/* 의견제출 대장 답변 수정(opnnSbmsnMapper.updateOpnnSbmsnAnswer) */
UPDATE TB_OPNN_SBMSN
SET OPNN_SBMSN_GIST = #{opnnSbmsn.opnnSbmsnGist} <!-- 의견 제출 요지 -->
, DOC_NO = #{opnnSbmsn.docNo} <!-- 문서 번호 -->
, NTFCTN_SE_CD = #{opnnSbmsn.ntfctnSeCd} <!-- 통보 구분 코드 -->
, PIC_RVW_OPNN = #{opnnSbmsn.picRvwOpnn} <!-- 담당자 검토 의견 -->
, OPNN_SBMSN_STTS_CD = #{opnnSbmsn.opnnSbmsnSttsCd} <!-- 의견 제출 상태 코드 -->
, ANS_YMD = #{opnnSbmsn.ansYmd} <!-- 답변 일자 -->
, ANS_TM = #{opnnSbmsn.ansTm} <!-- 답변 시각 -->
, ANS_CN = #{opnnSbmsn.ansCn} <!-- 답변 내용 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{opnnSbmsn.modifiedBy} <!-- 수정자 -->
WHERE OPNN_ID = #{opnnSbmsn.opnnId} <!-- 의견 ID -->
AND DEL_YN = 'N'
SET DOC_NO = #{opnnSbmsn.docNo} <!-- 문서 번호 -->
, NTFCTN_SE_CD = #{opnnSbmsn.ntfctnSeCd} <!-- 통보 구분 코드 -->
, PIC_RVW_OPNN = #{opnnSbmsn.picRvwOpnn} <!-- 담당자 검토 의견 -->
, OPNN_SBMSN_STTS_CD= #{opnnSbmsn.opnnSbmsnSttsCd} <!-- 의견 제출 상태 코드 -->
, ANS_YMD = #{opnnSbmsn.ansYmd} <!-- 답변 일자 -->
, ANS_TM = #{opnnSbmsn.ansTm} <!-- 답변 시각 -->
, ANS_CN = #{opnnSbmsn.ansCn} <!-- 답변 내용 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{opnnSbmsn.modifiedBy} <!-- 수정자 -->
WHERE OPNN_ID = #{opnnSbmsn.opnnId} <!-- 의견 ID -->
AND DEL_YN = 'N'
</update>
<update id="deleteOpnnSbmsn" parameterType="map">/* 의견제출 대장 삭제(opnnSbmsnMapper.deleteOpnnSbmsn) */
@ -522,33 +500,6 @@
AND DEL_YN = 'N'
</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 TB_CRDN
SET OPNN_SBMSN_YN= #{crdn.opnnSbmsnYn} <!-- 의견 제출 여부 -->

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

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

@ -167,10 +167,8 @@
</button>
</div>
</div>
</div>
<!-- / 상세 조건 -->
</form>
<!-- / 검색 조건 영역 -->
</div> <!-- / 상세 조건 -->
</form> <!-- / 검색 조건 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
@ -183,19 +181,18 @@
</div>
<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 type="button" class="btn btn-primary w-px-120" id="btnUpdateOpnnDlbr--${pageName}" title="의견제출 심의">
의견제출 심의
</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>
</span>
</span>
</div>
<!-- / 업무 버튼 및 건수 표시 -->
</div> <!-- / 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) -->
<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: 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: 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: 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: 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: 140px;" 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('DOC_NO', 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: 180px;" onclick="searchFromGridTitle('CRDN_YMD', this.innerText, 'ymd', '');">단속일시</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"><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}">{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_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_GIST}</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-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_YMD_TM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td>
@ -322,9 +319,9 @@
</div>
</div>
<!-- / DataTables(그리드) -->
</div> <!-- / Wrapper-list -->
</div> <!-- / Card -->
</div>
</div> <!-- / <div class="wrapper-list"> -->
</div> <!-- / <div class="card"> -->
</div> <!-- / <div class="container-xxl flex-grow-1 px-0"> -->
<!-- / Content -->
<div class="content-backdrop fade"></div>
@ -342,10 +339,8 @@
**************************************************************************/
$(document).ready(function() {
// pageObject
var $P = pageObject["${pageName}"];
let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/excl/excl02";
// FormFields
$P.formFields = new FimsFormFields("#frmSearch--${pageName}");
@ -353,28 +348,28 @@
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix : "opnn"
, prefixName : "의견제출"
, infoSize : "xl"
, keymapper : info => info ? info.OPNN_ID : ""
, dataGetter : obj => obj.opnnSbmsnList
, appendData : true
, formats : {
RCPT_YMD : dateFormat
, ANS_YMD : dateFormat
, ANS_YMD_TM : datetimeFormat
, CRDN_YMD_TM : datetimeFormat
, FFNLG_CRDN_AMT : numberFormat
, FFNLG_AMT : numberFormat
, REG_DT : datetimeFormat
, MDFCN_DT : datetimeFormat
prefix: "opnn"
, prefixName: "의견제출"
, infoSize: "xl"
, keymapper: info => info ? info.OPNN_ID : ""
, dataGetter: obj => obj.${infoPrefix}List
, appendData: true
, formats: {
RCPT_YMD: dateFormat
, ANS_YMD: dateFormat
, ANS_YMD_TM: datetimeFormat
, CRDN_YMD_TM: datetimeFormat
, FFNLG_CRDN_AMT: numberFormat
, FFNLG_AMT: numberFormat
, REG_DT: datetimeFormat
, MDFCN_DT: datetimeFormat
}
});
// $P.control 설정
$P.control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
$P.control.untilPageNum = 0; // 현재 페이지 번호
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
$P.control.beforeCurrent = null;
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 여부
/**************************************************************************
* DatasetControl 이벤트
@ -384,15 +379,15 @@
$P.renderList(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({
list : $P.control.dataset
, prefix : "paging--${pageName}"
, start : obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch
, func : "$P.control.load({index})"
list: $P.control.dataset
, prefix: "paging--${pageName}"
, start: obj.${infoPrefix}Start
, totalSize: obj.${infoPrefix}Total
, fetchSize: obj.${infoPrefix}Fetch
, func: "$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() {
let checkbox = $(this);
checkbox.prop("checked", keys.includes(checkbox.val()));
});
// 삭제 버튼
$("#btnRemoveOpnn--${pageName}").prop("disabled", keys.length < 1);
$("#btnRemove--${pageName}").prop("disabled", keys.length < 1);
// DataTables(그리드) 전체 선택(checkbox)
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) {
$("th input[type='checkbox']").prop("checked", true); // 체크 설정
$("th input[type='checkbox']").prop("checked", true); // 체크 설정
} else {
$("th input[type='checkbox']").prop("checked", false); // 체크 해제
$("th input[type='checkbox']").prop("checked", false); // 체크 해제
}
};
// 수정 dialog
// 상세정보 dialog
$P.control.getInfo = (params) => {
if (!params) return;
let dialogTitle = "";
if (params.callPurpose == "create") {
dialogTitle = $P.control.prefixName + " 등록";
} else if (params.callPurpose == "update") {
dialogTitle = $P.control.prefixName + " 수정";
} else {
dialogTitle = $P.control.prefixName + " 정보";
}
ajax.get({
url : $P.control.urls.getInfo
, data : params || {}
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/020/info.do")
, data: params || {}
, success: resp => {
dialog.open({
id : $P.control.prefixed("Dialog")
, title : dialogTitle
, content : resp
, size : $P.control.infoSize
, onClose : () => { $P.refreshList(); }
id: $P.control.prefixed("Dialog")
, title: params.title
, content: resp
, size: $P.control.infoSize
, onClose: () => { $P.fnRefreshList(); } // 자료 재조회
});
}
});
@ -459,17 +443,17 @@
// 삭제 callback
$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);
// 메시지 출력
dialog.alert({
content : showMessage
, onOK : () => { }
content: showMessage
, onOK: () => { }
});
if (resp.saved) {
$P.refreshList(); // 자료 재조회
$P.fnRefreshList(); // 자료 재조회
}
}
@ -478,9 +462,9 @@
if (!params) return;
ajax.post({
url : $P.control.urls.remove
, data : params
, success : resp => $P.control.onRemove(resp)
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/010/remove.do")
, data: params || {}
, success: resp => $P.control.onRemove(resp)
});
}
@ -530,103 +514,47 @@
// DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
$P.scrollDataList = () => {
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false
$P.control.load($P.control.query.pageNum + 1);
}
/**************************************************************************
* 사용자 함수(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
// DataTables에 더블 클릭시 개별총정보 dialog
$P.getTotalInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName : "pageObject['${pageName}'].control"
, sggCd : $("#sggCd--${pageName}").val()
, taskSeCd : $("input[name=taskSeCd]:checked").val()
, crdnId : crdnId
callControlName: "pageObject['${pageName}'].control"
, sggCd: $("#sggCd--${pageName}").val()
, taskSeCd: $("input[name=taskSeCd]:checked").val()
, crdnId: crdnId
}
ajax.get({
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data: params
, success: resp => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
id: "totalInfoMainDialog"
, title: "개별총정보"
, content: resp
, size: "xxl"
});
}
});
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 검색 자료 재조회
$P.refreshList = () => {
$P.fnRefreshList = () => {
$P.control.untilPageNum = $P.control.query.pageNum;
$P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum;
$P.control.load(1);
}
// 심의 정보 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
**************************************************************************/
@ -639,8 +567,6 @@
// 초기 기본 설정
$P.initForm();
// 기본 데이터 설정
$P.initData(taskSeCd);
// 업무 구분별 설정
$P.setTask(taskSeCd);
@ -648,12 +574,39 @@
$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.control.query = $P.formFields.get();
$P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수 FETCH_XS = 30
$P.control.query.delYn = "N"; // 삭제 여부
$P.control.query = $P.formFields.get(); // 검색 조건
$P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수 FETCH_XS = 30
$P.control.query.delYn = "N"; // 삭제 여부
$P.control.load(1);
}
@ -662,10 +615,9 @@
$P.fnExcel = () => {
if ($P.control.dataset.empty) {
dialog.alert({
content : "검색된 자료가 없습니다."
, onOK : () => { }
content: "검색된 자료가 없습니다."
, onOK: () => { }
});
return;
}
@ -677,75 +629,99 @@
$P.control.download();
}
// 사용자 조회 버튼 이벤트
$P.fnFindUser = () => {
$P.getFindUser();
}
// 수정 버튼 클릭 이벤트
$P.fnUpdateOpnn = (title) => {
// 의견제출 수정 버튼 클릭 이벤트
$P.fnUpdate = (title) => {
// 의견제출 ID
let opnnId = $P.control.dataset.getValue("OPNN_ID");
// 의견제출 ID 가 없다면.. return
if (typeof opnnId == "undefined" || opnnId == null || opnnId == "") return;
let params = {
title : title
, callPurpose : "update"
, sggCd : $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, opnnId : opnnId // 의견제출 ID
title: title
, callPurpose: "update" // 호출용도: 수정
, sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, opnnId: opnnId // 의견제출 ID
};
$P.control.getInfo(params);
}
// 심의 버튼 클릭 이벤트
// 의견제출 심의 버튼 클릭 이벤트
$P.fnUpdateOpnnDlbr = (title) => {
// 의견제출 ID
let opnnId = $P.control.dataset.getValue("OPNN_ID");
// 의견제출 ID 가 없다면.. return
if (typeof opnnId == "undefined" || opnnId == null || opnnId == "") return;
let params = {
title : title
, callPurpose : "update"
, sggCd : $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, opnnId : opnnId // 의견제출 ID
title: title
, callPurpose: "update" // 호출용도: 수정
, sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, 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");
if (selected.length < 1) return;
if (selected.length < 1) {
dialog.alert({
content: "선택하신 의견제출 정보가 없습니다."
, onOK: () => { }
});
return;
}
// 삭제 메세지 확인
dialog.alert({
content : "선택하신 " + selected.length + "건의 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?"
, onOK : async() => {
content: "선택하신 " + selected.length + "건의 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?"
, onOK: async() => {
// 삭제 사유 입력
var resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html"));
var template = await resp.text();
let resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html"));
let template = await resp.text();
dialog.open({
id : "inputDelRsnDialog",
title: title,
size : "lg",
content: template,
init : () => {
setDialogZindex();
},
onOK : () => {
id: "inputDelRsnDialog"
, title: title
, size: "lg"
, content: template
, init: () => { setDialogZindex(); }
, onOK: () => {
$P.callbackRsn({ reason : $("#reason").val() });
}
});
}
});
}
@ -759,7 +735,7 @@
$("#btnReset--${pageName}").on("click", () => $P.fnResetAndChangeBiz()); // 초기화
$("#btnSearch--${pageName}").on("click", () => $P.fnSearchList()); // 검색
$("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀
$("#btnFindUser--${pageName}").on("click", () => $P.fnFindUser()); // 사용자 검색
$("#btnFindUser--${pageName}").on("click", () => $P.fnGetFindUser()); // 사용자 검색
// 동적검색에서 엔터(Enter) 키를 누르면 검색한다.
$("#term--${pageName}").keypress(function(e) {
@ -782,16 +758,16 @@
});
// 의견제출 수정 버튼 이벤트
$("#btnUpdateOpnn--${pageName}").on("click", function() {
$P.fnUpdateOpnn($(this).attr("title"));
$("#btnUpdate--${pageName}").on("click", function() {
$P.fnUpdate($(this).attr("title"));
});
// 의견제출 심의 버튼 이벤트
$("#btnUpdateOpnnDlbr--${pageName}").on("click", function() {
$P.fnUpdateOpnnDlbr($(this).attr("title"));
});
// 의견제출 삭제 버튼 이벤트
$("#btnRemoveOpnn--${pageName}").on("click", function() {
$P.fnRemoveOpnn($(this).attr("title"));
$("#btnRemove--${pageName}").on("click", function() {
$P.fnRemove($(this).attr("title"));
});
// DataTables width 변경 조정
@ -821,14 +797,13 @@
// 달력 초기화
initDatepicker("frmSearch--${pageName}");
$("#schRcptYmdFrom--${pageName}").datepicker("setDate", new Date());
$("#schRcptYmdTo--${pageName}").datepicker("setDate", new Date());
// 동적 검색
$("#byOutput--${pageName}").val("동적 검색");
// 사용자 이름
$("#schRgtrNm--${pageName}").prop("readonly", true);
// 기본 데이터 설정(업무구분)
$P.initData($("input[name=taskSeCd]:checked").val());
}
// 기본 데이터 설정
@ -844,6 +819,9 @@
// 업무 구분별 설정
$P.setTask = (taskSeCd) => {
// 검색 url
$P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/010/list.do");
let clsForTask = taskSeCd.toLowerCase();
// 업무별 조회조건
@ -858,17 +836,6 @@
colsOuterHTML += this.outerHTML;
});
$("#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">
<!-- hidden -->
<input type="hidden" id="crdnId--${pageName}" name="crdnId" data-map="CRDN_ID" />
<input type="hidden" id="sggCd--${pageName}" name="sggCd" data-map="SGG_CD" />
<input type="hidden" id="taskSeCd--${pageName}" name="taskSeCd" data-map="TASK_SE_CD" />
<input type="hidden" id="crdnId--${pageName}" name="crdnId" data-map="CRDN_ID" />
<input type="hidden" id="opnnId--${pageName}" name="opnnId" data-map="OPNN_ID" />
<div class="row g-1">
@ -185,10 +185,8 @@
**************************************************************************/
$(document).ready(function() {
// pageObject
var $P = pageObject["${pageName}"];
let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/excl/excl02";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// FormFields
@ -200,10 +198,10 @@
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix : "opnn"
, prefixName : "의견제출"
, keymapper : info => info ? info.OPNN_ID : ""
, dataGetter : obj => obj.opnnSbmsnInfo
prefix: "opnn"
, prefixName: "의견제출"
, keymapper: info => info ? info.OPNN_ID : ""
, dataGetter: obj => obj.${infoPrefix}Info
});
/**************************************************************************
@ -214,10 +212,9 @@
if (!item) return;
// Dataset 셋팅
$P.formFields.set($P.control.item);
$P.formFields.set($P.control, item);
// 업무구분에 따른 URL 변경
$P.setURL(item.data.TASK_SE_CD);
$P.fnSetURL(item.data.TASK_SE_CD);
// 호출용도가 등록 이라면..
if ($P.callPurpose == "create") {
@ -235,8 +232,8 @@
// 메시지 출력
dialog.alert({
content : showMessage
, onOK : () => { }
content: showMessage
, onOK: () => { }
});
if (resp.saved) {
@ -251,36 +248,34 @@
$P.control.save = (info) => {
if (!info) return;
let formData = new FormData();
let create = ($P.callPurpose == "create");
let formData = new FormData();
// 첨부파일 배열에 있는 내용을 등록
for (let iLoop = 0; iLoop < $P.fileListArr.length; iLoop++) {
formData.append("uploadFiles" , $P.fileListArr[iLoop]);
}
for (let key in info) {
let value = info[key];
formData.append(key, value);
}
ajax.post({
url : !create ? $P.control.urls.update : $P.control.urls.create
, data : formData
, contentType : false
, processData : false
, success : resp => $P.control.onSave(resp)
url: !create ? $P.control.urls.update : $P.control.urls.create
, data: formData
, contentType: false
, processData: false
, success: resp => $P.control.onSave(resp)
});
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 주소 검색 결과 callback
$P.callbackSearchAddr = (obj) => {
$("#sttrAddr--${pageName}").val(obj.ADDR); // 주소
$("#sttrZip--${pageName}").val(obj.ZIP); // 우편번호
$("#sttrDaddr--${pageName}").val(obj.DTL_ADDR); // 상세 주소
// 업무구분에 따른 url 변경
$P.fnSetURL = (taskSeCd) => {
$P.control.urls.create = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/020/create.do"); // 등록
$P.control.urls.update = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/020/update.do"); // 수정
}
/**************************************************************************
@ -303,41 +298,45 @@
$("#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) => {
var resp = await fetch(wctx.url("/resources/html/searchAddr.html"));
var template = await resp.text();
let resp = await fetch(wctx.url("/resources/html/searchAddr.html"));
let template = await resp.text();
dialog.open({
id : "searchAddrDialog",
title: title,
size : "lg",
content: template,
init : () => {
id: "searchAddrDialog"
, title: title
, size: "lg"
, content: template
, init: () => {
$("#searchAddrCallback").val("pageObject['${pageName}'].callbackSearchAddr");
setDialogZindex();
}
});
}
// 첨부파일 조회
$P.fnSearchFileList = (opnnId) => {
// 의견제출 등록일 경우에는 첨부파일을 조회하지 안는다..
if (opnnId == null || opnnId == "") {
return;
}
if (opnnId == null || opnnId == "") return;
// 첨부파일 리스트
ajax.get({
url : "file/list.do"
, data : {
infoType : "110"
, infoKeys : opnnId
, fetchSize : 0
url: "file/list.do"
, data: {
infoType: "110"
, infoKeys: opnnId
, fetchSize: 0
}
, success : resp => {
, success: resp => {
let fileNo = 0;
let fileList = resp.fileList;
@ -345,16 +344,13 @@
fileNo = index + 1;
let innerHtml = "";
innerHtml += "<tr>";
innerHtml += "<td class='text-center'>" + fileNo + "</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_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 += "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 += "pageObject['${pageName}'].fnFileRemove(this);" + "><i class='bx bx-trash me-1'></i></button>" + "</td>";
innerHtml += "</tr>";
@ -380,7 +376,6 @@
dialog.alert({
content : "첨부파일은 최대 " + maxFileCnt + "개 까지 첨부 가능합니다."
});
return;
}
@ -410,19 +405,18 @@
// 첨부파일 삭제 아이콘 클릭 이벤트
$P.fnFileRemove = (obj) => {
dialog.alert({
content : "선택한 파일을 삭제하시겠습니까?"
, onOK : () => {
let tr = $(obj).parent().parent(); // 클릭한 버튼이 속한 tr 요소
content: "선택한 파일을 삭제하시겠습니까?"
, onOK: () => {
let tr = $(obj).parent().parent(); // 클릭한 버튼이 속한 tr 요소
let td = tr.children();
let fileNo = td.eq(0).text(); // 삭제할 파일 번호
let fileNo = td.eq(0).text(); // 삭제할 파일 번호
let fileId = td.eq(1).text();
if (fileId != null && fileId != "") {
ajax.post({
url : "file/remove.do"
, data : { fileIDs : fileId }
, success : resp => {
// 성공
url: "file/remove.do"
, data: { fileIDs : fileId }
, success: resp => { // 성공
}
});
} else {
@ -430,7 +424,7 @@
$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 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
dialog.alert({
content : "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => {
// 파리미터 설정
let params = $P.formFields.get(); // formFields
params.title = title; // 타이틀
$P.control.save(params);
content: "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
, onOK: () => {
$P.control.save($P.formFields.get()); // formFields
}
});
}
@ -484,13 +474,9 @@
$P.fnSearchAddr($(this).attr("title"));
});
// 파일 등록 버튼 이벤트
$("#btnAddFile--${pageName}").on('click', function() {
$("#uploadFiles--${pageName}").trigger("click");
});
$("#btnAddFile--${pageName}").on('click', () => $("#uploadFiles--${pageName}").trigger("click"));
// 저장 버튼 이벤트
$("#btnSave--${pageName}").on("click", function() {
$P.fnSave($(this).attr("title"));
});
$("#btnSave--${pageName}").on("click", () => $P.fnSave());
}
// 초기 화면 설정
@ -507,6 +493,7 @@
$("#crdnYmdTm--${pageName}").prop("readonly", true); // 단속 일자
$("#rtpyrNm--${pageName}").prop("readonly", true); // 납부자 명
// View로 호출
if ($P.callPurpose == "view") {
// input 요소들을 disabled
$("#frmEdit--${pageName}").find("input,textarea,select").prop("disabled", true);
@ -519,17 +506,9 @@
} else if ($P.callPurpose == "create") {
$("#rcptNo--${pageName}").prop("readonly", true); // 접수 번호
$("#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">
<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>
<c:forEach items="${FIM031List}" var="item">
<option value="${item.code}">${item.value}</option>
@ -130,10 +130,8 @@
**************************************************************************/
$(document).ready(function() {
// pageObject
var $P = pageObject["${pageName}"];
let $P = pageObject["${pageName}"];
// URL
$P.PrefixUrl = "/excl/excl02";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
$P.callPurpose = "${callPurpose}";
// FormFields
@ -143,10 +141,10 @@
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix : "opnnSbmsn"
, prefixName : "의견제출 심의"
, keymapper : info => info ? info.OPNN_ID : ""
, dataGetter : obj => obj.opnnSbmsnInfo
prefix: "opnnDlbr"
, prefixName: "의견제출 심의"
, keymapper: info => info ? info.OPNN_ID : ""
, dataGetter: obj => obj.${infoPrefix}Info
});
/**************************************************************************
@ -157,20 +155,15 @@
if (!item) return;
// Dataset 셋팅
$P.formFields.set($P.control,item);
$P.formFields.set($P.control, item);
// 업무구분에 따른 URL 변경
$P.setURL(item.data.TASK_SE_CD);
//
$P.fnSetURL(item.data.TASK_SE_CD);
// 의견제출 상태 코드 변경
$P.fnChangeOpnnSbmsnSttsCd(item.data.OPNN_SBMSN_STTS_CD);
// 호출용도가 등록 이라면..
if ($P.callPurpose == "create") {
// 날짜
$("#ansYmd--${pageName}").datepicker("setDate", new Date());
// 시간 "09:51:35 GMT+0900 (한국 표준시)"의 형식에서 공백을 기준으로 잘라 시간 부분만 가져와줍니다.
$("#ansTm--${pageName}").val(new Date().toTimeString().split(" ")[0]);
if (item.data.ANS_YMD == null || item.data.ANS_YMD == "") {
$("#ansYmd--${pageName}").datepicker("setDate", new Date()); // 날짜
$("#ansTm--${pageName}").val(new Date().toTimeString().split(" ")[0]); // 시간 "09:51:35 GMT+0900 (한국 표준시)"의 형식에서 공백을 기준으로 잘라 시간 부분만 가져와줍니다.
}
}
@ -181,8 +174,8 @@
// 메시지 출력
dialog.alert({
content : showMessage
, onOK : () => { }
content: showMessage
, onOK: () => { }
});
if (resp.saved) {
@ -195,27 +188,36 @@
if (!info) return;
ajax.post({
url : $P.control.urls.update
, data : info
, success : resp => $P.control.onSave(resp)
url: $P.control.urls.update
, data: info
, success: resp => $P.control.onSave(resp)
});
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 업무구분에 따른 URL 설정
$P.fnSetURL = (taskSeCd) => {
$P.control.urls.update = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/030/update.do"); // 수정
}
// 의견제출 상태 코드 변경
$P.fnChangeOpnnSbmsnSttsCd = (obj) => {
// javascript를 이용한 visibility 변경 (이 방법을 사용하는 경우, 안에 있는 요소들이 보이지않지만 그 요소들이 할당 하고 있는 공간은 그대로 유지(공백처리))
// document.getElementById("divRductRsnCd--${pageName}").style.visibility = "hidden";
// document.getElementById("divRductRsnCd--${pageName}").style.visibility = "visible";
$("#divRductRsnCd--${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();
$("#divRductAmt--${pageName}").show();
$("#rductRsnCd--${pageName}").attr("required", true);
$("#rductAmt--${pageName}").attr("required", true);
}
}
@ -223,7 +225,7 @@
* 버튼 clickEvent
**************************************************************************/
// 저장
$P.fnSave = (title) => {
$P.fnSave = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
@ -234,21 +236,17 @@
if (opnnSbmsnSttsCd == "04" && rductRsnCd == "00") {
dialog.alert({
content : "감경사유가 '" + rductRsnNm + "' 입니다."
+ "<br>" + "[" + title + "]" + " 실행이 취소되었습니다."
, onOK : () => { }
content: "감경사유가 '" + rductRsnNm + "' 입니다."
+ "<br>" + "[" + $P.control.prefixName + " 저장" + "]" + " 실행이 취소되었습니다."
, onOK: () => { }
});
return;
}
dialog.alert({
content : "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => {
// 파리미터 설정
let params = $P.formFields.get(); // formFields
params.title = title; // 타이틀
$P.control.save(params);
content: "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
, onOK: () => {
$P.control.save($P.formFields.get()); // formFields
}
});
}
@ -285,9 +283,7 @@
});
// 저장 버튼 이벤트
$("#btnSave--${pageName}").on("click", function() {
$P.fnSave($(this).attr("title"));
});
$("#btnSave--${pageName}").on("click", () => $P.fnSave());
}
// 초기 화면 설정
@ -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="col-md-4">
<label for="rcptNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">접수번호</label>
<input type="text" class="form-control w-30" id="rcptNo--${pageName}" name="rcptNo" data-map="RCPT_NO" readonly />
<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="rcptNoMask--${pageName}" name="rcptNoMask" data-map="RCPT_NO_MASK" readonly />
</div>
<!-- 접수 일자 -->
<div class="col-md-4">
@ -57,8 +57,8 @@
</div>
<!-- 진술자 생년월일 -->
<div class="col-md-4">
<label for="sttrBrdt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">생년월일</label>
<input type="text" class="form-control w-25" id="sttrBrdt--${pageName}" name="sttrBrdt" data-map="STTR_BRDT_FORMAT" placeholder="YY-MM-DD" readonly />
<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="sttrBrdtMask--${pageName}" name="sttrBrdtMask" data-map="STTR_BRDT_MASK" readonly />
</div>
<!-- 소유주 관계 구분 명 -->
<div class="col-md-4">
@ -94,7 +94,7 @@
<!-- 의견 제출 구분 명 -->
<div class="col-md-4">
<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 class="col-md-8">
@ -188,7 +188,7 @@
**************************************************************************/
$(document).ready(function() {
// pageObject
var $P = pageObject["${pageName}"];
let $P = pageObject["${pageName}"];
// FormFields
$P.formFields = new FimsFormFields("#frmEdit--${pageName}");
@ -199,13 +199,13 @@
* DatasetControl
**************************************************************************/
$P.control = new DatasetControl({
prefix : "opnn"
, prefixName : "의견제출"
, keymapper : info => info ? info.OPNN_ID : ""
, dataGetter : obj => obj.opnnSbmsn
, formats : {
RCPT_YMD : dateFormat
, ANS_YMD_TM : datetimeFormat
prefix: "opnn"
, prefixName: "의견제출"
, keymapper: info => info ? info.OPNN_ID : ""
, dataGetter: obj => obj.opnnSbmsn
, formats: {
RCPT_YMD: dateFormat
, ANS_YMD_TM: datetimeFormat
}
});
@ -216,7 +216,7 @@
$P.control.onCurrentChange = item => {
if (!item) return;
$P.formFields.set($P.control,item);
$P.formFields.set($P.control, item);
let key = item.data.OPNN_ID;
@ -231,9 +231,9 @@
if (!params) return;
ajax.get({
url : wctx.url("/" + params.taskSeCd + "/excl/excl02/020/info.do")
, data : params || {}
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "/excl/excl02/020/info.do")
, data: params || {}
, success: resp => {
if ((typeof resp) != "string") {
if (resp.rtnMsg != "") {
dialog.alert(resp.rtnMsg);
@ -241,11 +241,11 @@
return;
} else {
dialog.open({
id : $P.control.prefixed("Dialog")
, title : params.title
, content : resp
, size : "lg"
, onClose : () => { $P.refreshDataInfo(); }
id: $P.control.prefixed("Dialog")
, title: params.title
, content: resp
, size: "lg"
, onClose: () => { $P.refreshDataInfo(); }
});
}
}
@ -258,12 +258,12 @@
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, btnTitle);
dialog.alert({
content : showMessage
, onOK : () => { }
content: showMessage
, onOK: () => { }
});
if (resp.saved) {
$P.refreshDataInfo(); // 자료 재조회
$P.refreshDataInfo(); // 자료 재조회
}
}
@ -272,9 +272,9 @@
if (!params) return;
ajax.post({
url : wctx.url("/" + params.taskSeCd + "/excl/excl02/010/remove.do")
, data : params || {}
, success : resp => $P.control.onRemove(resp)
url: wctx.url("/" + params.taskSeCd + "/excl/excl02/010/remove.do")
, data: params || {}
, success: resp => $P.control.onRemove(resp)
});
}
@ -289,21 +289,21 @@
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callPurpose : "refresh"
, crdnId : crdnId
, sggCd : $("#sggCd--${pageNameMain}").val()
, taskSeCd : $("#taskSeCd--${pageNameMain}").val()
, delYn : "N"
callPurpose: "refresh"
, crdnId: crdnId
, sggCd: $("#sggCd--${pageNameMain}").val()
, taskSeCd: $("#taskSeCd--${pageNameMain}").val()
, delYn: "N"
};
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
, data : params || {}
, success : resp => {
, data: params || {}
, success: resp => {
// 초기화
$("#frmEdit--${pageName}")[0].reset(); // 화면 초기화
$P.control.dataset.clear(); // Dataset 초기화
$("#frmEdit--${pageName}")[0].reset(); // 화면 초기화
$P.control.dataset.clear(); // Dataset 초기화
// 의견제출 정보
if (resp.opnnSbmsn) {
@ -322,15 +322,15 @@
if (!params) return;
ajax.get({
url : wctx.url("/" + params.taskSeCd + "/excl/excl02/030/info.do")
, data : params || {}
, success : resp => {
url: wctx.url("/" + params.taskSeCd + "/excl/excl02/030/info.do")
, data: params || {}
, success: resp => {
dialog.open({
id : "opnnSbmsnDialog"
, title : params.title
, content : resp
, size : "lg"
, onClose : () => { $P.refreshDataInfo(); }
id: "opnnDlbrDialog"
, title: params.title
, content: resp
, size: "lg"
, onClose: () => { $P.refreshDataInfo(); }
});
}
});
@ -340,11 +340,11 @@
$P.callbackRsn = (obj) => {
// 서버에 전송할 data(파라미터) 생성
let params = {
callPurpose : "remove"
, opnnId : $P.control.dataset.getValue("OPNN_ID") // 의견제출 ID
, sggCd : $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, delRsn : obj.reason // 삭제 사유
callPurpose: "remove"
, sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, opnnId: $P.control.dataset.getValue("OPNN_ID") // 의견제출 ID
, delRsn: obj.reason // 삭제 사유
};
$P.control.remove(params);
@ -357,8 +357,8 @@
let url = wctx.url("/" + params.taskSeCd + "/excl/excl02/010/makeHwp.do")
let parameter = toQuery({
opnnIds : params.opnnIds
, taskSeCd : params.taskSeCd
opnnIds: params.opnnIds
, taskSeCd: params.taskSeCd
});
document.location.href = url + "?" + parameter;
@ -380,20 +380,20 @@
// 단속 상태 코드 확인
if (Number(crdnSttsCd) < 01 || Number(crdnSttsCd) > 45) {
dialog.alert({
content : "[" + title + "]" + " 작업은 단속상태가 '부과 이전' 자료만 처리 가능합니다."
content: "[" + title + "]" + " 작업은 단속상태가 '부과 이전' 자료만 처리 가능합니다."
+ "<br>" + "단속상태 : " + crdnSttsNm
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."
, onOK : () => { }
, onOK: () => { }
});
return;
}
let params = {
callPurpose : "create"
, title : title
, crdnId : crdnId // 단속 ID
, sggCd : $("#sggCd--${pageNameMain}").val() // 시군구 코드
, taskSeCd : $("#taskSeCd--${pageNameMain}").val() // 업무 구분 코드
callPurpose: "create"
, title: title
, sggCd: $("#sggCd--${pageNameMain}").val() // 시군구 코드
, taskSeCd: $("#taskSeCd--${pageNameMain}").val() // 업무 구분 코드
, crdnId: crdnId // 단속 ID
};
$P.control.getInfo(params);
@ -406,19 +406,19 @@
// 의견제출 ID 가 없다면.. return
if (typeof opnnId == "undefined" || opnnId == null || opnnId == "") {
dialog.alert({
content : "조회된 의견제출 대장 정보가 없습니다."
content: "조회된 의견제출 대장 정보가 없습니다."
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."
, onOK : () => { }
, onOK: () => { }
});
return;
}
let params = {
callPurpose : "update"
, title : title
, opnnId : opnnId // 의견제출 ID
, sggCd : $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
callPurpose: "update"
, title: title
, sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, opnnId: opnnId // 의견제출 ID
};
$P.control.getInfo(params);
@ -431,9 +431,9 @@
// 의견제출 ID 가 없다면.. return
if (typeof opnnId == "undefined" || opnnId == null || opnnId == "") {
dialog.alert({
content : "조회된 의견제출 대장 정보가 없습니다."
content: "조회된 의견제출 대장 정보가 없습니다."
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."
, onOK : () => { }
, onOK: () => { }
});
return;
}
@ -444,31 +444,29 @@
// 의견제출 상태 코드 확인
if (opnnSbmsnSttsCd != '00' && opnnSbmsnSttsCd != '03') {
dialog.alert({
content : "[" + title + "]" + " 작업은 심의결과가 '접수', '자진취하' 자료만 삭제 가능합니다."
content: "[" + title + "]" + " 작업은 심의결과가 '접수', '자진취하' 자료만 삭제 가능합니다."
+ "<br>" + "심의결과 : " + opnnSbmsnSttsNm
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."
, onOK : () => { }
, onOK: () => { }
});
return;
}
// 삭제 메세지 확인
dialog.alert({
content : "선택한 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?"
, onOK : async() => {
content: "선택한 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?"
, onOK: async() => {
// 사유 입력
var resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html"));
var template = await resp.text();
let resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html"));
let template = await resp.text();
dialog.open({
id : "inputDelRsnDialog",
title: title,
size : "lg",
content: template,
init : () => {
setDialogZindex();
},
onOK : () => {
id: "inputDelRsnDialog"
, title: title
, size: "lg"
, content: template
, init: () => { setDialogZindex(); }
, onOK : () => {
$P.callbackRsn({ reason : $("#reason").val() });
}
});
@ -483,19 +481,19 @@
// 의견제출 ID 가 없다면.. return
if (typeof opnnId == "undefined" || opnnId == null || opnnId == "") {
dialog.alert({
content : "조회된 의견제출 대장 정보가 없습니다."
content: "조회된 의견제출 대장 정보가 없습니다."
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."
, onOK : () => { }
, onOK: () => { }
});
return;
}
let params = {
callPurpose : "download"
, title : title
, opnnIds : opnnId // 의견제출 ID
, sggCd : $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
callPurpose: "download"
, title: title
, sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, opnnIds: opnnId // 의견제출 ID
};
$P.makeHwpFileDlbrDecsn(params);
@ -508,9 +506,9 @@
// 의견제출 ID 가 없다면.. return
if (typeof opnnId == "undefined" || opnnId == null || opnnId == "") {
dialog.alert({
content : "조회된 의견제출 대장 정보가 없습니다."
content: "조회된 의견제출 대장 정보가 없습니다."
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."
, onOK : () => { }
, onOK: () => { }
});
return;
}
@ -521,20 +519,20 @@
// 단속 상태 코드 확인
if ( (Number(crdnSttsCd) != 82 && Number(crdnSttsCd) != 87) && (Number(crdnSttsCd) < 21 || Number(crdnSttsCd) > 45) ) {
dialog.alert({
content : "[" + title + "]" + " 작업은 단속상태가 '의견제출수용', '경찰서이첩', '부과 이전' 자료만 처리 가능합니다."
content: "[" + title + "]" + " 작업은 단속상태가 '의견제출수용', '경찰서이첩', '부과 이전' 자료만 처리 가능합니다."
+ "<br>" + "단속상태 : " + crdnSttsNm
+ "<br><br>" + "[" + title + "]" + " 실행이 취소되었습니다."
, onOK : () => { }
, onOK: () => { }
});
return;
}
let params = {
callPurpose : "update"
, title : title
, opnnId : opnnId // 의견제출 ID
, sggCd : $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
callPurpose: "update"
, title: title
, sggCd: $P.control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd: $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, opnnId: opnnId // 의견제출 ID
};
$P.getOpnnSbmsnDlbrtInfo(params);

Loading…
Cancel
Save