You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

139 lines
4.5 KiB
Java

package cokr.xit.fims.crdn.web;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.poi.ss.usermodel.CellStyle;
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.user.dao.UserMapper;
import cokr.xit.base.web.ApplicationController;
import cokr.xit.fims.cmmn.CmmnUtil;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.crdn.CrdnQuery;
import cokr.xit.fims.crdn.dao.GlobalStngMapper;
import cokr.xit.fims.crdn.service.CrdnService;
import cokr.xit.fims.crdn.service.CrdnStngService;
import cokr.xit.foundation.data.DataObject;
/**표지정보확인 서비스 웹 컨트롤러.<br />
* {웹 컨텍스트}/crdn/crdn03 로 접근할 수 있다.
* @author leebj
*/
public class Crdn03Controller extends ApplicationController {
public static final String CLASS_URL = "/crdn/crdn03";
public class METHOD_URL {
public static final String
tagInformationUndefinedDataMain = "/010/main.do",
getTagInformationUndefinedDataList = "/030/list.do",
updateTagInfo = "/030/update.do"
;
}
@Resource(name="crdnService")
private CrdnService crdnService;
@Resource(name="crdnStngService")
private CrdnStngService crdnStngService;
@Resource(name="globalStngMapper")
protected GlobalStngMapper globalStngMapper;
@Resource(name="userMapper")
protected UserMapper userMapper;
/** 표지정보 미확인 자료 메인화면을 연다.
* @return fims/crdn/crdn03010-main
*/
public ModelAndView tagInformationUndefinedDataMain() {
ModelAndView mav = new ModelAndView();
mav.setViewName("fims/crdn/crdn03010-main");
mav.addObject("pageName","crdn03010");
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM003", "FIM010");
addCodes(commonCodes, mav, "FIM003", "FIM010");
return mav;
}
/**표지정보미확인자료 목록을 조회한다.<br />
* {@link CrdnService#getCrackdownList(CrdnQuery)} 참고
* @param req 표지정보미확인자료 목록 조회 조건
* @return jsonView
*/
public ModelAndView getTagInformationUndefinedDataList(CrdnQuery query) {
query.setGridType("tagInformationUndefinedData");
setFetchSize(query);
ManagedUser currentUser = userMapper.getUser(currentUser().getAccount(), currentUser().getInstitute());
String curDeptCode = currentUser.getDeptCode();
String sggCd = globalStngMapper.selectSggCd(curDeptCode);
query.setSggCd(sggCd);
if("xls".equals(query.getDownload())) {
ArrayList<CellDef> cellDefs = fromJson(query.getCellDefs(), new TypeReference<ArrayList<CellDef>>() {});
XLSWriter xlsx = new XLSWriter()
.setFilename("표지정보미확인자료 목록.xlsx")
.worksheet(0);
CellStyle center = xlsx.cellStyle(Styler.CENTER);
CellStyle numeric = xlsx.n_nn0();
CellStyle dateYMD = xlsx.yyyy_mm_dd();
CellStyle dateDT = xlsx.yyyy_mm_dd_hh_mm_ss();
List<DataObject> list = crdnService.getCrackdownList(query.setFetchSize(0));
Map<String, Object> valueMap = new HashMap<String, Object>();
valueMap.put("자료출처", xlsx.style("CRDN_INPT_SE_NM", center));
valueMap.put("위반일시", xlsx.format(o -> xlsx.str2datetime(o.get("CRDN_YMD_TM"))).style(dateDT));
valueMap.put("차량번호", "VHRNO");
valueMap.put("법정동", xlsx.style("CRDN_STDG_NM", center));
valueMap.put("잔액", xlsx.style("BLNC", numeric));
valueMap.put("사진건수", xlsx.style("ATCH_FILE_CNT", center));
valueMap.put("발행번호", "CRDN_SN");
CellDef.setValues(cellDefs, valueMap);
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));
return new ModelAndView("xlsView").addObject("xls", xlsx);
}
return setCollectionInfo(new ModelAndView("jsonView"), crdnService.getCrackdownList(query),"");
}
/**표지정보 미확인 자료를 수정한다.
* @param crdn 단속 대장 정보
* @return jsonView
* <pre><code> {
* "saved": 수정되었으면 true, 그렇지 않으면 false
* }</code></pre>
*/
public ModelAndView updateTagInfo(Crdn crdn) {
boolean saved = crdnService.updateTagInfo(crdn);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
}