学生奖惩内容

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); return cphGoodAuditService.changeApply(param);
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) @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

@@ -33,35 +33,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectSrsKnrdApprovalRecordVo"/> <include refid="selectSrsKnrdApprovalRecordVo"/>
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 (
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="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>
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
)
) 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>
order by a.id desc
</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

@@ -229,87 +229,97 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="listRecordView" parameterType="CphSearch" resultType="SrsZxjApply"> <select id="listRecordView" parameterType="CphSearch" resultType="SrsZxjApply">
select a.id as id, select a.id as id,
a.step as step, a.step as step,
a.apply_year as apply_year, a.apply_year as apply_year,
a.xm as xm, a.xm as xm,
a.xb as xb, a.xb as xb,
a.mz as mz, a.mz as mz,
a.zzmm as zzmm, a.zzmm as zzmm,
a.xh as xh, a.xh as xh,
a.rxsj as rxsj, a.rxsj as rxsj,
a.csny as csny, a.csny as csny,
a.dh as dh, a.dh as dh,
a.nj as nj, a.nj as nj,
a.xy as xy, a.xy as xy,
a.zy as zy, a.zy as zy,
a.bj as bj, a.bj as bj,
a.kndj as kndj, a.kndj as kndj,
a.knlx as knlx, a.knlx as knlx,
a.knlx2 as knlx2, a.knlx2 as knlx2,
a.rkzs as rkzs, a.rkzs as rkzs,
a.yzsr as yzsr, a.yzsr as yzsr,
a.rjyr as rjyr, a.rjyr as rjyr,
a.srly as srly, a.srly as srly,
a.jtcy as jtcy, a.jtcy as jtcy,
a.sqly as sqly, a.sqly as sqly,
a.fdyqm as fdyqm, a.fdyqm as fdyqm,
a.fdyqmrq as fdyqmrq, a.fdyqmrq as fdyqmrq,
a.ejxyldqm as ejxyldqm, a.ejxyldqm as ejxyldqm,
a.ejxyldqmrq as ejxyldqmrq, a.ejxyldqmrq as ejxyldqmrq,
a.xsqm as xsqm, a.xsqm as xsqm,
a.xsqmrq as xsqmrq, a.xsqmrq as xsqmrq,
a.csdj as csdj, a.csdj as csdj,
a.zzdj as zzdj, a.zzdj as zzdj,
a.zzls as zzls, a.zzls as zzls,
a.zp as zp, a.zp as zp,
a.create_id as create_id, a.create_id as create_id,
a.affix_id as affix_id, a.affix_id as affix_id,
a.status1 as status1, a.status1 as status1,
a.status2 as status2, a.status2 as status2,
a.status3 as status3, a.status3 as status3,
a.dz as dz, a.dz as dz,
a.yb as yb, a.yb as yb,
a.bjyj as bjyj, a.bjyj as bjyj,
a.bjyjdj as bjyjdj, a.bjyjdj as bjyjdj,
a.ejxyyj as ejxyyj, a.ejxyyj as ejxyyj,
a.ejxyyjdj as ejxyyjdj, a.ejxyyjdj as ejxyyjdj,
a.xxyj as xxyj, a.xxyj as xxyj,
a.xxyjrq as xxyjrq, a.xxyjrq as xxyjrq,
a.gyhd as gyhd, a.gyhd as gyhd,
a.rjnsr as rjnsr, a.rjnsr as rjnsr,
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;
@@ -103,4 +103,4 @@ public class ArchivingNotifyListener implements ExecutionListener {
} }
return null; return null;
} }
} }

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);
@@ -118,4 +118,4 @@ public class InitiatorNotificationListener implements ExecutionListener {
} }
return "结果接收"; return "结果接收";
} }
} }

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);
@@ -58,4 +58,4 @@ public class InitiatorResultListener implements ExecutionListener {
log.error("向流程发起人发送结果通知时出现异常。流程将继续。错误详情: {}", e.getMessage(), e); log.error("向流程发起人发送结果通知时出现异常。流程将继续。错误详情: {}", e.getMessage(), e);
} }
} }
} }

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);
@@ -92,4 +92,4 @@ public class MultiInstanceMessageListener implements ExecutionListener {
return 1L; return 1L;
} }
} }
} }

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;
@@ -101,4 +101,4 @@ public class SchoolLeaderApprovalListener implements ExecutionListener {
} }
return null; return null;
} }
} }

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;
@@ -134,4 +134,4 @@ public class StuInfoListener implements ExecutionListener {
} }
return null; return null;
} }
} }

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);
@@ -69,4 +69,4 @@ public class XSJYGLKListener implements ExecutionListener {
log.error("向角色 '{}' 发送企业微信通知时出现异常。流程将继续。错误详情: {}", roleKey, e.getMessage(), e); log.error("向角色 '{}' 发送企业微信通知时出现异常。流程将继续。错误详情: {}", roleKey, e.getMessage(), e);
} }
} }
} }

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);