From 367c498ea88844fd36079b46a9f7c7f5d0a9c1cd Mon Sep 17 00:00:00 2001 From: jhjang <jhjang@maprex.co.kr> Date: 월, 27 12월 2021 10:33:53 +0900 Subject: [PATCH] - api 이슈 변경시 워크플로우에 포함된 상태로만 변경가능하도록 수정 --- src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java | 18 +++++++- src/main/java/kr/wisestone/owl/data/CheckIssueData.java | 45 ---------------------- src/main/java/kr/wisestone/owl/web/controller/ApiController.java | 39 +++++-------------- src/main/java/kr/wisestone/owl/service/impl/WorkflowTransitionServiceImpl.java | 7 +++ src/main/java/kr/wisestone/owl/service/WorkflowTransitionService.java | 2 + src/main/java/kr/wisestone/owl/constant/MsgConstants.java | 2 + 6 files changed, 37 insertions(+), 76 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/constant/MsgConstants.java b/src/main/java/kr/wisestone/owl/constant/MsgConstants.java index 349f92a..e581672 100644 --- a/src/main/java/kr/wisestone/owl/constant/MsgConstants.java +++ b/src/main/java/kr/wisestone/owl/constant/MsgConstants.java @@ -251,5 +251,7 @@ public static final String API_ISSUE_NOT_EXIST = "API_ISSUE_NOT_EXIST"; // �닔�젙�븷 �씠�뒋瑜� 李얠쓣�닔 �뾾�뒿�땲�떎. public static final String API_COMPLETE_ISSUE_STATUS_NOT_EXIST = "API_COMPLETE_ISSUE_STATUS_NOT_EXIST"; // �옄�룞 醫낅즺 泥섎━�븷 �긽�깭媛� �꽕�젙�릺吏� �븡�븯�뒿�땲�떎. public static final String API_ISSUE_STATUS_NOT_EXIST = "API_ISSUE_STATUS_NOT_EXIST"; // �씠�뒋 �긽�깭瑜� 李얠쓣�닔 �뾾�뒿�땲�떎 + public static final String API_ISSUE_STATUS_IS_NULL = "API_ISSUE_STATUS_IS_NULL"; // �씠�뒋 �긽�깭 媛믪씠 �뾾�뒿�땲�떎. public static final String API_CUSTOM_FIELD_NOT_EXIST = "API_CUSTOM_FIELD_NOT_EXIST"; // �궗�슜�옄 �젙�쓽 �븘�뱶瑜� 議댁옱�븯吏� �븡�뒿�땲�떎. + public static final String API_ISSUE_STATUS_NOT_IN_WORKFLOW = "API_ISSUE_STATUS_NOT_IN_WORKFLOW"; // �씠�뒋 �긽�깭媛� �썙�겕�뵆濡쒖슦�뿉 �룷�븿�릺�뼱 �엳吏� �븡�뒿�땲�떎 } diff --git a/src/main/java/kr/wisestone/owl/data/CheckIssueData.java b/src/main/java/kr/wisestone/owl/data/CheckIssueData.java index d4d60b5..17357ae 100644 --- a/src/main/java/kr/wisestone/owl/data/CheckIssueData.java +++ b/src/main/java/kr/wisestone/owl/data/CheckIssueData.java @@ -1,12 +1,8 @@ package kr.wisestone.owl.data; -import kr.wisestone.owl.config.CommonConfiguration; import kr.wisestone.owl.domain.*; -import kr.wisestone.owl.service.*; import kr.wisestone.owl.util.ConvertUtil; import kr.wisestone.owl.web.form.IssueForm; -import org.springframework.beans.factory.annotation.Autowired; - // issue �쑀�슚�꽦 泥댄겕�슜 �겢�옒�뒪 public class CheckIssueData { @@ -18,48 +14,7 @@ Priority priority; Severity severity; - @Autowired - private IssueService issueService; - - @Autowired - private WorkspaceService workspaceService; - - @Autowired - private ProjectService projectService; - - @Autowired - private IssueStatusService issueStatusService; - - @Autowired - private IssueTypeService issueTypeService; - - @Autowired - private PriorityService priorityService; - - @Autowired - private SeverityService severityService; - public CheckIssueData() {} - - public boolean CheckData(User user, IssueForm issueForm) { - // �궗�슜�븯怨� �엳�뒗 �뾽臾� 怨듦컙�씠 �솢�꽦 �긽�깭�씤吏� �솗�씤�븳�떎. �궗�슜 怨듦컙�뿉�꽌 濡쒓렇�씤�븳 �궗�슜�옄媛� 鍮꾪솢�꽦�씤吏� �솗�씤�븳�떎. - this.workspaceService.checkUseWorkspace(user, user.getLastWorkspaceId()); - - Issue issue = this.issueService.getIssue(issueForm.getId()); - IssueStatus oldIssueStatus = issue.getIssueStatus(); - // �봽濡쒖젥�듃 �쑀�슚�꽦 泥댄겕 - Project project = this.projectService.getProject(issueForm.getProjectId()); - // �씠�뒋 �긽�깭 �쑀�슚�꽦 泥댄겕 - IssueStatus issueStatus = this.issueStatusService.getIssueStatus(issueForm.getIssueStatusId()); - // �씠�뒋 �쑀�삎 �쑀�슚�꽦 泥댄겕 - IssueType issueType = this.issueTypeService.getIssueType(issueForm.getIssueTypeId()); - // �슦�꽑�닚�쐞 �쑀�슚�꽦 泥댄겕 - Priority priority = this.priorityService.getPriority(issueForm.getPriorityId()); - // 以묒슂�룄 �쑀�슚�꽦 泥댄겕 - Severity severity = this.severityService.getSeverity(issueForm.getSeverityId()); - - return true; - } public Issue getIssue() { return issue; diff --git a/src/main/java/kr/wisestone/owl/service/WorkflowTransitionService.java b/src/main/java/kr/wisestone/owl/service/WorkflowTransitionService.java index 7be65a3..42c60f1 100644 --- a/src/main/java/kr/wisestone/owl/service/WorkflowTransitionService.java +++ b/src/main/java/kr/wisestone/owl/service/WorkflowTransitionService.java @@ -16,6 +16,8 @@ List<WorkflowTransition> findByWorkflowId(Long workflowId); + boolean contains(Long issueStatusId, Long workflowId); + List<WorkflowTransitionVo> findBySourceIssueStatusIdAndWorkflowId(Long sourceIssueStatusId, Long workflowId); void modify(Workflow workflow, List<IssueStatusVo> issueStatusVos); 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 b132251..8151068 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java @@ -187,6 +187,9 @@ private UserDepartmentService userDepartmentService; @Autowired + private WorkflowTransitionService workflowTransitionService; + + @Autowired private UserDepartmentRepository userDepartmentRepository; @Autowired @@ -194,6 +197,9 @@ @Autowired private WorkflowDepartmentRepository workflowDepartmentRepository; + + @Autowired + WorkflowService workflowService; @Override protected JpaRepository<Issue, Long> getRepository() { @@ -234,7 +240,6 @@ } Workflow workflow = issueType.getWorkflow(); - if (issueApiForm.getApiType().equals(IssueApiForm.ApiType.add)) { // �씠�뒋 �긽�깭媛� 吏��젙�릺�뼱 �엳吏� �븡�쓣 寃쎌슦 �썙�겕�뵆濡쒖슦 ��湲� �긽�깭 媛믪쑝濡� 吏��젙 List<Long> departmentIds = this.workflowDepartmentService.findFirstDepartmentIds(workflow); @@ -243,8 +248,15 @@ issueForm.addDepartmentId(departmentId); } } - } else if (issueApiForm.getIssueStatusId() == null){ - throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.API_ISSUE_STATUS_NOT_EXIST)); + } else { + if (issueApiForm.getIssueStatusId() == null){ + throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.API_ISSUE_STATUS_IS_NULL)); + } + // �썙�겕�뵆濡쒖슦�뿉�꽌 �궗�슜 以묒씤 �씠�뒋 �긽�깭�씤吏� 泥댄겕 + else if (!this.workflowTransitionService.contains(issueApiForm.getIssueStatusId(), workflow.getId())) { + throw new OwlRuntimeException( + this.messageAccessor.getMessage(MsgConstants.API_ISSUE_STATUS_NOT_IN_WORKFLOW)); + } } // �봽濡쒖젥�듃 �엯�젰 diff --git a/src/main/java/kr/wisestone/owl/service/impl/WorkflowTransitionServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/WorkflowTransitionServiceImpl.java index c2271c6..5fc42b4 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/WorkflowTransitionServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/WorkflowTransitionServiceImpl.java @@ -131,6 +131,13 @@ return this.workflowTransitionRepository.findByWorkflowId(workflowId); } + // �썙�겕�뵆濡쒖슦�뿉 �궗�슜�릺�뒗 �씠�뒋 �긽�깭�씤吏� �솗�씤�븳�떎 + @Override + public boolean contains(Long issueStatusId, Long workflowId) { + List<WorkflowTransitionVo> workflowTransitionVos = this.findBySourceIssueStatusIdAndWorkflowId(issueStatusId, workflowId); + return workflowTransitionVos != null && workflowTransitionVos.size() > 0; + } + // �씠�뒋 �긽�깭�� �뿰寃곕맂 �쟾�씠�꽑 �젙蹂대�� 議고쉶�븳�떎. @Override @Transactional(readOnly = true) diff --git a/src/main/java/kr/wisestone/owl/web/controller/ApiController.java b/src/main/java/kr/wisestone/owl/web/controller/ApiController.java index 9c7b5f4..5c13abc 100644 --- a/src/main/java/kr/wisestone/owl/web/controller/ApiController.java +++ b/src/main/java/kr/wisestone/owl/web/controller/ApiController.java @@ -3,16 +3,12 @@ import kr.wisestone.owl.constant.Constants; import kr.wisestone.owl.constant.MsgConstants; import kr.wisestone.owl.domain.Issue; -import kr.wisestone.owl.domain.User; import kr.wisestone.owl.exception.OwlRuntimeException; import kr.wisestone.owl.service.IssueService; import kr.wisestone.owl.util.ConvertUtil; import kr.wisestone.owl.web.form.IssueApiForm; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Pageable; -import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; @@ -28,19 +24,6 @@ @Autowired private IssueService issueService; - // �씠�뒋 異붽�(json 諛⑹떇�쑝濡� �뙆�씪�쟾�넚) -// @RequestMapping(value = "api/issue", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) -// public -// @ResponseBody -// Map<String, Object> addIssue(@RequestBody Map<String, Map<String, Object>> params) { -// Map<String, Object> resJsonData = new HashMap<>(); -// -// IssueApiForm issueForm = IssueApiForm.make(params.get(Constants.REQ_KEY_CONTENT)); -// Issue issue = this.issueService.addApiIssue(issueForm); -// // 踰꾩쟾 �깮�꽦 -// this.issueService.addIssueVersion(issue.getId()); -// return this.setSuccessMessage(resJsonData); -// } @RequestMapping(value = "api/issue", method = RequestMethod.POST) public @ResponseBody @@ -57,7 +40,7 @@ else if (issueForm.getCustomFieldValues() == null || issueForm.getCustomFieldValues().size() == 0) { throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.API_CUSTOM_FIELD_NOT_EXIST)); } - + if (issueForm.getApiType() == IssueApiForm.ApiType.add) { List<Issue> issues = this.issueService.addApiIssue(issueForm); // 踰꾩쟾 �깮�꽦 @@ -74,15 +57,15 @@ } // �씠�뒋 議고쉶 - @RequestMapping(value = "/api/issueList", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) - public - @ResponseBody - Map<String, Object> find(@RequestBody Map<String, Map<String, Object>> params) { - Map<String, Object> resJsonData = new HashMap<>(); - Pageable pageable = this.pageUtil.convertPageable(this.getPageVo(params)); - - // todo - return this.setSuccessMessage(resJsonData); - } +// @RequestMapping(value = "/api/issueList", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) +// public +// @ResponseBody +// Map<String, Object> find(@RequestBody Map<String, Map<String, Object>> params) { +// Map<String, Object> resJsonData = new HashMap<>(); +// Pageable pageable = this.pageUtil.convertPageable(this.getPageVo(params)); +// +// // todo +// return this.setSuccessMessage(resJsonData); +// } } -- Gitblit v1.8.0