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.repository.UserDepartmentRepository; import kr.wisestone.owl.service.DepartmentService; import kr.wisestone.owl.service.UserDepartmentService; import kr.wisestone.owl.util.ConvertUtil; 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.stereotype.Service; import java.util.*; @Service public class UserDepartmentServiceImpl extends AbstractServiceImpl> implements UserDepartmentService { @Autowired private UserDepartmentRepository userDepartmentRepository; @Autowired private DepartmentService departmentService; @Override protected JpaRepository getRepository() { return this.userDepartmentRepository; } @Override public void userDepartmentDetail(Map resJsonData, UserCondition userCondition) { if (userCondition != null) { // List userDepartments = this.userDepartmentService.getUserDepartments(userId); // DepartmentCondition condition = new DepartmentCondition(); // // List list = Lists.newArrayList(); // for (UserDepartment userDepartment : userDepartments) { // list.add(userDepartment.getDepartmentId()); // } // condition.setDepartmentIds(list); List> 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 makeDepartmentVos(List> results) { List departmentVos = Lists.newArrayList(); for (Map 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(); // 기존 데이터 삭제 this.userDepartmentRepository.removeByUserId(userId); // 새로운 데이터 추가 List 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); } @Override public List findByDepartmentId(Long id) { return this.userDepartmentRepository.findByDepartmentId(id); } // 사용자 부서 ID로 조회한다. // @Override // public List getUserDepartments (Long id) { // if (id == null) { // throw new OwlRuntimeException( // this.messageAccessor.getMessage(MsgConstants.DEPARTMENT_NOT_EXIST)); // } // // List userDepartments = this.userDepartmentRepository.findByUserId(id); // // if (userDepartments == null) { // throw new OwlRuntimeException( // this.messageAccessor.getMessage(MsgConstants.DEPARTMENT_NOT_EXIST)); // } // // return userDepartments; // } }