32 Commits

Author SHA1 Message Date
d443320b66 辅导员管理修复 修复教师模块权限验证问题
- 为团干部会议佐证材料控制器添加新增权限
- 为班会佐证材料控制器添加新增权限
- 为会议佐证材料控制器添加新增权限
- 为考勤管理控制器添加新增权限
- 为业务工作控制器添加新增权限
- 为个人填报控制器添加新增权限
- 为负面清单控制器添加新增权限
- 为超工作量奖励控制器添加新增权限
- 为学生突发事件控制器添加新增权限
- 为学生管理控制器添加新增权限
- 为学生开展活动控制器添加新增权限
- 为通知任务材料控制器添加新增权限
- 为谈心谈话控制器添加新增权限
- 为职业测评材料控制器添加新增权限
- 为宿舍走访控制器添加新增权限
2026-04-07 16:03:08 +08:00
05a7b006ca 入伍保留学籍导出民族改成中文 2026-04-03 16:07:18 +08:00
79302deb85 Merge remote-tracking branch 'origin/main' 2026-04-03 14:10:29 +08:00
2953a1ba87 fix(flowable): 处理请假天数变量为空的情况
当leaveDays变量为空时,从数据库查询并设置正确的请假天数值
2026-04-03 14:10:20 +08:00
a7a20cd575 外宿申请表单修改 2026-04-03 13:09:21 +08:00
68bddd68a8 Merge remote-tracking branch 'origin/main' 2026-04-02 14:04:38 +08:00
7fa9a37063 fix(flowable): 添加空值检查避免空指针异常
在LeadStartListener和BoStartListener中添加对查询结果的空值检查,防止当查询结果为空时出现空指针异常。同时添加相应的日志警告信息,便于问题排查。
2026-04-02 12:43:22 +08:00
a2d1f746cc 退伍复学-表格下载调整 2026-04-02 09:20:08 +08:00
LWH
4db1272d0a feat(comprehensive): 新增学生信息核对功能模块
- 在 SrsStudentInfoCheck 实体类中添加主键ID、学号字段及基础信息字段
- 添加创建者、创建时间、更新者、更新时间、备注和删除标志等审计字段
- 创建 ISrsStudentInfoCheckService 接口定义学生信息查询和编辑方法
- 实现 SrsStudentInfoCheckServiceImpl 服务类提供学生信息业务逻辑处理
- 开发 SrsStudentInfoCheckController 控制器提供 REST API 接口
- 创建 SrsStudentInfoCheckMapper 数据访问接口和对应的 XML 映射文件
- 实现学生信息的增删改查、列表查询和 Excel 导出功能
- 添加权限控制和操作日志记录功能
2026-04-01 17:37:59 +08:00
6e4c089625 feat(flowable): 添加待办任务数量统计功能
在FlowQueryVo中新增category字段用于流程分类筛选
实现待办任务数量统计接口,支持按分类筛选统计
2026-04-01 14:29:27 +08:00
e78c34c94f fix:修复处分文号报错,将处分文号参数类型从Long改为String
修改了处分文号相关方法的参数类型,从Long改为String,以支持更广泛的文号格式
2026-04-01 11:25:46 +08:00
074f82e34a 退伍复学-电子签名-文件下载联表 2026-03-31 17:44:45 +08:00
d0f2b71585 refactor(vo): 移除请假申请中电话信息敏感信息脱敏注解
移除StuLeaveApplicationDetailsVo中phoneNumber和fatherRelation字段的@Sensitive注解
2026-03-31 11:10:56 +08:00
33e630ddef feat(辅导员KPI填报): 辅导员业绩考核-添加加分项佐证材料支持
在SysTeacherKpiFilling类中新增kpiFillingBonusPointsMaterialsList字段,并在mapper中实现相关查询功能,以支持辅导员KPI填报时加分项佐证材料的存储和查询
2026-03-31 09:57:44 +08:00
fb7d17f6d6 Merge remote-tracking branch 'origin/main'
# Conflicts:
#	srs-admin/src/main/resources/application.yml
2026-03-30 11:08:50 +08:00
7d51f1ddd4 文件上传配置文件路径修复 2026-03-30 11:06:32 +08:00
d24c3cf269 辅导员管理,更改业务需求 2026-03-26 17:18:54 +08:00
ce18d4ca1f 修改pom.xml的文件中maven版本为17 2026-03-25 17:18:18 +08:00
2b4f56753f 修改上传文件路径 2026-03-25 16:48:09 +08:00
ac3e002ce1 辅导员管理-业绩考核-负面清单修改功能代码调整 2026-03-24 16:53:17 +08:00
cda670bcd8 chore(deps): 更新项目依赖版本和Java版本
- 将Spring Boot版本从2.1.1.RELEASE升级到2.5.14
- 将Java版本从1.8升级到17
- 将Maven编译插件版本从3.1升级到3.11.0
- 为Lombok添加注解处理器路径配置
- 格式化maven-compiler-plugin配置使其更清晰
- 移除重复的mybatis-plus-core依赖项
- 更新Lombok版本到1.18.32
2026-03-24 11:29:51 +08:00
44e2938f71 入伍保留学籍-批量插入(辅导员批量申请) 2026-03-20 15:22:09 +08:00
1b9ffef757 入伍保留学籍-批量插入(辅导员批量申请) 2026-03-20 15:20:24 +08:00
2c591aa557 Merge remote-tracking branch 'origin/main' 2026-03-20 11:49:15 +08:00
f99b4621d2 日常事务-处分管理 添加印章图片签名验证功能
- 实现了图片签名工具类ImageSignUtils,支持生成和验证带时间戳的签名URL
- 配置SecurityConfig允许匿名访问签名的印章图片URL,但Base64接口需认证
- 创建StampController提供受保护的印章图片访问接口
- 将应用默认文件路径配置改为Windows环境路径
- 支持通过签名URL安全访问印章图片资源
2026-03-20 11:48:37 +08:00
962704835@qq.com
b4b2dd078a 入伍申请-恢复被覆盖的代码 2026-03-19 19:41:53 +08:00
ae92e4372b 入伍保留学籍申请导出 2026-03-19 16:40:29 +08:00
21e967a72e 退伍复学-企业消息推送 2026-03-19 15:48:00 +08:00
LWH
1e359df1b2 docs(teacher): 更新教师KPI填写控制器注释
- 在SysTeacherKpiFillingBonusPointsController中添加省略号注释
- 在SysTeacherKpiFillingGraduationGuidanceController中添加省略号注释
- 为查询详细信息方法补充文档注释
- 为导出就业指导工作列表方法补充文档注释
2026-03-19 11:36:38 +08:00
LWH
6e13d84802 docs(teacher): 更新教师KPI填写控制器注释
- 在SysTeacherKpiFillingBonusPointsController中添加省略号注释
- 在SysTeacherKpiFillingGraduationGuidanceController中添加省略号注释
- 为查询详细信息方法补充文档注释
- 为导出就业指导工作列表方法补充文档注释
2026-03-19 09:29:54 +08:00
c9c0232664 辅导员管理-业绩考核-初步实现 2026-03-18 17:21:15 +08:00
LWH
2337e6ae5e fix(menu): 解决菜单父ID为空时的空指针异常
- 在比较父菜单ID前添加非空检查
- 防止当菜单记录的parentId字段为null时发生NullPointerException
- 确保菜单树构建逻辑的稳定性
2026-03-18 17:05:20 +08:00
79 changed files with 2440 additions and 416 deletions

View File

