From 58882c6fe607b25ac04601a6d15d42d0691443c4 Mon Sep 17 00:00:00 2001 From: "@jyuhsin" <729757837@qq.com> Date: Wed, 10 Dec 2025 14:08:18 +0800 Subject: [PATCH] commit --- ...osalBranchLeaderSuffixAuditController.java | 68 ++++++++++ .../ProposalFeedbackScoreController.java | 43 +++++++ ...salBranchLeaderSuffixAuditServiceImpl.java | 10 ++ .../transact/branchLeaderSuffixAudit.html | 116 +++++++++++++++++- .../platform/proposal/transact/feedback.html | 109 +++++++++++++++- .../platform/proposal/transact/reply.html | 2 +- 6 files changed, 341 insertions(+), 7 deletions(-) diff --git a/src/main/java/io/v/nutz/zhgh/proposal/controller/transact/ProposalBranchLeaderSuffixAuditController.java b/src/main/java/io/v/nutz/zhgh/proposal/controller/transact/ProposalBranchLeaderSuffixAuditController.java index a0c10b1..a71eb59 100644 --- a/src/main/java/io/v/nutz/zhgh/proposal/controller/transact/ProposalBranchLeaderSuffixAuditController.java +++ b/src/main/java/io/v/nutz/zhgh/proposal/controller/transact/ProposalBranchLeaderSuffixAuditController.java @@ -1,11 +1,16 @@ package io.v.nutz.zhgh.proposal.controller.transact; import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import cn.wizzer.framework.base.Result; import io.v.nutz.base.annontation.ViReturn; import io.v.nutz.base.utils.MsgApi; import io.v.nutz.base.query.PageForm; +import io.v.nutz.base.utils.Roles; +import io.v.nutz.sys.models.Sys_user; +import io.v.nutz.sys.models.Sys_user_role; import io.v.nutz.sys.services.SysLocalProcessService; +import io.v.nutz.web.commons.base.Globals; import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.web.commons.slog.annotation.SLog; import io.v.nutz.zhgh.proposal.constants.ProposalState; @@ -22,9 +27,12 @@ import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Chain; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Lang; import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; @@ -33,6 +41,8 @@ import org.nutz.mvc.annotation.Param; import org.nutz.trans.Trans; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** @@ -271,4 +281,62 @@ public class ProposalBranchLeaderSuffixAuditController { return null; } + @At + @ViReturn + @RequiresPermissions("proposal.transact.branchLeaderSuffixAudit") + public Result sendNotify(@Param("sessionId") String sessionId, @Param("proposalId") String proposalId, + @Param("title") String title, @Param("content") String content) { + if (StrUtil.isBlank(sessionId)) { + return Result.error("教代会届次信息为空"); + } + try { + // 找待校领导审核的提案 + List list = dao.query( + ProposalInfo.class, + Cnd.where("teacherMeetingId", "=", sessionId) + .andEX("id", "=", proposalId) + .and("stateCode", "=", ProposalState.LEADER_SUFFIX_AUDIT) + ); + // 再找承办单位id + List auditList = dao.query( + ProposalBranchLeaderSuffixAudit.class, + Cnd.where("proposalId", "in", list.stream().map(ProposalInfo::getId).toList()) + .and("isAudit", "=", 0) + ); + if(Lang.isEmpty(auditList)) { + return Result.success(); + } + List undertakes = auditList.stream().map(ProposalBranchLeaderSuffixAudit::getUnderTakeId).distinct().toList(); + + // 根据承办单位id找承办单位 + List undertakeList = dao.query(ProposalUndertake.class, Cnd.where("id", "in", undertakes)); + + // 根据承办单位id找校领导 + List userRoles = dao.query(Sys_user_role.class, Cnd.where("roleid", "=", Roles.XLD).and("cbdwid", "in", undertakes)); + Map> userRoleMap = userRoles.stream().collect(Collectors.groupingBy(Sys_user_role::getCbdwid)); + + // 找人 + List userList = dao.query(Sys_user.class, Cnd.where("id", "in", userRoles.stream().map(Sys_user_role::getUserId).toList())); + Map userMap = userList.stream().collect(Collectors.toMap(Sys_user::getId, o -> o)); + + String linkUrl = Globals.AppDomain + "/platform/proposal/transact/branchLeaderSuffixAudit"; + for (ProposalUndertake undertake : undertakeList) { + // 可能有多个 + List userRoleList = userRoleMap.get(undertake.getId()); + for (Sys_user_role userRole : userRoleList) { + Sys_user user = userMap.get(userRole.getUserId()); + String loginname = user.getLoginname(); + if(content.contains("****") && StrUtil.isBlank(proposalId)) { + content = content.replace("****", undertake.getUnitName()); + } + msgApi.sendMsg(List.of("DingTalk"), loginname, 2, title, content, "", linkUrl); + } + } + return Result.success(); + } catch (Exception e) { + e.printStackTrace(); + return Result.error(); + } + } + } diff --git a/src/main/java/io/v/nutz/zhgh/proposal/controller/transact/ProposalFeedbackScoreController.java b/src/main/java/io/v/nutz/zhgh/proposal/controller/transact/ProposalFeedbackScoreController.java index 65acf2c..fb8b5d4 100644 --- a/src/main/java/io/v/nutz/zhgh/proposal/controller/transact/ProposalFeedbackScoreController.java +++ b/src/main/java/io/v/nutz/zhgh/proposal/controller/transact/ProposalFeedbackScoreController.java @@ -2,6 +2,8 @@ package io.v.nutz.zhgh.proposal.controller.transact; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import cn.wizzer.framework.base.Result; import cn.wizzer.framework.page.Pagination; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.config.Configure; @@ -13,6 +15,7 @@ import io.v.nutz.base.utils.Html2Text; import io.v.nutz.base.utils.MsgApi; import io.v.nutz.base.dao.CndPlus; import io.v.nutz.base.query.PageForm; +import io.v.nutz.base.utils.Roles; import io.v.nutz.sys.services.SysLocalProcessService; import io.v.nutz.web.commons.slog.annotation.SLog; import io.v.nutz.zhgh.proposal.constants.ProposalConstant; @@ -410,5 +413,45 @@ public class ProposalFeedbackScoreController { return null; } + @At + @ViReturn + @RequiresPermissions("proposal.transact.feedback") + public Result sendNotify(@Param("sessionId") String sessionId, @Param("proposalId") String proposalId, + @Param("title") String title, @Param("content") String content) { + if(StrUtil.isBlank(sessionId)) { + return Result.error("教代会届次信息为空"); + } + try { + Sql sql = Sqls.create(""" + SELECT + info.id, + info.proposalCode, + info.proposalName, + u.username, + u.loginname + FROM + proposal_info info + left join sys_user u on u.id = info.createUser + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.and("info.teacherMeetingId", "=", sessionId); + cnd.and("info.stateCode", "=", ProposalState.FEEDBACKSCORE); + cnd.andEX("info.id", "=", proposalId); + cnd.asc("info.proposalCode"); + sql.setCondition(cnd); + List list = proposalFeedbackService.listMap(sql); + String linkUrl = Globals.AppDomain + "/platform/proposal/transact/feedback"; + for (NutMap user : list) { + String loginname = user.getString("loginname"); + System.out.println(JSONUtil.toJsonStr(user)); + msgApi.sendMsg(List.of("DingTalk"), loginname, 2, title, content, "", linkUrl); + } + return Result.success(); + } catch (Exception e) { + e.printStackTrace(); + return Result.error(); + } + } } diff --git a/src/main/java/io/v/nutz/zhgh/proposal/services/impl/ProposalBranchLeaderSuffixAuditServiceImpl.java b/src/main/java/io/v/nutz/zhgh/proposal/services/impl/ProposalBranchLeaderSuffixAuditServiceImpl.java index 53190d2..2fe0803 100644 --- a/src/main/java/io/v/nutz/zhgh/proposal/services/impl/ProposalBranchLeaderSuffixAuditServiceImpl.java +++ b/src/main/java/io/v/nutz/zhgh/proposal/services/impl/ProposalBranchLeaderSuffixAuditServiceImpl.java @@ -3,6 +3,9 @@ package io.v.nutz.zhgh.proposal.services.impl; import cn.wizzer.framework.page.Pagination; import io.v.nutz.base.query.PageForm; import io.v.nutz.base.service.impl.ViServiceImpl; +import io.v.nutz.base.utils.Roles; +import io.v.nutz.sys.models.Sys_user_role; +import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.proposal.constants.ProposalState; import io.v.nutz.zhgh.proposal.models.ProposalReply; import io.v.nutz.zhgh.proposal.models.ProposalSearch; @@ -83,6 +86,13 @@ public class ProposalBranchLeaderSuffixAuditServiceImpl extends ViServiceImpl userRoles = dao().query(Sys_user_role.class, Cnd.where("roleid", "=", Roles.XLD).and("userId", "=", ShiroUtil.getUserId())); + List list = userRoles.stream().map(Sys_user_role::getCbdwid).distinct().toList(); + cnd.and("pbla.underTakeId", "in", list); + } + cnd.and("pr.undertakeType", "=", 1); cnd.desc("pbla.isMaster"); cnd.groupBy("pbla.proposalId"); diff --git a/src/main/resources/views/platform/proposal/transact/branchLeaderSuffixAudit.html b/src/main/resources/views/platform/proposal/transact/branchLeaderSuffixAudit.html index 74ab37a..00ffa49 100644 --- a/src/main/resources/views/platform/proposal/transact/branchLeaderSuffixAudit.html +++ b/src/main/resources/views/platform/proposal/transact/branchLeaderSuffixAudit.html @@ -6,10 +6,13 @@ layout("/layouts/platform.html"){ .el-select { width: 100%; } - .pro_table { padding-left: 65px; } + .tooltip-alert,.el-alert{ + padding: 0; + margin-top: 6px; + }
@@ -20,6 +23,10 @@ layout("/layouts/platform.html"){ 审核 + 催办 + @@ -136,12 +147,55 @@ layout("/layouts/platform.html"){ + + + + + + + + + + + + + + + + + + + + 取 消 + 确 定 + + +