学生奖惩内容

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"格式 // 拼接成"2023001|2023002|2023003"格式
String toUser = String.join("|", batch); 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"格式 // 拼接成"2023001|2023002|2023003"格式
String toUser = String.join("|", batch); 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) @Log(title = "优秀毕业生", businessType = BusinessType.UPDATE)
@PostMapping("/update") @PostMapping("/update")
@ApiOperation("修改优秀毕业生") @ApiOperation("修改优秀毕业生")

View File

@@ -53,12 +53,7 @@ public class CphGoodAuditController extends BaseController {
@PostMapping("/changeApply") @PostMapping("/changeApply")
@ApiOperation("修改评优申请记录") @ApiOperation("修改评优申请记录")
public AjaxResult changeApply(@RequestBody CphGoodAudit param){ public AjaxResult changeApply(@RequestBody CphGoodAudit param){
boolean hasRole = RoleBool.isJwc(getUserId(),_postService);
if(hasRole){
return cphGoodAuditService.changeApply(param); 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) @Log(title = "静湖之星申请", businessType = BusinessType.UPDATE)
@PostMapping("/update") @PostMapping("/update")
@ApiOperation("修改静湖之星申请") @ApiOperation("修改静湖之星申请")

View File

@@ -2,33 +2,34 @@ package com.srs.web.controller.comprehensive;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletResponse; 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 com.srs.web.controller.common.RoleBool;
import org.springframework.beans.factory.annotation.Autowired; 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.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PathVariable; 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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; 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.controller.BaseController;
import com.srs.common.core.domain.AjaxResult; 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.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 * 先进班集体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) @Log(title = "先进班集体", businessType = BusinessType.UPDATE)
@PostMapping("/update") @PostMapping("/update")
@ApiOperation("修改先进班集体") @ApiOperation("修改先进班集体")

View File

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

View File

@@ -202,6 +202,13 @@ public class SurItineraryController extends BaseController {
return surItineraryService.manyLeaveAudit(ids); 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')") @PreAuthorize("@ss.hasPermi('survey:itinerary:leaveAudit')")
@PostMapping("/leaveAudit") @PostMapping("/leaveAudit")
@ApiOperation("辅导员离校审核") @ApiOperation("辅导员离校审核")
@@ -355,13 +362,12 @@ public class SurItineraryController extends BaseController {
/** /**
* 修改学生假期返校 * 修改学生假期返校
*/ */
@PreAuthorize("@ss.hasPermi('survey:itinerary:edit')")
@Log(title = "学生假期返校", businessType = BusinessType.UPDATE) @Log(title = "学生假期返校", businessType = BusinessType.UPDATE)
@PostMapping("/update") @PostMapping("/update")
@ApiOperation("修改学生假期返校") @ApiOperation("修改学生假期返校")
public AjaxResult edit(@RequestBody SurItinerary surItinerary) 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: localhost #正式环境redis
# host: 47.112.118.149 #测试开发地址 # host: 47.112.118.149 #测试开发地址
# 端口默认为6379 # 端口默认为6379
port: 6379 port: 6379
# 数据库索引 # 数据库索引
database: 0 database: 0

View File

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

View File

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

View File

@@ -1,13 +1,14 @@
package com.srs.comprehensive.domain.Vo; package com.srs.comprehensive.domain.Vo;
import com.srs.common.annotation.Excel; import com.srs.common.annotation.Excel;
import com.srs.common.core.domain.BaseEntity;
/** /**
* @author zhy * @author zhy
* @date 2024-05-21 15:05 * @date 2024-05-21 15:05
* @description * @description
*/ */
public class ExcelGoodClass { public class ExcelGoodClass extends BaseEntity {
@Excel(name = "学院") @Excel(name = "学院")
public String deptName; 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="className != null and className != ''"> and class_name like concat('%', #{className}, '%')</if>
<if test="deptId != null "> and d.dept_id = #{deptId}</if> <if test="deptId != null "> and d.dept_id = #{deptId}</if>
<if test="status != null and status != ''"> and status = #{status}</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> </where>
order by class_code desc order by class_code desc

View File

@@ -34,34 +34,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where id = #{id} where id = #{id}
</select> </select>
<select id="listView" parameterType="CphSearch" resultType="SrsKnrdApply"> <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 from srs_knrd_apply as a
left join srs_student as b on a.xh = b.stu_no 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_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 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 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 sys_dept_map as f on d.college_id = f.old_dept_id
left join ( left join (
SELECT * FROM srs_knrd_approval_record as record where id in( SELECT r1.*
select MAX(id) FROM srs_knrd_approval_record GROUP BY apply_id 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 ) as g on g.apply_id = a.id
where a.step !=0 and a.step !=1 where a.step != 0 and a.step != 1
<if test="collegeId !=null"> and d.college_id = #{collegeId}</if> <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="tNo != null "> and e.employee_id = #{tNo}</if> <if test="deptId != null"> and f.new_dept_id = #{deptId}</if>
<if test="deptId != null "> and f.new_dept_id = #{deptId}</if> <if test="stuNo != null"> and a.xh = #{stuNo}</if>
<if test="stuNo != null "> and a.xh = #{stuNo}</if> <if test="sfzhm != null"> and a.sfzhm = #{sfzhm}</if>
<if test="sfzhm != null "> and a.sfzhm = #{sfzhm}</if> <if test="xm != null"> and a.xm like concat('%',#{xm},'%')</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="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="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>
<if test="applyYear != null "> and a.apply_year like CONCAT('%',#{applyYear},'%')</if>
order by a.id desc order by a.id desc
</select> </select>
<select id="selectSrsKnrdApprovalRecordByIds" resultType="SrsKnrdApprovalRecord"> <select id="selectSrsKnrdApprovalRecordByIds" resultType="SrsKnrdApprovalRecord">
select * from srs_knrd_approval_record where apply_id=#{id} select * from srs_knrd_approval_record where apply_id=#{id}
</select> </select>

View File

@@ -280,36 +280,46 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
a.bankCard as bankCard, a.bankCard as bankCard,
a.bankAddr as bankAddr, a.bankAddr as bankAddr,
a.xxqm as xxqm, a.xxqm as xxqm,
-- f.step as step, COALESCE(penalty.penalty_status0, 0) as penalty_status0,
-- f.status as status, COALESCE(penalty.penalty_status1, 0) as penalty_status1,
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, COALESCE(penalty.penalty_status3, 0) as penalty_status3,
EXISTS(SELECT application_id FROM rt_stu_disciplinary_application rsda WHERE rsda.stu_no = a.xh and (penalty_status = 1 )) as penalty_status1, a.sfzhm as sfzhm,
EXISTS(SELECT application_id FROM rt_stu_disciplinary_application rsda WHERE rsda.stu_no = a.xh and (penalty_status = 3 )) as penalty_status3, d.major_type_name
a.sfzhm as sfzhm,d.major_type_name
from srs_zxj_apply as a from srs_zxj_apply as a
left join srs_student as b on a.xh = b.stu_no 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_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 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 cph_teacher as e on c.teacher_id = e.teacher_id
left join ( left join (
SELECT * FROM srs_zxj_approval_record as record where id in( SELECT * FROM (
select MAX(id) FROM srs_zxj_approval_record GROUP BY apply_id 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 ) 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 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> <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="tNo != null "> and e.employee_id = #{tNo}</if> <if test="deptId != null ">and g.new_dept_id = #{deptId}</if>
<if test="deptId != null "> and g.new_dept_id = #{deptId}</if> <if test="stuNo != null ">and a.xh = #{stuNo}</if>
<if test="stuNo != null "> and a.xh = #{stuNo}</if> <if test="xm != null ">and a.xm like concat('%',#{xm},'%')</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="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 test="status != null "> and (a.status1 = #{status} or a.status2 = #{status} or a.status3 = #{status})</if> </if>
<if test="applyYear != null"> and a.apply_year like CONCAT('%',#{applyYear},'%')</if> <if test="applyYear != null">and a.apply_year like CONCAT('%',#{applyYear},'%')</if>
</where> </where>
order by a.id desc order by a.id desc
</select> </select>
<insert id="insertSrsZxjApply" parameterType="SrsZxjApply" useGeneratedKeys="true" keyProperty="id"> <insert id="insertSrsZxjApply" parameterType="SrsZxjApply" useGeneratedKeys="true" keyProperty="id">
insert into srs_zxj_apply insert into srs_zxj_apply
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">

View File

@@ -80,7 +80,7 @@ public class BoStartListener implements ExecutionListener {
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class); 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 作为接收人发送消息 // 步骤 4: 使用 userName 作为接收人发送消息
//weChatUtil.sendTextMessage(userName, content); //weChatUtil.sendTextMessage(userName, content);
@@ -122,7 +122,7 @@ public class BoStartListener implements ExecutionListener {
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class); 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 作为接收人发送消息 // 步骤 4: 使用 userName 作为接收人发送消息
weChatUtil.sendTextMessage(userName, content); weChatUtil.sendTextMessage(userName, content);

View File

@@ -90,7 +90,7 @@ public class CounselorListener implements ExecutionListener {
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class); 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 作为接收人发送消息 // 步骤 4: 使用 userName 作为接收人发送消息
weChatUtil.sendTextMessage(userName, content); weChatUtil.sendTextMessage(userName, content);

View File

@@ -149,7 +149,7 @@ public class LeadAuditListener implements ExecutionListener {
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class); 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 作为接收人发送消息 // 步骤 4: 使用 userName 作为接收人发送消息
weChatUtil.sendTextMessage(userName, content); weChatUtil.sendTextMessage(userName, content);

View File

@@ -106,7 +106,7 @@ public class LeadEentListener implements ExecutionListener {
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class); 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 作为接收人发送消息 // 步骤 4: 使用 userName 作为接收人发送消息
weChatUtil.sendTextMessage(userName, content); weChatUtil.sendTextMessage(userName, content);

View File

@@ -82,7 +82,7 @@ public class LeadStartListener implements ExecutionListener {
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class); 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 作为接收人发送消息 // 步骤 4: 使用 userName 作为接收人发送消息
weChatUtil.sendTextMessage(userName, content); weChatUtil.sendTextMessage(userName, content);

View File

@@ -105,7 +105,7 @@ public class LeaveApproveListener implements ExecutionListener {
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class); 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 作为接收人发送消息 // 步骤 4: 使用 userName 作为接收人发送消息
weChatUtil.sendTextMessage(userName, content); // 发送消息的方法 weChatUtil.sendTextMessage(userName, content); // 发送消息的方法

View File

@@ -81,7 +81,7 @@ public class LeaveStartApproveListener implements ExecutionListener {
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class); 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 作为接收人发送消息 // 步骤 4: 使用 userName 作为接收人发送消息
weChatUtil.sendTextMessage(userName, content); weChatUtil.sendTextMessage(userName, content);

View File

@@ -85,7 +85,7 @@ public class SecondaryLeaderListener implements ExecutionListener {
// WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class); // 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 作为接收人发送消息 // // 步骤 4: 使用 userName 作为接收人发送消息
// //weChatUtil.sendTextMessage(userName, content); // //weChatUtil.sendTextMessage(userName, content);
@@ -117,7 +117,7 @@ public class SecondaryLeaderListener implements ExecutionListener {
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class); 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 作为接收人发送消息 // 步骤 4: 使用 userName 作为接收人发送消息
weChatUtil.sendTextMessage(userName, content); weChatUtil.sendTextMessage(userName, content);

View File

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

View File

@@ -39,7 +39,7 @@ public class EJXYSJListener implements ExecutionListener {
// 构造包含超链接的消息内容 // 构造包含超链接的消息内容
String content = "您有一条新的学生违纪审批任务待处理," + 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 作为接收人发送消息 // 步骤 4: 使用 userName 作为接收人发送消息
weChatUtil.sendTextMessage(userName, content); weChatUtil.sendTextMessage(userName, content);

View File

@@ -50,12 +50,12 @@ public class InitiatorNotificationListener implements ExecutionListener {
// --- 2. 准备通知内容 (解决taskName为空的问题) --- // --- 2. 准备通知内容 (解决taskName为空的问题) ---
String nextTaskName = getNextTaskName(execution); 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 internalMessageText = "您有一条新的【" + nextTaskName + "】待办任务需要处理。";
String hiddenIdentifier = String.format("<span id='flow-identifier' data-proc-inst-id='%s' data-activity-id='%s' style='display:none;'></span>", String hiddenIdentifier = String.format("<span id='flow-identifier' data-proc-inst-id='%s' data-activity-id='%s' style='display:none;'></span>",
execution.getProcessInstanceId(), execution.getProcessInstanceId(),
((SequenceFlow) execution.getCurrentFlowElement()).getTargetRef()); ((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. 发送企业微信通知 --- // --- 3. 发送企业微信通知 ---
sendWeChatNotification(initiatorUserId, weChatMessage); sendWeChatNotification(initiatorUserId, weChatMessage);

View File

@@ -46,7 +46,7 @@ public class InitiatorResultListener implements ExecutionListener {
if (initiatorUserName != null && !initiatorUserName.isEmpty()) { if (initiatorUserName != null && !initiatorUserName.isEmpty()) {
// 4. 发送通知 // 4. 发送通知
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class); 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); weChatUtil.sendTextMessage(initiatorUserName, content);
log.info("已成功向流程发起人 ({}) 发送结果通知。", initiatorUserName); log.info("已成功向流程发起人 ({}) 发送结果通知。", initiatorUserName);

View File

@@ -47,7 +47,7 @@ public class MultiInstanceMessageListener implements ExecutionListener {
// --- 步骤 3: 准备消息内容 --- // --- 步骤 3: 准备消息内容 ---
String messageText = "您有一条新的【" + taskName + "】待办任务需要处理。"; 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>", String hiddenIdentifier = String.format("<span id='flow-identifier' data-proc-inst-id='%s' data-activity-id='%s' style='display:none;'></span>",
execution.getProcessInstanceId(), execution.getProcessInstanceId(),
activityId); activityId);

View File

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

View File

@@ -106,7 +106,7 @@ public class StuInfoListener implements ExecutionListener {
String messageText = "您有一条新的【" + taskName + "】待办任务需要处理。"; 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>", String hiddenIdentifier = String.format("<span id='flow-identifier' data-proc-inst-id='%s' data-activity-id='%s' style='display:none;'></span>",
execution.getProcessInstanceId(), activityId); execution.getProcessInstanceId(), activityId);
String internalMessageContent = messageText + link + hiddenIdentifier; String internalMessageContent = messageText + link + hiddenIdentifier;

View File

@@ -43,7 +43,7 @@ public class WSSListener implements ExecutionListener {
String toUser = String.join("|", userNameList); String toUser = String.join("|", userNameList);
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class); 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); weChatUtil.sendTextMessage(toUser, content);
log.info("已成功向角色 '{}' 的成员发送通知。接收人: {}", TARGET_ROLE_KEY, toUser); log.info("已成功向角色 '{}' 的成员发送通知。接收人: {}", TARGET_ROLE_KEY, toUser);

View File

@@ -54,7 +54,7 @@ public class XGLDSHListener implements ExecutionListener {
String toUser = String.join("|", userNameList); String toUser = String.join("|", userNameList);
String content = "您有一条新的学生违纪审批任务待处理," + 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); weChatUtil.sendTextMessage(toUser, content);
log.info("流程实例 [{}]: 已成功向角色 '{}' 成员发送企微通知,接收人: {}", processInstanceId, roleKey, toUser); log.info("流程实例 [{}]: 已成功向角色 '{}' 成员发送企微通知,接收人: {}", processInstanceId, roleKey, toUser);

View File

@@ -43,7 +43,7 @@ public class XLZXListener implements ExecutionListener {
String toUser = String.join("|", userNameList); String toUser = String.join("|", userNameList);
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class); 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); weChatUtil.sendTextMessage(toUser, content);
log.info("已成功向角色 '{}' 的成员发送通知。接收人: {}", TARGET_ROLE_KEY, toUser); log.info("已成功向角色 '{}' 的成员发送通知。接收人: {}", TARGET_ROLE_KEY, toUser);

View File

@@ -58,7 +58,7 @@ public class XSJYGLKListener implements ExecutionListener {
String toUser = String.join("|", userNameList); String toUser = String.join("|", userNameList);
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class); 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); weChatUtil.sendTextMessage(toUser, content);
log.info("已成功向角色 '{}' 的成员发送企业微信通知。接收人: {}", roleKey, toUser); log.info("已成功向角色 '{}' 的成员发送企业微信通知。接收人: {}", roleKey, toUser);

View File

@@ -45,7 +45,7 @@ public class XWGSListener implements ExecutionListener {
WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class); 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 作为接收人发送消息 // 步骤 4: 使用 userName 作为接收人发送消息
weChatUtil.sendTextMessage(userName, content); weChatUtil.sendTextMessage(userName, content);

View File

@@ -62,7 +62,7 @@ public class XYWJCLWYHListener implements ExecutionListener {
return; return;
} }
String toUser = String.join("|", userNameList); 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); weChatUtil.sendTextMessage(toUser, content);
log.info("流程实例 [{}]: 已成功向'委员会'发送企微通知。", processInstanceId); log.info("流程实例 [{}]: 已成功向'委员会'发送企微通知。", processInstanceId);
} catch (Exception e) { } catch (Exception e) {

View File

@@ -50,7 +50,7 @@ public class StuCounselorListener implements ExecutionListener {
// 构造包含超链接的消息内容 // 构造包含超链接的消息内容
String content = "您有一条新的学生违纪审批任务待处理," + 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); weChatUtil.sendTextMessage(userName, content);

View File

@@ -37,7 +37,7 @@ public class StuReceiveListener implements ExecutionListener {
String content = "您的违纪处理流程有新的进展:" + String content = "您的违纪处理流程有新的进展:" +
approveResult + "" + 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); weChatUtil.sendTextMessage(stuUserName, content);

View File

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

View File

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

View File

@@ -1,10 +1,16 @@
package com.srs.routine.service.impl; package com.srs.routine.service.impl;
import java.util.Date;
import java.util.List; 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.core.domain.entity.SysUser;
import com.srs.common.exception.ServiceException; import com.srs.common.exception.ServiceException;
import com.srs.common.utils.SecurityUtils;
import com.srs.system.service.ISysUserService; import com.srs.system.service.ISysUserService;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -61,18 +67,14 @@ public class RtStuAtSchoolServiceImpl extends ServiceImpl<RtStuAtSchoolMapper,Rt
*/ */
@Override @Override
public int insertRtStuAtSchool(RtStuAtSchool rtStuAtSchool) { public int insertRtStuAtSchool(RtStuAtSchool rtStuAtSchool) {
RtStuAtSchool rtStuAtSchool1 = rtStuAtSchoolMapper.selectRtStuAtSchoolByStudentId(rtStuAtSchool.getStudentId()); RtStuAtSchool rtStuAtSchool1 = rtStuAtSchoolMapper.selectRtStuAtSchoolByStudentId(rtStuAtSchool.getStudentId());
if (rtStuAtSchool1 != null){ if (rtStuAtSchool1 != null){
throw new ServiceException("申请已提交,请勿重复提交", 500); throw new ServiceException("申请已提交,请勿重复提交", 500);
} }
SysUser sysUser = sysUserService.selectUserByUserName(rtStuAtSchool.getStudentId()); SysUser sysUser = sysUserService.selectUserByUserName(rtStuAtSchool.getStudentId());
if (sysUser == null) { if (sysUser == null) {
throw new ServiceException("该学生不存在", 500); throw new ServiceException("该学生不存在", 500);
} }
return rtStuAtSchoolMapper.insertRtStuAtSchool(rtStuAtSchool); return rtStuAtSchoolMapper.insertRtStuAtSchool(rtStuAtSchool);
} }
@@ -84,6 +86,12 @@ public class RtStuAtSchoolServiceImpl extends ServiceImpl<RtStuAtSchoolMapper,Rt
*/ */
@Override @Override
public int updateRtStuAtSchool(RtStuAtSchool rtStuAtSchool) { 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); return rtStuAtSchoolMapper.updateRtStuAtSchool(rtStuAtSchool);
} }

View File

@@ -115,7 +115,6 @@ private static final long serialVersionUID=1L;
@ApiModelProperty("联系电话") @ApiModelProperty("联系电话")
@TableField("phone") @TableField("phone")
@Excel(name = "联系电话") @Excel(name = "联系电话")
@Sensitive(desensitizedType = DesensitizedType.PHONE)
public String phone; public String phone;
/** /**
@@ -132,7 +131,6 @@ private static final long serialVersionUID=1L;
@ApiModelProperty("紧急联系人电话") @ApiModelProperty("紧急联系人电话")
@TableField("emergency_contact_phone") @TableField("emergency_contact_phone")
@Excel(name = "紧急联系人电话") @Excel(name = "紧急联系人电话")
@Sensitive(desensitizedType = DesensitizedType.PHONE)
public String emergencyContactPhone; public String emergencyContactPhone;
/** /**
@@ -190,7 +188,6 @@ private static final long serialVersionUID=1L;
@ApiModelProperty("家长电话") @ApiModelProperty("家长电话")
@TableField("parent_phone") @TableField("parent_phone")
@Excel(name = "家长电话") @Excel(name = "家长电话")
@Sensitive(desensitizedType = DesensitizedType.PHONE)
public String parentPhone; public String parentPhone;
/** /**
@@ -331,4 +328,11 @@ private static final long serialVersionUID=1L;
@TableField(exist = false) @TableField(exist = false)
public Long pageSize; 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 manyLeaveAudit(Long[] ids);
public AjaxResult manyLeaveReject(Long[] ids);
public AjaxResult leaveAudit(SurItinerary param); public AjaxResult leaveAudit(SurItinerary param);
public List<SurItinerary> listView(SurItinerary param); public List<SurItinerary> listView(SurItinerary param);