엑셀 저장 수정.

main
jjh 11 months ago
parent f884ff41bf
commit ca71b2f9b9

@ -99,6 +99,7 @@ public class Excl01Controller extends ApplicationController {
.setFilename("부과제외 목록.xlsx") .setFilename("부과제외 목록.xlsx")
.worksheet(0); .worksheet(0);
// CellStyle 지정은 여기에서..
CellStyle center = xlsx.cellStyle(Styler.CENTER); // 가운데 정렬 CellStyle center = xlsx.cellStyle(Styler.CENTER); // 가운데 정렬
CellStyle numeric = xlsx.n_nn0(); // 숫자 3자리 콤마(,) CellStyle numeric = xlsx.n_nn0(); // 숫자 3자리 콤마(,)
CellStyle dateYMD = xlsx.yyyy_mm_dd(); // 연월일 CellStyle dateYMD = xlsx.yyyy_mm_dd(); // 연월일

@ -110,6 +110,7 @@ public class Excl02Controller extends ApplicationController {
.setFilename("의견제출 목록.xlsx") .setFilename("의견제출 목록.xlsx")
.worksheet(0); .worksheet(0);
// CellStyle 지정은 여기에서..
CellStyle center = xlsx.cellStyle(Styler.CENTER); // 가운데 정렬 CellStyle center = xlsx.cellStyle(Styler.CENTER); // 가운데 정렬
CellStyle numeric = xlsx.n_nn0(); // 숫자 3자리 콤마(,) CellStyle numeric = xlsx.n_nn0(); // 숫자 3자리 콤마(,)
CellStyle dateYMD = xlsx.yyyy_mm_dd(); // 연월일 CellStyle dateYMD = xlsx.yyyy_mm_dd(); // 연월일

@ -97,6 +97,7 @@ public class Excl03Controller extends ApplicationController {
.setFilename("단속 재등록 목록.xlsx") .setFilename("단속 재등록 목록.xlsx")
.worksheet(0); .worksheet(0);
// CellStyle 지정은 여기에서..
CellStyle center = xlsx.cellStyle(Styler.CENTER); // 가운데 정렬 CellStyle center = xlsx.cellStyle(Styler.CENTER); // 가운데 정렬
CellStyle numeric = xlsx.n_nn0(); // 숫자 3자리 콤마(,) CellStyle numeric = xlsx.n_nn0(); // 숫자 3자리 콤마(,)
CellStyle dateYMD = xlsx.yyyy_mm_dd(); // 연월일 CellStyle dateYMD = xlsx.yyyy_mm_dd(); // 연월일

@ -131,10 +131,16 @@ public class LevyBean extends AbstractComponent {
DataObject crdnInfo = levyMapper.selectCrdn(levy.getCrdnId()); DataObject crdnInfo = levyMapper.selectCrdn(levy.getCrdnId());
if (!crdnInfo.string("LEVY_ID").equals("")) { if (!crdnInfo.string("LEVY_ID").equals("")) {
throw new RuntimeException("감경부과 등록 중 이미 감경부과된 자료가 있습니다."); // 예외를 발생시켜서 DB Rollback rtnMsg = "[F] 작업 중 이미 감경 부과된 자료가 있습니다.";
return rtnMsg;
} }
if (crdnInfo.number("CRDN_STTS_CD").intValue() > 31 ) { if (crdnInfo.number("CRDN_STTS_CD").intValue() > 31 ) {
throw new RuntimeException("감경부과 등록 중 단속상태가 " + crdnInfo.string("CRDN_STTS_NM") + " 자료가 있습니다."); // 예외를 발생시켜서 DB Rollback rtnMsg = "[F] 작업 중 단속 상태가 " + crdnInfo.string("CRDN_STTS_NM") + " 자료가 있습니다.";
return rtnMsg;
}
if (!crdnInfo.string("RTPYR_ID").equals("")) {
rtnMsg = "[F] 작업 중 납부자 정보가 없는 자료가 있습니다.";
return rtnMsg;
} }
// 전용차로위반, 주정차위반 과태료 // 전용차로위반, 주정차위반 과태료

@ -3,16 +3,17 @@ package cokr.xit.fims.levy.web;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.BiFunction;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.CellStyle;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import com.fasterxml.jackson.core.type.TypeReference;
import cokr.xit.base.code.CommonCode; import cokr.xit.base.code.CommonCode;
import cokr.xit.base.file.xls.XLSWriter; import cokr.xit.base.file.xls.XLSWriter;
import cokr.xit.base.file.xls.XLSWriter.CellDef;
import cokr.xit.base.file.xls.XLSWriter.Styler; import cokr.xit.base.file.xls.XLSWriter.Styler;
import cokr.xit.base.user.ManagedUser; import cokr.xit.base.user.ManagedUser;
import cokr.xit.base.web.ApplicationController; import cokr.xit.base.web.ApplicationController;
@ -95,72 +96,53 @@ public class Levy01Controller extends ApplicationController {
List<?> result = levyService.getRductLevyTrgtList(setFetchSize(req)); List<?> result = levyService.getRductLevyTrgtList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "rductLevyTrgt"); return setCollectionInfo(new ModelAndView("jsonView"), result, "rductLevyTrgt");
} else { } else {
ArrayList<CellDef> cellDefs = fromJson(req.getCellDefs(), new TypeReference<ArrayList<CellDef>>() {});
XLSWriter xlsx = new XLSWriter() XLSWriter xlsx = new XLSWriter()
.setFilename("사전 감경부과 대상 목록.xlsx") .setFilename("사전 감경부과 대상 목록.xlsx")
.worksheet(0); .worksheet(0);
// CellStyle 지정은 여기에서.. CellStyle center = xlsx.cellStyle(Styler.CENTER); // 가운데 정렬
CellStyle center = xlsx.cellStyle(Styler.CENTER) // 가운데 정렬 CellStyle numeric = xlsx.n_nn0(); // 숫자 3자리 콤마(,)
, numeric = xlsx.n_nn0() // 숫자 3자리 콤마(,) CellStyle dateYMD = xlsx.yyyy_mm_dd(); // 연월일
, dateYMD = xlsx.yyyy_mm_dd() // 연월일 CellStyle dateDT = xlsx.yyyy_mm_dd_hh_mm_ss(); // 연월일+시간
, dateDT = xlsx.yyyy_mm_dd_hh_mm_ss(); // 연월일+시간
String[] excelTitle = req.getExcelTitle();
List<String> titles = new ArrayList<String>();
for (int iLoop = 0; iLoop < excelTitle.length; iLoop++) {
String item = excelTitle[iLoop];
titles.add(item);
}
int[] excelTitleWidth = req.getExcelTitleWidth(); List<DataObject> list = levyService.getRductLevyTrgtList(req.setFetchSize(0));
List<Integer> widths = new ArrayList<>();
for (int jLoop = 0; jLoop < excelTitleWidth.length; jLoop++) {
int item = excelTitleWidth[jLoop];
widths.add(item);
}
List<Styler> headerStylers = CmmnUtil.makeHeadersByDiffrentWidths(widths, xlsx); CellDef.setValues(cellDefs, Map.ofEntries(
Map.entry("업무구분", xlsx.style("TASK_SE_NM", center))
, Map.entry("단속일시", xlsx.format(o -> xlsx.str2datetime(o.get("CRDN_YMD_TM"))).style(dateDT))
, Map.entry("차량번호", "VHRNO")
, Map.entry("법정동", "CRDN_STDG_NM")
, Map.entry("단속장소", "CRDN_PLC")
, Map.entry("위반항목", "VLTN_ARTCL")
, Map.entry("최초단속금액", xlsx.style("FFNLG_CRDN_AMT", numeric))
, Map.entry("과태료금액", xlsx.style("FFNLG_AMT", numeric))
, Map.entry("사전통지금액", xlsx.style("ADVNTCE_AMT", numeric))
, Map.entry("처리상태", "CRDN_STTS_NM")
, Map.entry("민원신청번호", xlsx.style("CVLCPT_APLY_NO", center))
, Map.entry("민원접수번호", xlsx.style("CVLCPT_RCPT_NO", center))
, Map.entry("민원접수일자", xlsx.format(o -> xlsx.str2date(o.get("CVLCPT_RCPT_YMD"))).style(dateYMD))
, Map.entry("민원전송결과", xlsx.style("CVLCPT_TRSM_NM", center))
, Map.entry("납부자명", "RTPYR_NM")
, Map.entry("납부자생일", xlsx.style("RTPYR_BRDT_MASK", center))
, Map.entry("우편번호", xlsx.style("ZIP", center))
, Map.entry("주소", "ADDR")
, Map.entry("상세주소", "DTL_ADDR")
, Map.entry("등록일시", xlsx.format(o -> xlsx.str2datetime(o.get("REG_DT"))).style(dateDT))
, Map.entry("등록사용자", xlsx.style("RGTR_NM", center))
, Map.entry("수정일시", xlsx.format(o -> xlsx.str2datetime(o.get("MDFCN_DT"))).style(dateDT))
, Map.entry("수정사용자", xlsx.style("MDFR_NM", center))
)
);
xlsx.cell(0, 0) xlsx.cell(0, 0)
.value("사전 감경부과 대상", XLSWriter.Styler.CENTER) .value("사전 감경부과 대상", center)
.merge(0, 11) .merge(0, cellDefs.size() - 1)
.cell(3, 0) .cell(3, 0)
.rowValues(CmmnUtil.mergeListByIndex(titles, headerStylers)); .rowValues(CellDef.header(cellDefs, () -> CmmnUtil.headerStyle(xlsx)))
.cell(4, 0)
List<DataObject> list = levyService.getRductLevyTrgtList(req.setFetchSize(0)); .values(list, CellDef.values(cellDefs));
BiFunction<String, String, ?> getValue = (titleNm, nothing) -> {
switch (titleNm) {
case "업무구분" : return xlsx.style("TASK_SE_NM", center);
case "단속일시" : return xlsx.format(o -> xlsx.str2datetime(o.get("CRDN_YMD_TM"))).style(dateDT);
case "차량번호" : return "VHRNO";
case "법정동" : return "CRDN_STDG_NM";
case "단속장소" : return "CRDN_PLC";
case "위반항목" : return "VLTN_ARTCL";
case "최초단속금액" : return xlsx.style("FFNLG_CRDN_AMT", numeric);
case "과태료금액" : return xlsx.style("FFNLG_AMT", numeric);
case "사전통지금액" : return xlsx.style("ADVNTCE_AMT", numeric);
case "처리상태" : return "CRDN_STTS_NM";
case "민원신청번호" : return xlsx.style("CVLCPT_APLY_NO", center);
case "민원접수번호" : return xlsx.style("CVLCPT_RCPT_NO", center);
case "민원접수일자" : return xlsx.format(o -> xlsx.str2date(o.get("CVLCPT_RCPT_YMD"))).style(dateYMD);
case "민원전송결과" : return xlsx.style("CVLCPT_TRSM_NM", center);
case "납부자명" : return "RTPYR_NM";
case "납부자생일" : return xlsx.style("RTPYR_BRDT_MASK", center);
case "우편번호" : return xlsx.style("ZIP", center);
case "주소" : return "ADDR";
case "상세주소" : return "DTL_ADDR";
case "등록일시" : return xlsx.format(o -> xlsx.str2datetime(o.get("REG_DT"))).style(dateDT);
case "등록사용자" : return xlsx.style("RGTR_NM", center);
case "수정일시" : return xlsx.format(o -> xlsx.str2datetime(o.get("MDFCN_DT"))).style(dateDT);
case "수정사용자" : return xlsx.style("MDFR_NM", center);
}
return "";
};
xlsx.cell(4, 0)
.values(list, titles.stream().map((item) -> { return getValue.apply(item, null); }).toArray());
return new ModelAndView("xlsView") return new ModelAndView("xlsView")
.addObject("xls", xlsx); .addObject("xls", xlsx);
@ -254,102 +236,83 @@ public class Levy01Controller extends ApplicationController {
List<?> result = levyService.getLevyList(setFetchSize(req)); List<?> result = levyService.getLevyList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "levy"); return setCollectionInfo(new ModelAndView("jsonView"), result, "levy");
} else { } else {
ArrayList<CellDef> cellDefs = fromJson(req.getCellDefs(), new TypeReference<ArrayList<CellDef>>() {});
XLSWriter xlsx = new XLSWriter() XLSWriter xlsx = new XLSWriter()
.setFilename("부과 목록.xlsx") .setFilename("부과 목록.xlsx")
.worksheet(0); .worksheet(0);
// CellStyle 지정은 여기에서.. CellStyle center = xlsx.cellStyle(Styler.CENTER); // 가운데 정렬
CellStyle center = xlsx.cellStyle(Styler.CENTER) // 가운데 정렬 CellStyle numeric = xlsx.n_nn0(); // 숫자 3자리 콤마(,)
, numeric = xlsx.n_nn0() // 숫자 3자리 콤마(,) CellStyle dateYMD = xlsx.yyyy_mm_dd(); // 연월일
, dateYMD = xlsx.yyyy_mm_dd() // 연월일 CellStyle dateDT = xlsx.yyyy_mm_dd_hh_mm_ss(); // 연월일+시간
, dateDT = xlsx.yyyy_mm_dd_hh_mm_ss(); // 연월일+시간
String[] excelTitle = req.getExcelTitle();
List<String> titles = new ArrayList<String>();
for (int iLoop = 0; iLoop < excelTitle.length; iLoop++) {
String item = excelTitle[iLoop];
titles.add(item);
}
int[] excelTitleWidth = req.getExcelTitleWidth(); List<DataObject> list = levyService.getLevyList(req.setFetchSize(0));
List<Integer> widths = new ArrayList<>();
for (int jLoop = 0; jLoop < excelTitleWidth.length; jLoop++) {
int item = excelTitleWidth[jLoop];
widths.add(item);
}
List<Styler> headerStylers = CmmnUtil.makeHeadersByDiffrentWidths(widths, xlsx); CellDef.setValues(cellDefs, Map.ofEntries(
Map.entry("업무구분", xlsx.style("TASK_SE_NM", center))
, Map.entry("회계연도", xlsx.style("FYR", center))
, Map.entry("회계코드", xlsx.style("ACNTG_SE_CD", center))
, Map.entry("세목코드", xlsx.style("TXITM_CD", center))
, Map.entry("세목명", xlsx.style("TXITM_NM", center))
, Map.entry("부과번호", xlsx.style("LEVY_NO", center))
, Map.entry("분납순번", xlsx.style("INSPY_SN", center))
, Map.entry("부과구분", xlsx.style("LEVY_SE_NM", center))
, Map.entry("통합구분", xlsx.style("UNTY_SE_NM", center))
, Map.entry("감경구분", xlsx.style("RDUCT_SE_NM", center))
, Map.entry("부과일자", xlsx.format(o -> xlsx.str2date(o.get("LEVY_YMD"))).style(dateYMD))
, Map.entry("최초납기일자", xlsx.format(o -> xlsx.str2date(o.get("FRST_DUDT_YMD"))).style(dateYMD))
, Map.entry("납기일자", xlsx.format(o -> xlsx.str2date(o.get("DUDT_YMD"))).style(dateYMD))
, Map.entry("과태료금액", xlsx.style("FFNLG_AMT", numeric))
, Map.entry("부과본세", xlsx.style("LEVY_PCPTAX", numeric))
, Map.entry("부과가산금", xlsx.style("LEVY_ADAMT", numeric))
, Map.entry("분납이자", xlsx.style("INSPY_INT", numeric))
, Map.entry("수납본세", xlsx.style("RCVMT_PCPTAX", numeric))
, Map.entry("수납가산금", xlsx.style("RCVMT_ADAMT", numeric))
, Map.entry("감액본세", xlsx.style("RDCAMT_PCPTAX", numeric))
, Map.entry("감액가산금", xlsx.style("RDCAMT_ADAMT", numeric))
, Map.entry("합계금액", xlsx.style("SUM_AMT", numeric))
, Map.entry("과세물건", "TXTN_THING")
, Map.entry("체납사유", "NPMNT_RSN_NM")
, Map.entry("수납일자", xlsx.format(o -> xlsx.str2date(o.get("RCVMT_YMD"))).style(dateYMD))
, Map.entry("압류일자", xlsx.format(o -> xlsx.str2date(o.get("SZR_YMD"))).style(dateYMD))
, Map.entry("압류물건", "SZR_THING")
, Map.entry("대체압류차량", "RPM_SZR_VHRNO")
, Map.entry("압류해제일자", xlsx.format(o -> xlsx.str2date(o.get("SZR_RMV_YMD"))).style(dateYMD))
, Map.entry("전자납부번호", "EPAYNO_MASK")
, Map.entry("은행명", "BANK_NM")
, Map.entry("가상계좌번호", xlsx.style("VR_ACTNO", center))
, Map.entry("은행명2", "BANK_NM2")
, Map.entry("가상계좌번호2", xlsx.style("VR_ACTNO2", center))
, Map.entry("은행명3", "BANK_NM3")
, Map.entry("가상계좌번호3", xlsx.style("VR_ACTNO3", center))
, Map.entry("단속일시", xlsx.format(o -> xlsx.str2datetime(o.get("CRDN_YMD_TM"))).style(dateDT))
, Map.entry("차량번호", "VHRNO")
, Map.entry("법정동", "CRDN_STDG_NM")
, Map.entry("단속장소", "CRDN_PLC")
, Map.entry("위반항목", "VLTN_ARTCL")
, Map.entry("최초단속금액", xlsx.style("FFNLG_CRDN_AMT", numeric))
, Map.entry("처리상태", "CRDN_STTS_NM")
, Map.entry("납부자구분", xlsx.style("RTPYR_SE_NM", center))
, Map.entry("납부자명", "RTPYR_NM")
, Map.entry("납부자생일", xlsx.style("RTPYR_BRDT_MASK", center))
, Map.entry("우편번호", xlsx.style("ZIP", center))
, Map.entry("주소", "ADDR")
, Map.entry("상세주소", "DTL_ADDR")
, Map.entry("등록일시", xlsx.format(o -> xlsx.str2datetime(o.get("REG_DT"))).style(dateDT))
, Map.entry("등록사용자", xlsx.style("RGTR_NM", center))
, Map.entry("수정일시", xlsx.format(o -> xlsx.str2datetime(o.get("MDFCN_DT"))).style(dateDT))
, Map.entry("수정사용자", xlsx.style("MDFR_NM", center))
)
);
xlsx.cell(0, 0) xlsx.cell(0, 0)
.value("부과", XLSWriter.Styler.CENTER) .value("부과", center)
.merge(0, 15) .merge(0, cellDefs.size() - 1)
.cell(3, 0) .cell(3, 0)
.rowValues(CmmnUtil.mergeListByIndex(titles, headerStylers)); .rowValues(CellDef.header(cellDefs, () -> CmmnUtil.headerStyle(xlsx)))
.cell(4, 0)
List<DataObject> list = levyService.getLevyList(req.setFetchSize(0)); .values(list, CellDef.values(cellDefs));
BiFunction<String, String, ?> getValue = (titleNm, nothing) -> {
switch (titleNm) {
case "업무구분" : return xlsx.style("TASK_SE_NM", center);
case "회계연도" : return xlsx.style("FYR", center);
case "회계코드" : return xlsx.style("ACNTG_SE_CD", center);
case "세목코드" : return xlsx.style("TXITM_CD", center);
case "세목명" : return xlsx.style("TXITM_NM", center);
case "부과번호" : return xlsx.style("LEVY_NO", center);
case "분납순번" : return xlsx.style("INSPY_SN", center);
case "부과구분" : return xlsx.style("LEVY_SE_NM", center);
case "통합구분" : return xlsx.style("UNTY_SE_NM", center);
case "감경구분" : return xlsx.style("RDUCT_SE_NM", center);
case "부과일자" : return xlsx.format(o -> xlsx.str2date(o.get("LEVY_YMD"))).style(dateYMD);
case "최초납기일자" : return xlsx.format(o -> xlsx.str2date(o.get("FRST_DUDT_YMD"))).style(dateYMD);
case "납기일자" : return xlsx.format(o -> xlsx.str2date(o.get("DUDT_YMD"))).style(dateYMD);
case "과태료금액" : return xlsx.style("FFNLG_AMT", numeric);
case "부과본세" : return xlsx.style("LEVY_PCPTAX", numeric);
case "부과가산금" : return xlsx.style("LEVY_ADAMT", numeric);
case "분납이자" : return xlsx.style("INSPY_INT", numeric);
case "수납본세" : return xlsx.style("RCVMT_PCPTAX", numeric);
case "수납가산금" : return xlsx.style("RCVMT_ADAMT", numeric);
case "감액본세" : return xlsx.style("RDCAMT_PCPTAX", numeric);
case "감액가산금" : return xlsx.style("RDCAMT_ADAMT", numeric);
case "합계금액" : return xlsx.style("SUM_AMT", numeric);
case "과세물건" : return "TXTN_THING";
case "체납사유" : return "NPMNT_RSN_NM";
case "수납일자" : return xlsx.format(o -> xlsx.str2date(o.get("RCVMT_YMD"))).style(dateYMD);
case "압류일자" : return xlsx.format(o -> xlsx.str2date(o.get("SZR_YMD"))).style(dateYMD);
case "압류물건" : return "SZR_THING";
case "대체압류차량" : return "RPM_SZR_VHRNO";
case "압류해제일자" : return xlsx.format(o -> xlsx.str2date(o.get("SZR_RMV_YMD"))).style(dateYMD);
case "전자납부번호" : return "EPAYNO_MASK";
case "은행명" : return "BANK_NM";
case "가상계좌번호" : return xlsx.style("VR_ACTNO", center);
case "은행명2" : return "BANK_NM2";
case "가상계좌번호2" : return xlsx.style("VR_ACTNO2", center);
case "은행명3" : return "BANK_NM3";
case "가상계좌번호3" : return xlsx.style("VR_ACTNO3", center);
case "단속일시" : return xlsx.format(o -> xlsx.str2datetime(o.get("CRDN_YMD_TM"))).style(dateDT);
case "차량번호" : return "VHRNO";
case "법정동" : return "CRDN_STDG_NM";
case "단속장소" : return "CRDN_PLC";
case "위반항목" : return "VLTN_ARTCL";
case "최초단속금액" : return xlsx.style("FFNLG_CRDN_AMT", numeric);
case "처리상태" : return "CRDN_STTS_NM";
case "납부자구분" : return xlsx.style("RTPYR_SE_NM", center);
case "납부자명" : return "RTPYR_NM";
case "납부자생일" : return xlsx.style("RTPYR_BRDT_MASK", center);
case "우편번호" : return xlsx.style("ZIP", center);
case "주소" : return "ADDR";
case "상세주소" : return "DTL_ADDR";
case "등록일시" : return xlsx.format(o -> xlsx.str2datetime(o.get("REG_DT"))).style(dateDT);
case "등록사용자" : return xlsx.style("RGTR_NM", center);
case "수정일시" : return xlsx.format(o -> xlsx.str2datetime(o.get("MDFCN_DT"))).style(dateDT);
case "수정사용자" : return xlsx.style("MDFR_NM", center);
}
return "";
};
xlsx.cell(4, 0)
.values(list, titles.stream().map((item) -> { return getValue.apply(item, null); }).toArray());
return new ModelAndView("xlsView") return new ModelAndView("xlsView")
.addObject("xls", xlsx); .addObject("xls", xlsx);
@ -363,7 +326,7 @@ public class Levy01Controller extends ApplicationController {
* "saved": true, false * "saved": true, false
* }</code></pre> * }</code></pre>
*/ */
@PostMapping(name = "부과 대장 등록", value = "/010/create.do") // @PostMapping(name = "부과 대장 등록", value = "/010/create.do")
public ModelAndView create(Levy levy) { public ModelAndView create(Levy levy) {
boolean saved = levyService.create(levy); boolean saved = levyService.create(levy);
@ -378,7 +341,7 @@ public class Levy01Controller extends ApplicationController {
* "saved": true, false * "saved": true, false
* }</code></pre> * }</code></pre>
*/ */
@PostMapping(name = "부과 대장 수정", value = "/010/update.do") // @PostMapping(name = "부과 대장 수정", value = "/010/update.do")
public ModelAndView update(Levy levy) { public ModelAndView update(Levy levy) {
boolean saved = levyService.update(levy); boolean saved = levyService.update(levy);
@ -394,7 +357,7 @@ public class Levy01Controller extends ApplicationController {
* "saved": true, false * "saved": true, false
* }</code></pre> * }</code></pre>
*/ */
@PostMapping(name = "부과 대장 제거", value = "/010/remove.do") // @PostMapping(name = "부과 대장 제거", value = "/010/remove.do")
public ModelAndView remove(Levy levy) { public ModelAndView remove(Levy levy) {
boolean saved = levyService.remove(levy); boolean saved = levyService.remove(levy);

@ -3,15 +3,17 @@ package cokr.xit.fims.rcvm.web;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.BiFunction;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.CellStyle;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import com.fasterxml.jackson.core.type.TypeReference;
import cokr.xit.base.code.CommonCode; import cokr.xit.base.code.CommonCode;
import cokr.xit.base.file.xls.XLSWriter; import cokr.xit.base.file.xls.XLSWriter;
import cokr.xit.base.file.xls.XLSWriter.CellDef;
import cokr.xit.base.file.xls.XLSWriter.Styler; import cokr.xit.base.file.xls.XLSWriter.Styler;
import cokr.xit.base.user.ManagedUser; import cokr.xit.base.user.ManagedUser;
import cokr.xit.base.web.ApplicationController; import cokr.xit.base.web.ApplicationController;
@ -89,90 +91,71 @@ public class Rcvm01Controller extends ApplicationController {
List<?> result = rcvmtService.getRcvmtList(setFetchSize(req)); List<?> result = rcvmtService.getRcvmtList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "rcvmt"); return setCollectionInfo(new ModelAndView("jsonView"), result, "rcvmt");
} else { } else {
ArrayList<CellDef> cellDefs = fromJson(req.getCellDefs(), new TypeReference<ArrayList<CellDef>>() {});
XLSWriter xlsx = new XLSWriter() XLSWriter xlsx = new XLSWriter()
.setFilename("수납 목록.xlsx") .setFilename("수납 목록.xlsx")
.worksheet(0); .worksheet(0);
// CellStyle 지정은 여기에서.. CellStyle center = xlsx.cellStyle(Styler.CENTER); // 가운데 정렬
CellStyle center = xlsx.cellStyle(Styler.CENTER) // 가운데 정렬 CellStyle numeric = xlsx.n_nn0(); // 숫자 3자리 콤마(,)
, numeric = xlsx.n_nn0() // 숫자 3자리 콤마(,) CellStyle dateYMD = xlsx.yyyy_mm_dd(); // 연월일
, dateYMD = xlsx.yyyy_mm_dd() // 연월일 CellStyle dateDT = xlsx.yyyy_mm_dd_hh_mm_ss(); // 연월일+시간
, dateDT = xlsx.yyyy_mm_dd_hh_mm_ss(); // 연월일+시간
String[] excelTitle = req.getExcelTitle();
List<String> titles = new ArrayList<String>();
for (int iLoop = 0; iLoop < excelTitle.length; iLoop++) {
String item = excelTitle[iLoop];
titles.add(item);
}
int[] excelTitleWidth = req.getExcelTitleWidth(); List<DataObject> list = rcvmtService.getRcvmtList(req.setFetchSize(0));
List<Integer> widths = new ArrayList<>();
for (int jLoop = 0; jLoop < excelTitleWidth.length; jLoop++) {
int item = excelTitleWidth[jLoop];
widths.add(item);
}
List<Styler> headerStylers = CmmnUtil.makeHeadersByDiffrentWidths(widths, xlsx); CellDef.setValues(cellDefs, Map.ofEntries(
Map.entry("업무구분", xlsx.style("TASK_SE_NM", center))
, Map.entry("수납입력구분", xlsx.style("RCVMT_INPT_SE_NM", center))
, Map.entry("수납취소", xlsx.style("RCVMT_RTRCN_NM", center))
, Map.entry("회계연도", xlsx.style("FYR", center))
, Map.entry("회계구분", xlsx.style("ACNTG_SE_CD", center))
, Map.entry("세목코드", xlsx.style("TXITM_CD", center))
, Map.entry("세목명", "TXITM_NM")
, Map.entry("부과번호", xlsx.style("LEVY_NO", center))
, Map.entry("수납일련번호", xlsx.style("RCVMT_SN", center))
, Map.entry("소인일자", xlsx.format(o -> xlsx.str2date(o.get("PSTMRK_YMD"))).style(dateYMD))
, Map.entry("회계일자", xlsx.format(o -> xlsx.str2date(o.get("ACNTG_YMD"))).style(dateYMD))
, Map.entry("수납일자", xlsx.format(o -> xlsx.str2date(o.get("RCVMT_YMD"))).style(dateYMD))
, Map.entry("수납금액", xlsx.style("RCVMT_AMT", numeric))
, Map.entry("수납본세", xlsx.style("RCVMT_PCPTAX", numeric))
, Map.entry("수납가산금", xlsx.style("RCVMT_ADAMT", numeric))
, Map.entry("수납이자", xlsx.style("RCVMT_INT", numeric))
, Map.entry("수납은행", "RCVMT_BANK_NM")
, Map.entry("납부방법", "PAY_MTHD_SE_NM")
, Map.entry("수납구분", xlsx.style("RCVMT_SE_NM", center))
, Map.entry("수납상태", xlsx.style("RCVMT_STTS_NM", center))
, Map.entry("부과일자", xlsx.format(o -> xlsx.str2date(o.get("LEVY_YMD"))).style(dateYMD))
, Map.entry("최초납기일자", xlsx.format(o -> xlsx.str2date(o.get("FRST_DUDT_YMD"))).style(dateYMD))
, Map.entry("납기일자", xlsx.format(o -> xlsx.str2date(o.get("DUDT_YMD"))).style(dateYMD))
, Map.entry("부과본세", xlsx.style("LEVY_PCPTAX", numeric))
, Map.entry("부과가산금", xlsx.style("LEVY_ADAMT", numeric))
, Map.entry("분납이자", xlsx.style("INSPY_INT", numeric))
, Map.entry("압류일자", xlsx.format(o -> xlsx.str2date(o.get("SZR_YMD"))).style(dateYMD))
, Map.entry("압류물건", "SZR_THING")
, Map.entry("대체압류차량", "RPM_SZR_VHRNO")
, Map.entry("압류해제일자", xlsx.format(o -> xlsx.str2date(o.get("SZR_RMV_YMD"))).style(dateYMD))
, Map.entry("단속일시", xlsx.format(o -> xlsx.str2datetime(o.get("CRDN_YMD_TM"))).style(dateDT))
, Map.entry("차량번호", "VHRNO")
, Map.entry("법정동", "CRDN_STDG_NM")
, Map.entry("단속장소", "CRDN_PLC")
, Map.entry("처리상태", "CRDN_STTS_NM")
, Map.entry("납부자명", "RTPYR_NM")
, Map.entry("납부자생일", xlsx.style("RTPYR_BRDT_MASK", center))
, Map.entry("등록일시", xlsx.format(o -> xlsx.str2datetime(o.get("REG_DT"))).style(dateDT))
, Map.entry("등록사용자", xlsx.style("RGTR_NM", center))
, Map.entry("수정일시", xlsx.format(o -> xlsx.str2datetime(o.get("MDFCN_DT"))).style(dateDT))
, Map.entry("수정사용자", xlsx.style("MDFR_NM", center))
)
);
xlsx.cell(0, 0) xlsx.cell(0, 0)
.value("수납", XLSWriter.Styler.CENTER) .value("수납", center)
.merge(0, 10) .merge(0, cellDefs.size() - 1)
.cell(3, 0) .cell(3, 0)
.rowValues(CmmnUtil.mergeListByIndex(titles, headerStylers)); .rowValues(CellDef.header(cellDefs, () -> CmmnUtil.headerStyle(xlsx)))
.cell(4, 0)
List<DataObject> list = rcvmtService.getRcvmtList(req.setFetchSize(0)); .values(list, CellDef.values(cellDefs));
BiFunction<String, String, ?> getValue = (titleNm, nothing) -> {
switch (titleNm) {
case "업무구분" : return xlsx.style("TASK_SE_NM", center);
case "수납입력구분" : return xlsx.style("RCVMT_INPT_SE_NM", center);
case "수납취소" : return xlsx.style("RCVMT_RTRCN_NM", center);
case "회계연도" : return xlsx.style("FYR", center);
case "회계구분" : return xlsx.style("ACNTG_SE_CD", center);
case "세목코드" : return xlsx.style("TXITM_CD", center);
case "세목명" : return "TXITM_NM";
case "부과번호" : return xlsx.style("LEVY_NO", center);
case "수납일련번호" : return xlsx.style("RCVMT_SN", center);
case "소인일자" : return xlsx.format(o -> xlsx.str2date(o.get("PSTMRK_YMD"))).style(dateYMD);
case "회계일자" : return xlsx.format(o -> xlsx.str2date(o.get("ACNTG_YMD"))).style(dateYMD);
case "수납일자" : return xlsx.format(o -> xlsx.str2date(o.get("RCVMT_YMD"))).style(dateYMD);
case "수납금액" : return xlsx.style("RCVMT_AMT", numeric);
case "수납본세" : return xlsx.style("RCVMT_PCPTAX", numeric);
case "수납가산금" : return xlsx.style("RCVMT_ADAMT", numeric);
case "수납이자" : return xlsx.style("RCVMT_INT", numeric);
case "수납은행" : return "RCVMT_BANK_NM";
case "납부방법" : return "PAY_MTHD_SE_NM";
case "수납구분" : return xlsx.style("RCVMT_SE_NM", center);
case "수납상태" : return xlsx.style("RCVMT_STTS_NM", center);
case "부과일자" : return xlsx.format(o -> xlsx.str2date(o.get("LEVY_YMD"))).style(dateYMD);
case "최초납기일자" : return xlsx.format(o -> xlsx.str2date(o.get("FRST_DUDT_YMD"))).style(dateYMD);
case "납기일자" : return xlsx.format(o -> xlsx.str2date(o.get("DUDT_YMD"))).style(dateYMD);
case "부과본세" : return xlsx.style("LEVY_PCPTAX", numeric);
case "부과가산금" : return xlsx.style("LEVY_ADAMT", numeric);
case "분납이자" : return xlsx.style("INSPY_INT", numeric);
case "압류일자" : return xlsx.format(o -> xlsx.str2date(o.get("SZR_YMD"))).style(dateYMD);
case "압류물건" : return "SZR_THING";
case "대체압류차량" : return "RPM_SZR_VHRNO";
case "압류해제일자" : return xlsx.format(o -> xlsx.str2date(o.get("SZR_RMV_YMD"))).style(dateYMD);
case "단속일시" : return xlsx.format(o -> xlsx.str2datetime(o.get("CRDN_YMD_TM"))).style(dateDT);
case "차량번호" : return "VHRNO";
case "법정동" : return "CRDN_STDG_NM";
case "단속장소" : return "CRDN_PLC";
case "처리상태" : return "CRDN_STTS_NM";
case "납부자명" : return "RTPYR_NM";
case "납부자생일" : return xlsx.style("RTPYR_BRDT_MASK", center);
case "등록일시" : return xlsx.format(o -> xlsx.str2datetime(o.get("REG_DT"))).style(dateDT);
case "등록사용자" : return xlsx.style("RGTR_NM", center);
case "수정일시" : return xlsx.format(o -> xlsx.str2datetime(o.get("MDFCN_DT"))).style(dateDT);
case "수정사용자" : return xlsx.style("MDFR_NM", center);
}
return "";
};
xlsx.cell(4, 0)
.values(list, titles.stream().map((item) -> { return getValue.apply(item, null); }).toArray());
return new ModelAndView("xlsView") return new ModelAndView("xlsView")
.addObject("xls", xlsx); .addObject("xls", xlsx);

@ -13,6 +13,7 @@
<result property="taskSeCd" column="TASK_SE_CD" /> <!-- 업무 구분 코드 --> <result property="taskSeCd" column="TASK_SE_CD" /> <!-- 업무 구분 코드 -->
<result property="levyId" column="LEVY_ID" /> <!-- 부과 ID --> <result property="levyId" column="LEVY_ID" /> <!-- 부과 ID -->
<result property="rcvmtInptSeCd" column="RCVMT_INPT_SE_CD" /> <!-- 수납 입력 구분 코드 --> <result property="rcvmtInptSeCd" column="RCVMT_INPT_SE_CD" /> <!-- 수납 입력 구분 코드 -->
<result property="deptCd" column="DEPT_CD" /> <!-- 부서 코드 -->
<result property="fyr" column="FYR" /> <!-- 회계 연도 --> <result property="fyr" column="FYR" /> <!-- 회계 연도 -->
<result property="acntgSeCd" column="ACNTG_SE_CD" /> <!-- 회계 구분 코드 --> <result property="acntgSeCd" column="ACNTG_SE_CD" /> <!-- 회계 구분 코드 -->
<result property="txitmCd" column="TXITM_CD" /> <!-- 세목 코드 --> <result property="txitmCd" column="TXITM_CD" /> <!-- 세목 코드 -->
@ -48,11 +49,12 @@
<result property="delRsn" column="DEL_RSN" /> <!-- 삭제 사유 --> <result property="delRsn" column="DEL_RSN" /> <!-- 삭제 사유 -->
</resultMap> </resultMap>
<sql id="select"> <sql id="selectList">
SELECT R.RCVMT_ID /* 수납 ID */ SELECT R.RCVMT_ID /* 수납 ID */
, R.SGG_CD /* 시군구 코드 */ , R.SGG_CD /* 시군구 코드 */
, R.TASK_SE_CD /* 업무 구분 코드 */ , R.TASK_SE_CD /* 업무 구분 코드 */
, R.RCVMT_INPT_SE_CD /* 수납 입력 구분 코드 */ , R.RCVMT_INPT_SE_CD /* 수납 입력 구분 코드 */
, R.DEPT_CD /* 부서 코드 */
, R.FYR /* 회계연도 */ , R.FYR /* 회계연도 */
, R.ACNTG_SE_CD /* 회계 구분 코드 */ , R.ACNTG_SE_CD /* 회계 구분 코드 */
, R.TXITM_CD /* 세목 코드 */ , R.TXITM_CD /* 세목 코드 */
@ -129,14 +131,14 @@
, (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM /* 납부자 구분 명 */ , (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM /* 납부자 구분 명 */
, (SELECT GET_BRDT_FORMAT(P.RTPYR_BRDT, '.') FROM DUAL) AS RTPYR_BRDT_MASK /* 납부자 생년월일 마스크 */ , (SELECT GET_BRDT_FORMAT(P.RTPYR_BRDT, '.') FROM DUAL) AS RTPYR_BRDT_MASK /* 납부자 생년월일 마스크 */
FROM TB_RCVMT R FROM TB_RCVMT R
INNER JOIN TB_LEVY L ON (R.LEVY_ID = L.LEVY_ID) LEFT OUTER JOIN TB_LEVY L ON (R.LEVY_ID = L.LEVY_ID)
INNER JOIN TB_CRDN C ON (L.CRDN_ID = C.CRDN_ID) LEFT OUTER JOIN TB_CRDN C ON (L.CRDN_ID = C.CRDN_ID)
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
</sql> </sql>
<select id="selectRcvmtList" parameterType="map" resultType="dataobject">/* 수납 대장 목록 조회(rcvmtMapper.selectRcvmtList) */ <select id="selectRcvmtList" parameterType="map" resultType="dataobject">/* 수납 대장 목록 조회(rcvmtMapper.selectRcvmtList) */
<include refid="utility.paging-prefix" /> <include refid="utility.paging-prefix" />
<include refid="select" /> <include refid="selectList" />
WHERE R.SGG_CD = #{sggCd} /* 시군구 코드 */ WHERE R.SGG_CD = #{sggCd} /* 시군구 코드 */
AND R.TASK_SE_CD = #{taskSeCd} /* 업무 구분 코드 */ AND R.TASK_SE_CD = #{taskSeCd} /* 업무 구분 코드 */
<if test="schPstmrkYmdFrom != null"> <if test="schPstmrkYmdFrom != null">
@ -251,6 +253,60 @@
<include refid="utility.paging-suffix" /> <include refid="utility.paging-suffix" />
</select> </select>
<sql id="select">
SELECT R.RCVMT_ID /* 수납 ID */
, R.SGG_CD /* 시군구 코드 */
, R.TASK_SE_CD /* 업무 구분 코드 */
, R.RCVMT_INPT_SE_CD /* 수납 입력 구분 코드 */
, R.DEPT_CD /* 부서 코드 */
, R.FYR /* 회계연도 */
, R.ACNTG_SE_CD /* 회계 구분 코드 */
, R.TXITM_CD /* 세목 코드 */
, R.LEVY_NO /* 부과 번호 */
, R.INSPY_SN /* 분납 일련번호 */
, R.LAST_PCPTAX /* 최종 본세 */
, R.LAST_ADAMT /* 최종 가산금 */
, R.RCVMT_SN /* 수납 일련번호 */
, R.RCVMT_YMD /* 수납 일자 */
, R.RCVMT_AMT /* 수납 금액 */
, R.RCVMT_PCPTAX /* 수납 본세 */
, R.RCVMT_ADAMT /* 수납 가산금 */
, R.RCVMT_INT /* 수납 이자 */
, R.RCVMT_BANK_NM /* 수납 은행 명 */
, R.PAY_MTHD_SE_CD /* 납부 방법 구분 코드 */
, R.PSTMRK_YMD /* 소인 일자 */
, R.ACNTG_YMD /* 회계 일자 */
, R.VRACTNO /* 가상계좌번호 */
, R.EPAYNO /* 전자납부번호 */
, R.RCVMT_SE_CD /* 수납 구분 코드 */
, R.NXRP_LEVY_KEY /* 세외수입 부과 키 */
, R.RCVMT_RTRCN_YN /* 수납 취소 여부 */
, R.RCVMT_RTRCN_DT /* 수납 취소 일시 */
, R.RCVMT_RTRCN_RSN /* 수납 취소 사유 */
, R.RCVMT_STTS_CD /* 수납 상태 코드 */
, R.DEL_YN /* 삭제 여부 */
, R.REG_DT /* 등록 일시 */
, R.MDFCN_DT /* 수정 일시 */
, R.DEL_DT /* 삭제 일시 */
, R.DEL_RSN /* 삭제 사유 */
, (SELECT GET_CODE_NM('FIM054', R.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM /* 업무 구분 명 */
, (SELECT GET_CODE_NM('FIM044', R.RCVMT_INPT_SE_CD) FROM DUAL) AS RCVMT_INPT_SE_NM /* 수납 입력 구분 명 */
, (SELECT GET_CODE_NM('FIM074', R.ACNTG_SE_CD) FROM DUAL) AS ACNTG_SE_NM /* 회계 구분 명 */
, (SELECT GET_CODE_NM('FIM075', R.TXITM_CD) FROM DUAL) AS TXITM_NM /* 세목 코드 명 */
, (SELECT GET_CODE_NM('FIM045', R.PAY_MTHD_SE_CD) FROM DUAL) AS PAY_MTHD_SE_NM /* 납부 방법 구분 명 */
, (SELECT GET_CODE_NM('FIM041', R.RCVMT_SE_CD) FROM DUAL) AS RCVMT_SE_NM /* 수납 구분 명 */
, (SELECT GET_CODE_NM('CMM005', R.RCVMT_RTRCN_YN) FROM DUAL) AS RCVMT_RTRCN_NM /* 수납 취소 여부 명 */
, (SELECT GET_CODE_NM('FIM020', R.RCVMT_STTS_CD) FROM DUAL) AS RCVMT_STTS_NM /* 수납 상태 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.RGTR) AS RGTR_NM /* 등록자 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.MDFR) AS MDFR_NM /* 수정자 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.DLTR) AS DLTR_NM /* 삭제자 명 */
, L.LEVY_ID /* 부과 ID */
, C.CRDN_ID /* 단속 ID */
FROM TB_RCVMT R
LEFT OUTER JOIN TB_LEVY L ON (R.LEVY_ID = L.LEVY_ID)
LEFT OUTER JOIN TB_CRDN C ON (L.CRDN_ID = C.CRDN_ID)
</sql>
<select id="selectRcvmts" parameterType="map" resultType="dataobject">/* 수납 대장 객체 가져오기(rcvmtMapper.selectRcvmts) */ <select id="selectRcvmts" parameterType="map" resultType="dataobject">/* 수납 대장 객체 가져오기(rcvmtMapper.selectRcvmts) */
<include refid="select" /> <include refid="select" />
<where> <where>
@ -272,6 +328,7 @@
<select id="selectLevyInfo" parameterType="map" resultType="dataobject">/* 부과 대장 객체 가져오기(rcvmtMapper.selectLevyInfo) */ <select id="selectLevyInfo" parameterType="map" resultType="dataobject">/* 부과 대장 객체 가져오기(rcvmtMapper.selectLevyInfo) */
SELECT L.LEVY_ID /* 부과 ID */ SELECT L.LEVY_ID /* 부과 ID */
, L.DEPT_CD /* 부서 코드 */
, L.FYR /* 회계연도 */ , L.FYR /* 회계연도 */
, L.ACNTG_SE_CD /* 회계 구분 코드 */ , L.ACNTG_SE_CD /* 회계 구분 코드 */
, L.TXITM_CD /* 세목 코드 */ , L.TXITM_CD /* 세목 코드 */
@ -335,6 +392,7 @@
, TASK_SE_CD /* 업무 구분 코드 */ , TASK_SE_CD /* 업무 구분 코드 */
, LEVY_ID /* 부과 ID */ , LEVY_ID /* 부과 ID */
, RCVMT_INPT_SE_CD /* 수납 입력 구분 코드 */ , RCVMT_INPT_SE_CD /* 수납 입력 구분 코드 */
, DEPT_CD /* 부서 코드 */
, FYR /* 회계연도 */ , FYR /* 회계연도 */
, ACNTG_SE_CD /* 회계 구분 코드 */ , ACNTG_SE_CD /* 회계 구분 코드 */
, TXITM_CD /* 세목 코드 */ , TXITM_CD /* 세목 코드 */
@ -372,6 +430,7 @@
, #{rcvmt.taskSeCd} /* 업무 구분 코드 */ , #{rcvmt.taskSeCd} /* 업무 구분 코드 */
, #{rcvmt.levyId} /* 부과 ID */ , #{rcvmt.levyId} /* 부과 ID */
, #{rcvmt.rcvmtInptSeCd} /* 수납 입력 구분 코드 */ , #{rcvmt.rcvmtInptSeCd} /* 수납 입력 구분 코드 */
, #{rcvmt.deptCd} /* 부서 코드 */
, #{rcvmt.fyr} /* 회계 연도 */ , #{rcvmt.fyr} /* 회계 연도 */
, #{rcvmt.acntgSeCd} /* 회계 구분 코드 */ , #{rcvmt.acntgSeCd} /* 회계 구분 코드 */
, #{rcvmt.txitmCd} /* 세목 코드 */ , #{rcvmt.txitmCd} /* 세목 코드 */
@ -409,6 +468,7 @@
UPDATE TB_RCVMT UPDATE TB_RCVMT
SET LEVY_ID = #{rcvmt.levyId} /* 부과 ID */ SET LEVY_ID = #{rcvmt.levyId} /* 부과 ID */
, RCVMT_INPT_SE_CD = #{rcvmt.rcvmtInptSeCd} /* 수납 입력 구분 코드 */ , RCVMT_INPT_SE_CD = #{rcvmt.rcvmtInptSeCd} /* 수납 입력 구분 코드 */
, DEPT_CD = #{rcvmt.deptCd} /* 부서 코드 */
, FYR = #{rcvmt.fyr} /* 회계연도 */ , FYR = #{rcvmt.fyr} /* 회계연도 */
, ACNTG_SE_CD = #{rcvmt.acntgSeCd} /* 회계 구분 코드 */ , ACNTG_SE_CD = #{rcvmt.acntgSeCd} /* 회계 구분 코드 */
, TXITM_CD = #{rcvmt.txitmCd} /* 세목 코드 */ , TXITM_CD = #{rcvmt.txitmCd} /* 세목 코드 */

@ -513,15 +513,11 @@
content : "검색된 자료가 없습니다." content : "검색된 자료가 없습니다."
, onOK : () => { } , onOK : () => { }
}); });
return; return;
} }
// DataTables(그리드) 타이틀 // DataTables(그리드)
let headerInfo = $("#theadTr--${pageName} th").not(".dummy-th").not(":eq(0)").getHeaderInfo();
${pageName}Control.query.excelTitle = headerInfo.excelTitle;
${pageName}Control.query.excelTitleWidth = headerInfo.excelTitleWidth;
// DataTables(그리드) 데이터
let cellDefs = getCellDefs($("#theadTr--${pageName} th").not(".dummy-th").not(":eq(0)") let cellDefs = getCellDefs($("#theadTr--${pageName} th").not(".dummy-th").not(":eq(0)")
, $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td").not(":eq(0)")); , $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td").not(":eq(0)"));
${pageName}Control.query.cellDefs = cellDefs; ${pageName}Control.query.cellDefs = cellDefs;

@ -235,10 +235,6 @@
<th class="cmn" style="width: 240px;" onclick="searchFromGridTitle('EPAYNO', this.innerText, 'match', 'part');">전자납부번호</th> <th class="cmn" style="width: 240px;" onclick="searchFromGridTitle('EPAYNO', this.innerText, 'match', 'part');">전자납부번호</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('BANK_NM', this.innerText, 'match', 'part');">은행명</th> <th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('BANK_NM', this.innerText, 'match', 'part');">은행명</th>
<th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('VR_ACTNO', this.innerText, 'match', 'part');">가상계좌번호</th> <th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('VR_ACTNO', this.innerText, 'match', 'part');">가상계좌번호</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('BANK_NM2', this.innerText, 'match', 'part');">은행명2</th>
<th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('VR_ACTNO2', this.innerText, 'match', 'part');">가상계좌번호2</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('BANK_NM3', this.innerText, 'match', 'part');">은행명3</th>
<th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('VR_ACTNO3', this.innerText, 'match', 'part');">가상계좌번호3</th>
<th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('CRDN_YMD', this.innerText, 'ymd', '');">단속일시</th> <th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('CRDN_YMD', this.innerText, 'ymd', '');">단속일시</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('VHRNO', this.innerText, 'match', 'part');">차량번호</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: 160px;" onclick="searchFromGridTitle('CRDN_STDG_NM', this.innerText, 'match', 'part');">법정동</th>
@ -297,10 +293,6 @@
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{EPAYNO_MASK}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{EPAYNO_MASK}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{BANK_NM}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{BANK_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{VR_ACTNO}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{VR_ACTNO}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{BANK_NM2}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{VR_ACTNO2}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{BANK_NM3}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{VR_ACTNO3}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_YMD_TM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_YMD_TM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td>
@ -584,13 +576,15 @@
content : "검색된 자료가 없습니다." content : "검색된 자료가 없습니다."
, onOK : () => { } , onOK : () => { }
}); });
return; return;
} }
let headerInfo = $("#theadTr--${pageName} th").not(".dummy-th").not(":eq(0)").getHeaderInfo(); // DataTables(그리드)
let cellDefs = getCellDefs($("#theadTr--${pageName} th").not(".dummy-th").not(":eq(0)")
, $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td").not(":eq(0)"));
${pageName}Control.query.cellDefs = cellDefs;
${pageName}Control.query.excelTitle = headerInfo.excelTitle;
${pageName}Control.query.excelTitleWidth = headerInfo.excelTitleWidth;
${pageName}Control.download(); ${pageName}Control.download();
} }

