瀏覽代碼

1.学生老师导出添加小组

yuanliang 1 年之前
父節點
當前提交
decbd96b44

+ 23 - 3
cooleshow-app/src/main/java/com/yonge/cooleshow/admin/controller/StudentController.java

@@ -7,9 +7,11 @@ import com.yonge.cooleshow.biz.dal.dto.VipSubmitReq;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.VipRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.Student;
+import com.yonge.cooleshow.biz.dal.entity.TenantGroup;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.service.MemberPriceSettingsService;
 import com.yonge.cooleshow.biz.dal.service.StudentService;
+import com.yonge.cooleshow.biz.dal.service.TenantGroupService;
 import com.yonge.cooleshow.biz.dal.service.VipCardRecordService;
 import com.yonge.cooleshow.biz.dal.vo.StudentVo;
 import com.yonge.cooleshow.biz.dal.vo.VipRecordVo;
@@ -41,12 +43,16 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @RestController
 @RequestMapping("${app-config.url.admin:}/student")
@@ -55,7 +61,7 @@ public class StudentController extends BaseController {
     @Autowired
     private StudentService studentService;
 
-    @Autowired
+    @Resource
     private SysUserFeignService sysUserFeignService;
 
     @Autowired
@@ -64,6 +70,9 @@ public class StudentController extends BaseController {
     @Autowired
     private VipCardRecordService vipCardRecordService;
 
+    @Autowired
+    private TenantGroupService tenantGroupService;
+
     @GetMapping("/detail/{id}")
     @ApiOperation(value = "详情", notes = "传入id")
     @ApiImplicitParams({
@@ -142,6 +151,16 @@ public class StudentController extends BaseController {
             throw new BizException("没有可导出数据");
         }
 
+        List<Long> tenantGroupIds = rows.stream().map(Student::getTenantGroupId)
+                .filter(next -> next != null && next != -1L).distinct().collect(Collectors.toList());
+        Map<Long, String> tenantGroupIdNameMap = new HashMap<>();
+        if (!tenantGroupIds.isEmpty()) {
+            Map<Long, String> tenantGroupMap = tenantGroupService.lambdaQuery()
+                    .in(TenantGroup::getId, tenantGroupIds)
+                    .list().stream().collect(Collectors.toMap(TenantGroup::getId, TenantGroup::getName));
+            tenantGroupIdNameMap.putAll(tenantGroupMap);
+        }
+
         for (StudentVo vo : rows) {
             if (vo.getDelFlag() == YesOrNoEnum.YES) {
                 vo.setUserStatus(UserStatusEnum.CLOSED);
@@ -152,13 +171,14 @@ public class StudentController extends BaseController {
                     vo.setUserStatus(UserStatusEnum.NORMAL);
                 }
             }
+            vo.setTenantGroupName(tenantGroupIdNameMap.getOrDefault(vo.getTenantGroupId(), ""));
         }
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"学生编号", "学生姓名", "真实姓名", "性别", "出生日期",
-                    "年龄", "专业", "手机号码", "是否是会员", "注册时间", "用户状态", "学生来源"}, new String[]{
+                    "年龄", "专业", "手机号码", "是否是会员", "注册时间", "用户状态", "学生来源","小组"}, new String[]{
                     "userId", "username", "realName", "gender.msg", "birthdate", "age", "subjectName", "phone",
-                    "isVip.msg", "createTime", "userStatus.msg", "tenantName"}, rows);
+                    "isVip.msg", "createTime", "userStatus.msg", "tenantName", "tenantGroupName"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=学生列表-" + DateUtil.getDate(new Date()) + ".xls");

+ 3 - 2
cooleshow-app/src/main/java/com/yonge/cooleshow/admin/controller/TeacherController.java

@@ -218,9 +218,10 @@ public class TeacherController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"老师编号", "昵称", "姓名", "手机号", "老师类型",
-                    "注册时间", "认证时间", "状态", "是否是会员", "徽章", "机构"}, new String[]{
+                    "注册时间", "认证时间", "状态", "是否是会员", "徽章", "机构", "小组"}, new String[]{
                     "userId", "username", "realName", "phone", "entryFlag.code == 1 ? '达人' : '游客'", "createTime",
-                    "entryAuthDate","userStatus.msg", "isVip.code == 1 ? '是' : '否'", "tag", "tenantName"}, rows);
+                    "entryAuthDate","userStatus.msg", "isVip.code == 1 ? '是' : '否'", "tag", "tenantName",
+                    "tenantGroupName"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=老师列表-" + DateUtil.getDate(new Date()) + ".xls");

+ 21 - 2
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/StudentController.java

@@ -7,9 +7,11 @@ import com.yonge.cooleshow.biz.dal.dto.VipSubmitReq;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.VipRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.Student;
+import com.yonge.cooleshow.biz.dal.entity.TenantGroup;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.service.MemberPriceSettingsService;
 import com.yonge.cooleshow.biz.dal.service.StudentService;
