فهرست منبع

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

dzx 7 ماه پیش
والد
کامیت
84961b499c
35فایلهای تغییر یافته به همراه2719 افزوده شده و 63 حذف شده
  1. 2 2
      src/main/java/com/xjrsoft/module/student/controller/StudentManagerController.java
  2. 1 1
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentDevelopmentVo.java
  3. 185 4
      src/main/java/com/xjrsoft/module/teacher/controller/TeacherbaseManagerController.java
  4. 134 0
      src/main/java/com/xjrsoft/module/teacher/entity/CoreTeacher.java
  5. 134 0
      src/main/java/com/xjrsoft/module/teacher/entity/EvaluatorInformation.java
  6. 114 0
      src/main/java/com/xjrsoft/module/teacher/entity/FacultyContract.java
  7. 139 0
      src/main/java/com/xjrsoft/module/teacher/entity/JobInformation.java
  8. 129 0
      src/main/java/com/xjrsoft/module/teacher/entity/LanguageCompetence.java
  9. 124 0
      src/main/java/com/xjrsoft/module/teacher/entity/OutsideAssociations.java
  10. 154 0
      src/main/java/com/xjrsoft/module/teacher/entity/ProfessionalTitle.java
  11. 134 0
      src/main/java/com/xjrsoft/module/teacher/entity/ScientificResearch.java
  12. 129 0
      src/main/java/com/xjrsoft/module/teacher/entity/TeacherCertification.java
  13. 17 0
      src/main/java/com/xjrsoft/module/teacher/mapper/CoreTeacherMapper.java
  14. 17 0
      src/main/java/com/xjrsoft/module/teacher/mapper/EvaluatorInformationMapper.java
  15. 17 0
      src/main/java/com/xjrsoft/module/teacher/mapper/FacultyContractMapper.java
  16. 17 0
      src/main/java/com/xjrsoft/module/teacher/mapper/JobInformationMapper.java
  17. 17 0
      src/main/java/com/xjrsoft/module/teacher/mapper/LanguageCompetenceMapper.java
  18. 17 0
      src/main/java/com/xjrsoft/module/teacher/mapper/OutsideAssociationsMapper.java
  19. 17 0
      src/main/java/com/xjrsoft/module/teacher/mapper/ProfessionalTitleMapper.java
  20. 17 0
      src/main/java/com/xjrsoft/module/teacher/mapper/ScientificResearchMapper.java
  21. 17 0
      src/main/java/com/xjrsoft/module/teacher/mapper/TeacherCertificationMapper.java
  22. 19 0
      src/main/java/com/xjrsoft/module/teacher/service/ITeacherbaseManagerService.java
  23. 166 54
      src/main/java/com/xjrsoft/module/teacher/service/impl/TeacherbaseManagerServiceImpl.java
  24. 89 0
      src/main/java/com/xjrsoft/module/teacher/vo/CoreTeacherImportVo.java
  25. 89 0
      src/main/java/com/xjrsoft/module/teacher/vo/EvaluatorInformationImportVo.java
  26. 61 0
      src/main/java/com/xjrsoft/module/teacher/vo/FacultyContractImportVo.java
  27. 94 0
      src/main/java/com/xjrsoft/module/teacher/vo/JobInformationImportVo.java
  28. 80 0
      src/main/java/com/xjrsoft/module/teacher/vo/LanguageCompetenceImportVo.java
  29. 73 0
      src/main/java/com/xjrsoft/module/teacher/vo/OutsideAssociationsImportVo.java
  30. 115 0
      src/main/java/com/xjrsoft/module/teacher/vo/ProfessionalTitleImportVo.java
  31. 87 0
      src/main/java/com/xjrsoft/module/teacher/vo/ScientificResearchImportVo.java
  32. 82 0
      src/main/java/com/xjrsoft/module/teacher/vo/TeacherCertificationImportVo.java
  33. 7 1
      src/main/java/com/xjrsoft/module/veb/util/ImportExcelUtil.java
  34. 0 1
      src/main/resources/mapper/oa/OfficialDocumentReceivedMapper.xml
  35. 225 0
      src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

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

@@ -27,6 +27,7 @@ import com.xjrsoft.module.base.entity.BaseGrade;
 import com.xjrsoft.module.base.service.IBaseClassService;
 import com.xjrsoft.module.base.service.IBaseGradeService;
 import com.xjrsoft.module.concat.service.IXjrUserService;
+import com.xjrsoft.module.feedback.entity.FeedbackItem;
 import com.xjrsoft.module.hikvision.util.DataUtil;
 import com.xjrsoft.module.organization.entity.UserDeptRelation;
 import com.xjrsoft.module.organization.service.IUserDeptRelationService;
@@ -158,7 +159,7 @@ public class StudentManagerController {
         });
 
         List<BaseStudentTreeVo> treeVoList = TreeUtil.build(voList);
-
+        treeVoList.sort(Comparator.comparing(BaseStudentTreeVo::getName).reversed());
         return RT.ok(treeVoList);
     }
 
@@ -204,7 +205,6 @@ public class StudentManagerController {
         return RT.ok(studentManagerService.deptMajorGradeClassTree(dto));
     }
 
-
     @PostMapping
     @ApiOperation(value = "新增学生")
     @SaCheckPermission("studentmanager:add")

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

