package kr.wisestone.owl.web.condition; import com.google.common.collect.Lists; import kr.wisestone.owl.util.*; import kr.wisestone.owl.vo.PageVo; import org.springframework.data.domain.Pageable; import org.springframework.util.StringUtils; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; /** * Created by wisestone on 2018-01-04. */ public class IssueCondition { private Long id; private String keyWord; private String title; private String description; private String combinationIssueNumber; private String projectKey; private String issueNumber; private String beginRegisterDate; private String endRegisterDate; private String beginStartDate; private String endStartDate; private String beginCompleteDate; private String endCompleteDate; private String beginDateRange; private String endDateRange; private Integer page; private Integer pageSize; private Long loginUserId; private Long workspaceId; private String projectType; private String deep; private String isApi; private Long parentIssueId; // 상위 일감 private String useValue; private List projectIds = Lists.newArrayList(); private List issueStatusIds = Lists.newArrayList(); private List issueTypeIds = Lists.newArrayList(); private List priorityIds = Lists.newArrayList(); private List severityIds = Lists.newArrayList(); private List userIds = Lists.newArrayList(); private List departmentIds = Lists.newArrayList(); private List registerIds = Lists.newArrayList(); private List issueIds = Lists.newArrayList(); // 이슈 목록 검색에서 사용자 정의 필드로 1차 검색한 결과를 담을때 사용 private List> issueCustomFields = Lists.newArrayList(); private List> issueCompanyField = Lists.newArrayList(); private List> issueIspField = Lists.newArrayList(); private List> issueHostingField = Lists.newArrayList(); private List statusIds = Lists.newArrayList(); private List excludeIds = Lists.newArrayList(); private List myDepartmentIds; // 내가 속해있는 부서 ID private Boolean hideDownIssue; private Boolean hideCompleteIssue; private Boolean isTree; // 트리구조 모드 일때 private Pageable relPageable; private Pageable downPageable; private Boolean allIssue; // 완료된 이슈까지 보여줄지 여부 private Long issueTypeId; private Boolean parentYN; //상위이슈만 조회 여부 public IssueCondition(){} public IssueCondition(Long issueId, Long parentIssueId){ this.id = issueId; this.parentIssueId = parentIssueId; } // 대시보드 위기관리 위젯에서 사용 public IssueCondition(List issueIds){ this.issueIds = issueIds; } public static IssueCondition make(Map conditions) { IssueCondition condition = ConvertUtil.convertMapToClass(conditions, IssueCondition.class); Map pageContents = (Map) conditions.get("pageContent"); if (pageContents != null) { PageVo downPageVo = new PageVo(); downPageVo.setPage(MapUtil.getInteger(pageContents, "downPage")); downPageVo.setPageSize(MapUtil.getInteger(pageContents, "downPageSize")); PageVo relPageVo = new PageVo(); relPageVo.setPage(MapUtil.getInteger(pageContents, "relPage")); relPageVo.setPageSize(MapUtil.getInteger(pageContents, "relPageSize")); PageUtil pageUtil = new PageUtil(); condition.setRelPageable(pageUtil.convertPageable(relPageVo)); condition.setDownPageable(pageUtil.convertPageable(downPageVo)); } if (!StringUtils.isEmpty(condition.getCombinationIssueNumber())) { if (condition.getCombinationIssueNumber().contains("-")) { String [] combinations = condition.getCombinationIssueNumber().split("-"); if (combinations.length > 0) { condition.setProjectKey(combinations[0].trim()); if (combinations.length > 1) { condition.setIssueNumber(combinations[1].trim()); } } } else { if (CommonUtil.isNumeric(condition.getCombinationIssueNumber())) { condition.setIssueNumber(condition.getCombinationIssueNumber()); } else { condition.setProjectKey(condition.getCombinationIssueNumber()); } } } if (MapUtil.getString(conditions, "name") != null) { condition.setTitle(MapUtil.getString(conditions, "name")); } if (MapUtil.getObject(conditions, "issueCustomFields") != null) { condition.setIssueCustomFields((List)MapUtil.getObject(conditions, "issueCustomFields")); } if (MapUtil.getObject(conditions, "issueCompanyField") != null) { condition.setIssueCompanyField((List)MapUtil.getObject(conditions, "issueCompanyField")); } if (MapUtil.getObject(conditions, "issueIspField") != null) { condition.setIssueIspField((List)MapUtil.getObject(conditions, "issueIspField")); } if (MapUtil.getObject(conditions, "issueHostingField") != null) { condition.setIssueHostingField((List)MapUtil.getObject(conditions, "issueHostingField")); } if (StringUtils.hasText(MapUtil.getString(conditions, "beginRegisterDate"))) { Date beginRegisterDate = DateUtil.convertStrToDate(MapUtil.getString(conditions, "beginRegisterDate"), "yy-MM-dd"); condition.setBeginRegisterDate(DateUtil.convertDateToStr(beginRegisterDate, "yyyy-MM-dd")); } if (StringUtils.hasText(MapUtil.getString(conditions, "endRegisterDate"))) { Date endRegisterDate = DateUtil.addDays(DateUtil.convertStrToDate(MapUtil.getString(conditions, "endRegisterDate"), "yy-MM-dd"), 1); condition.setEndRegisterDate(DateUtil.convertDateToStr(endRegisterDate, "yyyy-MM-dd")); } if (StringUtils.hasText(MapUtil.getString(conditions, "beginStartDate"))) { Date beginStartDate = DateUtil.convertStrToDate(MapUtil.getString(conditions, "beginStartDate"), "yy-MM-dd"); condition.setBeginStartDate(DateUtil.convertDateToStr(beginStartDate, "yyyy-MM-dd")); } if (StringUtils.hasText(MapUtil.getString(conditions, "endStartDate"))) { Date endStartDate = DateUtil.convertStrToDate(MapUtil.getString(conditions, "endStartDate"), "yy-MM-dd"); condition.setEndStartDate(DateUtil.convertDateToStr(endStartDate, "yyyy-MM-dd")); } if (StringUtils.hasText(MapUtil.getString(conditions, "beginCompleteDate"))) { Date beginCompleteDate = DateUtil.convertStrToDate(MapUtil.getString(conditions, "beginCompleteDate"), "yy-MM-dd"); condition.setBeginCompleteDate(DateUtil.convertDateToStr(beginCompleteDate, "yyyy-MM-dd")); } if (StringUtils.hasText(MapUtil.getString(conditions, "endCompleteDate"))) { Date endCompleteDate = DateUtil.convertStrToDate(MapUtil.getString(conditions, "endCompleteDate"), "yy-MM-dd"); condition.setEndCompleteDate(DateUtil.convertDateToStr(endCompleteDate, "yyyy-MM-dd")); } if (StringUtils.hasText(MapUtil.getString(conditions, "dateRange"))) { String dateRange = MapUtil.getString(conditions, "dateRange"); if (!StringUtils.isEmpty(dateRange)) { List date = Arrays.asList(dateRange.split("~")); Date beginDateRange = DateUtil.convertStrToDate(date.get(0).trim(), "yy-MM-dd"); condition.setBeginDateRange(DateUtil.convertDateToStr(beginDateRange, "yyyy-MM-dd")); Date endDateRange = DateUtil.convertStrToDate(date.get(1).trim(), "yy-MM-dd"); condition.setEndDateRange(DateUtil.convertDateToStr(endDateRange, "yyyy-MM-dd")); } } if (MapUtil.getLongs(conditions, "projectIds") != null) { condition.setProjectIds(MapUtil.getLongs(conditions, "projectIds")); } if (MapUtil.getLongs(conditions, "issueStatusIds") != null) { condition.setIssueStatusIds(MapUtil.getLongs(conditions, "issueStatusIds")); } if (MapUtil.getLongs(conditions, "issueTypeIds") != null) { condition.setIssueTypeIds(MapUtil.getLongs(conditions, "issueTypeIds")); } if (MapUtil.getLong(conditions, "issueTypeId") != null) { condition.setIssueTypeId(MapUtil.getLong(conditions, "issueTypeId")); } if (MapUtil.getLongs(conditions, "priorityIds") != null) { condition.setPriorityIds(MapUtil.getLongs(conditions, "priorityIds")); } if (MapUtil.getLongs(conditions, "severityIds") != null) { condition.setSeverityIds(MapUtil.getLongs(conditions, "severityIds")); } if (MapUtil.getLongs(conditions, "userIds") != null) { condition.setUserIds(MapUtil.getLongs(conditions, "userIds")); } if (MapUtil.getLongs(conditions, "departmentIds") != null) { condition.setDepartmentIds(MapUtil.getLongs(conditions, "departmentIds")); } if (MapUtil.getLongs(conditions, "registerIds") != null) { condition.setRegisterIds(MapUtil.getLongs(conditions, "registerIds")); } if (MapUtil.getLongs(conditions, "excludeIds") != null) { condition.setExcludeIds(MapUtil.getLongs(conditions, "excludeIds")); } if (MapUtil.getLong(conditions, "issueId") != null) { condition.setId(MapUtil.getLong(conditions, "issueId")); } if (MapUtil.getInteger(conditions, "hideDownIssue") != null) { int hideDownIssue = MapUtil.getInteger(conditions, "hideDownIssue"); if(MapUtil.getBoolean(conditions, "isTree") != null && !MapUtil.getBoolean(conditions, "isTree")){ switch (hideDownIssue){ case 0 : // 이슈 모두 보여주기 condition.setHideDownIssue(false); condition.setParentYN(true); break; case 1 : // 상위이슈만 보여주기 condition.setHideDownIssue(true); condition.setParentYN(true); break; case 2 : // 하위이슈만 보여주기 condition.setHideDownIssue(false); condition.setParentYN(false); break; } }else if(MapUtil.getBoolean(conditions, "isTree")) { condition.setHideDownIssue(false); } } if (MapUtil.getBoolean(conditions, "hideCompleteIssue") != null) { condition.setHideCompleteIssue(MapUtil.getBoolean(conditions, "hideCompleteIssue")); } if (MapUtil.getBoolean(conditions, "isTree") != null) { condition.setTree(MapUtil.getBoolean(conditions, "isTree")); } else { condition.setTree(false); } if (MapUtil.getBoolean(conditions, "parentYN") != null && MapUtil.getBoolean(conditions, "parentYN")) { condition.setParentYN(true); } return condition; } public String getKeyWord() { return keyWord; } public void setKeyWord(String keyWord) { this.keyWord = keyWord; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getCombinationIssueNumber() { return combinationIssueNumber; } public void setCombinationIssueNumber(String combinationIssueNumber) { this.combinationIssueNumber = combinationIssueNumber; } public String getProjectKey() { return projectKey; } public void setProjectKey(String projectKey) { this.projectKey = projectKey; } public String getIssueNumber() { return issueNumber; } public void setIssueNumber(String issueNumber) { this.issueNumber = issueNumber; } public String getBeginStartDate() { return beginStartDate; } public void setBeginStartDate(String beginStartDate) { this.beginStartDate = beginStartDate; } public String getEndStartDate() { return endStartDate; } public void setEndStartDate(String endStartDate) { this.endStartDate = endStartDate; } public String getBeginCompleteDate() { return beginCompleteDate; } public void setBeginCompleteDate(String beginCompleteDate) { this.beginCompleteDate = beginCompleteDate; } public String getEndCompleteDate() { return endCompleteDate; } public void setEndCompleteDate(String endCompleteDate) { this.endCompleteDate = endCompleteDate; } public String getBeginDateRange() { return beginDateRange; } public void setBeginDateRange(String beginDateRange) { this.beginDateRange = beginDateRange; } public String getEndDateRange() { return endDateRange; } public void setEndDateRange(String endDateRange) { this.endDateRange = endDateRange; } public Integer getPage() { return page; } public void setPage(Integer page) { this.page = page; } public Integer getPageSize() { return pageSize; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public Long getLoginUserId() { return loginUserId; } public void setLoginUserId(Long loginUserId) { this.loginUserId = loginUserId; } public String getDeep() { return deep; } public void setDeep(String deep) { this.deep = deep; } public String getIsApi() { return isApi; } public void setIsApi(String isApi) { this.isApi = isApi; } public List getProjectIds() { return projectIds; } public void addProjectIds(Long projectId) { this.projectIds.add(projectId); } public void setProjectIds(List projectIds) { this.projectIds = projectIds; } public List getIssueStatusIds() { return issueStatusIds; } public void setIssueStatusIds(List issueStatusIds) { this.issueStatusIds = issueStatusIds; } public List getIssueTypeIds() { return issueTypeIds; } public void setIssueTypeIds(List issueTypeIds) { this.issueTypeIds = issueTypeIds; } public void addIssueTypeIds(Long issueTypeId) { this.issueTypeIds.add(issueTypeId); } public List getPriorityIds() { return priorityIds; } public void setPriorityIds(List priorityIds) { this.priorityIds = priorityIds; } public List getSeverityIds() { return severityIds; } public void setSeverityIds(List severityIds) { this.severityIds = severityIds; } public List getUserIds() { return userIds; } public void setUserIds(List userIds) { this.userIds = userIds; } public List getDepartmentIds() { return departmentIds; } public void setDepartmentIds(List departmentIds) { this.departmentIds = departmentIds; } public List getRegisterIds() { return registerIds; } public void setRegisterIds(List registerIds) { this.registerIds = registerIds; } public Long getWorkspaceId() { return workspaceId; } public void setWorkspaceId(Long workspaceId) { this.workspaceId = workspaceId; } public List> getIssueCustomFields() { return issueCustomFields; } public void setIssueCustomFields(List> issueCustomFields) { this.issueCustomFields = issueCustomFields; } public List> getIssueCompanyField() { return issueCompanyField; } public void setIssueCompanyField(List> issueCompanyField) { this.issueCompanyField = issueCompanyField; } public List> getIssueIspField() { return issueIspField; } public void setIssueIspField(List> issueIspField) { this.issueIspField = issueIspField; } public List> getIssueHostingField() { return issueHostingField; } public void setIssueHostingField(List> issueHostingField) { this.issueHostingField = issueHostingField; } public List getIssueIds() { return issueIds; } public void setIssueIds(List issueIds) { this.issueIds = issueIds; } public void addIssueIds(String issueId) { this.issueIds.add(issueId); } public String getBeginRegisterDate() { return beginRegisterDate; } public void setBeginRegisterDate(String beginRegisterDate) { this.beginRegisterDate = beginRegisterDate; } public String getEndRegisterDate() { return endRegisterDate; } public void setEndRegisterDate(String endRegisterDate) { this.endRegisterDate = endRegisterDate; } public String getProjectType() { return projectType; } public void setProjectType(String projectType) { this.projectType = projectType; } public void addStatusId(Long statusId) { this.statusIds.add(statusId); } public List getStatusIds() { return statusIds; } public List getExcludeIds() { return excludeIds; } public void setExcludeIds(List excludeIds) { this.excludeIds = excludeIds; } public Long getParentIssueId() { return parentIssueId; } public void setParentIssueId(Long parentIssueId) { this.parentIssueId = parentIssueId; } public String getUseValue() { return useValue; } public void setUseValue(String useValue) { this.useValue = useValue; } public List getMyDepartmentIds() { return myDepartmentIds; } public void setMyDepartmentIds(List myDepartmentIds) { this.myDepartmentIds = myDepartmentIds; } public Boolean getHideDownIssue() { return hideDownIssue; } public void setHideDownIssue(Boolean hideDownIssue) { this.hideDownIssue = hideDownIssue; } public Boolean getHideCompleteIssue() { return hideCompleteIssue; } public void setHideCompleteIssue(Boolean hideCompleteIssue) { this.hideCompleteIssue = hideCompleteIssue; } public Boolean getTree() { return isTree; } public void setTree(Boolean tree) { isTree = tree; } public Pageable getRelPageable() { return relPageable; } public void setRelPageable(Pageable relPageable) { this.relPageable = relPageable; } public Pageable getDownPageable() { return downPageable; } public void setDownPageable(Pageable downPageable) { this.downPageable = downPageable; } public Boolean getAllIssue() { return allIssue; } public void setAllIssue(Boolean allIssue) { this.allIssue = allIssue; } public Long getIssueTypeId() { return issueTypeId; } public void setIssueTypeId(Long issueTypeId) { this.issueTypeId = issueTypeId; } public Boolean getParentYN() { return parentYN; } public void setParentYN(Boolean parentYN) { this.parentYN = parentYN; } }