OWL ITS + 탐지시스템(인터넷 진흥원)
wyu
2021-11-11 8640de04cd67d3fa33ca188d6b45ed1a13d17386
사용자 관리 부서 상세 백앤드 수정
3개 파일 추가됨
16개 파일 변경됨
285 ■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/domain/UserDepartment.java 21 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/mapper/DepartmentMapper.java 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/DepartmentService.java 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java 8 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/UserWorkspaceServiceImpl.java 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/vo/DepartmentVo.java 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/vo/UserDepartmentVo.java 51 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/condition/DepartmentCondition.java 12 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/controller/DepartmentController.java 10 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/controller/UserDepartmentController.java 46 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/controller/UserWorkspaceController.java 3 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/form/UserDepartmentForm.java 60 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/migration/V1_11__Alter_Table.sql 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/mybatis/query-template/department-template.xml 16 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/workspace/workspaceDepartmentModify.controller.js 12 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/workspace/workspaceUserConfig.controller.js 4 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/components/utils/autoComplete.controller.js 8 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/workspace/workspaceDepartmentModify.html 10 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/domain/UserDepartment.java
@@ -10,13 +10,8 @@
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String departmentId;
    @ManyToOne(targetEntity = User.class, fetch = FetchType.LAZY)
    @JoinColumn(name="user_id")
    private User user;
    public UserDepartment(){}
    private Long departmentId;
    private Long userId;
    public Long getId() {
        return id;
@@ -26,19 +21,19 @@
        this.id = id;
    }
    public String getDepartmentId() {
    public Long getDepartmentId() {
        return departmentId;
    }
    public void setDepartmentId(String departmentId) {
    public void setDepartmentId(Long departmentId) {
        this.departmentId = departmentId;
    }
    public User getUser() {
        return user;
    public Long getUserId() {
        return userId;
    }
    public void setUser(User user) {
        this.user = user;
    public void setUserId(Long userId) {
        this.userId = userId;
    }
}
src/main/java/kr/wisestone/owl/mapper/DepartmentMapper.java
@@ -1,6 +1,8 @@
package kr.wisestone.owl.mapper;
import kr.wisestone.owl.vo.DepartmentVo;
import kr.wisestone.owl.web.condition.DepartmentCondition;
import kr.wisestone.owl.web.condition.UserCondition;
import org.springframework.stereotype.Repository;
import java.util.List;
@@ -18,4 +20,6 @@
    List<Map<String, Object>> findEvent();
    Long findBydepartmentId(Long Id);
    List<Map<String, Object>> findByDepartmentIds(UserCondition condition);
}
src/main/java/kr/wisestone/owl/service/DepartmentService.java
@@ -3,6 +3,7 @@
import kr.wisestone.owl.domain.Department;
import kr.wisestone.owl.vo.DepartmentVo;
import kr.wisestone.owl.web.condition.DepartmentCondition;
import kr.wisestone.owl.web.condition.UserCondition;
import kr.wisestone.owl.web.form.DepartmentForm;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
@@ -29,4 +30,7 @@
    ModelAndView downloadExcel(HttpServletRequest request, Model model);
    boolean department(Long id);
    List<Map<String, Object>> findByDepartmentIds( UserCondition condition);
}
src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java
@@ -4,6 +4,7 @@
import kr.wisestone.owl.mapper.DepartmentMapper;
import kr.wisestone.owl.service.UserService;
import kr.wisestone.owl.web.condition.DepartmentCondition;
import kr.wisestone.owl.web.condition.UserCondition;
import kr.wisestone.owl.web.form.DepartmentForm;
import org.springframework.ui.Model;
import com.google.common.collect.Lists;
@@ -115,6 +116,8 @@
        this.departmentRepository.flush();
    }
    // 부서 목록을 엑셀로 다운로드 한다.
    @Override
    public ModelAndView downloadExcel(HttpServletRequest request, Model model) {
@@ -175,6 +178,11 @@
        return this.departmentMapper.findBydepartmentId(Id) > 0;
    }
    @Override
    public List<Map<String, Object>> findByDepartmentIds(UserCondition condition) {
        return this.departmentMapper.findByDepartmentIds(condition);
    }
    //  검색 결과를 DepartmentVo 로 변환한다.
    private List<DepartmentVo> convertDepartmentVoToMap(List<Map<String, Object>> results, Long totalDepartmentsCount, Pageable pageable, Map<String, Object> resJsonData) {
src/main/java/kr/wisestone/owl/service/impl/UserWorkspaceServiceImpl.java
@@ -271,4 +271,5 @@
            this.userWorkspaceRepository.saveAll(userWorkspaces);
        }
    }
}
src/main/java/kr/wisestone/owl/vo/DepartmentVo.java
@@ -8,6 +8,7 @@
    private Long id;
    private String departmentName;
    private String departmentDescription;
    private String byName;
    private Long departmentCount;
    public DepartmentVo() {}
