Ver código fonte

教职工异动记录

大数据与最优化研究所 3 semanas atrás
pai
commit
30d02c38e2
20 arquivos alterados com 1037 adições e 5 exclusões
  1. 30 0
      src/main/java/com/xjrsoft/common/enums/TeaChangeTypeEnum.java
  2. 41 0
      src/main/java/com/xjrsoft/module/liteflow/node/WfTeacherDepartNode.java
  3. 133 0
      src/main/java/com/xjrsoft/module/teacher/controller/BaseTeacherChangeRecordController.java
  4. 10 4
      src/main/java/com/xjrsoft/module/teacher/controller/TeacherbaseManagerController.java
  5. 48 0
      src/main/java/com/xjrsoft/module/teacher/dto/AddBaseTeacherChangeRecordDto.java
  6. 43 0
      src/main/java/com/xjrsoft/module/teacher/dto/BaseTeacherChangeRecordPageDto.java
  7. 32 0
      src/main/java/com/xjrsoft/module/teacher/dto/UpdateBaseTeacherChangeRecordDto.java
  8. 98 0
      src/main/java/com/xjrsoft/module/teacher/entity/BaseTeacherChangeRecord.java
  9. 178 0
      src/main/java/com/xjrsoft/module/teacher/entity/WfTeacherDepart.java
  10. 17 0
      src/main/java/com/xjrsoft/module/teacher/mapper/BaseTeacherChangeRecordMapper.java
  11. 17 0
      src/main/java/com/xjrsoft/module/teacher/mapper/WfTeacherDepartMapper.java
  12. 17 0
      src/main/java/com/xjrsoft/module/teacher/service/IBaseTeacherChangeRecordService.java
  13. 2 0
      src/main/java/com/xjrsoft/module/teacher/service/ITeacherbaseManagerService.java
  14. 25 0
      src/main/java/com/xjrsoft/module/teacher/service/impl/BaseTeacherChangeRecordServiceImpl.java
  15. 153 0
      src/main/java/com/xjrsoft/module/teacher/service/impl/TeacherbaseManagerServiceImpl.java
  16. 73 0
      src/main/java/com/xjrsoft/module/teacher/vo/BaseTeacherChangeRecordPageVo.java
  17. 49 0
      src/main/java/com/xjrsoft/module/teacher/vo/BaseTeacherChangeRecordVo.java
  18. 0 1
      src/main/java/com/xjrsoft/module/teacher/vo/XjrUserPageVo.java
  19. 21 0
      src/main/resources/sqlScript/20250324_sql.sql
  20. 50 0
      src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

+ 30 - 0
src/main/java/com/xjrsoft/common/enums/TeaChangeTypeEnum.java

@@ -0,0 +1,30 @@
+package com.xjrsoft.common.enums;
+
+/**
+ * @description: 教职工异动类型tea_change_type
+ * @author: phoenix
+ * @create2023/12/21 11:27
+ * @Version 1.0
+ */
+public enum TeaChangeTypeEnum {
+    /**
+     * 在职状态
+     * */
+    TCT0001("TCT0001", "在职状态");
+
+    final String code;
+    final String value;
+
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getValue() {
+        return this.value;
+    }
+
+    TeaChangeTypeEnum(final String code, final String message) {
+        this.code = code;
+        this.value = message;
+    }
+}

+ 41 - 0
src/main/java/com/xjrsoft/module/liteflow/node/WfTeacherDepartNode.java

@@ -0,0 +1,41 @@
+package com.xjrsoft.module.liteflow.node;
+
+import cn.hutool.core.convert.Convert;
+import com.xjrsoft.module.teacher.service.ITeacherbaseManagerService;
+import com.xjrsoft.module.textbook.service.IWfTextbookRecedeService;
+import com.yomahub.liteflow.core.NodeComponent;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.support.TransactionSynchronization;
+import org.springframework.transaction.support.TransactionSynchronizationManager;
+
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+
+/**
+ * 教职工离职流程规则节点
+ */
+@Component("wf_teacher_depart_node")
+public class WfTeacherDepartNode extends NodeComponent {
+    @Autowired
+    private ITeacherbaseManagerService teacherbaseManagerService;
+
+    @Override
+    public void process() throws Exception {
+        // 获取表单中数据编号
+        Map<String, Object> params = this.getFirstContextBean();
+        Object value = util.getFormDatKey(params, "id");
+        Long formId = Convert.toLong(value);
+        if (formId != null) {
+            // 数据处理
+            TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
+                @Override
+                public void afterCommit() {
+                    CompletableFuture.runAsync(() -> {
+                        teacherbaseManagerService.teacherDepartDataHandle(formId);
+                    });
+                }
+            });
+        }
+    }
+}

