From e35b0c987bac49abbb77d4b31e41270cc566e54d Mon Sep 17 00:00:00 2001 From: wyu <kknd09321@nate.com> Date: 화, 23 11월 2021 09:03:02 +0900 Subject: [PATCH] 이슈 상세 연관,하위 테이블 표시 설정 - [프론트] --- src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java | 131 ++++++++++++++++++++++++------------------- 1 files changed, 72 insertions(+), 59 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java index 800e2e7..1bb3151 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java @@ -54,6 +54,9 @@ private IssueRepository issueRepository; @Autowired + private IssueTableConfigService issueTableConfigService; + + @Autowired private ProjectService projectService; @Autowired @@ -112,6 +115,9 @@ @Autowired private UserService userService; + + @Autowired + private DepartmentService departmentService; @Autowired private IssueCommentService issueCommentService; @@ -194,6 +200,8 @@ this.verifyTitle(issueForm.getTitle()); // �궇吏� �쑀�슚�꽦 泥댄겕 this.checkStartCompleteDate(issueForm.getStartDate(), issueForm.getCompleteDate()); + // �떞�떦 遺��꽌 �쑀�슚�꽦 泥댄겕 + this.verifyIssueDepartment(project, issueForm); // �씠�뒋 �긽�깭 �쑀�삎�씠 '��湲�' �씤 �씠�뒋 �긽�깭 媛��졇�삤湲� IssueStatus issueStatus = this.issueStatusService.findByIssueStatusTypeIsReady(issueType.getWorkflow()); @@ -428,13 +436,13 @@ List<Map<String, Object>> results = this.issueMapper.find(issueCondition); // �뒠�떇 �쟾 - 0.8, 0.9, 0.9, 0.9, 0.9 - StopWatch serviceStart = new StopWatch(); - serviceStart.start(); + /*StopWatch serviceStart = new StopWatch(); + serviceStart.start();*/ Long totalCount = this.issueMapper.count(issueCondition); // �뒠�떇 �쟾 - 1.1, 1.1, 1.3, 1.2 - serviceStart.stop(); - log.debug("serviceENd1 : " + serviceStart.getTime()); + /*serviceStart.stop(); + log.debug("serviceENd1 : " + serviceStart.getTime());*/ int totalPage = (int) Math.ceil((totalCount - 1) / pageable.getPageSize()) + 1; // �씠�뒋 �븘�씠�뵒 珥덇린�솕 @@ -850,6 +858,19 @@ this.setIssueHistory(issue, issueVo); // �씠�뒋 湲곕줉 �젙蹂� �뀑�똿 this.setRelationIssue(issue, issueVo); //�뿰愿� �씪媛� �뀑�똿 this.setDownIssues(issue, issueVo); + this.setIssueCompanyField(issue, issueVo); //�뾽泥� �젙蹂� �꽭�똿 + this.setIssueIspField(issue, issueVo); //ISP �젙蹂� �꽭�똿 + this.setIssueHostingField(issue, issueVo); //HOSTING �젙蹂� �꽭�똿 + this.setParentIssue(issue,issueVo); //�긽�쐞 �씠�뒋 �젙蹂� �꽭�똿 + + } + + + // �긽�쐞�씪媛� �젙蹂� 異붽� + private void setParentIssue(Issue issue, IssueVo issueVo) { + if(issue.getParentIssue() != null){ + issueVo.setParentIssueVo(ConvertUtil.copyProperties(issue.getParentIssue(), IssueVo.class)); + } } // �벑濡앹옄 �젙蹂� 異붽� @@ -937,7 +958,7 @@ for (IssueDepartment issueDepartment : issue.getIssueDepartments()) { DepartmentVo departmentVo = ConvertUtil.copyProperties(issueDepartment.getDepartment(), DepartmentVo.class); - departmentVo.setByName(departmentVo.getByName()); + departmentVo.setByName(departmentVo.getDepartmentName()); departmentVos.add(departmentVo); } issueVo.setDepartmentVos(departmentVos); @@ -1056,9 +1077,15 @@ if (!StringUtils.isEmpty(detectIssueChange.toString())) { this.issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, detectIssueChange.toString()); } - // �궗�슜�옄 �떆�뒪�뀥 湲곕뒫 �궗�슜 �젙蹂� �닔吏� log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(this.webAppUtil.getLoginUser(), ElasticSearchConstants.ISSUE_MODIFY)); + + // �뾽泥� �젙蹂� ���옣 + this.issueCompanyService.modifyIssueCompanyField(issue, issueForm.getIssueCompanyFields()); + // ISP �젙蹂� ���옣 + this.issueIspService.modifyIssueIspField(issue, issueForm.getIssueIspFields()); + // HOSTING �젙蹂� ���옣 + this.issueHostingService.modifyIssueHostingField(issue, issueForm.getIssueHostingFields()); return issue; } @@ -1133,7 +1160,7 @@ // �뜲�씠�꽣 蹂댁젙 �옉�뾽 - �봽濡쒖젥�듃�뿉�꽌 �젣�쇅�맂 �궗�슜�옄�뒗 �떞�떦�옄�뿉�꽌 �젣�쇅 �맆 �닔 �엳�룄濡� 泥섎━ if (!includeProject) { throw new OwlRuntimeException( - this.messageAccessor.getMessage(MsgConstants.PROJECT_NOT_INCLUDE_USER)); + this.messageAccessor.getMessage(MsgConstants.PROJECT_NOT_INCLUDE_DEPARTMENT)); } } // 李몄뿬 �솗�씤�맂 遺��꽌濡� �떞�떦遺��꽌 蹂�寃� @@ -1298,7 +1325,7 @@ } // �씠�뒋 �떞�떦�옄 蹂�寃� - /*@Override + @Override @Transactional public void modifyIssueUser(IssueForm issueForm) { // �궗�슜�븯怨� �엳�뒗 �뾽臾� 怨듦컙�씠 �솢�꽦 �긽�깭�씤吏� �솗�씤�븳�떎. �궗�슜 怨듦컙�뿉�꽌 濡쒓렇�씤�븳 �궗�슜�옄媛� 鍮꾪솢�꽦�씤吏� �솗�씤�븳�떎. @@ -1331,7 +1358,7 @@ // �궗�슜�옄 �떆�뒪�뀥 湲곕뒫 �궗�슜 �젙蹂� �닔吏� log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(this.webAppUtil.getLoginUser(), ElasticSearchConstants.ISSUE_USER_CHANGE)); - }*/ + } @Override @Transactional @@ -1615,66 +1642,43 @@ } // �뾽泥� �젙蹂� 異붽� - private void setIssueCompanyField(List<IssueVo> issueVos, IssueCondition issueCondition) { - // �씠�뒋�뿉�꽌 ���옣�븳 �뾽泥� 媛믪쓣 議고쉶�븳�떎. - List<Map<String, Object>> issueCompanyFields = this.issueCompanyService.findInIssueIds(issueCondition); + private void setIssueCompanyField(Issue issue, IssueVo issueVo) { + List<IssueCompanyVo> issueCompanyVos = Lists.newArrayList(); - for (IssueVo issueVo : issueVos) { - for (Map<String, Object> issueCompanyField : issueCompanyFields) { - if (issueVo.getId().equals(MapUtil.getLong(issueCompanyField, "issueId"))) { - IssueCompanyVo issueCompanyVo = new IssueCompanyVo(); - issueCompanyVo.setName(MapUtil.getString(issueCompanyField, "companyName")); - issueCompanyVo.setManager(MapUtil.getString(issueCompanyField, "companyManager")); - issueCompanyVo.setTel(MapUtil.getString(issueCompanyField, "companyTel")); - issueCompanyVo.setEmail(MapUtil.getString(issueCompanyField, "companyEmail")); - issueCompanyVo.setMemo(MapUtil.getString(issueCompanyField, "companyMemo")); - - issueVo.addIssueCompanyFieldVo(issueCompanyVo); - } + for(IssueCompany issueCompany : issue.getIssueCompanies()){ + IssueCompanyVo issueCompanyVo = ConvertUtil.copyProperties(issueCompany, IssueCompanyVo.class); + issueCompanyVo.setId(issueCompany.getId()); + CompanyField companyField = issueCompany.getCompanyField(); + if (companyField != null) { + issueCompanyVo.setCompanyId(issueCompany.getCompanyField().getId()); } + issueCompanyVos.add(issueCompanyVo); } + issueVo.setIssueCompanyVos(issueCompanyVos); } // Isp �젙蹂� 異붽� - private void setIssueIspField(List<IssueVo> issueVos, IssueCondition issueCondition) { - // �씠�뒋�뿉�꽌 ���옣�븳 ISP 媛믪쓣 議고쉶�븳�떎. - /*List<Map<String, Object>> issueIspFields = this.issueIspFieldService.findInIssueIds(issueCondition);*/ + private void setIssueIspField(Issue issue, IssueVo issueVo) { + List<IssueIspVo> issueIspVos = Lists.newArrayList(); - /*for (IssueVo issueVo : issueVos) { - for (Map<String, Object> issueIspField : issueIspFields) { - if (issueVo.getId().equals(MapUtil.getLong(issueIspField, "issueId"))) { - IssueIspFieldVo issueIspFieldVo = new IssueIspFieldVo(); - issueIspFieldVo.setName(MapUtil.getString(issueIspField, "name")); - issueIspFieldVo.setManager(MapUtil.getString(issueIspField, "manager")); - issueIspFieldVo.setTel(MapUtil.getString(issueIspField, "tel")); - issueIspFieldVo.setEmail(MapUtil.getString(issueIspField, "email")); - issueIspFieldVo.setMemo(MapUtil.getString(issueIspField, "memo")); - - issueVo.addIssueIspFieldVo(issueIspFieldVo); - } - } - }*/ + for(IssueIsp issueIsp : issue.getIssueIspFields()){ + IssueIspVo issueIspVo = ConvertUtil.copyProperties(issueIsp, IssueIspVo.class); + issueIspVo.setId(issueIsp.getId()); + issueIspVos.add(issueIspVo); + } + issueVo.setIssueIspVos(issueIspVos); } // Hosting �젙蹂� 異붽� - private void setIssueHostingField(List<IssueVo> issueVos, IssueCondition issueCondition) { - // �씠�뒋�뿉�꽌 ���옣�븳 Hosting 媛믪쓣 議고쉶�븳�떎. - List<Map<String, Object>> issueHostingFields = this.issueHostingService.findInIssueIds(issueCondition); + private void setIssueHostingField(Issue issue, IssueVo issueVo) { + List<IssueHostingVo> issueHostingVos = Lists.newArrayList(); - for (IssueVo issueVo : issueVos) { - for (Map<String, Object> issueHostingField : issueHostingFields) { - if (issueVo.getId().equals(MapUtil.getLong(issueHostingField, "issueId"))) { - IssueHostingVo issueHostingVo = new IssueHostingVo(); - issueHostingVo.setName(MapUtil.getString(issueHostingField, "name")); - issueHostingVo.setManager(MapUtil.getString(issueHostingField, "manager")); - issueHostingVo.setTel(MapUtil.getString(issueHostingField, "tel")); - issueHostingVo.setEmail(MapUtil.getString(issueHostingField, "email")); - issueHostingVo.setMemo(MapUtil.getString(issueHostingField, "memo")); - - issueVo.addIssueHostingFieldVo(issueHostingVo); - } - } + for(IssueHosting issueHosting : issue.getIssueHostingFields()){ + IssueHostingVo issueHostingVo = ConvertUtil.copyProperties(issueHosting, IssueHostingVo.class); + issueHostingVo.setId(issueHosting.getId()); + issueHostingVos.add(issueHostingVo); } + issueVo.setIssueHostingVos(issueHostingVos); } // �뿰愿��씪媛� �젙蹂� 異붽� @@ -1818,13 +1822,14 @@ Map<String, Priority> priorityMaps = new HashMap<>(); // �슦�꽑 �닚�쐞 紐⑥쓬 Map<String, Severity> severityMaps = new HashMap<>(); // 以묒슂�룄 紐⑥쓬 Map<String, Object> userMaps = new HashMap<>(); // �궗�슜�옄 紐⑥쓬 + Map<String, Object> departmentMaps = new HashMap<>(); // 遺��꽌 紐⑥쓬 Map<String, CustomField> customFieldMaps = new HashMap<>(); Map<String, IssueStatus> issueStatusReadyMaps = new HashMap<>(); // �긽�깭 �냽�꽦 '��湲�'�씤 �씠�뒋 �긽�깭 Map<Long, Long> issueNumberMaps = new HashMap<>(); // �씠�뒋 踰덊샇 紐⑥쓬 Map<String, Long> issueTypeCustomFieldMaps = new HashMap<>(); // �씠�뒋 ���엯 + �궗�슜�옄 �젙�쓽 �븘�뱶 �뿰寃� �젙蹂� Workspace workspace = this.workspaceService.getWorkspace(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); // �씠�뒋瑜� �꽔�쑝�젮�뒗 �뾽臾� 怨듦컙 // �씠�뒋�쓽 二쇱슂 �냽�꽦�쓣 map �뿉 ���옣�븯�뿬 �뿊�� import �뿉�꽌 吏��젙�븳 ���긽(�씠�뒋 �냽�꽦)�쓣 鍮좊Ⅴ寃� 李얠쓣 �닔 �엳寃� �븳�떎. - this.IssueAttributeMapToList(projectMaps, issueTypeMaps, priorityMaps, severityMaps, userMaps, customFieldMaps, issueNumberMaps, issueTypeCustomFieldMaps, issueStatusReadyMaps); + this.IssueAttributeMapToList(projectMaps, issueTypeMaps, priorityMaps, severityMaps, userMaps, departmentMaps, customFieldMaps, issueNumberMaps, issueTypeCustomFieldMaps, issueStatusReadyMaps); // 0.237 - 0.230 List<IssueForm> issueForms = Lists.newArrayList(); @@ -2017,7 +2022,7 @@ // �씠�뒋�쓽 二쇱슂 �냽�꽦�쓣 map �뿉 ���옣�븯�뿬 �뿊�� import �뿉�꽌 吏��젙�븳 ���긽(�씠�뒋 �냽�꽦)�쓣 鍮좊Ⅴ寃� 李얠쓣 �닔 �엳寃� �븳�떎. private void IssueAttributeMapToList(Map<String, Project> projectMaps, Map<String, IssueType> issueTypeMaps, Map<String, Priority> priorityMaps, Map<String, Severity> severityMaps, - Map<String, Object> userMaps, Map<String, CustomField> customFieldMaps, Map<Long, Long> issueNumberMaps, Map<String, Long> issueTypeCustomFieldMaps, Map<String, IssueStatus> issueStatusReadyMaps) { + Map<String, Object> userMaps, Map<String, Object> departmentMaps, Map<String, CustomField> customFieldMaps, Map<Long, Long> issueNumberMaps, Map<String, Long> issueTypeCustomFieldMaps, Map<String, IssueStatus> issueStatusReadyMaps) { // �봽濡쒖젥�듃 �궎濡� 諛붾줈 李얠쓣 �닔 �엳寃� 以�鍮� List<Project> projects = this.projectService.findByWorkspaceId(); List<Long> projectIds = Lists.newArrayList(); @@ -2043,6 +2048,14 @@ } userMaps.put(project.getProjectKey(), userMap); + + // �봽濡쒖젥�듃�뿉 李몄뿬�븯�뒗 遺��꽌 �젙蹂� + List<Map<String, Object>> departments = this.departmentService.findProjectDepartment(project); + List<Long> departmentList = Lists.newArrayList(); + // 遺��꽌 �젙蹂대�� ���옣 + for (Map<String, Object> department : departments) { + departmentList.add(MapUtil.getLong(department, "departmentId")); + } } // �씠�뒋 �쑀�삎�쓣 諛붾줈 李얠쓣 �닔 �엳寃� 以�鍮� -- Gitblit v1.8.0