@@ -49,4 +50,12 @@
    public void setDepartmentCount(Long departmentCount) {
        this.departmentCount = departmentCount;
    }
    public String getByName() {
        return byName;
    }
    public void setByName(String byName) {
        this.byName = byName;
    }
}
src/main/java/kr/wisestone/owl/vo/UserDepartmentVo.java
New file
@@ -0,0 +1,51 @@
package kr.wisestone.owl.vo;
import kr.wisestone.owl.web.form.UserDepartmentForm;
public class UserDepartmentVo extends BaseVo {
    private Long id;
    private Long departmentId;
    private Long userId;
    private Long departmentCount;
    public UserDepartmentVo() {}
    public UserDepartmentVo(Long id, Long departmentId, Long userId) {
        this.id = id;
        this.departmentId = departmentId;
        this.userId = userId;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Long getDepartmentId() {
        return departmentId;
    }
    public void setDepartmentId(Long departmentId) {
        this.departmentId = departmentId;
    }
    public Long getUserId() {
        return userId;
    }
    public void setUserId(Long userId) {
        this.userId = userId;
    }
    public Long getDepartmentCount() {
        return departmentCount;
    }
    public void setDepartmentCount(Long departmentCount) {
        this.departmentCount = departmentCount;
    }
}
src/main/java/kr/wisestone/owl/web/condition/DepartmentCondition.java
@@ -1,7 +1,9 @@
package kr.wisestone.owl.web.condition;
import com.google.common.collect.Lists;
import kr.wisestone.owl.util.ConvertUtil;
import java.util.List;
import java.util.Map;
/**
@@ -12,6 +14,8 @@
    private String departmentName;
    private String departmentDescription;
    private Long departmentCount;
    private List<Long> departmentIds = Lists.newArrayList();
    private Integer Page;
    private Integer PageSize;
@@ -67,4 +71,12 @@
    public void setPageSize(Integer pageSize) {
        PageSize = pageSize;
    }
    public List<Long> getDepartmentIds() {
        return departmentIds;
    }
    public void setDepartmentIds(List<Long> departmentIds) {
        this.departmentIds = departmentIds;
    }
}
src/main/java/kr/wisestone/owl/web/controller/DepartmentController.java
@@ -32,7 +32,7 @@
    @RequestMapping(value = "/department/add", method = RequestMethod.POST)
    public
    @ResponseBody
    Map<String, Object> add(@RequestBody Map<String, Map<String, Object>> params) {
    Map<String, Object> departmentAdd(@RequestBody Map<String, Map<String, Object>> params) {
        Map<String, Object> resJsonData = new HashMap<>();
        Map<String, Object> content = params.get(Constants.REQ_KEY_CONTENT);
        this.departmentService.add(DepartmentForm.make(content));
@@ -44,7 +44,7 @@
    @RequestMapping(value = "/department/find", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
    public
    @ResponseBody
    Map<String, Object> find(@RequestBody Map<String, Map<String, Object>> params) {
    Map<String, Object> departmentFind(@RequestBody Map<String, Map<String, Object>> params) {
        Map<String, Object> resJsonData = new HashMap<>();
        Pageable pageable = this.pageUtil.convertPageable(this.getPageVo(params));
@@ -57,7 +57,7 @@
   @RequestMapping(value = "/department/detail", produces = MediaType.APPLICATION_JSON_VALUE)
   public
   @ResponseBody
   Map<String, Object> detail(@RequestBody Map<String, Map<String, Object>> params) {
   Map<String, Object> departmentDetail(@RequestBody Map<String, Map<String, Object>> params) {
       Map<String, Object> resJsonData = new HashMap<>();
       this.departmentService.detail(resJsonData, DepartmentCondition.make(params.get(Constants.REQ_KEY_CONTENT)));
@@ -68,7 +68,7 @@
   @RequestMapping(value = "/department/modify", produces = MediaType.APPLICATION_JSON_VALUE)
   public
   @ResponseBody
   Map<String, Object> modify(@RequestBody Map<String, Map<String, Object>> params) {
   Map<String, Object> departmentModify(@RequestBody Map<String, Map<String, Object>> params) {
       Map<String, Object> resJsonData = new HashMap<>();
       this.departmentService.modify(DepartmentForm.make(params.get(Constants.REQ_KEY_CONTENT)));
@@ -80,7 +80,7 @@
    @RequestMapping(value = "/department/remove", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
    public
    @ResponseBody
    Map<String, Object> remove(@RequestBody Map<String, Map<String, Object>> params) {
    Map<String, Object> departmentRemove(@RequestBody Map<String, Map<String, Object>> params) {
        Map<String, Object> resJsonData = new HashMap<>();
        Map<String, Object> content = params.get(Constants.REQ_KEY_CONTENT);
src/main/java/kr/wisestone/owl/web/controller/UserDepartmentController.java
New file
@@ -0,0 +1,46 @@
package kr.wisestone.owl.web.controller;
import kr.wisestone.owl.constant.Constants;
import kr.wisestone.owl.service.UserDepartmentService;
import kr.wisestone.owl.web.condition.UserCondition;
import kr.wisestone.owl.web.condition.UserDepartmentCondition;
import kr.wisestone.owl.web.form.UserDepartmentForm;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;
import java.util.Map;
@Controller
public class UserDepartmentController extends BaseController {
    @Autowired
    private UserDepartmentService userDepartmentService;
        @RequestMapping(value = "/userWorkspace/modifyDepartment", produces = MediaType.APPLICATION_JSON_VALUE)
        public
        @ResponseBody
        Map<String, Object> userDepartmentModify(@RequestBody Map<String, Map<String, Object>> params) {
            Map<String, Object> resJsonData = new HashMap<>();
            this.userDepartmentService.userDepartmentModify(UserDepartmentForm.make(params.get(Constants.REQ_KEY_CONTENT)));
            return this.setSuccessMessage(resJsonData);
        }
        @RequestMapping(value = "/userWorkspace/detailDepartment", produces = MediaType.APPLICATION_JSON_VALUE)
        public
        @ResponseBody
        Map<String, Object> userDepartmentDetail(@RequestBody Map<String, Map<String, Object>> params) {
            Map<String, Object> resJsonData = new HashMap<>();
            this.userDepartmentService.userDepartmentDetail(resJsonData, UserCondition.make(params.get(Constants.REQ_KEY_CONTENT)));
            return this.setSuccessMessage(resJsonData);
        }
}
src/main/java/kr/wisestone/owl/web/controller/UserWorkspaceController.java
@@ -3,7 +3,6 @@
import kr.wisestone.owl.constant.Constants;
import kr.wisestone.owl.service.UserWorkspaceService;
import kr.wisestone.owl.web.condition.UserWorkspaceCondition;
import kr.wisestone.owl.web.form.ProjectForm;
import kr.wisestone.owl.web.form.UserWorkspaceForm;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
@@ -25,6 +24,7 @@
    @Autowired
    private UserWorkspaceService userWorkspaceService;
    //  업무공간에 참여하는 사용자 조회
    @RequestMapping(value = "/userWorkspace/find", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
@@ -50,4 +50,5 @@
        return this.setSuccessMessage(resJsonData);
    }
}
src/main/java/kr/wisestone/owl/web/form/UserDepartmentForm.java
New file
@@ -0,0 +1,60 @@
package kr.wisestone.owl.web.form;
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;
public class UserDepartmentForm {
    private Long id;
    private Long departmentId;
    private Long userId;
    private List<Long> ids = Lists.newArrayList();
    public UserDepartmentForm() {
    }
    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"));
        }
        return form;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Long getDepartmentId() {
        return departmentId;
    }
    public void setDepartmentId(Long departmentId) {
        this.departmentId = departmentId;
    }
    public Long getUserId() {
        return userId;
    }
    public void setUserId(Long userId) {
        this.userId = userId;
    }
    public List<Long> getIds() {
        return ids;
    }
    public void setIds(List<Long> ids) {
        this.ids = ids;
    }
}
src/main/resources/migration/V1_11__Alter_Table.sql
@@ -45,8 +45,8 @@
CREATE TABLE `user_department`(
    `id` BIGINT(11) AUTO_INCREMENT,
    `department_id` VARCHAR(50) NULL,
    `user_id` VARCHAR(50) NULL,
    `department_id` BIGINT(11),
    `user_id` BIGINT(11),
    `register_id` BIGINT(20) NOT NULL,
    `register_date` TIMESTAMP NULL,
    `modify_id` BIGINT(20) NOT NULL,
src/main/resources/mybatis/query-template/department-template.xml
@@ -36,4 +36,20 @@
            AND d.id like CONCAT('%',#{id},'%')
        </if>
    </select>
    <select id="findByDepartmentIds" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.UserCondition">
        SELECT
        d.id as id,
        d.department_name as departmentName,
        d.department_description as departmentDescription
        FROM
        user_department ud
        INNER JOIN department d ON ud.department_id = d.id
        WHERE 1=1
        <if test="id != '' and id != null">
            AND ud.user_id = #{id}
        </if>
    </select>
</mapper>
src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js
@@ -135,7 +135,7 @@
                                        case "USE_DEPARTMENT_LIST" :
                                            makeTag += "<ul class='ul-not-comma'>";
                                            makeTag += "<div style='cursor: pointer' ng-click='event.modifyUserDepartments(scope.data.id)'>";
                                            makeTag += "<div style='cursor: pointer' ng-click='event.modifyUserDepartments(data.id)'>";
                                            angular.forEach(scope.data.departments, function (department) { //departmentVO로 수정 체크 필요
                                                makeTag += "<li>" + department.fieldValue + "</li>";
                                            });
src/main/webapp/scripts/app/workspace/workspaceDepartmentModify.controller.js
@@ -23,7 +23,7 @@
                    id : parameter.id,
                    form : {
                        id : parameter.id,
                        /*users : [],*/
                        departmentList : [],    // 현재 부서 목록
                        departments : [] // 부서
                    },
                    departmentName : "", //부서명 검색