+ 133 - 0
src/main/java/com/xjrsoft/module/teacher/controller/BaseTeacherChangeRecordController.java

@@ -0,0 +1,133 @@
+package com.xjrsoft.module.teacher.controller;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.constant.GlobalConstant;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.system.entity.DictionaryDetail;
+import com.xjrsoft.module.teacher.dto.AddBaseTeacherChangeRecordDto;
+import com.xjrsoft.module.teacher.dto.UpdateBaseTeacherChangeRecordDto;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.xjrsoft.common.annotation.XjrLog;
+
+import com.xjrsoft.module.teacher.dto.BaseTeacherChangeRecordPageDto;
+import com.xjrsoft.module.teacher.entity.BaseTeacherChangeRecord;
+import com.xjrsoft.module.teacher.entity.XjrUser;
+import com.xjrsoft.module.teacher.service.IBaseTeacherChangeRecordService;
+import com.xjrsoft.module.teacher.vo.BaseTeacherChangeRecordPageVo;
+
+import com.xjrsoft.module.teacher.vo.BaseTeacherChangeRecordVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+* @title: 教职工异动记录
+* @Author phoenix
+* @Date: 2025-03-24
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/teacher" + "/baseTeacherChangeRecord")
+@Api(value = "/teacher"  + "/baseTeacherChangeRecord",tags = "教职工异动记录代码")
+@AllArgsConstructor
+public class BaseTeacherChangeRecordController {
+
+
+    private final IBaseTeacherChangeRecordService baseTeacherChangeRecordService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="教职工异动记录列表(分页)")
+    @SaCheckPermission("baseteacherchangerecord:detail")
+    @XjrLog(value = "教职工异动记录列表(分页)")
+    public RT<PageOutput<BaseTeacherChangeRecordPageVo>> page(@Valid BaseTeacherChangeRecordPageDto dto) {
+        MPJLambdaWrapper<BaseTeacherChangeRecord> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper
+                .select(BaseTeacherChangeRecord::getId)
+                .select(BaseTeacherChangeRecord.class, x -> VoToColumnUtil.fieldsToColumns(BaseTeacherChangeRecordPageVo.class).contains(x.getProperty()))
+                .leftJoin(XjrUser.class, XjrUser::getId, BaseTeacherChangeRecord::getUserId,
+                        wrapper -> wrapper
+                                .selectAs(XjrUser::getName, BaseTeacherChangeRecordPageVo::getName)
+                                .selectAs(XjrUser::getCredentialNumber, BaseTeacherChangeRecordPageVo::getCredentialNumber)
+                                .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, XjrUser::getGender,
+                                        wrap -> wrap
+                                                .selectAs(DictionaryDetail::getName, BaseTeacherChangeRecordPageVo::getGenderCn)
+                                )
+                                .like(StringUtils.isNotEmpty(dto.getName()), XjrUser::getName, dto.getName())
+                                .eq(StringUtils.isNotEmpty(dto.getCredentialNumber()), XjrUser::getCredentialNumber, dto.getCredentialNumber())
+                )
+                .leftJoin(XjrUser.class, XjrUser::getId, BaseTeacherChangeRecord::getCreateUserId,
+                        wrapper -> wrapper
+                                .selectAs(XjrUser::getName, BaseTeacherChangeRecordPageVo::getCreateUserIdCn)
+                                .like(StringUtils.isNotEmpty(dto.getCreateUserIdCn()), XjrUser::getName, dto.getCreateUserIdCn())
+                )
+                .eq(StringUtils.isNotEmpty(dto.getChangeType()), BaseTeacherChangeRecord::getChangeType, dto.getChangeType())
+                .ge(ObjectUtils.isNotEmpty(dto.getStartCreateDate()), BaseTeacherChangeRecord::getCreateDate, dto.getStartCreateDate())
+                .le(ObjectUtils.isNotEmpty(dto.getEndCreateDate()), BaseTeacherChangeRecord::getCreateDate, dto.getEndCreateDate())
+                .orderByDesc(BaseTeacherChangeRecord::getCreateDate)
+        ;
+        IPage<BaseTeacherChangeRecordPageVo> page = baseTeacherChangeRecordService.selectJoinListPage(ConventPage.getPage(dto), BaseTeacherChangeRecordPageVo.class, queryWrapper);
+        PageOutput<BaseTeacherChangeRecordPageVo> pageOutput = ConventPage.getPageOutput(page, BaseTeacherChangeRecordPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询教职工异动记录信息")
+    @SaCheckPermission("baseteacherchangerecord:detail")
+    @XjrLog(value = "根据id查询教职工异动记录信息")
+    public RT<BaseTeacherChangeRecordVo> info(@RequestParam Long id){
+        BaseTeacherChangeRecord baseTeacherChangeRecord = baseTeacherChangeRecordService.getById(id);
+        if (baseTeacherChangeRecord == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(baseTeacherChangeRecord, BaseTeacherChangeRecordVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增教职工异动记录")
+    @SaCheckPermission("baseteacherchangerecord:add")
+    @XjrLog(value = "新增教职工异动记录")
+    public RT<Boolean> add(@Valid @RequestBody AddBaseTeacherChangeRecordDto dto){
+        BaseTeacherChangeRecord baseTeacherChangeRecord = BeanUtil.toBean(dto, BaseTeacherChangeRecord.class);
+        boolean isSuccess = baseTeacherChangeRecordService.save(baseTeacherChangeRecord);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改教职工异动记录")
+    @SaCheckPermission("baseteacherchangerecord:edit")
+    @XjrLog(value = "修改教职工异动记录")
+    public RT<Boolean> update(@Valid @RequestBody UpdateBaseTeacherChangeRecordDto dto){
+
+        BaseTeacherChangeRecord baseTeacherChangeRecord = BeanUtil.toBean(dto, BaseTeacherChangeRecord.class);
+        return RT.ok(baseTeacherChangeRecordService.updateById(baseTeacherChangeRecord));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除教职工异动记录")
+    @SaCheckPermission("baseteacherchangerecord:delete")
+    @XjrLog(value = "删除教职工异动记录")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(baseTeacherChangeRecordService.removeBatchByIds(ids));
+
+    }
+
+}

+ 10 - 4
src/main/java/com/xjrsoft/module/teacher/controller/TeacherbaseManagerController.java

@@ -39,12 +39,14 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.validation.Valid;
 import java.io.IOException;
 import java.text.ParseException;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -124,7 +126,7 @@ public class TeacherbaseManagerController {
                         .select(DictionaryDetail::getId)
                         .select(DictionaryDetail.class, x -> VoToColumnUtil.fieldsToColumns(DictionaryDetail.class).contains(x.getProperty()))
                         .leftJoin(DictionaryItem.class, DictionaryItem::getId, DictionaryDetail::getItemId)
-                        .eq(DictionaryItem::getCode, "job_state")
+                        .eq(DictionaryItem::getCode, "teaching_status")
         );
 
         Map<String, String> dictionaryDetailMap = new HashMap<>();
@@ -136,10 +138,14 @@ public class TeacherbaseManagerController {
             record.setGenderCn(GenderDictionaryEnum.getValue(record.getGender()));
             // 处理任课状况
             if(ObjectUtils.isNotEmpty(record.getTeachingStatus()) && ObjectUtils.isNotEmpty(dictionaryDetailMap)){
-                JSONArray jsonArray = record.getTeachingStatus();
+                JSONArray teachingStatus = record.getTeachingStatus();
+
                 StringBuilder sb = new StringBuilder();
-                for (int i = 0; i < jsonArray.size(); i++) {
-                    String code = jsonArray.getString(i);
+                for (int i = 0; i < teachingStatus.size(); i++) {
+                    String code = teachingStatus.getString(i);
+                    if(StringUtils.isEmpty(code)){
+                        continue;
+                    }
                     String name = dictionaryDetailMap.get(code);
                     sb.append(name).append(",");
                 }

+ 48 - 0
src/main/java/com/xjrsoft/module/teacher/dto/AddBaseTeacherChangeRecordDto.java

@@ -0,0 +1,48 @@
+package com.xjrsoft.module.teacher.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 教职工异动记录
+* @Author phoenix
+* @Date: 2025-03-24
+* @Version 1.0
+*/
+@Data
+public class AddBaseTeacherChangeRecordDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 变更教职工主键id
+    */
+    @ApiModelProperty("变更教职工主键id")
+    private Long userId;
+    /**
+    * 异动类型(xjr_dictionary_item[tea_change_type])
+    */
+    @ApiModelProperty("异动类型(xjr_dictionary_item[tea_change_type])")
+    private String changeType;
+    /**
+    * 新的在职状态
+    */
+    @ApiModelProperty("新的在职状态")
+    private String newJobState;
+    /**
+    * 旧的在职状态
+    */
+    @ApiModelProperty("旧的在职状态")
+    private String oldJobState;
+
+}

+ 43 - 0
src/main/java/com/xjrsoft/module/teacher/dto/BaseTeacherChangeRecordPageDto.java

@@ -0,0 +1,43 @@
+package com.xjrsoft.module.teacher.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;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+* @title: 教职工异动记录分页查询入参
+* @Author phoenix
+* @Date: 2025-03-24
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class BaseTeacherChangeRecordPageDto extends PageInput {
+
+    @ApiModelProperty("证件号码")
+    private String credentialNumber;
+
+    @ApiModelProperty("姓名")
+    private String name;
+
+    @ApiModelProperty("异动类型(xjr_dictionary_item[tea_change_type])")
+    private String changeType;
+
+    @ApiModelProperty("异动时间")
+    private LocalDate startCreateDate;
+
+    @ApiModelProperty("异动时间")
+    private LocalDate endCreateDate;
+
+    @ApiModelProperty("操作人")
+    private String createUserIdCn;
+}

+ 32 - 0
src/main/java/com/xjrsoft/module/teacher/dto/UpdateBaseTeacherChangeRecordDto.java

@@ -0,0 +1,32 @@
+package com.xjrsoft.module.teacher.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 教职工异动记录
+* @Author phoenix
+* @Date: 2025-03-24
+* @Version 1.0
+*/
+@Data
+public class UpdateBaseTeacherChangeRecordDto extends AddBaseTeacherChangeRecordDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+}

+ 98 - 0
src/main/java/com/xjrsoft/module/teacher/entity/BaseTeacherChangeRecord.java

@@ -0,0 +1,98 @@
+package com.xjrsoft.module.teacher.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 教职工异动记录
+* @Author phoenix
+* @Date: 2025-03-24
+* @Version 1.0
+*/
+@Data
+@TableName("base_teacher_change_record")
+@ApiModel(value = "base_teacher_change_record", description = "教职工异动记录")
+public class BaseTeacherChangeRecord 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 Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ApiModelProperty("有效标志")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 变更教职工主键id
+    */
+    @ApiModelProperty("变更教职工主键id")
+    private Long userId;
+    /**
+    * 异动类型(xjr_dictionary_item[tea_change_type])
+    */
+    @ApiModelProperty("异动类型(xjr_dictionary_item[tea_change_type])")
+    private String changeType;
+    /**
+    * 新的在职状态
+    */
+    @ApiModelProperty("新的在职状态")
+    private String newJobState;
+    /**
+    * 旧的在职状态
+    */
+    @ApiModelProperty("旧的在职状态")
+    private String oldJobState;
+
+
+}

+ 178 - 0
src/main/java/com/xjrsoft/module/teacher/entity/WfTeacherDepart.java

@@ -0,0 +1,178 @@
+package com.xjrsoft.module.teacher.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 教职工离职
+* @Author phoenix
+* @Date: 2025-03-24
+* @Version 1.0
+*/
+@Data
+@TableName("wf_teacher_depart")
+@ApiModel(value = "wf_teacher_depart", description = "教职工离职")
+public class WfTeacherDepart 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 Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ApiModelProperty("有效标志")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 申请人
+    */
+    @ApiModelProperty("申请人")
+    private Long applicantUserId;
+    /**
+    * 性别 男, 女
+    */
+    @ApiModelProperty("性别 男, 女")
+    private String sex;
+    /**
+    * 部门名称
+    */
+    @ApiModelProperty("部门名称")
+    private String deptName;
+    /**
+    * 编制性质(编内、编外)
+    */
+    @ApiModelProperty("编制性质(编内、编外)")
+    private String natureOrganization;
+    /**
+    * 是否工会会员(xjr_dictionary_item[judgment_method_1])
+    */
+    @ApiModelProperty("是否工会会员(xjr_dictionary_item[judgment_method_1])")
+    private String isUnionMember;
+    /**
+    * 工作岗位(xjr_dictionary_item[depart_post])
+    */
+    @ApiModelProperty("工作岗位(xjr_dictionary_item[depart_post])")
+    private String job;
+    /**
+    * 是否班主任(xjr_dictionary_item[judgment_method_1])
+    */
+    @ApiModelProperty("是否班主任(xjr_dictionary_item[judgment_method_1])")
+    private String isHeadTeacher;
+    /**
+    * 专业部-办公室钥匙移交(已交接、未交接、未借用)
+    */
+    @ApiModelProperty("专业部-办公室钥匙移交(已交接、未交接、未借用)")
+    private String hPdOfficeKey;
+    /**
+    * 专业部-教具、设施等移交(已交接、未交接、未借用)
+    */
+    @ApiModelProperty("专业部-教具、设施等移交(已交接、未交接、未借用)")
+    private String hPdFacilities;
+    /**
+    * 专业部-其它
+    */
+    @ApiModelProperty("专业部-其它")
+    private String hPdOther;
+    /**
+    * 教务处-借阅图书归还(已交接、未交接、未借用)
+    */
+    @ApiModelProperty("教务处-借阅图书归还(已交接、未交接、未借用)")
+    private String hDoBooks;
+    /**
+    * 教务处-借用教室钥匙(已交接、未交接、未借用)
+    */
+    @ApiModelProperty("教务处-借用教室钥匙(已交接、未交接、未借用)")
+    private String hDoClassroomKey;
+    /**
+    * 教务处-其它
+    */
+    @ApiModelProperty("教务处-其它")
+    private String hDoOther;
+    /**
+    * 德育处-借用军训服装(已交接、未交接、未借用)
+    */
+    @ApiModelProperty("德育处-借用军训服装(已交接、未交接、未借用)")
+    private String hMeMilitaryUniform;
+    /**
+    * 德育处-其它
+    */
+    @ApiModelProperty("德育处-其它")
+    private String hMeOther;
+    /**
+    * 财务后勤处-办公电脑(已交接、未交接、未借用)
+    */
+    @ApiModelProperty("财务后勤处-办公电脑(已交接、未交接、未借用)")
+    private String hFlComputer;
+    /**
+    * 安保处-其它
+    */
+    @ApiModelProperty("安保处-其它")
+    private String hSdOther;
+    /**
+    * 附件文件id
+    */
+    @ApiModelProperty("附件文件id")
+    private Long fileId;
+    /**
+    * 状态(1:结束 0:未结束)
+    */
+    @ApiModelProperty("状态(1:结束 0:未结束)")
+    private Integer status;
+
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/teacher/mapper/BaseTeacherChangeRecordMapper.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.teacher.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.teacher.entity.BaseTeacherChangeRecord;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 教职工异动记录
+* @Author phoenix
+* @Date: 2025-03-24
+* @Version 1.0
+*/
+@Mapper
+public interface BaseTeacherChangeRecordMapper extends MPJBaseMapper<BaseTeacherChangeRecord> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/teacher/mapper/WfTeacherDepartMapper.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.teacher.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.teacher.entity.WfTeacherDepart;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 教职工离职
+* @Author phoenix
+* @Date: 2025-03-24
+* @Version 1.0
+*/
+@Mapper
+public interface WfTeacherDepartMapper extends MPJBaseMapper<WfTeacherDepart> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/teacher/service/IBaseTeacherChangeRecordService.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.teacher.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.teacher.entity.BaseTeacherChangeRecord;
+import lombok.Data;
+import java.util.List;
+
+/**
+* @title: 教职工异动记录
+* @Author phoenix
+* @Date: 2025-03-24
+* @Version 1.0
+*/
+
+public interface IBaseTeacherChangeRecordService extends MPJBaseService<BaseTeacherChangeRecord> {
+}

+ 2 - 0
src/main/java/com/xjrsoft/module/teacher/service/ITeacherbaseManagerService.java

@@ -43,4 +43,6 @@ public interface ITeacherbaseManagerService extends MPJBaseService<XjrUser> {
     Boolean importData(List<Map<Integer, Object>> excelDataList);
 
     void changeIsNormal(String jobState, Integer isNormal);
+
+    void teacherDepartDataHandle(Long formId);
 }

+ 25 - 0
src/main/java/com/xjrsoft/module/teacher/service/impl/BaseTeacherChangeRecordServiceImpl.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.teacher.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.teacher.entity.BaseTeacherChangeRecord;
+import com.xjrsoft.module.teacher.mapper.BaseTeacherChangeRecordMapper;
+import com.xjrsoft.module.teacher.service.IBaseTeacherChangeRecordService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
+/**
+* @title: 教职工异动记录
+* @Author phoenix
+* @Date: 2025-03-24
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class BaseTeacherChangeRecordServiceImpl extends MPJBaseServiceImpl<BaseTeacherChangeRecordMapper, BaseTeacherChangeRecord> implements IBaseTeacherChangeRecordService {
+}

+ 153 - 0
src/main/java/com/xjrsoft/module/teacher/service/impl/TeacherbaseManagerServiceImpl.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.teacher.service.impl;
 
 import cn.dev33.satoken.secure.BCrypt;
+import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.convert.Convert;
@@ -14,21 +15,33 @@ import com.xjrsoft.common.constant.GlobalConstant;
 import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.enums.GenderDictionaryEnum;
 import com.xjrsoft.common.enums.RoleEnum;
+import com.xjrsoft.common.enums.TeaChangeTypeEnum;
+import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.common.utils.RedisUtil;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.config.CommonPropertiesConfig;
+import com.xjrsoft.module.liteflow.node.WfTeacherDepartNode;
 import com.xjrsoft.module.organization.entity.*;
 import com.xjrsoft.module.organization.mapper.UserDeptRelationMapper;
 import com.xjrsoft.module.organization.mapper.UserRoleRelationMapper;
 import com.xjrsoft.module.organization.service.*;
 import com.xjrsoft.module.system.entity.DictionaryDetail;
+import com.xjrsoft.module.system.entity.DictionaryItem;
 import com.xjrsoft.module.system.service.IDictionarydetailService;
 import com.xjrsoft.module.teacher.dto.AddXjrUserDto;
 import com.xjrsoft.module.teacher.dto.UpdateXjrUserDto;
 import com.xjrsoft.module.teacher.entity.*;
 import com.xjrsoft.module.teacher.mapper.*;
+import com.xjrsoft.module.teacher.service.IBaseTeacherChangeRecordService;
 import com.xjrsoft.module.teacher.service.ITeacherbaseManagerService;
+import com.xjrsoft.module.textbook.entity.WfTextbookRecede;
+import com.xjrsoft.module.workflow.entity.WorkflowFormRelation;
+import com.xjrsoft.module.workflow.mapper.WorkflowFormRelationMapper;
 import lombok.AllArgsConstructor;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.camunda.bpm.engine.history.HistoricProcessInstance;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -67,6 +80,12 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
     private final IPostService postService;
     private IDictionarydetailService dictionarydetailService;
 
+    private WfTeacherDepartMapper wfTeacherDepartMapper;
+
+    private BaseTeacherChangeRecordMapper baseTeacherChangeRecordMapper;
+
+    private WorkflowFormRelationMapper workflowFormRelationMapper;
+
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -181,6 +200,64 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean update(UpdateXjrUserDto dto) {
+        XjrUser old = this.getByIdDeep(dto.getId());
+        if(ObjectUtils.isEmpty(old)){
+            throw new MyException("教职工信息不存在");
+        }
+
+        // 处理在职状态
+        // 获取字典值
+        List<DictionaryDetail> detailList = dictionarydetailService.list(
+                new MPJLambdaWrapper<DictionaryDetail>()
+                        .select(DictionaryDetail::getId)
+                        .select(DictionaryDetail.class, x -> VoToColumnUtil.fieldsToColumns(DictionaryDetail.class).contains(x.getProperty()))
+                        .leftJoin(DictionaryItem.class, DictionaryItem::getId, DictionaryDetail::getItemId)
+                        .eq(DictionaryItem::getCode, "job_state")
+        );
+
+        Map<String, String> dictionaryDetailMap = detailList.stream()
+                .collect(Collectors.toMap(DictionaryDetail::getCode, DictionaryDetail::getName));
+
+        // 定义常量
+        final String NO_JOB_STATE = "无在职状态";
+
+        // 获取新旧在职状态
+        String oldJobState = null;
+        String newJobState = null;
+
+        if (CollectionUtils.isNotEmpty(old.getBaseTeacherList()) && StringUtils.isNotEmpty(old.getBaseTeacherList().get(0).getJobState())) {
+            oldJobState = old.getBaseTeacherList().get(0).getJobState();
+        }
+
+        if (CollectionUtils.isNotEmpty(dto.getBaseTeacherList()) && StringUtils.isNotEmpty(dto.getBaseTeacherList().get(0).getJobState())) {
+            newJobState = dto.getBaseTeacherList().get(0).getJobState();
+        }
+
+        // 只有在职状态被修改时,才触发 insert
+        if (!Objects.equals(oldJobState, newJobState)) {
+            BaseTeacherChangeRecord insetBaseTeacherChangeRecord = new BaseTeacherChangeRecord();
+            insetBaseTeacherChangeRecord.setCreateUserId(StpUtil.getLoginIdAsLong());
+            insetBaseTeacherChangeRecord.setCreateDate(new Date());
+            insetBaseTeacherChangeRecord.setUserId(dto.getId());
+            insetBaseTeacherChangeRecord.setChangeType(TeaChangeTypeEnum.TCT0001.getCode());
+
+            // 设置旧状态
+            if (StringUtils.isNotEmpty(oldJobState)) {
+                insetBaseTeacherChangeRecord.setOldJobState(dictionaryDetailMap.getOrDefault(oldJobState, oldJobState));
+            } else {
+                insetBaseTeacherChangeRecord.setOldJobState(NO_JOB_STATE);
+            }
+
+            // 设置新状态
+            if (StringUtils.isNotEmpty(newJobState)) {
+                insetBaseTeacherChangeRecord.setNewJobState(dictionaryDetailMap.getOrDefault(newJobState, newJobState));
+            } else {
+                insetBaseTeacherChangeRecord.setNewJobState(NO_JOB_STATE);
+            }
+
+            // 插入变更记录
+            baseTeacherChangeRecordMapper.insert(insetBaseTeacherChangeRecord);
+        }
 
         XjrUser xjrUser = BeanUtil.toBean(dto, XjrUser.class);
 
@@ -645,4 +722,80 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
         }
 
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void teacherDepartDataHandle(Long formId) {
+        WfTeacherDepart wfTextbookRecede = wfTeacherDepartMapper.selectById(formId);
+
+        Date nowDate = new Date();
+
+        // 根据数据id找到所在流程得状态
+        WorkflowFormRelation workflowFormRelation = workflowFormRelationMapper.selectOne(
+                Wrappers.lambdaQuery(WorkflowFormRelation.class)
+                        .eq(WorkflowFormRelation::getFormKeyValue, formId)
+        );
+
+        if (ObjectUtils.isNotEmpty(wfTextbookRecede)
+                && ObjectUtils.isNotEmpty(workflowFormRelation)
+                && HistoricProcessInstance.STATE_COMPLETED.equals(workflowFormRelation.getCurrentState())
+        ) {
+            XjrUser old = this.getByIdDeep(wfTextbookRecede.getApplicantUserId());
+            if(ObjectUtils.isEmpty(old)){
+                throw new MyException("教职工信息不存在");
+            }
+
+            // 处理在职状态
+            // 获取字典值
+            List<DictionaryDetail> detailList = dictionarydetailService.list(
+                    new MPJLambdaWrapper<DictionaryDetail>()
+                            .select(DictionaryDetail::getId)
+                            .select(DictionaryDetail.class, x -> VoToColumnUtil.fieldsToColumns(DictionaryDetail.class).contains(x.getProperty()))
+                            .leftJoin(DictionaryItem.class, DictionaryItem::getId, DictionaryDetail::getItemId)
+                            .eq(DictionaryItem::getCode, "job_state")
+            );
+
+            Map<String, String> dictionaryDetailMap = detailList.stream()
+                    .collect(Collectors.toMap(DictionaryDetail::getCode, DictionaryDetail::getName));
+
+            // 定义常量
+            final String NO_JOB_STATE = "无在职状态";
+
+            // 获取新旧在职状态
+            String oldJobState = null;
+            String newJobState = null;
+
+            if (CollectionUtils.isNotEmpty(old.getBaseTeacherList()) && StringUtils.isNotEmpty(old.getBaseTeacherList().get(0).getJobState())) {
+                oldJobState = old.getBaseTeacherList().get(0).getJobState();
+            }
+
+            newJobState = "JOB_LZ";
+
+            // 只有在职状态被修改时,才触发 insert
+            if (!Objects.equals(oldJobState, newJobState)) {
+                BaseTeacherChangeRecord insetBaseTeacherChangeRecord = new BaseTeacherChangeRecord();
+                insetBaseTeacherChangeRecord.setCreateUserId(StpUtil.getLoginIdAsLong());
+                insetBaseTeacherChangeRecord.setCreateDate(new Date());
+                insetBaseTeacherChangeRecord.setUserId(wfTextbookRecede.getApplicantUserId());
+                insetBaseTeacherChangeRecord.setChangeType(TeaChangeTypeEnum.TCT0001.getCode());
+
+                // 设置旧状态
+                if (StringUtils.isNotEmpty(oldJobState)) {
+                    insetBaseTeacherChangeRecord.setOldJobState(dictionaryDetailMap.getOrDefault(oldJobState, oldJobState));
+                } else {
+                    insetBaseTeacherChangeRecord.setOldJobState(NO_JOB_STATE);
+                }
+
+                // 设置新状态
+                if (StringUtils.isNotEmpty(newJobState)) {
+                    insetBaseTeacherChangeRecord.setNewJobState(dictionaryDetailMap.getOrDefault(newJobState, newJobState));
+                } else {
+                    insetBaseTeacherChangeRecord.setNewJobState(NO_JOB_STATE);
+                }
+
+                // 插入变更记录
+                baseTeacherChangeRecordMapper.insert(insetBaseTeacherChangeRecord);
+            }
+        }
+    }
 }

+ 73 - 0
src/main/java/com/xjrsoft/module/teacher/vo/BaseTeacherChangeRecordPageVo.java

@@ -0,0 +1,73 @@
+package com.xjrsoft.module.teacher.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import com.xjrsoft.common.annotation.Trans;
+import com.xjrsoft.common.enums.TransType;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+* @title: 教职工异动记录分页列表出参
+* @Author phoenix
+* @Date: 2025-03-24
+* @Version 1.0
+*/
+@Data
+public class BaseTeacherChangeRecordPageVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private String id;
+
+    /**
+    * 变更教职工主键id
+    */
+    @ApiModelProperty("变更教职工主键id")
+    private Long userId;
+
+    @ApiModelProperty("姓名")
+    private String name;
+
+    @ApiModelProperty("性别")
+    private String genderCn;
+
+    @ApiModelProperty("证件号码")
+    private String credentialNumber;
+
+    @ApiModelProperty("异动时间")
+    private Date createDate;
+
+    @ApiModelProperty("操作人")
+    private Long createUserId;
+
+    @ApiModelProperty("操作人")
+    private String createUserIdCn;
+
+    /**
+    * 异动类型(xjr_dictionary_item[tea_change_type])
+    */
+    @ApiModelProperty("异动类型(xjr_dictionary_item[tea_change_type])")
+    private String changeType;
+    /**
+     * 异动类型(xjr_dictionary_item[tea_change_type])
+     */
+    @ApiModelProperty("异动类型(xjr_dictionary_item[tea_change_type])")
+    private String changeTypeCn;
+    /**
+    * 新的在职状态
+    */
+    @ApiModelProperty("新的在职状态")
+    private String newJobState;
+    /**
+    * 旧的在职状态
+    */
+    @ApiModelProperty("旧的在职状态")
+    private String oldJobState;
+}

+ 49 - 0
src/main/java/com/xjrsoft/module/teacher/vo/BaseTeacherChangeRecordVo.java

@@ -0,0 +1,49 @@
+package com.xjrsoft.module.teacher.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+/**
+* @title: 教职工异动记录表单出参
+* @Author phoenix
+* @Date: 2025-03-24
+* @Version 1.0
+*/
+@Data
+public class BaseTeacherChangeRecordVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 变更教职工主键id
+    */
+    @ApiModelProperty("变更教职工主键id")
+    private Long userId;
+    /**
+    * 异动类型(xjr_dictionary_item[tea_change_type])
+    */
+    @ApiModelProperty("异动类型(xjr_dictionary_item[tea_change_type])")
+    private String changeType;
+    /**
+    * 新的在职状态
+    */
+    @ApiModelProperty("新的在职状态")
+    private String newJobState;
+    /**
+    * 旧的在职状态
+    */
+    @ApiModelProperty("旧的在职状态")
+    private String oldJobState;
+
+
+
+}

+ 0 - 1
src/main/java/com/xjrsoft/module/teacher/vo/XjrUserPageVo.java

@@ -3,7 +3,6 @@ package com.xjrsoft.module.teacher.vo;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
-import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 

+ 21 - 0
src/main/resources/sqlScript/20250324_sql.sql

@@ -0,0 +1,21 @@
+-- ----------------------------
+-- 教职工异动记录
+-- ----------------------------
+DROP TABLE IF EXISTS `base_teacher_change_record`;
+CREATE TABLE `base_teacher_change_record`
+(
+    id             bigint      not null comment '主键编号'
+        primary key,
+    create_user_id BIGINT NULL COMMENT '创建人',
+    create_date    DATETIME NULL COMMENT '创建时间',
+    modify_user_id BIGINT NULL COMMENT '修改人',
+    modify_date    DATETIME NULL COMMENT '修改时间',
+    delete_mark    INT         NOT NULL COMMENT '删除标记',
+    enabled_mark   INT         NOT NULL COMMENT '有效标志',
+
+    user_id        bigint      NOT NULL COMMENT '变更教职工主键id',
+    change_type    varchar(64) NOT NULL COMMENT '异动类型(xjr_dictionary_item[tea_change_type])',
+    new_job_state  varchar(256) NOT NULL COMMENT '新的在职状态',
+    old_job_state  varchar(256) NOT NULL COMMENT '旧的在职状态'
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8mb4 COMMENT = '教职工异动记录';

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

@@ -4444,4 +4444,54 @@ public class FreeMarkerGeneratorTest {
 
         apiGeneratorService.generateCodes(params);
     }
+
+    @Test
+    public void gcBaseTeacherChangeRecord() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("base_teacher_change_record");//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("phoenix");//作者名称
+        params.setPackageName("teacher");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(false);//是否生成导入接口
+        params.setExport(false);//是否生成导出接口
+        params.setOutMainDir(false);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
+
+    @Test
+    public void gcWfTeacherDepart() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("wf_teacher_depart");//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("phoenix");//作者名称
+        params.setPackageName("teacher");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(false);//是否生成导入接口
+        params.setExport(false);//是否生成导出接口
+        params.setOutMainDir(false);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
 }