From 9f7091d2bf6e1353e3e747f3db49a0b933c2bd1d Mon Sep 17 00:00:00 2001
From: wyu <kknd09321@nate.com>
Date: 목, 11 11월 2021 21:38:10 +0900
Subject: [PATCH] 사용자 관리 부서 상세 백앤드 수정

---
 src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java        |    3 
 src/main/resources/mybatis/query-template/department-template.xml             |    8 ++
 src/main/java/kr/wisestone/owl/web/form/UserDepartmentForm.java               |    4 
 src/main/webapp/scripts/app/workspace/workspaceDepartmentModify.controller.js |   24 +++++--
 src/main/webapp/scripts/components/utils/autoComplete.controller.js           |    2 
 src/main/webapp/scripts/app/workspace/workspaceUserConfig.controller.js       |    5 +
 src/main/webapp/views/workspace/workspaceDepartmentModify.html                |    4 
 src/main/java/kr/wisestone/owl/web/condition/DepartmentCondition.java         |   19 ++++++
 src/main/java/kr/wisestone/owl/service/DepartmentService.java                 |    4 -
 src/main/java/kr/wisestone/owl/repository/UserDepartmentRepository.java       |    6 ++
 src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java      |   11 +--
 src/main/java/kr/wisestone/owl/service/impl/UserDepartmentServiceImpl.java    |   29 +++++++--
 src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js  |    6 +-
 13 files changed, 86 insertions(+), 39 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/repository/UserDepartmentRepository.java b/src/main/java/kr/wisestone/owl/repository/UserDepartmentRepository.java
index 24b6a6b..58d22c3 100644
--- a/src/main/java/kr/wisestone/owl/repository/UserDepartmentRepository.java
+++ b/src/main/java/kr/wisestone/owl/repository/UserDepartmentRepository.java
@@ -2,9 +2,15 @@
 
 import kr.wisestone.owl.domain.UserDepartment;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 
+import javax.transaction.Transactional;
 import java.util.List;
 
 public interface UserDepartmentRepository extends JpaRepository<UserDepartment, Long> {
     List<UserDepartment> findByUserId(Long userId);
+
+    @Transactional
+    void removeByUserId(@Param("userId") Long userId);
 }
diff --git a/src/main/java/kr/wisestone/owl/service/DepartmentService.java b/src/main/java/kr/wisestone/owl/service/DepartmentService.java
index 8e45f0b..e09de70 100644
--- a/src/main/java/kr/wisestone/owl/service/DepartmentService.java
+++ b/src/main/java/kr/wisestone/owl/service/DepartmentService.java
@@ -5,6 +5,7 @@
 import kr.wisestone.owl.web.condition.DepartmentCondition;
 import kr.wisestone.owl.web.condition.UserCondition;
 import kr.wisestone.owl.web.form.DepartmentForm;
+import kr.wisestone.owl.web.form.UserDepartmentForm;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.ui.Model;
@@ -32,7 +33,4 @@
     boolean department(Long id);
 
     List<Map<String, Object>> findByDepartmentIds( UserCondition condition);
-
-
-
 }
diff --git a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
index 911f3db..e4d2482 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
@@ -105,15 +105,9 @@
                     this.messageAccessor.getMessage(MsgConstants.COMPANY_REMOVE_NOT_SELECT));
         }
         for (Long id : companyFieldForm.getRemoveIds()) {
-            if (!this.userService.useUserLevel(id)) {
-                this.companyFieldRepository.deleteById(id);
-            } else {
-                throw new OwlRuntimeException(
-                        this.messageAccessor.getMessage(MsgConstants.DEPARTMENT_ALREADY_IN_USE));
-            }
-
+            this.companyFieldRepository.deleteById(id);
+            this.companyFieldRepository.flush();
         }
-        this.companyFieldRepository.flush();
     }
 
     // �뾽泥� 紐⑸줉�쓣 �뿊��濡� �떎�슫濡쒕뱶 �븳�떎.
@@ -147,6 +141,7 @@
 
         excelInfo.setDatas(companyFieldVos);
 
