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.

168 lines
5.7 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 javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import cokr.xit.base.code.CommonCode;
import cokr.xit.base.file.FileInfo;
import cokr.xit.base.file.web.FileInfoFactory;
import cokr.xit.base.web.ApplicationController;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.crdn.CrdnQuery;
import cokr.xit.fims.crdn.dao.Crdn05Mapper;
import cokr.xit.fims.crdn.service.CrdnService;
import cokr.xit.fims.crdn.service.CrdnStngService;
import cokr.xit.foundation.data.DataObject;
/**단속 자료 등록 서비스 웹 컨트롤러.<br />
* {웹 컨텍스트}/crdn/crdn05 로 접근할 수 있다.
* @author leebj
*/
public class Crdn05Controller extends ApplicationController {
@Resource(name="crdnService")
private CrdnService crdnService;
@Resource(name="crdnStngService")
private CrdnStngService crdnStngService;
@Resource(name="crdn05Mapper")
private Crdn05Mapper crdn05Mapper;
/** 단속 자료 등록 메인화면을 연다.
* @return fims/crdn/crdn05010-main
*/
public ModelAndView crackdownDataRegistrationMain() {
ModelAndView mav = new ModelAndView();
mav.setViewName("fims/crdn/crdn05010-main");
mav.addObject("pageName", "crdn05010-main");
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM003", "FIM026", "FIM054");
mav.addObject("FIM054List", commonCodes.get("FIM054"));
addCodes(commonCodes, mav, "FIM003", "FIM026");
return mav;
}
/**단속자료 파일 등록 팝업화면을 반환한다.
* @param
* @return fims/crdn/crdn05020-info
*/
@RequestMapping(name="단속자료 파일 등록 화면", value="/020/info.do")
public ModelAndView getFileRegistrationScreen() {
return new ModelAndView("fims/crdn/crdn05020-info");
}
/**당일 등록한 단속자료 목록을 조회한다.
* {@link CrdnService#getCrackdownList(CrdnQuery)} 참고
* @param query 단속자료 목록 조회 조건
* @return jsonView
* <pre><code> {
* "crdnList": [조회결과 목록],
* "crdnStart": 현재 페이지의 시작 자료 인덱스,
* "crdnFetchTotal": 한 페이지에 가져오는 자료 건 수,
* "crdnTotal": 조회 결과 찾은 전체 건 수
* }</code></pre>
*/
@RequestMapping(name="당일 입력 단속자료 목록 조회", value="/010/list.do")
public ModelAndView getTodayCrdnDataList(CrdnQuery query) {
setFetchSize(query);
query.setGridType("todayInsert");
return setCollectionInfo(new ModelAndView("jsonView"),crdnService.getCrackdownList(query),"");
}
/**단속자료 수기 등록 팝업화면을 반환한다.
* @param
* @return fims/crdn/crdn05030-info
*/
@RequestMapping(name="단속자료 수기 등록 화면", value="/030/info.do")
public ModelAndView getManualRegistrationScreen(HttpServletRequest hReq) {
ModelAndView mav = new ModelAndView("fims/crdn/crdn05030-info");
mav.addObject("pageName", "crdn05030-info");
String urlTaskSeCd = hReq.getServletPath().split("/")[1];
mav.addObject("taskSeCd", urlTaskSeCd);
String vltnByTask = "";
switch(urlTaskSeCd) {
case "PVS" -> { vltnByTask = "WEB002"; }
case "BPV" -> { vltnByTask = "FIM005"; }
case "DPV","ECA" -> { vltnByTask = "FIM006"; }
}
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM011","FIM053","LVS005",vltnByTask);
mav.addObject("FIM011List", commonCodes.get("FIM011"));
mav.addObject("FIM053List", commonCodes.get("FIM053"));
mav.addObject("LVS005List", commonCodes.get("LVS005"));
mav.addObject("VLTNList", commonCodes.get(vltnByTask));
CrdnQuery query = new CrdnQuery();
query.setSggCd(crdn05Mapper.selectSggCdForCurrentUser());
query.setTaskSeCd(urlTaskSeCd);
List<DataObject> teamList = crdnStngService.getTeamList(query);
switch(urlTaskSeCd) {
case "PVS" -> {
commonCodes = getCodesOf("FIM002","FIM007","FIM009");
mav.addObject("FIM002List", commonCodes.get("FIM002"));
mav.addObject("FIM007List", commonCodes.get("FIM007"));
mav.addObject("FIM009List", commonCodes.get("FIM009"));
mav.addObject("TeamList", teamList);
}
case "BPV" -> {
commonCodes = getCodesOf("FIM002","FIM009");
mav.addObject("FIM002List", commonCodes.get("FIM002"));
mav.addObject("FIM009List", commonCodes.get("FIM009"));
mav.addObject("TeamList", teamList);
}
case "DPV" -> {
commonCodes = getCodesOf("FIM034");
mav.addObject("FIM034List", commonCodes.get("FIM034"));
}
case "ECA" -> { }
}
return mav;
}
/**단속 대장을 수기 등록한다.
* @param Crdn 단속 대장 정보
* @return jsonView
* <pre><code> {
* "saved": 등록되었으면 true, 그렇지 않으면 false
* }</code></pre>
*/
@PostMapping(name="단속자료 수기 등록", value="/030/create.do")
public ModelAndView createCrdnDataByManual(HttpServletRequest hReq, Crdn crdn, MultipartFile[] newFileList) {
boolean saved = false;
crdn.setCrdnRegSeCd("01");
crdn.setCrdnInptSeCd("03");//TODO : 사용자 기관의 시청,구청 구분
List<FileInfo> fileInfoList = new ArrayList<FileInfo>();
if(newFileList != null && newFileList.length > 0) {
fileInfoList = new FileInfoFactory().makeFileInfos(null, newFileList);
}
String doGuidance = ifEmpty(hReq.getParameter("doGuidance"), () -> "");
if(doGuidance.equals("on")) {
crdn.setCrdnSttsCd("83");
}
Map<String, Object> nonQueryRequest = new HashMap<String, Object>();
saved = crdnService.create(nonQueryRequest , crdn, fileInfoList);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
}