From 247cb86585a1d1894596ed18a6c93efecb992946 Mon Sep 17 00:00:00 2001
From: luohairen <3399054449@qq.com>
Date: 星期四, 14 十一月 2024 10:34:27 +0800
Subject: [PATCH] 班级成绩图表分析

---
 src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java |   75 +++++++++++++++++++++++++++++++++++++
 1 files changed, 74 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java
index f7caea6..aac1f3c 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java
@@ -1,22 +1,32 @@
 package com.ycl.jxkg.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
+import com.ycl.jxkg.context.WebContext;
 import com.ycl.jxkg.domain.entity.Classes;
-import com.ycl.jxkg.domain.enums.general.ClassesStatusEnum;
+import com.ycl.jxkg.domain.entity.ClassesUser;
+import com.ycl.jxkg.domain.vo.StudentSimpleVO;
+import com.ycl.jxkg.domain.vo.StudentVO;
+import com.ycl.jxkg.enums.general.ClassesStatusEnum;
 import com.ycl.jxkg.mapper.ClassesMapper;
+import com.ycl.jxkg.mapper.MeetClassesMapper;
 import com.ycl.jxkg.service.ClassesService;
 import com.ycl.jxkg.base.Result;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ycl.jxkg.domain.form.ClassesForm;
 import com.ycl.jxkg.domain.vo.ClassesVO;
 import com.ycl.jxkg.domain.query.ClassesQuery;
+import com.ycl.jxkg.service.ClassesUserService;
 import com.ycl.jxkg.utils.PageUtil;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import lombok.RequiredArgsConstructor;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.Assert;
+import org.springframework.util.CollectionUtils;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -31,6 +41,9 @@
 public class ClassesServiceImpl extends ServiceImpl<ClassesMapper, Classes> implements ClassesService {
 
     private final ClassesMapper classesMapper;
+    private final WebContext webContext;
+    private final ClassesUserService classesUserService;
+    private final MeetClassesMapper meetClassesMapper;
 
     /**
      * 娣诲姞
@@ -38,9 +51,23 @@
      * @return
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Result add(ClassesForm form) {
         Classes entity = ClassesForm.getEntityByForm(form, null);
+        entity.setStatus(ClassesStatusEnum.NORMAL);
+        entity.setCreateUser(webContext.getCurrentUser().getId());
         baseMapper.insert(entity);
+
+        List<Integer> teacherList = form.getTeacherList();
+        if (! CollectionUtils.isEmpty(teacherList)) {
+            for (Integer teacherUserId : teacherList) {
+                ClassesUser classesUser = new ClassesUser();
+                classesUser.setClassesId(entity.getId());
+                classesUser.setUserId(teacherUserId);
+                classesUser.setTeacher(Boolean.TRUE);
+                classesUserService.save(classesUser);
+            }
+        }
         return Result.ok("娣诲姞鎴愬姛");
     }
 
@@ -50,6 +77,7 @@
      * @return
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Result update(ClassesForm form) {
         Classes entity = baseMapper.selectById(form.getId());
 
@@ -57,6 +85,21 @@
         Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
         BeanUtils.copyProperties(form, entity);
         baseMapper.updateById(entity);
+
+        new LambdaUpdateChainWrapper<>(classesUserService.getBaseMapper())
+                .eq(ClassesUser::getClassesId, entity.getId())
+                .eq(ClassesUser::getTeacher, Boolean.TRUE)
+                .remove();
+        List<Integer> teacherList = form.getTeacherList();
+        if (! CollectionUtils.isEmpty(teacherList)) {
+            for (Integer teacherUserId : teacherList) {
+                ClassesUser classesUser = new ClassesUser();
+                classesUser.setClassesId(entity.getId());
+                classesUser.setUserId(teacherUserId);
+                classesUser.setTeacher(Boolean.TRUE);
+                classesUserService.save(classesUser);
+            }
+        }
         return Result.ok("淇敼鎴愬姛");
     }
 
@@ -90,7 +133,16 @@
     @Override
     public Result page(ClassesQuery query) {
         IPage<ClassesVO> page = PageUtil.getPage(query, ClassesVO.class);
+        query.setUserId(webContext.getCurrentUser().getId());
         baseMapper.getPage(page, query);
+
+        for (ClassesVO vo : page.getRecords()) {
+            List<StudentVO> teacherList = classesUserService.getTeacherListByClassesId(vo.getId());
+            List<Integer> teacherIds = teacherList.stream().map(StudentVO::getId).collect(Collectors.toList());
+            String teacherNamesStr = teacherList.stream().map(StudentVO::getRealName).collect(Collectors.joining(","));
+            vo.setTeacherList(teacherIds);
+            vo.setTeacherNamesStr(teacherNamesStr);
+        }
         return Result.ok().data(page.getRecords()).total(page.getTotal());
     }
 
@@ -127,4 +179,25 @@
                 .update();
         return Result.ok("瑙f暎鎴愬姛");
     }
+
+
+    @Override
+    public Result myClassList() {
+        Integer userId = webContext.getCurrentUser().getId();
+        List<Classes> list = new LambdaQueryChainWrapper<>(baseMapper)
+                .select(Classes::getId, Classes::getClassName)
+                .eq(Classes::getCreateUser, userId)
+                .list();
+        return Result.ok(list);
+    }
+
+    @Override
+    public Result recover(Integer id) {
+        new LambdaUpdateChainWrapper<>(baseMapper)
+                .eq(Classes::getId, id)
+                .set(Classes::getStatus, ClassesStatusEnum.NORMAL)
+                .update();
+        return Result.ok("鐝骇宸茬粡鎭㈠姝e父");
+    }
+
 }

--
Gitblit v1.8.0