From f8d35ef0bfc812494f7d30dff1d075a3327209f1 Mon Sep 17 00:00:00 2001
From: minhee <alsdldlfrl@gmail.com>
Date: 금, 11 2월 2022 18:30:04 +0900
Subject: [PATCH] - 사용자 정의 필드 필드 유형 변경시 기본값 항목 표시 오류 수정 폼에도 적용 - 입력 폼에서 탭키 안먹는 현상 수정

---
 src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java |  110 ++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 96 insertions(+), 14 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java
index 54a9c67..aaef9a8 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java
@@ -60,10 +60,16 @@
     private WorkflowStatusService workflowStatusService;
 
     @Autowired
+    private WorkflowDepartmentService workflowDepartmentService;
+
+    @Autowired
     private WorkspaceService workspaceService;
 
     @Autowired
     private UserWorkspaceService userWorkspaceService;
+
+    @Autowired
+    private IssueTypeService issueTypeService;
 
     @Autowired
     private UserLevelService userLevelService;
@@ -118,8 +124,10 @@
         project.setProjectKey("BTS");
         project.setStatus(Project.PROJECT_OPEN);
         project.setDescription(this.messageAccessor.message("common.intoTheSystemIssueManagementProject")); // �떆�뒪�뀥�뿉�꽌 湲곕낯�쑝濡� �젣怨듬릺�뒗 �씠�뒋 愿�由� �봽濡쒖젥�듃�엯�땲�떎.
-        project.setStartDate(DateUtil.convertDateToYYYYMMDD(new Date()));
-        project.setEndDate(DateUtil.convertDateToYYYYMMDD(DateUtil.addDays(new Date(), 3650)));
+        //project.setStartDate(DateUtil.convertDateToYYYYMMDD(new Date()));
+        //project.setEndDate(DateUtil.convertDateToYYYYMMDD(DateUtil.addDays(new Date(), 3650)));
+        project.setStartDate("");//null�몴�떆 諛⑹�
+        project.setEndDate("");
         //  湲곕낯�쑝濡� �깮�꽦�릺�뒗 �봽濡쒖젥�듃�쓽 �쑀�삎�� BTS
         project.setProjectType(ProjectType.BTS_PROJECT);
         project.setWorkspace(workspace);
@@ -368,8 +376,7 @@
             //  愿�由ъ옄�씪 �븣
             UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId());
             if (this.userWorkspaceService.checkWorkspaceManager(user)
-                    || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_PROJECT)
-                    || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_ISSUE_PROJECT_ALL)) {
+                    || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_PROJECT)) {
                 results = this.projectMapper.findByWorkspaceManager(condition);
                 totalCount = this.projectMapper.countByWorkspaceManager(condition);
             }
@@ -387,6 +394,7 @@
         int totalPage = (int) Math.ceil((totalCount - 1) / pageable.getPageSize()) + 1;
         //  �봽濡쒖젥�듃 議고쉶 寃곌낵瑜� ProjectVos 濡� 蹂��솚�븳�떎. - 愿�由ъ옄, �씪諛� �궗�슜�옄 �젙蹂� 異붽�
         List<ProjectVo> projectVos = this.makeProjectVos(results, user);
+        this.setParentProject(projectVos);
         this.setChildrenProject(projectVos, user);
 
         resJsonData.put(Constants.RES_KEY_CONTENTS, projectVos);
@@ -394,6 +402,13 @@
                 totalPage, totalCount));
 
         return projectVos;
+    }
+
+    //  �씠�뒋�쑀�삎�뿉 �냽�븳 �봽濡쒖젥�듃 紐⑸줉�쓣 議고쉶�븳�떎.
+    @Override
+    @Transactional(readOnly = true)
+    public void findIssueType(Map<String, Object> resJsonData, ProjectCondition condition) {
+        resJsonData.put(Constants.RES_KEY_CONTENTS, this.projectMapper.findByIssueType(condition));
     }
 
     void setChildrenProject(List<ProjectVo> projectVos, User user) {
@@ -447,6 +462,20 @@
         }
 
         return projectVos;