@@ -48,7 +48,7 @@ public class BaseStudentDevelopmentVo {
      * 是否灵活就业(1:是 0:否)
      */
     @ApiModelProperty("工作内容")
-    private Integer workContent;
+    private String workContent;
     /**
      * 是否校企合作单位(1:是 0:否)
      */

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

@@ -5,6 +5,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.support.ExcelTypeEnum;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
@@ -13,6 +14,7 @@ import com.github.yulichang.toolkit.MPJWrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.annotation.XjrLog;
 import com.xjrsoft.common.enums.GenderDictionaryEnum;
+import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.common.model.result.R;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
@@ -33,20 +35,21 @@ import com.xjrsoft.module.teacher.entity.BaseTeacher;
 import com.xjrsoft.module.teacher.entity.BaseTeacherRegular;
 import com.xjrsoft.module.teacher.entity.XjrUser;
 import com.xjrsoft.module.teacher.service.ITeacherbaseManagerService;
-import com.xjrsoft.module.teacher.vo.XjrUserPageVo;
-import com.xjrsoft.module.teacher.vo.XjrUserVo;
+import com.xjrsoft.module.teacher.vo.*;
+import com.xjrsoft.module.veb.util.ImportExcelUtil;
 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.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.validation.Valid;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.text.ParseException;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -186,7 +189,6 @@ public class TeacherbaseManagerController {
         return R.ok(userVo);
     }
 
-
     @PostMapping
     @ApiOperation(value = "新增XjrUser")
     @SaCheckPermission("teacherbasemanager:add")
@@ -224,4 +226,183 @@ public class TeacherbaseManagerController {
         return RT.ok(teacherbaseManagerService.importData(excelDataList));
     }
 
+    @PostMapping("/professional-title-import")
+    @ApiOperation(value = "教职工职称信息导入")
+    @XjrLog(value = "教职工职称信息导入", saveRequestData = false, saveResponseData = true)
+    public RT<Boolean> professionalTitle(@RequestParam MultipartFile file) throws IOException, IllegalAccessException {
+        String result = teacherbaseManagerService.professionalTitle(file);
+        if (!result.isEmpty()) {
+            throw new MyException(result);
+        }
+        return RT.ok("全部成功", true);
+    }
+
+    @PostMapping("/professional-title-template")
+    @ApiOperation(value = "教职工职称信息模板下载")
+    @XjrLog(value = "教职工职称信息模板下载")
+    public ResponseEntity<byte[]> professionalTitleTemplate() throws IOException {
+        ProfessionalTitleImportVo obj = new ProfessionalTitleImportVo();
+        ByteArrayOutputStream bot = ImportExcelUtil.writeTemplateSheet(obj);
+        return R.fileStream(bot.toByteArray(), System.currentTimeMillis() + ExcelTypeEnum.XLSX.getValue());
+    }
+
+    @PostMapping("/teacher-certification-import")
+    @ApiOperation(value = "教师资格证信息息导入")
+    @XjrLog(value = "教师资格证信息导入", saveRequestData = false, saveResponseData = true)
+    public RT<Boolean> teacherCertification(@RequestParam MultipartFile file) throws IOException, IllegalAccessException {
+        String result = teacherbaseManagerService.teacherCertification(file);
+        if (!result.isEmpty()) {
+            throw new MyException(result);
+        }
+        return RT.ok("全部成功", true);
+    }
+
+    @PostMapping("/teacher-certification-template")
+    @ApiOperation(value = "教师资格证信息模板下载")
+    @XjrLog(value = "教师资格证信息模板下载")
+    public ResponseEntity<byte[]> teacherCertificationTemplate() throws IOException {
+        TeacherCertificationImportVo obj = new TeacherCertificationImportVo();
+        ByteArrayOutputStream bot = ImportExcelUtil.writeTemplateSheet(obj);
+        return R.fileStream(bot.toByteArray(), System.currentTimeMillis() + ExcelTypeEnum.XLSX.getValue());
+    }
+
+    @PostMapping("/evaluator-information-import")
+    @ApiOperation(value = "考评员信息导入")
+    @XjrLog(value = "考评员信息导入", saveRequestData = false, saveResponseData = true)
+    public RT<Boolean> evaluatorInformation(@RequestParam MultipartFile file) throws IOException, IllegalAccessException {
+        String result = teacherbaseManagerService.evaluatorInformation(file);
+        if (!result.isEmpty()) {
+            throw new MyException(result);
+        }
+        return RT.ok("全部成功", true);
+    }
+
+    @PostMapping("/evaluator-information-template")
+    @ApiOperation(value = "考评员信息模板下载")
+    @XjrLog(value = "考评员信息模板下载")
+    public ResponseEntity<byte[]> evaluatorInformationTemplate() throws IOException {
+        EvaluatorInformationImportVo obj = new EvaluatorInformationImportVo();
+        ByteArrayOutputStream bot = ImportExcelUtil.writeTemplateSheet(obj);
+        return R.fileStream(bot.toByteArray(), System.currentTimeMillis() + ExcelTypeEnum.XLSX.getValue());
+    }
+
+    @PostMapping("/language-competence-import")
+    @ApiOperation(value = "语言能力信息导入")
+    @XjrLog(value = "语言能力信息导入", saveRequestData = false, saveResponseData = true)
+    public RT<Boolean> languageCompetence(@RequestParam MultipartFile file) throws IOException, IllegalAccessException {
+        String result = teacherbaseManagerService.languageCompetence(file);
+        if (!result.isEmpty()) {
+            throw new MyException(result);
+        }
+        return RT.ok("全部成功", true);
+    }
+
+    @PostMapping("/language-competence-template")
+    @ApiOperation(value = "语言能力信息模板下载")
+    @XjrLog(value = "语言能力信息模板下载")
+    public ResponseEntity<byte[]> languageCompetenceTemplate() throws IOException {
+        LanguageCompetenceImportVo obj = new LanguageCompetenceImportVo();
+        ByteArrayOutputStream bot = ImportExcelUtil.writeTemplateSheet(obj);
+        return R.fileStream(bot.toByteArray(), System.currentTimeMillis() + ExcelTypeEnum.XLSX.getValue());
+    }
+
+    @PostMapping("/faculty-contract-import")
+    @ApiOperation(value = "教职工合同记录导入")
+    @XjrLog(value = "教职工合同记录导入", saveRequestData = false, saveResponseData = true)
+    public RT<Boolean> facultyContract(@RequestParam MultipartFile file) throws IOException, IllegalAccessException {
+        String result = teacherbaseManagerService.facultyContract(file);
+        if (!result.isEmpty()) {
+            throw new MyException(result);
+        }
+        return RT.ok("全部成功", true);
+    }
+
+    @PostMapping("/faculty-contract-template")
+    @ApiOperation(value = "教职工合同记录模板下载")
+    @XjrLog(value = "教职工合同记录模板下载")
+    public ResponseEntity<byte[]> facultyContractTemplate() throws IOException {
+        FacultyContractImportVo obj = new FacultyContractImportVo();
+        ByteArrayOutputStream bot = ImportExcelUtil.writeTemplateSheet(obj);
+        return R.fileStream(bot.toByteArray(), System.currentTimeMillis() + ExcelTypeEnum.XLSX.getValue());
+    }
+
+    @PostMapping("/outside-associations-import")
+    @ApiOperation(value = "校外其他协会记录导入")
+    @XjrLog(value = "校外其他协会记录导入", saveRequestData = false, saveResponseData = true)
+    public RT<Boolean> outsideAssociations(@RequestParam MultipartFile file) throws IOException, IllegalAccessException {
+        String result = teacherbaseManagerService.outsideAssociations(file);
+        if (!result.isEmpty()) {
+            throw new MyException(result);
+        }
+        return RT.ok("全部成功", true);
+    }
+
+    @PostMapping("/outside-associations-template")
+    @ApiOperation(value = "校外其他协会记录模板下载")
+    @XjrLog(value = "校外其他协会记录模板下载")
+    public ResponseEntity<byte[]> outsideAssociationsTemplate() throws IOException {
+        OutsideAssociationsImportVo obj = new OutsideAssociationsImportVo();
+        ByteArrayOutputStream bot = ImportExcelUtil.writeTemplateSheet(obj);
+        return R.fileStream(bot.toByteArray(), System.currentTimeMillis() + ExcelTypeEnum.XLSX.getValue());
+    }
+
+    @PostMapping("/core-teacher-import")
+    @ApiOperation(value = "骨干教师记录导入")
+    @XjrLog(value = "骨干教师记录导入", saveRequestData = false, saveResponseData = true)
+    public RT<Boolean> coreTeacher(@RequestParam MultipartFile file) throws IOException, IllegalAccessException {
+        String result = teacherbaseManagerService.coreTeacher(file);
+        if (!result.isEmpty()) {
+            throw new MyException(result);
+        }
+        return RT.ok("全部成功", true);
+    }
+
+    @PostMapping("/core-teacher-template")
+    @ApiOperation(value = "骨干教师记录模板下载")
+    @XjrLog(value = "骨干教师记录模板下载")
+    public ResponseEntity<byte[]> coreTeacherTemplate() throws IOException {
+        CoreTeacherImportVo obj = new CoreTeacherImportVo();
+        ByteArrayOutputStream bot = ImportExcelUtil.writeTemplateSheet(obj);
+        return R.fileStream(bot.toByteArray(), System.currentTimeMillis() + ExcelTypeEnum.XLSX.getValue());
+    }
+
+    @PostMapping("/scientific-research-import")
+    @ApiOperation(value = "科研信息记录导入")
+    @XjrLog(value = "科研信息记录导入", saveRequestData = false, saveResponseData = true)
+    public RT<Boolean> scientificResearch(@RequestParam MultipartFile file) throws IOException, IllegalAccessException {
+        String result = teacherbaseManagerService.scientificResearch(file);
+        if (!result.isEmpty()) {
+            throw new MyException(result);
+        }
+        return RT.ok("全部成功", true);
+    }
+
+    @PostMapping("/scientific-research-template")
+    @ApiOperation(value = "科研信息记录模板下载")
+    @XjrLog(value = "科研信息记录模板下载")
+    public ResponseEntity<byte[]> scientificResearchTemplate() throws IOException {
+        ScientificResearchImportVo obj = new ScientificResearchImportVo();
+        ByteArrayOutputStream bot = ImportExcelUtil.writeTemplateSheet(obj);
+        return R.fileStream(bot.toByteArray(), System.currentTimeMillis() + ExcelTypeEnum.XLSX.getValue());
+    }
+
+    @PostMapping("/job-information-import")
+    @ApiOperation(value = "科研信息记录导入")
+    @XjrLog(value = "科研信息记录导入", saveRequestData = false, saveResponseData = true)
+    public RT<Boolean> jobInformation(@RequestParam MultipartFile file) throws IOException, IllegalAccessException {
+        String result = teacherbaseManagerService.jobInformation(file);
+        if (!result.isEmpty()) {
+            throw new MyException(result);
+        }
+        return RT.ok("全部成功", true);
+    }
+
+    @PostMapping("/job-information-template")
+    @ApiOperation(value = "科研信息记录模板下载")
+    @XjrLog(value = "科研信息记录模板下载")
+    public ResponseEntity<byte[]> jobInformationTemplate() throws IOException {
+        JobInformationImportVo obj = new JobInformationImportVo();
+        ByteArrayOutputStream bot = ImportExcelUtil.writeTemplateSheet(obj);
+        return R.fileStream(bot.toByteArray(), System.currentTimeMillis() + ExcelTypeEnum.XLSX.getValue());
+    }
 }

