学生奖惩内容

This commit is contained in:
2025-09-29 15:06:02 +08:00
parent 79ba38fc3f
commit 6f69057678
44 changed files with 512 additions and 430 deletions

3
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,3 @@
{
"java.compile.nullAnalysis.mode": "automatic"
}

View File

@@ -111,7 +111,7 @@ public class DmsNeedCardStuServiceImpl extends ServiceImpl<DmsNeedCardStuMapper,
// 拼接成"2023001|2023002|2023003"格式
String toUser = String.join("|", batch);
// 调用你的发送消息方法
weChatUtil.sendTextMessage(toUser, msg);
//weChatUtil.sendTextMessage(toUser, msg);
}
}
@@ -163,7 +163,8 @@ public class DmsNeedCardStuServiceImpl extends ServiceImpl<DmsNeedCardStuMapper,
// 拼接成"2023001|2023002|2023003"格式
String toUser = String.join("|", batch);
// 调用你的发送消息方法
weChatUtil.sendTextMessage(toUser, msg);
// todo 先暂停
//weChatUtil.sendTextMessage(toUser, msg);
}

View File

@@ -397,7 +397,7 @@ public class CphBiyeApplyController extends BaseController {
/**
* 修改优秀毕业生
*/
@PreAuthorize("@ss.hasPermi('comprehensive:biyeapply:edit')")
// @PreAuthorize("@ss.hasPermi('comprehensive:biyeapply:edit')")
@Log(title = "优秀毕业生", businessType = BusinessType.UPDATE)
@PostMapping("/update")
@ApiOperation("修改优秀毕业生")

View File

@@ -53,12 +53,7 @@ public class CphGoodAuditController extends BaseController {
@PostMapping("/changeApply")
@ApiOperation("修改评优申请记录")
public AjaxResult changeApply(@RequestBody CphGoodAudit param){
boolean hasRole = RoleBool.isJwc(getUserId(),_postService);
if(hasRole){
return cphGoodAuditService.changeApply(param);
}else{
return AjaxResult.error(401,"你无权做这些");
}
}

View File

@@ -385,7 +385,7 @@ public class CphLakeApplyController extends BaseController {
/**
* 修改静湖之星申请
*/
@PreAuthorize("@ss.hasPermi('comprehensive:lakeapply:edit')")
// @PreAuthorize("@ss.hasPermi('comprehensive:lakeapply:edit')")
@Log(title = "静湖之星申请", businessType = BusinessType.UPDATE)
@PostMapping("/update")
@ApiOperation("修改静湖之星申请")

View File

@@ -2,33 +2,34 @@ package com.srs.web.controller.comprehensive;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.srs.comprehensive.domain.CphBiyeApply;
import com.srs.comprehensive.domain.Dto.CphCancel;
import com.srs.comprehensive.domain.Vo.ExcelGoodClass;
import com.srs.system.domain.SysDeptMap;
import com.srs.system.service.ISysDeptMapService;
import com.srs.system.service.ISysPostService;
import com.srs.web.controller.common.RoleBool;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.*;
import org.springframework.security.access.prepost.PreAuthorize;
import com.srs.comprehensive.domain.CphNewGoodClassApply;
import com.srs.comprehensive.service.ICphNewGoodClassApplyService;
import com.srs.common.core.controller.BaseController;
import com.srs.common.core.domain.AjaxResult;
import com.srs.common.utils.poi.ExcelUtil;
import com.srs.common.enums.BusinessType;
import com.srs.common.annotation.Log;
import com.srs.common.core.page.TableDataInfo;
import com.srs.common.enums.BusinessType;
import com.srs.comprehensive.domain.CphNewGoodClassApply;
import com.srs.comprehensive.domain.Dto.CphCancel;
import com.srs.comprehensive.domain.Vo.ExcelGoodClass;
import com.srs.comprehensive.service.ICphNewGoodClassApplyService;
import com.srs.system.domain.SysDeptMap;
import com.srs.system.service.ISysDeptMapService;
import com.srs.system.service.ISysPostService;
import com.srs.common.utils.poi.ExcelUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.srs.common.annotation.Log;
/**
* 先进班集体Controller
@@ -376,7 +377,7 @@ public class CphNewGoodClassApplyController extends BaseController {
/**
* 修改先进班集体
*/
@PreAuthorize("@ss.hasPermi('comprehensive:newClassGoodApply:edit')")
// @PreAuthorize("@ss.hasPermi('comprehensive:newClassGoodApply:edit')")
@Log(title = "先进班集体", businessType = BusinessType.UPDATE)
@PostMapping("/update")
@ApiOperation("修改先进班集体")

View File

@@ -2,6 +2,7 @@ package com.srs.web.controller.routine;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@@ -37,11 +38,10 @@ public class RtStuAtSchoolController extends BaseController {
/**
* 查询测试列表
*/
@PreAuthorize("@ss.hasPermi('routine:school:list')")
@GetMapping("/list")
@ApiOperation("查询测试列表")
public TableDataInfo list(RtStuAtSchool rtStuAtSchool)
{
@PreAuthorize("@ss.hasPermi('routine:school:list')")
@GetMapping("/list")
@ApiOperation("查询测试列表")
public TableDataInfo list(RtStuAtSchool rtStuAtSchool) {
startPage();
List<RtStuAtSchool> list = rtStuAtSchoolService.selectRtStuAtSchoolList(rtStuAtSchool);
return getDataTable(list);
@@ -54,8 +54,7 @@ public class RtStuAtSchoolController extends BaseController {
@Log(title = "测试", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@ApiOperation("导出测试列表")
public void export(HttpServletResponse response, RtStuAtSchool rtStuAtSchool)
{
public void export(HttpServletResponse response, RtStuAtSchool rtStuAtSchool) {
List<RtStuAtSchool> list = rtStuAtSchoolService.selectRtStuAtSchoolList(rtStuAtSchool);
ExcelUtil<RtStuAtSchool> util = new ExcelUtil<RtStuAtSchool>(RtStuAtSchool.class);
util.exportExcel(response, list, "测试数据");
@@ -67,8 +66,7 @@ public class RtStuAtSchoolController extends BaseController {
@PreAuthorize("@ss.hasPermi('routine:school:query')")
@GetMapping(value = "/{id}")
@ApiOperation("获取测试详细信息")
public AjaxResult getInfo(@PathVariable("id") Integer id)
{
public AjaxResult getInfo(@PathVariable("id") Integer id) {
return success(rtStuAtSchoolService.selectRtStuAtSchoolById(id));
}
@@ -79,8 +77,7 @@ public class RtStuAtSchoolController extends BaseController {
@Log(title = "测试", businessType = BusinessType.INSERT)
@PostMapping("/add")
@ApiOperation("新增测试")
public AjaxResult add(@RequestBody RtStuAtSchool rtStuAtSchool)
{
public AjaxResult add(@RequestBody RtStuAtSchool rtStuAtSchool) {
return toAjax(rtStuAtSchoolService.insertRtStuAtSchool(rtStuAtSchool));
}
@@ -91,8 +88,7 @@ public class RtStuAtSchoolController extends BaseController {
@Log(title = "测试", businessType = BusinessType.UPDATE)
@PostMapping("/update")
@ApiOperation("修改测试")
public AjaxResult edit(@RequestBody RtStuAtSchool rtStuAtSchool)
{
public AjaxResult edit(@RequestBody RtStuAtSchool rtStuAtSchool) {
return toAjax(rtStuAtSchoolService.updateRtStuAtSchool(rtStuAtSchool));
}
@@ -103,8 +99,7 @@ public class RtStuAtSchoolController extends BaseController {
@Log(title = "测试", businessType = BusinessType.DELETE)
@PostMapping("/{ids}")
@ApiOperation("删除测试")
public AjaxResult remove(@PathVariable Integer[] ids)
{
public AjaxResult remove(@PathVariable Integer[] ids) {
return toAjax(rtStuAtSchoolService.deleteRtStuAtSchoolByIds(ids));
}
}

View File

@@ -202,6 +202,13 @@ public class SurItineraryController extends BaseController {
return surItineraryService.manyLeaveAudit(ids);
}
@PreAuthorize("@ss.hasPermi('survey:itinerary:leaveAudit')")
@PostMapping("/manyLeaveReject")
@ApiOperation("辅导员批量离校审核驳回")
public AjaxResult manyLeaveReject(@RequestBody Long[] ids){
return surItineraryService.manyLeaveReject(ids);
}
@PreAuthorize("@ss.hasPermi('survey:itinerary:leaveAudit')")
@PostMapping("/leaveAudit")
@ApiOperation("辅导员离校审核")
@@ -355,13 +362,12 @@ public class SurItineraryController extends BaseController {
/**
* 修改学生假期返校
*/
@PreAuthorize("@ss.hasPermi('survey:itinerary:edit')")
@Log(title = "学生假期返校", businessType = BusinessType.UPDATE)
@PostMapping("/update")
@ApiOperation("修改学生假期返校")
public AjaxResult edit(@RequestBody SurItinerary surItinerary)
{
return toAjax(surItineraryService.updateSurItinerary(surItinerary));
return toAjax(surItineraryService.updateById(surItinerary));
}
/**

View File

@@ -83,7 +83,7 @@ spring:
# 地址
host: localhost #正式环境redis
# host: 47.112.118.149 #测试开发地址
# 端口默认为6379
# 端口默认为6379
port: 6379
# 数据库索引
database: 0

View File

@@ -1,6 +1,7 @@
package com.srs.comprehensive.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.*;
import com.srs.common.annotation.Excel;
@@ -23,10 +24,10 @@ import lombok.Builder;
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ApiModel(value = "CphGoodAudit对象" , description = "评优审核")
@ApiModel(value = "CphGoodAudit对象", description = "评优审核")
@TableName("cph_good_audit")
public class CphGoodAudit extends BaseEntity {
private static final long serialVersionUID=1L;
private static final long serialVersionUID = 1L;
/**
* 评优审核表id
@@ -73,7 +74,7 @@ private static final long serialVersionUID=1L;
@ApiModelProperty("辅导员审核时间")
@TableField("fdy_time")
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "辅导员审核时间" , width = 30, dateFormat = "yyyy-MM-dd")
@Excel(name = "辅导员审核时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date fdyTime;
/**
@@ -106,7 +107,7 @@ private static final long serialVersionUID=1L;
@ApiModelProperty("学院审核时间")
@TableField("dept_time")
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "学院审核时间" , width = 30, dateFormat = "yyyy-MM-dd")
@Excel(name = "学院审核时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date deptTime;
/**
@@ -139,7 +140,7 @@ private static final long serialVersionUID=1L;
@ApiModelProperty("学工审核时间")
@TableField("final_time")
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "学工审核时间" , width = 30, dateFormat = "yyyy-MM-dd")
@Excel(name = "学工审核时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date finalTime;
/**
@@ -158,4 +159,4 @@ private static final long serialVersionUID=1L;
private String delFlag;
}
}

View File

@@ -89,6 +89,12 @@ public class SrsClass extends BaseEntity {
})
private CphTeacher teacher;
/**
* 辅导员名称
*/
@TableField(exist = false)
private String teacherName;
// /**
// * 辅导员
// */

View File

@@ -1,13 +1,14 @@
package com.srs.comprehensive.domain.Vo;
import com.srs.common.annotation.Excel;
import com.srs.common.core.domain.BaseEntity;
/**
* @author zhy
* @date 2024-05-21 15:05
* @description
*/
public class ExcelGoodClass {
public class ExcelGoodClass extends BaseEntity {
@Excel(name = "学院")
public String deptName;

View File

@@ -68,6 +68,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="className != null and className != ''"> and class_name like concat('%', #{className}, '%')</if>
<if test="deptId != null "> and d.dept_id = #{deptId}</if>
<if test="status != null and status != ''"> and status = #{status}</if>
<if test="teacherName != null and teacherName != ''"> and t.name like concat('%', #{teacherName}, '%')</if>
</where>
order by class_code desc

View File

@@ -34,34 +34,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where id = #{id}
</select>
<select id="listView" parameterType="CphSearch" resultType="SrsKnrdApply">
select a.*,d.major_type_name
select a.*, d.major_type_name, g.step as latest_step, g.status as latest_status
from srs_knrd_apply as a
left join srs_student as b on a.xh = b.stu_no
left join srs_class as c on b.class_id = c.class_id
left join srs_majors as d on c.major_id = d.major_id
left join cph_teacher as e on c.teacher_id = e.teacher_id
-- left join srs_knrd_approval_record r on r.apply_id=a.id
left join sys_dept_map as f on d.college_id = f.old_dept_id
left join (
SELECT * FROM srs_knrd_approval_record as record where id in(
select MAX(id) FROM srs_knrd_approval_record GROUP BY apply_id
)
SELECT r1.*
FROM srs_knrd_approval_record r1
INNER JOIN (
SELECT apply_id, MAX(id) as max_id
FROM srs_knrd_approval_record
GROUP BY apply_id
) r2 ON r1.apply_id = r2.apply_id AND r1.id = r2.max_id
) as g on g.apply_id = a.id
where a.step !=0 and a.step !=1
<if test="collegeId !=null"> and d.college_id = #{collegeId}</if>
<!-- <if test="step != null "> and r.step = #{step}</if>-->
<if test="tNo != null "> and e.employee_id = #{tNo}</if>
<if test="deptId != null "> and f.new_dept_id = #{deptId}</if>
<if test="stuNo != null "> and a.xh = #{stuNo}</if>
<if test="sfzhm != null "> and a.sfzhm = #{sfzhm}</if>
<if test="xm != null "> and a.xm like concat('%',#{xm},'%')</if>
<if test="xh != null "> and a.xh like concat('%',#{xh},'%')</if>
<if test="yj != null "> and (a.bjpyyj = #{yj} or a.ejxyldqmyj = #{yj} or xsqmyj = #{yj})</if>
<if test="applyYear != null "> and a.apply_year like CONCAT('%',#{applyYear},'%')</if>
where a.step != 0 and a.step != 1
<if test="collegeId != null"> and d.college_id = #{collegeId}</if>
<if test="tNo != null"> and e.employee_id = #{tNo}</if>
<if test="deptId != null"> and f.new_dept_id = #{deptId}</if>
<if test="stuNo != null"> and a.xh = #{stuNo}</if>
<if test="sfzhm != null"> and a.sfzhm = #{sfzhm}</if>
<if test="xm != null"> and a.xm like concat('%',#{xm},'%')</if>
<if test="xh != null"> and a.xh like concat('%',#{xh},'%')</if>
<if test="yj != null"> and (a.bjpyyj = #{yj} or a.ejxyldqmyj = #{yj} or a.xsqmyj = #{yj})</if>
<if test="applyYear != null"> and a.apply_year like CONCAT('%',#{applyYear},'%')</if>
order by a.id desc
</select>
</select>
<select id="selectSrsKnrdApprovalRecordByIds" resultType="SrsKnrdApprovalRecord">
select * from srs_knrd_approval_record where apply_id=#{id}
</select>

View File

@@ -280,36 +280,46 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
a.bankCard as bankCard,
a.bankAddr as bankAddr,
a.xxqm as xxqm,
-- f.step as step,
-- f.status as status,
EXISTS(SELECT application_id FROM rt_stu_disciplinary_application rsda WHERE rsda.stu_no = a.xh and (penalty_status = 0 or penalty_status = 2)) as penalty_status0,
EXISTS(SELECT application_id FROM rt_stu_disciplinary_application rsda WHERE rsda.stu_no = a.xh and (penalty_status = 1 )) as penalty_status1,
EXISTS(SELECT application_id FROM rt_stu_disciplinary_application rsda WHERE rsda.stu_no = a.xh and (penalty_status = 3 )) as penalty_status3,
a.sfzhm as sfzhm,d.major_type_name
COALESCE(penalty.penalty_status0, 0) as penalty_status0,
COALESCE(penalty.penalty_status1, 0) as penalty_status1,
COALESCE(penalty.penalty_status3, 0) as penalty_status3,
a.sfzhm as sfzhm,
d.major_type_name
from srs_zxj_apply as a
left join srs_student as b on a.xh = b.stu_no
left join srs_class as c on b.class_id = c.class_id
left join srs_majors as d on c.major_id = d.major_id
left join cph_teacher as e on c.teacher_id = e.teacher_id
left join (
SELECT * FROM srs_zxj_approval_record as record where id in(
select MAX(id) FROM srs_zxj_approval_record GROUP BY apply_id
)
SELECT * FROM (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY apply_id ORDER BY id DESC) as rn
FROM srs_zxj_approval_record
) record where rn = 1
) as f on f.apply_id = a.id
left join sys_dept_map as g on d.college_id = g.old_dept_id
left join (
SELECT stu_no,
MAX(CASE WHEN penalty_status IN (0, 2) THEN 1 ELSE 0 END) as penalty_status0,
MAX(CASE WHEN penalty_status = 1 THEN 1 ELSE 0 END) as penalty_status1,
MAX(CASE WHEN penalty_status = 3 THEN 1 ELSE 0 END) as penalty_status3
FROM rt_stu_disciplinary_application
GROUP BY stu_no
) penalty on penalty.stu_no = a.xh
<where>
<!-- <if test="step != null "> and exists (select apply_id from srs_zxj_approval_record r where r.step = ${step} and r.apply_id = a.id )</if>-->
<if test="tNo != null "> and e.employee_id = #{tNo}</if>
<if test="deptId != null "> and g.new_dept_id = #{deptId}</if>
<if test="stuNo != null "> and a.xh = #{stuNo}</if>
<if test="xm != null "> and a.xm like concat('%',#{xm},'%')</if>
<if test="xh != null "> and a.xh like concat('%',#{xh},'%')</if>
<if test="status != null "> and (a.status1 = #{status} or a.status2 = #{status} or a.status3 = #{status})</if>
<if test="applyYear != null"> and a.apply_year like CONCAT('%',#{applyYear},'%')</if>
<if test="tNo != null ">and e.employee_id = #{tNo}</if>
<if test="deptId != null ">and g.new_dept_id = #{deptId}</if>
<if test="stuNo != null ">and a.xh = #{stuNo}</if>
<if test="xm != null ">and a.xm like concat('%',#{xm},'%')</if>
<if test="xh != null ">and a.xh like concat('%',#{xh},'%')</if>
<if test="status != null ">and (a.status1 = #{status} or a.status2 = #{status} or a.status3 = #{status})
</if>
<if test="applyYear != null">and a.apply_year like CONCAT('%',#{applyYear},'%')</if>
</where>
order by a.id desc
</select>
<insert id="insertSrsZxjApply" parameterType="SrsZxjApply" useGeneratedKeys="true" keyProperty="id">
insert into srs_zxj_apply
<trim prefix="(" suffix=")" suffixOverrides=",">

View File

@@ -80,7 +80,7 @@ public class BoStartListener implements ExecutionListener {
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class);
// 构造包含超链接的消息内容
String content = "您有待处理任务,<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>";
String content = "您有待处理任务,<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>";
// 步骤 4: 使用 userName 作为接收人发送消息
//weChatUtil.sendTextMessage(userName, content);
@@ -122,7 +122,7 @@ public class BoStartListener implements ExecutionListener {
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class);
// 构造包含超链接的消息内容
String content = "您有待处理任务,<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>";
String content = "您有待处理任务,<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>";
// 步骤 4: 使用 userName 作为接收人发送消息
weChatUtil.sendTextMessage(userName, content);

View File

@@ -90,7 +90,7 @@ public class CounselorListener implements ExecutionListener {
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class);
// 构造包含超链接的消息内容
String content = "您有待处理任务,<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>";
String content = "您有待处理任务,<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>";
// 步骤 4: 使用 userName 作为接收人发送消息
weChatUtil.sendTextMessage(userName, content);

View File

@@ -149,7 +149,7 @@ public class LeadAuditListener implements ExecutionListener {
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class);
// 构造包含超链接的消息内容
String content = "您有待处理任务,<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>";
String content = "您有待处理任务,<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>";
// 步骤 4: 使用 userName 作为接收人发送消息
weChatUtil.sendTextMessage(userName, content);

View File

@@ -106,7 +106,7 @@ public class LeadEentListener implements ExecutionListener {
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class);
// 构造包含超链接的消息内容
String content = "您有待处理任务,<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>";
String content = "您有待处理任务,<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>";
// 步骤 4: 使用 userName 作为接收人发送消息
weChatUtil.sendTextMessage(userName, content);

View File

@@ -82,7 +82,7 @@ public class LeadStartListener implements ExecutionListener {
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class);
// 构造包含超链接的消息内容
String content = "您有待处理任务,<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>";
String content = "您有待处理任务,<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>";
// 步骤 4: 使用 userName 作为接收人发送消息
weChatUtil.sendTextMessage(userName, content);

View File

@@ -105,7 +105,7 @@ public class LeaveApproveListener implements ExecutionListener {
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class);
// 构造包含超链接的消息内容
String content = "您有待处理任务,<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>";
String content = "您有待处理任务,<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>";
// 步骤 4: 使用 userName 作为接收人发送消息
weChatUtil.sendTextMessage(userName, content); // 发送消息的方法

View File

@@ -81,7 +81,7 @@ public class LeaveStartApproveListener implements ExecutionListener {
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class);
// 构造包含超链接的消息内容
String content = "您有待处理任务,<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>";
String content = "您有待处理任务,<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>";
// 步骤 4: 使用 userName 作为接收人发送消息
weChatUtil.sendTextMessage(userName, content);

View File

@@ -85,7 +85,7 @@ public class SecondaryLeaderListener implements ExecutionListener {
// WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class);
//
// // 构造包含超链接的消息内容
// String content = "您有待处理任务,<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>";
// String content = "您有待处理任务,<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>";
//
// // 步骤 4: 使用 userName 作为接收人发送消息
// //weChatUtil.sendTextMessage(userName, content);
@@ -117,7 +117,7 @@ public class SecondaryLeaderListener implements ExecutionListener {
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class);
// 构造包含超链接的消息内容
String content = "您有待处理任务,<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>";
String content = "您有待处理任务,<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>";
// 步骤 4: 使用 userName 作为接收人发送消息
weChatUtil.sendTextMessage(userName, content);

View File

@@ -60,7 +60,7 @@ public class ArchivingNotifyListener implements ExecutionListener {
List<String> userNameList = disciplinaryMapper.getUserNamesByUserIdList(userIdList);
if (userNameList != null && !userNameList.isEmpty()) {
String toUser = String.join("|", userNameList);
String weChatMessage = "您有一条新的学生违纪归档任务待处理,<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>。";
String weChatMessage = "您有一条新的学生违纪归档任务待处理,<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>。";
weChatUtil.sendTextMessage(toUser, weChatMessage);
log.info("已成功向归档角色 ({}) 发送企业微信通知。", ARCHIVING_ROLE_KEY);
} else {
@@ -73,7 +73,7 @@ public class ArchivingNotifyListener implements ExecutionListener {
String activityId = (nextElement != null) ? nextElement.getId() : "Activity_1agoizv"; // 节点的ID作为备用
String messageText = "您有一条新的【" + taskName + "】待办任务需要处理。";
String link = "<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>。";
String link = "<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>。";
String hiddenIdentifier = String.format("<span id='flow-identifier' data-proc-inst-id='%s' data-activity-id='%s' style='display:none;'></span>",
execution.getProcessInstanceId(), activityId);
String internalMessageContent = messageText + link + hiddenIdentifier;

View File

@@ -39,7 +39,7 @@ public class EJXYSJListener implements ExecutionListener {
// 构造包含超链接的消息内容
String content = "您有一条新的学生违纪审批任务待处理," +
"<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>";
"<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>";
// 步骤 4: 使用 userName 作为接收人发送消息
weChatUtil.sendTextMessage(userName, content);

View File

@@ -50,12 +50,12 @@ public class InitiatorNotificationListener implements ExecutionListener {
// --- 2. 准备通知内容 (解决taskName为空的问题) ---
String nextTaskName = getNextTaskName(execution);
String weChatMessage = "您提交的学生违纪处分申请已有最终处理结果,<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>。";
String weChatMessage = "您提交的学生违纪处分申请已有最终处理结果,<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>。";
String internalMessageText = "您有一条新的【" + nextTaskName + "】待办任务需要处理。";
String hiddenIdentifier = String.format("<span id='flow-identifier' data-proc-inst-id='%s' data-activity-id='%s' style='display:none;'></span>",
execution.getProcessInstanceId(),
((SequenceFlow) execution.getCurrentFlowElement()).getTargetRef());
String internalMessageContent = internalMessageText + "<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>。" + hiddenIdentifier;
String internalMessageContent = internalMessageText + "<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>。" + hiddenIdentifier;
// --- 3. 发送企业微信通知 ---
sendWeChatNotification(initiatorUserId, weChatMessage);

View File

@@ -46,7 +46,7 @@ public class InitiatorResultListener implements ExecutionListener {
if (initiatorUserName != null && !initiatorUserName.isEmpty()) {
// 4. 发送通知
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class);
String content = "您提交的学生违纪处分申请已有最终处理结果,<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>。\"";
String content = "您提交的学生违纪处分申请已有最终处理结果,<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>。\"";
weChatUtil.sendTextMessage(initiatorUserName, content);
log.info("已成功向流程发起人 ({}) 发送结果通知。", initiatorUserName);

View File

@@ -47,7 +47,7 @@ public class MultiInstanceMessageListener implements ExecutionListener {
// --- 步骤 3: 准备消息内容 ---
String messageText = "您有一条新的【" + taskName + "】待办任务需要处理。";
String link = "<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>。";
String link = "<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>。";
String hiddenIdentifier = String.format("<span id='flow-identifier' data-proc-inst-id='%s' data-activity-id='%s' style='display:none;'></span>",
execution.getProcessInstanceId(),
activityId);

View File

@@ -60,7 +60,7 @@ public class SchoolLeaderApprovalListener implements ExecutionListener {
List<String> userNameList = disciplinaryMapper.getUserNamesByUserIdList(userIdList);
if (userNameList != null && !userNameList.isEmpty()) {
String toUser = String.join("|", userNameList);
String weChatMessage = "校领导您有一条新的学生违纪审批任务待处理,<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>。";
String weChatMessage = "校领导您有一条新的学生违纪审批任务待处理,<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>。";
weChatUtil.sendTextMessage(toUser, weChatMessage);
log.info("已成功向校领导 (角色: {}) 发送企业微信通知。", LEADER_ROLE_KEY);
}
@@ -71,7 +71,7 @@ public class SchoolLeaderApprovalListener implements ExecutionListener {
String activityId = (nextElement != null) ? nextElement.getId() : "Activity_0ftj9eo";
String messageText = "您有一条新的【" + taskName + "】待办任务需要处理。";
String link = "<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>。";
String link = "<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>。";
String hiddenIdentifier = String.format("<span id='flow-identifier' data-proc-inst-id='%s' data-activity-id='%s' style='display:none;'></span>",
execution.getProcessInstanceId(), activityId);
String internalMessageContent = messageText + link + hiddenIdentifier;

View File

@@ -106,7 +106,7 @@ public class StuInfoListener implements ExecutionListener {
String messageText = "您有一条新的【" + taskName + "】待办任务需要处理。";
String link = "<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>。";
String link = "<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>。";
String hiddenIdentifier = String.format("<span id='flow-identifier' data-proc-inst-id='%s' data-activity-id='%s' style='display:none;'></span>",
execution.getProcessInstanceId(), activityId);
String internalMessageContent = messageText + link + hiddenIdentifier;

View File

@@ -43,7 +43,7 @@ public class WSSListener implements ExecutionListener {
String toUser = String.join("|", userNameList);
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class);
String content = "您有一条新的学生违纪审批任务待处理,<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>。";
String content = "您有一条新的学生违纪审批任务待处理,<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>。";
weChatUtil.sendTextMessage(toUser, content);
log.info("已成功向角色 '{}' 的成员发送通知。接收人: {}", TARGET_ROLE_KEY, toUser);

View File

@@ -54,7 +54,7 @@ public class XGLDSHListener implements ExecutionListener {
String toUser = String.join("|", userNameList);
String content = "您有一条新的学生违纪审批任务待处理," +
"<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>";
"<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>";
weChatUtil.sendTextMessage(toUser, content);
log.info("流程实例 [{}]: 已成功向角色 '{}' 成员发送企微通知,接收人: {}", processInstanceId, roleKey, toUser);

View File

@@ -43,7 +43,7 @@ public class XLZXListener implements ExecutionListener {
String toUser = String.join("|", userNameList);
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class);
String content = "您有一条新的学生违纪审批任务待处理,<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>。";
String content = "您有一条新的学生违纪审批任务待处理,<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>。";
weChatUtil.sendTextMessage(toUser, content);
log.info("已成功向角色 '{}' 的成员发送通知。接收人: {}", TARGET_ROLE_KEY, toUser);

View File

@@ -58,7 +58,7 @@ public class XSJYGLKListener implements ExecutionListener {
String toUser = String.join("|", userNameList);
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class);
String content = "您有一条新的学生违纪审批任务待处理,<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>。";
String content = "您有一条新的学生违纪审批任务待处理,<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>。";
weChatUtil.sendTextMessage(toUser, content);
log.info("已成功向角色 '{}' 的成员发送企业微信通知。接收人: {}", roleKey, toUser);

View File

@@ -45,7 +45,7 @@ public class XWGSListener implements ExecutionListener {
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class);
// 构造包含超链接的消息内容
String content = "您有一条新的学生违纪审批任务待处理,<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>。";
String content = "您有一条新的学生违纪审批任务待处理,<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>。";
// 步骤 4: 使用 userName 作为接收人发送消息
weChatUtil.sendTextMessage(userName, content);

View File

@@ -62,7 +62,7 @@ public class XYWJCLWYHListener implements ExecutionListener {
return;
}
String toUser = String.join("|", userNameList);
String content = "您有一条新的学生违纪审批任务待处理,<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>请点击前往处理</a>。";
String content = "您有一条新的学生违纪审批任务待处理,<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>请点击前往处理</a>。";
weChatUtil.sendTextMessage(toUser, content);
log.info("流程实例 [{}]: 已成功向'委员会'发送企微通知。", processInstanceId);
} catch (Exception e) {

View File

@@ -50,7 +50,7 @@ public class StuCounselorListener implements ExecutionListener {
// 构造包含超链接的消息内容
String content = "您有一条新的学生违纪审批任务待处理," +
"<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>点此查看</a>";
"<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>点此查看</a>";
// 发送企业微信消息
weChatUtil.sendTextMessage(userName, content);

View File

@@ -37,7 +37,7 @@ public class StuReceiveListener implements ExecutionListener {
String content = "您的违纪处理流程有新的进展:" +
approveResult + "" +
"<a href='http://zhxg.gxsdxy.cn/web/#/pages/Approval/index'>点此查看详情</a>";
"<a href='http://zhxg.gxsdxy.cn/wab/#/pages/Approval/index'>点此查看详情</a>";
// 发送企业微信消息
weChatUtil.sendTextMessage(stuUserName, content);

View File

@@ -26,22 +26,13 @@ public class RegTask {
{
List<SrsStuCheck> list= srsStuCheckService.getSrsStucheckList();
for (SrsStuCheck m:list) {
QueryWrapper<SrsStuCheck> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("ksh",m.getKsh());
queryWrapper.last("limit 1");
SrsStuCheck srsStuCheck=checkService.getOne(queryWrapper);
if(srsStuCheck!=null){
continue;
}else{
SrsStuCheck addSrsStuCheck=new SrsStuCheck();
addSrsStuCheck.setIsCheck(m.getIsCheck());
addSrsStuCheck.setKsh(m.getKsh());
addSrsStuCheck.setCheckTime(m.getCheckTime());
addSrsStuCheck.setCreateTime(getNowDate());
addSrsStuCheck.setCreateBy("RegTask");
checkService.save(addSrsStuCheck);
}
SrsStuCheck srsStuCheck=new SrsStuCheck();
srsStuCheck.setIsCheck(m.getIsCheck());
srsStuCheck.setKsh(m.getKsh());
srsStuCheck.setCheckTime(m.getCheckTime());
UpdateWrapper<SrsStuCheck> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("ksh",m.getKsh());
checkService.update(srsStuCheck,updateWrapper);
}
}

View File

@@ -1,6 +1,7 @@
package com.srs.routine.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.srs.common.annotation.Excel;
import com.baomidou.mybatisplus.annotation.*;
@@ -10,7 +11,6 @@ import lombok.*;
import com.srs.common.core.domain.BaseEntity;
/**
* 测试对象 rt_stu_at_school
*
@@ -22,10 +22,10 @@ import com.srs.common.core.domain.BaseEntity;
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ApiModel(value = "RtStuAtSchool对象" , description = "在校证明")
@ApiModel(value = "RtStuAtSchool对象", description = "在校证明")
@TableName("rt_stu_at_school")
public class RtStuAtSchool extends BaseEntity{
private static final long serialVersionUID=1L;
public class RtStuAtSchool extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 学生id
@@ -88,7 +88,7 @@ private static final long serialVersionUID=1L;
@ApiModelProperty("申请时间")
@TableField("stu_created")
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "申请时间" , width = 30, dateFormat = "yyyy-MM-dd")
@Excel(name = "申请时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date stuCreated;
/**
@@ -101,7 +101,6 @@ private static final long serialVersionUID=1L;
/**
* 原因
*/
@ApiModelProperty("原因")
@TableField("because")
@@ -146,7 +145,7 @@ private static final long serialVersionUID=1L;
@ApiModelProperty("入学时间")
@TableField("Intake")
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "入学时间" , width = 30, dateFormat = "yyyy-MM-dd")
@Excel(name = "入学时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date Intake;
/**
@@ -243,7 +242,7 @@ private static final long serialVersionUID=1L;
@ApiModelProperty("辅导员审批时间")
@TableField("fdtime")
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "辅导员审批时间" , width = 30, dateFormat = "yyyy-MM-dd")
@Excel(name = "辅导员审批时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date fdtime;
/**
@@ -252,8 +251,8 @@ private static final long serialVersionUID=1L;
@ApiModelProperty("学工处审批时间")
@TableField("xgtime")
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "学工处审批时间" , width = 30, dateFormat = "yyyy-MM-dd")
@Excel(name = "学工处审批时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date xgtime;
}
}

View File

@@ -1,10 +1,16 @@
package com.srs.routine.service.impl;
import java.util.Date;
import java.util.List;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.srs.common.annotation.Excel;
import com.srs.common.core.domain.entity.SysUser;
import com.srs.common.exception.ServiceException;
import com.srs.common.utils.SecurityUtils;
import com.srs.system.service.ISysUserService;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.beans.factory.annotation.Autowired;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@@ -61,18 +67,14 @@ public class RtStuAtSchoolServiceImpl extends ServiceImpl<RtStuAtSchoolMapper,Rt
*/
@Override
public int insertRtStuAtSchool(RtStuAtSchool rtStuAtSchool) {
RtStuAtSchool rtStuAtSchool1 = rtStuAtSchoolMapper.selectRtStuAtSchoolByStudentId(rtStuAtSchool.getStudentId());
if (rtStuAtSchool1 != null){
throw new ServiceException("申请已提交,请勿重复提交", 500);
}
SysUser sysUser = sysUserService.selectUserByUserName(rtStuAtSchool.getStudentId());
if (sysUser == null) {
throw new ServiceException("该学生不存在", 500);
}
return rtStuAtSchoolMapper.insertRtStuAtSchool(rtStuAtSchool);
}
@@ -84,6 +86,12 @@ public class RtStuAtSchoolServiceImpl extends ServiceImpl<RtStuAtSchoolMapper,Rt
*/
@Override
public int updateRtStuAtSchool(RtStuAtSchool rtStuAtSchool) {
// 如果学工意见和学工审核状态不为空,去到当前登陆人的姓名赋值给学工姓名,并给学工处审核 时间赋值,取出当前时间
if (rtStuAtSchool.getXgopinion() != null && rtStuAtSchool.getXgstatus() != null) {
rtStuAtSchool.setXgname(SecurityUtils.getLoginUser().getUser().getNickName());
rtStuAtSchool.setXgtime(new Date());
}
return rtStuAtSchoolMapper.updateRtStuAtSchool(rtStuAtSchool);
}

View File

@@ -115,7 +115,6 @@ private static final long serialVersionUID=1L;
@ApiModelProperty("联系电话")
@TableField("phone")
@Excel(name = "联系电话")
@Sensitive(desensitizedType = DesensitizedType.PHONE)
public String phone;
/**
@@ -132,7 +131,6 @@ private static final long serialVersionUID=1L;
@ApiModelProperty("紧急联系人电话")
@TableField("emergency_contact_phone")
@Excel(name = "紧急联系人电话")
@Sensitive(desensitizedType = DesensitizedType.PHONE)
public String emergencyContactPhone;
/**
@@ -190,7 +188,6 @@ private static final long serialVersionUID=1L;
@ApiModelProperty("家长电话")
@TableField("parent_phone")
@Excel(name = "家长电话")
@Sensitive(desensitizedType = DesensitizedType.PHONE)
public String parentPhone;
/**
@@ -331,4 +328,11 @@ private static final long serialVersionUID=1L;
@TableField(exist = false)
public Long pageSize;
/**
* 是否填写筛选条件null-全部1-已填写0-未填写
*/
@ApiModelProperty("是否填写筛选条件")
@TableField(exist = false)
public Integer isFilled;
}

View File

@@ -60,6 +60,8 @@ public interface ISurItineraryService extends IService<SurItinerary> {
public AjaxResult manyLeaveAudit(Long[] ids);
public AjaxResult manyLeaveReject(Long[] ids);
public AjaxResult leaveAudit(SurItinerary param);
public List<SurItinerary> listView(SurItinerary param);