+    }
+
+    //  �긽�쐞 �봽濡쒖젥�듃瑜� 李얠븘以��떎.
+    private void setParentProject(List<ProjectVo> projectVos) {
+        for (ProjectVo projectVo : projectVos) {
+            ProjectClosure projectClosure = this.projectClosureRepository.findByProjectId(projectVo.getId());
+            if (projectClosure != null) {
+                Project parentProject = this.getProject(projectClosure.getParentProject().getId());
+                ProjectVo parentProjectVo = ConvertUtil.copyProperties(parentProject, ProjectVo.class);
+                parentProjectVo.setParentYn(true);
+                ConvertUtil.copyProperties(parentProjectVo, projectVo);
+                this.setProjectDepartment(projectVo);
+            }
+        }
     }
 
     //  愿�由ъ옄, �씪諛� �궗�슜�옄瑜� 議곌굔�뿉 �뵲�씪 李얠븘以��떎.
@@ -562,7 +591,7 @@
         User user = this.webAppUtil.getLoginUserObject();
 
         //  �썙�겕�뒪�럹�씠�뒪�뿉�꽌 湲곕낯�쑝濡� �젣怨듬릺�뒗 �봽濡쒖젥�듃�뿉 ���븳 泥댄겕
-        this.checkDefaultProject(project, projectForm);
+        //this.checkDefaultProject(project, projectForm);
         //  �닔�젙 沅뚰븳 泥댄겕
         this.checkModifyPermission(project.getId(), user);
         //  愿�由ъ옄 蹂�寃�
@@ -687,6 +716,20 @@
         }
     }
 
+    private void checkUsingIssueType(Long projectId) {
+        Boolean del = Boolean.FALSE;
+
+        List<IssueType> usingIssueTypes = this.issueTypeService.findByProjectId(projectId);
+        if (usingIssueTypes == null || usingIssueTypes.isEmpty()) {
+            del = true;
+        }
+
+        if (!del) {
+            throw new OwlRuntimeException(
+                    this.messageAccessor.getMessage(MsgConstants.PROJECT_NOT_DELETE));
+        }
+    }
+
     //  濡쒓렇�씤�븳 �궗�슜�옄媛� 愿�由ъ옄 �뿭�븷�뿉 �냼�냽�릺�뼱 �엳�뒗吏� �솗�씤�븳�떎.
     private void checkModifyPermission(Long projectId, User user) {
         Boolean hasPermission = Boolean.FALSE;
@@ -779,8 +822,11 @@
         }
         projectRole.getProjectRoleDepartments().clear();
 
+        this.checkDepartmentOfWorkflow(project, projectForm.getDepartmentIds());
+
         for (Long departmentId : projectForm.getDepartmentIds()) {
             Department department = this.departmentService.getDepartment(departmentId);
+
             department.addProjectRole(projectRole);
         }
 
@@ -794,6 +840,33 @@
 
         return results;
 
+    }
+
+    /**
+     * �봽濡쒖젥�듃�� �뿰寃곕맂 �씠�뒋�쑀�삎�쓽 �썙�겕�뵆濡쒖슦�뿉�꽌 �꽕�젙�븳 遺��꽌�뒗 �봽濡쒖젥�듃 �떞�떦遺��꽌�뿉�꽌 �젣�쇅 遺덇�
+     * @param project Project
+     * @param departmentIds List<Long>
+     */
+    private void checkDepartmentOfWorkflow(Project project, List<Long> departmentIds) {
+        List<IssueType> issueTypes = this.issueTypeService.findByProjectId(project.getId());
+
+        List<Long> workflowDepartmentIds = Lists.newArrayList();
+
+        if (issueTypes != null && issueTypes.size() > 0) {
+            for (IssueType issueType : issueTypes) {
+                List<WorkflowDepartment> workflowDepartments = this.workflowDepartmentService.find(issueType.getWorkflow().getId());
+                if (workflowDepartments != null && workflowDepartments.size() > 0) {
+                    for (WorkflowDepartment workflowDepartment : workflowDepartments) {
+                        workflowDepartmentIds.add(workflowDepartment.getDepartment().getId());
+
+                        if (!departmentIds.containsAll(workflowDepartmentIds)) {
+                            throw new OwlRuntimeException(
+                                    this.messageAccessor.getMessage(MsgConstants.PROJECT_DEPARTMENT_NOT_EQUAL_WORKFLOW));
+                        }
+                    }
+                }
+            }
+        }
     }
 
     //  �봽濡쒖젥�듃 李몄뿬, �젣�쇅 �넻吏� �젙蹂대�� 以묐났�쑝濡� �굹媛�吏� �븡�룄濡� 泥댄겕�븳�떎.
