감경부과 등록 수정.

main
jjh 12 months ago
parent 66e44dbe3c
commit 187fef2946

@ -46,6 +46,12 @@ public interface TaskInfoMapper extends AbstractMapper {
return !taskInfo.isEmpty() ? taskInfo.get(0) : null;
}
/** .
* @param req
* @return
*/
DataObject selectAdvntceYmdInfo(TaskInfoQuery req);
/** .
* @param params
* <ul><li>"taskInfo" - </li>

@ -37,6 +37,12 @@ public interface TaskInfoService {
*/
DataObject getTaskInfo(TaskInfoQuery req);
/** .
* @param sndngDtlId ID
* @return
*/
DataObject getAdvntceYmdInfo(TaskInfoQuery req);
/** .
* @param taskInfo
* @return

@ -54,6 +54,14 @@ public class TaskInfoBean extends AbstractComponent {
return taskInfoMapper.selectTaskInfo(req);
}
/** .
* @param req
* @return
*/
public DataObject getAdvntceYmdInfo(TaskInfoQuery req) {
return taskInfoMapper.selectAdvntceYmdInfo(req);
}
/** .
* @param taskInfo
* @return

@ -45,6 +45,11 @@ public class TaskInfoServiceBean extends AbstractServiceBean implements TaskInfo
return taskInfoBean.getTaskInfo(req);
}
@Override
public DataObject getAdvntceYmdInfo(TaskInfoQuery req) {
return taskInfoBean.getAdvntceYmdInfo(req);
}
@Override
public boolean create(TaskInfo taskInfo) {
return taskInfoBean.create(taskInfo);

@ -12,9 +12,12 @@ import org.springframework.web.servlet.ModelAndView;
import cokr.xit.base.code.CommonCode;
import cokr.xit.base.user.ManagedUser;
import cokr.xit.base.web.ApplicationController;
import cokr.xit.fims.cmmn.TaskInfoQuery;
import cokr.xit.fims.cmmn.service.TaskInfoService;
import cokr.xit.fims.levy.Levy;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.service.LevyService;
import cokr.xit.foundation.data.DataObject;
/**
*
@ -32,9 +35,10 @@ public class Levy01Controller extends ApplicationController {
public class METHOD_URL {
public static final String
reductionLevyTargetMain = "/010/main.do" // 사전 감경 부과 대상 메인 화면
, getReductionLevyTargetList = "/010/list.do" // 사전 감경 부과 대상 대장 목록 조회
, createReductionLevyList = "/010/createReductionLevyList.do" // 사전 감경 부과 대장 등록
reductionLevyTargetMain = "/010/main.do" // 사전 감경부과 대상 메인 화면
, getReductionLevyTargetList = "/010/list.do" // 사전 감경부과 대상 대장 목록 조회
, getReductionLevyTargetInfo = "/020/info.do" // 사전 감경부과 대상 정보
, createReductionLevy = "/010/createRductLevy.do" // 사전 감경부과 대장 등록
;
}
@ -42,6 +46,10 @@ public class Levy01Controller extends ApplicationController {
@Resource(name = "levyService")
private LevyService levyService;
/** 업무 정보 서비스 */
@Resource(name = "taskInfoService")
private TaskInfoService taskInfoService;
/** (levy/levy01010-main) .
* @return
*/
@ -78,6 +86,25 @@ public class Levy01Controller extends ApplicationController {
return setCollectionInfo(new ModelAndView("jsonView"), result, "rductLevyTrgt");
}
public ModelAndView getReductionLevyTargetInfo(LevyQuery req) {
// 감경 부과일자
DataObject rductLevyYmdInfo = taskInfoService.getAdvntceYmdInfo(new TaskInfoQuery().setSggCd(req.getSggCd())
.setTaskSeCd(req.getTaskSeCd()));
boolean json = jsonResponse();
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/levy/levy01020-info");
return mav.addObject("pageName", "levy01020")
.addObject("levyQuery", json ? req : toJson(req))
.addObject("rductLevyYmdInfo", json ? rductLevyYmdInfo : toJson(rductLevyYmdInfo)) //
;
}
/** .
* @param levy
* @return jsonView
@ -85,9 +112,10 @@ public class Levy01Controller extends ApplicationController {
* "saved": true, false
* }</code></pre>
*/
public ModelAndView createReductionLevyList(LevyQuery req) {
public ModelAndView createReductionLevy(Levy levy) {
boolean saved = false;
String retMessage = levyService.createRductLevyList(req);
// String retMessage = levyService.createRductLevyList(req);
String retMessage = "[S]";
if (retMessage.contains("[S]")) {
saved = true;

@ -9,7 +9,6 @@ import org.springframework.web.servlet.ModelAndView;
import cokr.xit.base.code.CommonCode;
import cokr.xit.base.user.ManagedUser;
import cokr.xit.base.user.service.UserService;
import cokr.xit.base.web.ApplicationController;
import cokr.xit.fims.cmmn.TaskInfoQuery;
import cokr.xit.fims.cmmn.service.TaskInfoService;
@ -86,10 +85,6 @@ public class Sndb01Controller extends ApplicationController {
@Resource(name = "sndngService")
private SndngService sndngService;
/** 사용자 정보 DAO */
@Resource(name="userService")
protected UserService userService;
/** 업무 정보 서비스 */
@Resource(name = "taskInfoService")
private TaskInfoService taskInfoService;
@ -294,7 +289,8 @@ public class Sndb01Controller extends ApplicationController {
List<DataObject> advntceTrgts = sndngService.getAdvntceTrgts(req);
// 사전통지 납기일자
DataObject taskInfo = taskInfoService.getTaskInfo(new TaskInfoQuery().setSggCd(req.getSggCd()).setTaskSeCd(req.getTaskSeCd()));
DataObject taskInfo = taskInfoService.getTaskInfo(new TaskInfoQuery().setSggCd(req.getSggCd())
.setTaskSeCd(req.getTaskSeCd()));
int advntceDaycnt = taskInfo.number("ADVNTCE_DAYCNT").intValue();
boolean json = jsonResponse();

@ -16,6 +16,7 @@ import cokr.xit.fims.excl.CrdnReReg;
import cokr.xit.fims.excl.LevyExclQuery;
import cokr.xit.fims.excl.LevyExcl;
import cokr.xit.fims.excl.OpnnSbmsn;
import cokr.xit.fims.levy.Levy;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.Rduct;
import cokr.xit.fims.payer.Payer;
@ -508,9 +509,9 @@ public class BpvController {
}
@Override
@RequestMapping(name="전용차로과태료업무 사전(감경) 부과 대장 등록", value=METHOD_URL.createReductionLevyList)
public ModelAndView createReductionLevyList(LevyQuery req) {
return super.createReductionLevyList(req);
@RequestMapping(name="전용차로과태료업무 사전(감경) 부과 대장 등록", value=METHOD_URL.createReductionLevy)
public ModelAndView createReductionLevy(Levy levy) {
return super.createReductionLevy(levy);
}
}

@ -14,6 +14,7 @@ import cokr.xit.fims.excl.CrdnReReg;
import cokr.xit.fims.excl.LevyExclQuery;
import cokr.xit.fims.excl.LevyExcl;
import cokr.xit.fims.excl.OpnnSbmsn;
import cokr.xit.fims.levy.Levy;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.Rduct;
import cokr.xit.fims.nxrp.NxrpMtchg;
@ -472,9 +473,15 @@ public class DpvController {
}
@Override
@RequestMapping(name="사전 감경부과 대장 등록", value=METHOD_URL.createReductionLevyList)
public ModelAndView createReductionLevyList(LevyQuery req) {
return super.createReductionLevyList(req);
@RequestMapping(name="사전 감경부과 정보 조회", value=METHOD_URL.getReductionLevyTargetInfo)
public ModelAndView getReductionLevyTargetInfo(LevyQuery req) {
return super.getReductionLevyTargetInfo(req);
}
@Override
@RequestMapping(name="사전 감경부과 대장 등록", value=METHOD_URL.createReductionLevy)
public ModelAndView createReductionLevy(Levy levy) {
return super.createReductionLevy(levy);
}
}

@ -15,6 +15,7 @@ import cokr.xit.fims.excl.CrdnReReg;
import cokr.xit.fims.excl.LevyExclQuery;
import cokr.xit.fims.excl.LevyExcl;
import cokr.xit.fims.excl.OpnnSbmsn;
import cokr.xit.fims.levy.Levy;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.Rduct;
import cokr.xit.fims.payer.Payer;
@ -478,9 +479,9 @@ public class PvsController {
}
@Override
@RequestMapping(name="주정차과태료업무 사전(감경) 부과 대장 등록", value=METHOD_URL.createReductionLevyList)
public ModelAndView createReductionLevyList(LevyQuery req) {
return super.createReductionLevyList(req);
@RequestMapping(name="주정차과태료업무 사전(감경) 부과 대장 등록", value=METHOD_URL.createReductionLevy)
public ModelAndView createReductionLevy(Levy levy) {
return super.createReductionLevy(levy);
}
}

@ -26,21 +26,21 @@
</resultMap>
<sql id="select">
SELECT TI.SGG_CD <!-- 시군구 코드 -->
, TI.TASK_SE_CD <!-- 업무 구분 코드 -->
, TI.TASK_SE_NM <!-- 업무 구분 명 -->
, TI.ADVNTCE_DAYCNT <!-- 사전통지 일수 -->
, TI.ADVNTCE_RDUCT_RT <!-- 사전통지 감경 율 -->
, TI.WKSN_RDUCT_RT <!-- 사회적약자 감경 율 -->
, TI.FFNLG_ADTN_YMD <!-- 과태료 가산 일자 -->
, TI.FFNLG_ADTN_RT <!-- 과태료 가산 율 -->
, TI.FFNLG_INADTN_RT <!-- 과태료 중가산 율 -->
, TI.FFNLG_INADTN_MXMM_CNT <!-- 과태료 중가산 최대 수 -->
, TI.USE_YN <!-- 사용 여부 -->
, TI.REG_DT <!-- 등록 일시 -->
, TI.RGTR <!-- 등록자 -->
, TI.MDFCN_DT <!-- 수정 일시 -->
, TI.MDFR <!-- 수정자 -->
SELECT TI.SGG_CD /* 시군구 코드 */
, TI.TASK_SE_CD /* 업무 구분 코드 */
, TI.TASK_SE_NM /* 업무 구분 명 */
, TI.ADVNTCE_DAYCNT /* 사전통지 일수 */
, TI.ADVNTCE_RDUCT_RT /* 사전통지 감경 율 */
, TI.WKSN_RDUCT_RT /* 사회적약자 감경 율 */
, TI.FFNLG_ADTN_YMD /* 과태료 가산 일자 */
, TI.FFNLG_ADTN_RT /* 과태료 가산 율 */
, TI.FFNLG_INADTN_RT /* 과태료 중가산 율 */
, TI.FFNLG_INADTN_MXMM_CNT /* 과태료 중가산 최대 수 */
, TI.USE_YN /* 사용 여부 */
, TI.REG_DT /* 등록 일시 */
, TI.RGTR /* 등록자 */
, TI.MDFCN_DT /* 수정 일시 */
, TI.MDFR /* 수정자 */
FROM TB_TASK_INFO TI
</sql>
@ -60,57 +60,72 @@
<include refid="utility.orderBy" />
</select>
<select id="selectAdvntceYmdInfo" parameterType="map" resultType="dataobject">/* 사전통지 정보 객체 가져오기(taskInfoMapper.selectTaskInfos) */
SELECT SGG_CD /* 시군구 코드 */
, TASK_SE_CD /* 업무 구분 코드 */
, ADVNTCE_DAYCNT /* 사전통지 일수 */
, ADVNTCE_RDUCT_RT /* 사전통지 감경 율 */
, (CONCAT(ADVNTCE_RDUCT_RT, '%')) AS RDUCT_RT /* 감경 율 */
, DATE_FORMAT(CURRENT_DATE, '%Y') AS FYR /* 회계 연도 */
, DATE_FORMAT(CURRENT_DATE, '%Y%m%d') AS LEVY_YMD /* 부과 일자 */
, DATE_FORMAT(DATE_ADD(CURRENT_DATE, INTERVAL ADVNTCE_DAYCNT DAY), '%Y%m%d') AS DUDT_YMD /* 납기 일자 */
FROM TB_TASK_INFO
WHERE SGG_CD = #{sggCd}
AND TASK_SE_CD = #{taskSeCd}
<include refid="utility.orderBy" />
</select>
<insert id="insertTaskInfo" parameterType="map">/* 업무 정보 등록(taskInfoMapper.insertTaskInfo) */
INSERT
INTO TB_TASK_INFO (
SGG_CD <!-- 시군구 코드 -->
, TASK_SE_CD <!-- 업무 구분 코드 -->
, TASK_SE_NM <!-- 업무 구분 명 -->
, ADVNTCE_DAYCNT <!-- 사전통지 일수 -->
, ADVNTCE_RDUCT_RT <!-- 사전통지 감경 율 -->
, WKSN_RDUCT_RT <!-- 사회적약자 감경 율 -->
, FFNLG_ADTN_YMD <!-- 과태료 가산 일자 -->
, FFNLG_ADTN_RT <!-- 과태료 가산 율 -->
, FFNLG_INADTN_RT <!-- 과태료 중가산 율 -->
, FFNLG_INADTN_MXMM_CNT <!-- 과태료 중가산 최대 수 -->
, USE_YN <!-- 사용 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
SGG_CD /* 시군구 코드 */
, TASK_SE_CD /* 업무 구분 코드 */
, TASK_SE_NM /* 업무 구분 명 */
, ADVNTCE_DAYCNT /* 사전통지 일수 */
, ADVNTCE_RDUCT_RT /* 사전통지 감경 율 */
, WKSN_RDUCT_RT /* 사회적약자 감경 율 */
, FFNLG_ADTN_YMD /* 과태료 가산 일자 */
, FFNLG_ADTN_RT /* 과태료 가산 율 */
, FFNLG_INADTN_RT /* 과태료 중가산 율 */
, FFNLG_INADTN_MXMM_CNT /* 과태료 중가산 최대 수 */
, USE_YN /* 사용 여부 */
, REG_DT /* 등록 일시 */
, RGTR /* 등록자 */
, MDFCN_DT /* 수정 일시 */
, MDFR /* 수정자 */
)
VALUES (
#{taskInfo.sggCd} <!-- 시군구 코드 -->
, #{taskInfo.taskSeCd} <!-- 업무 구분 코드 -->
, #{taskInfo.taskSeNm} <!-- 업무 구분 명 -->
, #{taskInfo.advntceDaycnt} <!-- 사전통지 일수 -->
, #{taskInfo.advntceRductRt} <!-- 사전통지 감경 율 -->
, #{taskInfo.wksnRductRt} <!-- 사회적약자 감경 율 -->
, #{taskInfo.ffnlgAdtnYmd} <!-- 과태료 가산 일자 -->
, #{taskInfo.ffnlgAdtnRt} <!-- 과태료 가산 율 -->
, #{taskInfo.ffnlgInadtnRt} <!-- 과태료 중가산 율 -->
, #{taskInfo.ffnlgInadtnMxmmCnt} <!-- 과태료 중가산 최대 수 -->
, #{taskInfo.useYN} <!-- 사용 여부 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
, #{currentUser.id} <!-- 등록자 -->
, <include refid="utility.now" /> <!-- 수정 일시 -->
, #{currentUser.id} <!-- 수정자 -->
#{taskInfo.sggCd} /* 시군구 코드 */
, #{taskInfo.taskSeCd} /* 업무 구분 코드 */
, #{taskInfo.taskSeNm} /* 업무 구분 명 */
, #{taskInfo.advntceDaycnt} /* 사전통지 일수 */
, #{taskInfo.advntceRductRt} /* 사전통지 감경 율 */
, #{taskInfo.wksnRductRt} /* 사회적약자 감경 율 */
, #{taskInfo.ffnlgAdtnYmd} /* 과태료 가산 일자 */
, #{taskInfo.ffnlgAdtnRt} /* 과태료 가산 율 */
, #{taskInfo.ffnlgInadtnRt} /* 과태료 중가산 율 */
, #{taskInfo.ffnlgInadtnMxmmCnt} /* 과태료 중가산 최대 수 */
, 'Y' /* 사용 여부 */
, <include refid="utility.now" /> /* 등록 일시 */
, #{currentUser.id} /* 등록자 */
, <include refid="utility.now" /> /* 수정 일시 */
, #{currentUser.id} /* 수정자 */
)
</insert>
<update id="updateTaskInfo" parameterType="map">/* 업무 정보 수정(taskInfoMapper.updateTaskInfo) */
UPDATE TB_TASK_INFO
SET TASK_SE_NM = #{taskInfo.taskSeNm} <!-- 업무 구분 명 -->
, ADVNTCE_DAYCNT = #{taskInfo.advntceDaycnt} <!-- 사전통지 일수 -->
, ADVNTCE_RDUCT_RT = #{taskInfo.advntceRductRt} <!-- 사전통지 감경 율 -->
, WKSN_RDUCT_RT = #{taskInfo.wksnRductRt} <!-- 사회적약자 감경 율 -->
, FFNLG_ADTN_YMD = #{taskInfo.ffnlgAdtnYmd} <!-- 과태료 가산 일자 -->
, FFNLG_ADTN_RT = #{taskInfo.ffnlgAdtnRt} <!-- 과태료 가산 율 -->
, FFNLG_INADTN_RT = #{taskInfo.ffnlgInadtnRt} <!-- 과태료 중가산 율 -->
, FFNLG_INADTN_MXMM_CNT = #{taskInfo.ffnlgInadtnMxmmCnt} <!-- 과태료 중가산 최대 수 -->
, USE_YN = #{taskInfo.useYN} <!-- 사용 여부 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{currentUser.id} <!-- 수정자 -->
SET TASK_SE_NM = #{taskInfo.taskSeNm} /* 업무 구분 명 */
, ADVNTCE_DAYCNT = #{taskInfo.advntceDaycnt} /* 사전통지 일수 */
, ADVNTCE_RDUCT_RT = #{taskInfo.advntceRductRt} /* 사전통지 감경 율 */
, WKSN_RDUCT_RT = #{taskInfo.wksnRductRt} /* 사회적약자 감경 율 */
, FFNLG_ADTN_YMD = #{taskInfo.ffnlgAdtnYmd} /* 과태료 가산 일자 */
, FFNLG_ADTN_RT = #{taskInfo.ffnlgAdtnRt} /* 과태료 가산 율 */
, FFNLG_INADTN_RT = #{taskInfo.ffnlgInadtnRt} /* 과태료 중가산 율 */
, FFNLG_INADTN_MXMM_CNT = #{taskInfo.ffnlgInadtnMxmmCnt} /* 과태료 중가산 최대 수 */
, USE_YN = #{taskInfo.useYN} /* 사용 여부 */
, MDFCN_DT = <include refid="utility.now" /> /* 수정 일시 */
, MDFR = #{currentUser.id} /* 수정자 */
WHERE SGG_CD = #{taskInfo.sggCd}
AND TASK_SE_CD = #{taskInfo.taskSeCd}
</update>
@ -118,7 +133,7 @@
<update id="deleteTaskInfo" parameterType="map">/* 업무 정보 삭제(taskInfoMapper.deleteTaskInfo) */
UPDATE TB_TASK_INFO
SET USE_YN = 'N'
, MDFCN_DT =<include refid="utility.now" />
, MDFCN_DT = <include refid="utility.now" />
, MDFR = #{currentUser.id}
WHERE SGG_CD = #{taskInfo.sggCd}
AND TASK_SE_CD = #{taskInfo.taskSeCd}

@ -98,11 +98,8 @@
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, C.CRDN_INPT_SE_CD <!-- 단속 입력 구분 코드 -->
, (SELECT GET_CODE_NM('FIM003', C.CRDN_INPT_SE_CD) FROM DUAL) AS CRDN_INPT_SE_NM <!-- 단속 입력 구분 명 -->
, C.CRDN_YMD <!-- 단속 일자 -->
, C.CRDN_TM <!-- 단속 시각 -->
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM <!-- 단속 일시 -->
, (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 <!-- 단속 도로 명 -->
@ -111,13 +108,17 @@
, C.FFNLG_AMT <!-- 과태료 금액 -->
, C.ADVNTCE_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 <!-- 단속 상태 변경 일시 -->
, C.REG_DT <!-- 등록 일시 -->
, C.RGTR <!-- 등록자 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, C.MDFCN_DT <!-- 수정 일시 -->
, C.MDFR <!-- 수정자 -->
, (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 <!-- 단속 입력 구분 명 -->
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM <!-- 단속 일시 -->
, (SELECT GET_MASK_DATETIME(C.CRDN_YMD, '-', C.CRDN_TM, ':') FROM DUAL) AS CRDN_YMD_TM_MASK <!-- 단속 일시 마스크 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, VI.VLTN_ID <!-- 위반 ID -->
, VI.VLTN_CD <!-- 위반 코드 -->
@ -128,11 +129,11 @@
, CC.CVLCPT_RCPT_NO <!-- 민원 접수 번호 -->
, CC.CVLCPT_PRCS_SUMRY <!-- 민원 처리 요약 -->
, CC.CVLCPT_PRCS_CD <!-- 민원 처리 코드 -->
, (SELECT GET_CODE_NM('FIM017', CC.CVLCPT_PRCS_CD) FROM DUAL) AS CVLCPT_PRCS_NM <!-- 민원 처리 명 -->
, CC.CVLCPT_PRCS_CMPTN_DT <!-- 민원 처리 완료 일시 -->
, CC.CVLCPT_TRSM_CD <!-- 민원 전송 코드 -->
, (SELECT GET_CODE_NM('FIM018', CC.CVLCPT_TRSM_CD) FROM DUAL) AS CVLCPT_TRSM_NM <!-- 민원 전송 명 -->
, CC.CVLCPT_TRSM_DT <!-- 민원 전송 일시 -->
, (SELECT GET_CODE_NM('FIM017', CC.CVLCPT_PRCS_CD) FROM DUAL) AS CVLCPT_PRCS_NM <!-- 민원 처리 명 -->
, (SELECT GET_CODE_NM('FIM018', CC.CVLCPT_TRSM_CD) FROM DUAL) AS CVLCPT_TRSM_NM <!-- 민원 전송 명 -->
, P.RTPYR_ID <!-- 납부자 ID -->
, P.RTPYR_NO <!-- 납부자 번호 -->
, P.RTPYR_NM <!-- 납부자 명 -->
@ -275,7 +276,6 @@
, MNG_ARTCL6 <!-- 관리 항목 6 -->
, RCVMT_YMD <!-- 수납 일자 -->
, NPMNT_RSN_CD <!-- 체납 사유 코드 -->
, (SELECT GET_CODE_NM('FIM043', L.NPMNT_RSN_CD) FROM DUAL) AS NPMNT_RSN_NM <!-- 체납 사유 명 -->
, SZR_THING <!-- 압류 물건 -->
, SZR_YMD <!-- 압류 일자 -->
, SZR_RMV_YMD <!-- 압류 해제 일자 -->
@ -308,14 +308,15 @@
, DEL_YN <!-- 삭제 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, DEL_DT <!-- 삭제 일시 -->
, DLTR <!-- 삭제자 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.DLTR) AS DLTR_NM <!-- 삭제자 명 -->
, DEL_RSN <!-- 삭제 사유 -->
, (SELECT GET_CODE_NM('FIM043', L.NPMNT_RSN_CD) FROM DUAL) AS NPMNT_RSN_NM <!-- 체납 사유 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.DLTR) AS DLTR_NM <!-- 삭제자 명 -->
FROM TB_LEVY L
</sql>

@ -198,7 +198,7 @@
<th class="cmn" style="width: 56px;">
<input type="checkbox" class="form-check-input" onchange="${pageName}Control.select(this.checked);">
</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('TASK_SE_CD', this.innerText, 'codeValue', 'FIM054');">업무구분</th>
<th class="cmn" style="width: 160px;">업무구분</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('LEVY_EXCL_YMD', this.innerText, 'ymd', '');">부과제외일자</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('LEVY_EXCL_SE_CD', this.innerText, 'codeValue', 'FIM021');">부과제외구분</th>
<th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('LEVY_EXCL_RSN_CD', this.innerText, 'codeValue', 'FIM022');">부과제외사유</th>

@ -201,7 +201,7 @@
<th class="cmn" style="width: 56px;">
<input type="checkbox" class="form-check-input" onchange="${pageName}Control.select(this.checked);">
</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('TASK_SE_CD', this.innerText, 'codeValue', 'FIM054');">업무구분</th>
<th class="cmn" style="width: 160px;">업무구분</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RCPT_YMD', this.innerText, 'ymd', '');">접수일자</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RCPT_NO', this.innerText, 'match', 'part');">접수번호</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RCPT_SE_CD', this.innerText, 'codeValue', 'FIM029');">접수구분</th>

@ -159,7 +159,7 @@
<tr id="theadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
<th class="cmn" style="width: 72px;">NO.</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('TASK_SE_CD', this.innerText, 'codeValue', 'FIM054');">업무구분</th>
<th class="cmn" style="width: 160px;">업무구분</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RE_REG_YMD', this.innerText, 'ymd', '');">재등록일자</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('CRDN_REG_SE_CD', this.innerText, 'codeValue', 'FIM026');">단속등록구분</th>
<th class="cmn" style="width: 280px;" onclick="searchFromGridTitle('ETC_CN', this.innerText, 'match', 'part');">기타내용</th>

@ -149,15 +149,13 @@
<tr id="theadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
<th class="cmn" style="width: 72px;">NO.</th>
<th class="cmn" style="width: 56px;">
<input type="checkbox" class="form-check-input" onchange="${pageName}Control.select(this.checked);">
</th>
<th class="cmn" style="width: 160px;">업무구분</th>
<th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('CRDN_YMD', this.innerText, 'ymd', '');">단속일시</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('VHRNO', this.innerText, 'match', 'part');">차량번호</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CRDN_STDG_NM', this.innerText, 'match', 'part');">법정동</th>
<th class="cmn" style="width: 280px;" onclick="searchFromGridTitle('CRDN_PLC', this.innerText, 'match', 'part');">단속장소</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('VLTN_ARTCL', this.innerText, 'match', 'part');">위반항목</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('FFNLG_CRDN_AMT', this.innerText, 'match', 'part');">단속금액</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('FFNLG_CRDN_AMT', this.innerText, 'match', 'part');">최초단속금액</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('FFNLG_AMT', this.innerText, 'match', 'part');">과태료금액</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('ADVNTCE_AMT', this.innerText, 'match', 'part');">사전통지금액</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CRDN_STTS_CD', this.innerText, 'codeValue', 'FIM010');">처리상태</th>
@ -182,14 +180,12 @@
<template id="${infoPrefix}Row--${pageName}">
<tr data-key="{CRDN_ID}">
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td>
<td class="cmn text-center">
<input type="checkbox" class="form-check-input" value="{CRDN_ID}" onchange="${pageName}Control.select('{CRDN_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}">{CRDN_YMD_TM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{VLTN_ARTCL}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VLTN_ARTCL}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_CRDN_AMT}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_AMT}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{ADVNTCE_AMT}</td>
@ -246,11 +242,15 @@
var ${pageName}Control = new DatasetControl({
prefix : "rductLevyTrgt"
, prefixName : "감경부과 대상"
, infoSize : "lg"
, infoSize : "md"
, keymapper : info => info ? info.CRDN_ID : ""
, dataGetter : obj => obj.rductLevyTrgtList
, appendData : true
, tableRenderComplete : false // dataTables 에 자료 추가 완료 여부
, urls : {
getInfo : wctx.url("/sprt/sprt02/010/main.do") // 개별총정보
}
, formats : {
CRDN_YMD_TM : datetimeFormat
, CVLCPT_RCPT_YMD : dateFormat
@ -290,20 +290,6 @@
$("#tbody--${pageName}").setCurrentRow(key);
};
// 선택(체크) 변경 이벤트
${pageName}Control.onSelectionChange = selected => {
let ${infoPrefix}List = ${pageName}Control.dataset;
let keys = selected.map(e => ${infoPrefix}List.getKey(e));
$("#tbody--${pageName} input[type='checkbox']").each(function() {
let checkbox = $(this);
checkbox.prop("checked", keys.includes(checkbox.val()));
});
$("#btnRductLevyInfo--${pageName}").prop("disabled", keys.length < 1);
};
// 개별총정보 dialog
${pageName}Control.getInfo = (crdnId) => {
if (!crdnId) return;
@ -351,30 +337,22 @@
fn_securityModeToggle($("#securityMode--top").is(":checked"));
}
// callback
callbackRductLevyInfo${pageName} = (obj) => {
// 선택된 자료의 발송 상세 ID 추가
let selected = ${pageName}Control.dataset.getKeys("selected");
if (selected.length < 1) return;
let params = {
crdnIDs : selected.join(",") // 단속 IDs
, sggCd : $("#sggCd--${pageName}").val() // 시군구 코드
, taskSeCd : $("input[name='taskSeCd']:checked").val() // 업무 구분 코드
, levyYmd : obj.sndngYmd.replace(/-/g, "") // 부과 일자
, dudtYmd : obj.dudtYmd.replace(/-/g, "") // 납기 일자
, crdnSttsCd : "41" // 단속 상태 코드(FIM010) - 41 사전부과
};
// 부과 정보 dialog -> callback 추가
getRductLevyInfo${pageName} = (params) => {
if (!params) return;
ajax.post({
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/010/create.do")
, data : params
ajax.get({
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/020/info.do")
, data : params || {}
, success : resp => {
let btnTitle = $("#btnCreateRductLevy--${pageName}").attr("title");
let showMessage = resp.retMessage.replace(/[S]|[F]/g, btnTitle);
dialog.alert(showMessage);
dialog.open({
id : ${pageName}Control.prefixed("Dialog")
, title : ${pageName}Control.prefixName + " 정보"
, content : resp
, size : ${pageName}Control.infoSize
, init : () => { }
, onClose : () => { ${pageName}Control.load(${pageName}Control.query.pageNum); } // callback
});
}
});
}
@ -382,6 +360,15 @@
/**************************************************************************
* 초기 설정
**************************************************************************/
// 초기화
initForm${pageName} = () => {
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
// dataset 초기화
${pageName}Control.dataset.clear();
}
// 이벤트
setEvent${pageName} = () => {
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
@ -397,6 +384,9 @@
});
});
// DataTables width 변경 조정 업무별 그리드가 존재 한다면.. crdn06010-main.jsp 참고
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
// DataTables 스크롤 이벤트
$("#table-responsive--${pageName}").scroll(function() {
let el = $(this);
@ -436,7 +426,7 @@
// 달력 초기화
initDatepicker("frmSearch--${pageName}");
$("#schCrdnYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-90).date);
$("#schCrdnYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-465).date);
$("#schCrdnYmdTo--${pageName}").datepicker("setDate", new Date());
// DataTables width 변경 조정
@ -452,6 +442,23 @@
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
// 업무 구분 변경
fnResetAndChangeBiz${pageName} = (taskSeCd) => {
// 초기화
initForm${pageName}();
// 업무 구분 코드
if (typeof taskSeCd == "undefined" || taskSeCd == null || taskSeCd == "") {
taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val();
}
// 화면 초기값 설정
setForm${pageName}(taskSeCd);
// URL 설정
setURL${pageName}(taskSeCd);
}
// 초기화 버튼 이벤트
fnReset${pageName} = () => {
fnResetAndChangeBiz${pageName}();
@ -474,47 +481,18 @@
}
// 업무 구분 변경
fnResetAndChangeBiz${pageName} = (taskSeCd) => {
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
// dataset 초기화
${pageName}Control.dataset.clear();
// 업무 구분 코드
if (typeof taskSeCd == "undefined" || taskSeCd == null || taskSeCd == "") {
taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val();
}
// 사용자 조회 버튼 이벤트
fnUser${pageName} = () => {
// 화면 초기값 설정
setForm${pageName}(taskSeCd);
// URL 설정
setURL${pageName}(taskSeCd);
}
// 감경부과등록 버튼 이벤트
fnRductLevyInfo${pageName} = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
let callbackFuncName = "callbackRductLevyInfo${pageName}";
let popupWidth = 480;
let popupHeight = 320;
let popupX = (window.screen.width / 2) - (popupWidth / 2);
let popupY= (window.screen.height / 2) - (popupHeight / 2);
window.open(
wctx.url("/resources/html/inputDateDialog.html"
+ "?callbackFuncName=" + callbackFuncName
+ "&CALL_PURPOSE=" + "levy"
+ "&SNDNG_YMD=" + DateUtil.getDateDay().date
+ "&DUDT_YMD=" + DateUtil.getDateDay().date
)
, "inputEPostDateDialog"
, 'status=no, height=' + popupHeight + ', width=' + popupWidth + ', left='+ popupX + ', top='+ popupY
);
let params = ${pageName}Fields.get();
params.callPurpose = "create";
getRductLevyInfo${pageName}(params);
}
/**************************************************************************

@ -0,0 +1,205 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<!-- inner page html -->
<div class="content-wrapper">
<!-- Content -->
<div class="container flex-grow-1 px-0">
<c:set var="prefixName" scope="request">부과 정보</c:set>
<!-- Page Body -->
<div class="card">
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<!-- hidden -->
<input type="hidden" id="sggCd--${pageName}" name="sggCd" data-map="SGG_CD" />
<input type="hidden" id="taskSeCd--${pageName}" name="taskSeCd" data-map="TASK_SE_CD" />
<div class="row g-1">
<!-- 총건수 -->
<div class="col-md-12">
<label for="tnocs--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">총 건수/금액</label>
<input type="text" class="form-control w-px-80" id="tnocs--${pageName}" name="tnocs" data-map="TNOCS" readonly />
<input type="text" class="form-control w-px-120" id="gramt--${pageName}" name="gramt" data-map="GRAMT" readonly />
</div>
<!-- 회계연도 -->
<div class="col-md-12">
<label for="fyr--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">회계연도</label>
<input type="text" class="form-control w-px-80" id="fyr--${pageName}" name="fyr" data-map="FYR" autocomplete="off" required />
</div>
<!-- 부과 일자 -->
<div class="col-md-12">
<label for="levyYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">부과일자</label>
<input type="text" class="form-control form-date" id="levyYmd--${pageName}" name="levyYmd" data-map="LEVY_YMD"
data-fmt-type="day" autocomplete="off" title="날짜 선택" maxlength="10" required />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</div>
<!-- 납기 일자 -->
<div class="col-md-12">
<label for="dudtYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">납기일자</label>
<input type="text" class="form-control form-date" id="dudtYmd--${pageName}" name="dudtYmd" data-map="DUDT_YMD"
data-fmt-type="day" autocomplete="off" title="날짜 선택" maxlength="10" required />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</div>
<!-- 감경율 -->
<div class="col-md-12">
<label for="rductRt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">감경율</label>
<input type="text" class="form-control w-px-120" id="rductRt--${pageName}" name="rductRt" data-map="RDUCT_RT"
autocomplete="off" required readonly />
</div>
</div>
</form> <!-- /입력 영역 -->
</div> <!-- <div class="card"> -->
<!-- 업무 버튼 표시 -->
<div>
<span class="container-page-btn">
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-80" id="btnSave--${pageName}" title="저장" onclick="fnSave${pageName}()">
저장
</button>
</span>
</span>
</div>
<!-- / 업무 버튼 표시 -->
</div> <!-- / Content <div class="container flex-grow-1 px-0"> -->
</div> <!-- / inner page html <div class="content-wrapper"> -->
<script>
/**************************************************************************
* Global Variable
**************************************************************************/
// URL
var ${pageName}PrefixUrl = "/excl/excl01";
// FormFields
var ${pageName}Fields = new FimsFormFields("#frmEdit--${pageName}");
//
var ${pageName}Query = ${levyQuery};
/**************************************************************************
* DatasetControl
**************************************************************************/
var ${pageName}Control = new DatasetControl({
prefix : "rductLevy"
, prefixName : "감경부과"
, keymapper : info => info ? info.CRDN_ID : ""
, dataGetter : obj => obj.levyExclInfo
, urls : {
create : wctx.url(${pageName}PrefixUrl + "/020/create.do") // 등록
, update : wctx.url(${pageName}PrefixUrl + "/020/update.do") // 수정
}
});
${pageName}Control.onCurrentChange = item => {
if (!item) return;
// Dataset 셋팅
${pageName}Fields.set(item);
// 업무구분에 따른 url 변경
${pageName}Control.urls.create = wctx.url(item.data.TASK_SE_CD + ${pageName}PrefixUrl + "/020/create.do");
${pageName}Control.urls.update = wctx.url(item.data.TASK_SE_CD + ${pageName}PrefixUrl + "/020/update.do");
}
/**************************************************************************
* DatasetControl 이벤트
**************************************************************************/
// 저장 callback
${pageName}Control.onSave = (resp) => {
let dialogTitle = $("#" + ${pageName}Control.prefix + "Dialog").find("h5.modal-title").html();
let showMessage = resp.retMessage.replace(/[S]|[F]/g, dialogTitle);
dialog.alert(showMessage);
if (resp.saved) {
dialog.close(${pageName}Control.prefix + "Dialog");
if ("${savedCallbackFuncName}" != "") {
${savedCallbackFuncName}(resp.saved);
}
}
}
// 저장
${pageName}Control.save = (info) => {
if (!info) return;
let create = isEmpty(info.levyExclId);
// 민원 접수 관리에서 호출했다면..
if (create && "${saveCallbackFuncName}" != "") {
${saveCallbackFuncName}(info);
} else {
ajax.post({
url : !create ? ${pageName}Control.urls.update : ${pageName}Control.urls.create
, data : info
, success : resp => ${pageName}Control.onSave(resp)
});
}
}
/**************************************************************************
*
**************************************************************************/
/**************************************************************************
* 초기 셋팅
**************************************************************************/
// 이벤트 설정
setEvent${pageName} = () => {
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
$("#frmEdit--${pageName}").find(".form-date").each(function() {
$(this).on("input", function() {
let value = this.value.replaceAll("-","");
if (value.length > 7) {
this.value = value.substring(0, 4) + "-" + value.substring(4, 6) + "-" + value.substring(6);
} else if(value.length > 5) {
this.value = value.substring(0, 4) + "-" + value.substring(4);
}
});
});
}
// 검색조건 초기값 셋팅
setForm${pageName} = () => {
// 달력 초기화
initDatepicker("frmEdit--${pageName}");
$("#levyYmd--${pageName}").datepicker("setDate", new Date());
$("#dudtYmd--${pageName}").datepicker("setDate", new Date());
}
/**************************************************************************
* function
**************************************************************************/
// 저장
fnSave${pageName} = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
dialog.alert({
content : "현재 " + ${pageName}Control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => {
${pageName}Control.save(${pageName}Fields.get());
}
});
}
/**************************************************************************
* script 진입
**************************************************************************/
$(document).ready(function() {
// 이벤트 설정
setEvent${pageName}();
// 화면 초기 설정
setForm${pageName}();
// Dataset 셋팅
${pageName}Control.setData([${rductLevyYmdInfo}]);
debugger;
});
</script>

@ -178,7 +178,7 @@
<th class="cmn" style="width: 56px;">
<input type="checkbox" class="form-check-input" onchange="${pageName}Control.select(this.checked);">
</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('TASK_SE_CD', this.innerText, 'codeValue', 'FIM054');">업무구분</th>
<th class="cmn" style="width: 160px;">업무구분</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RCVMT_INPT_SE_CD', this.innerText, 'codeValue', 'FIM044');">수납입력구분</th>
<th class="cmn" style="width: 100px;" onclick="searchFromGridTitle('RCVMT_RTRCN_YN', this.innerText, 'codeValue', 'CMM005');">수납취소</th>
<th class="cmn" style="width: 100px;" onclick="searchFromGridTitle('ACNTG_YR', this.innerText, 'match', 'part');">회계연도</th>

Loading…
Cancel
Save