+ 134 - 0
src/main/java/com/xjrsoft/module/teacher/entity/CoreTeacher.java

@@ -0,0 +1,134 @@
+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.LocalDate;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 骨干教师记录
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+@TableName("core_teacher")
+@ApiModel(value = "core_teacher", description = "骨干教师记录")
+public class CoreTeacher 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(xjr_user)
+    */
+    @ApiModelProperty("教职工主键id(xjr_user)")
+    private Long userId;
+    /**
+    * 工号
+    */
+    @ApiModelProperty("工号")
+    private String userName;
+    /**
+    * 部门主键id(xjr_dept)
+    */
+    @ApiModelProperty("部门主键id(xjr_dept)")
+    private String deptId;
+    /**
+    * 级别
+    */
+    @ApiModelProperty("级别")
+    private String level;
+    /**
+    * 任教学科
+    */
+    @ApiModelProperty("任教学科")
+    private String subjectCategory;
+    /**
+    * 证书编号
+    */
+    @ApiModelProperty("证书编号")
+    private String certificationNo;
+    /**
+    * 专业部
+    */
+    @ApiModelProperty("专业部")
+    private String specialtyDept;
+    /**
+    * 文号
+    */
+    @ApiModelProperty("文号")
+    private String referenceNumber;
+    /**
+    * 认证时间
+    */
+    @ApiModelProperty("认证时间")
+    private LocalDate issuanceDate;
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+    /**
+    * 依据附件id
+    */
+    @ApiModelProperty("依据附件id")
+    private Long accordFileId;
+
+
+}

+ 134 - 0
src/main/java/com/xjrsoft/module/teacher/entity/EvaluatorInformation.java

@@ -0,0 +1,134 @@
+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.LocalDate;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 考评员信息
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+@TableName("evaluator_information")
+@ApiModel(value = "evaluator_information", description = "考评员信息")
+public class EvaluatorInformation 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(xjr_user)
+    */
+    @ApiModelProperty("教职工主键id(xjr_user)")
+    private Long userId;
+    /**
+    * 工号
+    */
+    @ApiModelProperty("工号")
+    private String userName;
+    /**
+    * 部门主键id(xjr_dept)
+    */
+    @ApiModelProperty("部门主键id(xjr_dept)")
+    private String deptId;
+    /**
+    * 证书名称
+    */
+    @ApiModelProperty("证书名称")
+    private String name;
+    /**
+    * 证书编号
+    */
+    @ApiModelProperty("证书编号")
+    private String certificationNo;
+    /**
+    * 任教学科
+    */
+    @ApiModelProperty("任教学科")
+    private String subjectCategory;
+    /**
+    * 级别
+    */
+    @ApiModelProperty("级别")
+    private String level;
+    /**
+    * 发证机构
+    */
+    @ApiModelProperty("发证机构")
+    private String certifyingAuthority;
+    /**
+    * 发证时间
+    */
+    @ApiModelProperty("发证时间")
+    private LocalDate issuanceDate;
+    /**
+    * 有效期
+    */
+    @ApiModelProperty("有效期")
+    private LocalDate validity;
+    /**
+    * 依据附件id
+    */
+    @ApiModelProperty("依据附件id")
+    private Long accordFileId;
+
+
+}

+ 114 - 0
src/main/java/com/xjrsoft/module/teacher/entity/FacultyContract.java

@@ -0,0 +1,114 @@
+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.LocalDate;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 教职工合同记录
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+@TableName("faculty_contract")
+@ApiModel(value = "faculty_contract", description = "教职工合同记录")
+public class FacultyContract 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(xjr_user)
+    */
+    @ApiModelProperty("教职工主键id(xjr_user)")
+    private Long userId;
+    /**
+    * 工号
+    */
+    @ApiModelProperty("工号")
+    private String userName;
+    /**
+    * 部门主键id(xjr_dept)
+    */
+    @ApiModelProperty("部门主键id(xjr_dept)")
+    private String deptId;
+    /**
+    * 起始日期
+    */
+    @ApiModelProperty("起始日期")
+    private LocalDate startDate;
+    /**
+    * 结束日期
+    */
+    @ApiModelProperty("结束日期")
+    private LocalDate endDate;
+    /**
+    * 合同岗位
+    */
+    @ApiModelProperty("合同岗位")
+    private String contractPosition;
+    /**
+    * 依据附件id
+    */
+    @ApiModelProperty("依据附件id")
+    private Long accordFileId;
+
+
+}

+ 139 - 0
src/main/java/com/xjrsoft/module/teacher/entity/JobInformation.java

@@ -0,0 +1,139 @@
+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.LocalDate;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 岗位信息记录
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+@TableName("job_information")
+@ApiModel(value = "job_information", description = "岗位信息记录")
+public class JobInformation 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(xjr_user)
+    */
+    @ApiModelProperty("教职工主键id(xjr_user)")
+    private Long userId;
+    /**
+    * 工号
+    */
+    @ApiModelProperty("工号")
+    private String userName;
+    /**
+    * 部门主键id(xjr_dept)
+    */
+    @ApiModelProperty("部门主键id(xjr_dept)")
+    private String deptId;
+    /**
+    * 岗位类型
+    */
+    @ApiModelProperty("岗位类型")
+    private String jobCategory;
+    /**
+    * 岗位名称
+    */
+    @ApiModelProperty("岗位名称")
+    private String jobName;
+    /**
+    * 聘用时间
+    */
+    @ApiModelProperty("聘用时间")
+    private LocalDate employDate;
+    /**
+    * 聘用文号
+    */
+    @ApiModelProperty("聘用文号")
+    private String employNo;
+    /**
+    * 是否领导岗位
+    */
+    @ApiModelProperty("是否领导岗位")
+    private String leaderStatus;
+    /**
+    * 行政岗位部门
+    */
+    @ApiModelProperty("行政岗位部门")
+    private String jobDept;
+    /**
+    * 兼课学院
+    */
+    @ApiModelProperty("兼课学院")
+    private String concurrentCollege;
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+    /**
+    * 依据附件id
+    */
+    @ApiModelProperty("依据附件id")
+    private Long accordFileId;
+
+
+}

+ 129 - 0
src/main/java/com/xjrsoft/module/teacher/entity/LanguageCompetence.java

@@ -0,0 +1,129 @@
+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.LocalDate;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 语言能力信息
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+@TableName("language_competence")
+@ApiModel(value = "language_competence", description = "语言能力信息")
+public class LanguageCompetence 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(xjr_user)
+    */
+    @ApiModelProperty("教职工主键id(xjr_user)")
+    private Long userId;
+    /**
+    * 工号
+    */
+    @ApiModelProperty("工号")
+    private String userName;
+    /**
+    * 部门主键id(xjr_dept)
+    */
+    @ApiModelProperty("部门主键id(xjr_dept)")
+    private String deptId;
+    /**
+    * 语言种类
+    */
+    @ApiModelProperty("语言种类")
+    private String name;
+    /**
+    * 等级
+    */
+    @ApiModelProperty("等级")
+    private String level;
+    /**
+    * 证书编号
+    */
+    @ApiModelProperty("证书编号")
+    private String certificationNo;
+    /**
+    * 测试机构
+    */
+    @ApiModelProperty("测试机构")
+    private String examAuthority;
+    /**
+    * 发证单位
+    */
+    @ApiModelProperty("发证单位")
+    private String issuanceUnit;
+    /**
+    * 发证时间
+    */
+    @ApiModelProperty("发证时间")
+    private LocalDate issuanceDate;
+    /**
+    * 依据附件id
+    */
+    @ApiModelProperty("依据附件id")
+    private Long accordFileId;
+
+
+}

