공시송달 현황 수정.

main
jjh 9 months ago
parent fcdfd3d124
commit 15a8c272f6

@ -148,9 +148,6 @@ public interface SndngDtlMapper extends AbstractMapper {
return sndngDtl != null && deleteSndngDtl(params().set("sndngDtl", sndngDtl)) == 1;
}
/** .
* @param req
* @return
@ -163,6 +160,12 @@ public interface SndngDtlMapper extends AbstractMapper {
*/
List<DataObject> selectSndbks(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> selectSvbtcsTrgtSndngDtlIDs(SndbQuery req);
/** 1 .
* @param req
* @return

@ -129,14 +129,6 @@ public interface SndngDtlService {
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
String createSvbtc(Svbtc svbtc);
/** .
* @param svbtc

@ -15,7 +15,7 @@ import cokr.xit.fims.sndb.SndbQuery;
*
* <pre>
* ============ ============
* 2024-01-09 mjkhan
* 2024-01-09 JoJH
* ================================
* </pre>
*/
@ -57,6 +57,15 @@ public interface SvbtcService {
*/
Map<String, String> makeSvbtcFileFromHwpFormat(String formatType, String formatName, PrintOption printOption, SndbQuery req);
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
String createSvbtc(SndbQuery req, Svbtc svbtc);
/** .
* @param svbtc
* @return

@ -10,7 +10,6 @@ import cokr.xit.foundation.AbstractComponent;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.sndb.SndngDtl;
import cokr.xit.fims.sndb.Svbtc;
import cokr.xit.fims.cmmn.CmmnUtil;
import cokr.xit.fims.epst.EpostQuery;
import cokr.xit.fims.epst.dao.EpostDlvrRsltMapper;
@ -320,55 +319,6 @@ public class SndngDtlBean extends AbstractComponent {
return rtnMsg;
}
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String createSvbtc(Svbtc svbtc) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 공시송달(TB_SNDNG_DTL) 대장에 공시송달 정보를 등록 한다.
rtnScs = svbtcMapper.insert(svbtc);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("공시송달 정보 등록에 실패하였습니다.");
}
// 발송 상세 대장에 공시송달 정보 수정
for (int iLoop = 0; iLoop < svbtc.getSndngDtlIDs().length; iLoop++) {
// 발송 상세
SndngDtl sndngDtl = new SndngDtl();
sndngDtl.setSvbtcId(svbtc.getSvbtcId());
sndngDtl.setSndngDtlSttsCd("06");
sndngDtl.setSndngDtlId(svbtc.getSndngDtlIDs()[iLoop]);
rtnScs = sndngDtlMapper.updateSndngDtlSvbtc(sndngDtl);
if (!rtnScs) {
throw new RuntimeException("발송상세 대장에 공시송달 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
}
/**ID .
* @param req
* @return

@ -107,11 +107,6 @@ public class SndngDtlServiceBean extends AbstractServiceBean implements SndngDtl
@Override
public String createSvbtc(Svbtc svbtc) {
return sndngDtlBean.createSvbtc(svbtc);
}
@Override
public String removeSvbtcEach(Svbtc svbtc) {
// 변수 선언

@ -1,5 +1,6 @@
package cokr.xit.fims.sndb.service.bean;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
@ -125,12 +126,65 @@ public class SvbtcBean extends AbstractComponent {
* <li> false</li>
* </ul>
*/
public String createSvbtc(SndbQuery req, Svbtc svbtc) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 공시송달(TB_SNDNG_DTL) 대장에 공시송달 정보를 등록 한다.
rtnScs = svbtcMapper.insert(svbtc);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("공시송달 정보 등록에 실패하였습니다.");
}
List<DataObject> sndngDtlList = new ArrayList<DataObject>();
if (svbtc.getSndngDtlIDs() == null || svbtc.getSndngDtlIDs().length < 1) {
req.setOrderBy("SD.SNDNG_DTL_ID");
sndngDtlList = sndngDtlMapper.selectSvbtcsTrgtSndngDtlIDs(req);
} else {
SndbQuery query = new SndbQuery();
query.setSndngDtlIDs(svbtc.getSndngDtlIDs());
query.setOrderBy("SD.SNDNG_DTL_ID");
sndngDtlList = sndngDtlMapper.selectSvbtcsTrgtSndngDtlIDs(query);
}
// 발송 상세 대장에 공시송달 정보 수정
for (int iLoop = 0; iLoop < sndngDtlList.size(); iLoop++) {
// 발송 상세
SndngDtl sndngDtl = new SndngDtl();
sndngDtl.setSvbtcId(svbtc.getSvbtcId());
sndngDtl.setSndngDtlSttsCd("06");
sndngDtl.setSndngDtlId(sndngDtlList.get(iLoop).string("SNDNG_DTL_ID"));
rtnScs = sndngDtlMapper.updateSndngDtlSvbtc(sndngDtl);
if (!rtnScs) {
throw new RuntimeException("발송상세 대장에 공시송달 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
}
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String create(Svbtc svbtc) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 공시송달(TB_SVBTC) 정보를 등록 한다.
// 공시송달(TB_SNDNG_DTL) 대장에 공시송달 정보를 등록 한다.
rtnScs = svbtcMapper.insert(svbtc);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback

@ -171,6 +171,11 @@ public class SvbtcServiceBean extends AbstractServiceBean implements SvbtcServic
return result;
}
@Override
public String createSvbtc(SndbQuery req, Svbtc svbtc) {
return svbtcBean.createSvbtc(req, svbtc);
}
@Override
public String create(Svbtc svbtc) {
return svbtcBean.create(svbtc);

@ -1364,9 +1364,11 @@ public class Sndb01Controller extends ApplicationController {
mav.setViewName("fims/sndb/sndb01250-info");
return mav
.addObject("pageName", "sndb01250")
.addObject("query", toJson(req))
.addObject("svbtcDtlList", toJson(mav.getModel().get("svbtcDtlList")))
.addObject("pageName", "sndb01250") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "svbtcDtl") // prefix
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("mainQuery", toJson(req)) // 검색 조건
.addObject("svbtcDtlList", toJson(mav.getModel().get("svbtcDtlList"))) // 자료
;
}
@ -1494,10 +1496,10 @@ public class Sndb01Controller extends ApplicationController {
addCodes(commonCodes, mav, "FIM047", "FIM054");
return mav
.addObject("pageName", "sndb01260")
.addObject("pageName", "sndb01260") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "svbtc") // prefix
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
.addObject("sndbkQuery", json ? req : toJson(req)) // Query
.addObject("mainQuery", json ? req : toJson(req)) // Query
.addObject("svbtcInfo", json ? svbtcInfo : toJson(svbtcInfo)) // 공시송달 정보
;
}
@ -1512,7 +1514,7 @@ public class Sndb01Controller extends ApplicationController {
*/
public ModelAndView createServiceByPublicNotice(SndbQuery req, Svbtc svbtc) {
boolean saved = false;
String rtnMsg = sndngDtlService.createSvbtc(svbtc);
String rtnMsg = svbtcService.createSvbtc(req, svbtc);
if (rtnMsg.contains("[S]")) {
saved = true;

@ -838,6 +838,12 @@
, P.ADDR <!-- 주소 -->
, P.DTL_ADDR <!-- 상세 주소 -->
, (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM <!-- 납부자 구분 명 -->
<include refid="fromSndbk" />
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" />
</select>
<sql id="fromSndbk">
FROM TB_SNDNG_DTL SD
INNER JOIN TB_CRDN C ON (SD.CRDN_ID = C.CRDN_ID)
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
@ -848,6 +854,11 @@
AND (SD.SVBTC_ID IS NULL OR SD.SVBTC_ID = '')
AND (SD.SNDNG_RCVMT_CD IS NULL OR SD.SNDNG_RCVMT_CD = '')
AND (S.RESND_YN IS NULL OR S.RESND_YN = 'N')
<if test="sndngDtlIDs != null">
AND SD.SNDNG_DTL_ID IN ( <!-- 발송 상세 IDs -->
<foreach collection="sndngDtlIDs" item="sndngDtlId" separator=","> #{sndngDtlId} </foreach>
)
</if>
<choose>
<when test='schChcRgIndct == "Y"'>
AND ( (SD.SNDNG_DTL_STTS_CD = #{sndngDtlSttsCd})
@ -956,8 +967,12 @@
</otherwise>
</choose>
</if>
</sql>
<select id="selectSvbtcsTrgtSndngDtlIDs" parameterType="map" resultType="dataobject">/* 공시송달 대상 발송 상세 ID 가져오기(sndngMapper.selectSvbtcsTrgtSndngDtlIDs) */
SELECT SD.SNDNG_DTL_ID <!-- 발송 상세 ID -->
<include refid="fromSndbk" />
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" />
</select>
<sql id="selectSndbk">
@ -994,11 +1009,6 @@
<if test="sndngDtlId != null">
AND SD.SNDNG_DTL_ID = #{sndngDtlId} <!-- 발송 상세 ID -->
</if>
<if test="sndngIDs != null">
AND SD.SNDNG_ID IN ( <!-- 발송 IDs -->
<foreach collection="sndngIDs" item="sndngId" separator=","> #{sndngId} </foreach>
)
</if>
<if test="sndngId != null">
AND SD.SNDNG_ID = #{sndngId} <!-- 발송 ID -->
</if>

@ -325,6 +325,14 @@
<include refid="utility.orderBy" />
</select>
<select id="selectSvbtcTrgtDtlIDs" parameterType="String" resultType="dataobject">/* 반송 현황 조건에서 발송상세 ID를 가져오기(sndngDtlMapper.selectSvbtcTrgtDtlIDs) */
SELECT SNDNG_DTL_ID <!-- 발송 상세 ID -->
FROM TB_SNDNG_DTL
WHERE SNDNG_ID = #{sndngId} <!-- 발송 ID -->
AND DEL_YN = 'N'
ORDER BY SNDNG_DTL_ID
</select>
<insert id="insertSvbtc" parameterType="map">/* 공시송달 대장 등록(svbtcMapper.insertSvbtc) */
<selectKey resultType="string" keyProperty="svbtc.svbtcId" keyColumn="NEW_ID" order="BEFORE">
SELECT CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(SVBTC_ID, 5)) + 1, 1) AS INT), 16, '0')) AS NEW_ID

@ -179,14 +179,14 @@
</div>
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-120" id="btnCreateSlctnSndngLink--${pageName}" title="선택 통합우편 발송">
<button type="button" class="btn btn-primary w-px-160" id="btnCreateSlctnSndngLink--${pageName}" title="선택 통합우편 발송">
선택 통합우편 발송
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnCreateWholSndngLink--${pageName}" title="전체 통합우편 발송">
<button type="button" class="btn btn-primary w-px-160" id="btnCreateWholSndngLink--${pageName}" title="전체 통합우편 발송">
전체 통합우편 발송
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnCreateSvbtc--${pageName}" title="전체 공시송달 등록">
공시송달 등록
<button type="button" class="btn btn-primary w-px-160" id="btnCreateWholSvbtc--${pageName}" title="전체 공시송달 등록">
전체 공시송달 등록
</button>
</span>
</span>
@ -507,8 +507,6 @@
, title : "개별총정보"
, content : resp
, size : "xxl"
, init : () => { }
, onClose : () => { }
});
}
});
@ -533,7 +531,7 @@
, success : resp => {
dialog.open({
id : "svbtcDialog"
, title : params.btnTitle
, title : params.title
, content : resp
, size : "md"
, onClose : () => { $P.refreshList(); }
@ -642,11 +640,10 @@
params.taskSeCd = $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
params.sndngSeCd = $P.control.dataset.getValue("SNDNG_SE_CD") // 발송 구분 코드
params.tnocs = $P.control.dataset.getValue("TOT_CNT") // 총건수
}
// 공시송달 등록 버튼 이벤트
$P.fnCreateSvbtc = (title) => {
$P.fnCreateWholSvbtc = (title) => {
if ($P.control.dataset.empty) {
dialog.alert({
content : "검색된 자료가 없습니다."
@ -708,8 +705,8 @@
$P.fnCreateWholSndngLink($(this).attr("title"));
});
// 전체 공시송달 등록 버튼 이벤트
$("#btnCreateSvbtc--${pageName}").on("click", function() {
$P.fnCreateSvbtc($(this).attr("title"));
$("#btnCreateWholSvbtc--${pageName}").on("click", function() {
$P.fnCreateWholSvbtc($(this).attr("title"));
});
// DataTables width 변경 조정

@ -186,7 +186,6 @@
$("#btnSave--${pageName}").on("click", function() {
$P.fnSave($(this).attr("title"));
});
}
// 초기 화면 설정

@ -487,15 +487,15 @@
fnMakeResizableTable($("#table-responsive--${pageName}")[0]);
// DataTables 스크롤 이벤트 생성
fnMakeScrollableTable($("#table-responsive--${pageName}")[0], scrollDataList${pageName});
fnMakeScrollableTable($("#table-responsive--${pageName}")[0], $P.scrollDataList);
// DataTables 스크롤을 위해서 다이얼로그 화면이 생성된 후 Dataset을 설정한다.
$("#${infoPrefix}Dialog").on("shown.bs.modal", function (e) {
$P.control.setData({
${infoPrefix}List : ${advntceSndngDtlList}
, ${infoPrefix}Start : ${advntceSndngDtlStart}
, ${infoPrefix}Fetch : ${advntceSndngDtlFetch}
, ${infoPrefix}Total : ${advntceSndngDtlTotal}
${infoPrefix}List : ${svbtcDtlList}
, ${infoPrefix}Start : ${svbtcDtlStart}
, ${infoPrefix}Fetch : ${svbtcDtlFetch}
, ${infoPrefix}Total : ${svbtcDtlTotal}
});
// 초기 데이터 설정

@ -12,8 +12,6 @@
<!-- 입력 영역 -->
<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" />
<input type="hidden" id="svbtcId--${pageName}" name="svbtcId" data-map="SVBTC_ID" />
<div class="row g-1">
@ -53,7 +51,7 @@
<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 type="button" class="btn btn-primary w-px-80" id="btnSave--${pageName}" title="저장">
저장
</button>
</span>
@ -68,33 +66,49 @@
/**************************************************************************
* Global Variable
**************************************************************************/
pageObject["${pageName}"] = {};
// 공통 코드
var FIM047 = new CommonCodes(${FIM047}, true);
var FIM054 = new CommonCodes(${FIM054}, true);
/**************************************************************************
* script 진입
**************************************************************************/
$(document).ready(function() {
// pageObject
var $P = pageObject["${pageName}"];
// URL
var ${pageName}PrefixUrl = "/sndb/sndb01";
$P.PrefixUrl = "/sndb/sndb01";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
var ${pageName}CallPurpose = "${callPurpose}";
$P.callPurpose = "${callPurpose}";
// FormFields
var ${pageName}Fields = new FimsFormFields("#frmEdit--${pageName}");
$P.formFields = new FimsFormFields("#frmEdit--${pageName}");
// main 의 검색 조건을 그대로 유지
var ${pageName}Query = ${sndbkQuery};
// 공통 코드
var FIM047 = new CommonCodes(${FIM047}, true);
var FIM054 = new CommonCodes(${FIM054}, true);
$P.mainQuery = ${mainQuery};
/**************************************************************************
* DatasetControl
**************************************************************************/
var ${pageName}Control = new DatasetControl({
$P.control = new DatasetControl({
prefix : "svbtc"
, prefixName : "공시송달"
, keymapper : info => info ? info.SVBTC_ID : ""
, dataGetter : obj => obj.svbtcInfo
});
${pageName}Control.onCurrentChange = item => {
/**************************************************************************
* DatasetControl 이벤트
**************************************************************************/
$P.control.onCurrentChange = (item) => {
if (!item) return;
// Dataset 셋팅
${pageName}Fields.set(item);
$P.formFields.set(item);
// 업무구분에 따른 URL 변경
$P.setURL(item.data.TASK_SE_CD);
// 호출용도가 등록이라면..
if (${pageName}CallPurpose == "create") {
@ -106,64 +120,61 @@
if (sndngSeCd == "") {
$("#ttlNm--${pageName}").val(FIM054[taskSeCd].value + " " + "공시송달");
} else {
$("#ttlNm--${pageName}").val(FIM054[taskSeCd].value + " " + FIM047[sndngSeCd].value.replace("(개별)", "") + " " + "공시송달");
$("#ttlNm--${pageName}").val(FIM047[sndngSeCd].value.replace("(개별)", "") + " " + "공시송달");
}
}
// 업무구분에 따른 url 변경
setURL${pageName}(item.data.TASK_SE_CD);
}
/**************************************************************************
* DatasetControl 이벤트
**************************************************************************/
// 저장 callback
${pageName}Control.onSave = (resp) => {
let dialogTitle = $("#" + ${pageName}Control.prefix + "Dialog").find("h5.modal-title").html();
$P.control.onSave = (resp) => {
let dialogTitle = $("#" + $P.control.prefix + "Dialog").find("h5.modal-title").html();
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, dialogTitle);
dialog.alert(showMessage);
// 메시지 출력
dialog.alert({
content : showMessage
, onOK : () => { }
});
if (resp.saved) {
dialog.close(${pageName}Control.prefix + "Dialog");
dialog.close($P.control.prefix + "Dialog");
}
}
// 저장
${pageName}Control.save = (info) => {
$P.control.save = (info) => {
if (!info) return;
let create = (${pageName}CallPurpose == "create");
let params = $.extend({}, ${pageName}Query, info); // 객체를 합친다.
let create = ($P.callPurpose == "create");
ajax.post({
url : !create ? ${pageName}Control.urls.update : ${pageName}Control.urls.create
, data : params
, success : resp => ${pageName}Control.onSave(resp)
url : !create ? $P.control.urls.update : $P.control.urls.create
, data : info
, success : resp => $P.control.onSave(resp)
});
}
/**************************************************************************
* 사용자 함수
* 사용자 함수(function)
**************************************************************************/
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.create = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/260/create.do"); // 등록
${pageName}Control.urls.update = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/260/update.do"); // 수정
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
// 저장 버튼 클릭 이벤트
fnSave${pageName} = () => {
$P.fnSave = (title) => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
// 파리미터 설정
let params = $.extend({}, $P.mainQuery, $P.formFields.get()); // 객체를 합친다.
params.title = title; // 타이틀
dialog.alert({
content : "현재 " + ${pageName}Control.prefixName + " 정보를 저장하시겠습니까?"
content : "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => {
${pageName}Control.save(${pageName}Fields.get());
$P.control.save(params);
}
});
}
@ -172,7 +183,7 @@
* 초기 셋팅
**************************************************************************/
// 이벤트 설정
setEvent${pageName} = () => {
$P.setEvent = () => {
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
$("#frmEdit--${pageName}").find(".form-date").each(function() {
$(this).on("input", function() {
@ -185,18 +196,20 @@
}
});
});
}
// 화면 초기 설정
initForm${pageName} = () => {
// 화면 초기화
$("#frmEdit--${pageName}")[0].reset();
// 저장 버튼 이벤트
$("#btnSave--${pageName}").on("click", function() {
$P.fnSave($(this).attr("title"));
});
}
// 초기 화면 설정
$P.initForm = () => {
// 달력 초기화
initDatepicker("frmEdit--${pageName}");
$("#svbtcYmd--${pageName}").datepicker("setDate", new Date());
if (${pageName}CallPurpose == "view") {
if ($P.callPurpose == "view") { // view
// input 요소들을 disabled
$("#frmEdit--${pageName}").find("input,textarea,select").prop("disabled", true);
// button 요소들을 disabled
@ -205,18 +218,23 @@
}
}
// 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => {
$P.control.urls.create = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/260/create.do"); // 등록
$P.control.urls.update = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/260/update.do"); // 수정
}
/**************************************************************************
* script 진입
* 최초 실행 함수
**************************************************************************/
$(document).ready(function() {
// 이벤트 설정
setEvent${pageName}();
// 1. 이벤트 설정
$P.setEvent();
// 화면 초기 설정
initForm${pageName}();
// 2. 초기 화면 설정
$P.initForm();
// Dataset 설정
${pageName}Control.setData([${svbtcInfo}]);
// 3. Dataset 설정
$P.control.setData([${svbtcInfo}]);
});
</script>

Loading…
Cancel
Save