501 lines
17 KiB
Java
501 lines
17 KiB
Java
package com.mca.cmmn.web;
|
|
|
|
import java.time.LocalDate;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
import com.google.gson.JsonArray;
|
|
import com.google.gson.JsonObject;
|
|
import com.mca.cmmn.service.LogService;
|
|
import com.mca.cmmn.vo.BaseSearchVO;
|
|
import com.mca.map.vo.*;
|
|
import org.json.JSONArray;
|
|
import org.json.JSONObject;
|
|
import org.springframework.stereotype.Controller;
|
|
import org.springframework.ui.Model;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
import com.mca.cmmn.service.AreaCodeService;
|
|
import com.mca.cmmn.service.LayersService;
|
|
import com.mca.cmmn.vo.LayersVO;
|
|
import com.mca.map.service.FieldDataService;
|
|
import com.mca.map.service.UseHistoryService;
|
|
import com.mca.map.service.UseRequestService;
|
|
import com.mca.sec.UserUtil;
|
|
import com.mca.sec.vo.LoginUserVO;
|
|
import com.mca.user.service.UserService;
|
|
import com.mca.user.vo.UserSearchVO;
|
|
import com.mca.user.vo.UserVO;
|
|
|
|
import egovframework.rte.fdl.property.EgovPropertyService;
|
|
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
|
|
|
|
@Controller
|
|
@RequestMapping("/admin")
|
|
public class AdminController {
|
|
|
|
/**
|
|
* properties값을 가져오는 인터페이스.
|
|
**/
|
|
@Resource(name="propertiesService")
|
|
private EgovPropertyService propertiesService;
|
|
|
|
@Resource(name="useRequestService")
|
|
private UseRequestService useRequestService;
|
|
|
|
@Resource(name="useHistoryService")
|
|
private UseHistoryService useHistoryService;
|
|
|
|
@Resource(name="areaCodeService")
|
|
private AreaCodeService areaCodeService;
|
|
|
|
@Resource(name="layersService")
|
|
private LayersService layersService;
|
|
|
|
@Resource(name="userService")
|
|
private UserService userService;
|
|
|
|
@Resource(name="fieldDataService")
|
|
private FieldDataService fieldDataService;
|
|
|
|
@Resource(name = "logService")
|
|
private LogService logService;
|
|
|
|
/**
|
|
* 대시보드 페이지 이동
|
|
*
|
|
* @param useRequestSearchVO
|
|
* @param model 모델 객체
|
|
* @return
|
|
* @throws
|
|
*/
|
|
@RequestMapping("/dashBoard")
|
|
public String dashBoard(@ModelAttribute("UseRequestSearchVO") UseRequestSearchVO useRequestSearchVO, Model model) throws Exception {
|
|
try {
|
|
// 지도사용 요청 승인대기 수
|
|
int statusCnt = useRequestService.selectUseRequeststatusCnt();
|
|
model.addAttribute("statusCnt", statusCnt);
|
|
|
|
// 회원가입 승인대기 수
|
|
int standByCount = userService.selectUserStandByCount();
|
|
model.addAttribute("standByCount", standByCount);
|
|
|
|
// 확인요청 데이터
|
|
FieldDataSearchVO fieldDataSearchVO = new FieldDataSearchVO();
|
|
fieldDataSearchVO.setStatus0(1);
|
|
fieldDataSearchVO.setStatus1(1);
|
|
fieldDataSearchVO.setStatus2(1);
|
|
fieldDataSearchVO.setStatus3(1);
|
|
int standFieldData = fieldDataService.selectFieldDataCnt(fieldDataSearchVO);
|
|
model.addAttribute("standFieldData", standFieldData);
|
|
|
|
// 일, 월 방문자 수
|
|
/*BaseSearchVO searchVO = new BaseSearchVO();
|
|
LocalDate searchStartDate = LocalDate.now();
|
|
searchVO.setSearchStartDate(searchStartDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
|
searchVO.setSearchEndDate(searchStartDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
|
model.addAttribute("dayLoginCount", logService.selectLoginCnt(searchVO));
|
|
searchVO.setSearchStartDate(searchStartDate.minusMonths(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
|
model.addAttribute("monthLoginCount", logService.selectLoginCnt(searchVO));*/
|
|
|
|
UseHistorySearchVO useHistorySearchVO = new UseHistorySearchVO();
|
|
LocalDate searchStartDate = LocalDate.now();
|
|
useHistorySearchVO.setSearchStartDate(searchStartDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
|
useHistorySearchVO.setSearchEndDate(searchStartDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
|
model.addAttribute("userVisitDay", useHistoryService.selectUseVisit(useHistorySearchVO));
|
|
useHistorySearchVO.setSearchStartDate(searchStartDate.minusMonths(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
|
model.addAttribute("userVisitMonth", useHistoryService.selectUseVisit(useHistorySearchVO));
|
|
|
|
|
|
//일별 지도사용 수
|
|
useHistorySearchVO = new UseHistorySearchVO();
|
|
useHistorySearchVO.setSearchEndDate(searchStartDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
|
useHistorySearchVO.setSearchStartDate(searchStartDate.minusDays(14).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
|
List<ChartVO> dayMapUseDataList = useHistoryService.selectDayMapUseData(useHistorySearchVO);
|
|
model.addAttribute("dayMapUseDataList", dayMapUseDataList);
|
|
|
|
// 지역별 현장수집 데이터 수
|
|
List<ChartVO> areaDataList = fieldDataService.selectAreaDataList();
|
|
model.addAttribute("areaDataList", areaDataList);
|
|
|
|
return "admin/dashBoard";
|
|
|
|
} catch (Exception e) {
|
|
// TODO: handle exception
|
|
e.printStackTrace();
|
|
return "error/EgovServerError";
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 일별 지도사용 추이 데이터 반환 ajax
|
|
*
|
|
* @param
|
|
* @return
|
|
* @throws
|
|
*/
|
|
@RequestMapping(value = "/dayMapUseData", method = {RequestMethod.GET})
|
|
@ResponseBody
|
|
public JSONArray dayMapUseData(@ModelAttribute("UseRequestSearchVO") UseHistorySearchVO useHistorySearchVO, Model model) throws Exception {
|
|
try {
|
|
List<ChartVO> dataList = useHistoryService.selectDayMapUseData(useHistorySearchVO);
|
|
|
|
JSONArray returnAry = new JSONArray();
|
|
for(ChartVO chartVO: dataList){
|
|
JSONArray temp = new JSONArray();
|
|
temp.put(chartVO.getParam01());
|
|
temp.put(chartVO.getValue01());
|
|
returnAry.put(temp);
|
|
}
|
|
System.out.println("결과 배열 수 : "+returnAry.length());
|
|
return returnAry;
|
|
} catch (Exception e) {
|
|
// TODO: handle exception
|
|
e.printStackTrace();
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 지도 사용요청 목록을 반환한다.
|
|
*
|
|
* @param useRequestSearchVO 지도사용요청 검색, 페이지 정보 객체
|
|
* @param model 모델 객체
|
|
* @return 지도사용요청 목록 화면
|
|
* @throws
|
|
*/
|
|
@RequestMapping("/request")
|
|
public String reqList(@ModelAttribute("UseRequestSearchVO") UseRequestSearchVO useRequestSearchVO, Model model) throws Exception {
|
|
try {
|
|
useRequestSearchVO.setPageUnit(propertiesService.getInt("pageUnit"));
|
|
useRequestSearchVO.setPageSize(propertiesService.getInt("pageSize"));
|
|
|
|
PaginationInfo paginationInfo = new PaginationInfo();
|
|
paginationInfo.setCurrentPageNo(useRequestSearchVO.getPageIndex());
|
|
paginationInfo.setRecordCountPerPage(useRequestSearchVO.getPageUnit());
|
|
paginationInfo.setPageSize(useRequestSearchVO.getPageSize());
|
|
|
|
useRequestSearchVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
|
useRequestSearchVO.setLastIndex(paginationInfo.getLastRecordIndex());
|
|
useRequestSearchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
|
|
|
List<?> userList = useRequestService.selectUseRequestList(useRequestSearchVO);
|
|
int count = useRequestService.selectUseRequestCnt(useRequestSearchVO);
|
|
int statusCnt = useRequestService.selectUseRequeststatusCnt();
|
|
|
|
paginationInfo.setTotalRecordCount(count);
|
|
|
|
model.addAttribute("paginationInfo", paginationInfo);
|
|
model.addAttribute("useRequestList", userList);
|
|
model.addAttribute("useRequestSearchVO", useRequestSearchVO);
|
|
model.addAttribute("count", count);
|
|
model.addAttribute("statusCnt", statusCnt);
|
|
|
|
return "admin/request";
|
|
} catch (Exception e) {
|
|
// TODO: handle exception
|
|
e.printStackTrace();
|
|
return "error/EgovServerError";
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 지도 사용요청 상세화면을 반환한다.
|
|
*
|
|
* @param idx 지도사용요청 Primary Key
|
|
* @param model 모델 객체
|
|
* @return 지도사용요청 상세 화면
|
|
* @throws Exception 기본 예외 처리
|
|
*/
|
|
@RequestMapping("/request/{idx}")
|
|
public String reqDetail(@PathVariable int idx, Model model) throws Exception{
|
|
try {
|
|
LoginUserVO loginUserVO = UserUtil.getMemberInfo();
|
|
|
|
UseRequestVO useRequestVO = useRequestService.selectUseRequest(idx);
|
|
useRequestVO = useRequestService.selectUseRequest(idx);
|
|
UserVO userVO = userService.selectUserInfo(useRequestVO.getUserid());
|
|
|
|
String layers[] = useRequestVO.getLayers().split(",");
|
|
String places[] = useRequestVO.getPlaces().split(",");
|
|
|
|
ArrayList<String> selectArea = new ArrayList<String>();
|
|
for(int i=0;i<places.length;i++) {
|
|
selectArea.add(areaCodeService.selectAreaName(places[i]));
|
|
}
|
|
|
|
List <LayersVO> layersVO = layersService.selectLayers();
|
|
model.addAttribute("loginUserVO", loginUserVO);
|
|
model.addAttribute("userVO", userVO);
|
|
model.addAttribute("useRequestVO", useRequestVO);
|
|
model.addAttribute("selectArea", selectArea);
|
|
model.addAttribute("layers", layers);
|
|
model.addAttribute("layersVO", layersVO);
|
|
// return "admin/requestView";
|
|
return "admin/html/requestView";
|
|
} catch (Exception e) {
|
|
// TODO Auto-generated catch block
|
|
e.printStackTrace();
|
|
return "error/EgovServerError";
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 지도사용이력 목록을 반환한다.
|
|
*
|
|
* @param useHistorySearchVO 지도사용이력 검색, 페이지 정보 객체
|
|
* @param model 모델 객체
|
|
* @return 지도사용요청 목록 화면
|
|
* @throws
|
|
*/
|
|
@RequestMapping("/history")
|
|
public String history(@ModelAttribute("UseHistorySearchVO") UseHistorySearchVO useHistorySearchVO, Model model) throws Exception {
|
|
try {
|
|
useHistorySearchVO.setPageUnit(propertiesService.getInt("pageUnit"));
|
|
useHistorySearchVO.setPageSize(propertiesService.getInt("pageSize"));
|
|
|
|
PaginationInfo paginationInfo = new PaginationInfo();
|
|
paginationInfo.setCurrentPageNo(useHistorySearchVO.getPageIndex());
|
|
paginationInfo.setRecordCountPerPage(useHistorySearchVO.getPageUnit());
|
|
paginationInfo.setPageSize(useHistorySearchVO.getPageSize());
|
|
|
|
useHistorySearchVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
|
useHistorySearchVO.setLastIndex(paginationInfo.getLastRecordIndex());
|
|
useHistorySearchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
|
|
|
List<?> useHistoryList = useHistoryService.selectUseHistoryList(useHistorySearchVO);
|
|
int count = useHistoryService.selectUseHistoryCnt(useHistorySearchVO);
|
|
|
|
paginationInfo.setTotalRecordCount(count);
|
|
|
|
model.addAttribute("paginationInfo", paginationInfo);
|
|
model.addAttribute("useHistoryList", useHistoryList);
|
|
model.addAttribute("useHistorySearchVO", useHistorySearchVO);
|
|
model.addAttribute("count", count);
|
|
|
|
return "admin/history";
|
|
} catch (Exception e) {
|
|
// TODO: handle exception
|
|
e.printStackTrace();
|
|
return "error/EgovServerError";
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 지도사용요청 승인/거절 처리한다.
|
|
*
|
|
* @param useRequestVO 지도사용요청 VO
|
|
* @param model 모델 객체
|
|
* @return 지도사용요청 목록 화면
|
|
* @throws
|
|
*/
|
|
@RequestMapping("/updateReqConfirm")
|
|
public String updateReqConfirm(@ModelAttribute("useRequestVO") UseRequestVO useRequestVO, Model model) throws Exception {
|
|
try {
|
|
useRequestService.updateReqConfirm(useRequestVO);
|
|
String resultMsg;
|
|
if(useRequestVO.getStatus().equals("0")) {
|
|
resultMsg = "지도사용요청 승인 처리가 되었습니다.";
|
|
}else {
|
|
resultMsg = "지도사용요청 거절 처리가 되었습니다.";
|
|
}
|
|
|
|
model.addAttribute("url", "/admin/request");
|
|
model.addAttribute("resultMsg", resultMsg);
|
|
return "/redirect";
|
|
} catch (Exception e) {
|
|
// TODO: handle exception
|
|
e.printStackTrace();
|
|
return "error/EgovServerError";
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 사용자관리 목록을 반환한다.
|
|
*
|
|
* @param userSearchVO 사용자정보 검색 VO
|
|
* @param model 모델 객체
|
|
* @return 사용자관리 목록 화면
|
|
* @throws
|
|
*/
|
|
@RequestMapping("/userInfo")
|
|
public String userInfo(@ModelAttribute("UserSearchVO") UserSearchVO userSearchVO, Model model) throws Exception {
|
|
try {
|
|
userSearchVO.setPageUnit(propertiesService.getInt("pageUnit"));
|
|
userSearchVO.setPageSize(propertiesService.getInt("pageSize"));
|
|
|
|
PaginationInfo paginationInfo = new PaginationInfo();
|
|
paginationInfo.setCurrentPageNo(userSearchVO.getPageIndex());
|
|
paginationInfo.setRecordCountPerPage(userSearchVO.getPageUnit());
|
|
paginationInfo.setPageSize(userSearchVO.getPageSize());
|
|
|
|
userSearchVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
|
userSearchVO.setLastIndex(paginationInfo.getLastRecordIndex());
|
|
userSearchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
|
|
|
List<?> userList = userService.selectUserList(userSearchVO);
|
|
int count = userService.selectUserCount(userSearchVO);
|
|
int standByCount = userService.selectUserStandByCount();
|
|
|
|
paginationInfo.setTotalRecordCount(count);
|
|
|
|
model.addAttribute("paginationInfo", paginationInfo);
|
|
model.addAttribute("userList", userList);
|
|
model.addAttribute("userSearchVO", userSearchVO);
|
|
model.addAttribute("count", count);
|
|
model.addAttribute("standByCount", standByCount);
|
|
|
|
return "admin/userInfo";
|
|
} catch (Exception e) {
|
|
// TODO: handle exception
|
|
e.printStackTrace();
|
|
return "error/EgovServerError";
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 사용자관리 상세화면을 반환한다.
|
|
*
|
|
* @param userid 사용자정보 ID
|
|
* @param model 모델 객체
|
|
* @return 사용자관리 상세 화면
|
|
* @throws
|
|
*/
|
|
@RequestMapping("/userInfo/{userid}")
|
|
public String userInfoView(@PathVariable String userid, Model model) throws Exception {
|
|
try {
|
|
UserVO userVO = userService.selectUserInfo(userid);
|
|
model.addAttribute("userVO", userVO);
|
|
|
|
return "admin/html/userInfoView";
|
|
} catch (Exception e) {
|
|
// TODO: handle exception
|
|
e.printStackTrace();
|
|
return "error/EgovServerError";
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 사용자정보를 수정한다.
|
|
*
|
|
* @param req Request 객체
|
|
* @param model 모델 객체
|
|
* @param userVO 사용자정보 VO
|
|
* @return 사용자관리 목록 화면
|
|
* @throws
|
|
*/
|
|
@RequestMapping("/userUpdate")
|
|
public String userUpdate(HttpServletRequest req, Model model, UserVO userVO) throws Exception {
|
|
try {
|
|
userService.updateUser(userVO);
|
|
model.addAttribute("url", "/admin/userInfo");
|
|
model.addAttribute("resultMsg", "수정되었습니다.");
|
|
return "/redirect";
|
|
} catch (Exception e) {
|
|
// TODO: handle exception
|
|
e.printStackTrace();
|
|
return "error/EgovServerError";
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 사용자를 승인/거절 처리한다.
|
|
*
|
|
* @param userVO 사용자정보 VO
|
|
* @param model 모델 객체
|
|
* @return 사용자관리 목록 화면
|
|
* @throws
|
|
*/
|
|
@RequestMapping("/userSign")
|
|
public String userSign(@ModelAttribute("userVO") UserVO userVO, Model model) throws Exception {
|
|
try {
|
|
String resultMsg = null;
|
|
if(userVO.getAuth() == 2) {
|
|
userService.updateUserSign(userVO.getUserid());
|
|
resultMsg = "승인 처리 되었습니다.";
|
|
}else {
|
|
userService.updateUserDelete(userVO.getUserid());
|
|
resultMsg = "삭제 처리 되었습니다.";
|
|
}
|
|
|
|
model.addAttribute("url", "/admin/userInfo?auth=99");
|
|
model.addAttribute("resultMsg", resultMsg);
|
|
return "/redirect";
|
|
} catch (Exception e) {
|
|
// TODO: handle exception
|
|
e.printStackTrace();
|
|
return "error/EgovServerError";
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 현장수집데이터 목록을 반환한다.
|
|
*
|
|
* @param fieldDataSearchVO 현장수집데이터 검색 VO
|
|
* @param model 모델 객체
|
|
* @return 현장수집데이터 목록 화면
|
|
* @throws
|
|
*/
|
|
@RequestMapping("/fieldData")
|
|
public String fieldData(@ModelAttribute("FieldDataSearchVO") FieldDataSearchVO fieldDataSearchVO, Model model) throws Exception {
|
|
try {
|
|
fieldDataSearchVO.setPageUnit(propertiesService.getInt("pageUnit"));
|
|
fieldDataSearchVO.setPageSize(propertiesService.getInt("pageSize"));
|
|
|
|
PaginationInfo paginationInfo = new PaginationInfo();
|
|
paginationInfo.setCurrentPageNo(fieldDataSearchVO.getPageIndex());
|
|
paginationInfo.setRecordCountPerPage(fieldDataSearchVO.getPageUnit());
|
|
paginationInfo.setPageSize(fieldDataSearchVO.getPageSize());
|
|
|
|
fieldDataSearchVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
|
fieldDataSearchVO.setLastIndex(paginationInfo.getLastRecordIndex());
|
|
fieldDataSearchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
|
|
|
List<?> fieldDataList = fieldDataService.selectFieldDataList(fieldDataSearchVO);
|
|
int count = fieldDataService.selectFieldDataCnt(fieldDataSearchVO);
|
|
|
|
|
|
paginationInfo.setTotalRecordCount(count);
|
|
|
|
model.addAttribute("fieldDataList", fieldDataList);
|
|
model.addAttribute("paginationInfo", paginationInfo);
|
|
model.addAttribute("fieldDataSearchVO", fieldDataSearchVO);
|
|
model.addAttribute("count", count);
|
|
|
|
return "admin/fieldData";
|
|
} catch (Exception e) {
|
|
// TODO: handle exception
|
|
e.printStackTrace();
|
|
return "error/EgovServerError";
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 현장수집데이터 상세화면을 반환한다.
|
|
*
|
|
* @param id 현장수집데이터 id
|
|
* @param model 모델 객체
|
|
* @return 현장수집데이터 상세 화면
|
|
* @throws
|
|
*/
|
|
@RequestMapping("/fieldData/{id}")
|
|
public String fieldData(@PathVariable String id, Model model) throws Exception {
|
|
try {
|
|
FieldDataVO fieldDataVO = fieldDataService.selectFieldData(id);
|
|
UserVO userVO = userService.selectUserInfo(fieldDataVO.getUserid());
|
|
|
|
model.addAttribute("fieldDataVO", fieldDataVO);
|
|
model.addAttribute("userVO", userVO);
|
|
return "admin/html/fieldView";
|
|
} catch (Exception e) {
|
|
// TODO: handle exception
|
|
e.printStackTrace();
|
|
return "error/EgovServerError";
|
|
}
|
|
}
|
|
}
|