+        System.out.println(excelInfo);
         model.addAttribute(Constants.EXCEL, excelInfo);
         return new ModelAndView(this.excelView);
     }
diff --git a/src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java
index 749724d..763d552 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java
@@ -6,6 +6,7 @@
 import kr.wisestone.owl.web.condition.DepartmentCondition;
 import kr.wisestone.owl.web.condition.UserCondition;
 import kr.wisestone.owl.web.form.DepartmentForm;
+import kr.wisestone.owl.web.form.UserDepartmentForm;
 import org.springframework.ui.Model;
 import com.google.common.collect.Lists;
 import kr.wisestone.owl.common.ExcelConditionCheck;
@@ -175,13 +176,13 @@
         return this.departmentMapper.findByDepartmentIds(condition);
     }
 
-
     //  寃��깋 寃곌낵瑜� DepartmentVo 濡� 蹂��솚�븳�떎.
     private List<DepartmentVo> convertDepartmentVoToMap(List<Map<String, Object>> results, Long totalDepartmentsCount, Pageable pageable, Map<String, Object> resJsonData) {
         List<DepartmentVo> departmentVos = Lists.newArrayList();
 
         for (Map<String, Object> result : results) {
             DepartmentVo departmentVo = ConvertUtil.convertMapToClass(result, DepartmentVo.class);
+            departmentVo.setByName(departmentVo.getDepartmentName());
             departmentVos.add(departmentVo);
         }
 
diff --git a/src/main/java/kr/wisestone/owl/service/impl/UserDepartmentServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/UserDepartmentServiceImpl.java
index 4cec1b7..09bdbb8 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/UserDepartmentServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/UserDepartmentServiceImpl.java
@@ -3,8 +3,7 @@
 import com.google.common.collect.Lists;
 import kr.wisestone.owl.constant.Constants;
 import kr.wisestone.owl.constant.MsgConstants;
-import kr.wisestone.owl.domain.Department;
-import kr.wisestone.owl.domain.UserDepartment;
+import kr.wisestone.owl.domain.*;
 import kr.wisestone.owl.exception.OwlRuntimeException;
 import kr.wisestone.owl.repository.UserDepartmentRepository;
 import kr.wisestone.owl.service.DepartmentService;
@@ -19,10 +18,7 @@
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Service;
 
-import java.util.AbstractList;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Service
 public class UserDepartmentServiceImpl extends AbstractServiceImpl<UserDepartment, Long, JpaRepository<UserDepartment, Long>> implements UserDepartmentService {
@@ -59,6 +55,8 @@
 //            departmentVos = ConvertUtil.convertObjectsToClasses(userDepartments, DepartmentVo.class);
         }
     }
