Browse Source

班级异动记录

dzx 7 months ago
parent
commit
2537c86d2b
17 changed files with 528 additions and 6 deletions
  1. 21 1
      src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskClassServiceImpl.java
  2. 107 0
      src/main/java/com/xjrsoft/module/base/controller/BaseClassTeacherChangeController.java
  3. 37 0
      src/main/java/com/xjrsoft/module/base/dto/AddBaseClassTeacherChangeDto.java
  4. 19 0
      src/main/java/com/xjrsoft/module/base/dto/BaseClassTeacherChangePageDto.java
  5. 24 0
      src/main/java/com/xjrsoft/module/base/dto/UpdateBaseClassTeacherChangeDto.java
  6. 0 1
      src/main/java/com/xjrsoft/module/base/entity/BaseClassMerge.java
  7. 89 0
      src/main/java/com/xjrsoft/module/base/entity/BaseClassTeacherChange.java
  8. 16 0
      src/main/java/com/xjrsoft/module/base/mapper/BaseClassTeacherChangeMapper.java
  9. 14 0
      src/main/java/com/xjrsoft/module/base/service/IBaseClassTeacherChangeService.java
  10. 9 1
      src/main/java/com/xjrsoft/module/base/service/impl/BaseClassCourseServiceImpl.java
  11. 0 2
      src/main/java/com/xjrsoft/module/base/service/impl/BaseClassMergeServiceImpl.java
  12. 23 0
      src/main/java/com/xjrsoft/module/base/service/impl/BaseClassServiceImpl.java
  13. 19 0
      src/main/java/com/xjrsoft/module/base/service/impl/BaseClassTeacherChangeServiceImpl.java
  14. 68 0
      src/main/java/com/xjrsoft/module/base/vo/BaseClassTeacherChangePageVo.java
  15. 38 0
      src/main/java/com/xjrsoft/module/base/vo/BaseClassTeacherChangeVo.java
  16. 19 1
      src/main/resources/sqlScript/20250421_sql.sql
  17. 25 0
      src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

+ 21 - 1
src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskClassServiceImpl.java

@@ -32,10 +32,12 @@ import com.xjrsoft.module.banding.vo.BandingTaskClassReportStatisticsVo;
 import com.xjrsoft.module.banding.vo.BandingTaskClassStudentListVo;
 import com.xjrsoft.module.banding.vo.BandingTaskClassStudentListVo;
 import com.xjrsoft.module.banding.vo.BandingTaskClassSureListVo;
 import com.xjrsoft.module.banding.vo.BandingTaskClassSureListVo;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.entity.BaseClass;
+import com.xjrsoft.module.base.entity.BaseClassTeacherChange;
 import com.xjrsoft.module.base.entity.BaseClassroom;
 import com.xjrsoft.module.base.entity.BaseClassroom;
 import com.xjrsoft.module.base.entity.BaseGrade;
 import com.xjrsoft.module.base.entity.BaseGrade;
 import com.xjrsoft.module.base.entity.BaseMajorSet;
 import com.xjrsoft.module.base.entity.BaseMajorSet;
 import com.xjrsoft.module.base.mapper.BaseClassMapper;
 import com.xjrsoft.module.base.mapper.BaseClassMapper;
+import com.xjrsoft.module.base.mapper.BaseClassTeacherChangeMapper;
 import com.xjrsoft.module.base.mapper.BaseGradeMapper;
 import com.xjrsoft.module.base.mapper.BaseGradeMapper;
 import com.xjrsoft.module.base.service.IBaseClassroomService;
 import com.xjrsoft.module.base.service.IBaseClassroomService;
 import com.xjrsoft.module.base.service.IBaseMajorSetService;
 import com.xjrsoft.module.base.service.IBaseMajorSetService;
@@ -60,6 +62,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.math.RoundingMode;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.Comparator;
@@ -93,7 +96,7 @@ public class BandingTaskClassServiceImpl extends MPJBaseServiceImpl<BandingTaskC
     private final BaseGradeMapper gradeMapper;
     private final BaseGradeMapper gradeMapper;
     private final IUserRoleRelationService roleRelationService;
     private final IUserRoleRelationService roleRelationService;
     private final RedisUtil redisUtil;
     private final RedisUtil redisUtil;
