| | |
| | | import kr.wisestone.owl.util.ConvertUtil; |
| | | import kr.wisestone.owl.vo.*; |
| | | import kr.wisestone.owl.web.condition.WorkflowCondition; |
| | | import kr.wisestone.owl.web.condition.WorkflowDepartmentCondition; |
| | | import kr.wisestone.owl.web.form.WorkflowForm; |
| | | import kr.wisestone.owl.web.view.ExcelView; |
| | | import org.apache.commons.lang3.StringUtils; |
| | |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.servlet.ModelAndView; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.*; |
| | | |
| | | @Service |
| | | public class WorkflowServiceImpl extends AbstractServiceImpl<Workflow, Long, JpaRepository<Workflow, Long>> |
| | |
| | | |
| | | @Autowired |
| | | private WorkflowTransitionService workflowTransitionService; |
| | | |
| | | @Autowired |
| | | private WorkflowDepartmentService workflowDepartmentService; |
| | | |
| | | @Autowired |
| | | private WorkspaceService workspaceService; |
| | |
| | | Workspace workspace = this.workspaceService.getWorkspace(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); |
| | | workflow.setWorkspace(workspace); |
| | | |
| | | this.workflowRepository.saveAndFlush(workflow); |
| | | |
| | | workflow = this.workflowRepository.saveAndFlush(workflow); |
| | | this.workflowTransitionService.modify(workflow, workflowForm.getIssueStatusVos()); |
| | | this.workflowDepartmentService.modify(workflow, workflowForm.getIssueStatusVos()); |
| | | |
| | | return workflow; |
| | | } |
| | |
| | | List<WorkflowVo> workflowVos = ConvertUtil.convertListToListClass(results, WorkflowVo.class); //workflow 리스트 |
| | | // 워크플로우를 사용하는 이슈 유형 정보를 추가한다. |
| | | this.setIssueTypeVos(workflowVos); |
| | | // 워크플로우 담당부서 정보를 추가한다. |
| | | this.setDepartmentVos(workflowVos); |
| | | |
| | | resJsonData.put(Constants.REQ_KEY_PAGE_VO, new ResPage(pageable.getPageNumber(), pageable.getPageSize(), |
| | | totalPage, totalCount)); |
| | |
| | | } |
| | | } |
| | | |
| | | // 워크플로우를 사용하는 부서 정보를 추가한다. |
| | | private void setDepartmentVos(List<WorkflowVo> workflowVos) { |
| | | for (WorkflowVo workflowVo : workflowVos) { |
| | | Workflow workflow = this.getWorkflow(workflowVo.getId()); |
| | | |
| | | WorkflowDepartmentCondition condition = new WorkflowDepartmentCondition(); |
| | | condition.setWorkflowId(workflow.getId()); |
| | | List<WorkflowDepartmentVo> workflowDepartmentVos = this.workflowDepartmentService.find(condition); |
| | | if (workflowDepartmentVos != null && workflowDepartmentVos.size() > 0) { |
| | | IssueStatusVo issueStatusVo = new IssueStatusVo(); |
| | | issueStatusVo.setWorkflowDepartmentVos(workflowDepartmentVos); |
| | | workflowVo.addIssueStatusVos(issueStatusVo); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 워크플로우 상세 정보를 조회한다. |
| | | @Override |
| | | @Transactional(readOnly = true) |
| | |
| | | |
| | | switch (workflowCondition.getDeep()) { |
| | | case "01" : // 연관된 이슈 상태와 전이선 정보를 가져온다. |
| | | workflowVo.setIssueStatusVos(this.issueStatusService.findByWorkflowId(workflowCondition.getId())); |
| | | List<IssueStatusVo> issueStatusVos = this.issueStatusService.findByWorkflowId(workflowCondition.getId()); |
| | | for (IssueStatusVo issueStatusVo : issueStatusVos) { |
| | | WorkflowDepartmentCondition condition = new WorkflowDepartmentCondition(); |
| | | condition.setWorkflowId(workflowVo.getId()); |
| | | condition.setIssueStatusId(issueStatusVo.getId()); |
| | | List<WorkflowDepartmentVo> workflowDepartmentVos = this.workflowDepartmentService.find(condition); |
| | | issueStatusVo.setWorkflowDepartmentVos(workflowDepartmentVos); |
| | | } |
| | | workflowVo.setIssueStatusVos(issueStatusVos); |
| | | break; |
| | | } |
| | | } |
| | |
| | | this.verifyName(workflowForm.getName(), workflowForm.getId()); |
| | | workflow.setName(workflowForm.getName()); |
| | | |
| | | // 담당 부서 정보 변경 |
| | | this.workflowDepartmentService.modify(workflow, workflowForm.getIssueStatusVos()); |
| | | this.workflowTransitionService.modify(workflow, workflowForm.getIssueStatusVos()); |
| | | // 워크플로우가 변경되었는지 확인하고 변경되었을 경우 이슈 상태가 없는 이슈는 '생성' 인 이슈 상태로 이동한다. |
| | | this.checkWorkflowChange(workflow); |
| | |
| | | this.messageAccessor.getMessage(MsgConstants.WORKFLOW_REMOVE_NOT_SELECT)); |
| | | } |
| | | |
| | | for (Long projectId : workflowForm.getRemoveIds()) { |
| | | this.removeWorkflow(projectId); |
| | | for (Long workflowId : workflowForm.getRemoveIds()) { |
| | | this.removeWorkflow(workflowId); |
| | | } |
| | | |
| | | this.workflowRepository.flush(); |
| | | } |
| | | |
| | | private void removeWorkflow(Long workflowId) { |
| | | Workflow workflow = this.getWorkflow(workflowId); |
| | | // 워크플로우 담당부서 삭제 |
| | | this.workflowDepartmentService.remove(workflowId); |
| | | // 워크플로우를 이슈 타입에서 사용하고 있는지 확인 |
| | | this.checkIssueTypeWorkflow(workflow); |
| | | this.workflowRepository.delete(workflow); |