/*
* @author Dongmin.lee
* @since 2022-11-09
* @version 22.11.09
* @see
* Copyright (C) 2007 by 313 DEV GRP, Inc - All Rights Reserved
* Unauthorized copying of this file, via any medium is strictly prohibited
* Proprietary and confidential
* Written by 313 developer group <313@313.co.kr>, December 2010
*
*/
package egovframework.api.arms.module_reqadd.controller;
import com.atlassian.jira.rest.client.api.JiraRestClient;
import com.atlassian.jira.rest.client.api.domain.*;
import com.atlassian.jira.rest.client.api.domain.input.IssueInput;
import com.atlassian.jira.rest.client.api.domain.input.IssueInputBuilder;
import com.atlassian.util.concurrent.Promise;
import egovframework.api.arms.module_armsscheduler.component.ArmsSchedulerUtil;
import egovframework.api.arms.module_filerepository.service.FileRepository;
import egovframework.api.arms.module_filerepositorylog.model.FileRepositoryLogDTO;
import egovframework.api.arms.module_filerepositorylog.service.FileRepositoryLog;
import egovframework.api.arms.module_pdservice.model.PdServiceDTO;
import egovframework.api.arms.module_pdservice.service.PdService;
import egovframework.api.arms.module_pdserviceconnect.model.PdServiceConnectDTO;
import egovframework.api.arms.module_pdserviceconnect.service.PdServiceConnect;
import egovframework.api.arms.module_pdserviceconnectlog.service.PdServiceConnectLog;
import egovframework.api.arms.module_pdservicejira.model.PdServiceJiraDTO;
import egovframework.api.arms.module_pdservicejira.service.PdServiceJira;
import egovframework.api.arms.module_pdservicejiralog.service.PdServiceJiraLog;
import egovframework.api.arms.module_pdservicejiraver.model.PdServiceJiraVerDTO;
import egovframework.api.arms.module_pdservicelog.service.PdServiceLog;
import egovframework.api.arms.module_pdserviceversion.model.PdServiceVersionDTO;
import egovframework.api.arms.module_pdserviceversion.service.PdServiceVersion;
import egovframework.api.arms.module_pdserviceversionlog.service.PdServiceVersionLog;
import egovframework.api.arms.module_reqadd.model.ReqAddDTO;
import egovframework.api.arms.module_reqadd.service.ReqAdd;
import egovframework.api.arms.module_reqaddlog.model.ReqAddLogDTO;
import egovframework.api.arms.module_reqaddlog.service.ReqAddLog;
import egovframework.api.arms.module_reqstatus.model.ReqStatusDTO;
import egovframework.api.arms.module_reqstatus.service.ReqStatus;
import egovframework.api.arms.util.FileHandler;
import egovframework.api.arms.util.PropertiesReader;
import egovframework.api.arms.util.StringUtility;
import egovframework.com.ext.jstree.springHibernate.core.controller.SHVAbstractController;
import egovframework.com.ext.jstree.springHibernate.core.interceptor.SessionUtil;
import egovframework.com.ext.jstree.springHibernate.core.validation.group.AddNode;
import egovframework.com.ext.jstree.springHibernate.core.validation.group.MoveNode;
import egovframework.com.ext.jstree.springHibernate.core.validation.group.UpdateNode;
import egovframework.com.ext.jstree.springHibernate.core.vo.JsTreeHibernateLogDTO;
import egovframework.com.ext.jstree.support.util.ParameterParser;
import egovframework.com.ext.jstree.support.util.StringUtils;
import egovframework.com.utl.fcc.service.EgovFormBasedFileVo;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.joda.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import java.net.URI;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@Controller
@RequestMapping(value = {"/auth-user/api/arms/reqAdd"})
public class UserReqAddController extends SHVAbstractController {
@Autowired
@Qualifier("reqAdd")
private ReqAdd reqAdd;
@Autowired
@Qualifier("fileRepository")
private FileRepository fileRepository;
@PostConstruct
public void initialize() {
setJsTreeHibernateService(reqAdd);
}
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@ResponseBody
@RequestMapping(
value = {"/{changeReqTableName}/getMonitor.do"},
method = {RequestMethod.GET}
)
public ModelAndView getMonitor(
@PathVariable(value ="changeReqTableName") String changeReqTableName,
ReqAddDTO reqAddDTO, ModelMap model, HttpServletRequest request) throws Exception {
SessionUtil.setAttribute("getMonitor",changeReqTableName);
reqAddDTO.setOrder(Order.asc("c_left"));
List list = this.reqAdd.getChildNode(reqAddDTO);
SessionUtil.removeAttribute("getMonitor");
ModelAndView modelAndView = new ModelAndView("jsonView");
modelAndView.addObject("result", list);
return modelAndView;
}
@ResponseBody
@RequestMapping(
value = {"/{changeReqTableName}/getNode.do"},
method = {RequestMethod.GET}
)
public ModelAndView getSwitchDBNode(
@PathVariable(value ="changeReqTableName") String changeReqTableName
,V reqAddDTO, HttpServletRequest request) throws Exception {
ParameterParser parser = new ParameterParser(request);
if (parser.getInt("c_id") <= 0) {
throw new RuntimeException();
} else {
SessionUtil.setAttribute("getNode",changeReqTableName);
V returnVO = reqAdd.getNode(reqAddDTO);
if(StringUtils.isNotEmpty(returnVO.getC_version_link())) {
String replaceTxt = returnVO.getC_version_link().replaceAll("\\[", "").replaceAll("\\]", "");
replaceTxt = replaceTxt.replaceAll("\"", "");
returnVO.setC_version_link(replaceTxt);
}
SessionUtil.removeAttribute("getNode");
ModelAndView modelAndView = new ModelAndView("jsonView");
modelAndView.addObject("result", returnVO);
return modelAndView;
}
}
@ResponseBody
@RequestMapping(
value = {"/{changeReqTableName}/getChildNode.do"},
method = {RequestMethod.GET}
)
public ModelAndView
getSwitchDBChildNode(@PathVariable(value ="changeReqTableName") String changeReqTableName,
ReqAddDTO reqAddDTO, HttpServletRequest request) throws Exception {
ParameterParser parser = new ParameterParser(request);
if (parser.getInt("c_id") <= 0) {
throw new RuntimeException();
} else {
SessionUtil.setAttribute("getChildNode",changeReqTableName);
reqAddDTO.setWhere("c_parentid", new Long(parser.get("c_id")));
List list = reqAdd.getChildNode(reqAddDTO);
SessionUtil.removeAttribute("getChildNode");
ModelAndView modelAndView = new ModelAndView("jsonView");
modelAndView.addObject("result", list);
return modelAndView;
}
}
@ResponseBody
@RequestMapping(
value = {"/{changeReqTableName}/getChildNodeWithParent.do"},
method = {RequestMethod.GET}
)
public ModelAndView
getSwitchDBChildNodeWithParent(@PathVariable(value ="changeReqTableName") String changeReqTableName,
ReqAddDTO reqAddDTO, HttpServletRequest request) throws Exception {
ParameterParser parser = new ParameterParser(request);
if (parser.getInt("c_id") <= 0) {
throw new RuntimeException();
} else {
SessionUtil.setAttribute("getChildNodeWithParent",changeReqTableName);
//쿼리
Criterion criterion1 = Restrictions.ge("c_left", reqAddDTO.getC_left());
Criterion criterion2 = Restrictions.and(Restrictions.le("c_right", reqAddDTO.getC_right()));
reqAddDTO.getCriterions().add(criterion1);
reqAddDTO.getCriterions().add(criterion2);
reqAddDTO.setOrder(Order.asc("c_left"));
reqAddDTO.setC_id(null);
List list = reqAdd.getChildNode(reqAddDTO);
SessionUtil.removeAttribute("getChildNodeWithParent");
ModelAndView modelAndView = new ModelAndView("jsonView");
modelAndView.addObject("result", list);
return modelAndView;
}
}
@Autowired
@Qualifier("pdServiceConnect")
private PdServiceConnect pdServiceConnect;
@Autowired
@Qualifier("reqStatus")
private ReqStatus reqStatus;
@Autowired
@Qualifier("pdServiceJira")
private PdServiceJira pdServiceJira;
@Autowired
@Qualifier("pdService")
private PdService pdService;
@Autowired
@Qualifier("pdServiceVersion")
private PdServiceVersion pdServiceVersion;
@ResponseBody
@RequestMapping(
value = {"/{changeReqTableName}/addNode.do"},
method = {RequestMethod.POST}
)
public ModelAndView addSwitchDBNode(
@PathVariable(value ="changeReqTableName") String changeReqTableName,
@Validated({AddNode.class}) ReqAddDTO reqAddDTO,
BindingResult bindingResult, ModelMap model) throws Exception {
if (bindingResult.hasErrors()) {
throw new RuntimeException();
} else {
SessionUtil.setAttribute("addNode",changeReqTableName);
ReqAddDTO returnNode = reqAdd.addNode(reqAddDTO);
SessionUtil.removeAttribute("addNode");
Long pdServiceInfo = returnNode.getC_pdservice_link();
String versionInfo = returnNode.getC_version_link(); // 버전 정보
String[] versionInfoArr = jsonStringifyConvert(versionInfo);
String jiraInfo = returnNode.getC_jira_link(); //버전 정보가 있으면, JIRA 링크는 무조건 inherit 이다.
String jiraVerInfo = returnNode.getC_jira_ver_link(); // 버전 정보가 없다면, 개별 처리이다.
List updateReqStatusIDs = new ArrayList<>(); //최종 C_ISSUE_LINK 업데이트 목적
List updateJiraVerIDs = new ArrayList<>(); //최종 C_JIRA_VER_LINK 업데이트 목적
if(versionInfoArr.length == 0){
//버전 정보가 없다는 뜻. -> 개별 처리를 하겠다는 뜻.
returnNode.setC_version_link("[]");
returnNode.setC_jira_link("independent");
SessionUtil.setAttribute("addNode",changeReqTableName);
reqAdd.updateNode(returnNode);
SessionUtil.removeAttribute("addNode");
}else{
//버전 정보가 있다는 뜻. -> 버전 - JIRA 연결 정보를 기반으로 처리하겠다는 뜻.
PdServiceDTO pdServiceDTO = new PdServiceDTO();
pdServiceDTO.setWhere("c_id", pdServiceInfo);
PdServiceDTO pdServiceDTOInfo = pdService.getNode(pdServiceDTO);
for ( String verStr : versionInfoArr ) {
PdServiceVersionDTO pdServiceVersionDTO = new PdServiceVersionDTO();
pdServiceVersionDTO.setWhere("c_id", StringUtility.toLong(verStr));
PdServiceVersionDTO versionDTO = pdServiceVersion.getNode(pdServiceVersionDTO);
PdServiceConnectDTO pdServiceConnectDTO = new PdServiceConnectDTO();
pdServiceConnectDTO.setWhere("c_pdservice_id", pdServiceInfo.toString());
pdServiceConnectDTO.setWhere("c_pdservice_version_id", verStr);
PdServiceConnectDTO connectInfo = pdServiceConnect.getNode(pdServiceConnectDTO);
//중첩 IF - LOOP
if(connectInfo == null){
//이건 말이 안되지만, 설정 정보가 없어버리면... 어떻게 해야 하지?
//개별 정보로 빼자.
returnNode.setC_jira_link("independent");
SessionUtil.setAttribute("addNode",changeReqTableName);
reqAdd.updateNode(returnNode);
SessionUtil.removeAttribute("addNode");
}else{
String jiraIDs = connectInfo.getC_pdservice_jira_ids();
String[] jiraIDsArr = jsonStringifyConvert(jiraIDs);
//설정된 JIRA ID가 있다면.
for ( String jiraID: jiraIDsArr ) {
PdServiceJiraDTO pdServiceJiraDTO = new PdServiceJiraDTO();
pdServiceJiraDTO.setC_id(StringUtility.toLong(jiraID));
PdServiceJiraDTO jiraDTOInfo = pdServiceJira.getNode(pdServiceJiraDTO);
//pdservice ID 값
//pdservice verstion 값
//pdservice jira 값
PdServiceJiraVerDTO pdServiceJiraVerDTO = new PdServiceJiraVerDTO();
pdServiceJiraVerDTO.setWhere("c_pdservice_id", pdServiceInfo);
pdServiceJiraVerDTO.setWhere("c_pdservice_version_id", StringUtility.toLong(verStr));
pdServiceJiraVerDTO.setWhere("c_pdservice_jira_id",StringUtility.toLong(jiraID));
PdServiceJiraVerDTO jiraVerDTOInfo = pdServiceJira.getNode(pdServiceJiraVerDTO);
if( jiraVerDTOInfo == null ){
//없다는 건.? -
//여기까지 왔다는건. 커넥션 정보는 있지만,
//Jira Project - Jira Version 이 생성되지 않았다는 건데.
//버전 생성 시 바로 resttemplate 로 jira version sync를 맞추기 때문에
//여기로 들어올 수는 없다.
throw new RuntimeException("커넥션 정보는 있지만, JIRA Version 이 생성이 안된 케이스.");
}else{
//있다는건. 매우 정상
ReqStatusDTO reqStatusDTO = new ReqStatusDTO();
reqStatusDTO.setRef(2L);
reqStatusDTO.setC_type("default");
reqStatusDTO.setC_pdservice_link(pdServiceInfo);
reqStatusDTO.setC_pdservice_name(pdServiceDTOInfo.getC_title());
reqStatusDTO.setC_version_link(StringUtility.toLong(verStr));
reqStatusDTO.setC_version_name(versionDTO.getC_title());
reqStatusDTO.setC_jira_project_link(jiraDTOInfo.getC_id());
reqStatusDTO.setC_jira_project_name(jiraDTOInfo.getC_jira_name());
reqStatusDTO.setC_jira_project_key(jiraDTOInfo.getC_jira_key());
reqStatusDTO.setC_jira_project_url(jiraDTOInfo.getC_jira_link());
reqStatusDTO.setC_jira_version_link(jiraVerDTOInfo.getC_id());
reqStatusDTO.setC_jira_version_name(jiraVerDTOInfo.getC_jiraversion_name());
reqStatusDTO.setC_jira_version_url(jiraVerDTOInfo.getC_jiraversion_link());
reqStatusDTO.setC_jira_version_title(jiraVerDTOInfo.getC_title());
//REQADD 의 요구사항 아이디, 타이틀
reqStatusDTO.setC_req_link(returnNode.getC_id().toString());
reqStatusDTO.setC_req_name(returnNode.getC_title());
String changeReqStatusTableName = changeReqTableName;
//T_ARMS_REQADD_145 -> T_ARMS_REQSTATUS_145
changeReqStatusTableName = StringUtility.replace(changeReqStatusTableName,
"T_ARMS_REQADD_", "T_ARMS_REQSTATUS_");
SessionUtil.setAttribute("addNode",changeReqStatusTableName);
ReqStatusDTO statusDTO = reqStatus.addNode(reqStatusDTO);
updateReqStatusIDs.add(statusDTO.getC_id().toString());
updateJiraVerIDs.add(jiraVerDTOInfo.getC_id().toString());
SessionUtil.removeAttribute("addNode");
}
}
}
}
}
String issueLinkResult = updateReqStatusIDs.stream().collect(Collectors.joining(","));
String jiraVerResult = updateJiraVerIDs.stream().collect(Collectors.joining(","));
returnNode.setC_issue_link(issueLinkResult);
returnNode.setC_jira_ver_link(jiraVerResult);
SessionUtil.setAttribute("addNode",changeReqTableName);
reqAdd.updateNode(returnNode);
SessionUtil.removeAttribute("addNode");
// REQADD-STATUS
// 1. 테이블 네임을 T_ARMS_REQADD_145 -> T_ARMS_REQADD_STATUS_145 로 변경하고
// 2. returnNode의 Version Data 가 있으면, 정형적인 케이스니까 처리해 주고
// 3. returnNode의 Version Data 가 없으면, 이건 따로 지정하겠다는 뜻이니까 처리해 주고
// 4. JIRA 연결해서 데이터 셋팅 해 주고 . 끝
// REQADD
// 마지막으로 , REQADD_STATUS에 이슈 추가 했으면,
// REQADD 테이블에 C_ISSUE_LINK 에 ARR String 으로 값 추가해 줄것.
String reqTableName = StringUtility.replace(changeReqTableName,
"T_ARMS_REQADD_", "T_ARMS_REQSTATUS_");
PropertiesReader propertiesReader = new PropertiesReader("egovframework/egovProps/globals.properties");
String armsUrl = "http://127.0.0.1:13131";
String targetUrl = "/callback/api/arms/reqStatus/" + reqTableName + "/updateStatusNode.do";
RestTemplate restTemplate = new RestTemplate();
ResponseEntity response = restTemplate.getForEntity(armsUrl + targetUrl, String.class);
logger.info("response = " + response);
ModelAndView modelAndView = new ModelAndView("jsonView");
modelAndView.addObject("result", returnNode);
return modelAndView;
}
}
public String[] jsonStringifyConvert(String versionInfo) {
versionInfo = StringUtils.remove(versionInfo, "\"");
versionInfo = StringUtils.remove(versionInfo, "]");
versionInfo = StringUtils.remove(versionInfo, "[");
return StringUtils.split(versionInfo, ",");
}
@ResponseBody
@RequestMapping({"/{changeReqTableName}/updateNode.do"})
public ModelAndView updateNode(
@PathVariable(value ="changeReqTableName") String changeReqTableName,
@Validated({UpdateNode.class}) ReqAddDTO reqAddDTO,
BindingResult bindingResult, HttpServletRequest request, ModelMap model) throws Exception {
if (bindingResult.hasErrors()) {
throw new RuntimeException();
} else {
SessionUtil.setAttribute("updateNode",changeReqTableName);
ModelAndView modelAndView = new ModelAndView("jsonView");
modelAndView.addObject("result", reqAdd.updateNode(reqAddDTO));
SessionUtil.removeAttribute("updateNode");
// ReqStatusDTO checkReqStatusDTO = new ReqStatusDTO();
// checkReqStatusDTO.setWhere("c_pdservice_link", StringUtility.toLong(changeReqTableName));
// checkReqStatusDTO.setWhere("c_version_link", "independent");
// checkReqStatusDTO.setWhere("c_jira_link", returnNode.getC_jira_link());
// checkReqStatusDTO.setWhere("c_req_link", returnNode.getC_id().toString());
// ReqStatusDTO checkReturn = reqStatus.getNode(checkReqStatusDTO);
//
// if(checkReturn == null){
// //db에 없으니까.
// }else{
// //db에 있다고????
// }
return modelAndView;
}
}
@ResponseBody
@RequestMapping(
value = {"/{changeReqTableName}/moveNode.do"},
method = {RequestMethod.POST}
)
public ModelAndView moveSwitchDBNode(
@PathVariable(value ="changeReqTableName") String changeReqTableName,
@Validated({MoveNode.class}) ReqAddDTO reqAddDTO,
BindingResult bindingResult, ModelMap model, HttpServletRequest request) throws Exception {
if (bindingResult.hasErrors()) {
throw new RuntimeException();
} else {
SessionUtil.setAttribute("moveNode",changeReqTableName);
this.reqAdd.moveNode(reqAddDTO, request);
super.setJsonDefaultSetting(reqAddDTO);
SessionUtil.removeAttribute("moveNode");
ModelAndView modelAndView = new ModelAndView("jsonView");
modelAndView.addObject("result", reqAddDTO);
return modelAndView;
}
}
/**
* 이미지 Upload를 처리한다.
*
* @param multiRequest
* @param model
* @return
* @throws Exception
*/
@ResponseBody
@RequestMapping(value="/uploadFileToNode.do")
public ModelAndView uploadFileToNode(final MultipartHttpServletRequest multiRequest,
HttpServletRequest request, Model model) throws Exception {
ParameterParser parser = new ParameterParser(request);
long fileIdLink = parser.getLong("fileIdLink");
String c_title = parser.get("c_title");
HashMap> map = FileHandler.upload(multiRequest, fileIdLink, c_title, fileRepository, logger);
ModelAndView modelAndView = new ModelAndView("jsonView");
modelAndView.addObject("result", map);
return modelAndView;
}
@Autowired
@Qualifier("fileRepositoryLog")
private FileRepositoryLog fileRepositoryLog;
@Autowired
@Qualifier("pdServiceConnectLog")
private PdServiceConnectLog pdServiceConnectLog;
@Autowired
@Qualifier("pdServiceJiraLog")
private PdServiceJiraLog pdServiceJiraLog;
@Autowired
@Qualifier("pdServiceVersionLog")
private PdServiceVersionLog pdServiceVersionLog;
@Autowired
@Qualifier("pdServiceLog")
private PdServiceLog pdServiceLog;
@Autowired
@Qualifier("reqAddLog")
private ReqAddLog reqAddLog;
@ResponseBody
@RequestMapping(
value = {"/{changeReqTableName}/getHistory.do"},
method = {RequestMethod.GET}
)
public ModelAndView getHistory(
@PathVariable(value ="changeReqTableName") String changeReqTableName,
ModelMap model, HttpServletRequest request) throws Exception {
ParameterParser parser = new ParameterParser(request);
// 문자열
String startDateStr = parser.get("startDate");
// 포맷터
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
// 문자열 -> Date
Date startDate = formatter.parse(startDateStr);
Timestamp startTimestamp = new Timestamp(startDate.getTime());
// 문자열
String endDateStr = parser.get("endDate");
// 문자열 -> Date
Date endDate = formatter.parse(endDateStr);
Timestamp endTimestamp = new Timestamp(endDate.getTime());
Criterion criterion = Restrictions.not(
// replace "id" below with property name, depending on what you're filtering against
Restrictions.in("c_id", new Object[] {1L, 2L})
);
FileRepositoryLogDTO fileRepositoryLogDTO = new FileRepositoryLogDTO();
fileRepositoryLogDTO.setWhereBetween("c_date", startDate, endDate);
//fileRepositoryLogDTO.setOrder(Order.desc("c_date"));
fileRepositoryLogDTO.setWhere("c_title", changeReqTableName);
//fileRepositoryLogDTO.setWhere("fileIdLink", parser.getLong("fileIdLink"));
fileRepositoryLogDTO.getCriterions().add(criterion);
List fileRepositoryLogList = fileRepositoryLog.getChildNode(fileRepositoryLogDTO);
// PdServiceConnectLogDTO pdServiceConnectLogDTO = new PdServiceConnectLogDTO();
// pdServiceConnectLogDTO.setWhereBetween("c_date", startTimestamp, endTimestamp);
// pdServiceConnectLogDTO.setOrder(Order.asc("c_left"));
// pdServiceConnectLogDTO.setWhere("c_pdservice_id", parser.get("c_id"));
// pdServiceConnectLogDTO.getCriterions().add(criterion);
// List pdServiceConnectLogDTOList = this.pdServiceConnectLog.getChildNode(pdServiceConnectLogDTO);
//
// PdServiceVersionLogDTO pdServiceVersionLogDTO = new PdServiceVersionLogDTO();
// pdServiceVersionLogDTO.setWhereBetween("c_date", startTimestamp, endTimestamp);
// pdServiceVersionLogDTO.setOrder(Order.asc("c_left"));
// pdServiceVersionLogDTO.setWhere("c_pdservice_link", parser.get("c_id"));
// pdServiceVersionLogDTO.getCriterions().add(criterion);
// List pdServiceVersionLogDTOList = this.pdServiceVersionLog.getChildNode(pdServiceVersionLogDTO);
//
// PdServiceLogDTO pdServiceLogDTO = new PdServiceLogDTO();
// pdServiceLogDTO.setWhereBetween("c_date", startTimestamp, endTimestamp);
// pdServiceLogDTO.setOrder(Order.asc("c_left"));
// pdServiceLogDTO.setWhere("c_id", parser.getLong("c_id"));
// pdServiceLogDTO.getCriterions().add(criterion);
// List pdServiceLogDTOList = this.pdServiceLog.getChildNode(pdServiceLogDTO);
SessionUtil.setAttribute("getHistory",changeReqTableName);
ReqAddLogDTO reqAddLogDTO = new ReqAddLogDTO();
reqAddLogDTO.setWhereBetween("c_date", startTimestamp, endTimestamp);
//reqAddLogDTO.setOrder(Order.desc("c_date"));
reqAddLogDTO.getCriterions().add(criterion);
List reqAddLogDTOList = this.reqAddLog.getChildNode(reqAddLogDTO);
SessionUtil.removeAttribute("getHistory");
List mergeList = new ArrayList<>();
mergeList.addAll(fileRepositoryLogList);
// mergeList.addAll(pdServiceLogDTOList);
// mergeList.addAll(pdServiceConnectLogDTOList);
// mergeList.addAll(pdServiceVersionLogDTOList);
mergeList.addAll(reqAddLogDTOList);
List ascTD = mergeList.stream() // Sort Order By asc - Comparator의 comparing 사용, ::를 활용한 참조 방식 사용, stream을 활용한 List의 sorted사용 및 collect를 활용한 Collectors.toList() 사용
.sorted(Comparator.comparing(JsTreeHibernateLogDTO::getC_date).reversed())
.collect(Collectors.toList());
ModelAndView modelAndView = new ModelAndView("jsonView");
modelAndView.addObject("result", ascTD);
return modelAndView;
}
}