Jelajahi Sumber

Merge remote-tracking branch 'origin/dev' into dev

fanxp 2 tahun lalu
induk
melakukan
9d8101a515

+ 38 - 0
src/main/java/com/xjrsoft/common/enums/StudentCadreLevelEnum.java

@@ -0,0 +1,38 @@
+package com.xjrsoft.common.enums;
+
+/**
+ * @Author: dzx
+ * @Date: 2023/11/15 11:43
+ */
+public enum StudentCadreLevelEnum {
+    /**
+     * 校级
+     * */
+    SCHOOL("cadreLevel_school", "校级"),
+
+    /**
+     * 班级
+     * */
+    CLASS("cadreLevel_class", "班级"),
+
+    /**
+     * 系级
+     * */
+    SUBJECT("cadreLevel_subject", "系级");
+
+    final String code;
+    final String value;
+
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getValue() {
+        return this.value;
+    }
+
+    StudentCadreLevelEnum(final String code, final String message) {
+        this.code = code;
+        this.value = message;
+    }
+}

+ 1 - 1
src/main/java/com/xjrsoft/module/base/entity/BaseClass.java

@@ -18,7 +18,7 @@ import java.util.Date;
  */
 @Data
 @TableName("base_class")
-@ApiModel(value = "BaseClass对象", description = "班级表")
+@ApiModel(value = "BaseClass", description = "班级表")
 public class BaseClass implements Serializable {
 
     private static final long serialVersionUID = 1L;

+ 112 - 27
src/main/java/com/xjrsoft/module/student/controller/BaseStudentCadreController.java

@@ -1,21 +1,23 @@
 package com.xjrsoft.module.student.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.support.ExcelTypeEnum;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.yulichang.toolkit.MPJWrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.enums.StudentCadreLevelEnum;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.base.entity.BaseClass;
-import com.xjrsoft.module.base.entity.BaseGrade;
-import com.xjrsoft.module.base.entity.BaseMajorSet;
-import com.xjrsoft.module.organization.entity.Department;
+import com.xjrsoft.module.base.mapper.BaseClassMapper;
 import com.xjrsoft.module.student.dto.AddBaseStudentCadreDto;
 import com.xjrsoft.module.student.dto.BaseStudentCadrePageDto;
 import com.xjrsoft.module.student.dto.UpdateBaseStudentCadreDto;
@@ -23,6 +25,7 @@ import com.xjrsoft.module.student.entity.BaseStudent;
 import com.xjrsoft.module.student.entity.BaseStudentCadre;
 import com.xjrsoft.module.student.entity.BaseStudentPost;
 import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
+import com.xjrsoft.module.student.mapper.BaseStudentSchoolRollMapper;
 import com.xjrsoft.module.student.service.IBaseStudentCadreService;
 import com.xjrsoft.module.student.vo.BaseStudentCadrePageVo;
 import com.xjrsoft.module.student.vo.BaseStudentCadreVo;
@@ -59,33 +62,77 @@ public class BaseStudentCadreController {
 
 
     private final IBaseStudentCadreService baseStudentCadreService;
+    private final BaseStudentSchoolRollMapper baseStudentSchoolRollMapper;
+    private final BaseClassMapper baseClassMapper;
+
+    @GetMapping(value = "/classlist")
+    @ApiOperation(value="获取班主任管理的班级")
+    @SaCheckPermission("basestudentcadre:detail")
+    public RT<List<BaseClass>> classList(){
+        List<BaseClass> pageOutput = baseClassMapper.selectJoinList(BaseClass.class, new MPJLambdaWrapper<BaseClass>()
+                .disableSubLogicDel()
+                .eq(BaseClass::getTeacherId, StpUtil.getLoginIdAsLong())
+        );
+
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/mobliepage")
+    @ApiOperation(value="学生干部管理列表(移动端分页)")
+    @SaCheckPermission("basestudentcadre:detail")
+    public RT<PageOutput<BaseStudentCadrePageVo>> mobliepage(@Valid BaseStudentCadrePageDto dto){
+        // 如果未传班级id和职务id,
+        if((ObjectUtil.isEmpty(dto.getClassId()) && StrUtil.equals(dto.getLevel(), StudentCadreLevelEnum.CLASS.getCode()))|| ObjectUtil.isEmpty(dto.getPostId())){
+            return RT.ok(new PageOutput<>());
+        }
+
+        IPage<BaseStudentCadrePageVo> page = baseStudentCadreService.selectJoinListPage(ConventPage.getPage(dto), BaseStudentCadrePageVo.class,
+                MPJWrappers.<BaseStudentCadre>lambdaJoin()
+                .like(StrUtil.isNotBlank(dto.getUserName()), XjrUser::getName, dto.getUserName())
+                .eq(ObjectUtil.isNotEmpty(dto.getClassId()), BaseStudentCadre::getClassId, dto.getClassId())
+                .eq(ObjectUtil.isNotEmpty(dto.getPostId()), BaseStudentCadre::getPostId, dto.getPostId())
+                .eq(ObjectUtil.isNotEmpty(dto.getLevel()), BaseStudentPost::getLevel, dto.getLevel())
+                .eq(ObjectUtil.isNotEmpty(dto.getPost()), BaseStudentPost::getPost, dto.getPost())
+                .orderByDesc(BaseStudentCadre::getId)
+                .selectAs(BaseStudent::getStudentId, BaseStudentCadrePageVo::getStudentId)
+                .selectAs(XjrUser::getName, BaseStudentCadrePageVo::getUserName)
+                .selectAs(BaseClass::getName, BaseStudentCadrePageVo::getClassName)
+                .selectAs(BaseStudentPost::getPost, BaseStudentCadrePageVo::getPost)
+                .selectAs(BaseStudentPost::getLevel, BaseStudentCadrePageVo::getLevel)
+                .select(BaseStudentCadre::getId)
+                .select(BaseStudentCadre.class,x -> VoToColumnUtil.fieldsToColumns(BaseStudentCadrePageVo.class).contains(x.getProperty()))
+                .innerJoin(XjrUser.class, XjrUser::getId, BaseStudentCadre::getUserId)
+                .innerJoin(BaseStudent.class, BaseStudent::getUserId, BaseStudentCadre::getUserId)
+                .innerJoin(BaseStudentPost.class, BaseStudentPost::getId, BaseStudentCadre::getPostId)
+                .leftJoin(BaseClass.class, BaseClass::getId, BaseStudentCadre::getClassId)
+                .leftJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId, BaseStudentCadre::getUserId)).setSize(15);
+
+        PageOutput<BaseStudentCadrePageVo> pageOutput = ConventPage.getPageOutput(page, BaseStudentCadrePageVo.class);
+        return RT.ok(pageOutput);
+    }
+
 
     @GetMapping(value = "/page")
     @ApiOperation(value="学生干部管理列表(分页)")
     @SaCheckPermission("basestudentcadre:detail")
     public RT<PageOutput<BaseStudentCadrePageVo>> page(@Valid BaseStudentCadrePageDto dto){
-
-        MPJLambdaWrapper<BaseStudentCadre> queryWrapper = new MPJLambdaWrapper<>();
-        queryWrapper
+        // 如果未传班级id和职务id,
+        if((ObjectUtil.isEmpty(dto.getClassId()) && StrUtil.equals(dto.getLevel(), StudentCadreLevelEnum.CLASS.getCode()))|| ObjectUtil.isEmpty(dto.getPostId())){
+            return RT.ok(new PageOutput<>());
+        }
+        IPage<BaseStudentCadrePageVo> page = baseStudentCadreService.selectJoinListPage(ConventPage.getPage(dto), BaseStudentCadrePageVo.class,
+                MPJWrappers.<BaseStudentCadre>lambdaJoin()
                 .like(StrUtil.isNotBlank(dto.getUserName()), XjrUser::getName, dto.getUserName())
-                .eq(ObjectUtil.isNotEmpty(dto.getOrgId()), BaseStudentCadre::getOrgId, dto.getOrgId())
                 .eq(ObjectUtil.isNotEmpty(dto.getClassId()), BaseStudentCadre::getClassId, dto.getClassId())
                 .eq(ObjectUtil.isNotEmpty(dto.getPostId()), BaseStudentCadre::getPostId, dto.getPostId())
-                .eq(ObjectUtil.isNotEmpty(dto.getGradeId()), BaseStudentSchoolRoll::getGradeId, dto.getGradeId())
-                .eq(ObjectUtil.isNotEmpty(dto.getMajorSetId()), BaseStudentSchoolRoll::getMajorSetId, dto.getMajorSetId())
                 .eq(ObjectUtil.isNotEmpty(dto.getLevel()), BaseStudentPost::getLevel, dto.getLevel())
-                .between(ObjectUtil.isNotNull(dto.getStartTimeStart()) && ObjectUtil.isNotNull(dto.getStartTimeEnd()), BaseStudentCadre::getStartTime,dto.getStartTimeStart(),dto.getStartTimeEnd())
-                .between(ObjectUtil.isNotNull(dto.getEndTimeStart()) && ObjectUtil.isNotNull(dto.getEndTimeEnd()), BaseStudentCadre::getEndTime,dto.getEndTimeStart(),dto.getEndTimeEnd())
+                .eq(ObjectUtil.isNotEmpty(dto.getPost()), BaseStudentPost::getPost, dto.getPost())
                 .orderByDesc(BaseStudentCadre::getId)
-                .selectAs(BaseStudent::getStudentId, BaseStudentCadre::getStudentId)
-                .selectAs(XjrUser::getName, BaseStudentCadre::getUserName)
-                .selectAs(BaseClass::getName, BaseStudentCadre::getClassName)
-                .selectAs(BaseStudentPost::getPost, BaseStudentCadre::getPost)
-                .selectAs(BaseStudentPost::getLevel, BaseStudentCadre::getLevel)
-                .selectAs(Department::getName, BaseStudentCadre::getOrgName)
-                .selectAs(XjrUser::getMobile, BaseStudentCadre::getMobile)
-                .selectAs(BaseMajorSet::getName, BaseStudentCadre::getMajorSetName)
-                .selectAs(BaseGrade::getName, BaseStudentCadre::getGradeName)
+                .selectAs(BaseStudent::getStudentId, BaseStudentCadrePageVo::getStudentId)
+                .selectAs(XjrUser::getName, BaseStudentCadrePageVo::getUserName)
+                .selectAs(BaseClass::getName, BaseStudentCadrePageVo::getClassName)
+                .selectAs(BaseStudentPost::getPost, BaseStudentCadrePageVo::getPost)
+                .selectAs(BaseStudentPost::getLevel, BaseStudentCadrePageVo::getLevel)
                 .select(BaseStudentCadre::getId)
                 .select(BaseStudentCadre.class,x -> VoToColumnUtil.fieldsToColumns(BaseStudentCadrePageVo.class).contains(x.getProperty()))
                 .innerJoin(XjrUser.class, XjrUser::getId, BaseStudentCadre::getUserId)
@@ -93,11 +140,8 @@ public class BaseStudentCadreController {
                 .innerJoin(BaseStudentPost.class, BaseStudentPost::getId, BaseStudentCadre::getPostId)
                 .leftJoin(BaseClass.class, BaseClass::getId, BaseStudentCadre::getClassId)
                 .leftJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId, BaseStudentCadre::getUserId)
-                .leftJoin(Department.class, Department::getId, BaseStudentCadre::getOrgId)
-                .leftJoin(BaseMajorSet.class, BaseMajorSet::getId, BaseStudentSchoolRoll::getMajorSetId)
-                .leftJoin(BaseGrade.class, BaseGrade::getId, BaseStudentSchoolRoll::getGradeId);
+        );
 
-        IPage<BaseStudentCadre> page = baseStudentCadreService.page(ConventPage.getPage(dto), queryWrapper);
         PageOutput<BaseStudentCadrePageVo> pageOutput = ConventPage.getPageOutput(page, BaseStudentCadrePageVo.class);
         return RT.ok(pageOutput);
     }
@@ -115,11 +159,52 @@ public class BaseStudentCadreController {
 
 
     @PostMapping
-    @ApiOperation(value = "新增学生干部管理")
+    @ApiOperation(value = "新增学生干部管理(批量新增)")
     @SaCheckPermission("basestudentcadre:add")
     public RT<Boolean> add(@Valid @RequestBody List<AddBaseStudentCadreDto> dto){
-        List<BaseStudentCadre> baseStudentCadreList = BeanUtil.copyToList(dto, BaseStudentCadre.class);
-        boolean isSuccess = baseStudentCadreService.add(baseStudentCadreList);
+        //循环判定,是否已经存在于数据库,并查询出班级id
+        List<AddBaseStudentCadreDto> addDtoList = new ArrayList<>();
+        for (AddBaseStudentCadreDto baseStudentCadreDto : dto) {
+            BaseStudentCadre one = baseStudentCadreService.getOne(
+                    Wrappers.lambdaQuery(BaseStudentCadre.class)
+                            .eq(BaseStudentCadre::getUserId, baseStudentCadreDto.getUserId())
+                            .eq(BaseStudentCadre::getPostId, baseStudentCadreDto.getPostId())
+            );
+            BaseStudentSchoolRoll baseStudentSchoolRoll = baseStudentSchoolRollMapper.selectOne(Wrappers.lambdaQuery(BaseStudentSchoolRoll.class).eq(BaseStudentSchoolRoll::getUserId, baseStudentCadreDto.getUserId()));
+            if(ObjectUtil.isNotNull(one)){
+                continue;
+            }
+            if(ObjectUtil.isNotNull(baseStudentSchoolRoll)){
+                baseStudentCadreDto.setClassId(baseStudentSchoolRoll.getClassId());
+            }
+            addDtoList.add(baseStudentCadreDto);
+        }
+        List<BaseStudentCadre> baseStudentCadreList = BeanUtil.copyToList(addDtoList, BaseStudentCadre.class);
+        boolean isSuccess = baseStudentCadreService.addAll(baseStudentCadreList);
+        return RT.ok(isSuccess);
+    }
+
+    @PostMapping("/addone")
+    @ApiOperation(value = "新增学生干部管理(单个添加)")
+    @SaCheckPermission("basestudentcadre:insert")
+    public RT<Boolean> addOne(@Valid @RequestBody AddBaseStudentCadreDto dto){
+        //判定,是否已经存在于数据库,并查询出班级id
+        BaseStudentCadre one = baseStudentCadreService.getOne(
+                Wrappers.lambdaQuery(BaseStudentCadre.class)
+                .eq(BaseStudentCadre::getUserId, dto.getUserId())
+                .eq(BaseStudentCadre::getPostId, dto.getPostId())
+        );
+        if(ObjectUtil.isNotNull(one)){
+            RT.ok("该学生已有该职务,无法重复添加");
+        }
+
+        BaseStudentSchoolRoll baseStudentSchoolRoll = baseStudentSchoolRollMapper.selectOne(Wrappers.lambdaQuery(BaseStudentSchoolRoll.class).eq(BaseStudentSchoolRoll::getUserId, dto.getUserId()));
+        if(ObjectUtil.isNotNull(baseStudentSchoolRoll)){
+            dto.setClassId(baseStudentSchoolRoll.getClassId());
+        }
+
+        BaseStudentCadre baseStudentCadre = BeanUtil.toBean(dto, BaseStudentCadre.class);
+        boolean isSuccess = baseStudentCadreService.addOne(baseStudentCadre);
         return RT.ok(isSuccess);
     }
 

+ 5 - 2
src/main/java/com/xjrsoft/module/student/controller/StudentManagerController.java

@@ -3,6 +3,7 @@ package com.xjrsoft.module.student.controller;
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.yulichang.toolkit.MPJWrappers;
@@ -11,6 +12,7 @@ import com.xjrsoft.common.model.result.R;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
 import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.student.dto.AddBaseStudentUserDto;
 import com.xjrsoft.module.student.dto.BaseStudentUserPageDto;
 import com.xjrsoft.module.student.dto.UpdateBaseStudentUserDto;
@@ -73,18 +75,19 @@ public class StudentManagerController {
                 .like(StrUtil.isNotBlank(dto.getMobile()), BaseStudentUser::getMobile, dto.getMobile())
                 .like(StrUtil.isNotBlank(dto.getName()), BaseStudentUser::getName, dto.getName())
                 .like(StrUtil.isNotBlank(dto.getEmail()), BaseStudentUser::getEmail, dto.getEmail())
+                .in((ObjectUtil.isNotNull(dto.getTokenType()) && dto.getTokenType() == 1), BaseClass::getTeacherId, StpUtil.getLoginIdAsLong())
                 .orderByDesc(BaseStudentUser::getId)
                 .select(BaseStudentUser::getId)
                 .select(BaseStudentUser.class, x -> VoToColumnUtil.fieldsToColumns(BaseStudentUserPageVo.class).contains(x.getProperty()))
                 .select(BaseStudentSchoolRoll::getStudyYear)
                 .select("a.`name` as grade_id")
                 .select("b.`name` as major_set_id")
-                .select("c.`name` as class_id")
+                .selectAs(BaseClass::getName, BaseStudentUserPageVo::getClassId)
                 .innerJoin(BaseStudent.class, BaseStudent::getUserId, BaseStudentUser::getId)
                 .leftJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId, BaseStudentUser::getId)
                 .leftJoin("base_grade a on a.id = t2.grade_id")
                 .leftJoin("base_major_set b on b.id = t2.major_set_id")
-                .leftJoin("base_class c on c.id = t2.class_id"));
+                .leftJoin(BaseClass.class, BaseClass::getId, BaseStudentSchoolRoll::getClassId));
 
         PageOutput<BaseStudentUserPageVo> pageOutput = ConventPage.getPageOutput(page, BaseStudentUserPageVo.class);
         return R.ok(pageOutput);

+ 6 - 0
src/main/java/com/xjrsoft/module/student/dto/BaseStudentUserPageDto.java

@@ -29,4 +29,10 @@ public class BaseStudentUserPageDto extends PageInput {
     @ApiModelProperty("邮箱")
     private String email;
 
+    /**
+     * 权限标识
+     */
+    @ApiModelProperty("权限标识")
+    private Integer tokenType;
+
 }

+ 0 - 35
src/main/java/com/xjrsoft/module/student/entity/BaseStudentCadre.java

@@ -126,40 +126,5 @@ public class BaseStudentCadre implements Serializable {
     @ApiModelProperty("离职原因")
     private String leaveReason;
 
-    @ApiModelProperty("学号")
-    @TableField(exist = false)
-    private String studentId;
-
-    @ApiModelProperty("学生姓名")
-    @TableField(exist = false)
-    private String userName;
-
-    @ApiModelProperty("班级名称")
-    @TableField(exist = false)
-    private String className;
-
-    @ApiModelProperty("职务")
-    @TableField(exist = false)
-    private String post;
-
-    @ApiModelProperty("级别")
-    @TableField(exist = false)
-    private String level;
-
-    @ApiModelProperty("学生任职机构名称")
-    @TableField(exist = false)
-    private String orgName;
-
-    @ApiModelProperty("年级")
-    @TableField(exist = false)
-    private String gradeName;
-
-    @ApiModelProperty("专业")
-    @TableField(exist = false)
-    private String majorSetName;
-
-    @ApiModelProperty("手机号")
-    @TableField(exist = false)
-    private String mobile;
 
 }

+ 1 - 1
src/main/java/com/xjrsoft/module/student/mapper/BaseStudentCadreMapper.java

@@ -12,6 +12,6 @@ import org.apache.ibatis.annotations.Mapper;
 * @Version 1.0
 */
 @Mapper
-public interface BaseStudentCadreMapper extends BaseMapper<BaseStudentCadre> {
+public interface BaseStudentCadreMapper extends MPJBaseMapper<BaseStudentCadre> {
 
 }

+ 14 - 3
src/main/java/com/xjrsoft/module/student/service/IBaseStudentCadreService.java

@@ -5,6 +5,8 @@ import com.github.yulichang.base.MPJBaseService;
 import com.xjrsoft.module.student.entity.BaseStudentCadre;
 import com.xjrsoft.module.student.entity.BaseStudentUser;
 import lombok.Data;
+import org.springframework.transaction.annotation.Transactional;
+
 import java.util.List;
 
 /**
@@ -14,13 +16,22 @@ import java.util.List;
 * @Version 1.0
 */
 
-public interface IBaseStudentCadreService extends IService<BaseStudentCadre> {
+public interface IBaseStudentCadreService extends MPJBaseService<BaseStudentCadre> {
 
     /**
-     * 新增
+     * 批量新增
      *
      * @param baseStudentCadreList
      * @return
      */
-    Boolean add(List<BaseStudentCadre> baseStudentCadreList);
+    Boolean addAll(List<BaseStudentCadre> baseStudentCadreList);
+
+    /**
+     * 单个新增
+     *
+     * @param baseStudentCadre
+     * @return
+     */
+    Boolean addOne(BaseStudentCadre baseStudentCadre);
+
 }

+ 9 - 2
src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentCadreServiceImpl.java

@@ -22,16 +22,23 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 */
 @Service
 @AllArgsConstructor
-public class BaseStudentCadreServiceImpl extends ServiceImpl<BaseStudentCadreMapper, BaseStudentCadre> implements IBaseStudentCadreService {
+public class BaseStudentCadreServiceImpl extends MPJBaseServiceImpl<BaseStudentCadreMapper, BaseStudentCadre> implements IBaseStudentCadreService {
 
     private final BaseStudentCadreMapper baseStudentCadreMapper;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean add(List<BaseStudentCadre> baseStudentCadreList) {
+    public Boolean addAll(List<BaseStudentCadre> baseStudentCadreList) {
         for (BaseStudentCadre baseStudentCadre : baseStudentCadreList) {
             baseStudentCadreMapper.insert(baseStudentCadre);
         }
         return true;
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean addOne(BaseStudentCadre baseStudentCadre) {
+        baseStudentCadreMapper.insert(baseStudentCadre);
+        return true;
+    }
 }