OWL ITS + 탐지시스템(인터넷 진흥원)
박지현
2022-03-07 398a4927e195755bd6a46be99337efd8dacc3dc2
src/main/java/kr/wisestone/owl/service/impl/UserDepartmentServiceImpl.java
@@ -3,26 +3,24 @@
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.mapper.UserMapper;
import kr.wisestone.owl.repository.UserDepartmentRepository;
import kr.wisestone.owl.service.DepartmentService;
import kr.wisestone.owl.service.UserDepartmentService;
import kr.wisestone.owl.service.UserService;
import kr.wisestone.owl.util.ConvertUtil;
import kr.wisestone.owl.util.MapUtil;
import kr.wisestone.owl.vo.*;
import kr.wisestone.owl.web.condition.DepartmentCondition;
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.data.jpa.repository.JpaRepository;
import org.springframework.messaging.simp.SimpMessagingTemplate;
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 {
@@ -32,6 +30,12 @@
    @Autowired
    private DepartmentService departmentService;
    @Autowired
    private UserService userService;
    @Autowired
    private SimpMessagingTemplate simpMessagingTemplate;
    @Override
    protected JpaRepository<UserDepartment, Long> getRepository() {
@@ -59,6 +63,8 @@
//            departmentVos = ConvertUtil.convertObjectsToClasses(userDepartments, DepartmentVo.class);
        }
    }
    private List<DepartmentVo> makeDepartmentVos(List<Map<String, Object>> results) {
        List<DepartmentVo> departmentVos = Lists.newArrayList();
@@ -73,8 +79,47 @@
    @Override
    public void userDepartmentModify(UserDepartmentForm userDepartmentForm) {
        UserDepartment userDepartment = ConvertUtil.copyProperties(userDepartmentForm, UserDepartment.class);
        userDepartmentRepository.saveAndFlush(userDepartment);
        Long userId = userDepartmentForm.getUserId();
        User user = this.userService.getUser(userId);
        // 기존 데이터 삭제
        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);
        //  부서 변경 된 유저 로그아웃 시키기
        this.simpMessagingTemplate.convertAndSendToUser(user.getAccount(), "/notification/changeUserDepartment", this.messageAccessor.getMessage(MsgConstants.USER_DEPARTMENT_CHANGE));
        //  세션 업데이트
        //SecurityUtils.setUserToSession(user);
    }
    @Override
    public List<UserDepartment> findByDepartmentId(Long id) {
        return this.userDepartmentRepository.findByDepartmentId(id);
    }
    @Override
    public List<Department> findDepartment(Long userId) {
        List<UserDepartment> userDepartments = this.userDepartmentRepository.findByUserId(userId);
        if (userDepartments != null && userDepartments.size() > 0) {
            List<Department> departments = Lists.newArrayList();
            for (UserDepartment userDepartment : userDepartments) {
                Department department = this.departmentService.getDepartment(userDepartment.getDepartmentId());
                departments.add(department);
            }
            return departments;
        }
        return null;
    }
    // 사용자 부서 ID로 조회한다.