+import com.yonge.cooleshow.biz.dal.service.TenantGroupService;
 import com.yonge.cooleshow.biz.dal.service.VipCardRecordService;
 import com.yonge.cooleshow.biz.dal.vo.StudentVo;
 import com.yonge.cooleshow.biz.dal.vo.VipRecordVo;
@@ -47,7 +49,10 @@ import javax.validation.Valid;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @RestController
 @RequestMapping("/student")
@@ -65,6 +70,9 @@ public class StudentController extends BaseController {
     @Autowired
     private VipCardRecordService vipCardRecordService;
 
+    @Autowired
+    private TenantGroupService tenantGroupService;
+
     @GetMapping("/detail/{id}")
     @ApiOperation(value = "详情", notes = "传入id")
     @ApiImplicitParams({
@@ -143,6 +151,16 @@ public class StudentController extends BaseController {
             throw new BizException("没有可导出数据");
         }
 
+        List<Long> tenantGroupIds = rows.stream().map(Student::getTenantGroupId)
+                .filter(next -> next != null && next != -1L).distinct().collect(Collectors.toList());
+        Map<Long, String> tenantGroupIdNameMap = new HashMap<>();
+        if (!tenantGroupIds.isEmpty()) {
+            Map<Long, String> tenantGroupMap = tenantGroupService.lambdaQuery()
+                    .in(TenantGroup::getId, tenantGroupIds)
+                    .list().stream().collect(Collectors.toMap(TenantGroup::getId, TenantGroup::getName));
+            tenantGroupIdNameMap.putAll(tenantGroupMap);
+        }
+
         for (StudentVo vo : rows) {
             if (vo.getDelFlag() == YesOrNoEnum.YES) {
                 vo.setUserStatus(UserStatusEnum.CLOSED);
@@ -153,13 +171,14 @@ public class StudentController extends BaseController {
                     vo.setUserStatus(UserStatusEnum.NORMAL);
                 }
             }
+            vo.setTenantGroupName(tenantGroupIdNameMap.getOrDefault(vo.getTenantGroupId(), ""));
         }
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"学生编号", "学生姓名", "真实姓名", "性别", "出生日期",
-                    "年龄", "专业", "手机号码", "是否是会员", "注册时间", "用户状态", "学生来源"}, new String[]{
+                    "年龄", "专业", "手机号码", "是否是会员", "注册时间", "用户状态", "学生来源","小组"}, new String[]{
                     "userId", "username", "realName", "gender.msg", "birthdate", "age", "subjectName", "phone",
-                    "isVip.msg", "createTime", "userStatus.msg", "tenantName"}, rows);
+                    "isVip.msg", "createTime", "userStatus.msg", "tenantName", "tenantGroupName"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=学生列表-" + DateUtil.getDate(new Date()) + ".xls");

+ 3 - 2
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherController.java

@@ -223,9 +223,10 @@ public class TeacherController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"老师编号", "昵称", "姓名", "手机号", "老师类型",
-                    "注册时间", "认证时间", "状态", "是否是会员", "徽章", "机构"}, new String[]{
+                    "注册时间", "认证时间", "状态", "是否是会员", "徽章", "机构", "小组"}, new String[]{
                     "userId", "username", "realName", "phone", "entryFlag.code == 1 ? '达人' : '游客'", "createTime",
-                    "entryAuthDate","userStatus.msg", "isVip.code == 1 ? '是' : '否'", "tag", "tenantName"}, rows);
+                    "entryAuthDate","userStatus.msg", "isVip.code == 1 ? '是' : '否'", "tag", "tenantName",
+                    "tenantGroupName"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=老师列表-" + DateUtil.getDate(new Date()) + ".xls");

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentServiceImpl.java

@@ -461,6 +461,11 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
         }
         dataList.sort(Comparator.comparingInt(ExcelDataReaderProperty::getRowIndex));
 
+        QueryWrapper<TenantGroup> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(TenantGroup::getTenantId, tenantId);
+        List<TenantGroup> groups = tenantGroupMapper.selectList(queryWrapper);
+        Map<String, Long> groupNameIdMap = groups.stream().collect(Collectors.toMap(TenantGroup::getName, TenantGroup::getId));
+
         Map<String, Long> subjectIdNamemap = subjectDao.findAll(new HashMap<>())
                 .stream().collect(Collectors.toMap(next -> next.getName(), next -> next.getId()));
         Set<String> subjectNames = subjectIdNamemap.keySet();
@@ -485,6 +490,10 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
                 errMsg.add(String.format("第%s行声部不支持", msgRowNo));
             }
 