+
+
     private List<DepartmentVo> makeDepartmentVos(List<Map<String, Object>> results) {
         List<DepartmentVo> departmentVos = Lists.newArrayList();
 
@@ -73,10 +71,25 @@
 
     @Override
     public void userDepartmentModify(UserDepartmentForm userDepartmentForm) {
-        UserDepartment userDepartment = ConvertUtil.copyProperties(userDepartmentForm, UserDepartment.class);
-        userDepartmentRepository.saveAndFlush(userDepartment);
+        Long userId = userDepartmentForm.getUserId();
+
+        // 湲곗〈 �뜲�씠�꽣 �궘�젣
+        this.userDepartmentRepository.removeByUserId(userId);
+
+        // �깉濡쒖슫 �뜲�씠�꽣 異붽�
+        List<UserDepartment> list = Lists.newArrayList();
+        for (Long departmentId : userDepartmentForm.getIds()){
+            UserDepartment userDepartment = new UserDepartment();
+            userDepartment.setUserId(userId);
+            userDepartment.setDepartmentId(departmentId);
+
+            list.add(userDepartment);
+        }
+
+        this.userDepartmentRepository.saveAll(list);
     }
 
+
     // �궗�슜�옄 遺��꽌 ID濡� 議고쉶�븳�떎.
 //    @Override
 //    public List<DepartmentVo> getUserDepartments (Long id) {
diff --git a/src/main/java/kr/wisestone/owl/web/condition/DepartmentCondition.java b/src/main/java/kr/wisestone/owl/web/condition/DepartmentCondition.java
index 33af7e6..010f1e8 100644
--- a/src/main/java/kr/wisestone/owl/web/condition/DepartmentCondition.java
+++ b/src/main/java/kr/wisestone/owl/web/condition/DepartmentCondition.java
@@ -2,6 +2,7 @@
 
 import com.google.common.collect.Lists;
 import kr.wisestone.owl.util.ConvertUtil;
+import kr.wisestone.owl.util.MapUtil;
 
 import java.util.List;
 import java.util.Map;
@@ -15,13 +16,21 @@
     private String departmentDescription;
     private Long departmentCount;
 
+    private List<Long> excludeIds = Lists.newArrayList();
+
     private List<Long> departmentIds = Lists.newArrayList();
 
     private Integer Page;
     private Integer PageSize;
 
     public static DepartmentCondition make(Map<String, Object> departmentConditions) {
-        return ConvertUtil.convertMapToClass(departmentConditions, DepartmentCondition.class);
+        DepartmentCondition condition = ConvertUtil.convertMapToClass(departmentConditions, DepartmentCondition.class);
+
+        if (MapUtil.getStrings(departmentConditions, "excludeIds") != null) {
+            condition.setExcludeIds(MapUtil.getLongs(departmentConditions, "excludeIds"));
+        }
+
+        return condition;
     }
 
     public Long getId() {
@@ -79,4 +88,12 @@
     public void setDepartmentIds(List<Long> departmentIds) {
         this.departmentIds = departmentIds;
     }
+
+    public List<Long> getExcludeIds() {
+        return excludeIds;
+    }
+
+    public void setExcludeIds(List<Long> excludeIds) {
+        this.excludeIds = excludeIds;
+    }
 }
diff --git a/src/main/java/kr/wisestone/owl/web/form/UserDepartmentForm.java b/src/main/java/kr/wisestone/owl/web/form/UserDepartmentForm.java
index 4297c51..903c89c 100644
--- a/src/main/java/kr/wisestone/owl/web/form/UserDepartmentForm.java
+++ b/src/main/java/kr/wisestone/owl/web/form/UserDepartmentForm.java
@@ -20,8 +20,8 @@
     public static UserDepartmentForm make(Map<String, Object> params) {
         UserDepartmentForm form = ConvertUtil.convertMapToClass(params, UserDepartmentForm.class);
 
-        if (MapUtil.getLongs(params,"Ids") != null) {
-            form.setIds(MapUtil.getLongs(params, "Ids"));
+        if (MapUtil.getLongs(params,"ids") != null) {
+            form.setIds(MapUtil.getLongs(params, "ids"));
         }
         return form;
     }
diff --git a/src/main/resources/mybatis/query-template/department-template.xml b/src/main/resources/mybatis/query-template/department-template.xml
index 5c0a05e..95989ae 100644
--- a/src/main/resources/mybatis/query-template/department-template.xml
+++ b/src/main/resources/mybatis/query-template/department-template.xml
@@ -18,6 +18,14 @@
         <if test="id != '' and id != null">
             AND d.id like CONCAT('%',#{id},'%')
         </if>
+        <choose>
+            <when test="excludeIds != null and excludeIds.size != 0">
+                AND d.id NOT IN
+                <foreach collection="excludeIds" item="item" index="index" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </when>
+        </choose>
         <if test="pageSize != '' and pageSize != null">
             limit #{pageSize} offset #{page};
         </if>
diff --git a/src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js b/src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js
index a8f1813..2e2c309 100644
--- a/src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js
+++ b/src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js
@@ -135,10 +135,10 @@
                                         case "USE_DEPARTMENT_LIST" :
                                             makeTag += "<ul class='ul-not-comma'>";
 
-                                            if(scope.data.departmentVos.length == 0){ //�냽�빐�엳�뒗 遺��꽌媛� �뾾�쓣 寃쎌슦
-                                                makeTag += "<div style='cursor: pointer' ng-click='event.modifyUserDepartments(data.id)'>遺��꽌瑜� �꽑�깮�빐 二쇱꽭�슂.</div>";
+                                            if(scope.data.departmentVos != null && scope.data.departmentVos.length == 0){ //�냽�빐�엳�뒗 遺��꽌媛� �뾾�쓣 寃쎌슦
+                                                makeTag += "<div style='cursor: pointer' ng-click='event.modifyUserDepartments(data.id, data.userId)'>遺��꽌瑜� �꽑�깮�빐 二쇱꽭�슂.</div>";
                                             }else{
-                                                makeTag += "<div style='cursor: pointer' ng-click='event.modifyUserDepartments(data.id)'>";
+                                                makeTag += "<div style='cursor: pointer' ng-click='event.modifyUserDepartments(data.id, data.userId)'>";
                                                 angular.forEach(scope.data.departmentVos, function (departments) {
                                                     makeTag += "<li>" + departments.departmentName + "</li>";
                                                 });
diff --git a/src/main/webapp/scripts/app/workspace/workspaceDepartmentModify.controller.js b/src/main/webapp/scripts/app/workspace/workspaceDepartmentModify.controller.js
index e274656..1c8f2a8 100644
--- a/src/main/webapp/scripts/app/workspace/workspaceDepartmentModify.controller.js
+++ b/src/main/webapp/scripts/app/workspace/workspaceDepartmentModify.controller.js
@@ -17,16 +17,16 @@
                     formCheck : formCheck,  //  �뤌 泥댄겕
                     detail : detail,    //  �긽�꽭 �젙蹂� 議고쉶
                     removeDepartments : removeDepartments,  //  異붽��븳 遺��꽌 �젣嫄�
+                    getDepartmentListCallBack : getDepartmentListCallBack
                 };
 
                 $scope.vm = {
                     id : parameter.id,
+                    userId : parameter.userId,
                     form : {
-                        id : parameter.id,
-                        departmentList : [],    // �쁽�옱 遺��꽌 紐⑸줉
                         departments : [] // 遺��꽌
                     },
-                    departmentName : [], //遺��꽌紐� 寃��깋
+                    departmentName : "", //遺��꽌紐� 寃��깋
                     /*autoCompletePage : {
                         project : {
                             page : 0,
@@ -36,9 +36,15 @@
                 };
                 angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector}));
 
+                function getDepartmentListCallBack(result) {
+                    console.log("TEST");
+
+                }
+
+
                 //  �꽑�깮 �븳 遺��꽌 �젣嫄�
                 function removeDepartments(index) {
-                    $scope.vm.form.departmentList.splice(index, 1);
+                    $scope.vm.form.departments.splice(index, 1);
                 }
 
                 function formCheck(formInvalid) {
@@ -54,8 +60,9 @@
                     $rootScope.spinner = true;
 
                     var content = {
-                        id : $scope.vm.form.id,
-                        departmentId : (function () {
+                        id : $scope.vm.id,
+                        userId : $scope.vm.userId,
+                        ids : (function () {
                             var departmentIds = [];
                             angular.forEach($scope.vm.form.departments, function (department) {
                                 departmentIds.push(department.id);
@@ -91,7 +98,8 @@
 
                 function detail() {
                     var contents = {
-                        id : parameter.id
+                        id : parameter.id,
+                        userId : parameter.userId
                     }
 
                     UserWorkspace.userDepartmentDetail($resourceProvider.getContent(//test
@@ -100,7 +108,7 @@
 
                         if (result.data.message.status === "success") {
                             if (angular.isDefined(result.data.data)) {
-                                $scope.vm.form.departmentList = result.data.data; //泥댄겕 �븘
+                                $scope.vm.form.departments = result.data.data;
                             }
                         }
                         else {
diff --git a/src/main/webapp/scripts/app/workspace/workspaceUserConfig.controller.js b/src/main/webapp/scripts/app/workspace/workspaceUserConfig.controller.js
index 461d586..f668b2d 100644
--- a/src/main/webapp/scripts/app/workspace/workspaceUserConfig.controller.js
+++ b/src/main/webapp/scripts/app/workspace/workspaceUserConfig.controller.js
@@ -271,7 +271,7 @@
                 }
 
                 //  �궗�슜�옄媛� �냽�빐�엳�뒗 遺��꽌 �닔�젙 �뙘�뾽
-                function modifyUserDepartments(id) {
+                function modifyUserDepartments(id, userId) {
                     $uibModal.open({
                         templateUrl : 'views/workspace/workspaceDepartmentModify.html',
                         size : "xlg",
@@ -281,7 +281,8 @@
                         resolve : {
                             parameter : function () {
                                 return {
-                                    id : id
+                                    id : id,
+                                    userId : userId
                                 };
                             }
                         }
diff --git a/src/main/webapp/scripts/components/utils/autoComplete.controller.js b/src/main/webapp/scripts/components/utils/autoComplete.controller.js
index 4e7ca2f..bc694ec 100644
--- a/src/main/webapp/scripts/components/utils/autoComplete.controller.js
+++ b/src/main/webapp/scripts/components/utils/autoComplete.controller.js
@@ -125,7 +125,7 @@
                     };
                     var deferred = $q.defer();
 
-                    UserWorkspace.userDepartmentDetail($resourceProvider.getContent(         //  �럹�씠吏� �뾽�뜲�씠�듃媛� �븘�슂�븳 而댄룷�꼳�듃 �씪寃쎌슦, page �뾽�뜲�씠�듃媛� �엳�쓣 寃쎌슦 湲곕낯 10媛쒖뵫 媛��졇�삤怨� �븘�땺寃쎌슦 25媛쒖뵫 媛��졇�삩�떎.
+                    UserWorkspace.departmentFind($resourceProvider.getContent(         //  �럹�씠吏� �뾽�뜲�씠�듃媛� �븘�슂�븳 而댄룷�꼳�듃 �씪寃쎌슦, page �뾽�뜲�씠�듃媛� �엳�쓣 寃쎌슦 湲곕낯 10媛쒖뵫 媛��졇�삤怨� �븘�땺寃쎌슦 25媛쒖뵫 媛��졇�삩�떎.
                         conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) {
                         if (result.data.message.status === "success") {
 
diff --git a/src/main/webapp/views/workspace/workspaceDepartmentModify.html b/src/main/webapp/views/workspace/workspaceDepartmentModify.html
index fb7c7a6..ca26f41 100644
--- a/src/main/webapp/views/workspace/workspaceDepartmentModify.html
+++ b/src/main/webapp/views/workspace/workspaceDepartmentModify.html
@@ -15,14 +15,14 @@
                 <js-autocomplete-multi data-input-name="departments"
                                        selected-model="vm.form.departments"
                                        search="vm.departmentName"
-                                       source="fn.getUserDepartmentList(vm.departmentName, vm.form.departmentList)"
+                                       source="fn.getUserDepartmentList(vm.departmentName, vm.form.departments)"
                                        input-disabled="false"
                                        translation-texts="{ count : 'common.userNum', empty : 'common.emptyUser' }"
                                        extra-settings="{ displayProp : 'byName' , idProp : 'id', imageable : false, maxlength : 100, autoResize : true }"></js-autocomplete-multi>
 
 
                 <div class="select3-selection__choicediv mt-10">
-                    <span class="select3-selection__choice" ng-repeat="department in vm.form.departmentList">
+                    <span class="select3-selection__choice" ng-repeat="department in vm.form.departments">
                         <span>{{department.byName}}</span> <!--�궗�슜�옄媛� �냽�빐 �엳�뒗 遺��꽌 �씠由� 異쒕젰-->
                         <span class="select3-selection__choice__remove" ng-click="fn.removeDepartments($index)">횞</span>
                     </span>

--
Gitblit v1.8.0