OWL ITS + 탐지시스템(인터넷 진흥원)
wyu
2021-11-11 9f7091d2bf6e1353e3e747f3db49a0b933c2bd1d
사용자 관리 부서 상세 백앤드 수정
13개 파일 변경됨
125 ■■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/repository/UserDepartmentRepository.java 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/DepartmentService.java 4 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java 11 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java 3 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/UserDepartmentServiceImpl.java 29 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/condition/DepartmentCondition.java 19 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/form/UserDepartmentForm.java 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/mybatis/query-template/department-template.xml 8 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js 6 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/workspace/workspaceDepartmentModify.controller.js 24 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/workspace/workspaceUserConfig.controller.js 5 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/components/utils/autoComplete.controller.js 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/workspace/workspaceDepartmentModify.html 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
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);
}
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);
}
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);
    }
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);
        }
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) {
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;
    }
}
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;
    }
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>
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>";
                                                });
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 {
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
                                };
                            }
                        }
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") {
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>