+ 124 - 0
src/main/java/com/xjrsoft/module/teacher/entity/OutsideAssociations.java

@@ -0,0 +1,124 @@
+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.LocalDate;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 校外其他协会记录
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+@TableName("outside_associations")
+@ApiModel(value = "outside_associations", description = "校外其他协会记录")
+public class OutsideAssociations 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(xjr_user)
+    */
+    @ApiModelProperty("教职工主键id(xjr_user)")
+    private Long userId;
+    /**
+    * 工号
+    */
+    @ApiModelProperty("工号")
+    private String userName;
+    /**
+    * 部门主键id(xjr_dept)
+    */
+    @ApiModelProperty("部门主键id(xjr_dept)")
+    private String deptId;
+    /**
+    * 协会名称
+    */
+    @ApiModelProperty("协会名称")
+    private String name;
+    /**
+    * 加入时间
+    */
+    @ApiModelProperty("加入时间")
+    private LocalDate joinDate;
+    /**
+    * 退出时间
+    */
+    @ApiModelProperty("退出时间")
+    private LocalDate exitDate;
+    /**
+    * 职务
+    */
+    @ApiModelProperty("职务")
+    private String duty;
+    /**
+    * 说明
+    */
+    @ApiModelProperty("说明")
+    private String remark;
+    /**
+    * 依据附件id
+    */
+    @ApiModelProperty("依据附件id")
+    private Long accordFileId;
+
+
+}

+ 154 - 0
src/main/java/com/xjrsoft/module/teacher/entity/ProfessionalTitle.java

@@ -0,0 +1,154 @@
+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.LocalDate;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 教职工职称信息
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+@TableName("professional_title")
+@ApiModel(value = "professional_title", description = "教职工职称信息")
+public class ProfessionalTitle 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(xjr_user)
+    */
+    @ApiModelProperty("教职工主键id(xjr_user)")
+    private Long userId;
+    /**
+    * 工号
+    */
+    @ApiModelProperty("工号")
+    private String userName;
+    /**
+    * 部门主键id(xjr_dept)
+    */
+    @ApiModelProperty("部门主键id(xjr_dept)")
+    private String deptId;
+    /**
+    * 职称名称
+    */
+    @ApiModelProperty("职称名称")
+    private String name;
+    /**
+    * 证书编号
+    */
+    @ApiModelProperty("证书编号")
+    private String professionalTitleNo;
+    /**
+    * 取得时间
+    */
+    @ApiModelProperty("取得时间")
+    private LocalDate getDate;
+    /**
+    * 学科类别
+    */
+    @ApiModelProperty("学科类别")
+    private String subjectCategory;
+    /**
+    * 授予时间
+    */
+    @ApiModelProperty("授予时间")
+    private LocalDate beHonoredDate;
+    /**
+    * 发证时间
+    */
+    @ApiModelProperty("发证时间")
+    private LocalDate issuanceDate;
+    /**
+    * 任职资格开始时间
+    */
+    @ApiModelProperty("任职资格开始时间")
+    private LocalDate qualificationStartDate;
+    /**
+    * 任职资格结束时间
+    */
+    @ApiModelProperty("任职资格结束时间")
+    private LocalDate qualificationEndDate;
+    /**
+    * 发文时间
+    */
+    @ApiModelProperty("发文时间")
+    private LocalDate noticeDate;
+    /**
+    * 职称类别
+    */
+    @ApiModelProperty("职称类别")
+    private String professionalTitleCategory;
+    /**
+    * 是否现任(0:否;1:是)
+    */
+    @ApiModelProperty("是否现任(0:否;1:是)")
+    private String jobStatus;
+    /**
+    * 依据附件id
+    */
+    @ApiModelProperty("依据附件id")
+    private Long accordFileId;
+
+
+}

+ 134 - 0
src/main/java/com/xjrsoft/module/teacher/entity/ScientificResearch.java

@@ -0,0 +1,134 @@
+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.LocalDate;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 科研信息记录
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+@TableName("scientific_research")
+@ApiModel(value = "scientific_research", description = "科研信息记录")
+public class ScientificResearch 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(xjr_user)
+    */
+    @ApiModelProperty("教职工主键id(xjr_user)")
+    private Long userId;
+    /**
+    * 工号
+    */
+    @ApiModelProperty("工号")
+    private String userName;
+    /**
+    * 部门主键id(xjr_dept)
+    */
+    @ApiModelProperty("部门主键id(xjr_dept)")
+    private String deptId;
+    /**
+    * 科研名称
+    */
+    @ApiModelProperty("科研名称")
+    private String name;
+    /**
+    * 科研编号
+    */
+    @ApiModelProperty("科研编号")
+    private String scientificNo;
+    /**
+    * 任教学科
+    */
+    @ApiModelProperty("任教学科")
+    private String subjectCategory;
+    /**
+    * 等级
+    */
+    @ApiModelProperty("等级")
+    private String level;
+    /**
+    * 发证机构
+    */
+    @ApiModelProperty("发证机构")
+    private String certifyingAuthority;
+    /**
+    * 发证时间
+    */
+    @ApiModelProperty("发证时间")
+    private LocalDate issuanceDate;
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+    /**
+    * 依据附件id
+    */
+    @ApiModelProperty("依据附件id")
+    private Long accordFileId;
+
+
+}

+ 129 - 0
src/main/java/com/xjrsoft/module/teacher/entity/TeacherCertification.java

@@ -0,0 +1,129 @@
+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.LocalDate;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 教师资格证信息
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+@TableName("teacher_certification")
+@ApiModel(value = "teacher_certification", description = "教师资格证信息")
+public class TeacherCertification 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(xjr_user)
+    */
+    @ApiModelProperty("教职工主键id(xjr_user)")
+    private Long userId;
+    /**
+    * 工号
+    */
+    @ApiModelProperty("工号")
+    private String userName;
+    /**
+    * 部门主键id(xjr_dept)
+    */
+    @ApiModelProperty("部门主键id(xjr_dept)")
+    private String deptId;
+    /**
+    * 证书名称
+    */
+    @ApiModelProperty("证书名称")
+    private String name;
+    /**
+    * 证书编号
+    */
+    @ApiModelProperty("证书编号")
+    private String certificationNo;
+    /**
+    * 任教学科
+    */
+    @ApiModelProperty("任教学科")
+    private String subjectCategory;
+    /**
+    * 资格种类
+    */
+    @ApiModelProperty("资格种类")
+    private String category;
+    /**
+    * 发证机构
+    */
+    @ApiModelProperty("发证机构")
+    private String certifyingAuthority;
+    /**
+    * 发证时间
+    */
+    @ApiModelProperty("发证时间")
+    private LocalDate issuanceDate;
+    /**
+    * 依据附件id
+    */
+    @ApiModelProperty("依据附件id")
+    private Long accordFileId;
+
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/teacher/mapper/CoreTeacherMapper.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.CoreTeacher;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 骨干教师记录
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Mapper
+public interface CoreTeacherMapper extends MPJBaseMapper<CoreTeacher> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/teacher/mapper/EvaluatorInformationMapper.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.EvaluatorInformation;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 考评员信息
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Mapper
+public interface EvaluatorInformationMapper extends MPJBaseMapper<EvaluatorInformation> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/teacher/mapper/FacultyContractMapper.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.FacultyContract;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 教职工合同记录
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Mapper
+public interface FacultyContractMapper extends MPJBaseMapper<FacultyContract> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/teacher/mapper/JobInformationMapper.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.JobInformation;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 岗位信息记录
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Mapper
+public interface JobInformationMapper extends MPJBaseMapper<JobInformation> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/teacher/mapper/LanguageCompetenceMapper.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.LanguageCompetence;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 语言能力信息
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Mapper
+public interface LanguageCompetenceMapper extends MPJBaseMapper<LanguageCompetence> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/teacher/mapper/OutsideAssociationsMapper.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.OutsideAssociations;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 校外其他协会记录
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Mapper
+public interface OutsideAssociationsMapper extends MPJBaseMapper<OutsideAssociations> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/teacher/mapper/ProfessionalTitleMapper.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.ProfessionalTitle;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 教职工职称信息
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Mapper
+public interface ProfessionalTitleMapper extends MPJBaseMapper<ProfessionalTitle> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/teacher/mapper/ScientificResearchMapper.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.ScientificResearch;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 科研信息记录
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Mapper
+public interface ScientificResearchMapper extends MPJBaseMapper<ScientificResearch> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/teacher/mapper/TeacherCertificationMapper.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.TeacherCertification;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 教师资格证信息
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Mapper
+public interface TeacherCertificationMapper extends MPJBaseMapper<TeacherCertification> {
+
+}

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