@@ -34,7 +34,7 @@
                        }
                    },*/
                };
                // angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector}));
                angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector}));
                //  선택 한 부서 제거
                function removeDepartments(index) {
@@ -91,13 +91,17 @@
                }
                function detail() {
                    var contents = {
                        id : parameter.id
                    }
                    UserWorkspace.userDepartmentDetail($resourceProvider.getContent(
                        $scope.vm,
                        contents,
                        $resourceProvider.getPageContent(0, 1))).then(function (result) {
                        if (result.data.message.status === "success") {
                            if (angular.isDefined(result.data.data)) {
                                $scope.vm.form.departments = result.data.data.userDepartmentVos; //체크 필요
                                $scope.vm.form.departmentList = result.data.data; //체크 필요
                            }
                        }
                        else {
src/main/webapp/scripts/app/workspace/workspaceUserConfig.controller.js
@@ -64,7 +64,7 @@
                $scope.$on("getUserWorkspaceList", function () {
                    $scope.fn.getLevels();
                    $scope.fn.getDepartments();
                    $scope.fn.makeTableConfigs();
                    $scope.fn.getUserWorkspaceList(0);
                });
@@ -287,6 +287,8 @@
                        }
                    });
                }
                $scope.fn.makeTableConfigs();
            }
        ]);
    }
