Selaa lähdekoodia

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

# Conflicts:
#	src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java
大数据与最优化研究所 7 kuukautta sitten
vanhempi
commit
06f9b42c12
24 muutettua tiedostoa jossa 714 lisäystä ja 29 poistoa
  1. 21 1
      src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskClassServiceImpl.java
  2. 26 0
      src/main/java/com/xjrsoft/module/base/controller/BaseClassController.java
  3. 100 0
      src/main/java/com/xjrsoft/module/base/controller/BaseClassTeacherChangeController.java
  4. 37 0
      src/main/java/com/xjrsoft/module/base/dto/AddBaseClassTeacherChangeDto.java
  5. 46 0
      src/main/java/com/xjrsoft/module/base/dto/BaseClassTeacherChangePageDto.java
  6. 24 0
      src/main/java/com/xjrsoft/module/base/dto/UpdateBaseClassTeacherChangeDto.java
  7. 0 1
      src/main/java/com/xjrsoft/module/base/entity/BaseClassMerge.java
  8. 89 0
      src/main/java/com/xjrsoft/module/base/entity/BaseClassTeacherChange.java
  9. 21 0
      src/main/java/com/xjrsoft/module/base/mapper/BaseClassTeacherChangeMapper.java
  10. 20 0
      src/main/java/com/xjrsoft/module/base/service/IBaseClassTeacherChangeService.java
  11. 9 1
      src/main/java/com/xjrsoft/module/base/service/impl/BaseClassCourseServiceImpl.java
  12. 0 2
      src/main/java/com/xjrsoft/module/base/service/impl/BaseClassMergeServiceImpl.java
  13. 31 0
      src/main/java/com/xjrsoft/module/base/service/impl/BaseClassServiceImpl.java
  14. 26 0
      src/main/java/com/xjrsoft/module/base/service/impl/BaseClassTeacherChangeServiceImpl.java
  15. 42 0
      src/main/java/com/xjrsoft/module/base/vo/BaseClassTeacherChangePageVo.java
  16. 38 0
      src/main/java/com/xjrsoft/module/base/vo/BaseClassTeacherChangeVo.java
  17. 0 2
      src/main/java/com/xjrsoft/module/job/BaseNewStudentTask.java
  18. 47 1
      src/main/java/com/xjrsoft/module/job/ClassGraduateTask.java
  19. 15 0
      src/main/java/com/xjrsoft/module/student/service/impl/PbCseFeeobjupdateServiceImpl.java
  20. 4 1
      src/main/java/com/xjrsoft/module/student/vo/EnrollmentStatisticsInfoVo.java
  21. 35 19
      src/main/java/com/xjrsoft/module/teacher/service/impl/TeacherbaseManagerServiceImpl.java
  22. 39 0
      src/main/resources/mapper/base/BaseClassTeacherChange.xml
  23. 19 1
      src/main/resources/sqlScript/20250421_sql.sql
  24. 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.BandingTaskClassSureListVo;
 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.BaseGrade;
 import com.xjrsoft.module.base.entity.BaseMajorSet;
 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.service.IBaseClassroomService;
 import com.xjrsoft.module.base.service.IBaseMajorSetService;
@@ -60,6 +62,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
@@ -93,7 +96,7 @@ public class BandingTaskClassServiceImpl extends MPJBaseServiceImpl<BandingTaskC
     private final BaseGradeMapper gradeMapper;
     private final IUserRoleRelationService roleRelationService;
     private final RedisUtil redisUtil;