@@ -6,7 +6,9 @@ import com.xjrsoft.module.teacher.dto.BaseTeacherPageDto;
 import com.xjrsoft.module.teacher.dto.UpdateXjrUserDto;
 import com.xjrsoft.module.teacher.entity.XjrUser;
 import com.xjrsoft.module.teacher.vo.XjrUserPageVo;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
 import java.text.ParseException;
 import java.util.List;
 import java.util.Map;
@@ -53,4 +55,21 @@ public interface ITeacherbaseManagerService extends MPJBaseService<XjrUser> {
 
     List<XjrUserPageVo> getList(BaseTeacherPageDto dto);
 
+    String professionalTitle(MultipartFile file) throws IOException, IllegalAccessException;
+
+    String teacherCertification(MultipartFile file) throws IOException, IllegalAccessException;
+
+    String evaluatorInformation(MultipartFile file) throws IOException, IllegalAccessException;
+
+    String languageCompetence(MultipartFile file) throws IOException, IllegalAccessException;
+
+    String facultyContract(MultipartFile file) throws IOException, IllegalAccessException;
+
+    String outsideAssociations(MultipartFile file) throws IOException, IllegalAccessException;
+
+    String coreTeacher(MultipartFile file) throws IOException, IllegalAccessException;
+
+    String scientificResearch(MultipartFile file) throws IOException, IllegalAccessException;
+
+    String jobInformation(MultipartFile file) throws IOException, IllegalAccessException;
 }

+ 166 - 54
src/main/java/com/xjrsoft/module/teacher/service/impl/TeacherbaseManagerServiceImpl.java

@@ -5,38 +5,29 @@ import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.convert.Convert;
+import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.EasyExcel;
 import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.constant.GlobalConstant;
-import com.xjrsoft.common.enums.DeleteMark;
-import com.xjrsoft.common.enums.EnabledMark;
-import com.xjrsoft.common.enums.GenderDictionaryEnum;
-import com.xjrsoft.common.enums.JobStateEnum;
-import com.xjrsoft.common.enums.RoleEnum;
-import com.xjrsoft.common.enums.TeaChangeTypeEnum;
+import com.xjrsoft.common.enums.*;
 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.base.entity.BaseCourseSubject;
+import com.xjrsoft.module.base.entity.CourseSubjectDetail;
 import com.xjrsoft.module.hikvision.util.DataUtil;
-import com.xjrsoft.module.organization.entity.Department;
-import com.xjrsoft.module.organization.entity.Post;
-import com.xjrsoft.module.organization.entity.User;
-import com.xjrsoft.module.organization.entity.UserDeptRelation;
-import com.xjrsoft.module.organization.entity.UserPostRelation;
-import com.xjrsoft.module.organization.entity.UserRoleRelation;
+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.IDepartmentService;
-import com.xjrsoft.module.organization.service.IPostService;
-import com.xjrsoft.module.organization.service.IUserDeptRelationService;
-import com.xjrsoft.module.organization.service.IUserPostRelationService;
-import com.xjrsoft.module.organization.service.IUserService;
+import com.xjrsoft.module.organization.service.*;
 import com.xjrsoft.module.personnel.entity.CarMessageApply;
 import com.xjrsoft.module.personnel.mapper.CarMessageApplyMapper;
 import com.xjrsoft.module.personnel.service.ITeacherFaceProcessService;
@@ -46,49 +37,36 @@ import com.xjrsoft.module.system.service.IDictionarydetailService;
 import com.xjrsoft.module.teacher.dto.AddXjrUserDto;
 import com.xjrsoft.module.teacher.dto.BaseTeacherPageDto;
 import com.xjrsoft.module.teacher.dto.UpdateXjrUserDto;
-import com.xjrsoft.module.teacher.entity.BaseTeacher;
-import com.xjrsoft.module.teacher.entity.BaseTeacherChangeRecord;
-import com.xjrsoft.module.teacher.entity.BaseTeacherContact;
-import com.xjrsoft.module.teacher.entity.BaseTeacherEducation;
-import com.xjrsoft.module.teacher.entity.BaseTeacherEmploy;
-import com.xjrsoft.module.teacher.entity.BaseTeacherFamily;
-import com.xjrsoft.module.teacher.entity.BaseTeacherFamilyMember;
-import com.xjrsoft.module.teacher.entity.BaseTeacherRegular;
-import com.xjrsoft.module.teacher.entity.WfTeacherDepart;
-import com.xjrsoft.module.teacher.entity.XjrUser;
-import com.xjrsoft.module.teacher.mapper.BaseTeacherChangeRecordMapper;
-import com.xjrsoft.module.teacher.mapper.BaseTeacherContactMapper;
-import com.xjrsoft.module.teacher.mapper.BaseTeacherEducationMapper;
-import com.xjrsoft.module.teacher.mapper.BaseTeacherEmployMapper;
-import com.xjrsoft.module.teacher.mapper.BaseTeacherFamilyMapper;
-import com.xjrsoft.module.teacher.mapper.BaseTeacherFamilyMemberMapper;
-import com.xjrsoft.module.teacher.mapper.BaseTeacherMapper;
-import com.xjrsoft.module.teacher.mapper.BaseTeacherRegularMapper;
-import com.xjrsoft.module.teacher.mapper.WfTeacherDepartMapper;
-import com.xjrsoft.module.teacher.mapper.XjrUserMapper;
+import com.xjrsoft.module.teacher.entity.*;
+import com.xjrsoft.module.teacher.mapper.*;
 import com.xjrsoft.module.teacher.service.ITeacherbaseManagerService;
+import com.xjrsoft.module.teacher.vo.ProfessionalTitleImportVo;
 import com.xjrsoft.module.teacher.vo.XjrUserPageVo;
+import com.xjrsoft.module.veb.util.ImportExcelUtil;
+import com.xjrsoft.module.veb.vo.BaseCourseSubjectImportVo;
 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.collections.MapUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.camunda.bpm.engine.history.HistoricProcessInstance;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
