반송현황 - 수기 반송 등록 수정.

main
jjh 5 months ago
parent b570e2f72e
commit c520573fcb

@ -90,9 +90,9 @@ public class Sndb01Controller extends ApplicationController {
, getAdvanceNoticeSendingDetailInfo = "/080/info.do" // 사전통지 발송 현황 상세 화면
, getAdvanceNoticeSendingDetailList = "/080/list.do" // 사전통지 발송 현황 상세 목록 조회
, createSendingLink = "/080/createSndngLink.do" // 사전통지 발송 현황 상세 목록의 우편통합 발송 연계 등록
, makeAdvntcePdf = "/080/makeAdvntcePdf.do" // 사전통지 발송 현황 사전통지서 출력(PDF)
, makeAdvntceOutsourcing = "/080/makeAdvntceOutsourcing.do" // 사전통지 발송 현황 사전통지서 출력(외주파일)
, createSendBackList = "/080/createSndbkList.do" // 발송 상세 목록의 반송 확인(등록)
, makeAdvanceNoticePdf = "/080/makePdf.do" // 사전통지 발송 현황 사전통지서 출력(PDF)
, makeAdvanceNoticeOutsourcing = "/080/makeOutsourcing.do" // 사전통지 발송 현황 사전통지서 출력(외주파일)
, createAdvanceNoticeSendBackList = "/080/createSndbkList.do" // 사전통지 발송 상세 목록의 반송 확인(등록)
, noticeSheetTargetMain = "/090/main.do" // 고지서 발송 대상 메인 화면
, getNoticeSheetTargetList = "/090/list.do" // 고지서 발송 대상 목록 조회
, getNoticeSheetTargetInfo = "/100/info.do" // 고지서 발송 대상 조회
@ -1263,20 +1263,19 @@ public class Sndb01Controller extends ApplicationController {
*/
@Task
@RequestMapping(name = "수기 반송 등록 정보 조회", value = METHOD_URL.sendingDetailInfo)
public ModelAndView sendingDetailInfo() {
public ModelAndView sendingDetailInfo(HttpServletRequest hReq, SndbQuery req) {
ModelAndView mav = new ModelAndView("fims/sndb/sndb01210-info");
// 사용자 정보
ManagedUser managedUser = (ManagedUser)currentUser().getUser();
// View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM047", "FIM054", "FIM081");
return mav
.addObject("openerPageName", hReq.getParameter("openerPageName")) // 호출한 Jsp PageName
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("pageName", "sndb01210") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "sndbkTrgt") // prefix
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("sggCd", req.getSggCd()) // 시군구 코드(SGG_CD)
.addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) // 시군구에서 사용하는 업무 목록
.addObject("FIM047List", commonCodes.get("FIM047")) // 발송 구분 코드(SNDNG_SE_CD)
.addObject("FIM081List", commonCodes.get("FIM081")) // 미배달 사유 코드(UNDLVR_RSN_CD)
@ -1354,8 +1353,80 @@ public class Sndb01Controller extends ApplicationController {
.cell(4, 0).values(list, CellDef.values(cellDefs.stream().map(i -> {if(i.getValue() instanceof Format) {i.setField(null);}; return i;}).toList()));
return new ModelAndView("downloadView")
.addObject("download", xlsx.getDownloadable().setFilename("사전통지발송상세" + "_목록_" + dateTime + ".xlsx"));
.addObject("download", xlsx.getDownloadable().setFilename("발송 상세" + "_목록_" + dateTime + ".xlsx"));
}
}
/** .
* @param sndngDtl
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
@Task
@RequestMapping(name="발송상세의 반송 정보 등록", value=METHOD_URL.createSendBack)
public ModelAndView createSendBack(SndngDtl sndngDtl) {
boolean saved = false;
String rtnMsg = sndngDtlService.createSndbk(sndngDtl);
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
/** .
* @param sndngDtl
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
@Task
@RequestMapping(name="발송상세의 반송 정보 수정", value=METHOD_URL.updateSendBack)
public ModelAndView updateSendBack(SndngDtl sndngDtl) {
boolean saved = false;
String rtnMsg = sndngDtlService.updateSndbk(sndngDtl);
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
/** .
* @param sndngDtl
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
@Task
@RequestMapping(name="발송상세의 반송 정보 삭제", value=METHOD_URL.removeSendBack)
public ModelAndView removeSendBack(SndngDtl sndngDtl) {
boolean saved = false;
String rtnMsg = sndngDtlService.removeSndbk(sndngDtl);
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
/** (sndb/sndb01/220-main) .
@ -1502,102 +1573,6 @@ public class Sndb01Controller extends ApplicationController {
}
}
/** .
* @param sndngDtl
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
@Task
@RequestMapping(name="발송상세 목록의 반송 정보 등록", value=METHOD_URL.createSendBackList)
public ModelAndView createSendBackList(SndbQuery req) {
boolean saved = false;
String rtnMsg = sndngDtlService.createSndbkList(req);
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
/** .
* @param sndngDtl
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
@Task
@RequestMapping(name="발송상세의 반송 정보 등록", value=METHOD_URL.createSendBack)
public ModelAndView createSendBack(SndngDtl sndngDtl) {
boolean saved = false;
String rtnMsg = sndngDtlService.createSndbk(sndngDtl);
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
/** .
* @param sndngDtl
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
@Task
@RequestMapping(name="발송상세의 반송 정보 수정", value=METHOD_URL.updateSendBack)
public ModelAndView updateSendBack(SndngDtl sndngDtl) {
boolean saved = false;
String rtnMsg = sndngDtlService.updateSndbk(sndngDtl);
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
/** .
* @param sndngDtl
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
@Task
@RequestMapping(name="발송상세의 반송 정보 삭제", value=METHOD_URL.removeSendBack)
public ModelAndView removeSendBack(SndngDtl sndngDtl) {
boolean saved = false;
String rtnMsg = sndngDtlService.removeSndbk(sndngDtl);
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
/** (sndb/sndb01/240-main) .
*
* @return /sndb/sndb01/240-main
@ -1961,8 +1936,8 @@ public class Sndb01Controller extends ApplicationController {
* @return PDF
*/
@Task
@RequestMapping(name="사전통지발송 현황 사전통지서 pdf 파일 생성", value=METHOD_URL.makeAdvntcePdf)
public ModelAndView makeAdvntcePdf(FimsPrintOption printOption, SndbQuery req) {
@RequestMapping(name="사전통지발송 현황 사전통지서 pdf 파일 생성", value=METHOD_URL.makeAdvanceNoticePdf)
public ModelAndView makeAdvanceNoticePdf(FimsPrintOption printOption, SndbQuery req) {
ModelAndView mav = new ModelAndView("downloadView");
List<DataObject> list = sndngDtlService.getSndngTrgtDtlIds(req);
@ -2058,8 +2033,8 @@ public class Sndb01Controller extends ApplicationController {
* @return
*/
@Task
@RequestMapping(name="사전통지발송 현황 사전통지서 외주 파일 생성", value=METHOD_URL.makeAdvntceOutsourcing)
public ModelAndView makeAdvntceOutsourcing(FimsPrintOption printOption, SndbQuery req) {
@RequestMapping(name="사전통지발송 현황 사전통지서 외주 파일 생성", value=METHOD_URL.makeAdvanceNoticeOutsourcing)
public ModelAndView makeAdvanceNoticeOutsourcing(FimsPrintOption printOption, SndbQuery req) {
ModelAndView mav = new ModelAndView("downloadView");
String taskSeCd = "";
@ -2134,6 +2109,30 @@ public class Sndb01Controller extends ApplicationController {
return mav;
}
/** .
* @param sndngDtl
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
@Task
@RequestMapping(name="발송상세 목록의 반송 정보 등록", value=METHOD_URL.createAdvanceNoticeSendBackList)
public ModelAndView createAdvanceNoticeSendBackList(SndbQuery req) {
boolean saved = false;
String rtnMsg = sndngDtlService.createSndbkList(req);
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
/** .
* @param req
* @return jsonView

@ -229,6 +229,12 @@
<include refid="utility.paging-prefix" />
<include refid="selectList" />
<where>
<if test="sggCd != null">
AND S.SGG_CD = #{sggCd} <!-- 시군구 코드 -->
</if>
<if test="taskSeCd != null">
AND S.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 -->
</if>
<if test="sndngId != null">
AND SD.SNDNG_ID = #{sndngId} <!-- 발송 Id -->
</if>
@ -294,33 +300,6 @@
</if>
<if test="crdnId != null">
AND SD.CRDN_ID = #{crdnId} <!-- 단속 ID -->
</if>
<if test="sndngSeCd != null">
AND SD.SNDNG_SE_CD = #{sndngSeCd} <!-- 발송 구분 코드 -->
</if>
<if test="schSndngYmd != null">
AND SD.SNDNG_YMD = #{schSndngYmd} <!-- 발송 일자 -->
</if>
<if test="schRcpnNm != null">
AND SD.RCPN_NM = #{schRcpnNm} <!-- 수령인 명 -->
</if>
<if test="schRgNo != null">
AND SD.RG_NO = #{schRgNo} <!-- 등기번호 -->
</if>
<if test="schVhrno != null">
AND SD.VHRNO = #{schVhrno} <!-- 차량번호 -->
</if>
<if test="schFyr != null">
AND SD.FYR = #{schFyr} <!-- 회계연도 -->
</if>
<if test="schVhrno != null">
AND SD.VHRNO = #{schVhrno} <!-- 차량번호 -->
</if>
<if test="schLevyNoFrom != null">
AND SD.LEVY_NO <![CDATA[>=]]> #{schLevyNoFrom} <!-- 고지 번호 시작 -->
</if>
<if test="schSndngYmdTo != null">
AND SD.LEVY_NO <![CDATA[<=]]> #{schLevyNoTo} <!-- 고지 번호 종료 -->
</if>
<if test="delYn != null">
AND SD.DEL_YN = #{delYn} <!-- 삭제 여부 -->
@ -1019,8 +998,6 @@
<update id="createSndbk" parameterType="cokr.xit.fims.sndb.SndngDtl">/* 발송상세의 반송 정보 등록(sndngDtlMapper.createSndbk) */
UPDATE TB_SNDNG_DTL
SET BFR_SNDNG_DTL_STTS_CD = SNDNG_DTL_STTS_CD <!-- 전 발송 상세 상태 코드 -->
, BFR_DLVR_YMD = DLVR_YMD <!-- 전 배달 일자 -->
, BFR_DLVR_HR = DLVR_TM <!-- 전 배달 시간 -->
, DLVR_YMD = #{dlvrYmd} <!-- 배달 일자 -->
, DLVR_TM = #{dlvrTm} <!-- 배달 시각 -->
, UNDLVR_RSN_CD = #{undlvrRsnCd} <!-- 미배달 사유 코드 -->
@ -1028,19 +1005,39 @@
, SNDNG_DTL_STTS_CD= #{sndngDtlSttsCd} <!-- 발송 상세 상태 코드 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{modifiedBy} <!-- 수정자 -->
<choose>
<when test="sndngDtlIds != null">
WHERE SNDNG_DTL_ID IN ( <!-- 발송 상세 Ids -->
<foreach collection="sndngDtlIds" item="sndngDtlId" separator=","> #{sndngDtlId} </foreach>
)
</when>
<otherwise>
WHERE SNDNG_DTL_ID = #{sndngDtlId} <!-- 발송 상세 ID -->
</otherwise>
</choose>
AND DEL_YN = 'N'
</update>
<update id="updateSndbk" parameterType="cokr.xit.fims.sndb.SndngDtl">/* 발송상세의 반송 정보 수정(sndngDtlMapper.updateSndbk) */
UPDATE TB_SNDNG_DTL
SET DLVR_YMD = #{dlvrYmd} <!-- 배달 일자 -->
SET BFR_DLVR_YMD = DLVR_YMD <!-- 전 배달 일자 -->
, BFR_DLVR_HR = DLVR_TM <!-- 전 배달 시간 -->
, DLVR_YMD = #{dlvrYmd} <!-- 배달 일자 -->
, DLVR_TM = #{dlvrTm} <!-- 배달 시각 -->
, UNDLVR_RSN_CD = #{undlvrRsnCd} <!-- 미배달 사유 코드 -->
, UNDLVR_RSN_NM = #{undlvrRsnNm} <!-- 미배달 사유 명 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{modifiedBy} <!-- 수정자 -->
<choose>
<when test="sndngDtlIds != null">
WHERE SNDNG_DTL_ID IN ( <!-- 발송 상세 Ids -->
<foreach collection="sndngDtlIds" item="sndngDtlId" separator=","> #{sndngDtlId} </foreach>
)
</when>
<otherwise>
WHERE SNDNG_DTL_ID = #{sndngDtlId} <!-- 발송 상세 ID -->
</otherwise>
</choose>
AND DEL_YN = 'N'
</update>

@ -380,7 +380,6 @@
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/080/createSndbkList.do")
, data: params || {}
, success: resp => {
// S 또는 F 를 버튼 title 로 변경하여 메시지 출력
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.title);
dialog.alert({
@ -508,10 +507,10 @@
let fileTypeName = "";
if (fileType == "pdf") {
url = wctx.url("/" + submitParam.taskSeCd + "${infoPrefixUrl}" + "/080/makeAdvntcePdf.do");
url = wctx.url("/" + submitParam.taskSeCd + "${infoPrefixUrl}" + "/080/makePdf.do");
fileTypeName = "PDF 파일";
} else if (fileType == "outsourcing") {
url = wctx.url("/" + submitParam.taskSeCd + "${infoPrefixUrl}" + "/080/makeAdvntceOutsourcing.do");
url = wctx.url("/" + submitParam.taskSeCd + "${infoPrefixUrl}" + "/080/makeOutsourcing.do");
fileTypeName = "외주 요청 파일";
}

@ -297,7 +297,7 @@
if (!params) return;
ajax.post({
url : wctx.url("/" + params.taskSeCd + $P.PrefixUrl + "/080/createSndbkList.do")
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/210/createList.do")
, data: params || {}
, success: resp => {
// S 또는 F 를 버튼 title 로 변경하여 메시지 출력

@ -265,6 +265,7 @@
// FormFields
$P.formFields = new FimsFormFields("#frmSearch--${pageName}");
$P.formEditFields = new FimsFormFields("#frmEdit--${pageName}");
/**************************************************************************
* DatasetControl
@ -355,10 +356,6 @@
if (resp.saved) {
dialog.close($P.control.prefix + "Dialog--${openerPageName}");
if ("${savedCallbackFuncName}" != "") {
${savedCallbackFuncName}(resp.saved);
}
}
}
@ -366,10 +363,8 @@
$P.control.save = (info) => {
if (!info) return;
let create = ($P.callPurpose == "create");
ajax.post({
url: !create ? $P.control.urls.update : $P.control.urls.create
url: $P.control.urls.create
, data: info || {}
, success: resp => $P.control.onSave(resp)
});
@ -528,7 +523,6 @@
$P.control.download();
}
// 반송 등록 버튼 이벤트
$P.fnSave = () => {
// 선택 자료
@ -546,10 +540,10 @@
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
let params = {};
params.sggCd = $("#sggCd--${pageName}").val(); // 시군구 코드
params.taskSeCd = $("#frmSearch--${pageName} input[name='taskSeCd']:checked").val(); // 업무 구분 코드
let params = $P.formEditFields.get(); // formFields
params.sndngDtlIds = selected.join(","); // 발송 상세 Ids
params.undlvrRsnNm = $("#undlvrRsnCd--${pageName} option:selected").text(); // 미배달 사유 명
params.sndngDtlSttsCd = "05"; // 발송 상세 상태 코드(FIM050) - 05: 반송
dialog.alert({
content: "선택하신 " + selected.length + "건의 " + $P.control.prefixName + " 정보를 등록하시겠습니까?"
@ -630,8 +624,7 @@
$P.setTask = (taskSeCd) => {
// 업무구분에 따른 URL 설정
$P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/210/list.do"); // 검색
$P.control.urls.create = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/210/create.do"); // 등록
$P.control.urls.update = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/210/updatet.do"); // 수정
$P.control.urls.create = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/230/create.do"); // 반송 등록
}
/**************************************************************************

@ -501,16 +501,15 @@
if (!params) return;
ajax.get({
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/210/info.do") // 등록
url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/210/info.do") + "?openerPageName=${pageName}"
, data: params || {}
, success: resp => {
dialog.open({
id: $P.control.prefixed("Dialog--${pageName}")
id: $P.control.prefixed("TrgtDialog--${pageName}")
, title: params.title
, content: resp
, size: "xxl"
, onClose: () => {}
// , onClose: () => { $P.fnRefreshList(); }
});
}
});

Loading…
Cancel
Save