From bcbce86a1e54d773d5008b21ff2ae124cfc6dda7 Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 월, 22 11월 2021 13:36:08 +0900 Subject: [PATCH] 연관이슈, 하위이슈 테이블 표시 설정(백엔드) --- src/main/resources/migration/V1_11__Alter_Table.sql | 5 + src/main/java/kr/wisestone/owl/web/controller/IssueTableConfigController.java | 50 ++++++++++++ src/main/java/kr/wisestone/owl/domain/IssueTableConfig.java | 21 +++++ src/main/java/kr/wisestone/owl/service/IssueTableConfigService.java | 15 +++ src/main/java/kr/wisestone/owl/service/impl/IssueTableConfigServiceImpl.java | 120 +++++++++++++++++++++++++++++ src/main/java/kr/wisestone/owl/repository/IssueTableConfigRepository.java | 3 6 files changed, 208 insertions(+), 6 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/domain/IssueTableConfig.java b/src/main/java/kr/wisestone/owl/domain/IssueTableConfig.java index 9cb73fd..8b7e5dc 100644 --- a/src/main/java/kr/wisestone/owl/domain/IssueTableConfig.java +++ b/src/main/java/kr/wisestone/owl/domain/IssueTableConfig.java @@ -14,6 +14,7 @@ @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String issueTableConfigs; + private int issueTableType; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "workspace_id") @@ -22,6 +23,10 @@ @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id") private User user; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "issue_id") + private Issue issue; public IssueTableConfig(){} @@ -56,4 +61,20 @@ public void setUser(User user) { this.user = user; } + + public Issue getIssue() { + return issue; + } + + public void setIssue(Issue issue) { + this.issue = issue; + } + + public int getIssueTableType() { + return issueTableType; + } + + public void setIssueTableType(int issueTableType) { + this.issueTableType = issueTableType; + } } diff --git a/src/main/java/kr/wisestone/owl/repository/IssueTableConfigRepository.java b/src/main/java/kr/wisestone/owl/repository/IssueTableConfigRepository.java index 07303d3..92cb5e2 100644 --- a/src/main/java/kr/wisestone/owl/repository/IssueTableConfigRepository.java +++ b/src/main/java/kr/wisestone/owl/repository/IssueTableConfigRepository.java @@ -6,4 +6,7 @@ public interface IssueTableConfigRepository extends JpaRepository<IssueTableConfig, Long> { IssueTableConfig findByUserIdAndWorkspaceId(@Param("userId") Long userId, @Param("workspaceId") Long workspaceId); + + IssueTableConfig findByIssueIdAndIssueTableType(@Param("issueId") Long issueId, @Param("issueTableType") int issueTableType); + } diff --git a/src/main/java/kr/wisestone/owl/service/IssueTableConfigService.java b/src/main/java/kr/wisestone/owl/service/IssueTableConfigService.java index 64d643f..c301940 100644 --- a/src/main/java/kr/wisestone/owl/service/IssueTableConfigService.java +++ b/src/main/java/kr/wisestone/owl/service/IssueTableConfigService.java @@ -8,7 +8,20 @@ IssueTableConfig addIssueTableConfig(Map<String, Object> params); - IssueTableConfig findByUserIdAndWorkspaceId(); + IssueTableConfig addRelationIssueTableConfig(Map<String, Object> params); + + IssueTableConfig addDownIssueTableConfig(Map<String, Object> params); void detailIssueTableConfig(Map<String, Object> resJsonData); + + void detailRelationIssueTableConfig(Long issueId, Map<String, Object> resJsonData); + + void detailDownIssueTableConfig(Long issueId, Map<String, Object> resJsonData); + + IssueTableConfig findByUserIdAndWorkspaceId(); + + IssueTableConfig findByIssueIdAndIssueTableType(Long issueId, int issueTableType); + + void multipleCode(); + } diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueTableConfigServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueTableConfigServiceImpl.java index a404a90..8f99a4e 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueTableConfigServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueTableConfigServiceImpl.java @@ -1,10 +1,12 @@ package kr.wisestone.owl.service.impl; import kr.wisestone.owl.constant.Constants; +import kr.wisestone.owl.domain.Issue; import kr.wisestone.owl.domain.IssueTableConfig; import kr.wisestone.owl.domain.User; import kr.wisestone.owl.domain.Workspace; import kr.wisestone.owl.repository.IssueTableConfigRepository; +import kr.wisestone.owl.service.IssueService; import kr.wisestone.owl.service.IssueTableConfigService; import kr.wisestone.owl.service.UserService; import kr.wisestone.owl.service.WorkspaceService; @@ -32,30 +34,102 @@ @Autowired private UserService userService; + @Autowired + private IssueService issueService; + @Override protected JpaRepository<IssueTableConfig, Long> getRepository() { return this.issueTableConfigRepository; } + + @Override + public void multipleCode() { + + } + Long issueId; + int issueTableType = 0; //issueTableType 珥덇린媛� �꽕�젙 // �씠�뒋 �뀒�씠釉� 而щ읆 �꽕�젙 �젙蹂대�� ���옣�븳�떎. @Override @Transactional public IssueTableConfig addIssueTableConfig(Map<String, Object> params) { String issueTableConfigs = MapUtil.getString(params, "issueTableConfigs"); + issueId = (long) -1; + issueTableType = 1; + // �빐�떦 �뾽臾� 怨듦컙�뿉�꽌 �궗�슜�옄�쓽 �씠�뒋 紐⑸줉 �뀒�씠釉� 而щ읆 �꽕�젙�쓣 議고쉶�븳�떎. IssueTableConfig saveIssueTableConfig = this.findByUserIdAndWorkspaceId(); - + IssueTableConfig saveIssueTableType = this.findByIssueIdAndIssueTableType(issueId,issueTableType); // �븘吏� �뀒�씠釉� 而щ읆 �꽕�젙�쓣 �븯吏� �븡�븯�쓣 寃쎌슦 - if (saveIssueTableConfig == null) { + if (saveIssueTableConfig == null && saveIssueTableType == null) { IssueTableConfig issueTableConfig = new IssueTableConfig(); Workspace workspace = this.workspaceService.getWorkspace(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); User user = this.userService.getUser(this.webAppUtil.getLoginId()); + Issue issue = this.issueService.getIssue(issueId); issueTableConfig.setWorkspace(workspace); issueTableConfig.setUser(user); + issueTableConfig.setIssue(issue); + issueTableConfig.setIssueTableType(issueTableType); issueTableConfig.setIssueTableConfigs(issueTableConfigs); return this.issueTableConfigRepository.saveAndFlush(issueTableConfig); } else { + saveIssueTableConfig.setIssueTableConfigs(issueTableConfigs); + return this.issueTableConfigRepository.saveAndFlush(saveIssueTableConfig); + } + } + + @Override + public IssueTableConfig addRelationIssueTableConfig(Map<String, Object> params) { + String issueTableConfigs = MapUtil.getString(params, "issueTableConfigs"); + + issueId = MapUtil.getLong(params, "issueId"); + issueTableType = 2; + // �빐�떦 �뾽臾� 怨듦컙�뿉�꽌 �궗�슜�옄�쓽 �씠�뒋 紐⑸줉 �뀒�씠釉� 而щ읆 �꽕�젙�쓣 議고쉶�븳�떎. + IssueTableConfig saveIssueTableConfig = this.findByUserIdAndWorkspaceId(); + IssueTableConfig saveIssueTableType = this.findByIssueIdAndIssueTableType(issueId,issueTableType); + + // �븘吏� �뀒�씠釉� 而щ읆 �꽕�젙�쓣 �븯吏� �븡�븯�쓣 寃쎌슦 + if (saveIssueTableConfig == null && saveIssueTableType == null) { + IssueTableConfig issueTableConfig = new IssueTableConfig(); + Workspace workspace = this.workspaceService.getWorkspace(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); + User user = this.userService.getUser(this.webAppUtil.getLoginId()); + Issue issue = this.issueService.getIssue(issueId); + issueTableConfig.setWorkspace(workspace); + issueTableConfig.setUser(user); + issueTableConfig.setIssue(issue); + issueTableConfig.setIssueTableType(issueTableType); + issueTableConfig.setIssueTableConfigs(issueTableConfigs); + return this.issueTableConfigRepository.saveAndFlush(issueTableConfig); + }else { + saveIssueTableConfig.setIssueTableConfigs(issueTableConfigs); + return this.issueTableConfigRepository.saveAndFlush(saveIssueTableConfig); + } + } + + @Override + public IssueTableConfig addDownIssueTableConfig(Map<String, Object> params) { + String issueTableConfigs = MapUtil.getString(params, "issueTableConfigs"); + + issueId = MapUtil.getLong(params, "issueId"); + issueTableType = 3; + // �빐�떦 �뾽臾� 怨듦컙�뿉�꽌 �궗�슜�옄�쓽 �씠�뒋 紐⑸줉 �뀒�씠釉� 而щ읆 �꽕�젙�쓣 議고쉶�븳�떎. + IssueTableConfig saveIssueTableConfig = this.findByUserIdAndWorkspaceId(); + IssueTableConfig saveIssueTableType = this.findByIssueIdAndIssueTableType(issueId,issueTableType); + + // �븘吏� �뀒�씠釉� 而щ읆 �꽕�젙�쓣 �븯吏� �븡�븯�쓣 寃쎌슦 + if (saveIssueTableConfig == null && saveIssueTableType == null) { + IssueTableConfig issueTableConfig = new IssueTableConfig(); + Workspace workspace = this.workspaceService.getWorkspace(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); + User user = this.userService.getUser(this.webAppUtil.getLoginId()); + Issue issue = this.issueService.getIssue(issueId); + issueTableConfig.setWorkspace(workspace); + issueTableConfig.setUser(user); + issueTableConfig.setIssue(issue); + issueTableConfig.setIssueTableType(issueTableType); + issueTableConfig.setIssueTableConfigs(issueTableConfigs); + return this.issueTableConfigRepository.saveAndFlush(issueTableConfig); + }else { saveIssueTableConfig.setIssueTableConfigs(issueTableConfigs); return this.issueTableConfigRepository.saveAndFlush(saveIssueTableConfig); } @@ -69,14 +143,39 @@ this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); } + @Override + @Transactional(readOnly = true) + public IssueTableConfig findByIssueIdAndIssueTableType(Long issueId, int issueTableType) { + return this.issueTableConfigRepository.findByIssueIdAndIssueTableType(issueId, issueTableType); + } + // ���옣�맂 �씠�뒋 �뀒�씠釉� �꽕�젙�쓣 議고쉶�븳�떎. @Override @Transactional(readOnly = true) public void detailIssueTableConfig(Map<String, Object> resJsonData) { + issueId = (long) -1; + issueTableType = 1; // �빐�떦 �뾽臾� 怨듦컙�뿉�꽌 �궗�슜�옄�쓽 �씠�뒋 寃��깋 議곌굔�쓣 議고쉶�븳�떎. IssueTableConfig issueTableConfig = this.findByUserIdAndWorkspaceId(); + IssueTableConfig saveIssueTableType = this.findByIssueIdAndIssueTableType(issueId,issueTableType); - if (issueTableConfig != null) { + if (issueTableConfig != null && saveIssueTableType != null) { + resJsonData.put(Constants.RES_KEY_CONTENTS, issueTableConfig.getIssueTableConfigs()); + } + else { + resJsonData.put(Constants.RES_KEY_CONTENTS, ""); + } + } + + // ���옣�맂 �뿰愿� �씠�뒋 �뀒�씠釉� �꽕�젙 議고쉶 + @Override + public void detailRelationIssueTableConfig(Long issueId, Map<String, Object> resJsonData) { + issueTableType = 2; + // �빐�떦 �뾽臾� 怨듦컙�뿉�꽌 �궗�슜�옄�쓽 �씠�뒋 寃��깋 議곌굔�쓣 議고쉶�븳�떎. + IssueTableConfig issueTableConfig = this.findByUserIdAndWorkspaceId(); + IssueTableConfig saveIssueTableType = this.findByIssueIdAndIssueTableType(issueId,issueTableType); + + if (issueTableConfig != null && saveIssueTableType != null) { resJsonData.put(Constants.RES_KEY_CONTENTS, issueTableConfig.getIssueTableConfigs()); } else { @@ -84,6 +183,21 @@ } } + // ���옣�맂 �븯�쐞 �씠�뒋 �뀒�씠釉� �꽕�젙 議고쉶 + @Override + public void detailDownIssueTableConfig(Long issueId, Map<String, Object> resJsonData) { + issueTableType = 3; + // �빐�떦 �뾽臾� 怨듦컙�뿉�꽌 �궗�슜�옄�쓽 �씠�뒋 寃��깋 議곌굔�쓣 議고쉶�븳�떎. + IssueTableConfig issueTableConfig = this.findByUserIdAndWorkspaceId(); + IssueTableConfig saveIssueTableType = this.findByIssueIdAndIssueTableType(issueId,issueTableType); + + if (issueTableConfig != null && saveIssueTableType != null) { + resJsonData.put(Constants.RES_KEY_CONTENTS, issueTableConfig.getIssueTableConfigs()); + } + else { + resJsonData.put(Constants.RES_KEY_CONTENTS, ""); + } + } } diff --git a/src/main/java/kr/wisestone/owl/web/controller/IssueTableConfigController.java b/src/main/java/kr/wisestone/owl/web/controller/IssueTableConfigController.java index 7fe99d9..115e6e8 100644 --- a/src/main/java/kr/wisestone/owl/web/controller/IssueTableConfigController.java +++ b/src/main/java/kr/wisestone/owl/web/controller/IssueTableConfigController.java @@ -21,7 +21,7 @@ @Autowired private IssueTableConfigService issueTableConfigService; - // �씠�뒋 �뀒�씠釉� �꽕�젙 ���옣 + // 硫붿씤 �씠�뒋 �뀒�씠釉� �꽕�젙 ���옣 @RequestMapping(value = "/issueTableConfig/add", produces = MediaType.APPLICATION_JSON_VALUE) public @ResponseBody @@ -33,7 +33,7 @@ return this.setSuccessMessage(resJsonData); } - // �씠�뒋 �뀒�씠釉� �꽕�젙 �긽�꽭 議고쉶 + // 硫붿씤 �씠�뒋 �뀒�씠釉� �꽕�젙 �긽�꽭 議고쉶 @RequestMapping(value = "/issueTableConfig/detail", produces = MediaType.APPLICATION_JSON_VALUE) public @ResponseBody @@ -43,4 +43,50 @@ return this.setSuccessMessage(resJsonData); } + + // �뿰愿� �씠�뒋 �뀒�씠釉� �꽕�젙 ���옣 + @RequestMapping(value = "/issueTableConfig/relationAdd", produces = MediaType.APPLICATION_JSON_VALUE) + public + @ResponseBody + Map<String, Object> relationAdd(@RequestBody Map<String, Map<String, Object>> params) { + Map<String, Object> resJsonData = new HashMap<>(); + + this.issueTableConfigService.addRelationIssueTableConfig(params.get(Constants.REQ_KEY_CONTENT)); + + return this.setSuccessMessage(resJsonData); + } + + // �뿰愿� �씠�뒋 �뀒�씠釉� �꽕�젙 �긽�꽭 議고쉶 + @RequestMapping(value = "/issueTableConfig/relationDetail", produces = MediaType.APPLICATION_JSON_VALUE) + public + @ResponseBody + Map<String, Object> relationDetail(@RequestBody Long issueId) { + Map<String, Object> resJsonData = new HashMap<>(); + this.issueTableConfigService.detailRelationIssueTableConfig(issueId,resJsonData); + + return this.setSuccessMessage(resJsonData); + } + + // �븯�쐞 �씠�뒋 �뀒�씠釉� �꽕�젙 ���옣 + @RequestMapping(value = "/issueTableConfig/downAdd", produces = MediaType.APPLICATION_JSON_VALUE) + public + @ResponseBody + Map<String, Object> downAdd(@RequestBody Map<String, Map<String, Object>> params) { + Map<String, Object> resJsonData = new HashMap<>(); + + this.issueTableConfigService.addDownIssueTableConfig(params.get(Constants.REQ_KEY_CONTENT)); + + return this.setSuccessMessage(resJsonData); + } + + // �븯�쐞 �씠�뒋 �뀒�씠釉� �꽕�젙 �긽�꽭 議고쉶 + @RequestMapping(value = "/issueTableConfig/downDetail", produces = MediaType.APPLICATION_JSON_VALUE) + public + @ResponseBody + Map<String, Object> downDetail(@RequestBody Long issueId) { + Map<String, Object> resJsonData = new HashMap<>(); + this.issueTableConfigService.detailDownIssueTableConfig(issueId,resJsonData); + + return this.setSuccessMessage(resJsonData); + } } diff --git a/src/main/resources/migration/V1_11__Alter_Table.sql b/src/main/resources/migration/V1_11__Alter_Table.sql index 9d9de68..f4f4ac6 100644 --- a/src/main/resources/migration/V1_11__Alter_Table.sql +++ b/src/main/resources/migration/V1_11__Alter_Table.sql @@ -182,3 +182,8 @@ PRIMARY KEY (`id`) USING BTREE, INDEX `ispIdIndex` (`isp_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- �씠�뒋 �뀒�씠釉� ���엯 �꽕�젙(1: 硫붿씤, 2: �뿰愿�, 3: �븯�쐞) +ALTER TABLE `issue_table_config` ADD COLUMN `issue_id` BIGINT(20) NOT NULL; +ALTER TABLE `issue_table_config` ADD COLUMN `issue_table_type` INT(11) NOT NULL; +ALTER TABLE `issue_table_config` ADD INDEX `issueTableTypeIndex`(`issue_table_type`); -- Gitblit v1.8.0