@ -186,8 +186,8 @@
<th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('TXITM_CD', this.innerText, 'codeValue', 'FIM075');">세목명</th> <th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('TXITM_CD', this.innerText, 'codeValue', 'FIM075');">세목명</th>
<th class="cmn" style="width: 100px;" onclick="searchFromGridTitle('LEVY_NO', this.innerText, 'match', 'part');">부과번호</th> <th class="cmn" style="width: 100px;" onclick="searchFromGridTitle('LEVY_NO', this.innerText, 'match', 'part');">부과번호</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RCVMT_SN', this.innerText, 'match', 'part');">수납일련번호</th> <th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RCVMT_SN', this.innerText, 'match', 'part');">수납일련번호</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('PSTMRK_YMD', this.innerText, 'ymd', '');">소인일자</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('ACNTG_YMD', this.innerText, 'ymd', '');">회계일자</th> <th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('ACNTG_YMD', this.innerText, 'ymd', '');">회계일자</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('PSTMRK_YMD', this.innerText, 'ymd', '');">소인일자</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RCVMT_YMD', this.innerText, 'ymd', '');">수납일자</th> <th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RCVMT_YMD', this.innerText, 'ymd', '');">수납일자</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RCVMT_AMT', this.innerText, 'match', 'part');">수납금액</th> <th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RCVMT_AMT', this.innerText, 'match', 'part');">수납금액</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RCVMT_PCPTAX', this.innerText, 'match', 'part');">수납본세</th> <th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RCVMT_PCPTAX', this.innerText, 'match', 'part');">수납본세</th>
@ -236,8 +236,8 @@
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{TXITM_NM}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{TXITM_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_NO}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCVMT_SN}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCVMT_SN}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{PSTMRK_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ACNTG_YMD}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ACNTG_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{PSTMRK_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCVMT_YMD}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCVMT_YMD}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{RCVMT_AMT}</td> <td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{RCVMT_AMT}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{RCVMT_PCPTAX}</td> <td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{RCVMT_PCPTAX}</td>
@ -421,31 +421,6 @@
/************************************************************************** /**************************************************************************
* 사용자 함수(function) * 사용자 함수(function)
**************************************************************************/ **************************************************************************/
// 개별총정보 dialog
getTotalInfo${pageName} = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName : "${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 => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
});
}
});
}
// callback 사용자 검색 // callback 사용자 검색
callbackFindUser${pageName} = (userId, userNm) => { callbackFindUser${pageName} = (userId, userNm) => {
$("#schRgtrCd--${pageName}").val(userId); // 사용자 ID $("#schRgtrCd--${pageName}").val(userId); // 사용자 ID
@ -472,6 +447,31 @@
}); });
} }
// 개별총정보 dialog
getTotalInfo${pageName} = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName : "${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 => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
});
}
});
}
// 검색 자료 재조회 // 검색 자료 재조회
refreshList${pageName} = () => { refreshList${pageName} = () => {
${pageName}Control.untilPageNum = ${pageName}Control.query.pageNum; ${pageName}Control.untilPageNum = ${pageName}Control.query.pageNum;
@ -519,13 +519,15 @@
content : "검색된 자료가 없습니다." content : "검색된 자료가 없습니다."
, onOK : () => { } , onOK : () => { }
}); });
return; return;
} }
let headerInfo = $("#theadTr--${pageName} th").not(".dummy-th").not(":eq(0)").getHeaderInfo(); // DataTables(그리드)
let cellDefs = getCellDefs($("#theadTr--${pageName} th").not(".dummy-th").not(":eq(0)")
, $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td").not(":eq(0)"));
${pageName}Control.query.cellDefs = cellDefs;
${pageName}Control.query.excelTitle = headerInfo.excelTitle;
${pageName}Control.query.excelTitleWidth = headerInfo.excelTitleWidth;
${pageName}Control.download(); ${pageName}Control.download();
} }
@ -571,8 +573,6 @@
// 화면 초기화 // 화면 초기화
$("#frmSearch--${pageName}")[0].reset(); $("#frmSearch--${pageName}")[0].reset();
// 업무 구분 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true);
// 최고 관리자 경우 업무구분을 선택할 수 있도록 하자. // 최고 관리자 경우 업무구분을 선택할 수 있도록 하자.
$("#frmSearch--${pageName} input[name='taskSeCd']").each(function(i) { $("#frmSearch--${pageName} input[name='taskSeCd']").each(function(i) {
$(this).prop("disabled", "true"); $(this).prop("disabled", "true");

Loading…
Cancel
Save