From 50bc0e35bdb728851dbe89ea6508342dd25befba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=81=92=E6=88=90?= <962704835@qq.com> Date: Wed, 10 Dec 2025 17:14:35 +0800 Subject: [PATCH 01/19] =?UTF-8?q?=E5=85=A5=E4=BC=8D=E4=BF=9D=E7=95=99?= =?UTF-8?q?=E5=AD=A6=E7=B1=8D-=E9=99=84=E4=BB=B6=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/RtEnlistmentReserveAttach.java | 9 +++- .../RtEnlistmentReserveAttachMapper.xml | 48 +++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/srs-routine/src/main/java/com/srs/routine/domain/RtEnlistmentReserveAttach.java b/srs-routine/src/main/java/com/srs/routine/domain/RtEnlistmentReserveAttach.java index 42b0e55..96444c6 100644 --- a/srs-routine/src/main/java/com/srs/routine/domain/RtEnlistmentReserveAttach.java +++ b/srs-routine/src/main/java/com/srs/routine/domain/RtEnlistmentReserveAttach.java @@ -7,6 +7,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.*; import com.srs.common.core.domain.BaseEntity; +import java.util.List; + /** * 保留学籍申请附件(入伍通知书等)对象 rt_enlistment_reserve_attach @@ -95,5 +97,10 @@ public class RtEnlistmentReserveAttach extends BaseEntity { @Excel(name = "学号") private String studentNo; - + /** + * 入伍保留学籍申请表 + */ + @ApiModelProperty(value = "入伍保留学籍申请表", hidden = true) + @Excel(name = "入伍保留学籍申请表") + private List rtEnlistmentReserves; } diff --git a/srs-routine/src/main/resources/mapper/routine/RtEnlistmentReserveAttachMapper.xml b/srs-routine/src/main/resources/mapper/routine/RtEnlistmentReserveAttachMapper.xml index bb2f7ad..31b134d 100644 --- a/srs-routine/src/main/resources/mapper/routine/RtEnlistmentReserveAttachMapper.xml +++ b/srs-routine/src/main/resources/mapper/routine/RtEnlistmentReserveAttachMapper.xml @@ -15,8 +15,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, apply_id, From 9104a00570f69e1172f6ba90b7d5886c3029ef8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=81=92=E6=88=90?= <962704835@qq.com> Date: Thu, 11 Dec 2025 17:49:49 +0800 Subject: [PATCH 02/19] =?UTF-8?q?=E5=85=A5=E4=BC=8D=E4=BF=9D=E7=95=99?= =?UTF-8?q?=E5=AD=A6=E7=B1=8D-=E7=94=B3=E8=AF=B7=E8=A1=A8=E8=AF=A6?= =?UTF-8?q?=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/DmsOutsideAccommodationApply.java | 13 ++ ...sOutsideAccommodationAttachmentMapper.java | 7 + ...OutsideAccommodationAttachmentService.java | 7 + ...ideAccommodationAttachmentServiceImpl.java | 11 ++ .../DmsOutsideAccommodationApplyMapper.xml | 70 ++++++++++ .../DmsOutsideAccommodationApprovalMapper.xml | 102 +++++++++------ ...msOutsideAccommodationAttachmentMapper.xml | 122 +++++++++++++----- ...sideAccommodationAttachmentController.java | 47 ++++--- 8 files changed, 291 insertions(+), 88 deletions(-) diff --git a/dms-dormitory/src/main/java/com/srs/dormitory/domain/DmsOutsideAccommodationApply.java b/dms-dormitory/src/main/java/com/srs/dormitory/domain/DmsOutsideAccommodationApply.java index 2c5a4fe..14553d7 100644 --- a/dms-dormitory/src/main/java/com/srs/dormitory/domain/DmsOutsideAccommodationApply.java +++ b/dms-dormitory/src/main/java/com/srs/dormitory/domain/DmsOutsideAccommodationApply.java @@ -1,6 +1,7 @@ package com.srs.dormitory.domain; import java.util.Date; +import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; import com.srs.common.annotation.Excel; @@ -357,5 +358,17 @@ public class DmsOutsideAccommodationApply extends BaseEntity { @Excel(name = "承诺内容") private String promiseContent; + /** + * 外宿申请表-附件记录 + */ + @ApiModelProperty(value = "外宿申请表-附件记录", hidden = true) + @Excel(name = "外宿申请表-附件记录") + private List outsideAccommodationAttachments; + /** + * 外宿申请表-审核记录 + */ + @ApiModelProperty(value = "外宿申请表-审核记录", hidden = true) + @Excel(name = "外宿申请表-审核记录") + private List outsideAccommodationApprovals; } diff --git a/dms-dormitory/src/main/java/com/srs/dormitory/mapper/DmsOutsideAccommodationAttachmentMapper.java b/dms-dormitory/src/main/java/com/srs/dormitory/mapper/DmsOutsideAccommodationAttachmentMapper.java index e157e6d..fb08282 100644 --- a/dms-dormitory/src/main/java/com/srs/dormitory/mapper/DmsOutsideAccommodationAttachmentMapper.java +++ b/dms-dormitory/src/main/java/com/srs/dormitory/mapper/DmsOutsideAccommodationAttachmentMapper.java @@ -28,6 +28,13 @@ public interface DmsOutsideAccommodationAttachmentMapper extends BaseMapper selectDmsOutsideAccommodationAttachmentList(DmsOutsideAccommodationAttachment dmsOutsideAccommodationAttachment); + /** + * 批量插入校外住宿附件 + * @param list 校外住宿附件列表 + * @return 插入行数 + */ + int batchInsertDmsOutsideAccommodationAttachment(List list); + /** * 新增外宿申请附件 * diff --git a/dms-dormitory/src/main/java/com/srs/dormitory/service/IDmsOutsideAccommodationAttachmentService.java b/dms-dormitory/src/main/java/com/srs/dormitory/service/IDmsOutsideAccommodationAttachmentService.java index abfe070..d7aeaeb 100644 --- a/dms-dormitory/src/main/java/com/srs/dormitory/service/IDmsOutsideAccommodationAttachmentService.java +++ b/dms-dormitory/src/main/java/com/srs/dormitory/service/IDmsOutsideAccommodationAttachmentService.java @@ -28,6 +28,13 @@ public interface IDmsOutsideAccommodationAttachmentService extends IService selectDmsOutsideAccommodationAttachmentList(DmsOutsideAccommodationAttachment dmsOutsideAccommodationAttachment); + /** + * 批量插入校外住宿附件 + * @param list 校外住宿附件列表 + * @return 插入行数 + */ + int batchInsertDmsOutsideAccommodationAttachment(List list); + /** * 新增外宿申请附件 * diff --git a/dms-dormitory/src/main/java/com/srs/dormitory/service/impl/DmsOutsideAccommodationAttachmentServiceImpl.java b/dms-dormitory/src/main/java/com/srs/dormitory/service/impl/DmsOutsideAccommodationAttachmentServiceImpl.java index 42f6aaa..688ec77 100644 --- a/dms-dormitory/src/main/java/com/srs/dormitory/service/impl/DmsOutsideAccommodationAttachmentServiceImpl.java +++ b/dms-dormitory/src/main/java/com/srs/dormitory/service/impl/DmsOutsideAccommodationAttachmentServiceImpl.java @@ -43,6 +43,17 @@ public class DmsOutsideAccommodationAttachmentServiceImpl extends ServiceImpl list) { + // 统一设置默认值(如创建时间) + for (DmsOutsideAccommodationAttachment attach : list) { + attach.setCreateTime(DateUtils.getNowDate()); // 批量设置创建时间 + // 其他默认值(如状态等) + } + // 调用Mapper层批量插入方法 + return dmsOutsideAccommodationAttachmentMapper.batchInsertDmsOutsideAccommodationAttachment(list); + } + /** * 新增外宿申请附件 * diff --git a/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationApplyMapper.xml b/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationApplyMapper.xml index f64f9ad..6b46bf4 100644 --- a/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationApplyMapper.xml +++ b/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationApplyMapper.xml @@ -50,7 +50,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, diff --git a/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationApprovalMapper.xml b/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationApprovalMapper.xml index d13d8b2..7149f3d 100644 --- a/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationApprovalMapper.xml +++ b/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationApprovalMapper.xml @@ -1,53 +1,75 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + - - - - - - - - - - - - - + + + + + + + + + + + + + - select id, apply_id, apply_no, approval_node, approver_id, approver_name, approver_role, approval_opinion, approval_result, approval_time, process_instance_id, student_name, student_no from dms_outside_accommodation_approval + select id, + apply_id, + apply_no, + approval_node, + approver_id, + approver_name, + approver_role, + approval_opinion, + approval_result, + approval_time, + process_instance_id, + student_name, + student_no + from dms_outside_accommodation_approval - - - and apply_id = #{applyId} - and apply_no = #{applyNo} - and approval_node = #{approvalNode} - and approver_id = #{approverId} - and approver_name like concat('%', #{approverName}, '%') - and approver_role = #{approverRole} - and approval_opinion = #{approvalOpinion} - and approval_result = #{approvalResult} - and approval_time = #{approvalTime} - and process_instance_id = #{processInstanceId} - and student_name like concat('%', #{studentName}, '%') - and student_no = #{studentNo} + + and apply_id = #{applyId} + and apply_no = #{applyNo} + and approval_node = #{approvalNode} + and approver_id = #{approverId} + and approver_name like concat('%', #{approverName}, + '%') + + and approver_role = #{approverRole} + and approval_opinion = #{approvalOpinion} + and approval_result = #{approvalResult} + and approval_time = #{approvalTime} + and process_instance_id = + #{processInstanceId} + + and student_name like concat('%', #{studentName}, + '%') + + and student_no = #{studentNo} - - where id = #{id} - - + + insert into dms_outside_accommodation_approval apply_id, @@ -62,7 +84,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" process_instance_id, student_name, student_no, - + #{applyId}, #{applyNo}, @@ -76,7 +98,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{processInstanceId}, #{studentName}, #{studentNo}, - + @@ -99,11 +121,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from dms_outside_accommodation_approval where id = #{id} + delete + from dms_outside_accommodation_approval + where id = #{id} - delete from dms_outside_accommodation_approval where id in + delete from dms_outside_accommodation_approval where id in #{id} diff --git a/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationAttachmentMapper.xml b/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationAttachmentMapper.xml index bd3dbb6..7f01f99 100644 --- a/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationAttachmentMapper.xml +++ b/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationAttachmentMapper.xml @@ -1,48 +1,100 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + - - - - - - - - - - - + + + + + + + + + + + - select id, apply_id, attachment_name, attachment_url, attachment_type, file_size, file_suffix, create_time, process_instance_id, student_name, student_no from dms_outside_accommodation_attachment + select id, + apply_id, + attachment_name, + attachment_url, + attachment_type, + file_size, + file_suffix, + create_time, + process_instance_id, + student_name, + student_no + from dms_outside_accommodation_attachment - - - and apply_id = #{applyId} - and attachment_name like concat('%', #{attachmentName}, '%') - and attachment_url = #{attachmentUrl} - and attachment_type = #{attachmentType} - and file_size = #{fileSize} - and file_suffix = #{fileSuffix} - and process_instance_id = #{processInstanceId} - and student_name like concat('%', #{studentName}, '%') - and student_no = #{studentNo} + + and apply_id = #{applyId} + and attachment_name like concat('%', + #{attachmentName}, '%') + + and attachment_url = #{attachmentUrl} + and attachment_type = #{attachmentType} + and file_size = #{fileSize} + and file_suffix = #{fileSuffix} + and process_instance_id = + #{processInstanceId} + + and student_name like concat('%', #{studentName}, + '%') + + and student_no = #{studentNo} - - where id = #{id} - - + + + + insert into dms_outside_accommodation_attachment + ( + apply_id, + attachment_name, + attachment_url, + attachment_type, + file_size, + file_suffix, + create_time, + process_instance_id, + student_name, + student_no + ) + values + + ( + #{item.applyId}, + #{item.attachmentName}, + #{item.attachmentUrl}, + #{item.attachmentType}, + #{item.fileSize}, + #{item.fileSuffix}, + #{item.createTime}, + #{item.processInstanceId}, + #{item.studentName}, + #{item.studentNo} + ) + + + + insert into dms_outside_accommodation_attachment apply_id, @@ -55,7 +107,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" process_instance_id, student_name, student_no, - + #{applyId}, #{attachmentName}, @@ -67,7 +119,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{processInstanceId}, #{studentName}, #{studentNo}, - + @@ -88,11 +140,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from dms_outside_accommodation_attachment where id = #{id} + delete + from dms_outside_accommodation_attachment + where id = #{id} - delete from dms_outside_accommodation_attachment where id in + delete from dms_outside_accommodation_attachment where id in #{id} diff --git a/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsOutsideAccommodationAttachmentController.java b/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsOutsideAccommodationAttachmentController.java index 24ea031..1541784 100644 --- a/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsOutsideAccommodationAttachmentController.java +++ b/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsOutsideAccommodationAttachmentController.java @@ -2,6 +2,8 @@ package com.srs.web.controller.dormitory; import java.util.List; import javax.servlet.http.HttpServletResponse; + +import com.srs.routine.domain.RtEnlistmentReserveAttach; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -37,11 +39,10 @@ public class DmsOutsideAccommodationAttachmentController extends BaseController /** * 查询外宿申请附件列表 */ -@PreAuthorize("@ss.hasPermi('dormitory:outsideAccommodationAttachment:list')") -@GetMapping("/list") -@ApiOperation("查询外宿申请附件列表") - public TableDataInfo list(DmsOutsideAccommodationAttachment dmsOutsideAccommodationAttachment) - { + @PreAuthorize("@ss.hasPermi('dormitory:outsideAccommodationAttachment:list')") + @GetMapping("/list") + @ApiOperation("查询外宿申请附件列表") + public TableDataInfo list(DmsOutsideAccommodationAttachment dmsOutsideAccommodationAttachment) { startPage(); List list = dmsOutsideAccommodationAttachmentService.selectDmsOutsideAccommodationAttachmentList(dmsOutsideAccommodationAttachment); return getDataTable(list); @@ -54,8 +55,7 @@ public class DmsOutsideAccommodationAttachmentController extends BaseController @Log(title = "外宿申请附件", businessType = BusinessType.EXPORT) @PostMapping("/export") @ApiOperation("导出外宿申请附件列表") - public void export(HttpServletResponse response, DmsOutsideAccommodationAttachment dmsOutsideAccommodationAttachment) - { + public void export(HttpServletResponse response, DmsOutsideAccommodationAttachment dmsOutsideAccommodationAttachment) { List list = dmsOutsideAccommodationAttachmentService.selectDmsOutsideAccommodationAttachmentList(dmsOutsideAccommodationAttachment); ExcelUtil util = new ExcelUtil(DmsOutsideAccommodationAttachment.class); util.exportExcel(response, list, "外宿申请附件数据"); @@ -67,8 +67,7 @@ public class DmsOutsideAccommodationAttachmentController extends BaseController @PreAuthorize("@ss.hasPermi('dormitory:outsideAccommodationAttachment:query')") @GetMapping(value = "/{id}") @ApiOperation("获取外宿申请附件详细信息") - public AjaxResult getInfo(@PathVariable("id") Long id) - { + public AjaxResult getInfo(@PathVariable("id") Long id) { return success(dmsOutsideAccommodationAttachmentService.selectDmsOutsideAccommodationAttachmentById(id)); } @@ -79,11 +78,31 @@ public class DmsOutsideAccommodationAttachmentController extends BaseController @Log(title = "外宿申请附件", businessType = BusinessType.INSERT) @PostMapping("/add") @ApiOperation("新增外宿申请附件") - public AjaxResult add(@RequestBody DmsOutsideAccommodationAttachment dmsOutsideAccommodationAttachment) - { + public AjaxResult add(@RequestBody DmsOutsideAccommodationAttachment dmsOutsideAccommodationAttachment) { return toAjax(dmsOutsideAccommodationAttachmentService.insertDmsOutsideAccommodationAttachment(dmsOutsideAccommodationAttachment)); } + /** + * 批量新增保留学籍申请附件(入伍通知书等) + */ + @PreAuthorize("@ss.hasPermi('dormitory:outsideAccommodationAttachment:add')") + @Log(title = "外宿申请附件", businessType = BusinessType.INSERT) + @PostMapping("/batchAdd") // 注意:修改接口路径避免与原单条接口冲突 + @ApiOperation("批量新增外宿申请附件") + public AjaxResult batchAdd(@RequestBody List list) { + // 1. 校验参数合法性 + if (list == null || list.isEmpty()) { + return AjaxResult.error("批量插入失败:附件列表不能为空"); + } + + // 2. 调用Service层批量插入方法 + int rows = dmsOutsideAccommodationAttachmentService.batchInsertDmsOutsideAccommodationAttachment(list); + + // 3. 返回结果(rows为成功插入的条数) + return rows > 0 ? AjaxResult.success("批量插入成功,共插入 " + rows + " 条记录") + : AjaxResult.error("批量插入失败"); + } + /** * 修改外宿申请附件 */ @@ -91,8 +110,7 @@ public class DmsOutsideAccommodationAttachmentController extends BaseController @Log(title = "外宿申请附件", businessType = BusinessType.UPDATE) @PostMapping("/update") @ApiOperation("修改外宿申请附件") - public AjaxResult edit(@RequestBody DmsOutsideAccommodationAttachment dmsOutsideAccommodationAttachment) - { + public AjaxResult edit(@RequestBody DmsOutsideAccommodationAttachment dmsOutsideAccommodationAttachment) { return toAjax(dmsOutsideAccommodationAttachmentService.updateDmsOutsideAccommodationAttachment(dmsOutsideAccommodationAttachment)); } @@ -103,8 +121,7 @@ public class DmsOutsideAccommodationAttachmentController extends BaseController @Log(title = "外宿申请附件", businessType = BusinessType.DELETE) @PostMapping("/{ids}") @ApiOperation("删除外宿申请附件") - public AjaxResult remove(@PathVariable Long[] ids) - { + public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(dmsOutsideAccommodationAttachmentService.deleteDmsOutsideAccommodationAttachmentByIds(ids)); } } From 6d2665e652af332a201c83860b3adaa5af936fcc Mon Sep 17 00:00:00 2001 From: "962704835@qq.com" Date: Thu, 11 Dec 2025 23:40:02 +0800 Subject: [PATCH 03/19] =?UTF-8?q?=E5=A4=96=E5=AE=BF=E7=94=B3=E8=AF=B7-?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E7=94=9F=E6=88=90=E5=AE=A1=E6=89=B9=E8=AE=B0?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...DmsOutsideAccommodationApprovalMapper.java | 9 +++++ ...msOutsideAccommodationApprovalService.java | 2 ++ ...tsideAccommodationApprovalServiceImpl.java | 36 +++++++++++++++++++ .../DmsOutsideAccommodationApplyMapper.xml | 2 +- .../DmsOutsideAccommodationApprovalMapper.xml | 16 +++++++++ ...msOutsideAccommodationApplyController.java | 2 +- ...utsideAccommodationApprovalController.java | 36 +++++++++++-------- .../OutsideAccommodationEndListener.java | 10 ++---- .../OutsideAccommodationApprovalMapper.xml | 2 +- 9 files changed, 89 insertions(+), 26 deletions(-) diff --git a/dms-dormitory/src/main/java/com/srs/dormitory/mapper/DmsOutsideAccommodationApprovalMapper.java b/dms-dormitory/src/main/java/com/srs/dormitory/mapper/DmsOutsideAccommodationApprovalMapper.java index fc2aa53..052491c 100644 --- a/dms-dormitory/src/main/java/com/srs/dormitory/mapper/DmsOutsideAccommodationApprovalMapper.java +++ b/dms-dormitory/src/main/java/com/srs/dormitory/mapper/DmsOutsideAccommodationApprovalMapper.java @@ -4,6 +4,7 @@ import java.util.List; import com.srs.dormitory.domain.DmsOutsideAccommodationApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; /** * 外宿申请审批记录Mapper接口 @@ -28,6 +29,14 @@ public interface DmsOutsideAccommodationApprovalMapper extends BaseMapper selectDmsOutsideAccommodationApprovalList(DmsOutsideAccommodationApproval dmsOutsideAccommodationApproval); + /** + * 根据学生姓名学号和审批人id查询保留学籍审批记录 + * + * @param + * @return 结果 + */ + DmsOutsideAccommodationApproval selectOutsideAccommodationApprovalByStuName(@Param("studentName") String studentName, @Param("studentNo") String studentNo, @Param("approverId") Long approverId); + /** * 新增外宿申请审批记录 * diff --git a/dms-dormitory/src/main/java/com/srs/dormitory/service/IDmsOutsideAccommodationApprovalService.java b/dms-dormitory/src/main/java/com/srs/dormitory/service/IDmsOutsideAccommodationApprovalService.java index b83df17..784efe3 100644 --- a/dms-dormitory/src/main/java/com/srs/dormitory/service/IDmsOutsideAccommodationApprovalService.java +++ b/dms-dormitory/src/main/java/com/srs/dormitory/service/IDmsOutsideAccommodationApprovalService.java @@ -59,4 +59,6 @@ public interface IDmsOutsideAccommodationApprovalService extends IService - where processInstanceId = #{process_instance_id} + where process_instance_id = #{processInstanceId} diff --git a/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationApprovalMapper.xml b/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationApprovalMapper.xml index 7149f3d..e3c6fa4 100644 --- a/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationApprovalMapper.xml +++ b/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationApprovalMapper.xml @@ -68,6 +68,22 @@ where id = #{id} + + insert into dms_outside_accommodation_approval diff --git a/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsOutsideAccommodationApplyController.java b/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsOutsideAccommodationApplyController.java index 2aa8c7f..4541f2e 100644 --- a/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsOutsideAccommodationApplyController.java +++ b/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsOutsideAccommodationApplyController.java @@ -75,7 +75,7 @@ public class DmsOutsideAccommodationApplyController extends BaseController { /** * 获取外宿申请详细信息 */ - @PreAuthorize("@ss.hasPermi('dormitory:enlistmentReserve:query')") + @PreAuthorize("@ss.hasPermi('dormitory:outsideAccommodationApply:query')") @GetMapping(value = "/process/{processInstanceId}") @ApiOperation("获取应征入伍保留学籍申请详细信息") public AjaxResult getInfoByProcessInstanceId(@PathVariable("processInstanceId") String processInstanceId) { diff --git a/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsOutsideAccommodationApprovalController.java b/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsOutsideAccommodationApprovalController.java index 63c9d99..c5cf916 100644 --- a/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsOutsideAccommodationApprovalController.java +++ b/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsOutsideAccommodationApprovalController.java @@ -2,6 +2,7 @@ package com.srs.web.controller.dormitory; import java.util.List; import javax.servlet.http.HttpServletResponse; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -37,11 +38,10 @@ public class DmsOutsideAccommodationApprovalController extends BaseController { /** * 查询外宿申请审批记录列表 */ -@PreAuthorize("@ss.hasPermi('dormitory:outsideAccommodationApproval:list')") -@GetMapping("/list") -@ApiOperation("查询外宿申请审批记录列表") - public TableDataInfo list(DmsOutsideAccommodationApproval dmsOutsideAccommodationApproval) - { + @PreAuthorize("@ss.hasPermi('dormitory:outsideAccommodationApproval:list')") + @GetMapping("/list") + @ApiOperation("查询外宿申请审批记录列表") + public TableDataInfo list(DmsOutsideAccommodationApproval dmsOutsideAccommodationApproval) { startPage(); List list = dmsOutsideAccommodationApprovalService.selectDmsOutsideAccommodationApprovalList(dmsOutsideAccommodationApproval); return getDataTable(list); @@ -54,8 +54,7 @@ public class DmsOutsideAccommodationApprovalController extends BaseController { @Log(title = "外宿申请审批记录", businessType = BusinessType.EXPORT) @PostMapping("/export") @ApiOperation("导出外宿申请审批记录列表") - public void export(HttpServletResponse response, DmsOutsideAccommodationApproval dmsOutsideAccommodationApproval) - { + public void export(HttpServletResponse response, DmsOutsideAccommodationApproval dmsOutsideAccommodationApproval) { List list = dmsOutsideAccommodationApprovalService.selectDmsOutsideAccommodationApprovalList(dmsOutsideAccommodationApproval); ExcelUtil util = new ExcelUtil(DmsOutsideAccommodationApproval.class); util.exportExcel(response, list, "外宿申请审批记录数据"); @@ -67,8 +66,7 @@ public class DmsOutsideAccommodationApprovalController extends BaseController { @PreAuthorize("@ss.hasPermi('dormitory:outsideAccommodationApproval:query')") @GetMapping(value = "/{id}") @ApiOperation("获取外宿申请审批记录详细信息") - public AjaxResult getInfo(@PathVariable("id") Long id) - { + public AjaxResult getInfo(@PathVariable("id") Long id) { return success(dmsOutsideAccommodationApprovalService.selectDmsOutsideAccommodationApprovalById(id)); } @@ -79,11 +77,21 @@ public class DmsOutsideAccommodationApprovalController extends BaseController { @Log(title = "外宿申请审批记录", businessType = BusinessType.INSERT) @PostMapping("/add") @ApiOperation("新增外宿申请审批记录") - public AjaxResult add(@RequestBody DmsOutsideAccommodationApproval dmsOutsideAccommodationApproval) - { + public AjaxResult add(@RequestBody DmsOutsideAccommodationApproval dmsOutsideAccommodationApproval) { return toAjax(dmsOutsideAccommodationApprovalService.insertDmsOutsideAccommodationApproval(dmsOutsideAccommodationApproval)); } + /** + * 新增或修改外宿申请审批记录 + */ + @PreAuthorize("@ss.hasPermi('dormitory:outsideAccommodationApproval:add')") + @Log(title = "外宿申请审批记录", businessType = BusinessType.INSERT) + @PostMapping("/addOrUpdate") + @ApiOperation("新增或修改外宿申请审批记录") + public AjaxResult addOrUpdateAccommodationApproval(@RequestBody DmsOutsideAccommodationApproval dmsOutsideAccommodationApproval) { + return toAjax(dmsOutsideAccommodationApprovalService.addOrUpdateAccommodationApproval(dmsOutsideAccommodationApproval)); + } + /** * 修改外宿申请审批记录 */ @@ -91,8 +99,7 @@ public class DmsOutsideAccommodationApprovalController extends BaseController { @Log(title = "外宿申请审批记录", businessType = BusinessType.UPDATE) @PostMapping("/update") @ApiOperation("修改外宿申请审批记录") - public AjaxResult edit(@RequestBody DmsOutsideAccommodationApproval dmsOutsideAccommodationApproval) - { + public AjaxResult edit(@RequestBody DmsOutsideAccommodationApproval dmsOutsideAccommodationApproval) { return toAjax(dmsOutsideAccommodationApprovalService.updateDmsOutsideAccommodationApproval(dmsOutsideAccommodationApproval)); } @@ -103,8 +110,7 @@ public class DmsOutsideAccommodationApprovalController extends BaseController { @Log(title = "外宿申请审批记录", businessType = BusinessType.DELETE) @PostMapping("/{ids}") @ApiOperation("删除外宿申请审批记录") - public AjaxResult remove(@PathVariable Long[] ids) - { + public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(dmsOutsideAccommodationApprovalService.deleteDmsOutsideAccommodationApprovalByIds(ids)); } } diff --git a/srs-flowable/src/main/java/com/srs/flowable/listener/outsideAccommodation/OutsideAccommodationEndListener.java b/srs-flowable/src/main/java/com/srs/flowable/listener/outsideAccommodation/OutsideAccommodationEndListener.java index 2c5a54d..562a278 100644 --- a/srs-flowable/src/main/java/com/srs/flowable/listener/outsideAccommodation/OutsideAccommodationEndListener.java +++ b/srs-flowable/src/main/java/com/srs/flowable/listener/outsideAccommodation/OutsideAccommodationEndListener.java @@ -3,16 +3,10 @@ package com.srs.flowable.listener.outsideAccommodation; import com.srs.common.utils.SecurityUtils; import com.srs.common.utils.spring.SpringUtils; -import com.srs.dormitory.domain.DmsOutsideAccommodationApply; -import com.srs.flowable.domain.EnlistmentReserve; -import com.srs.flowable.domain.EnlistmentReserveApproval; import com.srs.flowable.domain.OutsideAccommodationApply; import com.srs.flowable.domain.OutsideAccommodationApproval; -import com.srs.flowable.mapper.EnlistmentReserveApprovalMapper; -import com.srs.flowable.mapper.EnlistmentReserveMapper; import com.srs.flowable.mapper.OutsideAccommodationApplyMapper; import com.srs.flowable.mapper.OutsideAccommodationApprovalMapper; -import com.srs.system.service.ISysUserService; import org.flowable.bpmn.model.BpmnModel; import org.flowable.bpmn.model.FlowNode; import org.flowable.engine.RepositoryService; @@ -132,8 +126,8 @@ public class OutsideAccommodationEndListener implements ExecutionListener { if (approval == null) { outsideAccommodationApprovalMapper.insertDmsOutsideAccommodationApproval(outsideAccommodationApproval); } else { - approval.setId(approval.getId()); - outsideAccommodationApprovalMapper.insertDmsOutsideAccommodationApproval(outsideAccommodationApproval); + outsideAccommodationApproval.setId(approval.getId()); + outsideAccommodationApprovalMapper.updateDmsOutsideAccommodationApproval(outsideAccommodationApproval); } } } \ No newline at end of file diff --git a/srs-flowable/src/main/resources/mapper/OutsideAccommodationApprovalMapper.xml b/srs-flowable/src/main/resources/mapper/OutsideAccommodationApprovalMapper.xml index cc4d0d9..a2be377 100644 --- a/srs-flowable/src/main/resources/mapper/OutsideAccommodationApprovalMapper.xml +++ b/srs-flowable/src/main/resources/mapper/OutsideAccommodationApprovalMapper.xml @@ -4,7 +4,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + From 86df798c25483a35b5f45e9247a555e1f7fe3785 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=81=92=E6=88=90?= <962704835@qq.com> Date: Fri, 12 Dec 2025 17:09:43 +0800 Subject: [PATCH 04/19] =?UTF-8?q?=E5=A4=96=E5=AE=BF=E7=94=B3=E8=AF=B7-?= =?UTF-8?q?=E8=81=94=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DmsOutsideAccommodationAttachment.java | 8 +- ...sOutsideAccommodationAttachmentMapper.java | 10 ++ ...OutsideAccommodationAttachmentService.java | 3 + ...ideAccommodationAttachmentServiceImpl.java | 5 + ...msOutsideAccommodationAttachmentMapper.xml | 111 ++++++++++++++++++ ...sideAccommodationAttachmentController.java | 11 ++ 6 files changed, 147 insertions(+), 1 deletion(-) diff --git a/dms-dormitory/src/main/java/com/srs/dormitory/domain/DmsOutsideAccommodationAttachment.java b/dms-dormitory/src/main/java/com/srs/dormitory/domain/DmsOutsideAccommodationAttachment.java index aa395a9..6064e49 100644 --- a/dms-dormitory/src/main/java/com/srs/dormitory/domain/DmsOutsideAccommodationAttachment.java +++ b/dms-dormitory/src/main/java/com/srs/dormitory/domain/DmsOutsideAccommodationAttachment.java @@ -7,6 +7,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.*; import com.srs.common.core.domain.BaseEntity; +import java.util.List; /** @@ -104,5 +105,10 @@ private static final long serialVersionUID=1L; @Excel(name = "学生学号") private String studentNo; - + /** + * 外宿申请表 + */ + @ApiModelProperty(value = "外宿申请表", hidden = true) + @Excel(name = "外宿申请表") + private List outsideAccommodationApplies; } diff --git a/dms-dormitory/src/main/java/com/srs/dormitory/mapper/DmsOutsideAccommodationAttachmentMapper.java b/dms-dormitory/src/main/java/com/srs/dormitory/mapper/DmsOutsideAccommodationAttachmentMapper.java index fb08282..43805b6 100644 --- a/dms-dormitory/src/main/java/com/srs/dormitory/mapper/DmsOutsideAccommodationAttachmentMapper.java +++ b/dms-dormitory/src/main/java/com/srs/dormitory/mapper/DmsOutsideAccommodationAttachmentMapper.java @@ -4,6 +4,7 @@ import java.util.List; import com.srs.dormitory.domain.DmsOutsideAccommodationAttachment; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; /** * 外宿申请附件Mapper接口 @@ -59,6 +60,15 @@ public interface DmsOutsideAccommodationAttachmentMapper extends BaseMapper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, apply_id, @@ -145,6 +250,12 @@ where id = #{id} + + delete + from dms_outside_accommodation_attachment + where attachment_name = #{attachmentName} and student_name = #{studentName} + + delete from dms_outside_accommodation_attachment where id in diff --git a/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsOutsideAccommodationAttachmentController.java b/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsOutsideAccommodationAttachmentController.java index 1541784..b3a1eda 100644 --- a/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsOutsideAccommodationAttachmentController.java +++ b/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsOutsideAccommodationAttachmentController.java @@ -124,4 +124,15 @@ public class DmsOutsideAccommodationAttachmentController extends BaseController public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(dmsOutsideAccommodationAttachmentService.deleteDmsOutsideAccommodationAttachmentByIds(ids)); } + + /** + * 删除保留学籍申请附件(入伍通知书等) + */ + @PreAuthorize("@ss.hasPermi('dormitory:outsideAccommodationAttachment:remove')") + @Log(title = "外宿申请附件", businessType = BusinessType.DELETE) + @PostMapping("/OutsideAccommodationAttachment") + @ApiOperation("删除外宿申请附件") + public AjaxResult deleteOutsideAccommodationAttachmentNameAndStuName(String attachmentName, String studentName) { + return toAjax(dmsOutsideAccommodationAttachmentService.deleteOutsideAccommodationAttachmentNameAndStuName(attachmentName, studentName)); + } } From b27938762b58b97102ba4e22c93dd8547e5faa9e Mon Sep 17 00:00:00 2001 From: 15976874561 <2553956742@qq.com> Date: Fri, 12 Dec 2025 17:33:57 +0800 Subject: [PATCH 05/19] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E7=94=BB=E5=83=8F?= =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CphAuditDetailsController.java | 8 --- .../comprehensive/SrsCqScoreController.java | 45 ++++++++++-- srs-admin/src/main/resources/application.yml | 8 +-- .../srs/comprehensive/domain/SrsCqScore.java | 40 ++++++++--- .../comprehensive/domain/Vo/CphOwnScore.java | 1 - .../domain/Vo/CphStuScoreType.java | 1 + .../mapper/CphAuditDetailsMapper.java | 1 - .../mapper/SrsCqScoreMapper.java | 18 +++-- .../service/ICphAuditDetailsService.java | 8 --- .../service/ISrsCqScoreService.java | 8 +++ .../impl/CphAuditDetailsServiceImpl.java | 5 -- .../service/impl/SrsCqScoreServiceImpl.java | 16 ++++- .../comprehensive/CphAuditDetailsMapper.xml | 14 +--- .../mapper/comprehensive/SrsCqScoreMapper.xml | 69 ++++++++++++++----- 14 files changed, 161 insertions(+), 81 deletions(-) diff --git a/srs-admin/src/main/java/com/srs/web/controller/comprehensive/CphAuditDetailsController.java b/srs-admin/src/main/java/com/srs/web/controller/comprehensive/CphAuditDetailsController.java index 8030c5a..dbdeda0 100644 --- a/srs-admin/src/main/java/com/srs/web/controller/comprehensive/CphAuditDetailsController.java +++ b/srs-admin/src/main/java/com/srs/web/controller/comprehensive/CphAuditDetailsController.java @@ -266,14 +266,6 @@ public class CphAuditDetailsController extends BaseController { public AjaxResult getInfo(@PathVariable("id") Long id) { return success(cphAuditDetailsService.selectCphAuditDetailsById(id)); } - /** - * 查询个人思想品得加分项申请 - */ - @PostMapping("/getcphiamByOne/{stuNo}") - public TableDataInfo getcphiamByOne(@PathVariable("stuNo") String stuNo) { - List list=cphAuditDetailsService.getcphiamByOne(stuNo); - return getDataTable(list); - } /** * 新增审核明细 diff --git a/srs-admin/src/main/java/com/srs/web/controller/comprehensive/SrsCqScoreController.java b/srs-admin/src/main/java/com/srs/web/controller/comprehensive/SrsCqScoreController.java index 9f706b7..7ea7fdb 100644 --- a/srs-admin/src/main/java/com/srs/web/controller/comprehensive/SrsCqScoreController.java +++ b/srs-admin/src/main/java/com/srs/web/controller/comprehensive/SrsCqScoreController.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletResponse; +import com.srs.comprehensive.domain.CphAuditDetails; import com.srs.comprehensive.domain.Dto.CphExport; import com.srs.comprehensive.domain.SrsCqScore; import com.srs.comprehensive.domain.SrsMajors; @@ -235,13 +236,6 @@ public class SrsCqScoreController extends BaseController { } - @GetMapping("/getOwn") - public AjaxResult getOwn() { - String stuNo = getUsername(); - return success(srsCqScoreService.getOwn(stuNo)); - } - - /** * 导出学生综合素质评分表列表 */ @@ -337,4 +331,41 @@ public class SrsCqScoreController extends BaseController { return getDataTable(list); } + /** + * 查询个人思想品得加分项申请 + */ + @PostMapping("/getcphiamByOne/{stuNo}") + public TableDataInfo getcphiamByOne(@PathVariable("stuNo") String stuNo) { + List list=srsCqScoreService.getcphiamByOne(stuNo); + return getDataTable(list); + } + @GetMapping("/getOwncphiamByOne") + public TableDataInfo getOwncphiamByOne() { + List list=srsCqScoreService.getcphiamByOne(getUsername()); + return getDataTable(list); + } + + /** + * 查询个人素质综合信息 + */ + @GetMapping("/getStuData") + public TableDataInfo getStuData(String stuNo) { + List list=srsCqScoreService.getStuData(stuNo); + return getDataTable(list); + } + @GetMapping("/getOwnData") + public TableDataInfo getOwnData() { + List list=srsCqScoreService.getStuData(getUsername()); + return getDataTable(list); + } + //查询综合素质分数 + @GetMapping("/getOwn") + public TableDataInfo getOwn() { + String stuNo = getUsername(); + return getDataTable(srsCqScoreService.getOwn2(stuNo)); + } + @GetMapping("/getStu") + public TableDataInfo getStu(String stuNo){ + return getDataTable(srsCqScoreService.getOwn2(stuNo)); + } } diff --git a/srs-admin/src/main/resources/application.yml b/srs-admin/src/main/resources/application.yml index efab106..b51ace4 100644 --- a/srs-admin/src/main/resources/application.yml +++ b/srs-admin/src/main/resources/application.yml @@ -81,15 +81,15 @@ spring: # redis 配置 redis: # 地址 - host: localhost #正式环境redis -# host: 47.112.118.149 #测试开发地址 +# host: localhost #正式环境redis + host: 47.112.118.149 #测试开发地址 # 端口,默认为6379 port: 6379 # 数据库索引 database: 0 # 密码SSSS -# password: Houpuyfb #测试开发密码 - password: #正式环境密码 + password: Houpuyfb #测试开发密码 +# password: #正式环境密码 # 连接超时时间 timeout: 10s lettuce: diff --git a/srs-comprehensive/src/main/java/com/srs/comprehensive/domain/SrsCqScore.java b/srs-comprehensive/src/main/java/com/srs/comprehensive/domain/SrsCqScore.java index 10dca31..2c07316 100644 --- a/srs-comprehensive/src/main/java/com/srs/comprehensive/domain/SrsCqScore.java +++ b/srs-comprehensive/src/main/java/com/srs/comprehensive/domain/SrsCqScore.java @@ -1,6 +1,9 @@ package com.srs.comprehensive.domain; import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.srs.common.annotation.Excel; @@ -8,10 +11,11 @@ import com.srs.common.core.domain.BaseEntity; /** * 学生综合素质评分表对象 srs_cq_score - * + * * @author srs * @date 2023-06-29 */ +@Data public class SrsCqScore extends BaseEntity { private static final long serialVersionUID = 1L; @@ -45,7 +49,23 @@ public class SrsCqScore extends BaseEntity private String majorsName; @Excel(name = "班级") private String className; - + //思想品德 + @TableField(exist = false) + private BigDecimal iamScore; + //第二课堂 + @TableField(exist = false) + private BigDecimal classtwoScore; + //综合评价 + @TableField(exist = false) + private BigDecimal ceScore; + //科学文化素质 + @TableField(exist = false) + private BigDecimal stuScore; + //体能素质 + @TableField(exist = false) + private BigDecimal sportScore; + @TableField(exist = false) + private BigDecimal totalScore; public String getStuYearName() { return stuYearName; @@ -94,12 +114,12 @@ public class SrsCqScore extends BaseEntity } - public void setId(Long id) + public void setId(Long id) { this.id = id; } - public Long getId() + public Long getId() { return id; } @@ -110,30 +130,30 @@ public class SrsCqScore extends BaseEntity public void setStuNo(String stuNo) { this.stuNo = stuNo; } - public void setStuYearId(Long stuYearId) + public void setStuYearId(Long stuYearId) { this.stuYearId = stuYearId; } - public Long getStuYearId() + public Long getStuYearId() { return stuYearId; } - public void setCqScore(BigDecimal cqScore) + public void setCqScore(BigDecimal cqScore) { this.cqScore = cqScore; } - public BigDecimal getCqScore() + public BigDecimal getCqScore() { return cqScore; } - public void setDelFlag(String delFlag) + public void setDelFlag(String delFlag) { this.delFlag = delFlag; } - public String getDelFlag() + public String getDelFlag() { return delFlag; } diff --git a/srs-comprehensive/src/main/java/com/srs/comprehensive/domain/Vo/CphOwnScore.java b/srs-comprehensive/src/main/java/com/srs/comprehensive/domain/Vo/CphOwnScore.java index 23affe3..c1864a6 100644 --- a/srs-comprehensive/src/main/java/com/srs/comprehensive/domain/Vo/CphOwnScore.java +++ b/srs-comprehensive/src/main/java/com/srs/comprehensive/domain/Vo/CphOwnScore.java @@ -28,5 +28,4 @@ public class CphOwnScore { public BigDecimal stuScore; public BigDecimal sportScore; - } diff --git a/srs-comprehensive/src/main/java/com/srs/comprehensive/domain/Vo/CphStuScoreType.java b/srs-comprehensive/src/main/java/com/srs/comprehensive/domain/Vo/CphStuScoreType.java index d1d61e2..33ab75b 100644 --- a/srs-comprehensive/src/main/java/com/srs/comprehensive/domain/Vo/CphStuScoreType.java +++ b/srs-comprehensive/src/main/java/com/srs/comprehensive/domain/Vo/CphStuScoreType.java @@ -20,5 +20,6 @@ public class CphStuScoreType { public String typeName; + public BigDecimal totalScore; } diff --git a/srs-comprehensive/src/main/java/com/srs/comprehensive/mapper/CphAuditDetailsMapper.java b/srs-comprehensive/src/main/java/com/srs/comprehensive/mapper/CphAuditDetailsMapper.java index 99f58c4..a9c5d44 100644 --- a/srs-comprehensive/src/main/java/com/srs/comprehensive/mapper/CphAuditDetailsMapper.java +++ b/srs-comprehensive/src/main/java/com/srs/comprehensive/mapper/CphAuditDetailsMapper.java @@ -22,7 +22,6 @@ public interface CphAuditDetailsMapper * @return 审核明细 */ public CphAuditDetails selectCphAuditDetailsById(Long id); - public List getcphiamByOne(String stuNo); public CphAuditDetails selectCphAuditDetailsByProjectId(Long id); diff --git a/srs-comprehensive/src/main/java/com/srs/comprehensive/mapper/SrsCqScoreMapper.java b/srs-comprehensive/src/main/java/com/srs/comprehensive/mapper/SrsCqScoreMapper.java index 6c69a2c..cc2423b 100644 --- a/srs-comprehensive/src/main/java/com/srs/comprehensive/mapper/SrsCqScoreMapper.java +++ b/srs-comprehensive/src/main/java/com/srs/comprehensive/mapper/SrsCqScoreMapper.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.Map; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.srs.comprehensive.domain.CphAuditDetails; import com.srs.comprehensive.domain.Dto.CphExport; import com.srs.comprehensive.domain.SrsCqScore; import com.srs.comprehensive.domain.SrsMajors; @@ -14,7 +15,7 @@ import org.springframework.data.repository.query.Param; /** * 学生综合素质评分表Mapper接口 - * + * * @author srs * @date 2023-06-29 */ @@ -29,7 +30,7 @@ public interface SrsCqScoreMapper extends BaseMapper /** * 查询学生综合素质评分表 - * + * * @param id 学生综合素质评分表主键 * @return 学生综合素质评分表 */ @@ -45,6 +46,8 @@ public interface SrsCqScoreMapper extends BaseMapper public List listOwnFive(String stuNo); + public List getcphiamByOne(String stuNo); + public List listOwnCollegeScore(CphSearch param); public List listOwnCollegeStu(CphSearch param); @@ -54,6 +57,7 @@ public interface SrsCqScoreMapper extends BaseMapper public List listOwnClass(CphSearch param); + public List getStuData(String stuNo); /** @@ -80,6 +84,8 @@ public interface SrsCqScoreMapper extends BaseMapper public List getOwn(String stuNo); + public List getOwn2(String stuNo); + public void generateComprehensiveSummary(@Param("id") int id); @@ -87,7 +93,7 @@ public interface SrsCqScoreMapper extends BaseMapper /** * 新增学生综合素质评分表 - * + * * @param srsCqScore 学生综合素质评分表 * @return 结果 */ @@ -97,7 +103,7 @@ public interface SrsCqScoreMapper extends BaseMapper /** * 修改学生综合素质评分表 - * + * * @param srsCqScore 学生综合素质评分表 * @return 结果 */ @@ -105,7 +111,7 @@ public interface SrsCqScoreMapper extends BaseMapper /** * 删除学生综合素质评分表 - * + * * @param id 学生综合素质评分表主键 * @return 结果 */ @@ -113,7 +119,7 @@ public interface SrsCqScoreMapper extends BaseMapper /** * 批量删除学生综合素质评分表 - * + * * @param ids 需要删除的数据主键集合 * @return 结果 */ diff --git a/srs-comprehensive/src/main/java/com/srs/comprehensive/service/ICphAuditDetailsService.java b/srs-comprehensive/src/main/java/com/srs/comprehensive/service/ICphAuditDetailsService.java index 860528c..fe45d0a 100644 --- a/srs-comprehensive/src/main/java/com/srs/comprehensive/service/ICphAuditDetailsService.java +++ b/srs-comprehensive/src/main/java/com/srs/comprehensive/service/ICphAuditDetailsService.java @@ -49,14 +49,6 @@ public interface ICphAuditDetailsService */ public CphAuditDetails selectCphAuditDetailsById(Long id); - /** - * 查询个人思想品得加分项申请 - * - * @param stuNo - * @return - **/ - public List getcphiamByOne(String stuNo); - /** * 我的已审核 * @author zhy diff --git a/srs-comprehensive/src/main/java/com/srs/comprehensive/service/ISrsCqScoreService.java b/srs-comprehensive/src/main/java/com/srs/comprehensive/service/ISrsCqScoreService.java index b8b376e..1a9f00c 100644 --- a/srs-comprehensive/src/main/java/com/srs/comprehensive/service/ISrsCqScoreService.java +++ b/srs-comprehensive/src/main/java/com/srs/comprehensive/service/ISrsCqScoreService.java @@ -1,6 +1,7 @@ package com.srs.comprehensive.service; import com.srs.common.core.domain.AjaxResult; +import com.srs.comprehensive.domain.CphAuditDetails; import com.srs.comprehensive.domain.Dto.CphExport; import com.srs.comprehensive.domain.SrsCqScore; import com.srs.comprehensive.domain.SrsMajors; @@ -37,6 +38,11 @@ public interface ISrsCqScoreService public List getOwn(String stuNo); + public List getOwn2(String stuNo); + + public List getcphiamByOne(String stuNo); + + public List listCphScore(CphSearch search); public List listOwnCollegeScore(CphSearch param); @@ -109,4 +115,6 @@ public interface ISrsCqScoreService List comprehensiveRanking(SrsCqScore srsCqScore); + public List getStuData(String stuNo); + } diff --git a/srs-comprehensive/src/main/java/com/srs/comprehensive/service/impl/CphAuditDetailsServiceImpl.java b/srs-comprehensive/src/main/java/com/srs/comprehensive/service/impl/CphAuditDetailsServiceImpl.java index 0b6843f..c4ea80f 100644 --- a/srs-comprehensive/src/main/java/com/srs/comprehensive/service/impl/CphAuditDetailsServiceImpl.java +++ b/srs-comprehensive/src/main/java/com/srs/comprehensive/service/impl/CphAuditDetailsServiceImpl.java @@ -331,11 +331,6 @@ public class CphAuditDetailsServiceImpl implements ICphAuditDetailsService { return cphAuditDetailsMapper.selectCphAuditDetailsById(id); } - //查询个人思想品得加分申请 - public List getcphiamByOne(String stuNo){ - return cphAuditDetailsMapper.getcphiamByOne(stuNo); - } - /** * 查询已审核 * diff --git a/srs-comprehensive/src/main/java/com/srs/comprehensive/service/impl/SrsCqScoreServiceImpl.java b/srs-comprehensive/src/main/java/com/srs/comprehensive/service/impl/SrsCqScoreServiceImpl.java index 262c915..ecfd049 100644 --- a/srs-comprehensive/src/main/java/com/srs/comprehensive/service/impl/SrsCqScoreServiceImpl.java +++ b/srs-comprehensive/src/main/java/com/srs/comprehensive/service/impl/SrsCqScoreServiceImpl.java @@ -89,7 +89,12 @@ public class SrsCqScoreServiceImpl extends ServiceImpl getOwn(String stuNo){ - return srsCqScoreMapper.getOwn( stuNo); + return srsCqScoreMapper.getOwn(stuNo); + } + + @Override + public List getOwn2(String stuNo){ + return srsCqScoreMapper.getOwn2(stuNo); } @Override @@ -342,5 +347,12 @@ public class SrsCqScoreServiceImpl extends ServiceImpl getcphiamByOne(String stuNo){ + return srsCqScoreMapper.getcphiamByOne(stuNo); + } + //查询个人素质综合信息 + public List getStuData(String stuNo){ + return srsCqScoreMapper.getStuData(stuNo); + } } diff --git a/srs-comprehensive/src/main/resources/mapper/comprehensive/CphAuditDetailsMapper.xml b/srs-comprehensive/src/main/resources/mapper/comprehensive/CphAuditDetailsMapper.xml index 58ebb0f..445cd29 100644 --- a/srs-comprehensive/src/main/resources/mapper/comprehensive/CphAuditDetailsMapper.xml +++ b/srs-comprehensive/src/main/resources/mapper/comprehensive/CphAuditDetailsMapper.xml @@ -245,17 +245,5 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" left join cph_rules as b on a.rule_id = b.rule_id where stu_no = #{stuNo} and stu_year_id = #{stuYearId}; - + diff --git a/srs-comprehensive/src/main/resources/mapper/comprehensive/SrsCqScoreMapper.xml b/srs-comprehensive/src/main/resources/mapper/comprehensive/SrsCqScoreMapper.xml index 7c07024..86da603 100644 --- a/srs-comprehensive/src/main/resources/mapper/comprehensive/SrsCqScoreMapper.xml +++ b/srs-comprehensive/src/main/resources/mapper/comprehensive/SrsCqScoreMapper.xml @@ -3,7 +3,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -37,7 +37,7 @@ m.major_name, c.class_name, stu_year_name - + from srs_cq_score cq left join srs_student s on s.stu_no = cq.stu_no @@ -46,7 +46,7 @@ left JOIN srs_majors m ON c.major_id = m.major_id left JOIN sys_dept d ON m.college_id = d.dept_id left JOIN srs_stu_year sy ON cq.stu_year_id = sy.id - + - - + + + + - + - - - insert into srs_cq_score @@ -383,7 +404,7 @@ #{delFlag}, - + update srs_cq_score @@ -398,20 +419,20 @@ where id = #{id} - + delete from srs_cq_score where id = #{id} - + delete from srs_cq_score where id in #{id} - + - + - - \ No newline at end of file + + + From 8c9d9c90c06d836af91631c1c4d9481e54892610 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9F=A6=E4=B8=9C=E6=81=92?= <1747763533@qq.com> Date: Fri, 12 Dec 2025 17:56:02 +0800 Subject: [PATCH 06/19] =?UTF-8?q?=E9=80=80=E4=BC=8D=E5=A4=8D=E5=AD=A6?= =?UTF-8?q?=E8=A1=A8=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/disbasic/DiscListener.java | 61 ++++++++++--------- .../service/impl/SysDisBasicServiceImpl.java | 2 +- 2 files changed, 33 insertions(+), 30 deletions(-) diff --git a/srs-flowable/src/main/java/com/srs/flowable/listener/disbasic/DiscListener.java b/srs-flowable/src/main/java/com/srs/flowable/listener/disbasic/DiscListener.java index 4d4bb98..56c64c4 100644 --- a/srs-flowable/src/main/java/com/srs/flowable/listener/disbasic/DiscListener.java +++ b/srs-flowable/src/main/java/com/srs/flowable/listener/disbasic/DiscListener.java @@ -37,9 +37,6 @@ public class DiscListener implements ExecutionListener { @Override public void notify(DelegateExecution execution) { - log.info("===== 退伍复学审批监听器触发 ====="); - log.info("当前节点ID:{}", execution.getCurrentActivityId()); - log.info("流程实例ID:{}", execution.getProcessInstanceId()); // 1. 获取当前节点ID和流程定义ID String currentActivityId = execution.getCurrentActivityId(); // 当前节点ID(兼容所有版本) String processDefinitionId = execution.getProcessDefinitionId(); // 流程定义ID @@ -117,9 +114,17 @@ public class DiscListener implements ExecutionListener { switch (currentNodeName) { case "招生与就业处": - return counselorInfo.getUserId(); + List zjcData = sysDisBasicMapper.getShenDataInfo("招就处"); + return zjcData.get(0).getUserId(); + case "辅导员审核": + + // 返回匹配的辅导员用户ID(作为下一个节点负责人) + return counselorInfo.getUserId(); + + case "学务审核": + // 辅导员通过后 → 下一个节点:学务(筛选出角色ID=105,且与当前部门一致) // 查询角色ID=105(学务)的所有用户 SysUser queryUser = new SysUser(); @@ -134,12 +139,8 @@ public class DiscListener implements ExecutionListener { .filter(user -> currentDeptId.equals(user.getDeptId())) // 部门ID匹配 .findFirst() // 取第一个匹配的学务(若有多个,可根据排序或优先级调整) .orElseThrow(() -> new RuntimeException("未找到部门ID=" + currentDeptId + "的学务负责人")); - - - // 返回匹配的辅导员用户ID(作为下一个节点负责人) return targetAcademic.getUserId(); - case "学务审核": // 学务通过后 → 下一个节点:二级学院(角色ID=106,匹配学生所属学院) // 查询当前流程对应的业务数据(获取学生所属学院ID) // RtEnlistmentReserve reserve = enlistmentReserveMapper.selectRtEnlistmentReserveByProcessInstanceId(processInstanceId); @@ -147,6 +148,24 @@ public class DiscListener implements ExecutionListener { // throw new RuntimeException("未查询到流程对应的业务数据,processInstanceId=" + processInstanceId); // } + + + case "二级学院审核": + // 二级学院通过后 → 下一个节点:学籍管理科 + + // 获取学籍管理科审核人 + List shenDataInfo = sysDisBasicMapper.getShenDataInfo("学籍管理科"); + + if (shenDataInfo.isEmpty()) { + throw new RuntimeException("未查询到对应的用户"); + } + + + // 暂时选择学籍管理科第一个人作为审核人 + return shenDataInfo.get(0).getUserId(); + + case "学籍管理": + // 查询角色ID=106(二级学院)的所有用户 SysUser qUser = new SysUser(); qUser.setRoleId(106L); // 二级学院角色固定ID=106 @@ -165,25 +184,13 @@ public class DiscListener implements ExecutionListener { // 返回匹配的二级学院负责人ID return targetCollegeLeader.getUserId(); - - case "二级学院审核": - // 二级学院通过后 → 下一个节点:学籍管理科 - - // 获取学籍管理科审核人 - List shenDataInfo = sysDisBasicMapper.getShenDataInfo("学籍管理科"); - - if (shenDataInfo.isEmpty()) { - throw new RuntimeException("未查询到对应的用户"); - } - - - // 暂时选择学籍管理科第一个人作为审核人 - return shenDataInfo.get(0).getUserId(); - - case "学籍管理": // 学籍管理科通过后 → 下一个节点:教务处主管领导(假设部门ID=40) // 获取学教务处主管领导审核人 + + + case "教务处主管": + // 最后一个节点通过后 → 流程结束(无需设置负责人) List teacherVos = sysDisBasicMapper.getShenDataInfo("教务处主管领导"); if (teacherVos.isEmpty()) { @@ -193,13 +200,9 @@ public class DiscListener implements ExecutionListener { // 暂时选择教务处主管领导第一个人作为审核人 return teacherVos.get(0).getUserId(); - case "教务处主管": - // 最后一个节点通过后 → 流程结束(无需设置负责人) - return null; - default: throw new RuntimeException("未配置节点[" + currentNodeName + "]的下一个负责人规则"); } } -} +} \ No newline at end of file diff --git a/srs-routine/src/main/java/com/srs/routine/service/impl/SysDisBasicServiceImpl.java b/srs-routine/src/main/java/com/srs/routine/service/impl/SysDisBasicServiceImpl.java index cc8b1d8..8ca202f 100644 --- a/srs-routine/src/main/java/com/srs/routine/service/impl/SysDisBasicServiceImpl.java +++ b/srs-routine/src/main/java/com/srs/routine/service/impl/SysDisBasicServiceImpl.java @@ -283,7 +283,7 @@ public class SysDisBasicServiceImpl extends ServiceImpl Date: Fri, 12 Dec 2025 18:37:45 +0800 Subject: [PATCH 07/19] =?UTF-8?q?=E5=AD=A6=E5=B7=A5=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E5=87=BA=E9=94=99=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/comprehensive/SrsStudentMapper.xml | 151 ++++++++++++------ 1 file changed, 101 insertions(+), 50 deletions(-) diff --git a/srs-comprehensive/src/main/resources/mapper/comprehensive/SrsStudentMapper.xml b/srs-comprehensive/src/main/resources/mapper/comprehensive/SrsStudentMapper.xml index 6e197b9..f35b211 100644 --- a/srs-comprehensive/src/main/resources/mapper/comprehensive/SrsStudentMapper.xml +++ b/srs-comprehensive/src/main/resources/mapper/comprehensive/SrsStudentMapper.xml @@ -710,34 +710,69 @@ order by quantity desc limit 4 + + + + + + + + + + + + + + + + + + + select id, apply_id, From 08545100c89921377d44e487e3fe53ed93797a09 Mon Sep 17 00:00:00 2001 From: 15976874561 <2553956742@qq.com> Date: Mon, 15 Dec 2025 13:34:23 +0800 Subject: [PATCH 09/19] =?UTF-8?q?=E5=AD=A6=E5=B7=A5=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E5=87=BA=E9=94=99=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/mapper/comprehensive/SrsCqScoreMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srs-comprehensive/src/main/resources/mapper/comprehensive/SrsCqScoreMapper.xml b/srs-comprehensive/src/main/resources/mapper/comprehensive/SrsCqScoreMapper.xml index 86da603..c4a7c83 100644 --- a/srs-comprehensive/src/main/resources/mapper/comprehensive/SrsCqScoreMapper.xml +++ b/srs-comprehensive/src/main/resources/mapper/comprehensive/SrsCqScoreMapper.xml @@ -104,7 +104,7 @@ left join srs_majors as d on c.major_id = d.major_id ORDER BY a.stu_year_id,a.stu_no ) as t1 - where t1.stu_no = #{stuNo} order by stu_year_name desc + where t1.stu_no = #{stuNo} order by stu_year_name desc limit 3 From b62932b0cbfef4302957692f56eebce6c8ee1d88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9F=A6=E4=B8=9C=E6=81=92?= <1747763533@qq.com> Date: Mon, 15 Dec 2025 22:30:17 +0800 Subject: [PATCH 10/19] =?UTF-8?q?=E9=80=80=E4=BC=8D=E5=A4=8D=E5=AD=A6?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/disbasic/DiscListener.java | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/srs-flowable/src/main/java/com/srs/flowable/listener/disbasic/DiscListener.java b/srs-flowable/src/main/java/com/srs/flowable/listener/disbasic/DiscListener.java index 56c64c4..73e2be3 100644 --- a/srs-flowable/src/main/java/com/srs/flowable/listener/disbasic/DiscListener.java +++ b/srs-flowable/src/main/java/com/srs/flowable/listener/disbasic/DiscListener.java @@ -152,20 +152,6 @@ public class DiscListener implements ExecutionListener { case "二级学院审核": // 二级学院通过后 → 下一个节点:学籍管理科 - - // 获取学籍管理科审核人 - List shenDataInfo = sysDisBasicMapper.getShenDataInfo("学籍管理科"); - - if (shenDataInfo.isEmpty()) { - throw new RuntimeException("未查询到对应的用户"); - } - - - // 暂时选择学籍管理科第一个人作为审核人 - return shenDataInfo.get(0).getUserId(); - - case "学籍管理": - // 查询角色ID=106(二级学院)的所有用户 SysUser qUser = new SysUser(); qUser.setRoleId(106L); // 二级学院角色固定ID=106 @@ -184,9 +170,25 @@ public class DiscListener implements ExecutionListener { // 返回匹配的二级学院负责人ID return targetCollegeLeader.getUserId(); - // 学籍管理科通过后 → 下一个节点:教务处主管领导(假设部门ID=40) + // 学籍管理科通过后 → 下一个节点:教务处主管领导(假设部门ID=40) + + // 获取学教务处主管领导审核人 + + + case "学籍管理": + + // 获取学籍管理科审核人 + List shenDataInfo = sysDisBasicMapper.getShenDataInfo("学籍管理科"); + + if (shenDataInfo.isEmpty()) { + throw new RuntimeException("未查询到对应的用户"); + } + + + // 暂时选择学籍管理科第一个人作为审核人 + return shenDataInfo.get(0).getUserId(); + - // 获取学教务处主管领导审核人 case "教务处主管": From e91cb96f76fa612817a304a54908d6fc9c911b54 Mon Sep 17 00:00:00 2001 From: 18154758993 <605281283@qq.com> Date: Mon, 15 Dec 2025 23:07:00 +0800 Subject: [PATCH 11/19] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dormitory/SrsDormitoryStudentController.java | 2 +- srs-admin/src/main/resources/application.yml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/srs-admin/src/main/java/com/srs/web/controller/dormitory/SrsDormitoryStudentController.java b/srs-admin/src/main/java/com/srs/web/controller/dormitory/SrsDormitoryStudentController.java index 746513a..ee0c293 100644 --- a/srs-admin/src/main/java/com/srs/web/controller/dormitory/SrsDormitoryStudentController.java +++ b/srs-admin/src/main/java/com/srs/web/controller/dormitory/SrsDormitoryStudentController.java @@ -226,7 +226,7 @@ public class SrsDormitoryStudentController extends BaseController { } - @PreAuthorize("@ss.hasPermi('dms:dormStu:add')") + @ApiOperation(value = "学生自主选择床位", notes = "id不用填写,只能选择是当前学生班级并且为空的宿舍床位", response = StudentDormitoryDto.class) @PostMapping("/addCheckInInformation") public AjaxResult addCheckInInformation(@RequestBody StudentDormitoryDto dto) { diff --git a/srs-admin/src/main/resources/application.yml b/srs-admin/src/main/resources/application.yml index b51ace4..0d4b3c2 100644 --- a/srs-admin/src/main/resources/application.yml +++ b/srs-admin/src/main/resources/application.yml @@ -64,8 +64,8 @@ spring: # 国际化资源文件路径 basename: i18n/messages profiles: -# active: druid #正式环境 - active: dev #测试环境 + active: druid #正式环境 +# active: dev #测试环境 # 文件上传 servlet: multipart: @@ -81,15 +81,15 @@ spring: # redis 配置 redis: # 地址 -# host: localhost #正式环境redis - host: 47.112.118.149 #测试开发地址 + host: localhost #正式环境redis +# host: 47.112.118.149 #测试开发地址 # 端口,默认为6379 port: 6379 # 数据库索引 database: 0 # 密码SSSS - password: Houpuyfb #测试开发密码 -# password: #正式环境密码 +# password: Houpuyfb #测试开发密码 + password: #正式环境密码 # 连接超时时间 timeout: 10s lettuce: From 07185a8c5114e2d043b2e75fe2e8b13c3adc3b2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=81=92=E6=88=90?= <962704835@qq.com> Date: Tue, 16 Dec 2025 10:33:07 +0800 Subject: [PATCH 12/19] =?UTF-8?q?=E5=A4=96=E5=AE=BF=E7=94=B3=E8=AF=B7-?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E9=80=9A=E8=BF=87=E5=90=8E=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=AD=A6=E7=94=9F=E7=9A=84=E4=BD=8F=E5=AE=BF=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E4=B8=BA=E5=A4=96=E5=AE=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../srs/flowable/domain/DormitoryStudent.java | 69 +++++++++++++++++++ .../OutsideAccommodationEndListener.java | 6 ++ .../OutsideAccommodationApplyMapper.java | 4 ++ .../OutsideAccommodationApplyMapper.xml | 20 ++++++ 4 files changed, 99 insertions(+) create mode 100644 srs-flowable/src/main/java/com/srs/flowable/domain/DormitoryStudent.java diff --git a/srs-flowable/src/main/java/com/srs/flowable/domain/DormitoryStudent.java b/srs-flowable/src/main/java/com/srs/flowable/domain/DormitoryStudent.java new file mode 100644 index 0000000..760bb91 --- /dev/null +++ b/srs-flowable/src/main/java/com/srs/flowable/domain/DormitoryStudent.java @@ -0,0 +1,69 @@ +package com.srs.flowable.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 宿舍学生关联表 + *

+ * + */ +@Data +@TableName("srs_dormitory_student") +@ApiModel(value = "SrsDormitoryStudent对象", description = "宿舍学生关联表") +public class DormitoryStudent implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("宿舍ID") + @TableField("dormitory_id") + private Long dormitoryId; + + @ApiModelProperty("床位ID") + @TableField("bed_id") + private Long bedId; + + @ApiModelProperty("学生学号") + @TableField("stu_no") + private String stuNo; + + @ApiModelProperty("是否为宿舍长(0否 1是)") + @TableField("is_dormitory_head") + private Integer isDormitoryHead; + + @ApiModelProperty("状态(0未缴费 1已缴费)") + @TableField("status") + private Integer status; + + @ApiModelProperty("入住时间") + @TableField("checkin_time") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDateTime checkinTime; + + @ApiModelProperty("入住状态") + @TableField("in_status") + public String inStatus; + + @ApiModelProperty("是否在校住宿") + @TableField("isInStudentsleep") + public String isInStudentsleep; + +} + + + + diff --git a/srs-flowable/src/main/java/com/srs/flowable/listener/outsideAccommodation/OutsideAccommodationEndListener.java b/srs-flowable/src/main/java/com/srs/flowable/listener/outsideAccommodation/OutsideAccommodationEndListener.java index 562a278..308d58e 100644 --- a/srs-flowable/src/main/java/com/srs/flowable/listener/outsideAccommodation/OutsideAccommodationEndListener.java +++ b/srs-flowable/src/main/java/com/srs/flowable/listener/outsideAccommodation/OutsideAccommodationEndListener.java @@ -3,6 +3,7 @@ package com.srs.flowable.listener.outsideAccommodation; import com.srs.common.utils.SecurityUtils; import com.srs.common.utils.spring.SpringUtils; +import com.srs.flowable.domain.DormitoryStudent; import com.srs.flowable.domain.OutsideAccommodationApply; import com.srs.flowable.domain.OutsideAccommodationApproval; import com.srs.flowable.mapper.OutsideAccommodationApplyMapper; @@ -76,6 +77,11 @@ public class OutsideAccommodationEndListener implements ExecutionListener { if (currentNodeName.equals("学校领导审批")){ // 改变申请表中的审核状态(审核通过) status = 5L; + DormitoryStudent dormitoryStudent = new DormitoryStudent(); + dormitoryStudent.setStuNo(outsideAccommodationApply.getStudentNo()); + dormitoryStudent.setIsInStudentsleep("外宿"); + // 审核通过改变学生住宿状态 + outsideAccommodationApplyMapper.updateSrsDormitoryStudent(dormitoryStudent); } outsideAccommodationApply.setStatus(status); outsideAccommodationApplyMapper.updateDmsOutsideAccommodationApply(outsideAccommodationApply); diff --git a/srs-flowable/src/main/java/com/srs/flowable/mapper/OutsideAccommodationApplyMapper.java b/srs-flowable/src/main/java/com/srs/flowable/mapper/OutsideAccommodationApplyMapper.java index b34697e..ba98a78 100644 --- a/srs-flowable/src/main/java/com/srs/flowable/mapper/OutsideAccommodationApplyMapper.java +++ b/srs-flowable/src/main/java/com/srs/flowable/mapper/OutsideAccommodationApplyMapper.java @@ -2,6 +2,7 @@ package com.srs.flowable.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.srs.common.doman.vo.TeacherVo; +import com.srs.flowable.domain.DormitoryStudent; import com.srs.flowable.domain.OutsideAccommodationApply; import org.apache.ibatis.annotations.Options; import org.apache.ibatis.annotations.Param; @@ -67,6 +68,9 @@ public interface OutsideAccommodationApplyMapper extends BaseMapper + + + update srs_dormitory_student + + dormitory_id = #{dormitoryId}, + dormitory_id =NULL, + bed_id = #{bedId}, + stu_no = #{stuNo}, + is_dormitory_head = #{isDormitoryHead}, + status =#{status}, + checkin_time = #{checkinTime}, + checkin_time =NULL, + in_status = #{inStatus}, + isInStudentsleep = #{isInStudentsleep}, + + + and stu_no = #{stuNo} + + + update dms_outside_accommodation_apply From fc16147d89deaa45fc0c6fc24efe9d24570eac79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=81=92=E6=88=90?= <962704835@qq.com> Date: Tue, 16 Dec 2025 11:09:52 +0800 Subject: [PATCH 13/19] =?UTF-8?q?=E5=85=A5=E4=BC=8D=E7=94=B3=E8=AF=B7-?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E9=80=9A=E8=BF=87=E5=90=8E=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=AD=A6=E7=94=9F=E5=85=A5=E4=BD=8F=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enlistmentReserve/ApprovalAssigneeListener.java | 3 +++ .../com/srs/flowable/mapper/EnlistmentReserveMapper.java | 2 ++ .../src/main/resources/mapper/EnlistmentReserveMapper.xml | 7 +++++++ 3 files changed, 12 insertions(+) diff --git a/srs-flowable/src/main/java/com/srs/flowable/listener/enlistmentReserve/ApprovalAssigneeListener.java b/srs-flowable/src/main/java/com/srs/flowable/listener/enlistmentReserve/ApprovalAssigneeListener.java index c155a2c..4fd0322 100644 --- a/srs-flowable/src/main/java/com/srs/flowable/listener/enlistmentReserve/ApprovalAssigneeListener.java +++ b/srs-flowable/src/main/java/com/srs/flowable/listener/enlistmentReserve/ApprovalAssigneeListener.java @@ -93,6 +93,9 @@ public class ApprovalAssigneeListener implements ExecutionListener { // 如果到了最后一个审批人,则修改申请表审核状态 if (currentNodeName.equals("教务处主管领导审批")){ status = 6L; + + // 审批通过后删除学生入住信息 + rtEnlistmentReserveMapper.deleteDormitoryStudentById(enlistmentReserve.getStudentNo()); } // 改变申请表中的审核状态(审核通过) enlistmentReserve.setApplyStatus(status); diff --git a/srs-flowable/src/main/java/com/srs/flowable/mapper/EnlistmentReserveMapper.java b/srs-flowable/src/main/java/com/srs/flowable/mapper/EnlistmentReserveMapper.java index 38568ba..8013649 100644 --- a/srs-flowable/src/main/java/com/srs/flowable/mapper/EnlistmentReserveMapper.java +++ b/srs-flowable/src/main/java/com/srs/flowable/mapper/EnlistmentReserveMapper.java @@ -75,6 +75,8 @@ public interface EnlistmentReserveMapper extends BaseMapper { */ int deleteRtEnlistmentReserveById(Long id); + int deleteDormitoryStudentById(String StuNo); + /** * 批量删除应征入伍保留学籍申请 * diff --git a/srs-flowable/src/main/resources/mapper/EnlistmentReserveMapper.xml b/srs-flowable/src/main/resources/mapper/EnlistmentReserveMapper.xml index e98f93d..2a0b6fb 100644 --- a/srs-flowable/src/main/resources/mapper/EnlistmentReserveMapper.xml +++ b/srs-flowable/src/main/resources/mapper/EnlistmentReserveMapper.xml @@ -200,6 +200,13 @@ where id = #{id} + + + delete + from srs_dormitory_student + where stu_no = #{stuNo} + + delete from rt_enlistment_reserve where id in From eda0c48b3f81c3f67dcc7e8e87d6299281f981bc Mon Sep 17 00:00:00 2001 From: 18154758993 <605281283@qq.com> Date: Wed, 17 Dec 2025 11:10:52 +0800 Subject: [PATCH 14/19] =?UTF-8?q?=E5=AE=A1=E6=89=B9=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/FlowTaskServiceImpl.java | 105 +++++++++++------- 1 file changed, 63 insertions(+), 42 deletions(-) diff --git a/srs-flowable/src/main/java/com/srs/flowable/service/impl/FlowTaskServiceImpl.java b/srs-flowable/src/main/java/com/srs/flowable/service/impl/FlowTaskServiceImpl.java index 745370e..dda1c40 100644 --- a/srs-flowable/src/main/java/com/srs/flowable/service/impl/FlowTaskServiceImpl.java +++ b/srs-flowable/src/main/java/com/srs/flowable/service/impl/FlowTaskServiceImpl.java @@ -1,43 +1,36 @@ package com.srs.flowable.service.impl; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; -import com.alibaba.fastjson2.TypeReference; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.srs.common.core.domain.AjaxResult; -import com.srs.common.core.domain.entity.SysDept; -import com.srs.common.core.domain.entity.SysRole; -import com.srs.common.core.domain.entity.SysUser; +import java.io.InputStream; +import java.lang.reflect.Field; +import java.nio.charset.StandardCharsets; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Collection; +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.ConcurrentHashMap; +import java.util.function.Function; +import java.util.function.Predicate; +import java.util.stream.Collectors; + +import javax.annotation.Resource; -import com.srs.common.exception.CustomException; -import com.srs.common.utils.SecurityUtils; -import com.srs.flowable.common.constant.ProcessConstants; -import com.srs.flowable.common.enums.FlowComment; -import com.srs.flowable.domain.dto.FlowCommentDto; -import com.srs.flowable.domain.dto.FlowNextDto; -import com.srs.flowable.domain.dto.FlowTaskDto; -import com.srs.flowable.domain.dto.FlowViewerDto; -import com.srs.flowable.domain.vo.FlowQueryVo; -import com.srs.flowable.domain.vo.FlowTaskVo; -import com.srs.flowable.factory.FlowServiceFactory; -import com.srs.flowable.flow.CustomProcessDiagramGenerator; -import com.srs.flowable.flow.FindNextNodeUtil; -import com.srs.flowable.flow.FlowableUtils; -import com.srs.flowable.service.IFlowTaskService; -import com.srs.flowable.service.ISysDeployFormService; -import com.srs.flowable.service.ISysFormService; -import com.srs.system.domain.SysForm; -import com.srs.system.mapper.SysDeptMapper; -import com.srs.system.service.ISysRoleService; -import com.srs.system.service.ISysUserService; -import com.sun.jna.platform.win32.OaIdl; -import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; +import org.flowable.bpmn.model.BpmnModel; +import org.flowable.bpmn.model.EndEvent; +import org.flowable.bpmn.model.FlowElement; +import org.flowable.bpmn.model.FlowNode; +import org.flowable.bpmn.model.MultiInstanceLoopCharacteristics; import org.flowable.bpmn.model.Process; -import org.flowable.bpmn.model.*; +import org.flowable.bpmn.model.SequenceFlow; +import org.flowable.bpmn.model.UserTask; import org.flowable.common.engine.api.FlowableException; import org.flowable.common.engine.api.FlowableObjectNotFoundException; import org.flowable.engine.ProcessEngineConfiguration; @@ -61,16 +54,37 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.annotation.Resource; -import java.io.InputStream; -import java.lang.reflect.Field; -import java.nio.charset.StandardCharsets; -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.concurrent.ConcurrentHashMap; -import java.util.function.Function; -import java.util.function.Predicate; -import java.util.stream.Collectors; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.alibaba.fastjson2.TypeReference; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.srs.common.core.domain.AjaxResult; +import com.srs.common.core.domain.entity.SysDept; +import com.srs.common.core.domain.entity.SysRole; +import com.srs.common.core.domain.entity.SysUser; +import com.srs.common.exception.CustomException; +import com.srs.common.utils.SecurityUtils; +import com.srs.flowable.common.constant.ProcessConstants; +import com.srs.flowable.common.enums.FlowComment; +import com.srs.flowable.domain.dto.FlowCommentDto; +import com.srs.flowable.domain.dto.FlowNextDto; +import com.srs.flowable.domain.dto.FlowTaskDto; +import com.srs.flowable.domain.dto.FlowViewerDto; +import com.srs.flowable.domain.vo.FlowQueryVo; +import com.srs.flowable.domain.vo.FlowTaskVo; +import com.srs.flowable.factory.FlowServiceFactory; +import com.srs.flowable.flow.CustomProcessDiagramGenerator; +import com.srs.flowable.flow.FindNextNodeUtil; +import com.srs.flowable.flow.FlowableUtils; +import com.srs.flowable.service.IFlowTaskService; +import com.srs.flowable.service.ISysDeployFormService; +import com.srs.flowable.service.ISysFormService; +import com.srs.system.domain.SysForm; +import com.srs.system.mapper.SysDeptMapper; +import com.srs.system.service.ISysRoleService; +import com.srs.system.service.ISysUserService; + +import lombok.extern.slf4j.Slf4j; /** * @author Tony @@ -101,6 +115,13 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask if (Objects.isNull(task)) { return AjaxResult.error("任务不存在"); } + try { + Map vars = taskVo.getVariables(); + if (vars != null && vars.containsKey("variables")) { + runtimeService.removeVariable(task.getExecutionId(), "variables"); + } + } catch (Exception ignore) { + } if (DelegationState.PENDING.equals(task.getDelegationState())) { taskService.addComment(taskVo.getTaskId(), taskVo.getInstanceId(), FlowComment.DELEGATE.getType(), taskVo.getComment()); taskService.resolveTask(taskVo.getTaskId(), taskVo.getVariables()); From ab366ef0da391a401f0f0d47aa98fe91eeff8e0f Mon Sep 17 00:00:00 2001 From: 15976874561 <2553956742@qq.com> Date: Wed, 17 Dec 2025 17:42:30 +0800 Subject: [PATCH 15/19] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- srs-admin/src/main/resources/application.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/srs-admin/src/main/resources/application.yml b/srs-admin/src/main/resources/application.yml index 0d4b3c2..e77d1ab 100644 --- a/srs-admin/src/main/resources/application.yml +++ b/srs-admin/src/main/resources/application.yml @@ -64,8 +64,8 @@ spring: # 国际化资源文件路径 basename: i18n/messages profiles: - active: druid #正式环境 -# active: dev #测试环境 + active: druid #正式环境 +# active: dev #测试环境 # 文件上传 servlet: multipart: @@ -82,13 +82,13 @@ spring: redis: # 地址 host: localhost #正式环境redis -# host: 47.112.118.149 #测试开发地址 +# host: 47.112.118.149 #测试开发地址 # 端口,默认为6379 port: 6379 # 数据库索引 database: 0 # 密码SSSS -# password: Houpuyfb #测试开发密码 +# password: Houpuyfb #测试开发密码 password: #正式环境密码 # 连接超时时间 timeout: 10s From 27efd6a39dc6846c1517ce19bb37c31dd24950f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=81=92=E6=88=90?= <962704835@qq.com> Date: Fri, 19 Dec 2025 15:31:45 +0800 Subject: [PATCH 16/19] =?UTF-8?q?=E5=85=A5=E4=BC=8D=E4=BF=9D=E7=95=99?= =?UTF-8?q?=E5=AD=A6=E7=B1=8D=E3=80=81=E5=A4=96=E5=AE=BF=E7=94=B3=E8=AF=B7?= =?UTF-8?q?-=E5=AE=A1=E6=89=B9=E4=BA=BA=E4=BF=AE=E6=94=B9=E6=88=90?= =?UTF-8?q?=E7=94=B5=E5=AD=90=E7=AD=BE=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DmsOutsideAccommodationApproval.java | 24 ++-- .../DmsOutsideAccommodationApplyMapper.xml | 5 +- .../DmsOutsideAccommodationApprovalMapper.xml | 8 +- .../domain/EnlistmentReserveApproval.java | 23 ++-- .../domain/OutsideAccommodationApproval.java | 21 ++-- .../ApprovalAssigneeListener.java | 11 +- .../OutsideAccommodationEndListener.java | 9 +- .../EnlistmentReserveApprovalMapper.xml | 88 +++++++++----- .../OutsideAccommodationApprovalMapper.xml | 108 +++++++++++------- .../domain/RtEnlistmentReserveApproval.java | 24 ++-- .../RtEnlistmentReserveApprovalMapper.xml | 7 +- .../routine/RtEnlistmentReserveMapper.xml | 5 +- 12 files changed, 223 insertions(+), 110 deletions(-) diff --git a/dms-dormitory/src/main/java/com/srs/dormitory/domain/DmsOutsideAccommodationApproval.java b/dms-dormitory/src/main/java/com/srs/dormitory/domain/DmsOutsideAccommodationApproval.java index e6c006a..b61e3f3 100644 --- a/dms-dormitory/src/main/java/com/srs/dormitory/domain/DmsOutsideAccommodationApproval.java +++ b/dms-dormitory/src/main/java/com/srs/dormitory/domain/DmsOutsideAccommodationApproval.java @@ -1,6 +1,7 @@ package com.srs.dormitory.domain; import java.util.Date; + import com.fasterxml.jackson.annotation.JsonFormat; import com.srs.common.annotation.Excel; import com.baomidou.mybatisplus.annotation.*; @@ -10,22 +11,21 @@ import lombok.*; import com.srs.common.core.domain.BaseEntity; - /** * 外宿申请审批记录对象 dms_outside_accommodation_approval * * @author srs - * @date 2025-12-05 + * @date 2025-12-19 */ @Data @EqualsAndHashCode(callSuper = true) @NoArgsConstructor @AllArgsConstructor @Builder -@ApiModel(value = "DmsOutsideAccommodationApproval对象" , description = "外宿申请审批记录表") +@ApiModel(value = "DmsOutsideAccommodationApproval对象", description = "外宿申请审批记录表") @TableName("dms_outside_accommodation_approval") -public class DmsOutsideAccommodationApproval extends BaseEntity{ -private static final long serialVersionUID=1L; +public class DmsOutsideAccommodationApproval extends BaseEntity { + private static final long serialVersionUID = 1L; /** * 主键ID @@ -39,7 +39,7 @@ private static final long serialVersionUID=1L; */ @ApiModelProperty("外宿申请ID(关联申请表)") @TableField("apply_id") - @Excel(name = "外宿申请ID" , readConverterExp = "关=联申请表") + @Excel(name = "外宿申请ID", readConverterExp = "关=联申请表") private Long applyId; /** @@ -95,7 +95,7 @@ private static final long serialVersionUID=1L; */ @ApiModelProperty("审批结果(1=同意,0=驳回)") @TableField("approval_result") - @Excel(name = "审批结果" , readConverterExp = "1==同意,0=驳回") + @Excel(name = "审批结果", readConverterExp = "1==同意,0=驳回") private Long approvalResult; /** @@ -104,7 +104,7 @@ private static final long serialVersionUID=1L; @ApiModelProperty("审批时间") @TableField("approval_time") @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "审批时间" , width = 30, dateFormat = "yyyy-MM-dd") + @Excel(name = "审批时间", width = 30, dateFormat = "yyyy-MM-dd") private Date approvalTime; /** @@ -131,5 +131,13 @@ private static final long serialVersionUID=1L; @Excel(name = "学生学号") private String studentNo; + /** + * 签名 + */ + @ApiModelProperty("签名") + @TableField("signature") + @Excel(name = "签名") + private String signature; + } diff --git a/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationApplyMapper.xml b/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationApplyMapper.xml index f4d0f33..b24e915 100644 --- a/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationApplyMapper.xml +++ b/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationApplyMapper.xml @@ -49,7 +49,7 @@ - + + @@ -90,7 +91,7 @@ - + diff --git a/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationApprovalMapper.xml b/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationApprovalMapper.xml index e3c6fa4..d1a6668 100644 --- a/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationApprovalMapper.xml +++ b/dms-dormitory/src/main/resources/mapper/dormitory/DmsOutsideAccommodationApprovalMapper.xml @@ -18,6 +18,7 @@ + @@ -33,7 +34,8 @@ approval_time, process_instance_id, student_name, - student_no + student_no, + signature from dms_outside_accommodation_approval @@ -59,6 +61,7 @@ '%') and student_no = #{studentNo} + and signature = #{signature} @@ -100,6 +103,7 @@ process_instance_id, student_name, student_no, + signature, #{applyId}, @@ -114,6 +118,7 @@ #{processInstanceId}, #{studentName}, #{studentNo}, + #{signature}, @@ -132,6 +137,7 @@ process_instance_id = #{processInstanceId}, student_name = #{studentName}, student_no = #{studentNo}, + signature = #{signature}, where id = #{id} diff --git a/srs-flowable/src/main/java/com/srs/flowable/domain/EnlistmentReserveApproval.java b/srs-flowable/src/main/java/com/srs/flowable/domain/EnlistmentReserveApproval.java index d33c691..baf6d91 100644 --- a/srs-flowable/src/main/java/com/srs/flowable/domain/EnlistmentReserveApproval.java +++ b/srs-flowable/src/main/java/com/srs/flowable/domain/EnlistmentReserveApproval.java @@ -1,6 +1,7 @@ package com.srs.flowable.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_enlistment_reserve_approval * @@ -22,10 +22,10 @@ import com.srs.common.core.domain.BaseEntity; @NoArgsConstructor @AllArgsConstructor @Builder -@ApiModel(value = "RtEnlistmentReserveApproval对象" , description = "保留学籍审批记录") +@ApiModel(value = "RtEnlistmentReserveApproval对象", description = "保留学籍审批记录") @TableName("rt_enlistment_reserve_approval") -public class EnlistmentReserveApproval extends BaseEntity{ - private static final long serialVersionUID=1L; +public class EnlistmentReserveApproval extends BaseEntity { + private static final long serialVersionUID = 1L; /** * 主键 @@ -63,7 +63,7 @@ public class EnlistmentReserveApproval extends BaseEntity{ */ @ApiModelProperty("审批节点(辅导员/学务等)") @TableField("node_name") - @Excel(name = "审批节点" , readConverterExp = "辅=导员/学务等") + @Excel(name = "审批节点", readConverterExp = "辅=导员/学务等") private String nodeName; /** @@ -71,7 +71,7 @@ public class EnlistmentReserveApproval extends BaseEntity{ */ @ApiModelProperty("审批人ID(关联sys_user)") @TableField("approver_id") - @Excel(name = "审批人ID" , readConverterExp = "关=联sys_user") + @Excel(name = "审批人ID", readConverterExp = "关=联sys_user") private Long approverId; /** @@ -95,7 +95,7 @@ public class EnlistmentReserveApproval extends BaseEntity{ */ @ApiModelProperty("审批结果(1-通过") @TableField("approval_result") - @Excel(name = "审批结果" , readConverterExp = "审批结果(1-通过") + @Excel(name = "审批结果", readConverterExp = "审批结果(1-通过") private Long approvalResult; /** @@ -104,7 +104,7 @@ public class EnlistmentReserveApproval extends BaseEntity{ @ApiModelProperty("审批时间") @TableField("approval_time") @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "审批时间" , width = 30, dateFormat = "yyyy-MM-dd") + @Excel(name = "审批时间", width = 30, dateFormat = "yyyy-MM-dd") private Date approvalTime; /** @@ -123,5 +123,12 @@ public class EnlistmentReserveApproval extends BaseEntity{ @Excel(name = "学号") private String studentNo; + /** + * 签名 + */ + @ApiModelProperty("签名") + @TableField("signature") + @Excel(name = "签名") + private String signature; } diff --git a/srs-flowable/src/main/java/com/srs/flowable/domain/OutsideAccommodationApproval.java b/srs-flowable/src/main/java/com/srs/flowable/domain/OutsideAccommodationApproval.java index dbadaab..aa267c1 100644 --- a/srs-flowable/src/main/java/com/srs/flowable/domain/OutsideAccommodationApproval.java +++ b/srs-flowable/src/main/java/com/srs/flowable/domain/OutsideAccommodationApproval.java @@ -14,7 +14,6 @@ import lombok.*; import java.util.Date; - /** * 外宿申请审批记录对象 dms_outside_accommodation_approval * @@ -26,10 +25,10 @@ import java.util.Date; @NoArgsConstructor @AllArgsConstructor @Builder -@ApiModel(value = "DmsOutsideAccommodationApproval对象" , description = "外宿申请审批记录表") +@ApiModel(value = "DmsOutsideAccommodationApproval对象", description = "外宿申请审批记录表") @TableName("dms_outside_accommodation_approval") -public class OutsideAccommodationApproval extends BaseEntity{ -private static final long serialVersionUID=1L; +public class OutsideAccommodationApproval extends BaseEntity { + private static final long serialVersionUID = 1L; /** * 主键ID @@ -43,7 +42,7 @@ private static final long serialVersionUID=1L; */ @ApiModelProperty("外宿申请ID(关联申请表)") @TableField("apply_id") - @Excel(name = "外宿申请ID" , readConverterExp = "关=联申请表") + @Excel(name = "外宿申请ID", readConverterExp = "关=联申请表") private Long applyId; /** @@ -99,7 +98,7 @@ private static final long serialVersionUID=1L; */ @ApiModelProperty("审批结果(1=同意,0=驳回)") @TableField("approval_result") - @Excel(name = "审批结果" , readConverterExp = "1==同意,0=驳回") + @Excel(name = "审批结果", readConverterExp = "1==同意,0=驳回") private Long approvalResult; /** @@ -108,7 +107,7 @@ private static final long serialVersionUID=1L; @ApiModelProperty("审批时间") @TableField("approval_time") @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "审批时间" , width = 30, dateFormat = "yyyy-MM-dd") + @Excel(name = "审批时间", width = 30, dateFormat = "yyyy-MM-dd") private Date approvalTime; /** @@ -136,4 +135,12 @@ private static final long serialVersionUID=1L; private String studentNo; + /** + * 签名 + */ + @ApiModelProperty("签名") + @TableField("signature") + @Excel(name = "签名") + private String signature; + } diff --git a/srs-flowable/src/main/java/com/srs/flowable/listener/enlistmentReserve/ApprovalAssigneeListener.java b/srs-flowable/src/main/java/com/srs/flowable/listener/enlistmentReserve/ApprovalAssigneeListener.java index 4fd0322..c2ddf88 100644 --- a/srs-flowable/src/main/java/com/srs/flowable/listener/enlistmentReserve/ApprovalAssigneeListener.java +++ b/srs-flowable/src/main/java/com/srs/flowable/listener/enlistmentReserve/ApprovalAssigneeListener.java @@ -61,6 +61,9 @@ public class ApprovalAssigneeListener implements ExecutionListener { // 获取审核意见 String approvalOpinion = (String) execution.getVariable("approvalOpinion"); + // 获取签名 + String signature = (String) execution.getVariable("signature"); + // 获取审核状态(兼容Integer/Long类型) Object approvalResultObj = execution.getVariable("approvalResult"); Long approvalResult = null; @@ -74,7 +77,7 @@ public class ApprovalAssigneeListener implements ExecutionListener { // 根据Id查询入伍申请记录 EnlistmentReserve enlistmentReserve = rtEnlistmentReserveMapper.selectRtEnlistmentReserveById(enlistmentId); // 添加审批记录 - saveApprovalRecord(enlistmentReserve.getId(), enlistmentReserve.getProcessInstanceId(),currentActivityId,currentNodeName, enlistmentReserve.getStudentName(), enlistmentReserve.getStudentNo(), approvalOpinion, approvalResult); + saveApprovalRecord(enlistmentReserve.getId(), enlistmentReserve.getProcessInstanceId(),currentActivityId,currentNodeName, enlistmentReserve.getStudentName(), enlistmentReserve.getStudentNo(), approvalOpinion, approvalResult, signature); Long status = 1L; if (currentNodeName.equals("辅导员审批")) { @@ -120,7 +123,7 @@ public class ApprovalAssigneeListener implements ExecutionListener { /** * 通用审批记录保存方法 */ - private void saveApprovalRecord(Long ApplyId,String processInstanceId, String taskId, String nodeName, String studentName, String studentNo, String approvalOpinion, Long approvalResult) { + private void saveApprovalRecord(Long ApplyId,String processInstanceId, String taskId, String nodeName, String studentName, String studentNo, String approvalOpinion, Long approvalResult, String signature) { EnlistmentReserveApproval enlistmentReserveApproval = new EnlistmentReserveApproval(); // 赋值 enlistmentReserveApproval.setApplyId(ApplyId); @@ -141,7 +144,9 @@ public class ApprovalAssigneeListener implements ExecutionListener { enlistmentReserveApproval.setApprovalTime(new Date()); enlistmentReserveApproval.setStudentName(studentName); enlistmentReserveApproval.setStudentNo(studentNo); - System.out.println(SecurityUtils.getLoginUser().getUser()); +// System.out.println(SecurityUtils.getLoginUser().getUser()); + // 设置签名 + enlistmentReserveApproval.setSignature(signature); EnlistmentReserveApprovalMapper rtEnlistmentReserveApprovalMapper = (EnlistmentReserveApprovalMapper) SpringUtils.getBean(EnlistmentReserveApprovalMapper.class); // 查询审批记录是否存在 EnlistmentReserveApproval enlistmentReserveApproval1 = rtEnlistmentReserveApprovalMapper.selectRtEnlistmentReserveApprovalByStuName(studentName, studentNo, SecurityUtils.getLoginUser().getUser().getUserId()); diff --git a/srs-flowable/src/main/java/com/srs/flowable/listener/outsideAccommodation/OutsideAccommodationEndListener.java b/srs-flowable/src/main/java/com/srs/flowable/listener/outsideAccommodation/OutsideAccommodationEndListener.java index 308d58e..2613247 100644 --- a/srs-flowable/src/main/java/com/srs/flowable/listener/outsideAccommodation/OutsideAccommodationEndListener.java +++ b/srs-flowable/src/main/java/com/srs/flowable/listener/outsideAccommodation/OutsideAccommodationEndListener.java @@ -48,6 +48,9 @@ public class OutsideAccommodationEndListener implements ExecutionListener { // 获取审核意见 String approvalOpinion = (String) execution.getVariable("approvalOpinion"); + // 获取签名 + String signature = (String) execution.getVariable("signature"); + // 获取审核状态(兼容Integer/Long类型) Object approvalResultObj = execution.getVariable("approvalResult"); Long approvalResult = null; @@ -62,7 +65,7 @@ public class OutsideAccommodationEndListener implements ExecutionListener { // 根据Id查询外宿申请记录 OutsideAccommodationApply outsideAccommodationApply = outsideAccommodationApplyMapper.selectDmsOutsideAccommodationApplyById(accommodationId); // 添加审批记录 - saveApprovalRecord(outsideAccommodationApply.getId(), outsideAccommodationApply.getProcessInstanceId(),outsideAccommodationApply.getApplyNo(),currentNodeName, outsideAccommodationApply.getStudentName(), outsideAccommodationApply.getStudentNo(), approvalOpinion, approvalResult); + saveApprovalRecord(outsideAccommodationApply.getId(), outsideAccommodationApply.getProcessInstanceId(),outsideAccommodationApply.getApplyNo(),currentNodeName, outsideAccommodationApply.getStudentName(), outsideAccommodationApply.getStudentNo(), approvalOpinion, approvalResult, signature); Long status = 1L; if (currentNodeName.equals("辅导员审批")) { status = 2L; @@ -105,7 +108,7 @@ public class OutsideAccommodationEndListener implements ExecutionListener { /** * 通用审批记录保存方法 */ - private void saveApprovalRecord(Long ApplyId,String processInstanceId, String applyNo, String nodeName, String studentName, String studentNo, String approvalOpinion, Long approvalResult) { + private void saveApprovalRecord(Long ApplyId,String processInstanceId, String applyNo, String nodeName, String studentName, String studentNo, String approvalOpinion, Long approvalResult, String signature) { OutsideAccommodationApproval outsideAccommodationApproval = new OutsideAccommodationApproval(); // 赋值 outsideAccommodationApproval.setApplyId(ApplyId); @@ -126,6 +129,8 @@ public class OutsideAccommodationEndListener implements ExecutionListener { outsideAccommodationApproval.setApprovalTime(new Date()); outsideAccommodationApproval.setStudentName(studentName); outsideAccommodationApproval.setStudentNo(studentNo); + // 设置签名 + outsideAccommodationApproval.setSignature(signature); OutsideAccommodationApprovalMapper outsideAccommodationApprovalMapper = (OutsideAccommodationApprovalMapper) SpringUtils.getBean(OutsideAccommodationApprovalMapper.class); // 查询审批记录是否存在 OutsideAccommodationApproval approval = outsideAccommodationApprovalMapper.selectOutsideAccommodationApprovalByStuName(studentName, studentNo, SecurityUtils.getLoginUser().getUser().getUserId()); diff --git a/srs-flowable/src/main/resources/mapper/EnlistmentReserveApprovalMapper.xml b/srs-flowable/src/main/resources/mapper/EnlistmentReserveApprovalMapper.xml index 734e30f..ebdf34d 100644 --- a/srs-flowable/src/main/resources/mapper/EnlistmentReserveApprovalMapper.xml +++ b/srs-flowable/src/main/resources/mapper/EnlistmentReserveApprovalMapper.xml @@ -5,42 +5,64 @@ - - - - - - - - - - - - + + + + + + + + + + + + + - select id, apply_id, process_instance_id, task_id, node_name, approver_id, approver_name, approval_opinion, approval_result, approval_time, student_name, student_no from rt_enlistment_reserve_approval + select id, + apply_id, + process_instance_id, + task_id, + node_name, + approver_id, + approver_name, + approval_opinion, + approval_result, + approval_time, + student_name, + student_no, + signature + from rt_enlistment_reserve_approval - - and apply_id = #{applyId} - and process_instance_id = #{processInstanceId} - and task_id = #{taskId} - and node_name like concat('%', #{nodeName}, '%') - and approver_id = #{approverId} - and approver_name like concat('%', #{approverName}, '%') - and approval_opinion = #{approvalOpinion} - and approval_result = #{approvalResult} - and approval_time = #{approvalTime} - and student_name like concat('%', #{studentName}, '%') - and student_no = #{studentNo} + and apply_id = #{applyId} + and process_instance_id = + #{processInstanceId} + + and task_id = #{taskId} + and node_name like concat('%', #{nodeName}, '%') + and approver_id = #{approverId} + and approver_name like concat('%', #{approverName}, + '%') + + and approval_opinion = #{approvalOpinion} + and approval_result = #{approvalResult} + and approval_time = #{approvalTime} + and student_name like concat('%', #{studentName}, + '%') + + and student_no = #{studentNo} - where id = #{id} @@ -61,7 +83,8 @@ - + insert into rt_enlistment_reserve_approval apply_id, @@ -75,6 +98,7 @@ approval_time, student_name, student_no, + signature, #{applyId}, @@ -88,6 +112,7 @@ #{approvalTime}, #{studentName}, #{studentNo}, + #{signature}, @@ -95,7 +120,9 @@ update rt_enlistment_reserve_approval apply_id = #{applyId}, - process_instance_id = #{processInstanceId}, + process_instance_id = + #{processInstanceId}, + task_id = #{taskId}, node_name = #{nodeName}, approver_id = #{approverId}, @@ -105,12 +132,15 @@ approval_time = #{approvalTime}, student_name = #{studentName}, student_no = #{studentNo}, + signature = #{signature}, where id = #{id} - delete from rt_enlistment_reserve_approval where id = #{id} + delete + from rt_enlistment_reserve_approval + where id = #{id} diff --git a/srs-flowable/src/main/resources/mapper/OutsideAccommodationApprovalMapper.xml b/srs-flowable/src/main/resources/mapper/OutsideAccommodationApprovalMapper.xml index a2be377..c28c1fc 100644 --- a/srs-flowable/src/main/resources/mapper/OutsideAccommodationApprovalMapper.xml +++ b/srs-flowable/src/main/resources/mapper/OutsideAccommodationApprovalMapper.xml @@ -1,48 +1,72 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + - - - - - - - - - - - - - + + + + + + + + + + + + + + - select id, apply_id, apply_no, approval_node, approver_id, approver_name, approver_role, approval_opinion, approval_result, approval_time, process_instance_id, student_name, student_no from dms_outside_accommodation_approval + select id, + apply_id, + apply_no, + approval_node, + approver_id, + approver_name, + approver_role, + approval_opinion, + approval_result, + approval_time, + process_instance_id, + student_name, + student_no, + signature + from dms_outside_accommodation_approval - - - and apply_id = #{applyId} - and apply_no = #{applyNo} - and approval_node = #{approvalNode} - and approver_id = #{approverId} - and approver_name like concat('%', #{approverName}, '%') - and approver_role = #{approverRole} - and approval_opinion = #{approvalOpinion} - and approval_result = #{approvalResult} - and approval_time = #{approvalTime} - and process_instance_id = #{processInstanceId} - and student_name like concat('%', #{studentName}, '%') - and student_no = #{studentNo} + + and apply_id = #{applyId} + and apply_no = #{applyNo} + and approval_node = #{approvalNode} + and approver_id = #{approverId} + and approver_name like concat('%', #{approverName}, + '%') + + and approver_role = #{approverRole} + and approval_opinion = #{approvalOpinion} + and approval_result = #{approvalResult} + and approval_time = #{approvalTime} + and process_instance_id = + #{processInstanceId} + + and student_name like concat('%', #{studentName}, + '%') + + and student_no = #{studentNo} + and signature = #{signature} - - where id = #{id} @@ -62,8 +86,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - + + insert into dms_outside_accommodation_approval apply_id, @@ -78,7 +103,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" process_instance_id, student_name, student_no, - + signature, + #{applyId}, #{applyNo}, @@ -92,7 +118,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{processInstanceId}, #{studentName}, #{studentNo}, - + #{signature}, + @@ -110,16 +137,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" process_instance_id = #{processInstanceId}, student_name = #{studentName}, student_no = #{studentNo}, + signature = #{signature}, where id = #{id} - delete from dms_outside_accommodation_approval where id = #{id} + delete + from dms_outside_accommodation_approval + where id = #{id} - delete from dms_outside_accommodation_approval where id in + delete from dms_outside_accommodation_approval where id in #{id} diff --git a/srs-routine/src/main/java/com/srs/routine/domain/RtEnlistmentReserveApproval.java b/srs-routine/src/main/java/com/srs/routine/domain/RtEnlistmentReserveApproval.java index b9964ff..728fb5b 100644 --- a/srs-routine/src/main/java/com/srs/routine/domain/RtEnlistmentReserveApproval.java +++ b/srs-routine/src/main/java/com/srs/routine/domain/RtEnlistmentReserveApproval.java @@ -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_enlistment_reserve_approval * @@ -22,10 +22,10 @@ import com.srs.common.core.domain.BaseEntity; @NoArgsConstructor @AllArgsConstructor @Builder -@ApiModel(value = "RtEnlistmentReserveApproval对象" , description = "保留学籍审批记录") +@ApiModel(value = "RtEnlistmentReserveApproval对象", description = "保留学籍审批记录") @TableName("rt_enlistment_reserve_approval") -public class RtEnlistmentReserveApproval extends BaseEntity{ - private static final long serialVersionUID=1L; +public class RtEnlistmentReserveApproval extends BaseEntity { + private static final long serialVersionUID = 1L; /** * 主键 @@ -63,7 +63,7 @@ public class RtEnlistmentReserveApproval extends BaseEntity{ */ @ApiModelProperty("审批节点(辅导员/学务等)") @TableField("node_name") - @Excel(name = "审批节点" , readConverterExp = "辅=导员/学务等") + @Excel(name = "审批节点", readConverterExp = "辅=导员/学务等") private String nodeName; /** @@ -71,7 +71,7 @@ public class RtEnlistmentReserveApproval extends BaseEntity{ */ @ApiModelProperty("审批人ID(关联sys_user)") @TableField("approver_id") - @Excel(name = "审批人ID" , readConverterExp = "关=联sys_user") + @Excel(name = "审批人ID", readConverterExp = "关=联sys_user") private Long approverId; /** @@ -95,7 +95,7 @@ public class RtEnlistmentReserveApproval extends BaseEntity{ */ @ApiModelProperty("审批结果(1-通过") @TableField("approval_result") - @Excel(name = "审批结果" , readConverterExp = "审批结果(1-通过") + @Excel(name = "审批结果", readConverterExp = "审批结果(1-通过") private Long approvalResult; /** @@ -104,7 +104,7 @@ public class RtEnlistmentReserveApproval extends BaseEntity{ @ApiModelProperty("审批时间") @TableField("approval_time") @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "审批时间" , width = 30, dateFormat = "yyyy-MM-dd") + @Excel(name = "审批时间", width = 30, dateFormat = "yyyy-MM-dd") private Date approvalTime; /** @@ -123,5 +123,13 @@ public class RtEnlistmentReserveApproval extends BaseEntity{ @Excel(name = "学号") private String studentNo; + /** + * 签名 + */ + @ApiModelProperty("签名") + @TableField("signature") + @Excel(name = "签名") + private String signature; + } diff --git a/srs-routine/src/main/resources/mapper/routine/RtEnlistmentReserveApprovalMapper.xml b/srs-routine/src/main/resources/mapper/routine/RtEnlistmentReserveApprovalMapper.xml index 216286e..01873dd 100644 --- a/srs-routine/src/main/resources/mapper/routine/RtEnlistmentReserveApprovalMapper.xml +++ b/srs-routine/src/main/resources/mapper/routine/RtEnlistmentReserveApprovalMapper.xml @@ -17,6 +17,7 @@ + @@ -31,7 +32,8 @@ approval_result, approval_time, student_name, - student_no + student_no, + signature from rt_enlistment_reserve_approval @@ -96,6 +98,7 @@ approval_time, student_name, student_no, + signature, #{applyId}, @@ -109,6 +112,7 @@ #{approvalTime}, #{studentName}, #{studentNo}, + #{signature}, @@ -128,6 +132,7 @@ approval_time = #{approvalTime}, student_name = #{studentName}, student_no = #{studentNo}, + signature = #{signature}, where id = #{id} diff --git a/srs-routine/src/main/resources/mapper/routine/RtEnlistmentReserveMapper.xml b/srs-routine/src/main/resources/mapper/routine/RtEnlistmentReserveMapper.xml index 5d0ed9b..cf7e2a1 100644 --- a/srs-routine/src/main/resources/mapper/routine/RtEnlistmentReserveMapper.xml +++ b/srs-routine/src/main/resources/mapper/routine/RtEnlistmentReserveMapper.xml @@ -28,7 +28,7 @@ - + + @@ -158,7 +159,7 @@ and reserve_end_date = #{reserveEndDate} and approval_no = #{approvalNo} and affix_id = #{affixId} - and deploy_id = #{deployId} + and deploy_id = #{deployId} From 095aff71837ddcb4607a362c664861ea4dca97d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=81=92=E6=88=90?= <962704835@qq.com> Date: Mon, 22 Dec 2025 17:39:08 +0800 Subject: [PATCH 17/19] =?UTF-8?q?=E5=85=A5=E4=BC=8D=E4=BF=9D=E7=95=99?= =?UTF-8?q?=E5=AD=A6=E7=B1=8D=E7=94=B3=E8=AF=B7=E3=80=81=E5=A4=96=E5=AE=BF?= =?UTF-8?q?=E7=94=B3=E8=AF=B7-=E4=B8=8A=E4=B8=80=E7=BA=A7=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E7=BB=93=E6=9D=9F=E4=B9=8B=E5=90=8E=EF=BC=8C=E7=BB=99?= =?UTF-8?q?=E4=B8=8B=E4=B8=80=E7=BA=A7=E5=8F=91=E9=80=81=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ApprovalAssigneeListener.java | 87 ++++++++++++++- .../StartApprovalAssigneeListener.java | 105 +++++++++++++++++- .../OutsideAccommodationEndListener.java | 86 +++++++++++++- .../OutsideAccommodationStartListener.java | 105 +++++++++++++++++- 4 files changed, 378 insertions(+), 5 deletions(-) diff --git a/srs-flowable/src/main/java/com/srs/flowable/listener/enlistmentReserve/ApprovalAssigneeListener.java b/srs-flowable/src/main/java/com/srs/flowable/listener/enlistmentReserve/ApprovalAssigneeListener.java index c2ddf88..a32f56e 100644 --- a/srs-flowable/src/main/java/com/srs/flowable/listener/enlistmentReserve/ApprovalAssigneeListener.java +++ b/srs-flowable/src/main/java/com/srs/flowable/listener/enlistmentReserve/ApprovalAssigneeListener.java @@ -5,12 +5,15 @@ import com.srs.common.core.domain.entity.SysUser; import com.srs.common.doman.vo.TeacherVo; import com.srs.common.utils.SecurityUtils; +import com.srs.common.utils.WeChatUtil; import com.srs.common.utils.spring.SpringUtils; import com.srs.flowable.domain.EnlistmentReserve; import com.srs.flowable.domain.EnlistmentReserveApproval; import com.srs.flowable.mapper.EnlistmentReserveApprovalMapper; import com.srs.flowable.mapper.EnlistmentReserveMapper; +import com.srs.flowable.mapper.RelieveMapper; import com.srs.system.service.ISysUserService; +import lombok.extern.slf4j.Slf4j; import org.flowable.bpmn.model.BpmnModel; import org.flowable.bpmn.model.FlowNode; import org.flowable.engine.HistoryService; @@ -28,9 +31,10 @@ import java.util.List; /** * 审批流程负责人自动流转监听器 - * 用于节点审批通过时,添加审批记录 + * 用于节点审批通过时,添加审批记录 + 给学生发送企业微信通知 */ @Component("approvalAssigneeListener") // Spring Bean名称,与BPMN表达式对应 +@Slf4j public class ApprovalAssigneeListener implements ExecutionListener { @Autowired @@ -103,8 +107,89 @@ public class ApprovalAssigneeListener implements ExecutionListener { // 改变申请表中的审核状态(审核通过) enlistmentReserve.setApplyStatus(status); rtEnlistmentReserveMapper.updateRtEnlistmentReserve(enlistmentReserve); + // ========== 给学生发送入伍保留学籍审批通知 ========== + sendStudentWeChatNotification(execution, enlistmentReserve, currentNodeName, approvalResult, approvalOpinion); } + /** + * 给学生发送入伍保留学籍审批结果的企业微信通知 + */ + private void sendStudentWeChatNotification(DelegateExecution execution, EnlistmentReserve enlistmentReserve, + String currentNodeName, Long approvalResult, String approvalOpinion) { + try { + // 1. 获取需要的Mapper和工具类 + RelieveMapper relieveMapper = (RelieveMapper) SpringUtils.getBean("relieveMapper"); + WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class); + + // 2. 获取学生基础信息 + String studentNo = enlistmentReserve.getStudentNo(); + String studentName = enlistmentReserve.getStudentName(); + + // 3. 获取学生userId(优先从流程变量取) + Long stuUserId = null; + if (execution.hasVariable("stuUserId")) { + stuUserId = Long.valueOf(execution.getVariable("stuUserId").toString()); + } else { + // 兜底:通过申请表获取学生id + stuUserId = enlistmentReserve.getStudentId(); + } + + if (stuUserId == null) { + log.warn("⚠ 未找到学生(学号:{},姓名:{})对应的用户ID,无法发送通知", studentNo, studentName); + return; + } + + // 4. 查询学生的企业微信账号 + String stuUserName = relieveMapper.getUserNameByUserId(stuUserId); + + if (stuUserName != null && !stuUserName.isEmpty()) { + // 5. 拼接审批结果描述 + String approveResultDesc = getApprovalResultDesc(approvalResult, currentNodeName); + + // 6. 构造通知内容 + String content = String.format("您的入伍保留学籍申请有新的审批进展:%s(%s),%s,点此查看详情", + currentNodeName, + approveResultDesc, + (approvalOpinion != null && !approvalOpinion.isEmpty()) ? "审批意见:" + approvalOpinion : ""); + + // 7. 发送企业微信消息 + weChatUtil.sendTextMessage(stuUserName, content); + log.info("✅ 已成功向学生(姓名:{},学号:{},userName:{})发送入伍保留学籍审批通知。审批节点:{},结果:{}", + studentName, studentNo, stuUserName, currentNodeName, approveResultDesc); + + } else { + // 发送日志 + log.warn("⚠ 找到了学生(学号:{},姓名:{},userId:{}),但其对应的企业微信账号为空,无法发送通知。", + studentNo, studentName, stuUserId); + } + } catch (Exception e) { + // 异常处理:记录日志+不影响主流程 + String studentNo = enlistmentReserve.getStudentNo(); + log.error("❌ 向学生(学号:{})发送入伍保留学籍审批通知时出现异常,但流程将继续。错误详情:", studentNo, e); + } + } + + /** + * 转换审批结果为可读描述(适配入伍保留学籍审批状态) + */ + private String getApprovalResultDesc(Long approvalResult, String currentNodeName) { + if (approvalResult == null) { + return "审批已处理"; + } + // 匹配项目中实际的审批状态值(0=驳回/1=通过/2=审批中) + switch (approvalResult.intValue()) { + case 0: + return currentNodeName + "驳回"; + case 1: + return currentNodeName + "通过"; + case 2: + return "审批中"; + default: + return "审批已完成"; + } + } + + /** * 根据节点ID和流程定义ID,查询节点名称(兼容所有版本的核心方法) */ diff --git a/srs-flowable/src/main/java/com/srs/flowable/listener/enlistmentReserve/StartApprovalAssigneeListener.java b/srs-flowable/src/main/java/com/srs/flowable/listener/enlistmentReserve/StartApprovalAssigneeListener.java index ae55c20..9ed55d4 100644 --- a/srs-flowable/src/main/java/com/srs/flowable/listener/enlistmentReserve/StartApprovalAssigneeListener.java +++ b/srs-flowable/src/main/java/com/srs/flowable/listener/enlistmentReserve/StartApprovalAssigneeListener.java @@ -4,13 +4,18 @@ import com.srs.common.core.domain.entity.SysUser; import com.srs.common.doman.vo.TeacherVo; +import com.srs.common.utils.DateUtils; import com.srs.common.utils.SecurityUtils; +import com.srs.common.utils.WeChatUtil; import com.srs.common.utils.spring.SpringUtils; import com.srs.flowable.domain.EnlistmentReserve; import com.srs.flowable.domain.EnlistmentReserveApproval; +import com.srs.flowable.domain.NotificationManage; import com.srs.flowable.mapper.EnlistmentReserveApprovalMapper; import com.srs.flowable.mapper.EnlistmentReserveMapper; +import com.srs.flowable.mapper.LeaveMapper; import com.srs.system.service.ISysUserService; +import lombok.extern.slf4j.Slf4j; import org.flowable.bpmn.model.BpmnModel; import org.flowable.bpmn.model.FlowNode; import org.flowable.engine.HistoryService; @@ -31,6 +36,7 @@ import java.util.List; * 用于节点审批之前时,更新下一个节点的负责人变量(approval) */ @Component("startApprovalAssigneeListener") // Spring Bean名称,与BPMN表达式对应 +@Slf4j public class StartApprovalAssigneeListener implements ExecutionListener { @Autowired @@ -46,7 +52,7 @@ public class StartApprovalAssigneeListener implements ExecutionListener { String currentActivityId = execution.getCurrentActivityId(); // 当前节点ID(兼容所有版本) String processDefinitionId = execution.getProcessDefinitionId(); // 流程定义ID - // 2. 根据节点ID查询节点名称(核心修正:通过流程定义获取名称) + // 2. 根据节点ID查询节点名称(通过流程定义获取名称) String currentNodeName = getNodeNameByActivityId(processDefinitionId, currentActivityId); if (currentNodeName == null) { throw new RuntimeException("未找到节点ID=" + currentActivityId + "的名称"); @@ -61,6 +67,8 @@ public class StartApprovalAssigneeListener implements ExecutionListener { if (nextAssigneeId != null) { execution.setVariable("approval", nextAssigneeId); execution.setVariable("currentNode", currentNodeName); + // ========== 发送通知逻辑 ========== + sendApprovalNotification(execution, currentNodeName, nextAssigneeId, enlistmentId); } } @@ -174,4 +182,99 @@ public class StartApprovalAssigneeListener implements ExecutionListener { throw new RuntimeException("未配置节点[" + currentNodeName + "]的当前负责人规则"); } } + + /** + * 发送审批通知(系统通知+企业微信通知) + */ + private void sendApprovalNotification(DelegateExecution execution, String currentNodeName, + Long nextAssigneeId, Long enlistmentId) { + try { + // 获取需要的Mapper和工具类 + EnlistmentReserveMapper enlistmentReserveMapper = (EnlistmentReserveMapper) SpringUtils.getBean(EnlistmentReserveMapper.class); + LeaveMapper leaveMapper = (LeaveMapper) SpringUtils.getBean("leaveMapper"); + WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class); + + // 1. 查询入伍保留学籍申请详情 + EnlistmentReserve enlistmentReserve = enlistmentReserveMapper.selectRtEnlistmentReserveById(enlistmentId); + if (enlistmentReserve == null) { + log.warn("未找到入伍保留学籍申请记录,ID:{}", enlistmentId); + return; + } + + // 2. 查询下一个审批人的信息(获取用户名/工号) + SysUser nextApprover = sysUserService.selectUserById(nextAssigneeId); + if (nextApprover == null) { + log.warn("未找到审批人信息,用户ID:{}", nextAssigneeId); + return; + } + String approverUserName = nextApprover.getUserName(); // 审批人工号/用户名 + String approverName = nextApprover.getNickName(); // 审批人姓名 + + log.info("开始发送【入伍保留学籍审批】通知,审批节点:{},审批人:{}({})", + currentNodeName, approverName, approverUserName); + + // 3. 处理系统通知(先删后加,避免重复通知) + NotificationManage notificationManage = new NotificationManage(); + notificationManage.setContent(String.format("您有一条【入伍保留学籍审批】待处理(节点:%s)", currentNodeName)); + notificationManage.setReceiver(nextAssigneeId); // 接收人:下一个审批人 + + // 3.1 查询是否已有相同通知,有则删除 + NotificationManage existNotify = leaveMapper.selectCphMsgListForFlowable(notificationManage); + if (existNotify != null) { + int delRes = leaveMapper.deleteCphMsgById(existNotify.getId()); + log.info("删除重复的系统通知,通知ID:{},删除结果:{}", existNotify.getId(), delRes); + } + + // 3.2 添加新的系统通知 + notificationManage.setSender(SecurityUtils.getUserId()); // 发送人:当前操作人 + notificationManage.setCreateTime(DateUtils.getNowDate()); // 创建时间 + int addRes = leaveMapper.insertCphMsg(notificationManage); + log.info("新增系统通知成功,接收人ID:{},添加结果:{}", nextAssigneeId, addRes); + + // 4. 企业微信推送消息 + if (approverUserName != null && !approverUserName.isEmpty()) { + // 构造带超链接的消息内容 + String weChatContent = String.format( + "您有一条【入伍保留学籍审批】待处理(节点:%s),请点击前往处理", + currentNodeName + ); + + // 发送企业微信文本消息 + weChatUtil.sendTextMessage(approverUserName, weChatContent); + log.info("企业微信通知发送成功,接收人工号:{},节点:{}", approverUserName, currentNodeName); + } else { + log.warn("审批人工号为空,无法发送企业微信通知,用户ID:{}", nextAssigneeId); + } + + // ========== 删除当前审批人的待处理通知 ========== + // 4.1 获取当前审批人ID(当前操作人=已完成审批的人) + Long currentApproverId = SecurityUtils.getUserId(); + if (currentApproverId == null) { + log.warn("当前审批人ID为空,无法删除其待处理通知"); + return; + } + + // 4.2 构造当前审批人的待处理通知查询条件 + NotificationManage currentNotifyQuery = new NotificationManage(); + // 内容匹配:当前节点的待处理通知(关键词+节点名称) + currentNotifyQuery.setContent(String.format("您有一条【入伍保留学籍审批】待处理(节点:%s)", currentNodeName)); + currentNotifyQuery.setReceiver(currentApproverId); // 接收人=当前审批人 + + // 4.3 查询当前审批人的该节点待处理通知 + NotificationManage currentExistNotify = leaveMapper.selectCphMsgListForFlowable(currentNotifyQuery); + if (currentExistNotify != null) { + // 4.4 删除该通知(清理已处理的待办) + int currentDelRes = leaveMapper.deleteCphMsgById(currentExistNotify.getId()); + log.info("删除当前审批人({})的【{}】待处理通知,通知ID:{},删除结果:{}", + currentApproverId, currentNodeName, currentExistNotify.getId(), currentDelRes); + } else { + log.info("当前审批人({})无【{}】节点的待处理通知,无需删除", currentApproverId, currentNodeName); + } + + } catch (Exception e) { + // 捕获所有异常,仅记录日志,不影响主流程 + log.error("发送入伍保留学籍审批通知失败,节点:{},审批人ID:{},错误信息:{}", + currentNodeName, nextAssigneeId, e.getMessage(), e); + } + } } \ No newline at end of file diff --git a/srs-flowable/src/main/java/com/srs/flowable/listener/outsideAccommodation/OutsideAccommodationEndListener.java b/srs-flowable/src/main/java/com/srs/flowable/listener/outsideAccommodation/OutsideAccommodationEndListener.java index 2613247..7f7dbe3 100644 --- a/srs-flowable/src/main/java/com/srs/flowable/listener/outsideAccommodation/OutsideAccommodationEndListener.java +++ b/srs-flowable/src/main/java/com/srs/flowable/listener/outsideAccommodation/OutsideAccommodationEndListener.java @@ -2,12 +2,15 @@ package com.srs.flowable.listener.outsideAccommodation; import com.srs.common.utils.SecurityUtils; +import com.srs.common.utils.WeChatUtil; import com.srs.common.utils.spring.SpringUtils; import com.srs.flowable.domain.DormitoryStudent; import com.srs.flowable.domain.OutsideAccommodationApply; import com.srs.flowable.domain.OutsideAccommodationApproval; import com.srs.flowable.mapper.OutsideAccommodationApplyMapper; import com.srs.flowable.mapper.OutsideAccommodationApprovalMapper; +import com.srs.flowable.mapper.RelieveMapper; +import lombok.extern.slf4j.Slf4j; import org.flowable.bpmn.model.BpmnModel; import org.flowable.bpmn.model.FlowNode; import org.flowable.engine.RepositoryService; @@ -21,9 +24,10 @@ import java.util.Date; /** * 审批流程负责人自动流转监听器 - * 用于节点审批通过时,添加审批记录 + * 用于节点审批通过时,添加审批记录 + 给学生发送企业微信通知 */ @Component("OutsideAccommodationEndListener") // Spring Bean名称,与BPMN表达式对应 +@Slf4j public class OutsideAccommodationEndListener implements ExecutionListener { // 用于查询流程定义中的节点信息 @@ -36,7 +40,7 @@ public class OutsideAccommodationEndListener implements ExecutionListener { String currentActivityId = execution.getCurrentActivityId(); // 当前节点ID(兼容所有版本) String processDefinitionId = execution.getProcessDefinitionId(); // 流程定义ID - // 2. 根据节点ID查询节点名称(核心修正:通过流程定义获取名称) + // 2. 根据节点ID查询节点名称(通过流程定义获取名称) String currentNodeName = getNodeNameByActivityId(processDefinitionId, currentActivityId); if (currentNodeName == null) { throw new RuntimeException("未找到节点ID=" + currentActivityId + "的名称"); @@ -88,6 +92,84 @@ public class OutsideAccommodationEndListener implements ExecutionListener { } outsideAccommodationApply.setStatus(status); outsideAccommodationApplyMapper.updateDmsOutsideAccommodationApply(outsideAccommodationApply); + // ========== 给学生发送企业微信通知 ========== + sendStudentWeChatNotification(execution, outsideAccommodationApply, currentNodeName, approvalResult, approvalOpinion); + } + + /** + * 给学生发送外宿申请审批结果的企业微信通知 + */ + private void sendStudentWeChatNotification(DelegateExecution execution, OutsideAccommodationApply outsideAccommodationApply, + String currentNodeName, Long approvalResult, String approvalOpinion) { + try { + // 1. 获取需要的Mapper和工具类 + RelieveMapper relieveMapper = (RelieveMapper) SpringUtils.getBean("relieveMapper"); + WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class); + + // 2. 获取学生学号和姓名(从外宿申请对象中获取) + String studentNo = outsideAccommodationApply.getStudentNo(); + String studentName = outsideAccommodationApply.getStudentName(); + + // 3. 先尝试从流程变量获取学生userId + Long stuUserId = null; + if (execution.hasVariable("stuUserId")) { + stuUserId = Long.valueOf(execution.getVariable("stuUserId").toString()); + } else { + // 补充逻辑:如果流程变量中没有stuUserId,通过申请表获取 + stuUserId = outsideAccommodationApply.getStudentId(); + } + + if (stuUserId == null) { + log.warn("⚠ 未找到学生(学号:{},姓名:{})对应的用户ID,无法发送通知", studentNo, studentName); + return; + } + + // 4. 使用userId查询对应的企业微信账号 + String stuUserName = relieveMapper.getUserNameByUserId(stuUserId); + + if (stuUserName != null && !stuUserName.isEmpty()) { + // 5. 拼接审批结果提示信息(适配外宿申请场景) + String approveResultDesc = getApprovalResultDesc(approvalResult, currentNodeName); + + // 6. 拼接最终通知内容 + String content = String.format("您的外宿申请有新的审批进展:%s(%s),%s,点此查看详情", + currentNodeName, + approveResultDesc, + (approvalOpinion != null && !approvalOpinion.isEmpty()) ? "审批意见:" + approvalOpinion : ""); + + // 7. 发送企业微信消息 + weChatUtil.sendTextMessage(stuUserName, content); + log.info("✅ 已成功向学生(姓名:{},学号:{},userName:{})发送外宿申请审批通知。审批节点:{},结果:{}", + studentName, studentNo, stuUserName, currentNodeName, approveResultDesc); + + } else { + log.warn("⚠ 找到了学生(学号:{},姓名:{},userId:{}),但其对应的企业微信账号为空,无法发送通知。", + studentNo, studentName, stuUserId); + } + } catch (Exception e) { + // 捕获所有异常,仅记录日志,不影响主流程 + String studentNo = outsideAccommodationApply.getStudentNo(); + log.error("❌ 向学生(学号:{})发送外宿申请审批通知时出现异常,但流程将继续。错误详情:", studentNo, e); + } + } + + /** + * 转换审批结果为可读描述(适配外宿申请的审批状态) + */ + private String getApprovalResultDesc(Long approvalResult, String currentNodeName) { + if (approvalResult == null) { + return "审批已处理"; + } + switch (approvalResult.intValue()) { + case 0: + return currentNodeName + "驳回"; + case 1: + return currentNodeName + "通过"; + case 2: + return "审批中"; + default: + return "审批已完成"; + } } /** diff --git a/srs-flowable/src/main/java/com/srs/flowable/listener/outsideAccommodation/OutsideAccommodationStartListener.java b/srs-flowable/src/main/java/com/srs/flowable/listener/outsideAccommodation/OutsideAccommodationStartListener.java index 557c172..2aebd5b 100644 --- a/srs-flowable/src/main/java/com/srs/flowable/listener/outsideAccommodation/OutsideAccommodationStartListener.java +++ b/srs-flowable/src/main/java/com/srs/flowable/listener/outsideAccommodation/OutsideAccommodationStartListener.java @@ -2,13 +2,19 @@ package com.srs.flowable.listener.outsideAccommodation; import com.srs.common.core.domain.entity.SysUser; import com.srs.common.doman.vo.TeacherVo; +import com.srs.common.utils.DateUtils; +import com.srs.common.utils.SecurityUtils; +import com.srs.common.utils.WeChatUtil; import com.srs.common.utils.spring.SpringUtils; import com.srs.dormitory.domain.DmsOutsideAccommodationApply; import com.srs.flowable.domain.EnlistmentReserve; +import com.srs.flowable.domain.NotificationManage; import com.srs.flowable.domain.OutsideAccommodationApply; import com.srs.flowable.mapper.EnlistmentReserveMapper; +import com.srs.flowable.mapper.LeaveMapper; import com.srs.flowable.mapper.OutsideAccommodationApplyMapper; import com.srs.system.service.ISysUserService; +import lombok.extern.slf4j.Slf4j; import org.flowable.bpmn.model.BpmnModel; import org.flowable.bpmn.model.FlowNode; import org.flowable.engine.RepositoryService; @@ -25,6 +31,7 @@ import java.util.List; * 用于节点审批之前时,更新下一个节点的负责人变量(approval) */ @Component("OutsideAccommodationStartListener") // Spring Bean名称,与BPMN表达式对应 +@Slf4j public class OutsideAccommodationStartListener implements ExecutionListener { @Autowired @@ -40,7 +47,7 @@ public class OutsideAccommodationStartListener implements ExecutionListener { String currentActivityId = execution.getCurrentActivityId(); // 当前节点ID(兼容所有版本) String processDefinitionId = execution.getProcessDefinitionId(); // 流程定义ID - // 2. 根据节点ID查询节点名称(核心修正:通过流程定义获取名称) + // 2. 根据节点ID查询节点名称(通过流程定义获取名称) String currentNodeName = getNodeNameByActivityId(processDefinitionId, currentActivityId); if (currentNodeName == null) { throw new RuntimeException("未找到节点ID=" + currentActivityId + "的名称"); @@ -55,6 +62,8 @@ public class OutsideAccommodationStartListener implements ExecutionListener { if (nextAssigneeId != null) { execution.setVariable("approval", nextAssigneeId); execution.setVariable("currentNode", currentNodeName); + // ========== 外宿申请审批通知逻辑 ========== + sendOutsideAccommodationNotification(execution, currentNodeName, nextAssigneeId, accommodationId); } } @@ -168,4 +177,98 @@ public class OutsideAccommodationStartListener implements ExecutionListener { throw new RuntimeException("未配置节点[" + currentNodeName + "]的当前负责人规则"); } } + /** + * 发送外宿申请审批通知(系统通知+企业微信通知) + */ + private void sendOutsideAccommodationNotification(DelegateExecution execution, String currentNodeName, + Long nextAssigneeId, Long accommodationId) { + try { + // 获取需要的Mapper和工具类 + OutsideAccommodationApplyMapper outsideAccommodationApplyMapper = SpringUtils.getBean(OutsideAccommodationApplyMapper.class); + LeaveMapper leaveMapper = (LeaveMapper) SpringUtils.getBean("leaveMapper"); + WeChatUtil weChatUtil = SpringUtils.getBean(WeChatUtil.class); + + // 1. 查询外宿申请详情 + com.srs.flowable.domain.OutsideAccommodationApply outsideAccommodationApply = outsideAccommodationApplyMapper.selectDmsOutsideAccommodationApplyById(accommodationId); + if (outsideAccommodationApply == null) { + log.warn("未找到外宿申请记录,ID:{}", accommodationId); + return; + } + + // 2. 查询下一个审批人的信息(获取用户名/工号) + SysUser nextApprover = sysUserService.selectUserById(nextAssigneeId); + if (nextApprover == null) { + log.warn("未找到审批人信息,用户ID:{}", nextAssigneeId); + return; + } + String approverUserName = nextApprover.getUserName(); // 审批人工号/用户名 + String approverName = nextApprover.getNickName(); // 审批人姓名 + + log.info("开始发送【外宿申请审批】通知,审批节点:{},审批人:{}({})", + currentNodeName, approverName, approverUserName); + + // 3. 处理系统通知(先删后加,避免重复通知) + NotificationManage notificationManage = new NotificationManage(); + notificationManage.setContent(String.format("您有一条【外宿申请审批】待处理(节点:%s)", currentNodeName)); + notificationManage.setReceiver(nextAssigneeId); // 接收人:下一个审批人 + + // 3.1 查询是否已有相同通知,有则删除 + NotificationManage existNotify = leaveMapper.selectCphMsgListForFlowable(notificationManage); + if (existNotify != null) { + int delRes = leaveMapper.deleteCphMsgById(existNotify.getId()); + log.info("删除重复的系统通知,通知ID:{},删除结果:{}", existNotify.getId(), delRes); + } + + // 3.2 添加新的系统通知 + notificationManage.setSender(SecurityUtils.getUserId() != null ? SecurityUtils.getUserId() : 0L); // 发送人:当前操作人(兜底处理) + notificationManage.setCreateTime(DateUtils.getNowDate()); // 创建时间 + int addRes = leaveMapper.insertCphMsg(notificationManage); + log.info("新增系统通知成功,接收人ID:{},添加结果:{}", nextAssigneeId, addRes); + + // 4. 企业微信推送消息 + if (approverUserName != null && !approverUserName.isEmpty()) { + // 构造带超链接的消息内容 + String weChatContent = String.format( + "您有一条【外宿申请审批】待处理(节点:%s),请点击前往处理", + currentNodeName + ); + + // 发送企业微信文本消息 + weChatUtil.sendTextMessage(approverUserName, weChatContent); + log.info("企业微信通知发送成功,接收人工号:{},节点:{}", approverUserName, currentNodeName); + } else { + log.warn("审批人工号为空,无法发送企业微信通知,用户ID:{}", nextAssigneeId); + } + + // ========== 删除当前审批人的待处理通知 ========== + // 4.1 获取当前审批人ID(当前操作人=已完成审批的人) + Long currentApproverId = SecurityUtils.getUserId(); + if (currentApproverId == null) { + log.warn("当前审批人ID为空,无法删除其待处理通知"); + return; + } + + // 4.2 构造当前审批人的待处理通知查询条件 + NotificationManage currentNotifyQuery = new NotificationManage(); + // 内容匹配:当前节点的待处理通知(关键词+节点名称) + currentNotifyQuery.setContent(String.format("您有一条【外宿申请审批】待处理(节点:%s)", currentNodeName)); + currentNotifyQuery.setReceiver(currentApproverId); // 接收人=当前审批人 + + // 4.3 查询当前审批人的该节点待处理通知 + NotificationManage currentExistNotify = leaveMapper.selectCphMsgListForFlowable(currentNotifyQuery); + if (currentExistNotify != null) { + // 4.4 删除该通知(清理已处理的待办) + int currentDelRes = leaveMapper.deleteCphMsgById(currentExistNotify.getId()); + log.info("删除当前审批人({})的【{}】待处理通知,通知ID:{},删除结果:{}", + currentApproverId, currentNodeName, currentExistNotify.getId(), currentDelRes); + } else { + log.info("当前审批人({})无【{}】节点的待处理通知,无需删除", currentApproverId, currentNodeName); + } + + } catch (Exception e) { + // 捕获所有异常,仅记录日志,不影响主流程 + log.error("发送外宿申请审批通知失败,节点:{},审批人ID:{},错误信息:{}", + currentNodeName, nextAssigneeId, e.getMessage(), e); + } + } } \ No newline at end of file From 9564e77ac848b3085f1a8e57453566d188f48e91 Mon Sep 17 00:00:00 2001 From: 15976874561 <2553956742@qq.com> Date: Tue, 23 Dec 2025 11:44:42 +0800 Subject: [PATCH 18/19] =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=95=99=E8=81=8C=E5=B7=A5=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CphSqlServerDataController.java | 2 +- .../comprehensive/SyncDataController.java | 26 +++++++++++++++++++ .../comprehensive/mapper/SyncDataMapper.java | 8 ++++++ .../service/CphSqlServerDataService.java | 2 +- .../service/SyncDataService.java | 8 ++++++ .../service/impl/SyncDataServiceImpl.java | 19 ++++++++++++++ .../mapper/comprehensive/SyncDataMapper.xml | 13 ++++++++++ 7 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 srs-admin/src/main/java/com/srs/web/controller/comprehensive/SyncDataController.java create mode 100644 srs-comprehensive/src/main/java/com/srs/comprehensive/mapper/SyncDataMapper.java create mode 100644 srs-comprehensive/src/main/java/com/srs/comprehensive/service/SyncDataService.java create mode 100644 srs-comprehensive/src/main/java/com/srs/comprehensive/service/impl/SyncDataServiceImpl.java create mode 100644 srs-comprehensive/src/main/resources/mapper/comprehensive/SyncDataMapper.xml diff --git a/srs-admin/src/main/java/com/srs/web/controller/comprehensive/CphSqlServerDataController.java b/srs-admin/src/main/java/com/srs/web/controller/comprehensive/CphSqlServerDataController.java index 829e0dd..6fa8f57 100644 --- a/srs-admin/src/main/java/com/srs/web/controller/comprehensive/CphSqlServerDataController.java +++ b/srs-admin/src/main/java/com/srs/web/controller/comprehensive/CphSqlServerDataController.java @@ -144,7 +144,7 @@ public class CphSqlServerDataController extends BaseController { List list=sqlServerDataService.getBZRClassInfoList(); return success(list); } - //辅导员 + //教职工 @RequestMapping("/getEmployEEInfoList") public AjaxResult getEmployEEInfoList(){ //startPage(); diff --git a/srs-admin/src/main/java/com/srs/web/controller/comprehensive/SyncDataController.java b/srs-admin/src/main/java/com/srs/web/controller/comprehensive/SyncDataController.java new file mode 100644 index 0000000..4752522 --- /dev/null +++ b/srs-admin/src/main/java/com/srs/web/controller/comprehensive/SyncDataController.java @@ -0,0 +1,26 @@ +package com.srs.web.controller.comprehensive; + +import com.srs.common.core.controller.BaseController; +import com.srs.common.core.domain.AjaxResult; +import com.srs.common.core.page.TableDataInfo; +import com.srs.comprehensive.service.SyncDataService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/syncdata") +public class SyncDataController extends BaseController { + @Autowired + private SyncDataService syncDataService; + @GetMapping("/getEmployEEInfoList") + public TableDataInfo getEmployEEInfoList(){ + startPage(); + List list=syncDataService.getEmployEEInfoList(); + return getDataTable(list); + } +} diff --git a/srs-comprehensive/src/main/java/com/srs/comprehensive/mapper/SyncDataMapper.java b/srs-comprehensive/src/main/java/com/srs/comprehensive/mapper/SyncDataMapper.java new file mode 100644 index 0000000..72ad3d0 --- /dev/null +++ b/srs-comprehensive/src/main/java/com/srs/comprehensive/mapper/SyncDataMapper.java @@ -0,0 +1,8 @@ +package com.srs.comprehensive.mapper; + +import java.util.List; +import java.util.Map; + +public interface SyncDataMapper { + public List getEmployEEInfoList();//教职工 +} diff --git a/srs-comprehensive/src/main/java/com/srs/comprehensive/service/CphSqlServerDataService.java b/srs-comprehensive/src/main/java/com/srs/comprehensive/service/CphSqlServerDataService.java index a4dcfaf..15b6a16 100644 --- a/srs-comprehensive/src/main/java/com/srs/comprehensive/service/CphSqlServerDataService.java +++ b/srs-comprehensive/src/main/java/com/srs/comprehensive/service/CphSqlServerDataService.java @@ -36,7 +36,7 @@ public interface CphSqlServerDataService { public List getBZRClassInfoList();//班级辅导员 - List getEmployEEInfoList();//辅导员 + List getEmployEEInfoList();//教职工 public String gets(Long njid); diff --git a/srs-comprehensive/src/main/java/com/srs/comprehensive/service/SyncDataService.java b/srs-comprehensive/src/main/java/com/srs/comprehensive/service/SyncDataService.java new file mode 100644 index 0000000..a128842 --- /dev/null +++ b/srs-comprehensive/src/main/java/com/srs/comprehensive/service/SyncDataService.java @@ -0,0 +1,8 @@ +package com.srs.comprehensive.service; + +import java.util.List; +import java.util.Map; + +public interface SyncDataService { + List getEmployEEInfoList();//教职工 +} diff --git a/srs-comprehensive/src/main/java/com/srs/comprehensive/service/impl/SyncDataServiceImpl.java b/srs-comprehensive/src/main/java/com/srs/comprehensive/service/impl/SyncDataServiceImpl.java new file mode 100644 index 0000000..13b6fdb --- /dev/null +++ b/srs-comprehensive/src/main/java/com/srs/comprehensive/service/impl/SyncDataServiceImpl.java @@ -0,0 +1,19 @@ +package com.srs.comprehensive.service.impl; + +import com.srs.comprehensive.mapper.SyncDataMapper; +import com.srs.comprehensive.service.SyncDataService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +@Service +public class SyncDataServiceImpl implements SyncDataService { + @Autowired + private SyncDataMapper syncDataMapper; + @Override + public List getEmployEEInfoList() { + return syncDataMapper.getEmployEEInfoList(); + } +} diff --git a/srs-comprehensive/src/main/resources/mapper/comprehensive/SyncDataMapper.xml b/srs-comprehensive/src/main/resources/mapper/comprehensive/SyncDataMapper.xml new file mode 100644 index 0000000..725d249 --- /dev/null +++ b/srs-comprehensive/src/main/resources/mapper/comprehensive/SyncDataMapper.xml @@ -0,0 +1,13 @@ + + + + + From f328cf9109992d467b322362d1e9277271aab391 Mon Sep 17 00:00:00 2001 From: 15976874561 <2553956742@qq.com> Date: Tue, 23 Dec 2025 17:00:35 +0800 Subject: [PATCH 19/19] =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=95=99=E8=81=8C=E5=B7=A5=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../comprehensive/SyncDataController.java | 13 ++++++++++++- .../service/impl/CphTeacherServiceImpl.java | 3 ++- .../mapper/comprehensive/SyncDataMapper.xml | 9 +++++---- .../java/com/srs/system/domain/QgzxTeacher.java | 4 +++- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/srs-admin/src/main/java/com/srs/web/controller/comprehensive/SyncDataController.java b/srs-admin/src/main/java/com/srs/web/controller/comprehensive/SyncDataController.java index 4752522..a1b1702 100644 --- a/srs-admin/src/main/java/com/srs/web/controller/comprehensive/SyncDataController.java +++ b/srs-admin/src/main/java/com/srs/web/controller/comprehensive/SyncDataController.java @@ -3,6 +3,7 @@ package com.srs.web.controller.comprehensive; import com.srs.common.core.controller.BaseController; import com.srs.common.core.domain.AjaxResult; import com.srs.common.core.page.TableDataInfo; +import com.srs.comprehensive.service.ICphTeacherService; import com.srs.comprehensive.service.SyncDataService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -17,10 +18,20 @@ import java.util.Map; public class SyncDataController extends BaseController { @Autowired private SyncDataService syncDataService; - @GetMapping("/getEmployEEInfoList") + @Autowired + private ICphTeacherService iCphTeacherService; + @RequestMapping("/getEmployEEInfoList") public TableDataInfo getEmployEEInfoList(){ startPage(); List list=syncDataService.getEmployEEInfoList(); return getDataTable(list); } + //同步教职工 + @RequestMapping("/synchronousEmployEEInfoList") + public AjaxResult synchronousEmployEEInfoList(){ + List list=syncDataService.getEmployEEInfoList(); + iCphTeacherService.sqlserverSynchronousMYSQL(list);//同步教职工 + //iCphTeacherService.Usertb(); + return success(); + } } diff --git a/srs-comprehensive/src/main/java/com/srs/comprehensive/service/impl/CphTeacherServiceImpl.java b/srs-comprehensive/src/main/java/com/srs/comprehensive/service/impl/CphTeacherServiceImpl.java index e89ed43..98e98d5 100644 --- a/srs-comprehensive/src/main/java/com/srs/comprehensive/service/impl/CphTeacherServiceImpl.java +++ b/srs-comprehensive/src/main/java/com/srs/comprehensive/service/impl/CphTeacherServiceImpl.java @@ -469,6 +469,7 @@ public class CphTeacherServiceImpl implements ICphTeacherService String xm=(String) map.get("xm"); String xb=(String) map.get("xb"); String ksh=(String) map.get("ksh"); + String zgzt=(String) map.get("zgzt"); QgzxTeacher qgzxTeacher = qgzxTeacherMapper.selectQgzxTeacherByEmployeeId(zgh); Long deptId = qgzxTeacherMapper.selectDeptCode(ksh); QgzxTeacher entity=new QgzxTeacher(); @@ -478,7 +479,7 @@ public class CphTeacherServiceImpl implements ICphTeacherService if(deptId!=null) { entity.setDeptId(deptId); } - entity.setStatus("1"); + entity.setStatus(zgzt); entity.setCreateTime(DateUtils.getNowDate()); if(qgzxTeacher==null){ qgzxTeacherMapper.insertQgzxTeacher(entity); diff --git a/srs-comprehensive/src/main/resources/mapper/comprehensive/SyncDataMapper.xml b/srs-comprehensive/src/main/resources/mapper/comprehensive/SyncDataMapper.xml index 725d249..9980122 100644 --- a/srs-comprehensive/src/main/resources/mapper/comprehensive/SyncDataMapper.xml +++ b/srs-comprehensive/src/main/resources/mapper/comprehensive/SyncDataMapper.xml @@ -5,9 +5,10 @@ diff --git a/srs-system/src/main/java/com/srs/system/domain/QgzxTeacher.java b/srs-system/src/main/java/com/srs/system/domain/QgzxTeacher.java index e5499d7..8b59286 100644 --- a/srs-system/src/main/java/com/srs/system/domain/QgzxTeacher.java +++ b/srs-system/src/main/java/com/srs/system/domain/QgzxTeacher.java @@ -93,5 +93,7 @@ private static final long serialVersionUID=1L; @Excel(name = "学院") private String deptName; - + @ApiModelProperty("职工状态") + @TableField("zgzt") + private String zgzt; }