src/main/webapp/scripts/components/utils/autoComplete.controller.js
@@ -18,7 +18,7 @@
                var Project = $injector.get("Project");
                var Workflow = $injector.get("Workflow");
                var Issue = $injector.get("Issue");
                // var UserWorkspace = $injector.get("UserWorkspace");
                var UserWorkspace = $injector.get("UserWorkspace");
                var $log = $injector.get("$log");
                var SweetAlert = $injector.get("SweetAlert");
@@ -27,7 +27,7 @@
                $scope.fn.getProjectList = getProjectList;  //  프로젝트 목록 정보를 조회한다.
                $scope.fn.getIssueList = getIssueList;  //  일감 목록 정보를 조회한다.
                $scope.fn.getWorkflowList = getWorkflowList;    //  워크플로우 목록 정보를 조회한다.
                // $scope.fn.getDepartmentList = getDepartmentList;    //  부서 목록 정보를 조회한다.
                $scope.fn.getUserDepartmentList = getUserDepartmentList;    //  부서 목록 정보를 조회한다.
                function getUserList(query, excludeList, page, callBack) {
                    var conditions = {
@@ -111,7 +111,7 @@
                    return deferred.promise;
                }
                function getDepartmentList(query, excludeList, page, callBack) { //체크 필요
                function getUserDepartmentList(query, excludeList, page, callBack) { //체크 필요
                    var conditions = {
                        departmentName : query,
                        excludeIds : (function () { //어떤 역할? 체크 필요
@@ -125,7 +125,7 @@
                    };
                    var deferred = $q.defer();
                    UserWorkspace.find($resourceProvider.getContent(         //  페이징 업데이트가 필요한 컴포넌트 일경우, page 업데이트가 있을 경우 기본 10개씩 가져오고 아닐경우 25개씩 가져온다.
                    UserWorkspace.userDepartmentDetail($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,11 +15,11 @@
                <js-autocomplete-multi data-input-name="departments"
                                       selected-model="vm.form.departments"
                                       search="vm.departmentName"
                                       source="fn.getDepartments(vm.departmentName, vm.form.departments)"
                                       input-disabled="false"> <!--concat 체크 필요-->
                                       <!--translation-texts="{ count : 'common.userNum', empty : 'common.emptyUser' }"
                                       extra-settings="{ displayProp : 'byName' , idProp : 'id', imageable : true, imagePathProp : 'profile', type : 'user', maxlength : 100, autoResize : true }"-->
                </js-autocomplete-multi>
                                       source="fn.getUserDepartmentList(vm.departmentName, vm.form.users)"
                                       input-disabled="false"
                                       translation-texts="{ count : 'common.userNum', empty : 'common.emptyUser' }"
                                       extra-settings="{ displayProp : 'byName' , idProp : 'id', imageable : false, imagePathProp : 'profile', type : 'user', 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.departments">