엑셀 저장 수정.

main
jjh 11 months ago
parent 8574c000eb
commit f884ff41bf

@ -119,9 +119,7 @@ public interface LevyExclMapper extends AbstractMapper {
DataObject selectCvlcptAnsWords(LevyExclQuery req);
default DataObject selectCvlcptAnsWordsInfo(String ansRsnCd) {
DataObject cvlcptAnsWordsInfo = selectCvlcptAnsWords(new LevyExclQuery().setAnsRsnCd(ansRsnCd));
return cvlcptAnsWordsInfo;
return selectCvlcptAnsWords(new LevyExclQuery().setAnsRsnCd(ansRsnCd));
}
/**(TB_CRDN_CVLCPT) (CVLCPT_PRCS_RSLT_CN) .

@ -84,31 +84,4 @@ public interface OpnnSbmsnService {
*/
Map<String, String> makeDlbrDecsnFileFromHwpFormat(String formatType, String formatName, PrintOption printOption, LevyExclQuery req);
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean create(OpnnSbmsn opnnSbmsn);
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean update(OpnnSbmsn opnnSbmsn);
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean remove(OpnnSbmsn opnnSbmsn);
}

@ -444,37 +444,4 @@ public class OpnnSbmsnBean extends AbstractComponent {
return rtnMsg;
}
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean create(OpnnSbmsn opnnSbmsn) {
return opnnSbmsnMapper.insert(opnnSbmsn);
}
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean update(OpnnSbmsn opnnSbmsn) {
return opnnSbmsnMapper.update(opnnSbmsn);
}
/** .
* @param opnnSbmsn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean remove(OpnnSbmsn opnnSbmsn) {
return opnnSbmsnMapper.delete(opnnSbmsn);
}
}

@ -193,19 +193,4 @@ public class OpnnSbmsnServiceBean extends AbstractServiceBean implements OpnnSbm
return result;
}
@Override
public boolean create(OpnnSbmsn opnnSbmsn) {
return opnnSbmsnBean.create(opnnSbmsn);
}
@Override
public boolean update(OpnnSbmsn opnnSbmsn) {
return opnnSbmsnBean.update(opnnSbmsn);
}
@Override
public boolean remove(OpnnSbmsn opnnSbmsn) {
return opnnSbmsnBean.remove(opnnSbmsn);
}
}

@ -132,12 +132,12 @@ public class Excl01Controller extends ApplicationController {
);
xlsx.cell(0, 0)
.value("부과제외", center)
.merge(0, cellDefs.size()-1)
.cell(3, 0)
.rowValues(CellDef.header(cellDefs, () -> CmmnUtil.headerStyle(xlsx)))
.cell(4, 0)
.values(list, CellDef.values(cellDefs));
.value("부과제외", center)
.merge(0, cellDefs.size() - 1)
.cell(3, 0)
.rowValues(CellDef.header(cellDefs, () -> CmmnUtil.headerStyle(xlsx)))
.cell(4, 0)
.values(list, CellDef.values(cellDefs));
return new ModelAndView("xlsView")
.addObject("xls", xlsx);

@ -3,7 +3,6 @@ package cokr.xit.fims.excl.web;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.BiFunction;
import javax.annotation.Resource;
@ -11,16 +10,19 @@ import org.apache.poi.ss.usermodel.CellStyle;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import com.fasterxml.jackson.core.type.TypeReference;
import cokr.xit.base.code.CommonCode;
import cokr.xit.base.file.FileInfo;
import cokr.xit.base.file.service.FileService;
import cokr.xit.base.file.web.FileInfoFactory;
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.user.ManagedUser;
import cokr.xit.base.web.ApplicationController;
import cokr.xit.fims.excl.OpnnSbmsn;
import cokr.xit.fims.cmmn.CmmnUtil;
import cokr.xit.fims.excl.OpnnSbmsn;
import cokr.xit.fims.excl.LevyExclQuery;
import cokr.xit.fims.excl.service.OpnnSbmsnService;
import cokr.xit.fims.sprt.PrintOption;
@ -102,76 +104,58 @@ public class Excl02Controller extends ApplicationController {
List<?> result = opnnSbmsnService.getOpnnSbmsnList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "opnnSbmsn");
} else {
ArrayList<CellDef> cellDefs = fromJson(req.getCellDefs(), new TypeReference<ArrayList<CellDef>>() {});
XLSWriter xlsx = new XLSWriter()
.setFilename("의견제출 목록.xlsx")
.worksheet(0);
CellStyle center = xlsx.cellStyle(Styler.CENTER) // 가운데 정렬
, numeric = xlsx.n_nn0() // 숫자 3자리 콤마(,)
, dateYMD = xlsx.yyyy_mm_dd() // 연월일
, 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);
}
CellStyle center = xlsx.cellStyle(Styler.CENTER); // 가운데 정렬
CellStyle numeric = xlsx.n_nn0(); // 숫자 3자리 콤마(,)
CellStyle dateYMD = xlsx.yyyy_mm_dd(); // 연월일
CellStyle dateDT = xlsx.yyyy_mm_dd_hh_mm_ss(); // 연월일+시간
int[] excelTitleWidth = req.getExcelTitleWidth();
List<Integer> widths = new ArrayList<>();
for (int jLoop = 0; jLoop < excelTitleWidth.length; jLoop++) {
int item = excelTitleWidth[jLoop];
widths.add(item);
}
List<DataObject> list = opnnSbmsnService.getOpnnSbmsnList(req.setFetchSize(0));
List<Styler> headerStylers = CmmnUtil.makeHeadersByDiffrentWidths(widths, xlsx);
CellDef.setValues(cellDefs, Map.ofEntries(
Map.entry("업무구분", xlsx.style("TASK_SE_NM", center))
, Map.entry("접수번호", xlsx.style("RCPT_NO", center))
, Map.entry("접수일자", xlsx.format(o -> xlsx.str2date(o.get("RCPT_YMD"))).style(dateYMD))
, Map.entry("접수구분", xlsx.style("RCPT_SE_NM", center))
, Map.entry("통보구분", xlsx.style("NTFCTN_SE_NM", center))
, Map.entry("소유주관계", xlsx.style("OWNR_REL_NM", center))
, Map.entry("진술자명", "STTR_NM")
, Map.entry("진술자생일", xlsx.style("STTR_BRDT_MASK", center))
, Map.entry("의견제출상태", xlsx.style("OPNN_SBMSN_STTS_NM", center))
, Map.entry("의견제출분류", "OPNN_SBMSN_SE_NM")
, Map.entry("의견제출요지", "OPNN_SBMSN_GIST")
, Map.entry("문서번호", "DOC_NO")
, Map.entry("답변일자", xlsx.format(o -> xlsx.str2date(o.get("ANS_YMD"))).style(dateYMD))
, Map.entry("답변내용", "ANS_CN")
, 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("처리상태", "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)
.value("의견제출", XLSWriter.Styler.CENTER)
.merge(0, 12)
.value("의견제출", center)
.merge(0, cellDefs.size() - 1)
.cell(3, 0)
.rowValues(CmmnUtil.mergeListByIndex(titles, headerStylers));
List<DataObject> list = opnnSbmsnService.getOpnnSbmsnList(req.setFetchSize(0));
BiFunction<String, String, ?> getValue = (titleNm, nothing) -> {
switch (titleNm) {
case "업무구분" : return xlsx.style("TASK_SE_NM", center);
case "접수번호" : return xlsx.style("RCPT_NO", center);
case "접수일자" : return xlsx.format(o -> xlsx.str2date(o.get("RCPT_YMD"))).style(dateYMD);
case "접수구분" : return xlsx.style("RCPT_SE_NM", center);
case "통보구분" : return xlsx.style("NTFCTN_SE_NM", center);
case "소유주관계" : return xlsx.style("OWNR_REL_NM", center);
case "진술자명" : return "STTR_NM";
case "진술자생일" : return xlsx.style("STTR_BRDT_MASK", center);
case "의견제출상태" : return xlsx.style("OPNN_SBMSN_STTS_NM", center);
case "의견제출분류" : return "OPNN_SBMSN_SE_NM";
case "의견제출요지" : return "OPNN_SBMSN_GIST";
case "문서번호" : return "DOC_NO";
case "답변일자" : return xlsx.format(o -> xlsx.str2date(o.get("ANS_YMD"))).style(dateYMD);
case "답변내용" : return "ANS_CN";
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 "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());
.rowValues(CellDef.header(cellDefs, () -> CmmnUtil.headerStyle(xlsx)))
.cell(4, 0)
.values(list, CellDef.values(cellDefs));
return new ModelAndView("xlsView")
.addObject("xls", xlsx);
@ -368,47 +352,4 @@ public class Excl02Controller extends ApplicationController {
return mav;
}
/** .
* @param opnnSbmsn
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
// @PostMapping(name = "의견제출 대장 등록", value = "/create.do")
public ModelAndView create(OpnnSbmsn opnnSbmsn) {
boolean saved = opnnSbmsnService.create(opnnSbmsn);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
/** .
* @param opnnSbmsn
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
// @PostMapping(name = "의견제출 대장 수정", value = "/update.do")
public ModelAndView update(OpnnSbmsn opnnSbmsn) {
boolean saved = opnnSbmsnService.update(opnnSbmsn);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
/** .
* @param opnnSbmsnIDs
* @return jsonView
* <pre><code> {
* "affected":
* "saved": true, false
* }</code></pre>
*/
// @PostMapping(name = "의견제출 대장 제거", value = "/remove.do")
public ModelAndView remove(OpnnSbmsn opnnSbmsn) {
boolean saved = opnnSbmsnService.remove(opnnSbmsn);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
}