+import static com.xjrsoft.module.veb.util.ImportExcelUtil.isRequiredFieldsFilled;
+import static com.xjrsoft.module.veb.util.ImportExcelUtil.validateAndSetDictionaryField;
+
 /**
  * @title: service
  * @Author 管理员
@@ -118,17 +96,14 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
     private final IDictionarydetailService dictionaryService;
     private final IDepartmentService departmentService;
     private final IPostService postService;
+    private final ITeacherFaceProcessService teacherFaceProcessService;
+    private final CarMessageApplyMapper carMessageApplyMapper;
     private IDictionarydetailService dictionarydetailService;
-
     private WfTeacherDepartMapper wfTeacherDepartMapper;
-
     private BaseTeacherChangeRecordMapper baseTeacherChangeRecordMapper;
-
     private WorkflowFormRelationMapper workflowFormRelationMapper;
 
-    private final ITeacherFaceProcessService teacherFaceProcessService;
-    private final CarMessageApplyMapper carMessageApplyMapper;
-
+    private ProfessionalTitleMapper professionalTitleMapper;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -244,7 +219,7 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
     @Transactional(rollbackFor = Exception.class)
     public Boolean update(UpdateXjrUserDto dto) {
         XjrUser old = this.getByIdDeep(dto.getId());
-        if(ObjectUtils.isEmpty(old)){
+        if (ObjectUtils.isEmpty(old)) {
             throw new MyException("教职工信息不存在");
         }
 
@@ -302,7 +277,7 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
             baseTeacherChangeRecordMapper.insert(insetBaseTeacherChangeRecord);
 
             //如果在职状态改为了非在职,禁用账号,并清空海康相关信息
-            if(!JobStateEnum.isBeOnTheJobByCode(oldJobState)){
+            if (!JobStateEnum.isBeOnTheJobByCode(oldJobState)) {
                 disabledUser(dto.getId());
             }
         }
@@ -795,7 +770,7 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
             }
         }
 
-        if(!updateBaseTeacherRegularList.isEmpty()){
+        if (!updateBaseTeacherRegularList.isEmpty()) {
             for (BaseTeacherRegular teacherRegular : updateBaseTeacherRegularList) {
                 teacherRegularMapper.updateById(teacherRegular);
             }
@@ -846,7 +821,7 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
                 && HistoricProcessInstance.STATE_COMPLETED.equals(workflowFormRelation.getCurrentState())
         ) {
             XjrUser old = this.getByIdDeep(wfTextbookRecede.getApplicantUserId());
-            if(ObjectUtils.isEmpty(old)){
+            if (ObjectUtils.isEmpty(old)) {
                 throw new MyException("教职工信息不存在");
             }
 
@@ -854,7 +829,7 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
             // 更新教职工在职状态
             List<BaseTeacher> baseTeacherList = old.getBaseTeacherList();
             BaseTeacher updateBaseTeacher;
-            for (BaseTeacher baseTeacher : baseTeacherList){
+            for (BaseTeacher baseTeacher : baseTeacherList) {
                 updateBaseTeacher = new BaseTeacher();
                 updateBaseTeacher.setId(baseTeacher.getId());
                 updateBaseTeacher.setJobState("JOB_LZ");
@@ -944,4 +919,141 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
     public List<XjrUserPageVo> getList(BaseTeacherPageDto dto) {
         return null;
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String professionalTitle(MultipartFile file) throws IOException, IllegalAccessException {
+        List<ProfessionalTitleImportVo> excelDataList = EasyExcel.read(file.getInputStream()).headRowNumber(1).head(ProfessionalTitleImportVo.class).sheet().doReadSync();
+        StringBuilder sb = new StringBuilder();
+
+        // 获取所有的教职工
+        MPJLambdaWrapper<XjrUser> xjrUserMPJLambdaWrapper = new MPJLambdaWrapper<>();
+        xjrUserMPJLambdaWrapper
+                .select(XjrUser::getId)
+                .select(XjrUser::getUserName, XjrUser::getUserName)
+                .select(XjrUser::getName, XjrUser::getName)
+                .select(" (SELECT GROUP_CONCAT(a.id) FROM xjr_department a" +
+                        " INNER JOIN xjr_user_dept_relation b ON a.id = b.dept_id" +
+                        " WHERE a.delete_mark = 0 AND b.user_id = t.id) as code")
+                .innerJoin(UserRoleRelation.class, UserRoleRelation::getUserId, XjrUser::getId)
+                .eq(UserRoleRelation::getRoleId, 2)
+        ;
+
+        List<XjrUser> xjrUsers = this.selectJoinList(XjrUser.class, xjrUserMPJLambdaWrapper);
+        // 根据姓名和工号映射
+        Map<String, XjrUser> mapByUsernameAndName = xjrUsers.stream()
+                .collect(Collectors.toMap(u -> u.getUserName() + "-" + u.getName(), u -> u, (u1, u2) -> u1));
+
+        if (MapUtils.isEmpty(mapByUsernameAndName)) {
+            sb.append("系统教职工数据有误,请联系管理员");
+            return sb.toString();
+        }
+
+        List<ProfessionalTitle> oldProfessionalTitles = professionalTitleMapper.selectList(Wrappers.lambdaQuery(ProfessionalTitle.class)
+                .eq(ProfessionalTitle::getDeleteMark, DeleteMark.NODELETE.getCode())
+        );
+
+        // 先根据用户分组,再根据
+        Map<Long, Map<String, ProfessionalTitle>> mapByUserIdThenNo = oldProfessionalTitles.stream()
+                        .collect(Collectors.groupingBy(
+                                ProfessionalTitle::getUserId, // 第一级分组:按 userId 分组
+                                Collectors.toMap(
+                                        ProfessionalTitle::getProfessionalTitleNo, // 第二级分组的键:professionalTitleNo
+                                        pt -> pt // 第二级分组的值:整个 ProfessionalTitle 对象
+                                )
+                        ));
+
+        List<ProfessionalTitle> professionalTitles = new ArrayList<>();
+        ProfessionalTitle insert;
+        for (int i = 0; i < excelDataList.size(); i++) {
+            ProfessionalTitleImportVo vo = excelDataList.get(i);
+            if (isRequiredFieldsFilled(vo,
+                    sb,
+                    i + 1)) {
+                return sb.toString();
+            }
+
+            XjrUser user = mapByUsernameAndName.get(vo.getUserName() + "-" + vo.getName());
+            if (ObjectUtils.isEmpty(user)) {
+                sb
+                        .append("第")
+                        .append(i + 1)
+                        .append("行工号和姓名对应的教职工不存在,请核实");
+                return sb.toString();
+            }
+
+            insert = new ProfessionalTitle();
+            BeanUtils.copyProperties(vo, insert);
+            insert.setUserId(user.getId());
+            insert.setDeptId(user.getCode());
+
+
+            professionalTitles.add(insert);
+        }
+
+//        //批量新增
+//        if (!professionalTitles.isEmpty()) {
+//            for (BaseCourseSubject baseCourseSubject : baseCourseSubjects) {
+//                baseCourseSubjectMapper.insert(baseCourseSubject);
+//            }
+//        }
+//        if (!courseSubjectDetails.isEmpty()) {
+//            for (CourseSubjectDetail courseSubjectDetail : courseSubjectDetails) {
+//                courseSubjectDetailMapper.insert(courseSubjectDetail);
+//            }
+//        }
+        return sb.toString();
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String teacherCertification(MultipartFile file) throws IOException, IllegalAccessException {
+        return "";
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String evaluatorInformation(MultipartFile file) throws IOException, IllegalAccessException {
+        return "";
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String languageCompetence(MultipartFile file) throws IOException, IllegalAccessException {
+        return "";
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String facultyContract(MultipartFile file) throws IOException, IllegalAccessException {
+        return "";
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String outsideAssociations(MultipartFile file) throws IOException, IllegalAccessException {
+        return "";
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String coreTeacher(MultipartFile file) throws IOException, IllegalAccessException {
+        return "";
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String scientificResearch(MultipartFile file) throws IOException, IllegalAccessException {
+        return "";
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String jobInformation(MultipartFile file) throws IOException, IllegalAccessException {
+        return "";
+    }
+
+//    public String jobInformation(MultipartFile file) {
+//        return "";
+//    }
 }

+ 89 - 0
src/main/java/com/xjrsoft/module/teacher/vo/CoreTeacherImportVo.java

@@ -0,0 +1,89 @@
+package com.xjrsoft.module.teacher.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.xjrsoft.common.annotation.Required;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+* @title: 骨干教师记录分页列表出参
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+public class CoreTeacherImportVo {
+
+    /**
+     * 教职工姓名
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("教职工姓名")
+    @ApiModelProperty("教职工姓名")
+    @Required
+    private String userIdCn;
+    /**
+     * 工号
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("工号")
+    @ApiModelProperty("工号")
+    @Required
+    private String userName;
+    /**
+    * 级别
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("级别")
+    @ApiModelProperty("级别")
+    @Required
+    private String level;
+    /**
+    * 任教学科
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("任教学科")
+    @ApiModelProperty("任教学科")
+    @Required
+    private String subjectCategory;
+    /**
+    * 证书编号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("证书编号")
+    @ApiModelProperty("证书编号")
+    @Required
+    private String certificationNo;
+    /**
+    * 专业部
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("专业部")
+    @ApiModelProperty("专业部")
+    private String specialtyDept;
+    /**
+    * 文号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("文号")
+    @ApiModelProperty("文号")
+    private String referenceNumber;
+    /**
+    * 认证时间
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("认证时间")
+    @ApiModelProperty("认证时间")
+    private LocalDate issuanceDate;
+    /**
+    * 备注
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("备注")
+    @ApiModelProperty("备注")
+    private String remark;
+}

+ 89 - 0
src/main/java/com/xjrsoft/module/teacher/vo/EvaluatorInformationImportVo.java

@@ -0,0 +1,89 @@
+package com.xjrsoft.module.teacher.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.xjrsoft.common.annotation.Required;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+* @title: 考评员信息分页列表出参
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+public class EvaluatorInformationImportVo {
+
+    /**
+     * 教职工姓名
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("教职工姓名")
+    @ApiModelProperty("教职工姓名")
+    @Required
+    private String userIdCn;
+    /**
+     * 工号
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("工号")
+    @ApiModelProperty("工号")
+    @Required
+    private String userName;
+    /**
+    * 证书名称
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("证书名称")
+    @ApiModelProperty("证书名称")
+    @Required
+    private String name;
+    /**
+    * 证书编号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("证书编号")
+    @ApiModelProperty("证书编号")
+    @Required
+    private String certificationNo;
+    /**
+    * 任教学科
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("任教学科")
+    @ApiModelProperty("任教学科")
+    private String subjectCategory;
+    /**
+    * 级别
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("级别")
+    @ApiModelProperty("级别")
+    private String level;
+    /**
+    * 发证机构
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("发证机构")
+    @ApiModelProperty("发证机构")
+    private String certifyingAuthority;
+    /**
+    * 发证时间
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("发证时间")
+    @ApiModelProperty("发证时间")
+    private LocalDate issuanceDate;
+    /**
+    * 有效期
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("有效期")
+    @ApiModelProperty("有效期")
+    private LocalDate validity;
+
+}

+ 61 - 0
src/main/java/com/xjrsoft/module/teacher/vo/FacultyContractImportVo.java

@@ -0,0 +1,61 @@
+package com.xjrsoft.module.teacher.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.xjrsoft.common.annotation.Required;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+* @title: 教职工合同记录分页列表出参
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+public class FacultyContractImportVo {
+
+    /**
+     * 教职工姓名
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("教职工姓名")
+    @ApiModelProperty("教职工姓名")
+    @Required
+    private String userIdCn;
+    /**
+     * 工号
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("工号")
+    @ApiModelProperty("工号")
+    @Required
+    private String userName;
+    /**
+    * 起始日期
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("起始日期")
+    @ApiModelProperty("起始日期")
+    @Required
+    private LocalDate startDate;
+    /**
+    * 结束日期
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("结束日期")
+    @ApiModelProperty("结束日期")
+    @Required
+    private LocalDate endDate;
+    /**
+    * 合同岗位
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("合同岗位")
+    @ApiModelProperty("合同岗位")
+    private String contractPosition;
+
+}

+ 94 - 0
src/main/java/com/xjrsoft/module/teacher/vo/JobInformationImportVo.java

@@ -0,0 +1,94 @@
+package com.xjrsoft.module.teacher.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.xjrsoft.common.annotation.Required;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+* @title: 岗位信息记录分页列表出参
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+public class JobInformationImportVo {
+    /**
+     * 教职工姓名
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("教职工姓名")
+    @ApiModelProperty("教职工姓名")
+    @Required
+    private String userIdCn;
+    /**
+     * 工号
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("工号")
+    @ApiModelProperty("工号")
+    @Required
+    private String userName;
+    /**
+    * 岗位类型
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("岗位类型")
+    @ApiModelProperty("岗位类型")
+    private String jobCategory;
+    /**
+    * 岗位名称
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("岗位名称")
+    @ApiModelProperty("岗位名称")
+    @Required
+    private String jobName;
+    /**
+    * 聘用时间
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("聘用时间")
+    @ApiModelProperty("聘用时间")
+    private LocalDate employDate;
+    /**
+    * 聘用文号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("聘用文号")
+    @ApiModelProperty("聘用文号")
+    private String employNo;
+    /**
+    * 是否领导岗位
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("是否领导岗位")
+    @ApiModelProperty("是否领导岗位")
+    private String leaderStatus;
+    /**
+    * 行政岗位部门
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("行政岗位部门")
+    @ApiModelProperty("行政岗位部门")
+    private String jobDept;
+    /**
+    * 兼课学院
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("兼课学院")
+    @ApiModelProperty("兼课学院")
+    private String concurrentCollege;
+    /**
+    * 备注
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("备注")
+    @ApiModelProperty("备注")
+    private String remark;
+
+}

+ 80 - 0
src/main/java/com/xjrsoft/module/teacher/vo/LanguageCompetenceImportVo.java

@@ -0,0 +1,80 @@
+package com.xjrsoft.module.teacher.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.xjrsoft.common.annotation.Required;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+* @title: 语言能力信息分页列表出参
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+public class LanguageCompetenceImportVo {
+
+    /**
+     * 教职工姓名
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("教职工姓名")
+    @ApiModelProperty("教职工姓名")
+    @Required
+    private String userIdCn;
+    /**
+     * 工号
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("工号")
+    @ApiModelProperty("工号")
+    @Required
+    private String userName;
+    /**
+    * 语言种类
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("语言种类")
+    @ApiModelProperty("语言种类")
+    private String name;
+    /**
+    * 等级
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("等级")
+    @ApiModelProperty("等级")
+    private String level;
+    /**
+    * 证书编号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("证书编号")
+    @ApiModelProperty("证书编号")
+    private String certificationNo;
+    /**
+    * 测试机构
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("测试机构")
+    @ApiModelProperty("测试机构")
+    private String examAuthority;
+    /**
+    * 发证单位
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("发证单位")
+    @ApiModelProperty("发证单位")
+    private String issuanceUnit;
+    /**
+    * 发证时间
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("发证时间")
+    @ApiModelProperty("发证时间")
+    private LocalDate issuanceDate;
+
+}

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

@@ -0,0 +1,73 @@
+package com.xjrsoft.module.teacher.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.xjrsoft.common.annotation.Required;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+* @title: 校外其他协会记录分页列表出参
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+public class OutsideAssociationsImportVo {
+    /**
+     * 教职工姓名
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("教职工姓名")
+    @ApiModelProperty("教职工姓名")
+    @Required
+    private String userIdCn;
+    /**
+     * 工号
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("工号")
+    @ApiModelProperty("工号")
+    @Required
+    private String userName;
+    /**
+    * 协会名称
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("协会名称")
+    @ApiModelProperty("协会名称")
+    @Required
+    private String name;
+    /**
+    * 加入时间
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("加入时间")
+    @ApiModelProperty("加入时间")
+    @Required
+    private LocalDate joinDate;
+    /**
+    * 退出时间
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("退出时间")
+    @ApiModelProperty("退出时间")
+    private LocalDate exitDate;
+    /**
+    * 职务
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("职务")
+    @ApiModelProperty("职务")
+    private String duty;
+    /**
+    * 说明
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("说明")
+    @ApiModelProperty("说明")
+    private String remark;
+}

+ 115 - 0
src/main/java/com/xjrsoft/module/teacher/vo/ProfessionalTitleImportVo.java

@@ -0,0 +1,115 @@
+package com.xjrsoft.module.teacher.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.xjrsoft.common.annotation.Required;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+* @title: 教职工职称信息分页列表出参
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+public class ProfessionalTitleImportVo {
+    /**
+    * 教职工姓名
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("教职工姓名")
+    @ApiModelProperty("教职工姓名")
+    @Required
+    private String userIdCn;
+    /**
+    * 工号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("工号")
+    @ApiModelProperty("工号")
+    @Required
+    private String userName;
+    /**
+    * 职称名称
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("职称名称")
+    @ApiModelProperty("职称名称")
+    @Required
+    private String name;
+    /**
+    * 证书编号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("证书编号")
+    @ApiModelProperty("证书编号")
+    @Required
+    private String professionalTitleNo;
+    /**
+    * 取得时间
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("取得时间")
+    @ApiModelProperty("取得时间")
+    private LocalDate getDate;
+    /**
+    * 学科类别
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("学科类别")
+    @ApiModelProperty("学科类别")
+    private String subjectCategory;
+    /**
+    * 授予时间
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("授予时间")
+    @ApiModelProperty("授予时间")
+    private LocalDate beHonoredDate;
+    /**
+    * 发证时间
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("发证时间")
+    @ApiModelProperty("发证时间")
+    private LocalDate issuanceDate;
+    /**
+    * 任职资格开始时间
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("任职资格开始时间")
+    @ApiModelProperty("任职资格开始时间")
+    private LocalDate qualificationStartDate;
+    /**
+    * 任职资格结束时间
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("任职资格结束时间")
+    @ApiModelProperty("任职资格结束时间")
+    private LocalDate qualificationEndDate;
+    /**
+    * 发文时间
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("发文时间")
+    @ApiModelProperty("发文时间")
+    private LocalDate noticeDate;
+    /**
+    * 职称类别
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("职称类别")
+    @ApiModelProperty("职称类别")
+    private String professionalTitleCategory;
+    /**
+    * 是否现任(0:否;1:是)
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("是否现任(否/是)")
+    @ApiModelProperty("是否现任(否/是)")
+    private String jobStatus;
+}

+ 87 - 0
src/main/java/com/xjrsoft/module/teacher/vo/ScientificResearchImportVo.java

@@ -0,0 +1,87 @@
+package com.xjrsoft.module.teacher.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.xjrsoft.common.annotation.Required;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+* @title: 科研信息记录分页列表出参
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+public class ScientificResearchImportVo {
+
+    /**
+     * 教职工姓名
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("教职工姓名")
+    @ApiModelProperty("教职工姓名")
+    @Required
+    private String userIdCn;
+    /**
+     * 工号
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("工号")
+    @ApiModelProperty("工号")
+    @Required
+    private String userName;
+    /**
+    * 科研名称
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("科研名称")
+    @ApiModelProperty("科研名称")
+    @Required
+    private String name;
+    /**
+    * 科研编号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("科研编号")
+    @ApiModelProperty("科研编号")
+    private String scientificNo;
+    /**
+    * 任教学科
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("任教学科")
+    @ApiModelProperty("任教学科")
+    private String subjectCategory;
+    /**
+    * 等级
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("等级")
+    @ApiModelProperty("等级")
+    private String level;
+    /**
+    * 发证机构
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("发证机构")
+    @ApiModelProperty("发证机构")
+    private String certifyingAuthority;
+    /**
+    * 发证时间
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("发证时间")
+    @ApiModelProperty("发证时间")
+    private LocalDate issuanceDate;
+    /**
+    * 备注
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("备注")
+    @ApiModelProperty("备注")
+    private String remark;
+}

+ 82 - 0
src/main/java/com/xjrsoft/module/teacher/vo/TeacherCertificationImportVo.java

@@ -0,0 +1,82 @@
+package com.xjrsoft.module.teacher.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.xjrsoft.common.annotation.Required;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+* @title: 教师资格证信息分页列表出参
+* @Author szs
+* @Date: 2025-04-24
+* @Version 1.0
+*/
+@Data
+public class TeacherCertificationImportVo {
+
+    /**
+     * 教职工姓名
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("教职工姓名")
+    @ApiModelProperty("教职工姓名")
+    @Required
+    private String userIdCn;
+    /**
+     * 工号
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("工号")
+    @ApiModelProperty("工号")
+    @Required
+    private String userName;
+    /**
+    * 证书名称
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("证书名称")
+    @ApiModelProperty("证书名称")
+    @Required
+    private String name;
+    /**
+    * 证书编号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("证书编号")
+    @ApiModelProperty("证书编号")
+    @Required
+    private String certificationNo;
+    /**
+    * 任教学科
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("任教学科")
+    @ApiModelProperty("任教学科")
+    private String subjectCategory;
+    /**
+    * 资格种类
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("资格种类")
+    @ApiModelProperty("资格种类")
+    private String category;
+    /**
+    * 发证机构
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("发证机构")
+    @ApiModelProperty("发证机构")
+    private String certifyingAuthority;
+    /**
+    * 发证时间
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("发证时间")
+    @ApiModelProperty("发证时间")
+    private LocalDate issuanceDate;
+
+}

+ 7 - 1
src/main/java/com/xjrsoft/module/veb/util/ImportExcelUtil.java

@@ -56,9 +56,14 @@ public class ImportExcelUtil {
         createHead(workbook, sheet, importConfigs, IndexedColors.YELLOW.getIndex(), IndexedColors.RED.getIndex(), 0);
 
         // 提示必填
-        String content = "红色背景为必填项,导入时请删除本行。";
+        String content = "黄底红字为必填项,导入时请删除本行。";
         createCautionHead(workbook, sheet, 1, content, importConfigs.size() - 1, 12, IndexedColors.RED.getIndex());
 
+        // 自动列宽
+        for (int i = 0; i < importConfigs.size(); i++) {
+            sheet.autoSizeColumn(i);
+        }
+
         //写入文件
         ByteArrayOutputStream bot = new ByteArrayOutputStream();
         workbook.write(bot);
@@ -192,6 +197,7 @@ public class ImportExcelUtil {
         Font requiredFont = workbook.createFont();
         requiredFont.setFontName("宋体");
         requiredFont.setFontHeightInPoints((short) 12);
+        requiredFont.setColor(requiredFieldFontColor);
 
         CellStyle requiredCellStyle = workbook.createCellStyle();
         requiredCellStyle.setFont(requiredFont); // 将字体应用到样式

+ 0 - 1
src/main/resources/mapper/oa/OfficialDocumentReceivedMapper.xml

@@ -13,7 +13,6 @@
         SELECT IFNULL(MAX(SUBSTR(received_number, 6, 3)), 0) + 1
         FROM official_document_received
         WHERE YEAR(received_date) = YEAR(NOW())
-          and received_type = 'rt_meeting'
     </select>
 
 </mapper>

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

@@ -4729,6 +4729,231 @@ public class FreeMarkerGeneratorTest {
         apiGeneratorService.generateCodes(params);
     }
 
+    @Test
+    public void gcProfessionalTitle() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("professional_title");//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("szs");//作者名称
+        params.setPackageName("teacher");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(true);//是否生成导入接口
+        params.setExport(true);//是否生成导出接口
+        params.setOutMainDir(false);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
+
+    @Test
+    public void gcTeacherCertification() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("teacher_certification");//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("szs");//作者名称
+        params.setPackageName("teacher");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(true);//是否生成导入接口
+        params.setExport(true);//是否生成导出接口
+        params.setOutMainDir(false);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
+
+    @Test
+    public void gcEvaluatorInformation() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("evaluator_information");//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("szs");//作者名称
+        params.setPackageName("teacher");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(true);//是否生成导入接口
+        params.setExport(true);//是否生成导出接口
+        params.setOutMainDir(false);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
+
+    @Test
+    public void gcLanguageCompetence() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("language_competence");//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("szs");//作者名称
+        params.setPackageName("teacher");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(true);//是否生成导入接口
+        params.setExport(true);//是否生成导出接口
+        params.setOutMainDir(false);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
+
+    @Test
+    public void gcFacultyContract() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("faculty_contract");//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("szs");//作者名称
+        params.setPackageName("teacher");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(true);//是否生成导入接口
+        params.setExport(true);//是否生成导出接口
+        params.setOutMainDir(false);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
+
+    @Test
+    public void gcOutsideAssociations() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("outside_associations");//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("szs");//作者名称
+        params.setPackageName("teacher");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(true);//是否生成导入接口
+        params.setExport(true);//是否生成导出接口
+        params.setOutMainDir(false);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
+
+    @Test
+    public void gcCoreTeacher() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("core_teacher");//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("szs");//作者名称
+        params.setPackageName("teacher");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(true);//是否生成导入接口
+        params.setExport(true);//是否生成导出接口
+        params.setOutMainDir(false);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
+
+    @Test
+    public void gcScientificResearch() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("scientific_research");//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("szs");//作者名称
+        params.setPackageName("teacher");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(true);//是否生成导入接口
+        params.setExport(true);//是否生成导出接口
+        params.setOutMainDir(false);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
+
+    @Test
+    public void gcJobInformation() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("job_information");//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("szs");//作者名称
+        params.setPackageName("teacher");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(true);//是否生成导入接口
+        params.setExport(true);//是否生成导出接口
+        params.setOutMainDir(false);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
+
     @Test
     public void gcoBaseClassTeacherChange() throws IOException {
         List<TableConfig> tableConfigs = new ArrayList<>();