+            if (StringUtils.isNotEmpty(student.getTenantGroupName()) && !groupNameIdMap.containsKey(student.getTenantGroupName())) {
+                errMsg.add(String.format("第%s行小组不存在", msgRowNo));
+            }
+
             if (errMsg.size() > 100) {
                 break;
             }
@@ -528,6 +537,7 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
             student.setGender("男".equals(studentImport.getGender()) ? 1 : 0);
             student.setSubjectId(subjectIdNamemap.get(studentImport.getSubjectName()).toString());
             student.setPhone(studentImport.getPhone());
+            student.setTenantGroupId(groupNameIdMap.getOrDefault(studentImport.getTenantGroupName(), -1L));
 
             LocalDate birthday = LocalDate.parse(studentImport.getBirthday(), DateTimeFormatter.ISO_LOCAL_DATE);
             student.setBirthdate(birthday);

+ 18 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java

@@ -258,7 +258,24 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
                 .eq(MusicSheet::getSourceType, "TEACHER").list();
 
         Map<Long, List<MusicSheet>> groupByUserId = musicSheets.stream().collect(Collectors.groupingBy(MusicSheet::getUserId));
+
+        // 添加小组信息
+        Map<Long, List<TenantGroup>> groupByAdminId = new HashMap<>();
+        List<Long> teacherIds = teacherVos.stream().map(Teacher::getUserId).distinct().collect(Collectors.toList());
+        if(!teacherIds.isEmpty()){
+            QueryWrapper<TenantGroup> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().in(TenantGroup::getAdminId,teacherIds);
+            List<TenantGroup> tenantGroups = tenantGroupMapper.selectList(queryWrapper);
+            Map<Long, List<TenantGroup>> groupBy = tenantGroups.stream().collect(Collectors.groupingBy(TenantGroup::getAdminId));
+            groupByAdminId.putAll(groupBy);
+        }
+
+
         for (TeacherVo teacherVo : teacherVos) {
+            List<String> groups = groupByAdminId.getOrDefault(teacherVo.getUserId(), new ArrayList<>())
+                    .stream().map(TenantGroup::getName).collect(Collectors.toList());
+            teacherVo.setTenantName(String.join(",", groups));
+
             List<MusicSheet> musicSheetList = groupByUserId.getOrDefault(teacherVo.getUserId(), new ArrayList<>());
             teacherVo.setMusicSheetCount(musicSheetList.size());
             List<String> names = musicSheetList.stream().map(MusicSheet::getMusicSheetName).collect(Collectors.toList());
@@ -1053,7 +1070,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
                     .eq(TenantGroup::getAdminId, teacher.getUserId());
             Integer count = tenantGroupMapper.selectCount(queryWrapper);
             if (count > 0) {
-                throw new BizException(5100, "该老师存在机构小组负责人身份,请先移交小组或者解散小组");
+                throw new BizException("该老师存在机构小组负责人身份,请先移交小组或者解散小组");
             }
 
             // 机构老师处理流程

+ 0 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantGroupServiceImpl.java

@@ -280,11 +280,6 @@ public class TenantGroupServiceImpl extends ServiceImpl<TenantGroupMapper, Tenan
         if (group == null) {
             throw new BizException("机构小组不存在");
         }
-        List<Student> students = this.queryStudent(group.getTenantId(), group.getId());
-        if (!students.isEmpty()) {
-            throw new BizException("小组内存在学生");
-        }
-
         String imGroupId = group.getImGroupId();
         if (imGroupId != null) {
             ImGroup imGroup = imGroupService.getById(imGroupId);

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantUnbindRecordServiceImpl.java

@@ -224,7 +224,7 @@ public class TenantUnbindRecordServiceImpl extends ServiceImpl<TenantUnbindRecor
                 .eq(TenantGroup::getAdminId, teacher.getUserId());
         Integer count = tenantGroupMapper.selectCount(queryWrapper);
         if (count > 0) {
-            throw new BizException(5100, "该老师存在机构小组负责人身份,请先移交小组或者解散小组");
+            throw new BizException("该老师存在机构小组负责人身份,请先移交小组或者解散小组");
         }
 
         this.lambdaUpdate()

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherVo.java

@@ -99,6 +99,9 @@ public class TeacherVo extends Teacher {
     @ApiModelProperty("曲谱名称")
     private String musicSheetName;
 
+    @ApiModelProperty("机构小组名称")
+    private String tenantGroupName;
+
 
     public YesOrNoEnum getDelFlag() {
         return delFlag;

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/StudentWrapper.java

@@ -147,6 +147,9 @@ public class StudentWrapper {
         @ExcelProperty(value = "性别")
         private String gender;
 
+        @ExcelProperty(value = "小组")
+        private String tenantGroupName;
+
         private static final String PHONE_REG = "^1\\d{10}$";
 
         public List<String> checkValid() {