package kr.wisestone.owl.service.impl;
|
|
import com.google.common.collect.Lists;
|
import kr.wisestone.owl.constant.Constants;
|
import kr.wisestone.owl.constant.MsgConstants;
|
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.UserCondition;
|
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.*;
|
|
@Service
|
public class UserDepartmentServiceImpl extends AbstractServiceImpl<UserDepartment, Long, JpaRepository<UserDepartment, Long>> implements UserDepartmentService {
|
|
@Autowired
|
private UserDepartmentRepository userDepartmentRepository;
|
|
@Autowired
|
private DepartmentService departmentService;
|
|
@Autowired
|
private UserService userService;
|
|
@Autowired
|
private SimpMessagingTemplate simpMessagingTemplate;
|
|
@Override
|
protected JpaRepository<UserDepartment, Long> getRepository() {
|
return this.userDepartmentRepository;
|
}
|
|
@Override
|
public void userDepartmentDetail(Map<String, Object> resJsonData, UserCondition userCondition) {
|
if (userCondition != null) {
|
// List<UserDepartment> userDepartments = this.userDepartmentService.getUserDepartments(userId);
|
// DepartmentCondition condition = new DepartmentCondition();
|
//
|
// List<Long> list = Lists.newArrayList();
|
// for (UserDepartment userDepartment : userDepartments) {
|
// list.add(userDepartment.getDepartmentId());
|
// }
|
// condition.setDepartmentIds(list);
|
List<Map<String, Object>> results = this.departmentService.findByDepartmentIds(userCondition);
|
resJsonData.put(Constants.RES_KEY_CONTENTS, this.makeDepartmentVos(results));
|
|
// for (UserDepartment userDepartment : userDepartments) {
|
// Department department = this.departmentService.findOne(userDepartment.getDepartmentId());
|
// departmentVos.add(ConvertUtil.copyProperties(department, DepartmentVo.class));
|
// }
|
// departmentVos = ConvertUtil.convertObjectsToClasses(userDepartments, DepartmentVo.class);
|
}
|
}
|
|
|
private List<DepartmentVo> makeDepartmentVos(List<Map<String, Object>> results) {
|
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);
|
}
|
|
return departmentVos;
|
}
|
|
@Override
|
public void userDepartmentModify(UserDepartmentForm userDepartmentForm) {
|
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로 조회한다.
|
// @Override
|
// public List<DepartmentVo> getUserDepartments (Long id) {
|
// if (id == null) {
|
// throw new OwlRuntimeException(
|
// this.messageAccessor.getMessage(MsgConstants.DEPARTMENT_NOT_EXIST));
|
// }
|
//
|
// List<DepartmentVo> userDepartments = this.userDepartmentRepository.findByUserId(id);
|
//
|
// if (userDepartments == null) {
|
// throw new OwlRuntimeException(
|
// this.messageAccessor.getMessage(MsgConstants.DEPARTMENT_NOT_EXIST));
|
// }
|
//
|
// return userDepartments;
|
// }
|
}
|