-
+    private final BaseClassTeacherChangeMapper teacherChangeMapper;
 
 
     @Override
     @Override
     public Boolean add(BandingTaskClass bandingTaskClass) {
     public Boolean add(BandingTaskClass bandingTaskClass) {
@@ -315,6 +318,15 @@ public class BandingTaskClassServiceImpl extends MPJBaseServiceImpl<BandingTaskC
                     }
                     }
                     classMapper.updateById(baseClass);
                     classMapper.updateById(baseClass);
 
 
+                    teacherChangeMapper.insert(new BaseClassTeacherChange(){{
+                        setClassId(baseClass.getId());
+                        setBeforeTeacherId(baseClass.getTeacherId());
+                        setAfterTeacherId(sourceObj.getTeacherId());
+                        setDeleteMark(DeleteMark.NODELETE.getCode());
+                        setEnabledMark(EnabledMark.ENABLED.getCode());
+                        setCreateDate(LocalDateTime.now());
+                    }});
+
                     //给该老师添加班主任角色
                     //给该老师添加班主任角色
                     if (baseClass.getTeacherId() != null) {
                     if (baseClass.getTeacherId() != null) {
                         long count = roleRelationService.count(
                         long count = roleRelationService.count(
@@ -350,6 +362,14 @@ public class BandingTaskClassServiceImpl extends MPJBaseServiceImpl<BandingTaskC
                     classMapper.insert(baseClass);
                     classMapper.insert(baseClass);
                     sourceObj.setBaseClassId(baseClass.getId());
                     sourceObj.setBaseClassId(baseClass.getId());
 
 
+                    teacherChangeMapper.insert(new BaseClassTeacherChange(){{
+                        setClassId(baseClass.getId());
+                        setAfterTeacherId(sourceObj.getTeacherId());
+                        setDeleteMark(DeleteMark.NODELETE.getCode());
+                        setEnabledMark(EnabledMark.ENABLED.getCode());
+                        setCreateDate(LocalDateTime.now());
+                    }});
+
                     if (baseClass.getTeacherId() != null) {
                     if (baseClass.getTeacherId() != null) {
                         long count = roleRelationService.count(
                         long count = roleRelationService.count(
                                 new QueryWrapper<UserRoleRelation>().lambda()
                                 new QueryWrapper<UserRoleRelation>().lambda()

+ 107 - 0
src/main/java/com/xjrsoft/module/base/controller/BaseClassTeacherChangeController.java

@@ -0,0 +1,107 @@
+package com.xjrsoft.module.base.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.xjrsoft.common.annotation.XjrLog;
+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.dto.AddBaseClassTeacherChangeDto;
+import com.xjrsoft.module.base.dto.BaseClassTeacherChangePageDto;
+import com.xjrsoft.module.base.dto.UpdateBaseClassTeacherChangeDto;
+import com.xjrsoft.module.base.entity.BaseClassTeacherChange;
+import com.xjrsoft.module.base.service.IBaseClassTeacherChangeService;
+import com.xjrsoft.module.base.vo.BaseClassTeacherChangePageVo;
+import com.xjrsoft.module.base.vo.BaseClassTeacherChangeVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+* @title: 班主任异动记录表
+* @Author dzx
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/base" + "/baseClassTeacherChange")
+@Api(value = "/base"  + "/baseClassTeacherChange",tags = "班主任异动记录表代码")
+@AllArgsConstructor
+public class BaseClassTeacherChangeController {
+
+
+    private final IBaseClassTeacherChangeService baseClassTeacherChangeService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="班主任异动记录表列表(分页)")
+    @SaCheckPermission("baseclassteacherchange:detail")
+    @XjrLog(value = "班主任异动记录表列表(分页)")
+    public RT<PageOutput<BaseClassTeacherChangePageVo>> page(@Valid BaseClassTeacherChangePageDto dto){
+
+        LambdaQueryWrapper<BaseClassTeacherChange> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                    .orderByDesc(BaseClassTeacherChange::getId)
+                .select(BaseClassTeacherChange.class,x -> VoToColumnUtil.fieldsToColumns(BaseClassTeacherChangePageVo.class).contains(x.getProperty()));
+        IPage<BaseClassTeacherChange> page = baseClassTeacherChangeService.page(ConventPage.getPage(dto), queryWrapper);
+        PageOutput<BaseClassTeacherChangePageVo> pageOutput = ConventPage.getPageOutput(page, BaseClassTeacherChangePageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询班主任异动记录表信息")
+    @SaCheckPermission("baseclassteacherchange:detail")
+    @XjrLog(value = "根据id查询班主任异动记录表信息")
+    public RT<BaseClassTeacherChangeVo> info(@RequestParam Long id){
+        BaseClassTeacherChange baseClassTeacherChange = baseClassTeacherChangeService.getById(id);
+        if (baseClassTeacherChange == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(baseClassTeacherChange, BaseClassTeacherChangeVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增班主任异动记录表")
+    @SaCheckPermission("baseclassteacherchange:add")
+    @XjrLog(value = "新增班主任异动记录表")
+    public RT<Boolean> add(@Valid @RequestBody AddBaseClassTeacherChangeDto dto){
+        BaseClassTeacherChange baseClassTeacherChange = BeanUtil.toBean(dto, BaseClassTeacherChange.class);
+        boolean isSuccess = baseClassTeacherChangeService.save(baseClassTeacherChange);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改班主任异动记录表")
+    @SaCheckPermission("baseclassteacherchange:edit")
+    @XjrLog(value = "修改班主任异动记录表")
+    public RT<Boolean> update(@Valid @RequestBody UpdateBaseClassTeacherChangeDto dto){
+
+        BaseClassTeacherChange baseClassTeacherChange = BeanUtil.toBean(dto, BaseClassTeacherChange.class);
+        return RT.ok(baseClassTeacherChangeService.updateById(baseClassTeacherChange));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除班主任异动记录表")
+    @SaCheckPermission("baseclassteacherchange:delete")
+    @XjrLog(value = "删除班主任异动记录表")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(baseClassTeacherChangeService.removeBatchByIds(ids));
+
+    }
+
+}

+ 37 - 0
src/main/java/com/xjrsoft/module/base/dto/AddBaseClassTeacherChangeDto.java

@@ -0,0 +1,37 @@
+package com.xjrsoft.module.base.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+
+/**
+* @title: 班主任异动记录表
+* @Author dzx
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+public class AddBaseClassTeacherChangeDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 班级id(base_class)
+    */
+    @ApiModelProperty("班级id(base_class)")
+    private Long classId;
+    /**
+    * 异动前班主任(xjr_user)
+    */
+    @ApiModelProperty("异动前班主任(xjr_user)")
+    private Long beforeTeacherId;
+    /**
+    * 异动后班主任(xjr_user)
+    */
+    @ApiModelProperty("异动后班主任(xjr_user)")
+    private Long afterTeacherId;
+
+}

+ 19 - 0
src/main/java/com/xjrsoft/module/base/dto/BaseClassTeacherChangePageDto.java

@@ -0,0 +1,19 @@
+package com.xjrsoft.module.base.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 班主任异动记录表分页查询入参
+* @Author dzx
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class BaseClassTeacherChangePageDto extends PageInput {
+
+
+}

+ 24 - 0
src/main/java/com/xjrsoft/module/base/dto/UpdateBaseClassTeacherChangeDto.java

@@ -0,0 +1,24 @@
+package com.xjrsoft.module.base.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+
+/**
+* @title: 班主任异动记录表
+* @Author dzx
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+public class UpdateBaseClassTeacherChangeDto extends AddBaseClassTeacherChangeDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+}

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

@@ -12,7 +12,6 @@ import lombok.Data;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
-import java.util.Date;
 import java.util.List;
 import java.util.List;
 
 
 
 

+ 89 - 0
src/main/java/com/xjrsoft/module/base/entity/BaseClassTeacherChange.java

@@ -0,0 +1,89 @@
+package com.xjrsoft.module.base.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+
+/**
+* @title: 班主任异动记录表
+* @Author dzx
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+@TableName("base_class_teacher_change")
+@ApiModel(value = "base_class_teacher_change", description = "班主任异动记录表")
+public class BaseClassTeacherChange implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableId
+    private Long id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改日期
+    */
+    @ApiModelProperty("修改日期")
+    @TableField(fill = FieldFill.UPDATE)
+    private LocalDateTime modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标记
+    */
+    @ApiModelProperty("有效标记")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 班级id(base_class)
+    */
+    @ApiModelProperty("班级id(base_class)")
+    private Long classId;
+    /**
+    * 异动前班主任(xjr_user)
+    */
+    @ApiModelProperty("异动前班主任(xjr_user)")
+    private Long beforeTeacherId;
+    /**
+    * 异动后班主任(xjr_user)
+    */
+    @ApiModelProperty("异动后班主任(xjr_user)")
+    private Long afterTeacherId;
+
+
+}

+ 16 - 0
src/main/java/com/xjrsoft/module/base/mapper/BaseClassTeacherChangeMapper.java

@@ -0,0 +1,16 @@
+package com.xjrsoft.module.base.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.base.entity.BaseClassTeacherChange;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 班主任异动记录表
+* @Author dzx
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Mapper
+public interface BaseClassTeacherChangeMapper extends MPJBaseMapper<BaseClassTeacherChange> {
+
+}

+ 14 - 0
src/main/java/com/xjrsoft/module/base/service/IBaseClassTeacherChangeService.java

@@ -0,0 +1,14 @@
+package com.xjrsoft.module.base.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.base.entity.BaseClassTeacherChange;
+
+/**
+* @title: 班主任异动记录表
+* @Author dzx
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+
+public interface IBaseClassTeacherChangeService extends MPJBaseService<BaseClassTeacherChange> {
+}

+ 9 - 1
src/main/java/com/xjrsoft/module/base/service/impl/BaseClassCourseServiceImpl.java

@@ -41,7 +41,15 @@ import com.xjrsoft.module.textbook.mapper.TextbookStudentClaimMapper;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.Font;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
+import org.apache.poi.ss.usermodel.IndexedColors;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.VerticalAlignment;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;

+ 0 - 2
src/main/java/com/xjrsoft/module/base/service/impl/BaseClassMergeServiceImpl.java

@@ -20,10 +20,8 @@ import com.xjrsoft.module.base.mapper.BaseClassMergeStudentMapper;
 import com.xjrsoft.module.base.service.IBaseClassMergeService;
 import com.xjrsoft.module.base.service.IBaseClassMergeService;
 import com.xjrsoft.module.base.vo.BaseClassMergeStudentVo;
 import com.xjrsoft.module.base.vo.BaseClassMergeStudentVo;
 import com.xjrsoft.module.organization.entity.User;
 import com.xjrsoft.module.organization.entity.User;
-import com.xjrsoft.module.student.entity.StudentChangeRecord;
 import com.xjrsoft.module.student.mapper.BaseStudentSchoolRollMapper;
 import com.xjrsoft.module.student.mapper.BaseStudentSchoolRollMapper;
 import com.xjrsoft.module.student.service.IStudentChangeRecordService;
 import com.xjrsoft.module.student.service.IStudentChangeRecordService;
-import com.xjrsoft.module.system.entity.DictionaryDetail;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;

+ 23 - 0
src/main/java/com/xjrsoft/module/base/service/impl/BaseClassServiceImpl.java

@@ -20,8 +20,10 @@ import com.xjrsoft.module.base.dto.AddBaseClassPageDto;
 import com.xjrsoft.module.base.dto.BaseClassPageDto;
 import com.xjrsoft.module.base.dto.BaseClassPageDto;
 import com.xjrsoft.module.base.dto.UpdateBaseClassPageDto;
 import com.xjrsoft.module.base.dto.UpdateBaseClassPageDto;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.entity.BaseClass;
+import com.xjrsoft.module.base.entity.BaseClassTeacherChange;
 import com.xjrsoft.module.base.entity.BaseGrade;
 import com.xjrsoft.module.base.entity.BaseGrade;
 import com.xjrsoft.module.base.mapper.BaseClassMapper;
 import com.xjrsoft.module.base.mapper.BaseClassMapper;
+import com.xjrsoft.module.base.mapper.BaseClassTeacherChangeMapper;
 import com.xjrsoft.module.base.mapper.BaseGradeMapper;
 import com.xjrsoft.module.base.mapper.BaseGradeMapper;
 import com.xjrsoft.module.base.service.IBaseClassService;
 import com.xjrsoft.module.base.service.IBaseClassService;
 import com.xjrsoft.module.base.vo.BaseClassPageVo;
 import com.xjrsoft.module.base.vo.BaseClassPageVo;
@@ -40,6 +42,7 @@ import com.xjrsoft.module.teacher.entity.XjrUser;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CompletableFuture;
@@ -63,6 +66,8 @@ public class BaseClassServiceImpl extends MPJBaseServiceImpl<BaseClassMapper, Ba
 
 
     private final BaseGradeMapper gradeMapper;
     private final BaseGradeMapper gradeMapper;
 
 
+    private final BaseClassTeacherChangeMapper teacherChangeMapper;
+
     /**
     /**
      * 获取家长关联的学生 id 是家长的ID
      * 获取家长关联的学生 id 是家长的ID
      *
      *
@@ -211,6 +216,14 @@ public class BaseClassServiceImpl extends MPJBaseServiceImpl<BaseClassMapper, Ba
                     });
                     });
                 }
                 }
             }
             }
+
+            teacherChangeMapper.insert(new BaseClassTeacherChange(){{
+                setClassId(baseClass.getId());
+                setAfterTeacherId(baseClass.getTeacherId());
+                setDeleteMark(DeleteMark.NODELETE.getCode());
+                setEnabledMark(EnabledMark.ENABLED.getCode());
+                setCreateDate(LocalDateTime.now());
+            }});
         }
         }
         return isSuccess;
         return isSuccess;
     }
     }
@@ -231,6 +244,16 @@ public class BaseClassServiceImpl extends MPJBaseServiceImpl<BaseClassMapper, Ba
             if (count > 0) {
             if (count > 0) {
                 throw new MyException("该老师已是其他在读班级班主任,无法修改");
                 throw new MyException("该老师已是其他在读班级班主任,无法修改");
             }
             }
+
+            //增加异动记录
+            teacherChangeMapper.insert(new BaseClassTeacherChange(){{
+                setClassId(aClass.getId());
+                setAfterTeacherId(aClass.getTeacherId());
+                setAfterTeacherId(dto.getTeacherId());
+                setDeleteMark(DeleteMark.NODELETE.getCode());
+                setEnabledMark(EnabledMark.ENABLED.getCode());
+                setCreateDate(LocalDateTime.now());
+            }});
         }
         }
         if(!aClass.getCode().equals(dto.getCode())){
         if(!aClass.getCode().equals(dto.getCode())){
             List<BaseClass> list = this.list(
             List<BaseClass> list = this.list(

+ 19 - 0
src/main/java/com/xjrsoft/module/base/service/impl/BaseClassTeacherChangeServiceImpl.java

@@ -0,0 +1,19 @@
+package com.xjrsoft.module.base.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.base.entity.BaseClassTeacherChange;
+import com.xjrsoft.module.base.mapper.BaseClassTeacherChangeMapper;
+import com.xjrsoft.module.base.service.IBaseClassTeacherChangeService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+* @title: 班主任异动记录表
+* @Author dzx
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class BaseClassTeacherChangeServiceImpl extends MPJBaseServiceImpl<BaseClassTeacherChangeMapper, BaseClassTeacherChange> implements IBaseClassTeacherChangeService {
+}

+ 68 - 0
src/main/java/com/xjrsoft/module/base/vo/BaseClassTeacherChangePageVo.java

@@ -0,0 +1,68 @@
+package com.xjrsoft.module.base.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+* @title: 班主任异动记录表分页列表出参
+* @Author dzx
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+public class BaseClassTeacherChangePageVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    private LocalDateTime createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    private Long modifyUserId;
+    /**
+    * 修改日期
+    */
+    @ApiModelProperty("修改日期")
+    private LocalDateTime modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    private Integer deleteMark;
+    /**
+    * 有效标记
+    */
+    @ApiModelProperty("有效标记")
+    private Integer enabledMark;
+    /**
+    * 班级id(base_class)
+    */
+    @ApiModelProperty("班级id(base_class)")
+    private Long classId;
+    /**
+    * 异动前班主任(xjr_user)
+    */
+    @ApiModelProperty("异动前班主任(xjr_user)")
+    private Long beforeTeacherId;
+    /**
+    * 异动后班主任(xjr_user)
+    */
+    @ApiModelProperty("异动后班主任(xjr_user)")
+    private Long afterTeacherId;
+
+}

+ 38 - 0
src/main/java/com/xjrsoft/module/base/vo/BaseClassTeacherChangeVo.java

@@ -0,0 +1,38 @@
+package com.xjrsoft.module.base.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 班主任异动记录表表单出参
+* @Author dzx
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+public class BaseClassTeacherChangeVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+    /**
+    * 班级id(base_class)
+    */
+    @ApiModelProperty("班级id(base_class)")
+    private Long classId;
+    /**
+    * 异动前班主任(xjr_user)
+    */
+    @ApiModelProperty("异动前班主任(xjr_user)")
+    private Long beforeTeacherId;
+    /**
+    * 异动后班主任(xjr_user)
+    */
+    @ApiModelProperty("异动后班主任(xjr_user)")
+    private Long afterTeacherId;
+
+
+
+}

+ 19 - 1
src/main/resources/sqlScript/20250421_sql.sql

@@ -19,4 +19,22 @@ UPDATE base_student_school_roll SET internship_state = 'IT_0001' WHERE archives_
 # 上面已经在正式服运行-------------------------------------------------------------
 # 上面已经在正式服运行-------------------------------------------------------------
 
 
 ALTER TABLE attendance_statistics
 ALTER TABLE attendance_statistics
-  ADD COLUMN remarks VARCHAR (500) NULL COMMENT '备注' AFTER attendance_days;
+  ADD COLUMN remarks VARCHAR (500) NULL COMMENT '备注' AFTER attendance_days;
+  
+-- --------------------------------------------------------------------------------------------
+-- 班主任异动记录
+-- --------------------------------------------------------------------------------------------  
+DROP TABLE IF EXISTS base_class_teacher_change;   
+CREATE TABLE `base_class_teacher_change` (
+  `id` BIGINT NOT NULL,
+  `create_user_id` BIGINT DEFAULT NULL COMMENT '创建人',
+  `create_date` DATETIME DEFAULT NULL COMMENT '创建时间',
+  `modify_user_id` BIGINT DEFAULT NULL COMMENT '修改人',
+  `modify_date` DATETIME DEFAULT NULL COMMENT '修改日期',
+  `delete_mark` INT DEFAULT NULL COMMENT '删除标记',
+  `enabled_mark` INT DEFAULT NULL COMMENT '有效标记',
+  `class_id` BIGINT DEFAULT NULL COMMENT '班级id(base_class)',
+  before_teacher_id BIGINT DEFAULT NULL COMMENT '异动前班主任(xjr_user)',
+  after_teacher_id BIGINT DEFAULT NULL COMMENT '异动后班主任(xjr_user)',
+  PRIMARY KEY (`id`)
+) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='班主任异动记录表';

+ 25 - 0
src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

@@ -4728,4 +4728,29 @@ public class FreeMarkerGeneratorTest {
 
 
         apiGeneratorService.generateCodes(params);
         apiGeneratorService.generateCodes(params);
     }
     }
+
+    @Test
+    public void gcoBaseClassTeacherChange() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("base_class_teacher_change");//init_sql中的表名
+        mainTable.setIsMain(true);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        tableConfigs.add(mainTable);
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("dzx");//作者名称
+        params.setPackageName("base");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(false);//是否生成导入接口
+        params.setExport(false);//是否生成导出接口
+        params.setOutMainDir(true);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
 }
 }