-
+    private final BaseClassTeacherChangeMapper teacherChangeMapper;
 
     @Override
     public Boolean add(BandingTaskClass bandingTaskClass) {
@@ -315,6 +318,15 @@ public class BandingTaskClassServiceImpl extends MPJBaseServiceImpl<BandingTaskC
                     }
                     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) {
                         long count = roleRelationService.count(
@@ -350,6 +362,14 @@ public class BandingTaskClassServiceImpl extends MPJBaseServiceImpl<BandingTaskC
                     classMapper.insert(baseClass);
                     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) {
                         long count = roleRelationService.count(
                                 new QueryWrapper<UserRoleRelation>().lambda()

+ 26 - 0
src/main/java/com/xjrsoft/module/base/controller/BaseClassController.java

@@ -1,9 +1,13 @@
 package com.xjrsoft.module.base.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.xjrsoft.common.annotation.XjrLog;
+import com.xjrsoft.common.enums.DeleteMark;
+import com.xjrsoft.common.enums.EnabledMark;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
@@ -11,7 +15,9 @@ import com.xjrsoft.module.base.dto.AddBaseClassPageDto;
 import com.xjrsoft.module.base.dto.BaseClassPageDto;
 import com.xjrsoft.module.base.dto.UpdateBaseClassPageDto;
 import com.xjrsoft.module.base.entity.BaseClass;
+import com.xjrsoft.module.base.entity.BaseClassTeacherChange;
 import com.xjrsoft.module.base.service.IBaseClassService;
+import com.xjrsoft.module.base.service.IBaseClassTeacherChangeService;
 import com.xjrsoft.module.base.vo.BaseClassPageVo;
 import com.xjrsoft.module.base.vo.BaseClassVo;
 import io.swagger.annotations.Api;
@@ -27,6 +33,8 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -41,6 +49,7 @@ import java.util.List;
 @AllArgsConstructor
 public class BaseClassController {
     private final IBaseClassService baseClassService;
+    private final IBaseClassTeacherChangeService classTeacherChangeService;
 
     @GetMapping(value = "/page")
     @ApiOperation(value = "班级列表(分页)")
@@ -57,6 +66,23 @@ public class BaseClassController {
     @SaCheckPermission("baseclass:delete")
     @XjrLog(value = "删除", saveResponseData = true)
     public RT<Boolean> delete(@Valid @RequestBody List<Long> ids) {
+        List<BaseClass> classList = baseClassService.listByIds(ids);
+        List<BaseClassTeacherChange> classTeacherChangeList = new ArrayList<>();
+        for (BaseClass baseClass : classList) {
+            classTeacherChangeList.add(
+                    new BaseClassTeacherChange(){{
+                        setClassId(baseClass.getId());
+                        setBeforeTeacherId(baseClass.getTeacherId());
+                        setCreateDate(LocalDateTime.now());
+                        setCreateUserId(StpUtil.getLoginIdAsLong());
+                        setDeleteMark(DeleteMark.NODELETE.getCode());
+                        setEnabledMark(EnabledMark.ENABLED.getCode());
+                    }}
+            );
+        }
+        if(!classTeacherChangeList.isEmpty()){
+            classTeacherChangeService.saveBatch(classTeacherChangeList);
+        }
         return RT.ok(baseClassService.removeByIds(ids));
     }
 

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

@@ -0,0 +1,100 @@
+package com.xjrsoft.module.base.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+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.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){
+
+        Page<BaseClassTeacherChangePageVo> page = baseClassTeacherChangeService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        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;
+
+}

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

@@ -0,0 +1,46 @@
+package com.xjrsoft.module.base.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+
+
+/**
+* @title: 班主任异动记录表分页查询入参
+* @Author dzx
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class BaseClassTeacherChangePageDto extends PageInput {
+
+    @ApiModelProperty("班级名称")
+    private String className;
+
+    @ApiModelProperty("班级代码")
+    private String classCode;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("异动时间-开始")
+    private LocalDate createDateStart;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("异动时间-结束")
+    private LocalDate createDateEnd;
+
+    @ApiModelProperty("异动前班主任")
+    private String beforeTeacherName;
+
+    @ApiModelProperty("异动后班主任")
+    private String afterTeacherName;
+
+    @ApiModelProperty("年级")
+    private Long gradeId;
+
+
+}

+ 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.time.LocalDateTime;
-import java.util.Date;
 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;
+
+
+}

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

@@ -0,0 +1,21 @@
+package com.xjrsoft.module.base.mapper;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.base.dto.BaseClassTeacherChangePageDto;
+import com.xjrsoft.module.base.entity.BaseClassTeacherChange;
+import com.xjrsoft.module.base.vo.BaseClassTeacherChangePageVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+* @title: 班主任异动记录表
+* @Author dzx
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Mapper
+public interface BaseClassTeacherChangeMapper extends MPJBaseMapper<BaseClassTeacherChange> {
+
+    Page<BaseClassTeacherChangePageVo> getPage(Page<BaseClassTeacherChangePageVo> page, @Param("dto") BaseClassTeacherChangePageDto dto);
+}

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

@@ -0,0 +1,20 @@
+package com.xjrsoft.module.base.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.base.dto.BaseClassTeacherChangePageDto;
+import com.xjrsoft.module.base.entity.BaseClassTeacherChange;
+import com.xjrsoft.module.base.vo.BaseClassTeacherChangePageVo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+* @title: 班主任异动记录表
+* @Author dzx
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+
+public interface IBaseClassTeacherChangeService extends MPJBaseService<BaseClassTeacherChange> {
+
+    Page<BaseClassTeacherChangePageVo> getPage(Page<BaseClassTeacherChangePageVo> page, @Param("dto") BaseClassTeacherChangePageDto dto);
+}

+ 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 org.apache.commons.lang3.ObjectUtils;
 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.xssf.usermodel.XSSFWorkbook;
 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.vo.BaseClassMergeStudentVo;
 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.service.IStudentChangeRecordService;
-import com.xjrsoft.module.system.entity.DictionaryDetail;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;

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

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

@@ -0,0 +1,26 @@
+package com.xjrsoft.module.base.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.base.dto.BaseClassTeacherChangePageDto;
+import com.xjrsoft.module.base.entity.BaseClassTeacherChange;
+import com.xjrsoft.module.base.mapper.BaseClassTeacherChangeMapper;
+import com.xjrsoft.module.base.service.IBaseClassTeacherChangeService;
+import com.xjrsoft.module.base.vo.BaseClassTeacherChangePageVo;
+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 {
+    @Override
+    public Page<BaseClassTeacherChangePageVo> getPage(Page<BaseClassTeacherChangePageVo> page, BaseClassTeacherChangePageDto dto) {
+        return this.baseMapper.getPage(page, dto);
+    }
+}

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

@@ -0,0 +1,42 @@
+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 String gradeName;
+
+    @ApiModelProperty("班级名称")
+    private String className;
+
+    @ApiModelProperty("班级代码")
+    private String classCode;
+
+    @ApiModelProperty("异动时间")
+    private LocalDateTime createDate;
+
+    @ApiModelProperty("操作人")
+    private String createUserName;
+
+    @ApiModelProperty("异动前班主任")
+    private String beforeTeacherName;
+
+    @ApiModelProperty("异动后班主任")
+    private String afterTeacherName;
+
+}

+ 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;
+
+
+
+}

+ 0 - 2
src/main/java/com/xjrsoft/module/job/BaseNewStudentTask.java

@@ -153,8 +153,6 @@ public class BaseNewStudentTask {
                 existsNewStudent.setSecondAmbitionId(majorSetNameMap.get(feeobjupdate.getZytjspec()));
                 existsNewStudent.setGender(GenderDictionaryEnum.getCode(feeobjupdate.getSex()));
                 existsNewStudent.setModifyDate(new Date());
-                existsNewStudent.setStatus(0);
-                existsNewStudent.setIsCanBanding(1);
                 existsNewStudent.setEnrollmentPlanId(planId);
 
                 updateList.add(existsNewStudent);

+ 47 - 1
src/main/java/com/xjrsoft/module/job/ClassGraduateTask.java

@@ -1,12 +1,25 @@
 package com.xjrsoft.module.job;
 
+import cn.dev33.satoken.stp.StpUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.xjrsoft.common.enums.DeleteMark;
+import com.xjrsoft.common.enums.EnabledMark;
+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.service.IBaseClassService;
+import com.xjrsoft.module.base.service.IBaseClassTeacherChangeService;
 import com.xjrsoft.module.base.service.IBaseGradeService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * 自动别业班级
  * @author dzx
@@ -22,6 +35,9 @@ public class ClassGraduateTask {
     @Autowired
     private IBaseGradeService gradeService;
 
+    @Autowired
+    private IBaseClassTeacherChangeService classTeacherChangeService;
+
     @Scheduled(cron = "0 */15 23 30 6 ?")
     public void execute() {
         doExecute();
@@ -31,7 +47,37 @@ public class ClassGraduateTask {
      * 根据年级自动毕业班级和学生
      */
     public void doExecute() {
-
+        LocalDateTime now = LocalDateTime.now();
+        List<BaseGrade> gradeList = gradeService.list(
+                new QueryWrapper<BaseGrade>().lambda()
+                        .eq(BaseGrade::getDeleteMark, DeleteMark.NODELETE.getCode())
+                        .eq(BaseGrade::getStatus, 1)
+                        .last("limit 4")
+        );
+        List<Long> gradeIds = gradeList.stream().map(BaseGrade::getId).collect(Collectors.toList());
+        List<BaseClass> classList = classService.list(
+                new QueryWrapper<BaseClass>().lambda()
+                        .eq(BaseClass::getDeleteMark, DeleteMark.NODELETE.getCode())
+                        .eq(BaseClass::getIsGraduate, 1)
+                        .notIn(!gradeIds.isEmpty(), BaseClass::getGradeId, gradeIds)
+        );
+        //毕业后,记录班主任异动记录
+        List<BaseClassTeacherChange> classTeacherChangeList = new ArrayList<>();
+        for (BaseClass baseClass : classList) {
+            classTeacherChangeList.add(
+                    new BaseClassTeacherChange(){{
+                        setClassId(baseClass.getId());
+                        setBeforeTeacherId(baseClass.getTeacherId());
+                        setCreateDate(LocalDateTime.now());
+                        setCreateUserId(StpUtil.getLoginIdAsLong());
+                        setDeleteMark(DeleteMark.NODELETE.getCode());
+                        setEnabledMark(EnabledMark.ENABLED.getCode());
+                    }}
+            );
+        }
+        if(!classTeacherChangeList.isEmpty()){
+            classTeacherChangeService.saveBatch(classTeacherChangeList);
+        }
     }
 
 }

+ 15 - 0
src/main/java/com/xjrsoft/module/student/service/impl/PbCseFeeobjupdateServiceImpl.java

@@ -149,6 +149,12 @@ public class PbCseFeeobjupdateServiceImpl extends MPJBaseServiceImpl<PbCseFeeobj
             graduationsRes.add(new EnrollmentStatisticsInfoKeyValue(entry.getKey(), entry.getValue()));
         }
 
+        Map<String, Long> graduationPays = pbCseFeeobjupdateList.stream().filter(x -> x.getGraduations() != null).filter(x -> "已缴费".equals(x.getPaymnystate())).collect(Collectors.groupingBy(PbCseFeeobjupdate::getGraduations, Collectors.counting()));
+        List<EnrollmentStatisticsInfoKeyValue> graduationsPayRes = new ArrayList<>();
+        for (Map.Entry<String, Long> entry : graduationPays.entrySet()) {
+            graduationsPayRes.add(new EnrollmentStatisticsInfoKeyValue(entry.getKey(), entry.getValue()));
+        }
+
         //住宿类型
         Map<String, Long> accommodationType = pbCseFeeobjupdateList.stream().filter(x -> x.getQuartername() != null).collect(Collectors.groupingBy(PbCseFeeobjupdate::getQuartername, Collectors.counting()));
         List<EnrollmentStatisticsInfoKeyValue> accommodationTypeRes = new ArrayList<>();
@@ -156,6 +162,14 @@ public class PbCseFeeobjupdateServiceImpl extends MPJBaseServiceImpl<PbCseFeeobj
             accommodationTypeRes.add(new EnrollmentStatisticsInfoKeyValue(entry.getKey(), entry.getValue()));
         }
 
+        Map<String, List<PbCseFeeobjupdate>> quarternameList = pbCseFeeobjupdateList.stream().filter(x -> x.getQuartername() != null).collect(Collectors.groupingBy(PbCseFeeobjupdate::getQuartername));
+        for (String quartername : quarternameList.keySet()) {
+            Map<String, Long> collect = quarternameList.get(quartername).stream().filter(x -> x.getQuartername() != null).collect(Collectors.groupingBy(PbCseFeeobjupdate::getSex, Collectors.counting()));
+            for (Map.Entry<String, Long> entry : collect.entrySet()) {
+                accommodationTypeRes.add(new EnrollmentStatisticsInfoKeyValue(quartername + entry.getKey(), entry.getValue()));
+            }
+        }
+
         //性别
         Map<String, Long> gender = pbCseFeeobjupdateList.stream().collect(Collectors.groupingBy(PbCseFeeobjupdate::getSex, Collectors.counting()));
         List<EnrollmentStatisticsInfoKeyValue> genderRes = new ArrayList<>();
@@ -168,6 +182,7 @@ public class PbCseFeeobjupdateServiceImpl extends MPJBaseServiceImpl<PbCseFeeobj
         result.setStudentSource(graduationsRes);
         result.setAccommodationType(accommodationTypeRes);
         result.setGender(genderRes);
+        result.setStudentSourcePay(graduationsPayRes);
 
         //获取所有学生的收费明细
         MPJLambdaWrapper<PbCseFeeobjupdate> feeobjupdateXssfdetailMPJLambdaWrapper = new MPJLambdaWrapper<>();

+ 4 - 1
src/main/java/com/xjrsoft/module/student/vo/EnrollmentStatisticsInfoVo.java

@@ -32,9 +32,12 @@ public class EnrollmentStatisticsInfoVo {
     /**
      * 学生来源
      */
-    @ApiModelProperty("学生来源")
+    @ApiModelProperty("学生来源(报名人数)")
     private List<EnrollmentStatisticsInfoKeyValue> studentSource;
 
+    @ApiModelProperty("学生来源(缴费人数)")
+    private List<EnrollmentStatisticsInfoKeyValue> studentSourcePay;
+
     /**
      * 住宿类型
      */

+ 35 - 19
src/main/java/com/xjrsoft/module/teacher/service/impl/TeacherbaseManagerServiceImpl.java

@@ -662,15 +662,23 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
 
                 BaseTeacher teacher = teacherMap.get(user.getId());
                 teacher.setEmployType(dictionaryMap.get(rowData.get(6).toString()));
-                teacher.setJobState(dictionaryMap.get(rowData.get(9).toString()));
-                teacher.setJoinTime(sdf.parse(rowData.get(10).toString()));
+                if(rowData.get(9) != null && StrUtil.isNotEmpty(rowData.get(9).toString())){
+                    teacher.setJobState(dictionaryMap.get(rowData.get(9).toString()));
+                }
+                if(rowData.get(10) != null && StrUtil.isNotEmpty(rowData.get(10).toString())){
+                    teacher.setJoinTime(sdf.parse(rowData.get(10).toString()));
+                }
+
                 updateTeacherList.add(teacher);
 
-                BaseTeacherRegular teacherRegular = regularMap.get(user.getId());
-                JSONArray teachingStatus = teacherRegular.getTeachingStatus();
-                teachingStatus.add(dictionaryMap.get(rowData.get(11).toString()));
-                teacherRegular.setTeachingStatus(teachingStatus);
-                updateBaseTeacherRegularList.add(teacherRegular);
+                if(rowData.get(11) != null && StrUtil.isNotEmpty(rowData.get(11).toString())){
+                    BaseTeacherRegular teacherRegular = regularMap.get(user.getId());
+                    JSONArray teachingStatus = teacherRegular.getTeachingStatus();
+                    teachingStatus.add(dictionaryMap.get(rowData.get(11).toString()));
+                    teacherRegular.setTeachingStatus(teachingStatus);
+                    updateBaseTeacherRegularList.add(teacherRegular);
+                }
+
 
                 List<Long> deptIds = userDeptMap.get(user.getId());
                 if (deptIds == null || !deptIds.contains(departmentMap.get(rowData.get(7).toString()))) {
@@ -706,20 +714,28 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
             teacher.setEmployType(dictionaryMap.get(rowData.get(6).toString()));
             teacher.setUserId(user.getId());
             teacher.setCreateDate(LocalDateTime.now());
-            teacher.setJobState(dictionaryMap.get(rowData.get(9).toString()));
-            teacher.setJoinTime(sdf.parse(rowData.get(10).toString()));
+            if(rowData.get(9) != null && StrUtil.isNotEmpty(rowData.get(9).toString())){
+                teacher.setJobState(dictionaryMap.get(rowData.get(9).toString()));
+            }
+
+            if(rowData.get(10) != null && StrUtil.isNotEmpty(rowData.get(10).toString())){
+                teacher.setJoinTime(sdf.parse(rowData.get(10).toString()));
+            }
+
             teacherMapper.insert(teacher);
 
-            BaseTeacherRegular teacherRegular = new BaseTeacherRegular();
-            JSONArray teachingStatus = new JSONArray();
-            teachingStatus.add(dictionaryMap.get(rowData.get(11).toString()));
-            teacherRegular.setTeachingStatus(teachingStatus);
-            teacherRegular.setCreateDate(LocalDateTime.now());
-            teacherRegular.setCreateUserId(StpUtil.getLoginIdAsLong());
-            teacherRegular.setUserId(user.getId());
-            teacherRegular.setDeleteMark(DeleteMark.NODELETE.getCode());
-            teacherRegular.setEnabledMark(EnabledMark.ENABLED.getCode());
-            teacherRegularMapper.insert(teacherRegular);
+            if(rowData.get(11) != null && StrUtil.isNotEmpty(rowData.get(11).toString())){
+                BaseTeacherRegular teacherRegular = new BaseTeacherRegular();
+                JSONArray teachingStatus = new JSONArray();
+                teachingStatus.add(dictionaryMap.get(rowData.get(11).toString()));
+                teacherRegular.setTeachingStatus(teachingStatus);
+                teacherRegular.setCreateDate(LocalDateTime.now());
+                teacherRegular.setCreateUserId(StpUtil.getLoginIdAsLong());
+                teacherRegular.setUserId(user.getId());
+                teacherRegular.setDeleteMark(DeleteMark.NODELETE.getCode());
+                teacherRegular.setEnabledMark(EnabledMark.ENABLED.getCode());
+                teacherRegularMapper.insert(teacherRegular);
+            }
 
             UserDeptRelation userDeptRelation = new UserDeptRelation();
             userDeptRelation.setDeptId(departmentMap.get(rowData.get(7).toString()));

+ 39 - 0
src/main/resources/mapper/base/BaseClassTeacherChange.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xjrsoft.module.base.mapper.BaseClassTeacherChangeMapper">
+    <select id="getPage" parameterType="com.xjrsoft.module.base.dto.BaseClassTeacherChangePageDto" resultType="com.xjrsoft.module.base.vo.BaseClassTeacherChangePageVo">
+        SELECT t1.id,t3.name AS grade_name,t2.name AS class_name,t2.code AS class_code,t1.create_date,
+        t6.name AS create_user_name,t4.name AS before_teacher_name,t5.name AS after_teacher_name FROM base_class_teacher_change t1
+        INNER JOIN base_class t2 ON t1.class_id = t2.id
+        INNER JOIN base_grade t3 ON t2.grade_id = t3.id
+        LEFT JOIN xjr_user t4 ON t1.before_teacher_id = t4.id
+        LEFT JOIN xjr_user t5 ON t1.after_teacher_id = t5.id
+        LEFT JOIN xjr_user t6 ON t1.create_user_id = t6.id
+        WHERE t1.delete_mark = 0
+        <if test="dto.className != null and dto.className != ''">
+            t2.name like concat('%', #{dto.className}, '%')
+        </if>
+        <if test="dto.classCode != null and dto.classCode != ''">
+            t2.code like concat('%', #{dto.classCode}, '%')
+        </if>
+        <if test="dto.afterTeacherName != null and dto.afterTeacherName != ''">
+            t5.name like concat('%', #{dto.afterTeacherName}, '%')
+        </if>
+        <if test="dto.beforeTeacherName != null and dto.beforeTeacherName != ''">
+            t4.name like concat('%', #{dto.beforeTeacherName}, '%')
+        </if>
+        <if test="dto.gradeId != null">
+            t3.id = #{dto.gradeId}
+        </if>
+        <if test="dto.gradeId != null">
+            t3.id = #{dto.gradeId}
+        </if>
+        <if test="dto.createDateStart != null and dto.createDateEnd != null">
+            t1.create_date between #{dto.createDateStart} and #{dto.createDateEnd}
+        </if>
+        order by t1.create_date desc
+    </select>
+
+</mapper>

+ 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
-  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

@@ -4953,4 +4953,29 @@ public class FreeMarkerGeneratorTest {
 
         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);
+    }
 }