@ -12,8 +12,11 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.fasterxml.jackson.core.type.TypeReference;
import cokr.xit.base.code.CommonCode;
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.user.ManagedUser;
import cokr.xit.base.web.ApplicationController;
@ -88,61 +91,43 @@ public class Excl03Controller extends ApplicationController {
List<?> result = crdnReRegService.getCrdnReRegList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "crdnReReg");
} else {
ArrayList<CellDef> cellDefs = fromJson(req.getCellDefs(), new TypeReference<ArrayList<CellDef>>() {});
XLSWriter xlsx = new XLSWriter()
.setFilename("단속 재등록 목록.xlsx")
.worksheet(0);
CellStyle center = xlsx.cellStyle(Styler.CENTER) // 가운데 정렬
, numeric = xlsx.n_nn0() // 숫자 3자리 콤마(,)
, dateYMD = xlsx.yyyy_mm_dd() // 연월일
, dateDT = xlsx.yyyy_mm_dd_hh_mm_ss(); // 연월일+시간
CellStyle center = xlsx.cellStyle(Styler.CENTER); // 가운데 정렬
CellStyle numeric = xlsx.n_nn0(); // 숫자 3자리 콤마(,)
CellStyle dateYMD = xlsx.yyyy_mm_dd(); // 연월일
CellStyle 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<Integer> widths = new ArrayList<>();
for (int jLoop = 0; jLoop < excelTitleWidth.length; jLoop++) {
int item = excelTitleWidth[jLoop];
widths.add(item);
}
List<DataObject> list = crdnReRegService.getCrdnReRegList(req.setFetchSize(0));
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.str2date(o.get("RE_REG_YMD"))).style(dateYMD))
, Map.entry("단속등록구분", xlsx.style("CRDN_REG_SE_NM", center))
, Map.entry("기타내용", "ETC_CN")
, 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.format(o -> xlsx.str2datetime(o.get("REG_DT"))).style(dateDT))
, Map.entry("등록사용자", xlsx.style("RGTR_NM", center))
)
);
xlsx.cell(0, 0)
.value("단속 재등록", XLSWriter.Styler.CENTER)
.merge(0, 12)
.value("단속 재등록", center)
.merge(0, cellDefs.size() - 1)
.cell(3, 0)
.rowValues(CmmnUtil.mergeListByIndex(titles, headerStylers));
List<DataObject> list = crdnReRegService.getCrdnReRegList(req.setFetchSize(0));
BiFunction<String, String, ?> getValue = (titleNm, nothing) -> {
switch (titleNm) {
case "업무구분" : return xlsx.style("TASK_SE_NM", center);
case "재등록일자" : return xlsx.format(o -> xlsx.str2date(o.get("RE_REG_YMD"))).style(dateYMD);
case "단속등록구분" : return xlsx.style("CRDN_REG_SE_NM", center);
case "기타내용" : return "ETC_CN";
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.format(o -> xlsx.str2datetime(o.get("REG_DT"))).style(dateDT);
case "등록사용자" : return xlsx.style("RGTR_NM", center);
}
return "";
};
xlsx.cell(4, 0)
.values(list, titles.stream().map((item) -> { return getValue.apply(item, null); }).toArray());
.rowValues(CellDef.header(cellDefs, () -> CmmnUtil.headerStyle(xlsx)))
.cell(4, 0)
.values(list, CellDef.values(cellDefs));
return new ModelAndView("xlsView")
.addObject("xls", xlsx);

@ -604,17 +604,12 @@
return;
}
// 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)")
, $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td").not(":eq(0)"));
${pageName}Control.query.cellDefs = cellDefs;
// 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.download();
${pageName}Control.download();
}
// 사용자 조회 버튼 이벤트

@ -434,11 +434,12 @@
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();
}
// 사용자 조회 버튼 이벤트

Loading…
Cancel
Save