@@ -1025,10 +1098,11 @@
     private void removeProjects(Long projectId) {
         Project project = this.getProject(projectId);
         //  湲곕낯 �봽濡쒖젥�듃�뒗 �궘�젣 湲덉�
-        if (project.getDefaultYn()) {
+        /*if (project.getDefaultYn()) {
             throw new OwlRuntimeException(
                     this.messageAccessor.getMessage(MsgConstants.DEFAULT_PROJECT_NOT_REMOVE));
-        }
+        }*/
+        this.checkUsingIssueType(project.getId());
 
         //  濡쒓렇�씤�븳 �궗�슜�옄媛� 愿�由ъ옄 �뿭�븷�뿉 �냼�냽�릺�뼱 �엳�뒗吏� �솗�씤�븳�떎.
         this.checkModifyPermission(project.getId(), this.webAppUtil.getLoginUserObject());
@@ -1083,7 +1157,7 @@
         projectCondition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());
         projectCondition.setProjectType(projectType);
         projectCondition.setStatuses(statuses);
-
+        this.SetMyDepartmentId(projectCondition);
         return this.projectMapper.findByWorkspaceIdAndIncludeProject(projectCondition);
     }
 
@@ -1092,6 +1166,7 @@
     public List<Map<String, Object>> findByWorkspaceIdAndIncludeProject(ProjectCondition projectCondition) {
         projectCondition.setLoginUserId(this.webAppUtil.getLoginId());
         projectCondition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());
+        this.SetMyDepartmentId(projectCondition);
         return this.projectMapper.findByWorkspaceIdAndIncludeProject(projectCondition);
     }
 
@@ -1118,7 +1193,15 @@
     public List<Map<String, Object>> findByWorkspaceIdAndIncludeProjectAll(ProjectCondition projectCondition) {
         projectCondition.setLoginUserId(this.webAppUtil.getLoginId());
         projectCondition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());
-        return this.projectMapper.findByWorkspaceIdAndIncludeProjectAll(projectCondition);
+
+        UserWorkspace userWorkspace = this.userWorkspaceService.findWorkspaceManager(this.webAppUtil.getLoginId());
+        List<Map<String, Object>> results = Lists.newArrayList();
+        if(userWorkspace != null) {// �썙�겕�뒪�럹�씠�뒪 愿�由ъ옄�씪寃쎌슦
+            results = this.projectMapper.findByWorkspaceIdAndProjectAll(projectCondition);
+        } else {
+            results = this.projectMapper.findByWorkspaceIdAndIncludeProjectAll(projectCondition);
+        }
+        return results;
     }
 
     //  �쁽�옱 �젒洹쇳븳 �뾽臾닿났媛꾩뿉�꽌 李몄뿬�븯怨� �엳�뒗 �봽濡쒖젥�듃瑜� 議고쉶�븳�떎. - �긽�떒 �봽濡쒖젥�듃 紐⑸줉�뿉�꽌 �궗�슜
@@ -1137,10 +1220,10 @@
         List<Map<String, Object>> results;
 
         if (this.userWorkspaceService.checkWorkspaceManager(user)
-                || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_PROJECT)
-                || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_ISSUE_PROJECT_ALL)) {
+                || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_PROJECT)) {
             results = this.projectMapper.findByWorkspaceManager(projectCondition);
         } else {
+            this.SetMyDepartmentId(projectCondition);
             results = this.projectMapper.findByWorkspaceIdAndIncludeProject(projectCondition);
         }
         List<ProjectVo> projectVos = this.makeProjectByVos(results);
@@ -1175,8 +1258,7 @@
         UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId());
 
         if (this.userWorkspaceService.checkWorkspaceManager(user)
-                || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_PROJECT)
-                || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_ISSUE_PROJECT_ALL)) {
+                || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_PROJECT)) {
             results = this.projectMapper.findByWorkspaceManager(projectCondition);
         }
         else {
@@ -1268,4 +1350,4 @@
         resJsonData.put(Constants.RES_KEY_CONTENTS, ConvertUtil.copyProperties(project, ProjectVo.class));
     }
 
-}
+}
\ No newline at end of file

--
Gitblit v1.8.0