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