学生奖惩内容

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

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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,6 +1,7 @@
package com.srs.comprehensive.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.*;
import com.srs.common.annotation.Excel;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,6 +1,7 @@
package com.srs.routine.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.srs.common.annotation.Excel;
import com.baomidou.mybatisplus.annotation.*;
@@ -10,7 +11,6 @@ import lombok.*;
import com.srs.common.core.domain.BaseEntity;
/**
* 测试对象 rt_stu_at_school
*
@@ -101,7 +101,6 @@ private static final long serialVersionUID=1L;
/**
* 原因
*/
@ApiModelProperty("原因")
@TableField("because")

View File

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

View File

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

View File

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

View File

@@ -1,13 +1,25 @@
package com.srs.survey.service.impl;
import java.time.LocalDate;
import static com.srs.common.utils.DateUtils.getNowDate;
import static com.srs.common.utils.SecurityUtils.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.srs.common.core.domain.AjaxResult;
import com.srs.common.core.domain.entity.SysUser;
import com.srs.common.utils.WeChatUtil;
@@ -26,22 +38,15 @@ import com.srs.dormitory.domain.SrsDormitoryStudent;
import com.srs.dormitory.domain.Vo.DomInfo;
import com.srs.dormitory.mapper.DmsDormitoryMapper;
import com.srs.dormitory.mapper.SrsDormitoryStudentMapper;
import com.srs.survey.domain.SurItinerary;
import com.srs.survey.domain.SurSurvey;
import com.srs.survey.domain.dto.LeaveRes;
import com.srs.survey.domain.dto.ReturnRes;
import com.srs.survey.domain.vo.SurItineraryStatisticsVo;
import com.srs.survey.mapper.SurSurveyMapper;
import com.srs.system.mapper.SysUserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import com.srs.survey.mapper.SurItineraryMapper;
import com.srs.survey.domain.SurItinerary;
import com.srs.survey.mapper.SurSurveyMapper;
import com.srs.survey.service.ISurItineraryService;
import static com.srs.common.utils.DateUtils.getNowDate;
import static com.srs.common.utils.PageUtils.startPage;
import static com.srs.common.utils.SecurityUtils.*;
import com.srs.system.mapper.SysUserMapper;
/**
* 学生假期返校Service业务层处理
@@ -50,7 +55,8 @@ import static com.srs.common.utils.SecurityUtils.*;
* @date 2025-03-14
*/
@Service
public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurItinerary> implements ISurItineraryService {
public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper, SurItinerary>
implements ISurItineraryService {
@Autowired
private SurItineraryMapper surItineraryMapper;
@@ -135,7 +141,8 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
int batchSize = 900;
SurSurvey surSurvey = surSurveyMapper.selectById(param.surveyId);
String msg = "你还未填写"+surSurvey.getSurveyName()+"去向调查,请<a href=\"http://zhxg.gxsdxy.cn/wab/#/pages/sub/StuApply\">点击前往</a>填写";
String msg = "你还未填写" + surSurvey.getSurveyName()
+ "去向调查,请<a href=\"http://zhxg.gxsdxy.cn/wab/#/pages/sub/StuApply\">点击前往</a>填写";
// List<String> test = new ArrayList<>();
// test.add("20240116");
@@ -154,8 +161,7 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
List<SysUser> userList = sysUserMapper.selectList(
new QueryWrapper<SysUser>()
.in("user_name", notStuNos)
);
.in("user_name", notStuNos));
List<CphMsg> addList = new ArrayList<>();
for (SysUser user : userList) {
@@ -172,7 +178,6 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
throw new Exception("系统推送消息失败");
}
return AjaxResult.success();
} catch (Exception e) {
return AjaxResult.error(e.getMessage());
@@ -234,7 +239,8 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
int batchSize = 900;
SurSurvey surSurvey = surSurveyMapper.selectById(param.surveyId);
String msg = "你还未填写"+surSurvey.getSurveyName()+"去向调查,请<a href=\\\"http://zhxg.gxsdxy.cn/wab/#/pages/sub/StuApply\\\">点击前往</a>填写";
String msg = "你还未填写" + surSurvey.getSurveyName()
+ "去向调查,请<a href=\\\"http://zhxg.gxsdxy.cn/wab/#/pages/sub/StuApply\\\">点击前往</a>填写";
for (int i = 0; i < notStuNos.size(); i += batchSize) {
List<String> batch = notStuNos.subList(i, Math.min(i + batchSize, stuNos.size()));
@@ -244,7 +250,6 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
weChatUtil.sendTextMessage(toUser, msg);
}
return AjaxResult.success();
} catch (Exception e) {
return AjaxResult.error(e.getMessage());
@@ -384,11 +389,22 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
}
}
// 5. 拼接返回
notList.addAll(isList);
// 5. 根据isFilled参数筛选数据
List<ViewStuInfo> filteredList = new ArrayList<>();
if (param.isFilled == null) {
// 全部:未提交 + 已提交
filteredList.addAll(notList);
filteredList.addAll(isList);
} else if (param.isFilled == 1) {
// 已填写:只返回已提交的
filteredList.addAll(isList);
} else if (param.isFilled == 0) {
// 未填写:只返回未提交的
filteredList.addAll(notList);
}
// 分页处理
int total = notList.size();
int total = filteredList.size();
int pageNum = (param.pageNum != null && param.pageNum > 0) ? param.pageNum.intValue() : 1;
int pageSize = (param.pageSize != null && param.pageSize > 0) ? param.pageSize.intValue() : 10;
int fromIndex = (pageNum - 1) * pageSize;
@@ -399,12 +415,13 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
result.put("total", 0);
result.put("code", 200);
result.put("rows", new ArrayList<>());
return result;
}
Map<String, Object> result = new HashMap<>();
result.put("total", total);
result.put("code", 200);
result.put("rows", notList.subList(fromIndex, toIndex));
result.put("rows", filteredList.subList(fromIndex, toIndex));
return result;
}
@@ -439,11 +456,14 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
list.forEach(map -> {
if (map.get("more_dept_name") != null) {
if(Objects.equals(map.get("more_dept_name").toString(), "信息工程学院(里建)") || Objects.equals(map.get("more_dept_name").toString(), "经济管理学院(里建)")){
if(map.get("submit_num") != null && map.get("yingfanxiao")!= null && map.get("weifanxiao") != null) {
if (Objects.equals(map.get("more_dept_name").toString(), "信息工程学院(里建)")
|| Objects.equals(map.get("more_dept_name").toString(), "经济管理学院(里建)")) {
if (map.get("submit_num") != null && map.get("yingfanxiao") != null
&& map.get("weifanxiao") != null) {
map.put("stu_num", Integer.parseInt(map.get("submit_num").toString()));
map.put("yingfanxiao", Integer.parseInt(map.get("submit_num").toString()));
map.put("weifanxiao", Integer.parseInt(map.get("submit_num").toString()) - Integer.parseInt(map.get("yingfanxiao").toString()));
map.put("weifanxiao", Integer.parseInt(map.get("submit_num").toString())
- Integer.parseInt(map.get("yingfanxiao").toString()));
}
}
}
@@ -452,23 +472,35 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
list.forEach(map -> {
if (map.get("more_dept_name") != null) {
if (Objects.equals(map.get("more_dept_name").toString(), "信息工程学院(长堽)")) {
Map<String, Object> map1 = list.stream().filter(m -> Objects.equals(m.get("more_dept_name").toString(), "信息工程学院(里建)")).findFirst().orElse(null);
Map<String, Object> map1 = list.stream()
.filter(m -> Objects.equals(m.get("more_dept_name").toString(), "信息工程学院(里建)")).findFirst()
.orElse(null);
if (map1 != null) {
if(map.get("stu_num") != null && map.get("yingfanxiao")!= null && map.get("weifanxiao") != null && map.get("submit_num") != null) {
map.put("stu_num", Integer.parseInt(map.get("stu_num").toString()) - Integer.parseInt(map1.get("submit_num").toString()));
map.put("yingfanxiao", Integer.parseInt(map.get("yingfanxiao").toString()) - Integer.parseInt(map1.get("submit_num").toString()));
map.put("weifanxiao", Integer.parseInt(map.get("yingfanxiao").toString()) - Integer.parseInt(map.get("yifanxiao").toString()));
if (map.get("stu_num") != null && map.get("yingfanxiao") != null
&& map.get("weifanxiao") != null && map.get("submit_num") != null) {
map.put("stu_num", Integer.parseInt(map.get("stu_num").toString())
- Integer.parseInt(map1.get("submit_num").toString()));
map.put("yingfanxiao", Integer.parseInt(map.get("yingfanxiao").toString())
- Integer.parseInt(map1.get("submit_num").toString()));
map.put("weifanxiao", Integer.parseInt(map.get("yingfanxiao").toString())
- Integer.parseInt(map.get("yifanxiao").toString()));
}
}
}
if (Objects.equals(map.get("more_dept_name").toString(), "经济管理学院(长堽)")) {
Map<String, Object> map1 = list.stream().filter(m -> Objects.equals(m.get("more_dept_name").toString(), "经济管理学院(里建)")).findFirst().orElse(null);
Map<String, Object> map1 = list.stream()
.filter(m -> Objects.equals(m.get("more_dept_name").toString(), "经济管理学院(里建)")).findFirst()
.orElse(null);
if (map1 != null) {
if(map.get("stu_num") != null && map.get("yingfanxiao")!= null && map.get("weifanxiao") != null && map.get("submit_num") != null) {
map.put("stu_num", Integer.parseInt(map.get("stu_num").toString()) - Integer.parseInt(map1.get("submit_num").toString()));
map.put("yingfanxiao", Integer.parseInt(map.get("yingfanxiao").toString()) - Integer.parseInt(map1.get("submit_num").toString()));
map.put("weifanxiao", Integer.parseInt(map.get("yingfanxiao").toString()) - Integer.parseInt(map.get("yifanxiao").toString()));
if (map.get("stu_num") != null && map.get("yingfanxiao") != null
&& map.get("weifanxiao") != null && map.get("submit_num") != null) {
map.put("stu_num", Integer.parseInt(map.get("stu_num").toString())
- Integer.parseInt(map1.get("submit_num").toString()));
map.put("yingfanxiao", Integer.parseInt(map.get("yingfanxiao").toString())
- Integer.parseInt(map1.get("submit_num").toString()));
map.put("weifanxiao", Integer.parseInt(map.get("yingfanxiao").toString())
- Integer.parseInt(map.get("yifanxiao").toString()));
}
}
}
@@ -483,7 +515,6 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
return surItineraryMapper.countWillLeave(surveyId);
}
@Override
public List<Map<String, Object>> countFdyClassWillLeave(Long surveyId, String fdyNo) {
return surItineraryMapper.countFdyClassWillLeave(surveyId, fdyNo);
@@ -516,7 +547,6 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
LocalDateTime prevDate = date.minusDays(1);
String moreDeptName = map.get("more_dept_name").toString();
queryWrapper.eq("survey_id", surveyId);
queryWrapper.eq("more_dept_name", moreDeptName);
@@ -544,7 +574,6 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
return surItineraryMapper.listReturnRes(surveyId);
}
@Override
public AjaxResult getStuCampus() {
try {
@@ -593,7 +622,6 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
throw new Exception("更新学生定位详细地址记录失败");
}
return AjaxResult.success();
} catch (Exception e) {
return AjaxResult.error(e.getMessage());
@@ -638,7 +666,6 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
}
}
@Override
public AjaxResult manyReturnAudit(Long[] ids) {
try {
@@ -765,7 +792,6 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
}
}
@Override
public AjaxResult manyLeaveAudit(Long[] ids) {
try {
@@ -790,6 +816,30 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
}
}
@Override
public AjaxResult manyLeaveReject(Long[] ids) {
try {
QueryWrapper<SurItinerary> queryWrapper = new QueryWrapper<>();
queryWrapper.in("return_school_id", ids);
queryWrapper.eq("leave_status", "1");
List<SurItinerary> list = surItineraryMapper.selectList(queryWrapper);
if (list.size() == 0) {
throw new Exception("未找到待审核记录");
}
for (SurItinerary surItinerary : list) {
surItinerary.leaveStatus = "10";// 驳回参数
}
boolean res = this.updateBatchById(list);
if (!res) {
throw new Exception("批量拒绝失败");
}
return AjaxResult.success();
} catch (Exception e) {
return AjaxResult.error(e.getMessage());
}
}
@Override
public AjaxResult leaveAudit(SurItinerary param) {
try {
@@ -846,7 +896,6 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
}
}
@Override
public AjaxResult stuLeaveApply(SurItinerary param) {
try {
@@ -875,7 +924,6 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
}
}
if (param.returnSchoolId != null) {
SurItinerary find = surItineraryMapper.selectById(param.returnSchoolId);
if (find != null) {
@@ -987,6 +1035,7 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
public int deleteSurItineraryByReturnSchoolId(Long returnSchoolId) {
return surItineraryMapper.deleteSurItineraryByReturnSchoolId(returnSchoolId);
}
/**
* 审核学生返校
*/
@@ -994,6 +1043,7 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
public int auditItinerary(Long returnSchoolId) {
return surItineraryMapper.auditItinerary(returnSchoolId);
}
/***
* 批量审核
*/
@@ -1015,7 +1065,8 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
totalSummary.setMoreDeptName("合计");
// 定义校区分类数据
List<String> lijianCampus = List.of("水利工程学院", "电力工程学院", "机电工程学院", "信息工程学院(里建)", "经济管理学院(里建)", "土木建筑工程学院", "交通工程学院", "自动化工程学院");
List<String> lijianCampus = List.of("水利工程学院", "电力工程学院", "机电工程学院", "信息工程学院(里建)", "经济管理学院(里建)", "土木建筑工程学院",
"交通工程学院", "自动化工程学院");
List<String> changguCampus = List.of("信息工程学院(长堽)", "经济管理学院(长堽)");
SurItineraryStatisticsVo lijianTotal = new SurItineraryStatisticsVo();
@@ -1027,7 +1078,8 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
// 遍历原始数据,进行统计
for (SurItineraryStatisticsVo item : originalData) {
// 计算全校合计
totalSummary.setExpectedLeaveCount((totalSummary.getExpectedLeaveCount() == null ? 0 : totalSummary.getExpectedLeaveCount()) +
totalSummary.setExpectedLeaveCount(
(totalSummary.getExpectedLeaveCount() == null ? 0 : totalSummary.getExpectedLeaveCount()) +
(item.getExpectedLeaveCount() == null ? 0 : item.getExpectedLeaveCount()));
totalSummary.setStayCount((totalSummary.getStayCount() == null ? 0 : totalSummary.getStayCount()) +
(item.getStayCount() == null ? 0 : item.getStayCount()));
@@ -1038,7 +1090,8 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
// 计算校区统计
if (lijianCampus.contains(item.getMoreDeptName())) {
lijianTotal.setExpectedLeaveCount((lijianTotal.getExpectedLeaveCount() == null ? 0 : lijianTotal.getExpectedLeaveCount()) +
lijianTotal.setExpectedLeaveCount(
(lijianTotal.getExpectedLeaveCount() == null ? 0 : lijianTotal.getExpectedLeaveCount()) +
(item.getExpectedLeaveCount() == null ? 0 : item.getExpectedLeaveCount()));
lijianTotal.setStayCount((lijianTotal.getStayCount() == null ? 0 : lijianTotal.getStayCount()) +
(item.getStayCount() == null ? 0 : item.getStayCount()));
@@ -1047,13 +1100,15 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
lijianTotal.setReturnCount((lijianTotal.getReturnCount() == null ? 0 : lijianTotal.getReturnCount()) +
(item.getReturnCount() == null ? 0 : item.getReturnCount()));
} else if (changguCampus.contains(item.getMoreDeptName())) {
changguTotal.setExpectedLeaveCount((changguTotal.getExpectedLeaveCount() == null ? 0 : changguTotal.getExpectedLeaveCount()) +
changguTotal.setExpectedLeaveCount(
(changguTotal.getExpectedLeaveCount() == null ? 0 : changguTotal.getExpectedLeaveCount()) +
(item.getExpectedLeaveCount() == null ? 0 : item.getExpectedLeaveCount()));
changguTotal.setStayCount((changguTotal.getStayCount() == null ? 0 : changguTotal.getStayCount()) +
(item.getStayCount() == null ? 0 : item.getStayCount()));
changguTotal.setHomeCount((changguTotal.getHomeCount() == null ? 0 : changguTotal.getHomeCount()) +
(item.getHomeCount() == null ? 0 : item.getHomeCount()));
changguTotal.setReturnCount((changguTotal.getReturnCount() == null ? 0 : changguTotal.getReturnCount()) +
changguTotal
.setReturnCount((changguTotal.getReturnCount() == null ? 0 : changguTotal.getReturnCount()) +
(item.getReturnCount() == null ? 0 : item.getReturnCount()));
}
}
@@ -1065,10 +1120,12 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
finalResult.add(totalSummary);
// 只有当校区数据不全为 0 时才添加
if (lijianTotal.getExpectedLeaveCount() > 0 || lijianTotal.getStayCount() > 0 || lijianTotal.getHomeCount() > 0 || lijianTotal.getReturnCount() > 0) {
if (lijianTotal.getExpectedLeaveCount() > 0 || lijianTotal.getStayCount() > 0 || lijianTotal.getHomeCount() > 0
|| lijianTotal.getReturnCount() > 0) {
finalResult.add(lijianTotal);
}
if (changguTotal.getExpectedLeaveCount() > 0 || changguTotal.getStayCount() > 0 || changguTotal.getHomeCount() > 0 || changguTotal.getReturnCount() > 0) {
if (changguTotal.getExpectedLeaveCount() > 0 || changguTotal.getStayCount() > 0
|| changguTotal.getHomeCount() > 0 || changguTotal.getReturnCount() > 0) {
finalResult.add(changguTotal);
}