@@ -140,6 +140,14 @@ public class DmsOutsideAccommodationApply extends BaseEntity {
@Excel(name = "原宿舍号", readConverterExp = "如=1栋302")
private String originalDormitory;
/**
* 是否保留原床位1=保留,0=不保留)
*/
@ApiModelProperty("是否保留原床位1=保留,0=不保留)")
@TableField("keep_original_bed")
@Excel(name = "是否保留原床位" , readConverterExp = "1==保留,0=不保留")
private Long keepOriginalBed;
/**
* 住宿费缴纳
*/
@@ -164,6 +172,14 @@ public class DmsOutsideAccommodationApply extends BaseEntity {
@Excel(name = "外宿原因")
private String applyReason;
/**
* 外宿条件1=疾病,2=居家,3=其他)
*/
@ApiModelProperty("外宿条件1=疾病,2=居家,3=其他)")
@TableField("outside_condition")
@Excel(name = "外宿条件" , readConverterExp = "1==疾病,2=居家,3=其他")
private Long outsideCondition;
/**
* 外宿详细地址(精确至门牌号)
*/
@@ -220,6 +236,22 @@ public class DmsOutsideAccommodationApply extends BaseEntity {
@Excel(name = "家长联系电话")
private String parentPhone;
/**
* 家长姓名
*/
@ApiModelProperty("家长姓名")
@TableField("parent_name")
@Excel(name = "家长姓名")
private String parentName;
/**
* 家长与学生关系(父亲/母亲/监护人等)
*/
@ApiModelProperty("家长与学生关系(父亲/母亲/监护人等)")
@TableField("parent_relation")
@Excel(name = "家长与学生关系" , readConverterExp = "父=亲/母亲/监护人等")
private String parentRelation;
/**
* 家长通讯地址-省市区/县
*/

View File

@@ -19,9 +19,11 @@
<result property="classId" column="class_id"/>
<result property="className" column="class_name"/>
<result property="originalDormitory" column="original_dormitory"/>
<result property="keepOriginalBed" column="keep_original_bed"/>
<result property="accommodationFee" column="accommodation_fee"/>
<result property="accommodationFeeStatus" column="accommodation_fee_status"/>
<result property="applyReason" column="apply_reason"/>
<result property="outsideCondition" column="outside_condition"/>
<result property="outsideAddress" column="outside_address"/>
<result property="address" column="address"/>
<result property="emergencyPhone" column="emergency_phone"/>
@@ -29,6 +31,8 @@
<result property="parentOpinion" column="parent_opinion"/>
<result property="parentSignAttachment" column="parent_sign_attachment"/>
<result property="parentPhone" column="parent_phone"/>
<result property="parentName" column="parent_name"/>
<result property="parentRelation" column="parent_relation"/>
<result property="parentAddress" column="parent_address"/>
<result property="parentDetailAddress" column="parent_detail_address"/>
<result property="studentPromiseSign" column="student_promise_sign"/>
@@ -138,9 +142,11 @@
class_id,
class_name,
original_dormitory,
keep_original_bed,
accommodation_fee,
accommodation_fee_status,
apply_reason,
outside_condition,
outside_address,
address,
emergency_phone,
@@ -148,6 +154,8 @@
parent_opinion,
parent_sign_attachment,
parent_phone,
parent_name,
parent_relation,
parent_address,
parent_detail_address,
student_promise_sign,
@@ -193,11 +201,13 @@
<if test="originalDormitory != null and originalDormitory != ''">and original_dormitory =
#{originalDormitory}
</if>
<if test="keepOriginalBed != null ">and keep_original_bed = #{keepOriginalBed}</if>
<if test="accommodationFee != null and accommodationFee != ''">and accommodation_fee =
#{accommodationFee}
</if>
<if test="accommodationFeeStatus != null ">and accommodation_fee_status = #{accommodationFeeStatus}</if>
<if test="applyReason != null and applyReason != ''">and apply_reason = #{applyReason}</if>
<if test="outsideCondition != null ">and outside_condition = #{outsideCondition}</if>
<if test="outsideAddress != null and outsideAddress != ''">and outside_address = #{outsideAddress}</if>
<if test="address != null and address != ''">and address = #{address}</if>
<if test="emergencyPhone != null and emergencyPhone != ''">and emergency_phone = #{emergencyPhone}</if>
@@ -209,6 +219,9 @@
#{parentSignAttachment}
</if>
<if test="parentPhone != null and parentPhone != ''">and parent_phone = #{parentPhone}</if>
<if test="parentName != null and parentName != ''">and parent_name like concat('%', #{parentName}, '%')
</if>
<if test="parentRelation != null and parentRelation != ''">and parent_relation = #{parentRelation}</if>
<if test="parentAddress != null and parentAddress != ''">and parent_address = #{parentAddress}</if>
<if test="parentDetailAddress != null and parentDetailAddress != ''">and parent_detail_address =
#{parentDetailAddress}
@@ -235,6 +248,7 @@
<if test="studentSignature != null and studentSignature != ''">and student_signature =
#{studentSignature}
</if>
<if test="promiseContent != null and promiseContent != ''">and promise_content = #{promiseContent}</if>
</where>
</select>
@@ -293,9 +307,11 @@
<if test="classId != null">class_id,</if>
<if test="className != null and className != ''">class_name,</if>
<if test="originalDormitory != null and originalDormitory != ''">original_dormitory,</if>
<if test="keepOriginalBed != null">keep_original_bed,</if>
<if test="accommodationFee != null and accommodationFee != ''">accommodation_fee,</if>
<if test="accommodationFeeStatus != null">accommodation_fee_status,</if>
<if test="applyReason != null and applyReason != ''">apply_reason,</if>
<if test="outsideCondition != null">outside_condition,</if>
<if test="outsideAddress != null and outsideAddress != ''">outside_address,</if>
<if test="address != null and address != ''">address,</if>
<if test="emergencyPhone != null and emergencyPhone != ''">emergency_phone,</if>
@@ -303,6 +319,8 @@
<if test="parentOpinion != null">parent_opinion,</if>
<if test="parentSignAttachment != null and parentSignAttachment != ''">parent_sign_attachment,</if>
<if test="parentPhone != null and parentPhone != ''">parent_phone,</if>
<if test="parentName != null and parentName != ''">parent_name,</if>
<if test="parentRelation != null and parentRelation != ''">parent_relation,</if>
<if test="parentAddress != null and parentAddress != ''">parent_address,</if>
<if test="parentDetailAddress != null and parentDetailAddress != ''">parent_detail_address,</if>
<if test="studentPromiseSign != null and studentPromiseSign != ''">student_promise_sign,</if>
@@ -339,9 +357,11 @@
<if test="classId != null">#{classId},</if>
<if test="className != null and className != ''">#{className},</if>
<if test="originalDormitory != null and originalDormitory != ''">#{originalDormitory},</if>
<if test="keepOriginalBed != null">#{keepOriginalBed},</if>
<if test="accommodationFee != null and accommodationFee != ''">#{accommodationFee},</if>
<if test="accommodationFeeStatus != null">#{accommodationFeeStatus},</if>
<if test="applyReason != null and applyReason != ''">#{applyReason},</if>
<if test="outsideCondition != null">#{outsideCondition},</if>
<if test="outsideAddress != null and outsideAddress != ''">#{outsideAddress},</if>
<if test="address != null and address != ''">#{address},</if>
<if test="emergencyPhone != null and emergencyPhone != ''">#{emergencyPhone},</if>
@@ -349,6 +369,8 @@
<if test="parentOpinion != null">#{parentOpinion},</if>
<if test="parentSignAttachment != null and parentSignAttachment != ''">#{parentSignAttachment},</if>
<if test="parentPhone != null and parentPhone != ''">#{parentPhone},</if>
<if test="parentName != null and parentName != ''">#{parentName},</if>
<if test="parentRelation != null and parentRelation != ''">#{parentRelation},</if>
<if test="parentAddress != null and parentAddress != ''">#{parentAddress},</if>
<if test="parentDetailAddress != null and parentDetailAddress != ''">#{parentDetailAddress},</if>
<if test="studentPromiseSign != null and studentPromiseSign != ''">#{studentPromiseSign},</if>
@@ -391,9 +413,11 @@
<if test="originalDormitory != null and originalDormitory != ''">original_dormitory =
#{originalDormitory},
</if>
<if test="keepOriginalBed != null">keep_original_bed = #{keepOriginalBed},</if>
<if test="accommodationFee != null and accommodationFee != ''">accommodation_fee = #{accommodationFee},</if>
<if test="accommodationFeeStatus != null">accommodation_fee_status = #{accommodationFeeStatus},</if>
<if test="applyReason != null and applyReason != ''">apply_reason = #{applyReason},</if>
<if test="outsideCondition != null">outside_condition = #{outsideCondition},</if>
<if test="outsideAddress != null and outsideAddress != ''">outside_address = #{outsideAddress},</if>
<if test="address != null and address != ''">address = #{address},</if>
<if test="emergencyPhone != null and emergencyPhone != ''">emergency_phone = #{emergencyPhone},</if>
@@ -403,6 +427,8 @@
#{parentSignAttachment},
</if>
<if test="parentPhone != null and parentPhone != ''">parent_phone = #{parentPhone},</if>
<if test="parentName != null and parentName != ''">parent_name = #{parentName},</if>
<if test="parentRelation != null and parentRelation != ''">parent_relation = #{parentRelation},</if>
<if test="parentAddress != null and parentAddress != ''">parent_address = #{parentAddress},</if>
<if test="parentDetailAddress != null and parentDetailAddress != ''">parent_detail_address =
#{parentDetailAddress},

11
pom.xml
View File

@@ -15,7 +15,7 @@
<srs.version>3.8.5</srs.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<java.version>17</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<druid.version>1.2.16</druid.version>
<bitwalker.version>1.21</bitwalker.version>
@@ -234,11 +234,18 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<version>3.11.0</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.32</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>

View File

@@ -195,7 +195,7 @@
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.1.1.RELEASE</version>
<version>2.5.14</version>
<configuration>
<fork>true</fork> <!-- 如果没有该配置devtools不会生效 -->
</configuration>
@@ -215,7 +215,15 @@
<failOnMissingWebXml>false</failOnMissingWebXml>
<warName>${project.artifactId}</warName>
</configuration>
</plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>8</source><target>8</target></configuration></plugin>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
</plugins>
<finalName>${project.artifactId}</finalName>
</build>

View File

@@ -0,0 +1,74 @@
package com.srs.web.controller.common;
import com.srs.common.config.SrsConfig;
import com.srs.common.core.controller.BaseController;
import com.srs.common.core.domain.AjaxResult;
import com.srs.common.utils.sign.ImageSignUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Base64;
/**
* 受保护图片接口
* 提供签名URL的图片访问
*/
@RestController
@RequestMapping("/common/stamp")
@Api(value = "受保护图片管理", tags = "受保护图片管理")
public class StampController extends BaseController {
/**
* 获取印章图片的Base64编码需要登录验证
*/
@GetMapping("/base64")
@ApiOperation("获取印章图片Base64编码")
public AjaxResult getStampBase64() {
String stampPath = SrsConfig.getProfile() + "/stamp/stamp.jpg";
File file = new File(stampPath);
if (!file.exists()) {
return error("印章图片不存在");
}
try (FileInputStream fis = new FileInputStream(file)) {
byte[] bytes = new byte[(int) file.length()];
fis.read(bytes);
String base64 = Base64.getEncoder().encodeToString(bytes);
String dataUrl = "data:image/jpeg;base64," + base64;
return success(dataUrl);
} catch (IOException e) {
return error("读取印章图片失败");
}
}
/**
* 获取印章图片的Base64编码指定文件名
*/
@GetMapping("/base64/{fileName}")
@ApiOperation("获取印章图片Base64编码")
public AjaxResult getStampBase64ByName(@PathVariable String fileName) {
String stampPath = SrsConfig.getProfile() + "/stamp/" + fileName;
File file = new File(stampPath);
if (!file.exists()) {
return error("印章图片不存在");
}
try (FileInputStream fis = new FileInputStream(file)) {
byte[] bytes = new byte[(int) file.length()];
fis.read(bytes);
String base64 = Base64.getEncoder().encodeToString(bytes);
String mimeType = fileName.toLowerCase().endsWith(".png") ? "image/png" : "image/jpeg";
String dataUrl = "data:" + mimeType + ";base64," + base64;
return success(dataUrl);
} catch (IOException e) {
return error("读取印章图片失败");
}
}
}

View File

@@ -0,0 +1,89 @@
package com.srs.web.controller.comprehensive;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
import org.springframework.security.access.prepost.PreAuthorize;
import com.srs.comprehensive.domain.SrsStudentInfoCheck;
import com.srs.comprehensive.service.ISrsStudentInfoCheckService;
import com.srs.common.core.controller.BaseController;
import com.srs.common.core.domain.AjaxResult;
import com.srs.common.enums.BusinessType;
import com.srs.common.annotation.Log;
import com.srs.common.core.page.TableDataInfo;
import com.srs.common.utils.poi.ExcelUtil;
/**
* 学生信息核对 Controller
*
* @author srs
* @date 2024-03-27
*/
@RestController
@RequestMapping("/comprehensive/studentInfo")
@Api(value = "学生信息核对管理", tags = "学生信息核对")
public class SrsStudentInfoCheckController extends BaseController {
@Autowired
private ISrsStudentInfoCheckService srsStudentInfoCheckService;
/**
* 查询学生自己的信息
*/
@GetMapping("/getOwnInfo")
@ApiOperation("查询学生自己的信息")
public AjaxResult getOwnInfo() {
SrsStudentInfoCheck info = srsStudentInfoCheckService.getStuInfo(getUsername());
return AjaxResult.success(info);
}
/**
* 根据学号查询学生信息(辅导员专用)
*/
@GetMapping("/getStuInfoByStuNo")
@ApiOperation("根据学号查询学生信息")
public AjaxResult getStuInfoByStuNo(@RequestParam String stuNo) {
SrsStudentInfoCheck info = srsStudentInfoCheckService.getStuInfo(stuNo);
return AjaxResult.success(info);
}
/**
* 修改学生自己的信息
*/
@PostMapping("/editOwnInfo")
@ApiOperation("修改学生自己的信息")
public AjaxResult editOwnInfo(@RequestBody SrsStudentInfoCheck param) {
if (param.getStuNo() == null || "".equals(param.getStuNo())) {
param.setStuNo(getUsername());
}
return srsStudentInfoCheckService.editStuInfo(param);
}
/**
* 查询学生信息列表(管理端使用)
*/
@PreAuthorize("@ss.hasPermi('comprehensive:studentInfo:list')")
@GetMapping("/list")
@ApiOperation("查询学生信息列表")
public TableDataInfo list(SrsStudentInfoCheck srsStudentInfoCheck) {
startPage();
List<SrsStudentInfoCheck> list = srsStudentInfoCheckService.selectSrsStudentInfoCheckList(srsStudentInfoCheck);
return getDataTable(list);
}
/**
* 导出学生信息列表(管理端使用)
*/
@PreAuthorize("@ss.hasPermi('comprehensive:studentInfo:export')")
@Log(title = "学生信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@ApiOperation("导出学生信息列表")
public void export(HttpServletResponse response, SrsStudentInfoCheck srsStudentInfoCheck) {
List<SrsStudentInfoCheck> list = srsStudentInfoCheckService.selectSrsStudentInfoCheckList(srsStudentInfoCheck);
ExcelUtil<SrsStudentInfoCheck> util = new ExcelUtil<SrsStudentInfoCheck>(SrsStudentInfoCheck.class);
util.exportExcel(response, list, "学生信息数据");
}
}

View File

@@ -58,6 +58,12 @@ public class FlowTaskController {
return flowTaskService.todoList(queryVo);
}
@ApiOperation(value = "获取待办数量统计", response = Integer.class)
@GetMapping(value = "/todoCount")
public AjaxResult todoCount(FlowQueryVo queryVo) {
return flowTaskService.todoCount(queryVo);
}
@ApiOperation(value = "获取已办任务", response = FlowTaskDto.class)
@GetMapping(value = "/finishedList")
public AjaxResult finishedList(FlowQueryVo queryVo) throws Exception {

View File

@@ -1,9 +1,12 @@
package com.srs.web.controller.routine;
import java.util.List;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
import com.srs.dormitory.domain.DmsOutsideAccommodationApply;
import com.srs.routine.domain.dto.RtEnlistmentReserveExportDto;
import com.srs.system.service.ISysDictDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@@ -36,6 +39,9 @@ public class RtEnlistmentReserveController extends BaseController {
@Autowired
private IRtEnlistmentReserveService rtEnlistmentReserveService;
@Autowired
private ISysDictDataService sysDictDataService;
/**
* 查询应征入伍保留学籍申请列表
*/
@@ -56,10 +62,72 @@ public class RtEnlistmentReserveController extends BaseController {
@PostMapping("/export")
@ApiOperation("导出应征入伍保留学籍申请列表")
public void export(HttpServletResponse response, RtEnlistmentReserve rtEnlistmentReserve) {
List<RtEnlistmentReserve> list = rtEnlistmentReserveService.selectRtEnlistmentReserveList(rtEnlistmentReserve);
ExcelUtil<RtEnlistmentReserve> util = new ExcelUtil<RtEnlistmentReserve>(RtEnlistmentReserve.class);
util.exportExcel(response, list, "应征入伍保留学籍申请数据");
// 1. 查询原始数据列表
List<RtEnlistmentReserve> originalList = rtEnlistmentReserveService.selectRtEnlistmentReserveList(rtEnlistmentReserve);
// 2. 转换为导出DTO + 中文值转换
List<RtEnlistmentReserveExportDto> exportList = originalList.stream()
.map(this::convertToExportDto)
.collect(Collectors.toList());
// 3. 导出Excel使用DTO的@Excel注解配置中文表头
ExcelUtil<RtEnlistmentReserveExportDto> util = new ExcelUtil<>(RtEnlistmentReserveExportDto.class);
util.exportExcel(response, exportList, "应征入伍保留学籍申请数据");
}
/**
* 原始实体转换为导出DTO并处理值的中文转换
*/
private RtEnlistmentReserveExportDto convertToExportDto(RtEnlistmentReserve source) {
RtEnlistmentReserveExportDto dto = new RtEnlistmentReserveExportDto();
// 1. 基础字段赋值(一一映射)
dto.setApplyNo(source.getApplyNo());
dto.setTeacherName(source.getTeacherName());
dto.setStudentName(source.getStudentName());
dto.setNation(sysDictDataService.selectDictLabel("rt_nation", source.getNation()));
dto.setGrade(source.getGrade());
dto.setStudentNo(source.getStudentNo());
dto.setClassName(source.getClassName());
dto.setMajor(source.getMajor());
dto.setFamilyAddress(source.getFamilyAddress());
dto.setParentPhone(source.getParentPhone());
dto.setApplyReason(source.getApplyReason());
dto.setReserveNo(source.getReserveNo());
dto.setReserveStartDate(source.getReserveStartDate());
dto.setReserveEndDate(source.getReserveEndDate());
// dto.setApprovalNo(source.getApprovalNo());
// 2. 核心0/1等值转换为中文
// 性别转换1-男 0-女)
if (source.getGender() != null) {
dto.setGender("1".equals(source.getGender()) ? "" : "0".equals(source.getGender()) ? "" : source.getGender());
}
// 申请状态转换0-草稿1=待辅导员审批...7=驳回)
if (source.getApplyStatus() != null) {
dto.setApplyStatus(convertApplyStatus(source.getApplyStatus()));
}
return dto;
}
/**
* 申请状态值转换为中文描述适配String类型
*/
private String convertApplyStatus(Long status) {
return switch (status.intValue()) {
case 0 -> "草稿";
case 1 -> "待辅导员审批";
case 2 -> "待学务审批";
case 3 -> "待二级学院审批";
case 4 -> "待学籍管理科审批";
case 5 -> "待教务处主管领导审批";
case 6 -> "审批通过";
case 7 -> "驳回";
default -> status.toString();
};
}
/**
* 获取应征入伍保留学籍申请详细信息
@@ -92,6 +160,34 @@ public class RtEnlistmentReserveController extends BaseController {
return success(rtEnlistmentReserveService.insertRtEnlistmentReserve(rtEnlistmentReserve));
}
/**
* 批量插入应征入伍预约信息
* @param list 预约信息列表
* @return 插入结果
*/
@PreAuthorize("@ss.hasPermi('routine:enlistmentReserve:add')")
@Log(title = "应征入伍保留学籍申请", businessType = BusinessType.INSERT)
@PostMapping("/batchInsert")
@ApiOperation("新增应征入伍保留学籍申请")
public AjaxResult batchInsert(@RequestBody List<RtEnlistmentReserve> list) {
try {
// 调用批量插入方法
int insertCount = rtEnlistmentReserveService.batchInsertRtEnlistmentReserve(list);
// 若依框架成功返回(带数据)
return AjaxResult.success("批量插入成功,共插入" + insertCount + "条数据", insertCount);
} catch (IllegalArgumentException e) {
// 入参无效异常(如姓名/学号为空)
return AjaxResult.error(e.getMessage());
} catch (RuntimeException e) {
// 重复数据异常
return AjaxResult.error(e.getMessage());
} catch (Exception e) {
// 其他未知异常(若依框架建议记录日志)
logger.error("批量插入应征入伍预约信息失败", e); // 继承BaseController自带logger
return AjaxResult.error("批量插入失败:" + e.getMessage());
}
}
/**
* 修改应征入伍保留学籍申请
*/

View File

@@ -151,6 +151,25 @@ public class RtStuDisciplinaryApplicationController extends BaseController {
util.exportExcel(response, list, "学生处分申请数据");
}
@PostMapping("/importTemplate")
@ApiOperation("下载学生处分导入模板")
public void importTemplate(HttpServletResponse response) {
ExcelUtil<RtStuDisciplinaryApplication> util = new ExcelUtil<RtStuDisciplinaryApplication>(RtStuDisciplinaryApplication.class);
util.importTemplateExcel(response, "学生处分申请数据导入");
}
@Log(title = "学生处分申请", businessType = BusinessType.IMPORT)
@PreAuthorize("@ss.hasPermi('routine:disciplinaryApplication:import')")
@PostMapping("/importData")
@ApiOperation("导入学生处分申请")
public AjaxResult importData(org.springframework.web.multipart.MultipartFile file, boolean updateSupport) throws Exception {
ExcelUtil<RtStuDisciplinaryApplication> util = new ExcelUtil<RtStuDisciplinaryApplication>(RtStuDisciplinaryApplication.class);
// 生成数据
List<RtStuDisciplinaryApplication> list = util.importExcel(file.getInputStream());
String message = rtStuDisciplinaryApplicationService.importDisciplinaryApplication(list, updateSupport);
return success(message);
}
/**
* 获取学生处分申请详细信息
*/

View File

@@ -121,6 +121,24 @@ public class RtStuDisciplinaryRelieveController extends BaseController {
util.exportExcel(response, list, "学生解除处分申请数据");
}
@PostMapping("/importTemplate")
@ApiOperation("下载学生解除处分导入模板")
public void importTemplate(HttpServletResponse response) {
ExcelUtil<RtStuDisciplinaryRelieve> util = new ExcelUtil<RtStuDisciplinaryRelieve>(RtStuDisciplinaryRelieve.class);
util.importTemplateExcel(response, "学生解除处分申请数据导入");
}
@Log(title = "学生解除处分申请", businessType = BusinessType.IMPORT)
@PreAuthorize("@ss.hasPermi('routine:relieve:import')")
@PostMapping("/importData")
@ApiOperation("导入学生解除处分申请")
public AjaxResult importData(org.springframework.web.multipart.MultipartFile file, boolean updateSupport) throws Exception {
ExcelUtil<RtStuDisciplinaryRelieve> util = new ExcelUtil<RtStuDisciplinaryRelieve>(RtStuDisciplinaryRelieve.class);
List<RtStuDisciplinaryRelieve> list = util.importExcel(file.getInputStream());
String message = rtStuDisciplinaryRelieveService.importDisciplinaryRelieve(list, updateSupport);
return success(message);
}
/**
* 获取学生解除处分申请详细信息
*/
@@ -193,7 +211,7 @@ public class RtStuDisciplinaryRelieveController extends BaseController {
@GetMapping("/getPenaltyNumber/{penaltyNumber}")
@ApiOperation("根据处分文号获取处分相关信息")
public AjaxResult getPenaltyNumber(@PathVariable Long penaltyNumber) {
public AjaxResult getPenaltyNumber(@PathVariable String penaltyNumber) {
return success(rtStuDisciplinaryApplicationService.getStuDisciplinaryApplicationByPenaltyNumber(penaltyNumber));
}

View File

@@ -81,13 +81,18 @@ public class SysDisBasicController extends BaseController {
SysDisBasicDao dao = new SysDisBasicDao();
dao.setStId(item.getStId());
dao.setStName(item.getStName());
dao.setCollege(item.getCollege());
dao.setCollegeInfo(item.getCollegeInfo());
dao.setGradeInfo(item.getGradeInfo());
dao.setMajorInfo(item.getMajorInfo());
// dao.setMajors(item.getMajors());
dao.setClassInfo(item.getClassInfo());
// dao.setCollege(item.getCollege());
dao.setSex(item.getSex());
dao.setNations(item.getNations());
dao.setStClass(item.getStClass());
dao.setMajors(item.getMajors());
dao.setGrade(item.getGrade());
dao.setCollege(item.getCollege());
// dao.setStClass(item.getStClass());
// dao.setMajors(item.getMajors());
// dao.setGrade(item.getGrade());
// dao.setCollege(item.getCollege());
dao.setReasons(item.getReasons());
dao.setConversion(item.getConversion());
@@ -104,8 +109,6 @@ public class SysDisBasicController extends BaseController {
for (SysDisMate mate : item.getMaList()){
dao1.setOldgrade(mate.getOldgrade());
dao1.setOldmajor(mate.getOldmajor());
dao1.setNewgrade(mate.getNewgrade());
dao1.setNewmajor(mate.getNewmajor());
dao1.setProof(baseUrl.substring(0,baseUrl.length()-1) + mate.getProof());
dao1.setIdcard(baseUrl.substring(0,baseUrl.length()-1) + mate.getIdcard());
dao1.setMaterial(baseUrl.substring(0,baseUrl.length()-1) + mate.getMaterial());

View File

@@ -93,7 +93,7 @@ public class SysTeacherCadreMeetingMaterialsController extends BaseController {
/**
* 修改团干部会议佐证材料
*/
@PreAuthorize("@ss.hasPermi('teacher:caderMeetingMaterials:edit')")
@PreAuthorize("@ss.hasAnyPermi('teacher:caderMeetingMaterials:edit,teacher:caderMeetingMaterials:add')")
@Log(title = "团干部会议佐证材料", businessType = BusinessType.UPDATE)
@PostMapping("/update")
@ApiOperation("修改团干部会议佐证材料")

View File

@@ -93,7 +93,7 @@ public class SysTeacherClassMeetingMaterialsController extends BaseController {
/**
* 修改班会佐证材料
*/
@PreAuthorize("@ss.hasPermi('teacher:classMeetingMaterials:edit')")
@PreAuthorize("@ss.hasAnyPermi('teacher:classMeetingMaterials:edit,teacher:classMeetingMaterials:add')")
@Log(title = "班会佐证材料", businessType = BusinessType.UPDATE)
@PostMapping("/update")
@ApiOperation("修改班会佐证材料")

View File

@@ -93,7 +93,7 @@ public class SysTeacherConferenceMeetingMaterialsController extends BaseControll
/**
* 修改业绩考核-个人填报-考勤管理-会议佐证材料
*/
@PreAuthorize("@ss.hasPermi('teacher:conferenceMeetingMaterials:edit')")
@PreAuthorize("@ss.hasAnyPermi('teacher:conferenceMeetingMaterials:edit,teacher:conferenceMeetingMaterials:add')")
@Log(title = "业绩考核-个人填报-考勤管理-会议佐证材料", businessType = BusinessType.UPDATE)
@PostMapping("/update")
@ApiOperation("修改业绩考核-个人填报-考勤管理-会议佐证材料")

View File

@@ -94,7 +94,7 @@ public class SysTeacherKpiFillingAMgtController extends BaseController {
/**
* 修改业绩考核-个人填报-考勤管理
*/
@PreAuthorize("@ss.hasPermi('teacher:kpiFillingAMgt:edit')")
@PreAuthorize("@ss.hasAnyPermi('teacher:kpiFillingAMgt:edit,teacher:kpiFillingAMgt:add')")
@Log(title = "业绩考核-个人填报-考勤管理", businessType = BusinessType.UPDATE)
@PostMapping("/update")
@ApiOperation("修改业绩考核-个人填报-考勤管理")

View File

@@ -44,6 +44,7 @@ public class SysTeacherKpiFillingBonusPointsController extends BaseController {
}
/**
* ……
* 根据辅导员名称、年份 月份 查询详细信息
*/
// @PreAuthorize("@ss.hasPermi('teacher:kpiFillingBonusPoints:list')")

View File

@@ -0,0 +1,90 @@
package com.srs.web.controller.teacher;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.srs.common.annotation.Log;
import com.srs.common.annotation.RepeatSubmit;
import com.srs.common.core.controller.BaseController;
import com.srs.common.core.domain.AjaxResult;
import com.srs.common.core.page.TableDataInfo;
import com.srs.common.enums.BusinessType;
import com.srs.common.utils.poi.ExcelUtil;
import com.srs.teacher.domain.SysTeacherKpiFillingBonusPointsMaterials;
import com.srs.teacher.service.ISysTeacherKpiFillingBonusPointsMaterialsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* 业绩考核-个人填报-加分项佐证材料Controller
*
* @author Codex
* @date 2026-03-26
*/
@RestController
@RequestMapping("/teacher/kpiFillingBonusPointsMaterials")
@Api(value = "业绩考核-个人填报-加分项佐证材料管理", tags = "业绩考核-个人填报-加分项佐证材料管理")
public class SysTeacherKpiFillingBonusPointsMaterialsController extends BaseController {
@Autowired
private ISysTeacherKpiFillingBonusPointsMaterialsService materialsService;
@GetMapping("/list")
@ApiOperation("查询业绩考核-个人填报-加分项佐证材料列表")
public TableDataInfo list(SysTeacherKpiFillingBonusPointsMaterials materials) {
startPage();
List<SysTeacherKpiFillingBonusPointsMaterials> list = materialsService.selectSysTeacherKpiFillingBonusPointsMaterialsList(materials);
return getDataTable(list);
}
@GetMapping("/getByFdyNameAndYearAndMonth")
@ApiOperation("根据辅导员姓名、年月查询加分项佐证材料列表")
public TableDataInfo getByFdyNameAndYearAndMonth(@RequestParam String fdyName,
@RequestParam String fillingYear,
@RequestParam String fillingMonth,
@RequestParam(required = false) String classType,
@RequestParam(required = false) String bonusType) {
startPage();
List<SysTeacherKpiFillingBonusPointsMaterials> list = materialsService.selectSysTeacherKpiFillingBonusPointsMaterialsByFdyName(fdyName, fillingYear, fillingMonth, classType, bonusType);
return getDataTable(list);
}
@PostMapping("/export")
@Log(title = "业绩考核-个人填报-加分项佐证材料", businessType = BusinessType.EXPORT)
@ApiOperation("导出业绩考核-个人填报-加分项佐证材料列表")
public void export(HttpServletResponse response, SysTeacherKpiFillingBonusPointsMaterials materials) {
List<SysTeacherKpiFillingBonusPointsMaterials> list = materialsService.selectSysTeacherKpiFillingBonusPointsMaterialsList(materials);
ExcelUtil<SysTeacherKpiFillingBonusPointsMaterials> util = new ExcelUtil<>(SysTeacherKpiFillingBonusPointsMaterials.class);
util.exportExcel(response, list, "业绩考核-个人填报-加分项佐证材料数据");
}
@GetMapping(value = "/{id}")
@ApiOperation("获取业绩考核-个人填报-加分项佐证材料详情")
public AjaxResult getInfo(@PathVariable("id") Long id) {
return success(materialsService.selectSysTeacherKpiFillingBonusPointsMaterialsById(id));
}
@PostMapping("/add")
@Log(title = "业绩考核-个人填报-加分项佐证材料", businessType = BusinessType.INSERT)
@ApiOperation("新增业绩考核-个人填报-加分项佐证材料")
@RepeatSubmit(interval = 1000, message = "请求过于频繁")
public AjaxResult add(@RequestBody SysTeacherKpiFillingBonusPointsMaterials materials) {
return toAjax(materialsService.insertSysTeacherKpiFillingBonusPointsMaterials(materials));
}
@PostMapping("/update")
@Log(title = "业绩考核-个人填报-加分项佐证材料", businessType = BusinessType.UPDATE)
@ApiOperation("修改业绩考核-个人填报-加分项佐证材料")
@RepeatSubmit(interval = 1000, message = "请求过于频繁")
public AjaxResult edit(@RequestBody SysTeacherKpiFillingBonusPointsMaterials materials) {
return toAjax(materialsService.updateSysTeacherKpiFillingBonusPointsMaterials(materials));
}
@PostMapping("/{ids}")
@Log(title = "业绩考核-个人填报-加分项佐证材料", businessType = BusinessType.DELETE)
@ApiOperation("删除业绩考核-个人填报-加分项佐证材料")
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(materialsService.deleteSysTeacherKpiFillingBonusPointsMaterialsByIds(ids));
}
}

View File

@@ -94,7 +94,7 @@ public class SysTeacherKpiFillingBusinessWorkController extends BaseController {
/**
* 修改个人填报-业务工作
*/
@PreAuthorize("@ss.hasPermi('teacher:kpiFillingBusinessWork:edit')")
@PreAuthorize("@ss.hasAnyPermi('teacher:kpiFillingBusinessWork:edit,teacher:kpiFillingBusinessWork:add')")
@Log(title = "个人填报-业务工作", businessType = BusinessType.UPDATE)
@PostMapping("/update")
@ApiOperation("修改个人填报-业务工作")

View File

@@ -151,7 +151,7 @@ public class SysTeacherKpiFillingController extends BaseController {
/**
* 修改业绩考核-个人填报
*/
@PreAuthorize("@ss.hasPermi('teacher:kpiFilling:edit')")
@PreAuthorize("@ss.hasAnyPermi('teacher:kpiFilling:edit,teacher:kpiFilling:add')")
@Log(title = "业绩考核-个人填报", businessType = BusinessType.UPDATE)
@PostMapping("/update")
@ApiOperation("修改业绩考核-个人填报")
@@ -163,7 +163,7 @@ public class SysTeacherKpiFillingController extends BaseController {
/**
* 批量修改业绩考核-个人填报
*/
@PreAuthorize("@ss.hasPermi('teacher:kpiFilling:edit')")
@PreAuthorize("@ss.hasAnyPermi('teacher:kpiFilling:edit,teacher:kpiFilling:add')")
@Log(title = "业绩考核-个人填报", businessType = BusinessType.UPDATE)
@PostMapping("/batchUpdate")
@ApiOperation("批量修改业绩考核-个人填报")

View File

@@ -56,6 +56,7 @@ public class SysTeacherKpiFillingGraduationGuidanceController extends BaseContro
}
/**
* ……
* 导出业绩考核-个人填报-就业指导工作列表
*/
// @PreAuthorize("@ss.hasPermi('teacher:kpiFillingGraduationGuidance:export')")

View File

@@ -94,7 +94,7 @@ public class SysTeacherKpiFillingNegativeListController extends BaseController {
/**
* 修改业绩考核-个人填报-负面清单
*/
@PreAuthorize("@ss.hasPermi('teacher:kpiFillingNegativeList:edit')")
@PreAuthorize("@ss.hasAnyPermi('teacher:kpiFillingNegativeList:edit,teacher:kpiFillingNegativeList:add')")
@Log(title = "业绩考核-个人填报-负面清单", businessType = BusinessType.UPDATE)
@PostMapping("/update")
@ApiOperation("修改业绩考核-个人填报-负面清单")

View File

@@ -94,7 +94,7 @@ public class SysTeacherKpiFillingRewardsKpiController extends BaseController {
/**
* 修改业绩考核-个人填报-超工作量奖励绩效
*/
@PreAuthorize("@ss.hasPermi('teacher:kpiFillingRewardsKpi:edit')")
@PreAuthorize("@ss.hasAnyPermi('teacher:kpiFillingRewardsKpi:edit,teacher:kpiFillingRewardsKpi:add')")
@Log(title = "业绩考核-个人填报-超工作量奖励绩效", businessType = BusinessType.UPDATE)
@PostMapping("/update")
@ApiOperation("修改业绩考核-个人填报-超工作量奖励绩效")

View File

@@ -94,7 +94,7 @@ public class SysTeacherKpiFillingStuEmergencyController extends BaseController {
/**
* 修改业绩考核-个人填报-处理学生突发事件
*/
@PreAuthorize("@ss.hasPermi('teacher:kpiFillingStuEmergency:edit')")
@PreAuthorize("@ss.hasAnyPermi('teacher:kpiFillingStuEmergency:edit,teacher:kpiFillingStuEmergency:add')")
@Log(title = "业绩考核-个人填报-处理学生突发事件", businessType = BusinessType.UPDATE)
@PostMapping("/update")
@ApiOperation("修改业绩考核-个人填报-处理学生突发事件")

View File

@@ -91,7 +91,7 @@ public class SysTeacherKpiFillingStuMgtController extends BaseController {
/**
* 修改业绩考核-个人填报-学生管理
*/
@PreAuthorize("@ss.hasPermi('teacher:teacherKpiFillingMgt:edit')")
@PreAuthorize("@ss.hasAnyPermi('teacher:teacherKpiFillingMgt:edit,teacher:teacherKpiFillingMgt:add')")
@Log(title = "业绩考核-个人填报-学生管理", businessType = BusinessType.UPDATE)
@PostMapping("/update")
@ApiOperation("修改业绩考核-个人填报-学生管理")

View File

@@ -94,7 +94,7 @@ public class SysTeacherStuActivityMaterialsController extends BaseController {
/**
* 修改学生开展活动佐证材料
*/
@PreAuthorize("@ss.hasPermi('teacher:stuActivityMaterials:edit')")
@PreAuthorize("@ss.hasAnyPermi('teacher:stuActivityMaterials:edit,teacher:stuActivityMaterials:add')")
@Log(title = "学生开展活动佐证材料", businessType = BusinessType.UPDATE)
@PostMapping("/update")
@ApiOperation("修改学生开展活动佐证材料")

View File

@@ -93,7 +93,7 @@ public class SysTeacherStuNoticeMaterialsController extends BaseController {
/**
* 修改通知任务材料
*/
@PreAuthorize("@ss.hasPermi('teacher:stuActivityMaterials:edit')")
@PreAuthorize("@ss.hasAnyPermi('teacher:stuActivityMaterials:edit,teacher:stuActivityMaterials:add')")
@Log(title = "通知任务材料", businessType = BusinessType.UPDATE)
@PostMapping("/update")
@ApiOperation("修改通知任务材料")

View File

@@ -94,7 +94,7 @@ public class SysTeacherStuTalkMaterialsController extends BaseController {
/**
* 修改与带班学生谈心谈话
*/
@PreAuthorize("@ss.hasPermi('teacher:stuTalkMaterials:edit')")
@PreAuthorize("@ss.hasAnyPermi('teacher:stuTalkMaterials:edit,teacher:stuTalkMaterials:add')")
@Log(title = "与带班学生谈心谈话", businessType = BusinessType.UPDATE)
@PostMapping("/update")
@ApiOperation("修改与带班学生谈心谈话")

View File

@@ -93,7 +93,7 @@ public class SysTeacherStuTestMaterialsController extends BaseController {
/**
* 修改职业测评材料
*/
@PreAuthorize("@ss.hasPermi('teacher:stuActivityMaterials:edit')")
@PreAuthorize("@ss.hasAnyPermi('teacher:stuActivityMaterials:edit,teacher:stuActivityMaterials:add')")
@Log(title = "职业测评材料", businessType = BusinessType.UPDATE)
@PostMapping("/update")
@ApiOperation("修改职业测评材料")

View File

@@ -94,7 +94,7 @@ public class SysTeacherVisitDormitoryMaterialsController extends BaseController
/**
* 修改每周深入学生宿舍佐证材料
*/
@PreAuthorize("@ss.hasPermi('teacher:visitDormitoryMaterials:edit')")
@PreAuthorize("@ss.hasAnyPermi('teacher:visitDormitoryMaterials:edit,teacher:visitDormitoryMaterials:add')")
@Log(title = "每周深入学生宿舍佐证材料", businessType = BusinessType.UPDATE)
@PostMapping("/update")
@ApiOperation("修改每周深入学生宿舍佐证材料")

View File

@@ -9,7 +9,8 @@ srs:
# 实例演示开关
demoEnabled: true
# 文件路径 示例( Windows配置D:/srs/uploadPath,Linux配置 /home/srs/uploadPath)#D:/srs/uploadPath
profile: /usr/local/java/srs/uploadPath #/usr/local/java/srs/uploadPath
# 后续发布代码,这里路径不能变
profile: /usr/local/java/srs/uploadPath
#profile: D:/srs/uploadPath #/srs/uploadPath
# 获取ip地址开关
addressEnabled: false

View File

@@ -0,0 +1,100 @@
package com.srs.common.utils.sign;
import javax.servlet.http.HttpServletRequest;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.util.Base64;
/**
* 图片签名工具类
* 用于生成和验证图片访问签名URL
*/
public class ImageSignUtils {
private static final String SECRET_KEY = "srs-stamp-secret-key-2024";
private static final long DEFAULT_EXPIRE_TIME = 3 * 60_000; // 3分钟
/**
* 生成签名
*/
public static String generateSign(String fileName, long expireTime) {
String raw = fileName + "-" + expireTime + "-" + SECRET_KEY;
return md5(raw);
}
/**
* 生成带签名的URL
*/
public static String generateSignedUrl(String fileName) {
long expireTime = System.currentTimeMillis() + DEFAULT_EXPIRE_TIME;
String sign = generateSign(fileName, expireTime);
return String.format("/common/stamp/%s?expire=%d&sign=%s",
encodeFileName(fileName), expireTime, sign);
}
/**
* 验证签名是否有效
*/
public static boolean validateSign(String fileName, long expireTime, String sign) {
if (System.currentTimeMillis() > expireTime) {
return false; // 已过期
}
String expectedSign = generateSign(fileName, expireTime);
return expectedSign.equals(sign);
}
/**
* 从请求中提取文件名
*/
public static String extractFileName(HttpServletRequest request) {
String uri = request.getRequestURI();
String fileName = uri.substring(uri.lastIndexOf("/common/stamp/") + 14);
int paramIndex = fileName.indexOf("?");
if (paramIndex > 0) {
fileName = fileName.substring(0, paramIndex);
}
return decodeFileName(fileName);
}
/**
* 验证请求签名
*/
public static boolean validateRequest(HttpServletRequest request) {
String fileName = extractFileName(request);
String expireStr = request.getParameter("expire");
String sign = request.getParameter("sign");
if (fileName == null || expireStr == null || sign == null) {
return false;
}
try {
long expireTime = Long.parseLong(expireStr);
return validateSign(fileName, expireTime, sign);
} catch (NumberFormatException e) {
return false;
}
}
private static String encodeFileName(String fileName) {
return Base64.getUrlEncoder().encodeToString(fileName.getBytes(StandardCharsets.UTF_8));
}
private static String decodeFileName(String encoded) {
return new String(Base64.getUrlDecoder().decode(encoded), StandardCharsets.UTF_8);
}
private static String md5(String input) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] digest = md.digest(input.getBytes(StandardCharsets.UTF_8));
StringBuilder sb = new StringBuilder();
for (byte b : digest) {
sb.append(String.format("%02x", b));
}
return sb.toString();
} catch (Exception e) {
throw new RuntimeException("MD5 calculation failed", e);
}
}
}

View File

@@ -12,13 +12,19 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
public class SrsStudentInfoCheck { @TableField(exist = false)
public class SrsStudentInfoCheck {
@TableField(exist = false)
public String tNo;
@NotNull("银行卡")
public String xhk;
/** 主键 ID */
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/** 学号 */
@TableField("stu_no")
private String stuNo;
/** 生日 */
@NotNull("生日")
@@ -74,68 +80,56 @@ public class SrsStudentInfoCheck { @TableField(exist = false)
/**
* 户口所在地区县以下详细地址
*/
private String hkxxdz;
/**
* 学生居住地址
*/
private String xsjzdz;
/**
* 所属派出所
*/
private String sspcs;
/**
* 所属街道
*/
private String ssjd;
/**
* 乘火车区间
*/
private String chcqj;
/**
* 详细联系地址
*/
private String xxlxdz;
/**
* 邮政编码
*/
private String yzbm;
/**
* 现家庭地址
*/
private String xjtdz;
/**
* 家庭邮政编码
*/
private String jtyzbm;
/**
* 家庭电话
*/
private String jtdh;
/**
* 照片
*/
private String dailyPhoto;
/**
@@ -153,4 +147,34 @@ public class SrsStudentInfoCheck { @TableField(exist = false)
*/
private String bluePhoto;
/**
* 创建者
*/
private String createBy;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新者
*/
private String updateBy;
/**
* 更新时间
*/
private Date updateTime;
/**
* 备注
*/
private String remark;
/**
* 删除标志0 代表存在 1 代表删除)
*/
@TableField("del_flag")
private String delFlag;
}

View File

@@ -0,0 +1,16 @@
package com.srs.comprehensive.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.srs.comprehensive.domain.SrsStudentInfoCheck;
import org.apache.ibatis.annotations.Mapper;
/**
* 学生信息核对 Mapper 接口
*
* @author srs
* @date 2024-03-27
*/
@Mapper
public interface SrsStudentInfoCheckMapper extends BaseMapper<SrsStudentInfoCheck> {
}

View File

@@ -0,0 +1,36 @@
package com.srs.comprehensive.service;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.srs.comprehensive.domain.SrsStudentInfoCheck;
import com.srs.common.core.domain.AjaxResult;
/**
* 学生信息核对 Service 接口
*
* @author srs
* @date 2024-03-27
*/
public interface ISrsStudentInfoCheckService extends IService<SrsStudentInfoCheck> {
/**
* 查询学生信息
* @param stuNo 学号
* @return 学生信息
*/
SrsStudentInfoCheck getStuInfo(String stuNo);
/**
* 修改学生信息
* @param srsStudentInfoCheck 学生信息
* @return 结果
*/
AjaxResult editStuInfo(SrsStudentInfoCheck srsStudentInfoCheck);
/**
* 查询学生信息列表
* @param srsStudentInfoCheck 学生信息
* @return 学生信息集合
*/
List<SrsStudentInfoCheck> selectSrsStudentInfoCheckList(SrsStudentInfoCheck srsStudentInfoCheck);
}

View File

@@ -0,0 +1,93 @@
package com.srs.comprehensive.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.srs.common.core.domain.AjaxResult;
import com.srs.comprehensive.domain.SrsStudentInfoCheck;
import com.srs.comprehensive.mapper.SrsStudentInfoCheckMapper;
import com.srs.comprehensive.service.ISrsStudentInfoCheckService;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.List;
/**
* 学生信息核对 Service 业务层处理
*
* @author srs
* @date 2024-03-27
*/
@Service
public class SrsStudentInfoCheckServiceImpl extends ServiceImpl<SrsStudentInfoCheckMapper, SrsStudentInfoCheck>
implements ISrsStudentInfoCheckService {
/**
* 查询学生信息
* @param stuNo 学号
* @return 学生信息
*/
@Override
public SrsStudentInfoCheck getStuInfo(String stuNo) {
if (!StringUtils.hasText(stuNo)) {
return null;
}
LambdaQueryWrapper<SrsStudentInfoCheck> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SrsStudentInfoCheck::getStuNo, stuNo);
wrapper.eq(SrsStudentInfoCheck::getDelFlag, "0");
return this.getOne(wrapper);
}
/**
* 修改学生信息
* @param srsStudentInfoCheck 学生信息
* @return 结果
*/
@Override
public AjaxResult editStuInfo(SrsStudentInfoCheck srsStudentInfoCheck) {
try {
// 先查询是否存在
SrsStudentInfoCheck existing = getStuInfo(srsStudentInfoCheck.getStuNo());
if (existing != null) {
// 存在则更新
srsStudentInfoCheck.setId(existing.getId());
this.updateById(srsStudentInfoCheck);
} else {
// 不存在则插入
this.save(srsStudentInfoCheck);
}
return AjaxResult.success("修改成功");
} catch (Exception e) {
e.printStackTrace();
return AjaxResult.error("修改失败:" + e.getMessage());
}
}
/**
* 查询学生信息列表
* @param srsStudentInfoCheck 学生信息
* @return 学生信息集合
*/
@Override
public List<SrsStudentInfoCheck> selectSrsStudentInfoCheckList(SrsStudentInfoCheck srsStudentInfoCheck) {
LambdaQueryWrapper<SrsStudentInfoCheck> wrapper = new LambdaQueryWrapper<>();
// 动态查询条件
if (StringUtils.hasText(srsStudentInfoCheck.getStuNo())) {
wrapper.eq(SrsStudentInfoCheck::getStuNo, srsStudentInfoCheck.getStuNo());
}
if (StringUtils.hasText(srsStudentInfoCheck.getMz())) {
wrapper.eq(SrsStudentInfoCheck::getMz, srsStudentInfoCheck.getMz());
}
if (StringUtils.hasText(srsStudentInfoCheck.getZzmm())) {
wrapper.eq(SrsStudentInfoCheck::getZzmm, srsStudentInfoCheck.getZzmm());
}
wrapper.eq(SrsStudentInfoCheck::getDelFlag, "0");
return this.list(wrapper);
}
}

View File

@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.srs.comprehensive.mapper.SrsStudentInfoCheckMapper">
<resultMap type="SrsStudentInfoCheck" id="SrsStudentInfoCheckResult">
<result property="id" column="id" />
<result property="stuNo" column="stu_no" />
<result property="birthday" column="birthday" />
<result property="idCard" column="id_card" />
<result property="phone" column="phone" />
<result property="mz" column="mz" />
<result property="zzmm" column="zzmm" />
<result property="hksz1" column="hksz1" />
<result property="hksz2" column="hksz2" />
<result property="hksz3" column="hksz3" />
<result property="hkszd" column="hkszd" />
<result property="hkxz" column="hkxz" />
<result property="hkxxdz" column="hkxxdz" />
<result property="xsjzdz" column="xsjzdz" />
<result property="sspcs" column="sspcs" />
<result property="ssjd" column="ssjd" />
<result property="chcqj" column="chcqj" />
<result property="xxlxdz" column="xxlxdz" />
<result property="yzbm" column="yzbm" />
<result property="xjtdz" column="xjtdz" />
<result property="jtyzbm" column="jtyzbm" />
<result property="jtdh" column="jtdh" />
<result property="dailyPhoto" column="daily_photo" />
<result property="whitePhoto" column="white_photo" />
<result property="redPhoto" column="red_photo" />
<result property="bluePhoto" column="blue_photo" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
<result property="delFlag" column="del_flag" />
</resultMap>
</mapper>

View File

@@ -35,5 +35,7 @@ public class FlowQueryVo {
@ApiModelProperty("每页条数")
private Integer pageSize;
@ApiModelProperty("流程分类(category)")
private String category;
}

View File

@@ -40,6 +40,9 @@ public class BoStartListener implements ExecutionListener {
// 获取校领导信息
String roleKey = "xldsp"; //角色key
List<TeacherVo> lingDataInfo = leaveMapper.getShenDataInfo(roleKey);
if (lingDataInfo == null || lingDataInfo.isEmpty()) {
log.warn("未找到校领导(roleKey={})信息,跳过学工领导通知。", roleKey);
}
// 设置流程变量
//delegateExecution.setVariable("approval", secondaryLeaderInfo.getUserId());
@@ -52,8 +55,10 @@ public class BoStartListener implements ExecutionListener {
// 步骤 3: 检查是否成功获取到 userName
//向系统发送通知
NotificationManage notificationManage = new NotificationManage();
if (lingDataInfo != null && !lingDataInfo.isEmpty()) {
notificationManage.setContent("您有一条【学工领导已提交请假申请审批】需待处理"); // 消息内容
notificationManage.setReceiver(lingDataInfo.get(0).getUserId());
}
NotificationManage userManage = leaveMapper.selectCphMsgListForFlowable(notificationManage);
if (userManage != null) {
//删除指定通知信息
@@ -62,9 +67,13 @@ public class BoStartListener implements ExecutionListener {
//向学工领导添加通知信息
// 获取二级学院书记信息
List<TeacherVo> secondaryLeaderInfo = leaveMapper.getSecondaryLeaderInfo(deptId);
if (secondaryLeaderInfo == null || secondaryLeaderInfo.isEmpty()) {
log.warn("未找到二级学院书记信息deptId={},跳过通知。", deptId);
} else {
//由于这里查到了多个数据,由于时间原因,暂时还没有研究到工作流中多用户节点的同时进行(所以取了第一条数据用于发消息)
notificationManage.setContent("您有一条【二级学院书记已提交请假申请审批】需待处理"); // 消息内容
notificationManage.setSender(secondaryLeaderInfo.get(0).getUserId()); // 发送方
}
notificationManage.setReceiver(Long.parseLong(approval)); // 接收方
NotificationManage userManages = leaveMapper.selectCphMsgListForFlowable(notificationManage);
if (userManages == null) {

View File

@@ -42,6 +42,10 @@ public class LeadStartListener implements ExecutionListener {
// 获取学工信息
//TeacherVo updateDeptId = leaveMapper.getUpdateDeptId(approval);
List<TeacherVo> updateDeptIdInfo = leaveMapper.getUpdateDeptIdInfo(1045L);
if (updateDeptIdInfo == null || updateDeptIdInfo.isEmpty()) {
log.warn("未找到学工领导信息,跳过审批人设置与通知。");
return;
}
// 设置流程变量
delegateExecution.setVariable("approval", updateDeptIdInfo.get(0).getUserId());

View File

@@ -37,6 +37,16 @@ public class LeaveApproveListener implements ExecutionListener {
// 获取请假天数
BigDecimal leaveDays = (BigDecimal) delegateExecution.getVariable("leaveDays");
if (leaveDays == null) {
String leaveAppId = delegateExecution.getVariable("leaveApplicationId").toString();
if (leaveAppId != null) {
StuLeaveApplication stu = leaveMapper.selectRtStuLeaveApplicationByLeaveApplicationId(leaveAppId);
if (stu != null && stu.getLeaveDays() != null) {
leaveDays = new BigDecimal(stu.getLeaveDays().toString());
delegateExecution.setVariable("leaveDays", leaveDays);
}
}
}
// 请假单id
// 报错信息

View File

@@ -30,6 +30,16 @@ public class LeaveStartApproveListener implements ExecutionListener {
// 获取请假天数
BigDecimal leaveDays = (BigDecimal) delegateExecution.getVariable("leaveDays");
if (leaveDays == null) {
String leaveAppId = delegateExecution.getVariable("leaveApplicationId").toString();
if (leaveAppId != null) {
StuLeaveApplication stu = leaveMapper.selectRtStuLeaveApplicationByLeaveApplicationId(leaveAppId);
if (stu != null && stu.getLeaveDays() != null) {
leaveDays = new BigDecimal(stu.getLeaveDays().toString());
delegateExecution.setVariable("leaveDays", leaveDays);
}
}
}
// 辅导员审批结果
String approval = delegateExecution.getVariable("approval").toString();

View File

@@ -3,10 +3,15 @@ package com.srs.flowable.listener.disbasic;
import com.srs.common.core.domain.entity.SysUser;
import com.srs.common.doman.vo.TeacherVo;
import com.srs.common.utils.DateUtils;
import com.srs.common.utils.SecurityUtils;
import com.srs.common.utils.WeChatUtil;
import com.srs.common.utils.spring.SpringUtils;
import com.srs.flowable.domain.DisBasic;
import com.srs.flowable.domain.NotificationManage;
import com.srs.flowable.mapper.DisBasicMapper;
import com.srs.flowable.mapper.EnlistmentReserveMapper;
import com.srs.flowable.mapper.LeaveMapper;
import com.srs.system.service.ISysUserService;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.bpmn.model.FlowNode;
@@ -76,6 +81,8 @@ public class DiscListener implements ExecutionListener {
execution.setVariable("approval", nextAssigneeId);
execution.setVariable("currentNode", currentNodeName);
}
// ========== 发送通知逻辑 ==========
sendApprovalNotification(execution, currentNodeName, nextAssigneeId, stId);
}
/**
@@ -188,9 +195,6 @@ public class DiscListener implements ExecutionListener {
// 暂时选择学籍管理科第一个人作为审核人
return shenDataInfo.get(0).getUserId();
case "教务处主管":
// 最后一个节点通过后 → 流程结束(无需设置负责人)
List<TeacherVo> teacherVos = sysDisBasicMapper.getShenDataInfo("教务处主管领导");
@@ -207,4 +211,92 @@ public class DiscListener implements ExecutionListener {
}
}
/**
* 发送审批通知(系统通知+企业微信通知)
* 适配DisBasic退伍复学业务场景
*/
private void sendApprovalNotification(DelegateExecution execution, String currentNodeName,
Long nextAssigneeId, Long basicId) {
try {
// 1. 获取需要的Mapper和工具类通过SpringUtils获取避免Autowired循环依赖
LeaveMapper leaveMapper = (LeaveMapper) SpringUtils.getBean("leaveMapper");
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class);
// 2. 查询退伍复学申请详情
DisBasicMapper disBasicMapper = (DisBasicMapper) SpringUtils.getBean(DisBasicMapper.class);
DisBasic disBasic = disBasicMapper.selectSysDisBasicById(basicId);
if (disBasic == null) {
log.warn("未找到退伍复学申请记录basicId:{}", basicId);
return;
}
// 3. 查询下一个审批人的信息
SysUser nextApprover = sysUserService.selectUserById(nextAssigneeId);
if (nextApprover == null) {
log.warn("未找到审批人信息用户ID:{}", nextAssigneeId);
return;
}
String approverUserName = nextApprover.getUserName(); // 审批人工号/用户名
String approverName = nextApprover.getNickName(); // 审批人姓名
log.info("开始发送【退伍复学审批】通知,审批节点:{},审批人:{}({})申请ID{}",
currentNodeName, approverName, approverUserName, basicId);
// 4. 处理系统通知(先删后加,避免重复通知)
NotificationManage notificationManage = new NotificationManage();
notificationManage.setContent(String.format("您有一条【退伍复学审批】待处理(节点:%s", currentNodeName));
notificationManage.setReceiver(nextAssigneeId); // 接收人:下一个审批人
// 4.1 查询是否已有相同通知,有则删除
NotificationManage existNotify = leaveMapper.selectCphMsgListForFlowable(notificationManage);
if (existNotify != null) {
int delRes = leaveMapper.deleteCphMsgById(existNotify.getId());
log.info("删除重复的系统通知通知ID:{},删除结果:{}", existNotify.getId(), delRes);
}
// 4.2 添加新的系统通知
notificationManage.setSender(SecurityUtils.getUserId()); // 发送人:当前操作人
notificationManage.setCreateTime(DateUtils.getNowDate()); // 创建时间
int addRes = leaveMapper.insertCphMsg(notificationManage);
log.info("新增系统通知成功接收人ID:{},添加结果:{}", nextAssigneeId, addRes);
// 5. 企业微信推送消息(带超链接)
if (approverUserName != null && !approverUserName.isEmpty()) {
String weChatContent = String.format(
"您有一条【退伍复学审批】待处理(节点:%s<a href='https://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>",
currentNodeName
);
weChatUtil.sendTextMessage(approverUserName, weChatContent);
log.info("企业微信通知发送成功,接收人工号:{},节点:{}申请ID{}", approverUserName, currentNodeName, basicId);
} else {
log.warn("审批人工号为空无法发送企业微信通知用户ID:{}申请ID{}", nextAssigneeId, basicId);
}
// 6. 删除当前审批人的待处理通知(清理已处理的待办)
Long currentApproverId = SecurityUtils.getUserId();
if (currentApproverId == null) {
log.warn("当前审批人ID为空无法删除其待处理通知申请ID{}", basicId);
return;
}
NotificationManage currentNotifyQuery = new NotificationManage();
currentNotifyQuery.setContent(String.format("您有一条【退伍复学审批】待处理(节点:%s", currentNodeName));
currentNotifyQuery.setReceiver(currentApproverId);
NotificationManage currentExistNotify = leaveMapper.selectCphMsgListForFlowable(currentNotifyQuery);
if (currentExistNotify != null) {
int currentDelRes = leaveMapper.deleteCphMsgById(currentExistNotify.getId());
log.info("删除当前审批人({})的【{}】待处理通知通知ID:{},删除结果:{}申请ID{}",
currentApproverId, currentNodeName, currentExistNotify.getId(), currentDelRes, basicId);
} else {
log.info("当前审批人({})无【{}】节点的待处理通知无需删除申请ID{}", currentApproverId, currentNodeName, basicId);
}
} catch (Exception e) {
// 捕获所有异常,仅记录日志,不影响主流程
log.error("发送退伍复学审批通知失败,节点:{}审批人ID{}申请ID{},错误信息:{}",
currentNodeName, nextAssigneeId, basicId, e.getMessage(), e);
}
}
}

View File

@@ -130,6 +130,14 @@ public interface IFlowTaskService {
*/
AjaxResult todoList(FlowQueryVo queryVo);
/**
* 待办任务数量统计
*
* @param queryVo 请求参数
* @return
*/
AjaxResult todoCount(FlowQueryVo queryVo);
/**
* 已办任务列表

View File

@@ -785,6 +785,40 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
return AjaxResult.success(page);
}
/**
* 待办任务数量统计
*
* @param queryVo 请求参数
* @return
*/
@Override
public AjaxResult todoCount(FlowQueryVo queryVo) {
SysUser sysUser = SecurityUtils.getLoginUser().getUser();
TaskQuery taskQuery = taskService.createTaskQuery()
.active()
.includeProcessVariables()
.taskCandidateGroupIn(sysUser.getRoles().stream().map(role -> role.getRoleId().toString()).collect(Collectors.toList()))
.taskCandidateOrAssigned(sysUser.getUserId().toString())
.orderByTaskCreateTime().desc();
List<Task> taskList = taskQuery.list();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
int count = 0;
for (Task task : taskList) {
ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
.processDefinitionId(task.getProcessDefinitionId())
.singleResult();
String category = pd.getCategory();
if (org.apache.commons.lang3.StringUtils.isNotBlank(queryVo.getCategory())) {
if (!queryVo.getCategory().equals(category)) {
continue;
}
}
count++;
}
return AjaxResult.success(count);
}
/**
* 已办任务列表

View File

@@ -140,6 +140,10 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
// 静态资源,可匿名访问
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
.antMatchers("/swagger-ui.html", "doc.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
// 签名的印章图片URL可匿名访问签名验证
.antMatchers(HttpMethod.GET, "/common/stamp/**").permitAll()
// Base64接口需要认证
.antMatchers(HttpMethod.GET, "/common/stamp/base64/**").authenticated()
// 除上面外的所有请求全部需要鉴权认证
.anyRequest().authenticated()
.and()
@@ -172,6 +176,10 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
// 静态资源,可匿名访问
.antMatchers(HttpMethod.GET, "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
.antMatchers("/swagger-ui.html", "doc.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
// 签名的印章图片URL可匿名访问签名验证
.antMatchers(HttpMethod.GET, "/common/stamp/**").permitAll()
// Base64接口需要认证
.antMatchers(HttpMethod.GET, "/common/stamp/base64/**").authenticated()
// 除上面外的所有请求全部需要鉴权认证
.anyRequest().authenticated()
.and()

View File

@@ -2,6 +2,7 @@ package com.srs.routine.domain;
import com.srs.common.annotation.Excel;
import com.baomidou.mybatisplus.annotation.*;
import com.srs.comprehensive.domain.SrsStudent;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
@@ -393,6 +394,86 @@ private static final long serialVersionUID=1L;
@Excel(name = "保留字段2")
private String testTest;
/**
* 招就处电子签名
*/
@ApiModelProperty("招就处电子签名")
@TableField("zs_qmd")
@Excel(name = "招就处电子签名")
private String zsQmd;
/**
* 辅导员电子签名
*/
@ApiModelProperty("辅导员电子签名")
@TableField("fd_qmd")
@Excel(name = "辅导员电子签名")
private String fdQmd;
/**
* 学务电子签名
*/
@ApiModelProperty("学务电子签名")
@TableField("xw_qmd")
@Excel(name = "学务电子签名")
private String xwQmd;
/**
* 二级学院电子签名
*/
@ApiModelProperty("二级学院电子签名")
@TableField("rj_qmd")
@Excel(name = "二级学院电子签名")
private String rjQmd;
/**
* 学籍管理电子签名
*/
@ApiModelProperty("学籍管理电子签名")
@TableField("xj_qmd")
@Excel(name = "学籍管理电子签名")
private String xjQmd;
/**
* 教务处电子签名
*/
@ApiModelProperty("教务处电子签名")
@TableField("jwc_qmd")
@Excel(name = "教务处电子签名")
private String jwcQmd;
/**
* 学院信息
*/
@ApiModelProperty("学院信息")
@TableField("college_info")
@Excel(name = "学院信息")
private String collegeInfo;
/**
* 年级信息
*/
@ApiModelProperty("年级信息")
@TableField("grade_info")
@Excel(name = "年级信息")
private String gradeInfo;
/**
* 专业信息
*/
@ApiModelProperty("专业信息")
@TableField("major_info")
@Excel(name = "专业信息")
private String majorInfo;
/**
* 班级信息
*/
@ApiModelProperty("班级信息")
@TableField("class_info")
@Excel(name = "班级信息")
private String classInfo;
/**
* 退伍复学-填报材料
*/
@@ -400,4 +481,11 @@ private static final long serialVersionUID=1L;
@Excel(name = "退伍复学-填报材料")
private List<SysDisMate> MaList;
/**
* 退伍复学-填报材料
*/
@ApiModelProperty(value = "退伍复学-填报材料", hidden = true)
@Excel(name = "退伍复学-填报材料")
private List<SrsStudent> StuList;
}

View File

@@ -13,7 +13,7 @@ import com.srs.common.core.domain.BaseEntity;
* 退伍复学材料对象 sys_dis_mate
*
* @author srs
* @date 2026-03-01
* @date 2026-04-01
*/
@Data
@EqualsAndHashCode(callSuper = true)
@@ -168,5 +168,53 @@ private static final long serialVersionUID=1L;
@Excel(name = "保留字段")
private String finallabel;
/**
* 学院信息
*/
@ApiModelProperty("学院信息")
@TableField("college_info")
@Excel(name = "学院信息")
private String collegeInfo;
/**
* 年级信息
*/
@ApiModelProperty("年级信息")
@TableField("grade_info")
@Excel(name = "年级信息")
private String gradeInfo;
/**
* 班级信息
*/
@ApiModelProperty("班级信息")
@TableField("major_info")
@Excel(name = "班级信息")
private String majorInfo;
/**
* 班级信息
*/
@ApiModelProperty("班级信息")
@TableField("class_info")
@Excel(name = "班级信息")
private String classInfo;
/**
* $column.columnComment
*/
@ApiModelProperty("${column.columnComment}")
@TableField("test_data")
@Excel(name = "${comment}" , readConverterExp = "$column.readConverterExp()")
private String testData;
/**
* $column.columnComment
*/
@ApiModelProperty("${column.columnComment}")
@TableField("test_save")
@Excel(name = "${comment}" , readConverterExp = "$column.readConverterExp()")
private String testSave;
}

View File

@@ -0,0 +1,129 @@
package com.srs.routine.domain.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.srs.common.annotation.Excel;
import lombok.Data;
import java.util.Date;
// 入伍申请导出专用DTO只包含需要导出的字段
@Data
public class RtEnlistmentReserveExportDto {
/**
* 申请编号规则RY+年份+6位序号如RY2024000001
*/
@Excel(name = "申请编号")
private String applyNo;
/**
* 姓名
*/
@Excel(name = "学生姓名")
private String studentName;
/**
* 学号
*/
@Excel(name = "学号")
private String studentNo;
/**
* 性别0-男
*/
@Excel(name = "性别")
private String gender;
/**
* 民族
*/
@Excel(name = "民族")
private String nation;
/**
* 年级
*/
@Excel(name = "年级")
private String grade;
/**
* 班级
*/
@Excel(name = "班级")
private String className;
/**
* 专业名称
*/
@Excel(name = "专业名称")
private String major;
/**
* 辅导员姓名
*/
@Excel(name = "辅导员姓名")
private String teacherName;
/**
* 家庭地址
*/
@Excel(name = "家庭地址")
private String familyAddress;
/**
* 家长联系电话
*/
@Excel(name = "家长联系电话")
private String parentPhone;
/**
* 申请理由(含入伍时间、服役期限)
*/
@Excel(name = "申请理由")
private String applyReason;
/**
* 申请状态0-草稿1=待辅导员审批2=待学务审批3=待二级学院审批4=待学籍管理科审批5=待教务处主管领导审批6=审批通过7=驳回)
*/
@Excel(name = "申请状态")
private String applyStatus;
/**
* 保留学籍编号(审批通过后生成)
*/
@Excel(name = "保留学籍编号")
private String reserveNo;
/**
* 保留学籍开始日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "保留学籍开始日期" , width = 30, dateFormat = "yyyy-MM-dd")
private Date reserveStartDate;
/**
* 保留学籍结束日期(入伍时间+服役期限)
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "保留学籍结束日期" , width = 30, dateFormat = "yyyy-MM-dd")
private Date reserveEndDate;
// /**
// * 批文号
// */
// @Excel(name = "批文号")
// private String approvalNo;
// @JsonFormat(pattern = "yyyy-MM-dd")
// private Date createTime;
//
// @JsonFormat(pattern = "yyyy-MM-dd")
// private Date updateTime;
}

View File

@@ -29,20 +29,6 @@ public class SysDisBasicDao{
@Excel(name = "序号",isSeq = true)
private Long seq;
// /**
// * 复学流程ID
// */
// @ApiModelProperty("复学流程ID")
// @Excel(name = "复学流程ID")
// private String fxId;
//
// /**
// * 流程申请时间
// */
// @ApiModelProperty("流程申请时间")
// @Excel(name = "流程申请时间")
// private String fxTime;
/**
* 学号
*/
@@ -57,17 +43,10 @@ public class SysDisBasicDao{
@Excel(name = "姓名")
private String stName;
@ApiModelProperty("学院")
@Excel(name = "学院")
private String college;
/**
* 辅导员名字
*/
// @ApiModelProperty("辅导员名字")
// @Excel(name = "辅导员名字")
// private String fdName;
//
// @ApiModelProperty("学院")
// @Excel(name = "学院")
// private String college;
/**
* 性别
@@ -84,60 +63,25 @@ public class SysDisBasicDao{
private String nations;
// /**
// * $column.columnComment
// * 班级
// */
// @ApiModelProperty("${column.columnComment}")
// @Excel(name = "辅导员签名" , readConverterExp = "$column.readConverterExp()")
// private String fdQm;
//
// @ApiModelProperty("班级")
// @Excel(name = "班级")
// private String stClass;
// /**
// * $column.columnComment
// * 专业
// */
// @ApiModelProperty("${column.columnComment}")
// @Excel(name = "学务签名" , readConverterExp = "$column.readConverterExp()")
// private String xwQm;
//
// /**
// * $column.columnComment
// */
// @ApiModelProperty("${column.columnComment}")
// @Excel(name = "二级学院签名" , readConverterExp = "$column.readConverterExp()")
// private String erQm;
//
// /**
// * $column.columnComment
// */
// @ApiModelProperty("${column.columnComment}")
// @Excel(name = "学籍管理签名" , readConverterExp = "$column.readConverterExp()")
// private String xjQm;
//
// /**
// * $column.columnComment
// */
// @ApiModelProperty("${column.columnComment}")
// @Excel(name = "教务签名" , readConverterExp = "$column.readConverterExp()")
// private String jwQm;
// @ApiModelProperty("专业")
// @Excel(name = "专业")
// private String majors;
/**
*
*/
@ApiModelProperty("班级")
@Excel(name = "班级")
private String stClass;
/**
* 专业
*/
@ApiModelProperty("专业")
@Excel(name = "专业")
private String majors;
/**
* 年级
*/
@ApiModelProperty("年级")
@Excel(name = "年级")
private String grade;
// *
// */
// @ApiModelProperty("年级")
// @Excel(name = "年级")
// private String grade;
/**
* 学院
@@ -151,181 +95,6 @@ public class SysDisBasicDao{
@Excel(name = "原因")
private String reasons;
// /**
// * 辅导员意见
// */
// @ApiModelProperty("辅导员意见")
// @TableField("fd_idea")
// @Excel(name = "辅导员意见")
// private String fdIdea;
//
// /**
// * 二级学院意见
// */
// @ApiModelProperty("二级学院意见")
// @TableField("two_idea")
// @Excel(name = "二级学院意见")
// private String twoIdea;
//
// /**
// * 学务意见
// */
// @ApiModelProperty("学务意见")
// @TableField("xw_idea")
// @Excel(name = "学务意见")
// private String xwIdea;
//
// /**
// * 学籍管理意见
// */
// @ApiModelProperty("学籍管理意见")
// @TableField("xj_idea")
// @Excel(name = "学籍管理意见")
// private String xjIdea;
//
// /**
// * 教务处意见
// */
// @ApiModelProperty("教务处意见")
// @TableField("jw_idea")
// @Excel(name = "教务处意见")
// private String jwIdea;
//
// /**
// * 招生意见
// */
// @ApiModelProperty("招生意见")
// @TableField("zs_idea")
// @Excel(name = "招生意见")
// private String zsIdea;
//
// /**
// * 招生就业
// */
// @ApiModelProperty("招生就业")
// @TableField("zs_status")
// @Excel(name = "招生就业")
// private String zsStatus;
//
// /**
// * 时间
// */
// @ApiModelProperty("时间")
// @TableField("times")
// @Excel(name = "时间")
// private String times;
//
// /**
// * 辅导员审核状态
// */
// @ApiModelProperty("辅导员审核状态")
// @TableField("fd_status")
// @Excel(name = "辅导员审核状态")
// private String fdStatus;
//
// /**
// *
// */
// @ApiModelProperty("")
// @TableField("xw_status")
// @Excel(name = "学务审核状态")
// private String xwStatus;
//
// /**
// * 二级学院审核状态
// */
// @ApiModelProperty("二级学院审核状态")
// @TableField("two_status")
// @Excel(name = "二级学院审核状态")
// private String twoStatus;
//
// /**
// * 学籍管理审核状态
// */
// @ApiModelProperty("学籍管理审核状态")
// @TableField("xjgl_status")
// @Excel(name = "学籍管理审核状态")
// private String xjglStatus;
//
// /**
// * 教务审核状态
// */
// @ApiModelProperty("教务审核状态")
// @TableField("jw_status")
// @Excel(name = "教务审核状态")
// private String jwStatus;
//
// /**
// * 退伍审核时间
// */
// @ApiModelProperty("退伍审核时间")
// @TableField("rw_time")
// @Excel(name = "退伍审核时间")
// private String rwTime;
//
// /**
// * 招生审核时间
// */
// @ApiModelProperty("招生审核时间")
// @TableField("zs_time")
// @Excel(name = "招生审核时间")
// private String zsTime;
//
// /**
// * 辅导员
// */
// @ApiModelProperty("辅导员")
// @TableField("fd_time")
// @Excel(name = "辅导员")
// private String fdTime;
//
// /**
// * 学务审核
// */
// @ApiModelProperty("学务审核")
// @TableField("xw_time")
// @Excel(name = "学务审核")
// private String xwTime;
//
// /**
// * 二时间
// */
// @ApiModelProperty("二时间")
// @TableField("two_time")
// @Excel(name = "二时间")
// private String twoTime;
//
// /**
// * 学籍时间
// */
// @ApiModelProperty("学籍时间")
// @TableField("xj_time")
// @Excel(name = "学籍时间")
// private String xjTime;
//
// /**
// * 教务审核时间
// */
// @ApiModelProperty("教务审核时间")
// @TableField("jw_time")
// @Excel(name = "教务审核时间")
// private String jwTime;
//
// /**
// * 空余字段
// */
// @ApiModelProperty("空余字段")
// @TableField("datab")
// @Excel(name = "空余字段")
// private String datab;
//
// /**
// *
// */
// @ApiModelProperty("")
// @TableField("dataa")
// @Excel(name = "")
// private String dataa;
/**
* 专业转换
@@ -334,28 +103,35 @@ public class SysDisBasicDao{
@Excel(name = "专业转换")
private String conversion;
// /**
// * 流程实例ID
// */
// @ApiModelProperty("流程实例ID")
// @TableField("process_id")
// @Excel(name = "流程实例ID")
// private String processId;
@ApiModelProperty("学院信息")
@TableField("college_info")
@Excel(name = "新学院信息")
private String collegeInfo;
// /**
// * 流程部署编号
// */
// @ApiModelProperty("流程部署编号")
// @TableField("deploy_id")
// @Excel(name = "流程部署编号")
// private String deployId;
/**
* 年级信息
*/
@ApiModelProperty("年级信息")
@TableField("grade_info")
@Excel(name = "新年级信息")
private String gradeInfo;
/**
* 专业信息
*/
@ApiModelProperty("专业信息")
@TableField("major_info")
@Excel(name = "新专业信息")
private String majorInfo;
/**
* 班级信息
*/
@ApiModelProperty("班级信息")
@TableField("class_info")
@Excel(name = "新班级信息")
private String classInfo;
// /**
// * 退伍复学-填报材料
// */
// @ApiModelProperty(value = "退伍复学-填报材料", hidden = true)
// @Excel(name = "退伍复学-填报材料")
// private List<SysDisMate> MaList;
}

View File

@@ -24,13 +24,15 @@ public class SysDisMateDao {
/**
*
*/
@Excel(name = "序号",isSeq = true)
private Long seq;
@ApiModelProperty("")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 学号
*/
@ApiModelProperty("学号")
@TableField("st_id")
@Excel(name = "学号")
private String stId;
@@ -38,28 +40,23 @@ public class SysDisMateDao {
* 姓名
*/
@ApiModelProperty("姓名")
@TableField("st_name")
@Excel(name = "姓名")
private String stName;
@ApiModelProperty("学院")
@Excel(name = "学院")
private String college;
/**
* 时间
*/
// @ApiModelProperty("时间")
// @Excel(name = "时间")
// private String times;
/**
* 学院
*/
@ApiModelProperty("原学院")
@TableField("college")
@Excel(name = "原学院")
private String college;
/**
* 原年级
*/
@ApiModelProperty("原年级")
@TableField("oldgrade")
@Excel(name = "原年级")
private String oldgrade;
@@ -67,27 +64,31 @@ public class SysDisMateDao {
* 原专业
*/
@ApiModelProperty("原专业")
@TableField("oldmajor")
@Excel(name = "原专业")
private String oldmajor;
/**
* 新年级
*/
@ApiModelProperty("新年级")
@Excel(name = "新年级")
private String newgrade;
/**
* 新专业
*/
@ApiModelProperty("新专业")
@Excel(name = "新专业")
private String newmajor;
//
// /**
// * 新年级
// */
// @ApiModelProperty("新年级")
// @TableField("newgrade")
// @Excel(name = "新年级")
// private String newgrade;
//
// /**
// * 新班级
// */
// @ApiModelProperty("新班级")
// @TableField("newmajor")
// @Excel(name = "新班级")
// private String newmajor;
/**
* 退役证明
*/
@ApiModelProperty("退役证明")
@TableField("proof")
@Excel(name = "退役证明")
private String proof;
@@ -95,6 +96,7 @@ public class SysDisMateDao {
* 身份证
*/
@ApiModelProperty("身份证")
@TableField("idcard")
@Excel(name = "身份证")
private String idcard;
@@ -102,24 +104,91 @@ public class SysDisMateDao {
* 材料
*/
@ApiModelProperty("材料")
@TableField("material")
@Excel(name = "材料")
private String material;
// /**
// * 最终专业1
// */
// @ApiModelProperty("最终专业1")
// @TableField("finaldata1")
// @Excel(name = "最终专业1")
// private String finaldata1;
//
// /**
// * 保留字段1
// * 最终专业1
// */
// @ApiModelProperty("保留字段1")
// @TableField("data1")
// @Excel(name = "保留字段1")
// private String data1;
// @ApiModelProperty("最终专业1")
// @TableField("finaldata2")
// @Excel(name = "最终专业1")
// private String finaldata2;
//
// /**
// * 保留字段2
// * 最终年级
// */
// @ApiModelProperty("保留字段2")
// @TableField("data2")
// @Excel(name = "保留字段2")
// private String data2;
// @ApiModelProperty("最终年级")
// @TableField("finalmajor")
// @Excel(name = "最终年级")
// private String finalmajor;
//
// /**
// * 保留字段
// */
// @ApiModelProperty("保留字段")
// @TableField("finallabel")
// @Excel(name = "保留字段")
// private String finallabel;
// /**
// * 学院信息
// */
// @ApiModelProperty("学院信息")
// @TableField("college_info")
// @Excel(name = "学院信息")
// private String collegeInfo;
//
// /**
// * 年级信息
// */
// @ApiModelProperty("年级信息")
// @TableField("grade_info")
// @Excel(name = "年级信息")
// private String gradeInfo;
//
// /**
// * 班级信息
// */
// @ApiModelProperty("班级信息")
// @TableField("major_info")
// @Excel(name = "班级信息")
// private String majorInfo;
//
// /**
// * 班级信息
// */
// @ApiModelProperty("班级信息")
// @TableField("class_info")
// @Excel(name = "班级信息")
// private String classInfo;
// /**
// * $column.columnComment
// */
// @ApiModelProperty("${column.columnComment}")
// @TableField("test_data")
// @Excel(name = "${comment}" , readConverterExp = "$column.readConverterExp()")
// private String testData;
//
// /**
// * $column.columnComment
// */
// @ApiModelProperty("${column.columnComment}")
// @TableField("test_save")
// @Excel(name = "${comment}" , readConverterExp = "$column.readConverterExp()")
// private String testSave;
}

View File

@@ -37,14 +37,12 @@ public class StuLeaveApplicationDetailsVo implements Serializable {
private String className;
@ApiModelProperty("联系电话")
@Sensitive(desensitizedType = DesensitizedType.PHONE)
private String phoneNumber;
@ApiModelProperty("父亲姓名")
private String fatherName;
@ApiModelProperty("父亲联系电话")
@Sensitive(desensitizedType = DesensitizedType.PHONE)
private String fatherRelation;
@ApiModelProperty("请假事由")

View File

@@ -31,6 +31,7 @@ public interface RtEnlistmentReserveMapper extends BaseMapper<RtEnlistmentReserv
*/
public RtEnlistmentReserve selectRtEnlistmentReserveByProcessInstanceId(String processInstanceId);
/**
* 查询应征入伍保留学籍申请
*
@@ -62,6 +63,20 @@ public interface RtEnlistmentReserveMapper extends BaseMapper<RtEnlistmentReserv
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
int insertRtEnlistmentReserve(RtEnlistmentReserve rtEnlistmentReserve);
/**
* 批量插入应征入伍预约信息
* @param list 应征入伍预约信息列表
* @return 插入成功的记录数
*/
int batchInsertRtEnlistmentReserve(List<RtEnlistmentReserve> list);
/**
* 查询数据库中已存在的学生(姓名+学号拼接)
* @param list 待插入的学生列表
* @return 已存在的学生标识格式姓名_学号
*/
List<String> selectExistStudents(List<RtEnlistmentReserve> list);
/**
* Mapper接口方法统计指定年份的保留学籍记录数
* @param year 年份如2026

View File

@@ -85,7 +85,7 @@ public interface RtStuDisciplinaryApplicationMapper extends BaseMapper<RtStuDisc
* @param penaltyNumber
* @return
*/
StuDisciplinaryPenaltyNumber selectStuDisciplinaryApplicationByPenaltyNumber(Long penaltyNumber);
StuDisciplinaryPenaltyNumber selectStuDisciplinaryApplicationByPenaltyNumber(String penaltyNumber);
/**
* 学务查询数据

View File

@@ -45,6 +45,13 @@ public interface IRtEnlistmentReserveService extends IService<RtEnlistmentReserv
*/
RtEnlistmentReserve insertRtEnlistmentReserve(RtEnlistmentReserve rtEnlistmentReserve);
/**
* 批量插入应征入伍预约信息
* @param list 应征入伍预约信息列表
* @return 插入成功的记录数
*/
int batchInsertRtEnlistmentReserve(List<RtEnlistmentReserve> list);
/**
* 修改应征入伍保留学籍申请
*

View File

@@ -70,6 +70,15 @@ public interface IRtStuDisciplinaryApplicationService extends IService<RtStuDisc
*/
int deleteRtStuDisciplinaryApplicationByApplicationId(Long applicationId);
/**
* 导入学生处分申请数据
*
* @param list 数据列表
* @param updateSupport 是否更新现有数据
* @return 结果
*/
String importDisciplinaryApplication(List<RtStuDisciplinaryApplication> list, boolean updateSupport);
/**
* 根据流程实例id获取学生处分申请
* @param procInsId
@@ -91,7 +100,7 @@ public interface IRtStuDisciplinaryApplicationService extends IService<RtStuDisc
* @param penaltyNumber
* @return
*/
StuDisciplinaryPenaltyNumber getStuDisciplinaryApplicationByPenaltyNumber(Long penaltyNumber);
StuDisciplinaryPenaltyNumber getStuDisciplinaryApplicationByPenaltyNumber(String penaltyNumber);
/**
* 根据学号获取自己的处分信息

View File

@@ -95,4 +95,12 @@ public interface IRtStuDisciplinaryRelieveService extends IService<RtStuDiscipli
* @return
*/
List<RtStuDisciplinaryRelieve> selectRtStuDisciplinaryRelieveListByXW(RtStuDisciplinaryRelieve rtStuDisciplinaryRelieve);
/**
* 导入解除处分数据
* @param list 解除处分数据列表
* @param updateSupport 是否更新已经存在的数据
* @return 导入结果信息
*/
String importDisciplinaryRelieve(List<RtStuDisciplinaryRelieve> list, boolean updateSupport);
}

View File

@@ -1,11 +1,10 @@
package com.srs.routine.service.impl;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.srs.common.core.domain.AjaxResult;
import com.srs.common.core.domain.entity.SysUser;
import com.srs.common.doman.dto.ProcessResultDto;
@@ -122,9 +121,9 @@ public class RtEnlistmentReserveServiceImpl extends ServiceImpl<RtEnlistmentRese
// 统计rt_enlistment_reserve表中reserve_no以"BLXJ("+currentYear+")"开头的记录数
int yearTotal = rtEnlistmentReserveMapper.countByYear(currentYear);
// 3. 计算当年自增序号(总数+1补零为3001、002...999
// 3. 计算当年自增序号(总数+1补零为4位(0001、0002...9999
int seq = yearTotal + 1;
String seqStr = String.format("%03d", seq); // 不足3位补0如1→00110→010
String seqStr = String.format("%04d", seq); // 不足4位补0如1→000110→0010100→0100
// 4. 拼接最终编号BLXJ(年份)序号
String reserveNo = "BLXJ(" + currentYear + ")" + seqStr;
@@ -177,6 +176,101 @@ public class RtEnlistmentReserveServiceImpl extends ServiceImpl<RtEnlistmentRese
return rtEnlistmentReserve;
}
@Override
public int batchInsertRtEnlistmentReserve(List<RtEnlistmentReserve> list) {
// 1. 校验入参是否为空
if (CollectionUtils.isEmpty(list)) {
return 0;
}
// 2. 过滤掉姓名或学号为空的数据(避免拼接异常)
List<RtEnlistmentReserve> validList = list.stream()
.filter(item -> item.getStudentName() != null && !item.getStudentName().isEmpty()
&& item.getStudentNo() != null && !item.getStudentNo().isEmpty())
.collect(Collectors.toList());
if (CollectionUtils.isEmpty(validList)) {
throw new IllegalArgumentException("待插入数据中无有效学生信息(姓名/学号为空)");
}
// 3. 查询数据库中已存在的学生姓名_学号
List<String> existStudentKeys = rtEnlistmentReserveMapper.selectExistStudents(validList);
Set<String> existStudentKeySet = new HashSet<>(existStudentKeys);
// 4. 拆分重复数据和待插入数据
List<RtEnlistmentReserve> duplicateList = validList.stream()
.filter(item -> existStudentKeySet.contains(item.getStudentName() + "_" + item.getStudentNo()))
.collect(Collectors.toList());
List<RtEnlistmentReserve> insertList = validList.stream()
.filter(item -> !existStudentKeySet.contains(item.getStudentName() + "_" + item.getStudentNo()))
.collect(Collectors.toList());
// 5. 存在重复数据则抛出异常提示
if (!CollectionUtils.isEmpty(duplicateList)) {
String duplicateMsg = duplicateList.stream()
.map(item -> "学生姓名:" + item.getStudentName() + ",学号:" + item.getStudentNo())
.collect(Collectors.joining(""));
throw new RuntimeException("提交申请失败,以下学生已提交申请:" + duplicateMsg);
}
// 6. 无重复数据时为每条待插入数据生成唯一的reserveNo核心新增逻辑
if (!CollectionUtils.isEmpty(insertList)) {
// ========== 生成保留学籍编号(适配批量场景) ==========
// 6.1 获取当前系统年份(用于编号和序号重置判断)
SimpleDateFormat yearSdf = new SimpleDateFormat("yyyy");
String currentYear = yearSdf.format(new Date()); // 如2026
// 6.2 查询「当前年份」的记录总数(按年份分组统计,实现每年序号重置)
// 统计rt_enlistment_reserve表中reserve_no以"BLXJ("+currentYear+")"开头的记录数
int yearTotal = rtEnlistmentReserveMapper.countByYear(currentYear);
// ========== 保留学籍开始和结束日期生成核心逻辑 ==========
Calendar calendar = Calendar.getInstance();
int currentMonth = calendar.get(Calendar.MONTH) + 1; // 月份从0开始+1转为实际月份1-12
// 6.3 为批量数据逐个生成递增的reserveNo
for (int i = 0; i < insertList.size(); i++) {
RtEnlistmentReserve item = insertList.get(i);
// 计算当前条目的序号(年份总数 + 1 + 循环索引,保证批量递增)
int seq = yearTotal + 1 + i;
// 补零为4位0001、0002...9999
String seqStr = String.format("%04d", seq);
// 拼接最终编号BLXJ(年份)序号
String reserveNo = "BLXJ(" + currentYear + ")" + seqStr;
// 设置到当前实体对象中
item.setReserveNo(reserveNo);
// ========== 保留学籍开始和结束日期生成核心逻辑 ==========
// --- 生成reserveStartDate按学期判断 ---
// 重置Calendar为当前年份的起始
calendar.clear();
calendar.set(Calendar.YEAR, Integer.parseInt(currentYear));
// 判断学期春季1-6月→3月1日秋季7-12月→9月1日
if (currentMonth >= 1 && currentMonth <= 6) {
calendar.set(Calendar.MONTH, Calendar.MARCH); // 3月Calendar中3月是2这里直接用常量更清晰
} else {
calendar.set(Calendar.MONTH, Calendar.SEPTEMBER); // 9月
}
calendar.set(Calendar.DAY_OF_MONTH, 1); // 1日
Date reserveStartDate = calendar.getTime();
item.setReserveStartDate(reserveStartDate);
// --- 生成reserveEndDatestartDate加2年 ---
Calendar endCalendar = (Calendar) calendar.clone(); // 克隆避免影响原日期
endCalendar.add(Calendar.YEAR, 2); // 加2年
Date reserveEndDate = endCalendar.getTime();
item.setReserveEndDate(reserveEndDate);
}
}
// 7. 执行批量插入
if (CollectionUtils.isEmpty(insertList)) {
return 0;
}
return rtEnlistmentReserveMapper.batchInsertRtEnlistmentReserve(insertList);
}
/**
* 修改应征入伍保留学籍申请
*
@@ -250,7 +344,7 @@ public class RtEnlistmentReserveServiceImpl extends ServiceImpl<RtEnlistmentRese
Long applyStatus = rtEnlistmentReserve.getApplyStatus();
if (1L == applyStatus) {
// 绑定当前学生ID启动流程
rtEnlistmentReserve.setStudentId(SecurityUtils.getUserId());
// rtEnlistmentReserve.setStudentId(SecurityUtils.getUserId());
ProcessResultDto processResultDto = startEnlistmentReserveProcess(rtEnlistmentReserve);
if (processResultDto == null || StringUtils.isBlank(processResultDto.getProcessInstanceId())) {
throw new ServiceException("流程启动失败,请重试", 500);

View File

@@ -21,7 +21,7 @@ import org.flowable.task.api.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.srs.common.utils.StringUtils;
import java.util.*;
/**
@@ -199,6 +199,74 @@ public class RtStuDisciplinaryApplicationServiceImpl extends ServiceImpl<RtStuDi
return rtStuDisciplinaryApplicationMapper.deleteRtStuDisciplinaryApplicationByApplicationId(applicationId);
}
@Override
public String importDisciplinaryApplication(List<RtStuDisciplinaryApplication> list, boolean updateSupport) {
if (com.srs.common.utils.StringUtils.isNull(list) || list.size() == 0) {
throw new ServiceException("导入数据不能为空!");
}
int successNum = 0;
int failureNum = 0;
StringBuilder successMsg = new StringBuilder();
StringBuilder failureMsg = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
RtStuDisciplinaryApplication rtStuDisciplinaryApplication = list.get(i);
// 跳过 null 元素
if (rtStuDisciplinaryApplication == null) {
continue;
}
// 跳过必填字段为空的行(学号为空则跳过)
if (StringUtils.isEmpty(rtStuDisciplinaryApplication.getStuNo())) {
continue;
}
try {
// 验证数据是否存在,或者补充必要信息
if (com.srs.common.utils.StringUtils.isNotNull(rtStuDisciplinaryApplication.getStuNo())) {
SysUser sysUser = sysUserService.selectUserByUserName(rtStuDisciplinaryApplication.getStuNo());
if (sysUser != null) {
rtStuDisciplinaryApplication.setStuId(sysUser.getUserId());
rtStuDisciplinaryApplication.setStuName(sysUser.getNickName());
}
}
rtStuDisciplinaryApplication.setCreateBy(SecurityUtils.getUsername());
rtStuDisciplinaryApplication.setCreateTime(DateUtils.getNowDate());
rtStuDisciplinaryApplication.setApplicantName(SecurityUtils.getLoginUser().getUser().getNickName());
rtStuDisciplinaryApplication.setApplicantId(SecurityUtils.getUserId());
if (rtStuDisciplinaryApplication.getSubmissionStatus() == null) {
rtStuDisciplinaryApplication.setSubmissionStatus(0L);
}
if (rtStuDisciplinaryApplication.getPenaltyStatus() == null) {
rtStuDisciplinaryApplication.setPenaltyStatus(0L); // 默认处分中
}
if (rtStuDisciplinaryApplication.getPenaltyType() != null && rtStuDisciplinaryApplication.getDisciplinaryDate() != null) {
rtStuDisciplinaryApplication.setExpirationDate(calculationDueDisposition(rtStuDisciplinaryApplication.getPenaltyType(), rtStuDisciplinaryApplication.getDisciplinaryDate()));
}
this.insertRtStuDisciplinaryApplication(rtStuDisciplinaryApplication);
successNum++;
successMsg.append("<br/>" + successNum + "、学号 " + rtStuDisciplinaryApplication.getStuNo() + " 导入成功");
} catch (Exception e) {
failureNum++;
String msg = "<br/>" + failureNum + "、学号 " + rtStuDisciplinaryApplication.getStuNo() + " 导入失败:";
failureMsg.append(msg + e.getMessage());
}
}
if (failureNum > 0) {
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new ServiceException(failureMsg.toString());
} else {
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
}
return successMsg.toString();
}
@Override
public RtStuDisciplinaryApplication getDisciplinaryApplicationByProcInsId(String procInsId) {
RtStuDisciplinaryApplication rtStuDisciplinaryApplication = rtStuDisciplinaryApplicationMapper.selectDisciplinaryApplicationByProcInsId(procInsId);
@@ -221,7 +289,7 @@ public class RtStuDisciplinaryApplicationServiceImpl extends ServiceImpl<RtStuDi
}
@Override
public StuDisciplinaryPenaltyNumber getStuDisciplinaryApplicationByPenaltyNumber(Long penaltyNumber) {
public StuDisciplinaryPenaltyNumber getStuDisciplinaryApplicationByPenaltyNumber(String penaltyNumber) {
StuDisciplinaryPenaltyNumber stuDisciplinaryPenaltyNumber = rtStuDisciplinaryApplicationMapper.selectStuDisciplinaryApplicationByPenaltyNumber(penaltyNumber);
if (stuDisciplinaryPenaltyNumber != null) {
return stuDisciplinaryPenaltyNumber;

View File

@@ -6,27 +6,28 @@ import java.util.Map;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.srs.common.core.domain.AjaxResult;
import com.srs.common.core.domain.entity.SysUser;
import com.srs.common.doman.dto.ProcessResultDto;
import com.srs.common.exception.ServiceException;
import com.srs.common.utils.DateUtils;
import com.srs.common.utils.SecurityUtils;
import com.srs.common.utils.StringUtils;
import com.srs.common.utils.WeChatUtil;
import com.srs.flowable.service.IFlowDefinitionService;
import com.srs.routine.domain.RtStuDisciplinaryApplication;
import com.srs.routine.domain.RtStuDisciplinaryRelieve;
import com.srs.routine.mapper.RtStuDisciplinaryApplicationMapper;
import com.srs.routine.mapper.RtStuDisciplinaryRelieveMapper;
import com.srs.routine.service.IRtStuDisciplinaryRelieveService;
import com.srs.system.mapper.SysUserMapper;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.IdentityService;
import org.flowable.engine.TaskService;
import org.flowable.task.api.Task;
import org.springframework.beans.factory.annotation.Autowired;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import com.srs.routine.mapper.RtStuDisciplinaryRelieveMapper;
import com.srs.routine.domain.RtStuDisciplinaryRelieve;
import com.srs.routine.service.IRtStuDisciplinaryRelieveService;
import org.springframework.transaction.annotation.Transactional;
/**
@@ -300,4 +301,66 @@ public class RtStuDisciplinaryRelieveServiceImpl extends ServiceImpl<RtStuDiscip
return rtStuDisciplinaryRelieve;
}
@Override
public String importDisciplinaryRelieve(List<RtStuDisciplinaryRelieve> list, boolean updateSupport) {
if (com.srs.common.utils.StringUtils.isNull(list) || list.size() == 0) {
throw new ServiceException("导入数据不能为空!");
}
int successNum = 0;
int failureNum = 0;
StringBuilder successMsg = new StringBuilder();
StringBuilder failureMsg = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
RtStuDisciplinaryRelieve rtStuDisciplinaryRelieve = list.get(i);
// 跳过 null 元素
if (rtStuDisciplinaryRelieve == null) {
continue;
}
// 跳过必填字段为空的行(学号为空则跳过)
if (StringUtils.isEmpty(rtStuDisciplinaryRelieve.getStuNo())) {
continue;
}
try {
if (com.srs.common.utils.StringUtils.isNotNull(rtStuDisciplinaryRelieve.getStuNo())) {
SysUser sysUser = sysUserMapper.selectUserByUserName(rtStuDisciplinaryRelieve.getStuNo());
if (sysUser != null) {
rtStuDisciplinaryRelieve.setStuId(sysUser.getUserId());
rtStuDisciplinaryRelieve.setStuName(sysUser.getNickName());
}
}
rtStuDisciplinaryRelieve.setCreateBy(SecurityUtils.getUsername());
rtStuDisciplinaryRelieve.setCreateTime(DateUtils.getNowDate());
rtStuDisciplinaryRelieve.setApplicantName(SecurityUtils.getLoginUser().getUser().getNickName());
if (rtStuDisciplinaryRelieve.getSubmissionStatus() == null) {
rtStuDisciplinaryRelieve.setSubmissionStatus(0L);
}
if (rtStuDisciplinaryRelieve.getPenaltyStatus() == null) {
rtStuDisciplinaryRelieve.setPenaltyStatus(1L);
}
rtStuDisciplinaryRelieveMapper.insertRtStuDisciplinaryRelieve(rtStuDisciplinaryRelieve);
successNum++;
successMsg.append("<br/>" + successNum + "、学号 " + rtStuDisciplinaryRelieve.getStuNo() + " 导入成功");
} catch (Exception e) {
failureNum++;
String msg = "<br/>" + failureNum + "、学号 " + rtStuDisciplinaryRelieve.getStuNo() + " 导入失败:";
failureMsg.append(msg + e.getMessage());
}
}
if (failureNum > 0) {
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new ServiceException(failureMsg.toString());
} else {
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
}
return successMsg.toString();
}
}

View File

@@ -162,7 +162,14 @@ public class SysDisBasicServiceImpl extends ServiceImpl<SysDisBasicMapper,SysDis
.set(mate.getFinaldata1() != null, SysDisMate::getFinaldata1, mate.getFinaldata1())
.set(mate.getFinaldata2() != null, SysDisMate::getFinaldata2, mate.getFinaldata2())
.set(mate.getFinalmajor() != null, SysDisMate::getFinalmajor, mate.getFinalmajor())
.set(mate.getFinallabel() != null, SysDisMate::getFinallabel, mate.getFinallabel());
.set(mate.getFinallabel() != null, SysDisMate::getFinallabel, mate.getFinallabel())
// 新增表字段位置
.set(mate.getCollegeInfo() != null, SysDisMate::getCollegeInfo, mate.getCollegeInfo())
.set(mate.getGradeInfo() != null, SysDisMate::getGradeInfo, mate.getGradeInfo())
.set(mate.getMajorInfo() != null, SysDisMate::getMajorInfo, mate.getMajorInfo())
.set(mate.getClassInfo() != null, SysDisMate::getClassInfo, mate.getClassInfo())
.set(mate.getTestData() != null, SysDisMate::getTestData, mate.getTestData())
.set(mate.getTestSave() != null, SysDisMate::getTestSave, mate.getTestSave());
updateResult = sysDisMateMapper.update(null, updateWrapper);
logger.info("通过子表ID自定义更新影响行数: {}", updateResult);
@@ -180,7 +187,14 @@ public class SysDisBasicServiceImpl extends ServiceImpl<SysDisBasicMapper,SysDis
.set(mate.getFinaldata1() != null, SysDisMate::getFinaldata1, mate.getFinaldata1())
.set(mate.getFinaldata2() != null, SysDisMate::getFinaldata2, mate.getFinaldata2())
.set(mate.getFinalmajor() != null, SysDisMate::getFinalmajor, mate.getFinalmajor())
.set(mate.getFinallabel() != null, SysDisMate::getFinallabel, mate.getFinallabel());
.set(mate.getFinallabel() != null, SysDisMate::getFinallabel, mate.getFinallabel())
// 新增子表字段
.set(mate.getCollegeInfo() != null, SysDisMate::getCollegeInfo, mate.getCollegeInfo())
.set(mate.getGradeInfo() != null, SysDisMate::getGradeInfo, mate.getGradeInfo())
.set(mate.getMajorInfo() != null, SysDisMate::getMajorInfo, mate.getMajorInfo())
.set(mate.getClassInfo() != null, SysDisMate::getClassInfo, mate.getClassInfo())
.set(mate.getTestData() != null, SysDisMate::getTestData, mate.getTestData())
.set(mate.getTestSave() != null, SysDisMate::getTestSave, mate.getTestSave());
updateResult = sysDisMateMapper.update(null, updateWrapper);
logger.info("通过st_id自定义更新影响行数: {}", updateResult);

View File

@@ -1,6 +1,8 @@
package com.srs.routine.service.impl;
import java.util.List;
import com.srs.routine.domain.dto.SysDisMateDao;
import org.springframework.beans.factory.annotation.Autowired;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@@ -8,6 +10,8 @@ import com.srs.routine.mapper.SysDisMateMapper;
import com.srs.routine.domain.SysDisMate;
import com.srs.routine.service.ISysDisMateService;
import javax.servlet.http.HttpServletResponse;
/**
* 退伍复学材料Service业务层处理
*
@@ -84,4 +88,5 @@ public class SysDisMateServiceImpl extends ServiceImpl<SysDisMateMapper,SysDisMa
public int deleteSysDisMateById(Long id) {
return sysDisMateMapper.deleteSysDisMateById(id);
}
}

View File

@@ -192,7 +192,6 @@
select * from rt_enlistment_reserve
</select>
<!-- 匹配reserve_no以"BLXJ(年份)"开头的记录-->
<select id="countByYear" resultType="int">
SELECT COUNT(*)
@@ -217,6 +216,16 @@
WHERE a.stu_no = #{stuNo}
</select>
<!-- 查询数据库中已存在的学生(按姓名+学号) -->
<select id="selectExistStudents" parameterType="java.util.List" resultType="java.lang.String">
SELECT CONCAT(student_name, '_', student_no)
FROM rt_enlistment_reserve
WHERE CONCAT(student_name, '_', student_no) IN
<foreach collection="list" item="item" open="(" separator="," close=")">
CONCAT(#{item.studentName}, '_', #{item.studentNo})
</foreach>
</select>
<insert id="insertRtEnlistmentReserve" parameterType="RtEnlistmentReserve" useGeneratedKeys="true" keyProperty="id">
insert into rt_enlistment_reserve
<trim prefix="(" suffix=")" suffixOverrides=",">
@@ -273,6 +282,68 @@
</trim>
</insert>
<!-- 批量插入 -->
<insert id="batchInsertRtEnlistmentReserve" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
insert into rt_enlistment_reserve
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="list != null and list.size() > 0">
<if test="list[0].applyNo != null and list[0].applyNo != ''">apply_no,</if>
<if test="list[0].studentId != null">student_id,</if>
<if test="list[0].teacherName != null and list[0].teacherName != ''">teacher_name,</if>
<if test="list[0].studentName != null and list[0].studentName != ''">student_name,</if>
<if test="list[0].gender != null and list[0].gender != ''">gender,</if>
<if test="list[0].nation != null and list[0].nation != ''">nation,</if>
<if test="list[0].grade != null and list[0].grade != ''">grade,</if>
<if test="list[0].studentNo != null and list[0].studentNo != ''">student_no,</if>
<if test="list[0].className != null and list[0].className != ''">class_name,</if>
<if test="list[0].major != null and list[0].major != ''">major,</if>
<if test="list[0].familyAddress != null and list[0].familyAddress != ''">family_address,</if>
<if test="list[0].parentPhone != null and list[0].parentPhone != ''">parent_phone,</if>
<if test="list[0].applyReason != null and list[0].applyReason != ''">apply_reason,</if>
<if test="list[0].applyStatus != null">apply_status,</if>
<if test="list[0].processInstanceId != null">process_instance_id,</if>
<if test="list[0].reserveNo != null">reserve_no,</if>
<if test="list[0].reserveStartDate != null">reserve_start_date,</if>
<if test="list[0].reserveEndDate != null">reserve_end_date,</if>
<if test="list[0].approvalNo != null">approval_no,</if>
<if test="list[0].createTime != null">create_time,</if>
<if test="list[0].updateTime != null">update_time,</if>
<if test="list[0].affixId != null">affix_id,</if>
<if test="list[0].deployId != null">deploy_id,</if>
<if test="list[0].deptName != null">dept_name,</if>
</if>
</trim>
values
<foreach collection="list" item="item" separator=",">
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="item.applyNo != null and item.applyNo != ''">#{item.applyNo},</if>
<if test="item.studentId != null">#{item.studentId},</if>
<if test="item.teacherName != null and item.teacherName != ''">#{item.teacherName},</if>
<if test="item.studentName != null and item.studentName != ''">#{item.studentName},</if>
<if test="item.gender != null and item.gender != ''">#{item.gender},</if>
<if test="item.nation != null and item.nation != ''">#{item.nation},</if>
<if test="item.grade != null and item.grade != ''">#{item.grade},</if>
<if test="item.studentNo != null and item.studentNo != ''">#{item.studentNo},</if>
<if test="item.className != null and item.className != ''">#{item.className},</if>
<if test="item.major != null and item.major != ''">#{item.major},</if>
<if test="item.familyAddress != null and item.familyAddress != ''">#{item.familyAddress},</if>
<if test="item.parentPhone != null and item.parentPhone != ''">#{item.parentPhone},</if>
<if test="item.applyReason != null and item.applyReason != ''">#{item.applyReason},</if>
<if test="item.applyStatus != null">#{item.applyStatus},</if>
<if test="item.processInstanceId != null">#{item.processInstanceId},</if>
<if test="item.reserveNo != null">#{item.reserveNo},</if>
<if test="item.reserveStartDate != null">#{item.reserveStartDate},</if>
<if test="item.reserveEndDate != null">#{item.reserveEndDate},</if>
<if test="item.approvalNo != null">#{item.approvalNo},</if>
<if test="item.createTime != null">#{item.createTime},</if>
<if test="item.updateTime != null">#{item.updateTime},</if>
<if test="item.affixId != null">#{item.affixId},</if>
<if test="item.deployId != null">#{item.deployId},</if>
<if test="item.deptName != null">#{item.deptName},</if>
</trim>
</foreach>
</insert>
<update id="updateRtEnlistmentReserve" parameterType="RtEnlistmentReserve">
update rt_enlistment_reserve
<trim prefix="SET" suffixOverrides=",">

View File

@@ -51,11 +51,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="studentId" column="student_id" />
<result property="testData" column="test_data" />
<result property="testTest" column="test_test" />
<result property="zsQmd" column="zs_qmd" />
<result property="fdQmd" column="fd_qmd" />
<result property="xwQmd" column="xw_qmd" />
<result property="rjQmd" column="rj_qmd" />
<result property="xjQmd" column="xj_qmd" />
<result property="jwcQmd" column="jwc_qmd" />
<result property="collegeInfo" column="college_info" />
<result property="gradeInfo" column="grade_info" />
<result property="majorInfo" column="major_info" />
<result property="classInfo" column="class_info" />
<!--填报退伍材料-->
<collection property="MaList" column="{stId = st_id}" javaType="java.util.ArrayList" select="selectMateById"/>
</resultMap>
<!-- 联表 材料上传-->
<resultMap type="SysDisMate" id="SysDisMateResult">
<result property="id" column="id" />
@@ -128,9 +138,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<sql id="selectSysDisBasicVo">
select id, fx_id, fx_time, st_id, st_name, fd_name, sex, nations, fd_qm, xw_qm, er_qm, xj_qm, jw_qm, st_class, majors, grade, college, reasons, fd_idea, two_idea, xw_idea, xj_idea, jw_idea, zs_idea, zs_status, times, fd_status, xw_status, two_status, xjgl_status, jw_status, rw_time, zs_time, fd_time, xw_time, two_time, xj_time, jw_time, datab, dataa, conversion, process_id, deploy_id, student_id, test_data, test_test from sys_dis_basic
select id, fx_id, fx_time, st_id, st_name, fd_name, sex, nations, fd_qm, xw_qm, er_qm, xj_qm, jw_qm, st_class, majors, grade, college, reasons, fd_idea, two_idea, xw_idea, xj_idea, jw_idea, zs_idea, zs_status, times, fd_status, xw_status, two_status, xjgl_status, jw_status, rw_time, zs_time, fd_time, xw_time, two_time, xj_time, jw_time, datab, dataa, conversion, process_id, deploy_id, student_id, test_data, test_test, zs_qmd, fd_qmd, xw_qmd, rj_qmd, xj_qmd, jwc_qmd, college_info, grade_info, major_info, class_info from sys_dis_basic
</sql>
<select id="selectSysDisBasicList" parameterType="SysDisBasic" resultMap="SysDisBasicResult">
@@ -181,6 +190,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="studentId != null "> and student_id = #{studentId}</if>
<if test="testData != null and testData != ''"> and test_data = #{testData}</if>
<if test="testTest != null and testTest != ''"> and test_test = #{testTest}</if>
<if test="zsQmd != null and zsQmd != ''"> and zs_qmd = #{zsQmd}</if>
<if test="fdQmd != null and fdQmd != ''"> and fd_qmd = #{fdQmd}</if>
<if test="xwQmd != null and xwQmd != ''"> and xw_qmd = #{xwQmd}</if>
<if test="rjQmd != null and rjQmd != ''"> and rj_qmd = #{rjQmd}</if>
<if test="xjQmd != null and xjQmd != ''"> and xj_qmd = #{xjQmd}</if>
<if test="jwcQmd != null and jwcQmd != ''"> and jwc_qmd = #{jwcQmd}</if>
<if test="collegeInfo != null and collegeInfo != ''"> and college_info = #{collegeInfo}</if>
<if test="gradeInfo != null and gradeInfo != ''"> and grade_info = #{gradeInfo}</if>
<if test="majorInfo != null and majorInfo != ''"> and major_info = #{majorInfo}</if>
<if test="classInfo != null and classInfo != ''"> and class_info = #{classInfo}</if>
</where>
</select>
@@ -237,6 +256,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="studentId != null">student_id,</if>
<if test="testData != null">test_data,</if>
<if test="testTest != null">test_test,</if>
<if test="zsQmd != null">zs_qmd,</if>
<if test="fdQmd != null">fd_qmd,</if>
<if test="xwQmd != null">xw_qmd,</if>
<if test="rjQmd != null">rj_qmd,</if>
<if test="xjQmd != null">xj_qmd,</if>
<if test="jwcQmd != null">jwc_qmd,</if>
<if test="collegeInfo != null">college_info,</if>
<if test="gradeInfo != null">grade_info,</if>
<if test="majorInfo != null">major_info,</if>
<if test="classInfo != null">class_info,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="fxId != null">#{fxId},</if>
@@ -284,6 +313,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="studentId != null">#{studentId},</if>
<if test="testData != null">#{testData},</if>
<if test="testTest != null">#{testTest},</if>
<if test="zsQmd != null">#{zsQmd},</if>
<if test="fdQmd != null">#{fdQmd},</if>
<if test="xwQmd != null">#{xwQmd},</if>
<if test="rjQmd != null">#{rjQmd},</if>
<if test="xjQmd != null">#{xjQmd},</if>
<if test="jwcQmd != null">#{jwcQmd},</if>
<if test="collegeInfo != null">#{collegeInfo},</if>
<if test="gradeInfo != null">#{gradeInfo},</if>
<if test="majorInfo != null">#{majorInfo},</if>
<if test="classInfo != null">#{classInfo},</if>
</trim>
</insert>
@@ -335,6 +374,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="studentId != null">student_id = #{studentId},</if>
<if test="testData != null">test_data = #{testData},</if>
<if test="testTest != null">test_test = #{testTest},</if>
<if test="zsQmd != null">zs_qmd = #{zsQmd},</if>
<if test="fdQmd != null">fd_qmd = #{fdQmd},</if>
<if test="xwQmd != null">xw_qmd = #{xwQmd},</if>
<if test="rjQmd != null">rj_qmd = #{rjQmd},</if>
<if test="xjQmd != null">xj_qmd = #{xjQmd},</if>
<if test="jwcQmd != null">jwc_qmd = #{jwcQmd},</if>
<if test="collegeInfo != null">college_info = #{collegeInfo},</if>
<if test="gradeInfo != null">grade_info = #{gradeInfo},</if>
<if test="majorInfo != null">major_info = #{majorInfo},</if>
<if test="classInfo != null">class_info = #{classInfo},</if>
</trim>
where id = #{id}
</update>

View File

@@ -23,10 +23,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="finaldata2" column="finaldata2" />
<result property="finalmajor" column="finalmajor" />
<result property="finallabel" column="finallabel" />
<result property="collegeInfo" column="college_info" />
<result property="gradeInfo" column="grade_info" />
<result property="majorInfo" column="major_info" />
<result property="classInfo" column="class_info" />
<result property="testData" column="test_data" />
<result property="testSave" column="test_save" />
</resultMap>
<sql id="selectSysDisMateVo">
select id, st_id, st_name, times, college, oldgrade, oldmajor, newgrade, newmajor, proof, idcard, material, data1, data2, finaldata1, finaldata2, finalmajor, finallabel from sys_dis_mate
select id, st_id, st_name, times, college, oldgrade, oldmajor, newgrade, newmajor, proof, idcard, material, data1, data2, finaldata1, finaldata2, finalmajor, finallabel, college_info, grade_info, major_info, class_info, test_data, test_save from sys_dis_mate
</sql>
<select id="selectSysDisMateList" parameterType="SysDisMate" resultMap="SysDisMateResult">
@@ -49,6 +55,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="finaldata2 != null and finaldata2 != ''"> and finaldata2 = #{finaldata2}</if>
<if test="finalmajor != null and finalmajor != ''"> and finalmajor = #{finalmajor}</if>
<if test="finallabel != null and finallabel != ''"> and finallabel = #{finallabel}</if>
<if test="collegeInfo != null and collegeInfo != ''"> and college_info = #{collegeInfo}</if>
<if test="gradeInfo != null and gradeInfo != ''"> and grade_info = #{gradeInfo}</if>
<if test="majorInfo != null and majorInfo != ''"> and major_info = #{majorInfo}</if>
<if test="classInfo != null and classInfo != ''"> and class_info = #{classInfo}</if>
<if test="testData != null and testData != ''"> and test_data = #{testData}</if>
<if test="testSave != null and testSave != ''"> and test_save = #{testSave}</if>
</where>
</select>
@@ -77,6 +89,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="finaldata2 != null">finaldata2,</if>
<if test="finalmajor != null">finalmajor,</if>
<if test="finallabel != null">finallabel,</if>
<if test="collegeInfo != null">college_info,</if>
<if test="gradeInfo != null">grade_info,</if>
<if test="majorInfo != null">major_info,</if>
<if test="classInfo != null">class_info,</if>
<if test="testData != null">test_data,</if>
<if test="testSave != null">test_save,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="stId != null">#{stId},</if>
@@ -96,6 +114,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="finaldata2 != null">#{finaldata2},</if>
<if test="finalmajor != null">#{finalmajor},</if>
<if test="finallabel != null">#{finallabel},</if>
<if test="collegeInfo != null">#{collegeInfo},</if>
<if test="gradeInfo != null">#{gradeInfo},</if>
<if test="majorInfo != null">#{majorInfo},</if>
<if test="classInfo != null">#{classInfo},</if>
<if test="testData != null">#{testData},</if>
<if test="testSave != null">#{testSave},</if>
</trim>
</insert>
@@ -119,6 +143,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="finaldata2 != null">finaldata2 = #{finaldata2},</if>
<if test="finalmajor != null">finalmajor = #{finalmajor},</if>
<if test="finallabel != null">finallabel = #{finallabel},</if>
<if test="collegeInfo != null">college_info = #{collegeInfo},</if>
<if test="gradeInfo != null">grade_info = #{gradeInfo},</if>
<if test="majorInfo != null">major_info = #{majorInfo},</if>
<if test="classInfo != null">class_info = #{classInfo},</if>
<if test="testData != null">test_data = #{testData},</if>
<if test="testSave != null">test_save = #{testSave},</if>
</trim>
where id = #{id}
</update>
@@ -144,10 +174,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="finaldata2 != null">finaldata2 = #{finaldata2},</if>
<if test="finalmajor != null">finalmajor = #{finalmajor},</if>
<if test="finallabel != null">finallabel = #{finallabel},</if>
<if test="collegeInfo != null">college_info = #{collegeInfo},</if>
<if test="gradeInfo != null">grade_info = #{gradeInfo},</if>
<if test="majorInfo != null">major_info = #{majorInfo},</if>
<if test="classInfo != null">class_info = #{classInfo},</if>
<if test="testData != null">test_data = #{testData},</if>
<if test="testSave != null">test_save = #{testSave},</if>
</trim>
where st_id = #{stId}
</update>
<delete id="deleteSysDisMateById" parameterType="Long">
delete from sys_dis_mate where id = #{id}
</delete>

View File

@@ -39,15 +39,10 @@
<version>3.5.3.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-core</artifactId>
<version>3.5.3.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.32</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
@@ -55,12 +50,6 @@
<version>3.5.3.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>3.3.0</version>
<scope>compile</scope>
</dependency>
</dependencies>

View File

@@ -526,7 +526,7 @@ public class SysMenuServiceImpl implements ISysMenuService
while (it.hasNext())
{
SysMenu n = (SysMenu) it.next();
if (n.getParentId().longValue() == t.getMenuId().longValue())
if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getMenuId().longValue())
{
tlist.add(n);
}

View File

@@ -226,6 +226,13 @@ public class SysTeacherKpiFilling extends BaseEntity {
@Excel(name = "个人填报-加分项")
private List<SysTeacherKpiFillingBonusPoints> kpiFillingBonusPointsList;
/**
* 个人填报-加分项佐证材料
*/
@ApiModelProperty(value = "个人填报-加分项佐证材料", hidden = true)
@Excel(name = "个人填报-加分项佐证材料")
private List<SysTeacherKpiFillingBonusPointsMaterials> kpiFillingBonusPointsMaterialsList;
/**
* 个人填报-就业指导工作
*/

View File

@@ -0,0 +1,81 @@
package com.srs.teacher.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.srs.common.annotation.Excel;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import com.srs.common.core.domain.BaseEntity;
import javax.validation.constraints.NotNull;
/**
* 业绩考核-个人填报-加分项佐证材料对象 sys_teacher_kpi_filling_bonus_points_materials
*
* @author Codex
* @date 2026-03-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ApiModel(value = "SysTeacherKpiFillingBonusPointsMaterials对象", description = "业绩考核-个人填报-加分项佐证材料")
@TableName("sys_teacher_kpi_filling_bonus_points_materials")
public class SysTeacherKpiFillingBonusPointsMaterials extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ApiModelProperty("加分项类型")
@TableField("bonus_type")
@Excel(name = "加分项类型")
private String bonusType;
@ApiModelProperty("加分分值")
@TableField("bonus_scoring")
@Excel(name = "加分分值")
private Integer bonusScoring;
@ApiModelProperty("佐证说明")
@TableField("main_content")
@Excel(name = "佐证说明")
private String mainContent;
@ApiModelProperty("发生时间")
@TableField("development_time")
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "发生时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date developmentTime;
@ApiModelProperty("佐证图片")
@TableField("photo")
@Excel(name = "佐证图片")
private String photo;
@ApiModelProperty(value = "辅导员姓名", required = true)
@TableField("fdy_name")
@Excel(name = "辅导员姓名")
private String fdyName;
@ApiModelProperty(value = "填报年份", required = true)
@TableField("filling_year")
@Excel(name = "填报年份")
private String fillingYear;
@ApiModelProperty(value = "填报月份", required = true)
@TableField("filling_month")
@Excel(name = "填报月份")
@NotNull(message = "填报月份不能为空")
private String fillingMonth;
@ApiModelProperty("班级类型 graduate-毕业班 ungraduate-非毕业班")
@TableField("class_type")
@Excel(name = "班级类型")
private String classType;
}

View File

@@ -13,6 +13,8 @@ import lombok.*;
import com.srs.common.core.domain.BaseEntity;
import javax.validation.constraints.NotNull;
import com.srs.teacher.domain.SysTeacherStuTestMaterials;
import com.srs.teacher.domain.SysTeacherStuNoticeMaterials;
/**
@@ -172,4 +174,18 @@ public class SysTeacherKpiFillingStuMgt extends BaseEntity {
@ApiModelProperty(value = "每周深入学生宿舍佐证材料", hidden = true)
@Excel(name = "每周深入学生宿舍佐证材料")
private List<SysTeacherVisitDormitoryMaterials> visitDormitoryMaterialsList;
/**
* 职业测评/就业育人佐证材料
*/
@ApiModelProperty(value = "职业测评/就业育人佐证材料", hidden = true)
@Excel(name = "职业测评/就业育人佐证材料")
private List<SysTeacherStuTestMaterials> edgMaterialsList;
/**
* 通知任务佐证材料
*/
@ApiModelProperty(value = "通知任务佐证材料", hidden = true)
@Excel(name = "通知任务佐证材料")
private List<SysTeacherStuNoticeMaterials> noticeMaterialsList;
}

View File

@@ -0,0 +1,34 @@
package com.srs.teacher.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.srs.teacher.domain.SysTeacherKpiFillingBonusPointsMaterials;
import org.apache.ibatis.annotations.Param;
/**
* 业绩考核-个人填报-加分项佐证材料Mapper接口
*
* @author Codex
* @date 2026-03-26
*/
public interface SysTeacherKpiFillingBonusPointsMaterialsMapper extends BaseMapper<SysTeacherKpiFillingBonusPointsMaterials> {
SysTeacherKpiFillingBonusPointsMaterials selectSysTeacherKpiFillingBonusPointsMaterialsById(Long id);
List<SysTeacherKpiFillingBonusPointsMaterials> selectSysTeacherKpiFillingBonusPointsMaterialsList(SysTeacherKpiFillingBonusPointsMaterials materials);
List<SysTeacherKpiFillingBonusPointsMaterials> selectSysTeacherKpiFillingBonusPointsMaterialsByFdyName(
@Param("fdyName") String fdyName,
@Param("fillingYear") String fillingYear,
@Param("fillingMonth") String fillingMonth,
@Param("classType") String classType,
@Param("bonusType") String bonusType);
int insertSysTeacherKpiFillingBonusPointsMaterials(SysTeacherKpiFillingBonusPointsMaterials materials);
int updateSysTeacherKpiFillingBonusPointsMaterials(SysTeacherKpiFillingBonusPointsMaterials materials);
int deleteSysTeacherKpiFillingBonusPointsMaterialsById(Long id);
int deleteSysTeacherKpiFillingBonusPointsMaterialsByIds(Long[] ids);
}

View File

@@ -0,0 +1,34 @@
package com.srs.teacher.service;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.srs.teacher.domain.SysTeacherKpiFillingBonusPointsMaterials;
import org.apache.ibatis.annotations.Param;
/**
* 业绩考核-个人填报-加分项佐证材料Service接口
*
* @author Codex
* @date 2026-03-26
*/
public interface ISysTeacherKpiFillingBonusPointsMaterialsService extends IService<SysTeacherKpiFillingBonusPointsMaterials> {
SysTeacherKpiFillingBonusPointsMaterials selectSysTeacherKpiFillingBonusPointsMaterialsById(Long id);
List<SysTeacherKpiFillingBonusPointsMaterials> selectSysTeacherKpiFillingBonusPointsMaterialsList(SysTeacherKpiFillingBonusPointsMaterials materials);
List<SysTeacherKpiFillingBonusPointsMaterials> selectSysTeacherKpiFillingBonusPointsMaterialsByFdyName(
@Param("fdyName") String fdyName,
@Param("fillingYear") String fillingYear,
@Param("fillingMonth") String fillingMonth,
@Param("classType") String classType,
@Param("bonusType") String bonusType);
int insertSysTeacherKpiFillingBonusPointsMaterials(SysTeacherKpiFillingBonusPointsMaterials materials);
int updateSysTeacherKpiFillingBonusPointsMaterials(SysTeacherKpiFillingBonusPointsMaterials materials);
int deleteSysTeacherKpiFillingBonusPointsMaterialsByIds(Long[] ids);
int deleteSysTeacherKpiFillingBonusPointsMaterialsById(Long id);
}

View File

@@ -0,0 +1,61 @@
package com.srs.teacher.service.impl;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.srs.common.utils.SecurityUtils;
import com.srs.teacher.domain.SysTeacherKpiFillingBonusPointsMaterials;
import com.srs.teacher.mapper.SysTeacherKpiFillingBonusPointsMaterialsMapper;
import com.srs.teacher.service.ISysTeacherKpiFillingBonusPointsMaterialsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* 业绩考核-个人填报-加分项佐证材料Service业务层处理
*
* @author Codex
* @date 2026-03-26
*/
@Service
public class SysTeacherKpiFillingBonusPointsMaterialsServiceImpl extends ServiceImpl<SysTeacherKpiFillingBonusPointsMaterialsMapper, SysTeacherKpiFillingBonusPointsMaterials> implements ISysTeacherKpiFillingBonusPointsMaterialsService {
@Autowired
private SysTeacherKpiFillingBonusPointsMaterialsMapper materialsMapper;
@Override
public SysTeacherKpiFillingBonusPointsMaterials selectSysTeacherKpiFillingBonusPointsMaterialsById(Long id) {
return materialsMapper.selectSysTeacherKpiFillingBonusPointsMaterialsById(id);
}
@Override
public List<SysTeacherKpiFillingBonusPointsMaterials> selectSysTeacherKpiFillingBonusPointsMaterialsList(SysTeacherKpiFillingBonusPointsMaterials materials) {
materials.setFdyName(SecurityUtils.getLoginUser().getUser().getNickName());
return materialsMapper.selectSysTeacherKpiFillingBonusPointsMaterialsList(materials);
}
@Override
public List<SysTeacherKpiFillingBonusPointsMaterials> selectSysTeacherKpiFillingBonusPointsMaterialsByFdyName(String fdyName, String fillingYear, String fillingMonth, String classType, String bonusType) {
return materialsMapper.selectSysTeacherKpiFillingBonusPointsMaterialsByFdyName(fdyName, fillingYear, fillingMonth, classType, bonusType);
}
@Override
public int insertSysTeacherKpiFillingBonusPointsMaterials(SysTeacherKpiFillingBonusPointsMaterials materials) {
materials.setFdyName(SecurityUtils.getLoginUser().getUser().getNickName());
return materialsMapper.insertSysTeacherKpiFillingBonusPointsMaterials(materials);
}
@Override
public int updateSysTeacherKpiFillingBonusPointsMaterials(SysTeacherKpiFillingBonusPointsMaterials materials) {
materials.setFdyName(SecurityUtils.getLoginUser().getUser().getNickName());
return materialsMapper.updateSysTeacherKpiFillingBonusPointsMaterials(materials);
}
@Override
public int deleteSysTeacherKpiFillingBonusPointsMaterialsByIds(Long[] ids) {
return materialsMapper.deleteSysTeacherKpiFillingBonusPointsMaterialsByIds(ids);
}
@Override
public int deleteSysTeacherKpiFillingBonusPointsMaterialsById(Long id) {
return materialsMapper.deleteSysTeacherKpiFillingBonusPointsMaterialsById(id);
}
}

View File

@@ -82,10 +82,10 @@ public class SysTeacherKpiFillingBusinessWorkServiceImpl extends ServiceImpl<Sys
public int updateSysTeacherKpiFillingBusinessWork(SysTeacherKpiFillingBusinessWork sysTeacherKpiFillingBusinessWork) {
// sysTeacherKpiFillingBusinessWork.setFdyName(SecurityUtils.getLoginUser().getUser().getNickName());
// 判断填报记录是否填报
List<SysTeacherKpiFillingBusinessWork> sysTeacherKpiFillingBusinessWorkList = sysTeacherKpiFillingBusinessWorkMapper.selectSysTeacherKpiFillingBusinessWorkByFdyName(sysTeacherKpiFillingBusinessWork.getFdyName(), sysTeacherKpiFillingBusinessWork.getFillingYear(), sysTeacherKpiFillingBusinessWork.getFillingMonth(), sysTeacherKpiFillingBusinessWork.getClassType());
/*List<SysTeacherKpiFillingBusinessWork> sysTeacherKpiFillingBusinessWorkList = sysTeacherKpiFillingBusinessWorkMapper.selectSysTeacherKpiFillingBusinessWorkByFdyName(sysTeacherKpiFillingBusinessWork.getFdyName(), sysTeacherKpiFillingBusinessWork.getFillingYear(), sysTeacherKpiFillingBusinessWork.getFillingMonth(), sysTeacherKpiFillingBusinessWork.getClassType());
if (sysTeacherKpiFillingBusinessWorkList != null && !sysTeacherKpiFillingBusinessWorkList.isEmpty()) {
throw new ServiceException("已提交,请勿重复提交", 500);
}
}*/
return sysTeacherKpiFillingBusinessWorkMapper.updateSysTeacherKpiFillingBusinessWork(sysTeacherKpiFillingBusinessWork);
}

View File

@@ -77,10 +77,10 @@ public class SysTeacherKpiFillingNegativeListServiceImpl extends ServiceImpl<Sys
@Override
public int updateSysTeacherKpiFillingNegativeList(SysTeacherKpiFillingNegativeList sysTeacherKpiFillingNegativeList) {
// 判断填报记录是否填报
List<SysTeacherKpiFillingNegativeList> sysTeacherKpiFillingNegativeLists = sysTeacherKpiFillingNegativeListMapper.selectSysTeacherKpiFillingNegativeListByFdyName(sysTeacherKpiFillingNegativeList.getFdyName(), sysTeacherKpiFillingNegativeList.getFillingYear(), sysTeacherKpiFillingNegativeList.getFillingMonth(), sysTeacherKpiFillingNegativeList.getClassType());
/*List<SysTeacherKpiFillingNegativeList> sysTeacherKpiFillingNegativeLists = sysTeacherKpiFillingNegativeListMapper.selectSysTeacherKpiFillingNegativeListByFdyName(sysTeacherKpiFillingNegativeList.getFdyName(), sysTeacherKpiFillingNegativeList.getFillingYear(), sysTeacherKpiFillingNegativeList.getFillingMonth(), sysTeacherKpiFillingNegativeList.getClassType());
if (sysTeacherKpiFillingNegativeLists != null && !sysTeacherKpiFillingNegativeLists.isEmpty()) {
throw new ServiceException("已提交,请勿重复提交", 500);
}
}*/
return sysTeacherKpiFillingNegativeListMapper.updateSysTeacherKpiFillingNegativeList(sysTeacherKpiFillingNegativeList);
}

View File

@@ -103,10 +103,10 @@ public class SysTeacherKpiFillingStuMgtServiceImpl extends ServiceImpl<SysTeache
*/
@Override
public int updateSysTeacherKpiFillingStuMgt(SysTeacherKpiFillingStuMgt sysTeacherKpiFillingStuMgt) {
List<SysTeacherKpiFillingStuMgt> sysTeacherKpiFillingStuMgts = sysTeacherKpiFillingStuMgtMapper.selectSysTeacherKpiFillingStuMgtByFdyNameAndFillingYear(sysTeacherKpiFillingStuMgt.getDepartmentName(), sysTeacherKpiFillingStuMgt.getFdyName(), sysTeacherKpiFillingStuMgt.getFillingYear(), sysTeacherKpiFillingStuMgt.getFillingMonth());
/*List<SysTeacherKpiFillingStuMgt> sysTeacherKpiFillingStuMgts = sysTeacherKpiFillingStuMgtMapper.selectSysTeacherKpiFillingStuMgtByFdyNameAndFillingYear(sysTeacherKpiFillingStuMgt.getDepartmentName(), sysTeacherKpiFillingStuMgt.getFdyName(), sysTeacherKpiFillingStuMgt.getFillingYear(), sysTeacherKpiFillingStuMgt.getFillingMonth());
if (sysTeacherKpiFillingStuMgts != null && !sysTeacherKpiFillingStuMgts.isEmpty()) {
throw new ServiceException("已提交,请勿重复提交", 500);
}
}*/
if (sysTeacherKpiFillingStuMgt.getFdyName() == null) {
sysTeacherKpiFillingStuMgt.setFdyName(SecurityUtils.getLoginUser().getUser().getNickName());
}

View File

@@ -0,0 +1,125 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.srs.teacher.mapper.SysTeacherKpiFillingBonusPointsMaterialsMapper">
<resultMap type="SysTeacherKpiFillingBonusPointsMaterials" id="SysTeacherKpiFillingBonusPointsMaterialsResult">
<result property="id" column="id"/>
<result property="bonusType" column="bonus_type"/>
<result property="bonusScoring" column="bonus_scoring"/>
<result property="mainContent" column="main_content"/>
<result property="developmentTime" column="development_time"/>
<result property="photo" column="photo"/>
<result property="fdyName" column="fdy_name"/>
<result property="fillingYear" column="filling_year"/>
<result property="fillingMonth" column="filling_month"/>
<result property="classType" column="class_type"/>
</resultMap>
<sql id="selectSysTeacherKpiFillingBonusPointsMaterialsVo">
select id, bonus_type, bonus_scoring, main_content, development_time, photo, fdy_name, filling_year, filling_month, class_type
from sys_teacher_kpi_filling_bonus_points_materials
</sql>
<select id="selectSysTeacherKpiFillingBonusPointsMaterialsList" parameterType="SysTeacherKpiFillingBonusPointsMaterials"
resultMap="SysTeacherKpiFillingBonusPointsMaterialsResult">
<include refid="selectSysTeacherKpiFillingBonusPointsMaterialsVo"/>
<where>
<if test="bonusType != null and bonusType != ''">and bonus_type = #{bonusType}</if>
<if test="bonusScoring != null">and bonus_scoring = #{bonusScoring}</if>
<if test="mainContent != null and mainContent != ''">and main_content like concat('%', #{mainContent}, '%')</if>
<if test="developmentTime != null">and development_time = #{developmentTime}</if>
<if test="fdyName != null and fdyName != ''">and fdy_name like concat('%', #{fdyName}, '%')</if>
<if test="fillingYear != null and fillingYear != ''">and filling_year = #{fillingYear}</if>
<if test="fillingMonth != null and fillingMonth != ''">and filling_month = #{fillingMonth}</if>
<if test="classType != null and classType != ''">and class_type = #{classType}</if>
</where>
order by id desc
</select>
<select id="selectSysTeacherKpiFillingBonusPointsMaterialsByFdyName" parameterType="String"
resultMap="SysTeacherKpiFillingBonusPointsMaterialsResult">
<include refid="selectSysTeacherKpiFillingBonusPointsMaterialsVo"/>
<where>
<if test="fdyName != null and fdyName != ''">
and fdy_name = #{fdyName}
</if>
<if test="fillingYear != null and fillingYear != ''">
and filling_year = #{fillingYear}
</if>
<if test="fillingMonth != null and fillingMonth != ''">
and filling_month = #{fillingMonth}
</if>
<if test="classType != null and classType != ''">
and class_type = #{classType}
</if>
<if test="bonusType != null and bonusType != ''">
and bonus_type = #{bonusType}
</if>
</where>
order by id desc
</select>
<select id="selectSysTeacherKpiFillingBonusPointsMaterialsById" parameterType="Long"
resultMap="SysTeacherKpiFillingBonusPointsMaterialsResult">
<include refid="selectSysTeacherKpiFillingBonusPointsMaterialsVo"/>
where id = #{id}
</select>
<insert id="insertSysTeacherKpiFillingBonusPointsMaterials" parameterType="SysTeacherKpiFillingBonusPointsMaterials"
useGeneratedKeys="true" keyProperty="id">
insert into sys_teacher_kpi_filling_bonus_points_materials
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="bonusType != null and bonusType != ''">bonus_type,</if>
<if test="bonusScoring != null">bonus_scoring,</if>
<if test="mainContent != null and mainContent != ''">main_content,</if>
<if test="developmentTime != null">development_time,</if>
<if test="photo != null and photo != ''">photo,</if>
<if test="fdyName != null and fdyName != ''">fdy_name,</if>
<if test="fillingYear != null and fillingYear != ''">filling_year,</if>
<if test="fillingMonth != null and fillingMonth != ''">filling_month,</if>
<if test="classType != null and classType != ''">class_type,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="bonusType != null and bonusType != ''">#{bonusType},</if>
<if test="bonusScoring != null">#{bonusScoring},</if>
<if test="mainContent != null and mainContent != ''">#{mainContent},</if>
<if test="developmentTime != null">#{developmentTime},</if>
<if test="photo != null and photo != ''">#{photo},</if>
<if test="fdyName != null and fdyName != ''">#{fdyName},</if>
<if test="fillingYear != null and fillingYear != ''">#{fillingYear},</if>
<if test="fillingMonth != null and fillingMonth != ''">#{fillingMonth},</if>
<if test="classType != null and classType != ''">#{classType},</if>
</trim>
</insert>
<update id="updateSysTeacherKpiFillingBonusPointsMaterials" parameterType="SysTeacherKpiFillingBonusPointsMaterials">
update sys_teacher_kpi_filling_bonus_points_materials
<trim prefix="SET" suffixOverrides=",">
<if test="bonusType != null and bonusType != ''">bonus_type = #{bonusType},</if>
<if test="bonusScoring != null">bonus_scoring = #{bonusScoring},</if>
<if test="mainContent != null and mainContent != ''">main_content = #{mainContent},</if>
<if test="developmentTime != null">development_time = #{developmentTime},</if>
<if test="photo != null">photo = #{photo},</if>
<if test="fdyName != null and fdyName != ''">fdy_name = #{fdyName},</if>
<if test="fillingYear != null and fillingYear != ''">filling_year = #{fillingYear},</if>
<if test="fillingMonth != null and fillingMonth != ''">filling_month = #{fillingMonth},</if>
<if test="classType != null and classType != ''">class_type = #{classType},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteSysTeacherKpiFillingBonusPointsMaterialsById" parameterType="Long">
delete
from sys_teacher_kpi_filling_bonus_points_materials
where id = #{id}
</delete>
<delete id="deleteSysTeacherKpiFillingBonusPointsMaterialsByIds" parameterType="String">
delete from sys_teacher_kpi_filling_bonus_points_materials where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>

View File

@@ -51,6 +51,10 @@
<collection property="kpiFillingBonusPointsList"
column="{fdyName = fdy_name, fillingYear = filling_year, fillingMonth = filling_month, classType = class_type}"
javaType="java.util.ArrayList" select="selectKpiFillingBonusPointsById"/>
<!--个人填报-加分项佐证材料子表的集合 -->
<collection property="kpiFillingBonusPointsMaterialsList"
column="{fdyName = fdy_name, fillingYear = filling_year, fillingMonth = filling_month, classType = class_type}"
javaType="java.util.ArrayList" select="selectKpiFillingBonusPointsMaterialsById"/>
<!--个人填报-就业指导工作子表的集合 -->
<collection property="kpiFillingGraduationGuidanceList"
column="{fdyName = fdy_name, fillingYear = filling_year, fillingMonth = filling_month, classType = class_type}"
@@ -89,6 +93,14 @@
<collection property="visitDormitoryMaterialsList"
column="{fdyName = fdy_name, fillingYear = filling_year, fillingMonth = filling_month}"
javaType="java.util.ArrayList" select="selectVisitDormitoryMaterialsById"/>
<!--职业测评/就业育人佐证材料子表的集合 -->
<collection property="edgMaterialsList"
column="{fdyName = fdy_name, fillingYear = filling_year, fillingMonth = filling_month}"
javaType="java.util.ArrayList" select="selectEdgMaterialsById"/>
<!--通知任务佐证材料子表的集合 -->
<collection property="noticeMaterialsList"
column="{fdyName = fdy_name, fillingYear = filling_year, fillingMonth = filling_month}"
javaType="java.util.ArrayList" select="selectNoticeMaterialsById"/>
</resultMap>
<!--个人填报-业务工作子表的映射 -->
@@ -166,6 +178,20 @@
<result property="fillingMonth" column="filling_month"/>
</resultMap>
<!--个人填报-加分项佐证材料子表的映射 -->
<resultMap type="SysTeacherKpiFillingBonusPointsMaterials" id="SysTeacherKpiFillingBonusPointsMaterialsResult">
<result property="id" column="id"/>
<result property="bonusType" column="bonus_type"/>
<result property="bonusScoring" column="bonus_scoring"/>
<result property="mainContent" column="main_content"/>
<result property="developmentTime" column="development_time"/>
<result property="photo" column="photo"/>
<result property="fdyName" column="fdy_name"/>
<result property="fillingYear" column="filling_year"/>
<result property="fillingMonth" column="filling_month"/>
<result property="classType" column="class_type"/>
</resultMap>
<!--个人填报-就业指导工作子表的映射 -->
<resultMap type="SysTeacherKpiFillingGraduationGuidance" id="SysTeacherKpiFillingGraduationGuidanceResult">
<result property="id" column="id"/>
@@ -317,6 +343,26 @@
</where>
</select>
<!--个人填报-加分项佐证材料子表的数据-->
<select id="selectKpiFillingBonusPointsMaterialsById" resultMap="SysTeacherKpiFillingBonusPointsMaterialsResult">
select *
from sys_teacher_kpi_filling_bonus_points_materials
<where>
<if test="fdyName != null and fdyName != ''">
and fdy_name = #{fdyName}
</if>
<if test="fillingYear != null and fillingYear != ''">
and filling_year = #{fillingYear}
</if>
<if test="fillingMonth != null and fillingMonth != ''">
and filling_month = #{fillingMonth}
</if>
<if test="classType != null and classType != ''">
and class_type = #{classType}
</if>
</where>
</select>
<!--个人填报-就业指导工作子表的数据-->
<select id="selectKpiFillingGraduationGuidanceById" resultMap="SysTeacherKpiFillingGraduationGuidanceResult">
select *
@@ -401,6 +447,32 @@
<result property="fillingYear" column="filling_year"/>
<result property="fillingMonth" column="filling_month"/>
</resultMap>
<!--个人填报-学生管理-职业测评材料子表的映射 -->
<resultMap type="SysTeacherStuTestMaterials" id="SysTeacherEdgMaterialsResult">
<result property="id" column="id"/>
<result property="developmentTime" column="development_time"/>
<result property="place" column="place"/>
<result property="className" column="class_name"/>
<result property="numberOfStudents" column="number_of_students"/>
<result property="mainContent" column="main_content"/>
<result property="photo" column="photo"/>
<result property="fdyName" column="fdy_name"/>
<result property="fillingYear" column="filling_year"/>
<result property="fillingMonth" column="filling_month"/>
</resultMap>
<!--个人填报-学生管理-通知任务材料子表的映射 -->
<resultMap type="SysTeacherStuNoticeMaterials" id="SysTeacherStuNoticeMaterialsResult">
<result property="id" column="id"/>
<result property="developmentTime" column="development_time"/>
<result property="place" column="place"/>
<result property="className" column="class_name"/>
<result property="numberOfStudents" column="number_of_students"/>
<result property="mainContent" column="main_content"/>
<result property="photo" column="photo"/>
<result property="fdyName" column="fdy_name"/>
<result property="fillingYear" column="filling_year"/>
<result property="fillingMonth" column="filling_month"/>
</resultMap>
<!--个人填报-考勤管理-会议培训佐证材料子子表的映射 -->
<resultMap type="SysTeacherConferenceMeetingMaterials" id="SysTeacherConferenceMeetingMaterialsResult">
<result property="id" column="id"/>
@@ -497,6 +569,40 @@
</where>
order by id desc
</select>
<!--查询个人填报-学生管理-职业测评材料子表的数据-->
<select id="selectEdgMaterialsById" resultMap="SysTeacherEdgMaterialsResult">
select *
from sys_teacher_stu_test_materials
<where>
<if test="fdyName != null and fdyName != ''">
and fdy_name = #{fdyName}
</if>
<if test="fillingYear != null and fillingYear != ''">
and filling_year = #{fillingYear}
</if>
<if test="fillingMonth != null and fillingMonth != ''">
and filling_month = #{fillingMonth}
</if>
</where>
order by id desc
</select>
<!--查询个人填报-学生管理-通知任务材料子表的数据-->
<select id="selectNoticeMaterialsById" resultMap="SysTeacherStuNoticeMaterialsResult">
select *
from sys_teacher_stu_notice_materials
<where>
<if test="fdyName != null and fdyName != ''">
and fdy_name = #{fdyName}
</if>
<if test="fillingYear != null and fillingYear != ''">
and filling_year = #{fillingYear}
</if>
<if test="fillingMonth != null and fillingMonth != ''">
and filling_month = #{fillingMonth}
</if>
</where>
order by id desc
</select>
<!--个人填报-考勤管理-会议培训佐证材料子子表的数据-->
<select id="selectConferenceMeetingMaterialsById" resultMap="SysTeacherConferenceMeetingMaterialsResult">
select *

View File

@@ -29,6 +29,10 @@
<collection property="stuTalkMaterialsList" column="{fdyName = fdy_name, fillingYear = filling_year, fillingMonth = filling_month}" javaType="java.util.ArrayList" select="selectStuTalkMaterialsById"/>
<!--每周深入学生宿舍佐证材料子表的集合 -->
<collection property="visitDormitoryMaterialsList" column="{fdyName = fdy_name, fillingYear = filling_year, fillingMonth = filling_month}" javaType="java.util.ArrayList" select="selectVisitDormitoryMaterialsById"/>
<!--职业测评/就业育人佐证材料子表的集合 -->
<collection property="edgMaterialsList" column="{fdyName = fdy_name, fillingYear = filling_year, fillingMonth = filling_month}" javaType="java.util.ArrayList" select="selectEdgMaterialsById"/>
<!--通知任务佐证材料子表的集合 -->
<collection property="noticeMaterialsList" column="{fdyName = fdy_name, fillingYear = filling_year, fillingMonth = filling_month}" javaType="java.util.ArrayList" select="selectNoticeMaterialsById"/>
</resultMap>
<!--干部会议佐证材料子表的映射 -->
@@ -95,6 +99,32 @@
<result property="fillingYear" column="filling_year"/>
<result property="fillingMonth" column="filling_month"/>
</resultMap>
<!--职业测评/就业育人佐证材料子表的映射 -->
<resultMap type="SysTeacherStuTestMaterials" id="SysTeacherEdgMaterialsResult">
<result property="id" column="id"/>
<result property="developmentTime" column="development_time"/>
<result property="place" column="place"/>
<result property="className" column="class_name"/>
<result property="numberOfStudents" column="number_of_students"/>
<result property="mainContent" column="main_content"/>
<result property="photo" column="photo"/>
<result property="fdyName" column="fdy_name"/>
<result property="fillingYear" column="filling_year"/>
<result property="fillingMonth" column="filling_month"/>
</resultMap>
<!--通知任务佐证材料子表的映射 -->
<resultMap type="SysTeacherStuNoticeMaterials" id="SysTeacherStuNoticeMaterialsResult">
<result property="id" column="id"/>
<result property="developmentTime" column="development_time"/>
<result property="place" column="place"/>
<result property="className" column="class_name"/>
<result property="numberOfStudents" column="number_of_students"/>
<result property="mainContent" column="main_content"/>
<result property="photo" column="photo"/>
<result property="fdyName" column="fdy_name"/>
<result property="fillingYear" column="filling_year"/>
<result property="fillingMonth" column="filling_month"/>
</resultMap>
<!--查询干部会议佐证材料子表的数据-->
<select id="selectCadreMeetingMaterialsById" resultMap="SysTeacherCadreMeetingMaterialsResult">
@@ -176,6 +206,40 @@
</if>
</where>
</select>
<!--职业测评/就业育人佐证材料子表的数据-->
<select id="selectEdgMaterialsById" resultMap="SysTeacherEdgMaterialsResult">
select *
from sys_teacher_stu_test_materials
<where>
<if test="fdyName != null and fdyName != ''">
and fdy_name = #{fdyName}
</if>
<if test="fillingYear != null and fillingYear != ''">
and filling_year = #{fillingYear}
</if>
<if test="fillingMonth != null and fillingMonth != ''">
and filling_month = #{fillingMonth}
</if>
</where>
order by id desc
</select>
<!--通知任务佐证材料子表的数据-->
<select id="selectNoticeMaterialsById" resultMap="SysTeacherStuNoticeMaterialsResult">
select *
from sys_teacher_stu_notice_materials
<where>
<if test="fdyName != null and fdyName != ''">
and fdy_name = #{fdyName}
</if>
<if test="fillingYear != null and fillingYear != ''">
and filling_year = #{fillingYear}
</if>
<if test="fillingMonth != null and fillingMonth != ''">
and filling_month = #{fillingMonth}
</if>
</where>
order by id desc
</select>
<sql id="selectSysTeacherKpiFillingStuMgtVo">
select id,