OWL ITS + 탐지시스템(인터넷 진흥원)
jhjang
2021-11-25 e50b78db2f5e74f88b7e5c736f1fca4ca3cbe29b
src/main/java/kr/wisestone/owl/service/impl/WorkflowServiceImpl.java
@@ -13,6 +13,7 @@
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;
@@ -26,9 +27,7 @@
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>>
@@ -44,6 +43,9 @@
    @Autowired
    private WorkflowTransitionService workflowTransitionService;
    @Autowired
    private WorkflowDepartmentService workflowDepartmentService;
    @Autowired
    private WorkspaceService workspaceService;
@@ -123,9 +125,9 @@
        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;
    }
@@ -173,6 +175,8 @@
        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));
@@ -191,6 +195,22 @@
        }
    }
    //  워크플로우를 사용하는 부서 정보를 추가한다.
    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)
@@ -203,7 +223,15 @@
            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;
            }
        }
@@ -223,6 +251,8 @@
        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);
@@ -267,15 +297,16 @@
                    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);