|
@@ -3,6 +3,8 @@ package com.ym.mec.biz.service.impl;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
|
|
|
import com.ym.mec.auth.api.entity.SysUser;
|
|
|
import com.ym.mec.auth.api.enums.SysUserType;
|
|
|
import com.ym.mec.auth.api.enums.YesOrNoEnum;
|
|
@@ -31,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import java.text.MessageFormat;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.Objects;
|
|
|
import java.util.Optional;
|
|
|
import java.util.Set;
|
|
@@ -69,10 +72,10 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
|
|
|
* 分页查询
|
|
|
* @param page IPage<SchoolStaff>
|
|
|
* @param query SchoolStaffWrapper.SchoolStaffQuery
|
|
|
- * @return IPage<SchoolStaff>
|
|
|
+ * @return IPage<SchoolStaffWrapper.SchoolStaff>
|
|
|
*/
|
|
|
@Override
|
|
|
- public IPage<SchoolStaff> selectPage(IPage<SchoolStaff> page, SchoolStaffWrapper.SchoolStaffQuery query) {
|
|
|
+ public IPage<SchoolStaffWrapper.SchoolStaff> selectPage(IPage<SchoolStaffWrapper.SchoolStaff> page, SchoolStaffWrapper.SchoolStaffQuery query) {
|
|
|
|
|
|
return page.setRecords(baseMapper.selectPage(page, query));
|
|
|
}
|
|
@@ -256,4 +259,59 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
|
|
|
|
|
|
return staffs.get(0);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据用户ID获取学校所有员工
|
|
|
+ *
|
|
|
+ * @param userId 用户ID
|
|
|
+ * @return List<SchoolStaffWrapper.SchoolStaff>
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<SchoolStaffWrapper.SchoolStaff> getAllStaffsBySchoolId(Long userId) {
|
|
|
+
|
|
|
+ // 员工信息
|
|
|
+ List<SchoolStaff> staffs = lambdaQuery().eq(SchoolStaff::getUserId, userId).list();
|
|
|
+ if (CollectionUtils.isEmpty(staffs)) {
|
|
|
+ throw new BizException("员工信息不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 登陆员工信息
|
|
|
+ SchoolStaff staff = staffs.get(0);
|
|
|
+
|
|
|
+ // 员工所在学校人员信息
|
|
|
+ SchoolStaffWrapper.SchoolStaffQuery query = SchoolStaffWrapper.SchoolStaffQuery
|
|
|
+ .builder()
|
|
|
+ .page(1)
|
|
|
+ .rows(9999)
|
|
|
+ .schoolId(staff.getSchoolId())
|
|
|
+ .build();
|
|
|
+ List<SchoolStaffWrapper.SchoolStaff> records = baseMapper.selectPage(QueryInfo.getPage(query), query);
|
|
|
+
|
|
|
+ List<SchoolStaffWrapper.SchoolStaff> sorted = Lists.newArrayList();
|
|
|
+ // 首先排除自己的信息,默认添加到第一位
|
|
|
+ records.stream().filter(x -> x.getUserId().longValue() == staff.getUserId()).findFirst().ifPresent(sorted::add);
|
|
|
+
|
|
|
+ if (CollectionUtils.isNotEmpty(sorted)) {
|
|
|
+ // 删除自己的信息
|
|
|
+ records.remove(sorted.get(0));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 对其他员工信息,重新排序后返回
|
|
|
+ if (CollectionUtils.isNotEmpty(records)) {
|
|
|
+
|
|
|
+ // 对返回数据排序:默认自己第一位,后面按照校长、分管领导,乐团领队、负责老师
|
|
|
+ Map<ESchoolStaffType, List<SchoolStaffWrapper.SchoolStaff>> collect = records.stream()
|
|
|
+ .collect(Collectors.groupingBy(SchoolStaffWrapper.SchoolStaff::getUserType));
|
|
|
+
|
|
|
+ for (ESchoolStaffType item : ESchoolStaffType.sorted()) {
|
|
|
+
|
|
|
+ if (collect.containsKey(item)) {
|
|
|
+ sorted.addAll(collect.get(item));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return sorted;
|
|
|
+ }
|
|
|
+
|
|
|
}
|