diff --git a/srs-admin/src/main/java/com/srs/web/controller/aitutor/AiChatController.java b/srs-admin/src/main/java/com/srs/web/controller/aitutor/AiChatController.java index 917e8fa..b5f7b87 100644 --- a/srs-admin/src/main/java/com/srs/web/controller/aitutor/AiChatController.java +++ b/srs-admin/src/main/java/com/srs/web/controller/aitutor/AiChatController.java @@ -7,7 +7,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.srs.common.core.controller.BaseController; // OkHttp 显式导入 -import com.srs.common.core.domain.model.LoginUser; import com.srs.common.exception.ServiceException; import com.srs.common.utils.SecurityUtils; import com.srs.teacher.domain.dto.ConversationDTO; @@ -17,15 +16,15 @@ import okhttp3.*; import com.srs.common.core.domain.AjaxResult; // ✅ RuoYi 的返回结果类 import okhttp3.RequestBody; import okhttp3.ResponseBody; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import java.io.BufferedReader; import java.io.IOException; -import java.net.SocketTimeoutException; import java.time.Duration; import java.util.*; import java.util.concurrent.CompletableFuture; @@ -40,49 +39,69 @@ import java.util.concurrent.CompletableFuture; @RestController @RequestMapping("/aitutor/aichat") public class AiChatController extends BaseController { - /** - * Dify API的URL地址 - * 用于发送聊天消息请求到Dify服务 - */ - - private static final String DIFY_API_URL = "http://47.112.118.149:8100/v1/chat-messages"; - //private static final String DIFY_API_URL = "http://localhost:8080/v1/chat-messages"; - - /** - * Dify反馈API的基础URL - * 用于提交消息反馈(点赞、点踩等) - */ - private static final String DIFY_FEEDBACK_BASE_URL = "http://47.112.118.149:8100/v1/messages"; - //private static final String DIFY_FEEDBACK_BASE_URL = "http://localhost:8080/v1/messages"; - - private static final String DIFY_API_HISTORY_URL = "http://47.112.118.149:8100/v1/messages"; - //private static final String DIFY_API_HISTORY_URL = "http://localhost:8080/v1/messages"; - - /** - * Dify会话API的基础URL - * 用于获取会话列表 - */ - private static final String DIFY_CONVERSATIONS_URL = "http://47.112.118.149:8100/v1/conversations"; - //private static final String DIFY_CONVERSATIONS_URL = "http://localhost:8080/v1/conversations"; - - //文件上传 - private static final String DIFY_FILES_URL = "http://47.112.118.149:8100/v1/files/upload"; /** * Dify API的访问密钥 * 用于身份验证,授权访问Dify服务 */ private static final String DIFY_API_KEY = "app-2wjqcYI9n6igHTVHdH8qXlnh"; - //private static final String DIFY_API_KEY = "app-"; + /** + * Dify API的URL地址 + * 用于发送聊天消息请求到Dify服务 + */ + + private static final String DIFY_API_URL = "http://47.112.118.149:8100/v1/chat-messages"; + + /** + * Dify反馈API的基础URL + * 用于提交消息反馈(点赞、点踩等) + */ + private static final String DIFY_FEEDBACK_BASE_URL = "http://47.112.118.149:8100/v1/messages"; + + /** + * Dify获取反馈API的基础URL + * 用于获取消息反馈(点赞、点踩等) + */ + private static final String DIFY_API_FEEDBACK_URL = "http://47.112.118.149:8100/v1/app/feedbacks?page="; + + /** + * Dify消息历史记录API的基础URL + * 用于获取消息历史记录 + */ + private static final String DIFY_API_HISTORY_URL = "http://47.112.118.149:8100/v1/messages"; + + /** + * Dify会话API的基础URL + * 用于获取会话列表 + */ + private static final String DIFY_CONVERSATIONS_URL = "http://47.112.118.149:8100/v1/conversations"; + + /** + * Dify文件上传API的URL地址 + * 用于上传文件到Dify服务,支持图文多模态理解 + */ + private static final String DIFY_FILES_URL = "http://47.112.118.149:8100/v1/files/upload"; /** * HTTP客户端实例 * 配置了5分钟的读取超时时间,用于与Dify API进行通信 */ private final OkHttpClient client = new OkHttpClient.Builder() - .readTimeout(Duration.ofMinutes(5)) + .connectTimeout(Duration.ofSeconds(5)) // 建连超时 + .readTimeout(Duration.ofSeconds(12)) // 读超时(服务端应在此内有数据返回) + .writeTimeout(Duration.ofSeconds(12)) // 写超时 + .retryOnConnectionFailure(true) .build(); + /** 为本次请求设置 “总超时”(含连接/读写),避免无限挂起 */ + private Response execWithTimeouts(Request req, int callSecs, int readSecs, int writeSecs) throws IOException { + OkHttpClient shortClient = client.newBuilder() + .callTimeout(java.time.Duration.ofSeconds(callSecs)) // 整次调用最大时长 + .readTimeout(java.time.Duration.ofSeconds(readSecs)) // 读超时(这段时间没有字节到达就超时) + .writeTimeout(java.time.Duration.ofSeconds(writeSecs)) // 写超时 + .build(); + return shortClient.newCall(req).execute(); + } /** * JSON对象映射器 @@ -162,8 +181,21 @@ public class AiChatController extends BaseController { bodyMap.put("user", currentUsername); // 用户标识 bodyMap.put("response_mode", "streaming"); // 设置为流式响应模式 - // 如果存在对话ID,则添加到请求参数中 - if (requestData.containsKey("conversation_id")) { + // 如果请求中没有提供conversation_id,则尝试获取或创建一个 + if (!requestData.containsKey("conversation_id") || requestData.get("conversation_id") == null) { + try { + List conversations = getConversations(currentUsername, null, 1, "-updated_at"); + if (conversations != null && !conversations.isEmpty()) { + // 使用已有的会话ID + bodyMap.put("conversation_id", conversations.get(0).getId()); + } + // 如果没有会话,Dify会自动创建一个新的会话 + } catch (Exception e) { + System.out.println("获取用户会话时出错: " + e.getMessage()); + // 继续执行,让Dify自动创建新会话 + } + } else { + // 如果存在对话ID,则添加到请求参数中 bodyMap.put("conversation_id", requestData.get("conversation_id")); } @@ -375,12 +407,9 @@ public class AiChatController extends BaseController { // 参数校验和限制 int limitValue = Math.min(Math.max(Integer.parseInt(limit), 1), 100); - // 构建请求URL - String url = "http://47.112.118.149:8100/v1/app/feedbacks?page=" + page + "&limit=" + limitValue; - // 构建请求 Request request = new Request.Builder() - .url(url) + .url(DIFY_API_FEEDBACK_URL + page + "&limit=" + limitValue) .addHeader("Authorization", "Bearer " + DIFY_API_KEY) .addHeader("Content-Type", "application/json") .get() @@ -409,27 +438,6 @@ public class AiChatController extends BaseController { feedbackItem.put("app_id", feedbackNode.has("app_id") ? feedbackNode.get("app_id").asText() : null); feedbackItem.put("conversation_id", feedbackNode.has("conversation_id") ? feedbackNode.get("conversation_id").asText() : null); - // 提取用户信息 - if (feedbackNode.has("from_end_user")) { - JsonNode userNode = feedbackNode.get("from_end_user"); - Map userMap = new HashMap<>(); - userMap.put("id", userNode.has("id") ? userNode.get("id").asText() : null); - userMap.put("name", userNode.has("name") ? userNode.get("name").asText() : null); - userMap.put("email", userNode.has("email") ? userNode.get("email").asText() : null); - feedbackItem.put("from_end_user", userMap); - } - - // 提取消息内容 - if (feedbackNode.has("message")) { - JsonNode messageNode = feedbackNode.get("message"); - Map messageMap = new HashMap<>(); - messageMap.put("id", messageNode.has("id") ? messageNode.get("id").asText() : null); - messageMap.put("query", messageNode.has("query") ? messageNode.get("query").asText() : null); - messageMap.put("answer", messageNode.has("answer") ? messageNode.get("answer").asText() : null); - messageMap.put("created_at", messageNode.has("created_at") ? messageNode.get("created_at").asLong() : null); - feedbackItem.put("message", messageMap); - } - feedbackList.add(feedbackItem); } } @@ -464,219 +472,60 @@ public class AiChatController extends BaseController { } } -/* @GetMapping("/history") - public AjaxResult getHistoryMessagesToAdmin(@RequestParam String user, - @RequestParam(required = false) String firstId, - @RequestParam(defaultValue = "20") int limit) { - //调用查询会话 - String conversation_id = conversations(user); - }*/ - - /** - * 获取会话历史消息的端点 - *

- * 该方法接收客户端发送的请求,获取指定会话的历史消息记录。 - *

- *

- * //@param conversation_id 会话ID - * - * @param firstId 当前页第一条聊天记录的ID,默认null - * @param limit 一次请求返回多少条记录,默认20条 - * @return AjaxResult 返回会话历史消息的结果 - */ - @GetMapping("/history") - public AjaxResult getHistoryMessages( - //@RequestParam(required = false) String conversation_id, - @RequestParam(required = false) String firstId, - @RequestParam(defaultValue = "20") int limit) { - try { - /* // 获取当前用户 - String currentUsername = SecurityUtils.getLoginUser().getUsername(); - // 获取会话列表的id - String conversation_id = conversations(currentUsername); - if(conversation_id == null){ - return error("没有会话"); - }*/ - - - // 验证conversationId是否为空 - /*if (conversation_id == null || conversation_id.trim().isEmpty()) { - return error("会话ID不能为空后端"); - }*/ - String conversation_id = "8fb04ac4-ac9f-470b-9ac4-fee1ebec6412"; - String currentUsername = SecurityUtils.getLoginUser().getUsername(); - System.out.println(currentUsername); - System.out.println(conversation_id); - - // 构建请求参数 - HttpUrl.Builder urlBuilder = HttpUrl.parse(DIFY_API_HISTORY_URL).newBuilder(); - urlBuilder.addQueryParameter("conversation_id", conversation_id); - urlBuilder.addQueryParameter("user", currentUsername); - if (firstId != null) { - urlBuilder.addQueryParameter("first_id", firstId); - } - urlBuilder.addQueryParameter("limit", String.valueOf(limit)); - System.out.println(currentUsername); - // 构建HTTP请求 - Request request = new Request.Builder() - .url(urlBuilder.build()) - .addHeader("Authorization", "Bearer " + DIFY_API_KEY) - .get() - .build(); - - // 执行HTTP请求 - try (Response response = client.newCall(request).execute()) { - // 检查响应是否成功 - if (!response.isSuccessful()) { - return error("Dify 请求失败: " + response.code() + " " + response.message()); - } - - // 解析JSON响应 - JsonNode rootNode = mapper.readTree(response.body().string()); - boolean hasMore = rootNode.path("has_more").asBoolean(false); - List> data = mapper.convertValue(rootNode.path("data"), List.class); - - // 构建返回结果 - Map result = new HashMap<>(); - result.put("limit", limit); - result.put("has_more", hasMore); - result.put("data", data); - - return success(result); - } - } catch (IOException e) { - return error("获取会话历史消息失败: " + e.getMessage()); - } - } - - /** - * 获取会话列表 - *

- * 该方法用于获取当前用户的会话列表,默认返回最近的 20 条。 - *

- * - * @param user 用户标识符,由开发者定义规则,需保证用户标识在应用内唯一 - * @param lastId 当前页最后一条记录的 ID,默认 null - * @param limit 一次请求返回多少条记录,默认 20 条,最大 100 条,最小 1 条 - * @param sortBy 排序字段,默认 -updated_at (按更新时间倒序排列) - * @return AjaxResult 返回会话列表的结果 - */ - /*@GetMapping("/getConversationsToUser") - public AjaxResult getConversationsToUser( - @RequestParam String user, - @RequestParam(required = false) String lastId, - @RequestParam(defaultValue = "20") int limit, - @RequestParam(defaultValue = "-updated_at") String sortBy) { - try { - // 获取当前用户 - String currentUsername = SecurityUtils.getLoginUser().getUsername(); - // 获取会话列表的id - String conversation_id = conversations(currentUsername); - - return AjaxResult.success(conversation_id);*/ - /*// 参数校验 - if (user == null || user.trim().isEmpty()) { - return error("用户标识不能为空"); - } - - // 限制limit的范围在1-100之间 - if (limit < 1 || limit > 100) { - return error("limit参数必须在1到100之间"); - } - - // 构建请求参数 - HttpUrl.Builder urlBuilder = HttpUrl.parse(DIFY_CONVERSATIONS_URL).newBuilder(); - urlBuilder.addQueryParameter("user", user); - if (lastId != null) { - urlBuilder.addQueryParameter("last_id", lastId); - } - urlBuilder.addQueryParameter("limit", String.valueOf(limit)); - urlBuilder.addQueryParameter("sort_by", sortBy); - - // 构建HTTP请求 - Request request = new Request.Builder() - .url(urlBuilder.build()) - .addHeader("Authorization", "Bearer " + DIFY_API_KEY) - .get() - .build(); - - // 执行HTTP请求 - try (Response response = client.newCall(request).execute()) { - // 检查响应是否成功 - if (!response.isSuccessful()) { - return error("Dify 请求失败: " + response.code() + " " + response.message()); - } - - // 解析JSON响应 - JsonNode rootNode = mapper.readTree(response.body().string()); - int resLimit = rootNode.path("limit").asInt(); - boolean hasMore = rootNode.path("has_more").asBoolean(false); - List> data = new ArrayList<>(); - - // 解析会话列表数据 - JsonNode dataArray = rootNode.path("data"); - if (dataArray.isArray()) { - for (JsonNode conversationNode : dataArray) { - Map conversation = new HashMap<>(); - conversation.put("id", conversationNode.path("id").asText()); - conversation.put("name", conversationNode.path("name").asText()); - conversation.put("inputs", mapper.convertValue(conversationNode.path("inputs"), Map.class)); - conversation.put("status", conversationNode.path("status").asText()); - conversation.put("introduction", conversationNode.path("introduction").asText()); - conversation.put("created_at", conversationNode.path("created_at").asLong()); - conversation.put("updated_at", conversationNode.path("updated_at").asLong()); - data.add(conversation); - } - } - - // 构建返回结果 - Map result = new HashMap<>(); - result.put("limit", resLimit); - result.put("has_more", hasMore); - result.put("data", data); - - return success(result); - }*/ -/* } catch (IOException e) { - return error("获取会话列表失败: " + e.getMessage()); - } - }*/ - - // 权限标识为辅导员 + @PreAuthorize("@ss.hasPermi('cph:teacher:list')") @GetMapping("/getMessagesToAdmin") public AjaxResult getMessagesToAdmin(@RequestParam String user, - @RequestParam(required = false) String lastId, + @RequestParam(required = false) String firstId, @RequestParam(defaultValue = "20") int limit, @RequestParam(defaultValue = "-updated_at") String sortBy) { + try { List conversations = getConversations(user); + if (conversations == null || conversations.isEmpty()) { return AjaxResult.error("暂无会话记录"); } + String conversation_id = conversations.get(0).getId(); - System.out.println(conversation_id); - return success(getConversationHistoryMessages(conversation_id, user, null, 20)); + Map result = getConversationHistoryMessages(conversation_id, user, firstId, limit); + + AjaxResult successResult = success(result); + return successResult; } catch (IOException e) { - return AjaxResult.error("网络请求失败,请稍后重试",error()); + e.printStackTrace(); + return AjaxResult.error("网络请求失败,请稍后重试"); + } catch (Exception e) { + e.printStackTrace(); + return AjaxResult.error("请求处理失败: " + e.getMessage()); } } // 权限标识为学生 @GetMapping("/getMessagesToUser") - public AjaxResult getMessagesToUser(@RequestParam(required = false) String lastId, + public AjaxResult getMessagesToUser(@RequestParam(required = false) String firstId, @RequestParam(defaultValue = "20") int limit, @RequestParam(defaultValue = "-updated_at") String sortBy) { + try { String user = SecurityUtils.getLoginUser().getUsername(); List conversations = getConversations(user); + if (conversations == null || conversations.isEmpty()) { return AjaxResult.error("暂无会话记录"); } + String conversation_id = conversations.get(0).getId(); - return success(getConversationHistoryMessages(conversation_id, user, null, 20)); + Map result = getConversationHistoryMessages(conversation_id, user, firstId, limit); + + AjaxResult successResult = success(result); + return successResult; } catch (IOException e) { + e.printStackTrace(); return AjaxResult.error("网络请求失败,请稍后重试"); + } catch (Exception e) { + e.printStackTrace(); + return AjaxResult.error("请求处理失败: " + e.getMessage()); } } @@ -702,13 +551,14 @@ public class AiChatController extends BaseController { .build(); // 执行请求 - try (Response response = client.newCall(request).execute()) { + try (Response response = execWithTimeouts(request, 8, 8, 8)) { if (!response.isSuccessful()) { throw new IOException("Dify API 请求失败: " + response.code() + " " + response.message()); } // 读取响应体 String responseBodyString = response.body().string(); + System.out.println("Raw Response: " + responseBodyString); // 打印原始数据 JsonNode rootNode = mapper.readTree(responseBodyString); // 提取 data 数组 @@ -738,11 +588,11 @@ public class AiChatController extends BaseController { } public List getConversations(String user) throws IOException { - return getConversations(user, null, 0, null); + return getConversations(user, null, 1, "-updated_at"); } public List getConversations(String user, String lastId) throws IOException { - return getConversations(user, lastId, 0, null); + return getConversations(user, lastId, 1, "-updated_at"); } public List getConversations(String user, Integer limit, String sortBy) throws IOException { @@ -785,7 +635,7 @@ public class AiChatController extends BaseController { .get() .build(); - try (Response response = client.newCall(request).execute()) { + try (Response response = execWithTimeouts(request, 8, 8, 8)) { if (!response.isSuccessful()) { String body = response.body() != null ? response.body().string() : "No body"; @@ -822,7 +672,6 @@ public class AiChatController extends BaseController { result.put("data", data); result.put("has_more", hasMore); result.put("limit", finalLimit); - return result; // 直接返回,调用方直接丢给前端 } catch (IOException e) { @@ -844,8 +693,7 @@ public class AiChatController extends BaseController { - /* - *//** + /** * 文件上传接口 *

* 上传文件并在发送消息时使用,可实现图文多模态理解。支持应用程序所支持的所有格式。 @@ -855,7 +703,7 @@ public class AiChatController extends BaseController { * @param file 要上传的文件 * @param user 用户标识,用于定义终端用户的身份 * @return 包含文件信息的统一响应结果 - *//* + */ @PostMapping("/files/upload") public AjaxResult uploadFile(@RequestParam("file") MultipartFile file, @RequestParam("user") String user) { @@ -903,5 +751,5 @@ public class AiChatController extends BaseController { } catch (Exception e) { return AjaxResult.error("文件上传异常: " + e.getMessage()); } - }*/ + } } diff --git a/srs-admin/src/main/java/com/srs/web/controller/common/WeChatMentalAlertController.java b/srs-admin/src/main/java/com/srs/web/controller/common/WeChatMentalAlertController.java new file mode 100644 index 0000000..9aa2976 --- /dev/null +++ b/srs-admin/src/main/java/com/srs/web/controller/common/WeChatMentalAlertController.java @@ -0,0 +1,129 @@ +package com.srs.web.controller.common; + +import com.srs.common.core.controller.BaseController; +import com.srs.common.core.domain.AjaxResult; +import com.srs.common.core.domain.entity.SysUser; +import com.srs.common.core.domain.model.LoginUser; +import com.srs.common.utils.WeChatUtil; +import com.srs.framework.web.service.TokenService; +import com.srs.system.domain.StudentMentalRating; +import com.srs.system.mapper.StudentMentalRatingMapper; +import com.srs.system.mapper.SysUserMapper; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; + +/** + * Dify心理问题发送企业微信 知无涯 + */ +@Slf4j +@RestController +@RequestMapping("/api/wechat") +public class WeChatMentalAlertController extends BaseController { + + @Autowired + private SysUserMapper sysUserMapper; + + @Autowired + private WeChatUtil weChatUtil; + + @Autowired + private TokenService tokenService; + @Autowired + private StudentMentalRatingMapper studentMentalRatingMapper; + + /** + * 处理心理预警通知请求 + */ + @PostMapping("/mentalAlert") + public AjaxResult handleMentalAlert(@RequestBody MentalAlertRequest request, + HttpServletRequest httpRequest) { + + // 校验 token 是否有效 + LoginUser loginUser = tokenService.getLoginUser(httpRequest); + if (loginUser == null) { + return AjaxResult.error("Token无效或已过期"); + } + + // 查询辅导员信息 + SysUser teacher = sysUserMapper.selectTeacherByStuNo(request.getUserId()); + if (teacher == null || !StringUtils.hasText(teacher.getUserName())) { + log.error("辅导员信息不完整,学号: {}", request.getUserId()); + return AjaxResult.error("未分配辅导员或信息不完整"); + } + /* 保存学生心理问题评级 */ + StudentMentalRating record = new StudentMentalRating(); + record.setStudentId(request.getUserId()); + record.setRating(request.getRating()); + studentMentalRatingMapper.insert(record); + + // 构建并发送消息 + try { + String content = buildContent(request, teacher); + weChatUtil.sendTextMessage(teacher.getUserName(), content); + return AjaxResult.success("消息已发送至辅导员"); + } catch (Exception e) { + log.error("发送企业微信失败", e); + return AjaxResult.error("发送失败: " + e.getMessage()); + } + } + + /** + * 构建企业微信消息内容 + */ + private String buildContent(MentalAlertRequest request, SysUser teacher) { + String teacherName = StringUtils.hasText(teacher.getNickName()) + ? teacher.getNickName() + : teacher.getUserName(); + return String.format( + "【心理预警通知】\n" + + "辅导员:%s(%s)\n" + + "学生姓名:%s\n" + + "学号:%s\n" + + "问题描述:%s\n" + + "AI建议:%s\n" + + "心理问题评级:%s", + teacherName, + teacher.getUserName(), + request.getUserName(), + request.getUserId(), + request.getStudentQuestion(), + request.getAiAnswer(), + request.getRating() + ); + } + + + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class MentalAlertRequest { + private String userId; // 学生学号 + private String userName; // 学生姓名 + private String studentQuestion; // 学生提问内容 + private String aiAnswer; // AI回复内容 + private String rating; // 心理问题评级 + } + + /** + * 获取全部学生心理评级记录 + */ + @GetMapping("/rating/all") + public AjaxResult allRatings() { + return AjaxResult.success(studentMentalRatingMapper.selectAll()); + } + + /** + * 根据学号获取全部记录 + */ + @GetMapping("/rating/{stuNo}") + public AjaxResult listByStuNo(@PathVariable String stuNo) { + return AjaxResult.success(studentMentalRatingMapper.selectByStuNo(stuNo)); + } +} \ No newline at end of file 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 7596bb3..6e86417 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 @@ -284,4 +284,11 @@ public class CphAuditDetailsController extends BaseController { public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(cphAuditDetailsService.deleteCphAuditDetailsByIds(ids)); } + /** + * 撤销审核 + */ + @PostMapping("/cancelAudit/{id}") + public AjaxResult cancelAudit(@PathVariable("id") Long id) { + return toAjax(cphAuditDetailsService.cancelAuditById(id)); + } } diff --git a/srs-admin/src/main/java/com/srs/web/controller/comprehensive/CphGoodApplyController.java b/srs-admin/src/main/java/com/srs/web/controller/comprehensive/CphGoodApplyController.java index 5455a9c..dde4047 100644 --- a/srs-admin/src/main/java/com/srs/web/controller/comprehensive/CphGoodApplyController.java +++ b/srs-admin/src/main/java/com/srs/web/controller/comprehensive/CphGoodApplyController.java @@ -94,7 +94,9 @@ public class CphGoodApplyController extends BaseController { Object total = ajaxResult.get("data"); Page page = (Page) total; list.add("rwgl-" + page.getTotal()); + String username = new String(); return AjaxResult.success(list); + } @PreAuthorize("@ss.hasPermi('home:fdy:undo1')") diff --git a/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsCheckLogController.java b/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsCheckLogController.java index d7fdf07..ea28e7f 100644 --- a/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsCheckLogController.java +++ b/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsCheckLogController.java @@ -1,4 +1,4 @@ -package com.srs.dormitory.controller; +package com.srs.web.controller.dormitory; import java.util.ArrayList; import java.util.List; diff --git a/srs-admin/src/main/java/com/srs/web/controller/routine/RtClassMettingHeldController.java b/srs-admin/src/main/java/com/srs/web/controller/routine/RtClassMettingHeldController.java index bec6e64..0cabd64 100644 --- a/srs-admin/src/main/java/com/srs/web/controller/routine/RtClassMettingHeldController.java +++ b/srs-admin/src/main/java/com/srs/web/controller/routine/RtClassMettingHeldController.java @@ -1,4 +1,4 @@ -package com.srs.routine.controller; +package com.srs.web.controller.routine; import java.util.List; import javax.servlet.http.HttpServletResponse; diff --git a/srs-admin/src/main/java/com/srs/web/controller/teacher/SysTeacherStudyController.java b/srs-admin/src/main/java/com/srs/web/controller/teacher/SysTeacherStudyController.java index d8bfdb4..5e38fb1 100644 --- a/srs-admin/src/main/java/com/srs/web/controller/teacher/SysTeacherStudyController.java +++ b/srs-admin/src/main/java/com/srs/web/controller/teacher/SysTeacherStudyController.java @@ -1,4 +1,4 @@ -package com.srs.teacher.controller; +package com.srs.web.controller.teacher; import java.util.List; import javax.servlet.http.HttpServletResponse; 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 f42070a..33a6b81 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 @@ -6,16 +6,16 @@ import org.apache.ibatis.annotations.Mapper; /** * 审核明细Mapper接口 - * + * * @author 邓 * @date 2023-07-04 */ @Mapper -public interface CphAuditDetailsMapper +public interface CphAuditDetailsMapper { /** * 查询审核明细 - * + * * @param id 审核明细主键 * @return 审核明细 */ @@ -25,12 +25,12 @@ public interface CphAuditDetailsMapper /** * 查询审核明细列表 - * + * * @param cphAuditDetails 审核明细 * @return 审核明细集合 */ public List selectCphAuditDetailsList(CphAuditDetails cphAuditDetails); - + /** * 查询已审核 * @author zhy @@ -50,7 +50,7 @@ public interface CphAuditDetailsMapper /** * 新增审核明细 - * + * * @param cphAuditDetails 审核明细 * @return 结果 */ @@ -58,7 +58,7 @@ public interface CphAuditDetailsMapper /** * 修改审核明细 - * + * * @param cphAuditDetails 审核明细 * @return 结果 */ @@ -66,7 +66,7 @@ public interface CphAuditDetailsMapper /** * 删除审核明细 - * + * * @param id 审核明细主键 * @return 结果 */ @@ -74,9 +74,11 @@ public interface CphAuditDetailsMapper /** * 批量删除审核明细 - * + * * @param ids 需要删除的数据主键集合 * @return 结果 */ public int deleteCphAuditDetailsByIds(Long[] ids); + public int cancelAuditById(Long id); + public int cancelCphAudiDetailsById(Long id); } 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 3cf5e02..f9dafca 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 @@ -11,11 +11,11 @@ import com.srs.comprehensive.domain.Vo.CphSearch; /** * 审核明细Service接口 - * + * * @author 邓 * @date 2023-07-04 */ -public interface ICphAuditDetailsService +public interface ICphAuditDetailsService { public int reSub(CphResub param); @@ -30,7 +30,7 @@ public interface ICphAuditDetailsService /** * 查询审核明细 - * + * * @param id 审核明细主键 * @return 审核明细 */ @@ -48,7 +48,7 @@ public interface ICphAuditDetailsService /** * 查询审核明细列表 - * + * * @param cphAuditDetails 审核明细 * @return 审核明细集合 */ @@ -64,7 +64,7 @@ public interface ICphAuditDetailsService /** * 新增审核明细 - * + * * @param cphAuditDetails 审核明细 * @return 结果 */ @@ -72,7 +72,7 @@ public interface ICphAuditDetailsService /** * 修改审核明细 - * + * * @param cphAuditDetails 审核明细 * @return 结果 */ @@ -85,6 +85,12 @@ public interface ICphAuditDetailsService */ public int auditOpera(CphAuditDetails cphAuditDetails); + /** + * 批量同意 + * @param + * @return + */ + /** * 批量同意 * @param @@ -94,15 +100,17 @@ public interface ICphAuditDetailsService /** * 批量删除审核明细 - * + * * @param ids 需要删除的审核明细主键集合 * @return 结果 */ public int deleteCphAuditDetailsByIds(Long[] ids); + //撤销 + public int cancelAuditById(Long id); /** * 删除审核明细信息 - * + * * @param id 审核明细主键 * @return 结果 */ 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 5977479..cb354d0 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 @@ -435,8 +435,8 @@ public class CphAuditDetailsServiceImpl implements ICphAuditDetailsService { temp.setId(cphAuditDetails.getProjectId()); temp.setAuditStatus(cphAuditDetails.getStatusCode().toString()); cphIamService.updateCphIam(temp); - - if (cphAuditDetails.getStatusCode() == 6L)//判断审核状态是否完成 + Long statusCode=cphAuditDetailsMapper.selectCphAuditDetailsById(cphAuditDetails.getId()).getStatusCode(); + if (statusCode == 6L)//判断审核状态是否完成 { SrsStudent stu = _stuService.selectSrsStudentByStuId(cphAuditDetails.getSubmitterId()); SrsAddRecord srsAddRecord = new SrsAddRecord();//加分记录表 @@ -519,7 +519,13 @@ public class CphAuditDetailsServiceImpl implements ICphAuditDetailsService { public int deleteCphAuditDetailsByIds(Long[] ids) { return cphAuditDetailsMapper.deleteCphAuditDetailsByIds(ids); } - + @Override + public int cancelAuditById(Long id) { + int result=0; + result=cphAuditDetailsMapper.cancelAuditById(id); + result+= cphAuditDetailsMapper.cancelCphAudiDetailsById(id); + return result; + } /** * 删除审核明细信息 * 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 892f791..52ce987 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 @@ -19,8 +19,10 @@ import com.srs.comprehensive.mapper.ClassCounMapper; import com.srs.comprehensive.mapper.Gxsdxy02JzgxxMapper; import com.srs.comprehensive.mapper.InfoTeacherMapper; import com.srs.comprehensive.util.ListSliceUtil; +import com.srs.system.domain.QgzxTeacher; import com.srs.system.domain.SysPost; import com.srs.system.domain.SysUserRole; +import com.srs.system.mapper.QgzxTeacherMapper; import com.srs.system.mapper.SysRoleMapper; import com.srs.system.mapper.SysUserMapper; import com.srs.system.mapper.SysUserRoleMapper; @@ -47,6 +49,8 @@ public class CphTeacherServiceImpl implements ICphTeacherService { @Autowired private CphTeacherMapper cphTeacherMapper; + @Autowired + private QgzxTeacherMapper qgzxTeacherMapper; @Autowired private Gxsdxy02JzgxxMapper teacherMapper; @@ -350,14 +354,121 @@ public class CphTeacherServiceImpl implements ICphTeacherService } //同步辅导员 +// @Override +// @Transactional(rollbackFor = Exception.class) +// public void sqlserverSynchronousMYSQL(List list) { +// //辅导员列表 +// List cphTeachers = cphTeacherMapper.selectTeacherList(); +// //查找重复值 +// List updateMap = list.stream() +// .filter(obj1 -> cphTeachers +// .stream().anyMatch(obj2 -> { +// Object xhObj = obj1.get("zgh"); +// if (xhObj != null) { +// String zgh = xhObj.toString(); +// return obj2.getEmployeeId().equals(zgh); +// } +// return false; +// })) +// .collect(Collectors.toList()); +// +// //添加需要 +// List kshList2 = cphTeachers.stream() +// .map(CphTeacher::getEmployeeId) +// .collect(Collectors.toList()); +// +// List insertMap = list.stream() +// .filter(obj -> { +// Object xhObj = obj.get("zgh"); +// return xhObj != null && !kshList2.contains(xhObj.toString()); +// }) +// .collect(Collectors.toList()); +// //添加 +// List insertStudentList = new ArrayList<>(); +// for (Map map:insertMap){ +// CphTeacher cphTeacher = new CphTeacher(); +// Object xmObj = map.get("xm"); +// if (xmObj != null) { +// cphTeacher.setName(xmObj.toString()); +// } +// Object xbObj = map.get("xb"); +// if (xbObj != null) { +// String s = xbObj.toString(); +// if (!Objects.equals(s, "NULL") && !Objects.equals(s, "null")&&!Objects.equals(s," ")) { +// cphTeacher.setGender(xbObj.toString()); +// } +// } +// Object zghObj = map.get("zgh"); +// if (zghObj != null) { +// cphTeacher.setEmployeeId(zghObj.toString()); +// } +// //学院id +// Object yxdmObj = map.get("yxdm"); +// if (yxdmObj!=null) { +// Long deptId = cphTeacherMapper.selectDeptCode(yxdmObj.toString()); +// if (deptId != null) { +// cphTeacher.setDeptId(deptId); +// } +// } +// cphTeacher.setStatus("1"); +// cphTeacher.setCreateTime(DateUtils.getNowDate()); +// insertStudentList.add(cphTeacher); +// } +// if (insertStudentList.size()!=0) { +// cphTeacherMapper.insertBatchSomeColumn(insertStudentList); +// } +// //修改 +// List updateSrsStudent = new ArrayList<>(); +// for (Map map:updateMap){ +// CphTeacher cphTeacher = new CphTeacher(); +// Object xmObj = map.get("xm"); +// if (xmObj != null) { +// cphTeacher.setName(xmObj.toString()); +// } +// Object xbObj = map.get("xb"); +// if (xbObj != null) { +// String s = xbObj.toString(); +// if (!Objects.equals(s, "NULL") && !Objects.equals(s, "null")&&!Objects.equals(s," ")) { +// cphTeacher.setGender(xbObj.toString()); +// } +// } +// Object zghObj = map.get("zgh"); +// if (zghObj != null) { +// cphTeacher.setEmployeeId(zghObj.toString()); +// } +// //学院id +// Object yxdmObj = map.get("yxdm"); +// if (yxdmObj!=null) { +// Long ksh = cphTeacherMapper.selectDeptCode(yxdmObj.toString()); +// if (ksh != null) { +// cphTeacher.setDeptId(ksh); +// } +// } +// cphTeacher.setUpdateTime(DateUtils.getNowDate()); +// updateSrsStudent.add(cphTeacher); +// } +// /*if (updateSrsStudent.size()!=0) { +// List> lists = ListSliceUtil.updateSlice(updateSrsStudent); +// if (lists != null) { +// for (List studentList : lists) { +// cphTeacherMapper.updateSrsClassList(studentList); +// } +// } +// }*/ +// +// +// +// } + + //同步教职工表 @Override @Transactional(rollbackFor = Exception.class) public void sqlserverSynchronousMYSQL(List list) { - //辅导员列表 - List cphTeachers = cphTeacherMapper.selectTeacherList(); + //教职工列表 + List qgzxTeachers = qgzxTeacherMapper.selectTeacherList(); //查找重复值 List updateMap = list.stream() - .filter(obj1 -> cphTeachers + .filter(obj1 -> qgzxTeachers .stream().anyMatch(obj2 -> { Object xhObj = obj1.get("zgh"); if (xhObj != null) { @@ -369,8 +480,8 @@ public class CphTeacherServiceImpl implements ICphTeacherService .collect(Collectors.toList()); //添加需要 - List kshList2 = cphTeachers.stream() - .map(CphTeacher::getEmployeeId) + List kshList2 = qgzxTeachers.stream() + .map(QgzxTeacher::getEmployeeId) .collect(Collectors.toList()); List insertMap = list.stream() @@ -380,68 +491,68 @@ public class CphTeacherServiceImpl implements ICphTeacherService }) .collect(Collectors.toList()); //添加 - List insertStudentList = new ArrayList<>(); + List insertStudentList = new ArrayList<>(); for (Map map:insertMap){ - CphTeacher cphTeacher = new CphTeacher(); + QgzxTeacher qgzxTeacher = new QgzxTeacher(); Object xmObj = map.get("xm"); if (xmObj != null) { - cphTeacher.setName(xmObj.toString()); + qgzxTeacher.setName(xmObj.toString()); } Object xbObj = map.get("xb"); if (xbObj != null) { String s = xbObj.toString(); if (!Objects.equals(s, "NULL") && !Objects.equals(s, "null")&&!Objects.equals(s," ")) { - cphTeacher.setGender(xbObj.toString()); + qgzxTeacher.setGender(xbObj.toString()); } } Object zghObj = map.get("zgh"); if (zghObj != null) { - cphTeacher.setEmployeeId(zghObj.toString()); + qgzxTeacher.setEmployeeId(zghObj.toString()); } //学院id Object yxdmObj = map.get("yxdm"); if (yxdmObj!=null) { - Long deptId = cphTeacherMapper.selectDeptCode(yxdmObj.toString()); + Long deptId = qgzxTeacherMapper.selectDeptCode(yxdmObj.toString()); if (deptId != null) { - cphTeacher.setDeptId(deptId); + qgzxTeacher.setDeptId(deptId); } } - cphTeacher.setStatus("1"); - cphTeacher.setCreateTime(DateUtils.getNowDate()); - insertStudentList.add(cphTeacher); + qgzxTeacher.setStatus("1"); + qgzxTeacher.setCreateTime(DateUtils.getNowDate()); + insertStudentList.add(qgzxTeacher); } if (insertStudentList.size()!=0) { - cphTeacherMapper.insertBatchSomeColumn(insertStudentList); + qgzxTeacherMapper.insertBatchSomeColumn(insertStudentList); } //修改 - List updateSrsStudent = new ArrayList<>(); + List updateSrsStudent = new ArrayList<>(); for (Map map:updateMap){ - CphTeacher cphTeacher = new CphTeacher(); + QgzxTeacher qgzxTeacher = new QgzxTeacher(); Object xmObj = map.get("xm"); if (xmObj != null) { - cphTeacher.setName(xmObj.toString()); + qgzxTeacher.setName(xmObj.toString()); } Object xbObj = map.get("xb"); if (xbObj != null) { String s = xbObj.toString(); if (!Objects.equals(s, "NULL") && !Objects.equals(s, "null")&&!Objects.equals(s," ")) { - cphTeacher.setGender(xbObj.toString()); + qgzxTeacher.setGender(xbObj.toString()); } } Object zghObj = map.get("zgh"); if (zghObj != null) { - cphTeacher.setEmployeeId(zghObj.toString()); + qgzxTeacher.setEmployeeId(zghObj.toString()); } //学院id Object yxdmObj = map.get("yxdm"); if (yxdmObj!=null) { - Long ksh = cphTeacherMapper.selectDeptCode(yxdmObj.toString()); + Long ksh = qgzxTeacherMapper.selectDeptCode(yxdmObj.toString()); if (ksh != null) { - cphTeacher.setDeptId(ksh); + qgzxTeacher.setDeptId(ksh); } } - cphTeacher.setUpdateTime(DateUtils.getNowDate()); - updateSrsStudent.add(cphTeacher); + qgzxTeacher.setUpdateTime(DateUtils.getNowDate()); + updateSrsStudent.add(qgzxTeacher); } /*if (updateSrsStudent.size()!=0) { List> lists = ListSliceUtil.updateSlice(updateSrsStudent); diff --git a/srs-comprehensive/src/main/resources/mapper/comprehensive/CphAuditDetailsMapper.xml b/srs-comprehensive/src/main/resources/mapper/comprehensive/CphAuditDetailsMapper.xml index 4ed114f..749b0cd 100644 --- a/srs-comprehensive/src/main/resources/mapper/comprehensive/CphAuditDetailsMapper.xml +++ b/srs-comprehensive/src/main/resources/mapper/comprehensive/CphAuditDetailsMapper.xml @@ -3,7 +3,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -43,7 +43,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + - + insert into cph_audit_details @@ -159,9 +159,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from cph_audit_details where id in + delete from cph_audit_details where id in #{id} - \ No newline at end of file + + update cph_iam set audit_status=1 where id=#{id} + + + update cph_audit_details set status_code=1 where project_id=#{id} + + diff --git a/srs-comprehensive/src/main/resources/mapper/comprehensive/CphGoodApplyMapper.xml b/srs-comprehensive/src/main/resources/mapper/comprehensive/CphGoodApplyMapper.xml index c803cbe..127dcc5 100644 --- a/srs-comprehensive/src/main/resources/mapper/comprehensive/CphGoodApplyMapper.xml +++ b/srs-comprehensive/src/main/resources/mapper/comprehensive/CphGoodApplyMapper.xml @@ -1,7 +1,7 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> @@ -66,25 +66,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select t2.* ,sc.class_name, (select count(1) from srs_student where `status` = '01' and class_id = sc.class_id) as class_count, (select count(1) from srs_student as f1 - left join srs_class as f2 on f1.class_id = f2.class_id + left join srs_class as f2 on f1.class_id = f2.class_id where f1.`status` = '01' and f2.major_id = sc.major_id and f2.grade_id = sc.grade_id) as major_count from (select t1.* from ( - select a.stu_no,a.stu_year_id,b.stu_year_name,a.stu_score,a.cph_score,a.sport_score, - RANK() OVER(PARTITION BY c.class_id,a.stu_year_id,d.grade_id ORDER BY a.cph_score DESC ) as cph_class_rank, - RANK() OVER(PARTITION BY c.class_id,a.stu_year_id,d.grade_id ORDER BY a.stu_score DESC ) as stu_class_rank, - RANK() OVER(PARTITION BY d.major_id,a.stu_year_id,d.grade_id ORDER BY a.stu_score DESC ) as stu_major_rank - from cph_total_score as a - left join srs_stu_year as b on a.stu_year_id = b.id - left join srs_student as c on a.stu_no = c.stu_no - left join srs_class as d on c.class_id = d.class_id - )as t1 - where t1.stu_no = #{stuNo} and t1.stu_year_id in ( - select id from srs_stu_year as b where b.`status` = 1 - ) + select a.stu_no,a.stu_year_id,b.stu_year_name,a.stu_score,a.cph_score,a.sport_score, + RANK() OVER(PARTITION BY c.class_id,a.stu_year_id,d.grade_id ORDER BY a.cph_score DESC ) as cph_class_rank, + RANK() OVER(PARTITION BY c.class_id,a.stu_year_id,d.grade_id ORDER BY a.stu_score DESC ) as stu_class_rank, + RANK() OVER(PARTITION BY d.major_id,a.stu_year_id,d.grade_id ORDER BY a.stu_score DESC ) as stu_major_rank + from cph_total_score as a + left join srs_stu_year as b on a.stu_year_id = b.id + left join srs_student as c on a.stu_no = c.stu_no + left join srs_class as d on c.class_id = d.class_id + )as t1 + where t1.stu_no = #{stuNo} and t1.stu_year_id in ( + select id from srs_stu_year as b where b.`status` = 1 + ) )as t2 - left join srs_student as ss on t2.stu_no = ss.stu_no - left join srs_class as sc on ss.class_id = sc.class_id + left join srs_student as ss on t2.stu_no = ss.stu_no + left join srs_class as sc on ss.class_id = sc.class_id @@ -124,31 +124,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select count(a.is_pass) as course_count,sum(case when a.is_pass='1' then 1 else 0 end ) as pass_count, sum(case when a.is_pass='0' then 1 else 0 end ) as unpass_count , b.stu_year_name from cph_stu_score_middle as a - left join srs_stu_year as b on a.xndm = b.xndm + left join srs_stu_year as b on a.xndm = b.xndm where a.stu_no = #{stuNo} and a.xndm = (select t2.xndm from cph_own_good_type as t1 - left join srs_stu_year as t2 on t1.stu_year_id = t2.id where t1.type_code = #{code}) + left join srs_stu_year as t2 on t1.stu_year_id = t2.id where t1.type_code = #{code}) GROUP BY b.id @@ -156,11 +156,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select b.apply_status,c.stu_no,c.`name` as stu_name,d.class_name,f.type_name,a.*,e.major_id,e.major_name,e.major_type_name, - d.class_name + d.class_name from cph_good_audit as a - left join cph_good_apply as b on a.apply_id = b.id - left join srs_student as c on b.stu_no = c.stu_no - left join srs_class as d on c.class_id = d.class_id - left join cph_own_good_type as f on b.type_code = f.type_code - left join srs_majors as e on d.major_id = e.major_id + left join cph_good_apply as b on a.apply_id = b.id + left join srs_student as c on b.stu_no = c.stu_no + left join srs_class as d on c.class_id = d.class_id + left join cph_own_good_type as f on b.type_code = f.type_code + left join srs_majors as e on d.major_id = e.major_id and e.college_id = #{deptId} and d.major_id = #{majorId} @@ -226,7 +226,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select concat(b.stu_year_name,a.type_name) as type_name , a.type_code,a.stu_year_id from cph_own_good_type as a - left join srs_stu_year as b on a.stu_year_id = b.id + left join srs_stu_year as b on a.stu_year_id = b.id where a.parent_code = 'XYJXJ' and enable_status = 1 and start_status = 1 @@ -329,26 +329,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" @@ -356,21 +356,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select t2.* ,sc.class_name, (select count(1) from srs_student where `status` = '01' and class_id = sc.class_id) as class_count, (select count(1) from srs_student as f1 - left join srs_class as f2 on f1.class_id = f2.class_id + left join srs_class as f2 on f1.class_id = f2.class_id where f1.`status` = '01' and f2.major_id = sc.major_id and f2.grade_id = sc.grade_id) as major_count from (select t1.* from ( - select a.stu_no,a.stu_year_id,b.stu_year_name,a.stu_score,a.cph_score,a.sport_score, - RANK() OVER(PARTITION BY c.class_id,a.stu_year_id,d.grade_id ORDER BY a.cph_score DESC ) as cph_class_rank, - RANK() OVER(PARTITION BY c.class_id,a.stu_year_id,d.grade_id ORDER BY a.stu_score DESC ) as stu_class_rank, - RANK() OVER(PARTITION BY d.major_id,a.stu_year_id,d.grade_id ORDER BY a.stu_score DESC ) as stu_major_rank - from cph_total_score as a - left join srs_stu_year as b on a.stu_year_id = b.id - left join srs_student as c on a.stu_no = c.stu_no - left join srs_class as d on c.class_id = d.class_id - )as t1 - where t1.stu_no = #{stuNo} - and t1.stu_year_id = ( + select a.stu_no,a.stu_year_id,b.stu_year_name,a.stu_score,a.cph_score,a.sport_score, + RANK() OVER(PARTITION BY c.class_id,a.stu_year_id,d.grade_id ORDER BY a.cph_score DESC ) as cph_class_rank, + RANK() OVER(PARTITION BY c.class_id,a.stu_year_id,d.grade_id ORDER BY a.stu_score DESC ) as stu_class_rank, + RANK() OVER(PARTITION BY d.major_id,a.stu_year_id,d.grade_id ORDER BY a.stu_score DESC ) as stu_major_rank + from cph_total_score as a + left join srs_stu_year as b on a.stu_year_id = b.id + left join srs_student as c on a.stu_no = c.stu_no + left join srs_class as d on c.class_id = d.class_id + )as t1 + where t1.stu_no = #{stuNo} + and t1.stu_year_id = ( select stu_year_id from cph_own_good_type where type_code = #{code} ))as t2 left join srs_student as ss on t2.stu_no = ss.stu_no @@ -402,7 +402,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" material, classtwo_sure, youth_percent, - + #{stuNo}, #{zzmm}, @@ -425,7 +425,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{material}, #{classtwoSure}, #{youthPercent}, - + @@ -467,7 +467,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select concat('good-',count(a.id)) as `all` from cph_good_apply as a where a.apply_status = 3 @@ -491,6 +491,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select concat('zx-',count(a.id)) as `all` from srs_zxj_apply as a where a.`step` = 3 + + union + select concat('knzz-',count(a.id)) as `all` + from knzz_tufa_apply as a + where a.apply_status = 1 + /*宁博 6、困难资助-国家励志奖学金-学工审核代办*/ + union + select concat('knzzgl-',count(a.id)) as `all` + from knzz_gl_apply as a + left join view_stu_info as b on a.stu_no = b.stu_no + where a.apply_status = 1 @@ -628,11 +680,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where a.penalty_status=3 and b.dept_id = #{id} and EXISTS( - SELECT m.* FROM sys_role r - LEFT JOIN sys_role_menu rm on r.role_id = rm.role_id - LEFT JOIN sys_menu m on rm.menu_id = m.menu_id - where r.role_key ='Junior_college_leader' - ) + SELECT m.* FROM sys_role r + LEFT JOIN sys_role_menu rm on r.role_id = rm.role_id + LEFT JOIN sys_menu m on rm.menu_id = m.menu_id + where r.role_key ='Junior_college_leader' + ) + + union + select concat('knzz-',count(a.id)) as `all` + from knzz_tufa_apply as a + left join view_stu_info as b on a.stu_no = b.stu_no + where a.apply_status = 1 and b.dept_id = #{id} 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 2c8ffc6..e5499d7 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 @@ -89,7 +89,7 @@ private static final long serialVersionUID=1L; private String status; @ApiModelProperty("学院") - @TableField("dept_name=false") + @TableField(exist=false) @Excel(name = "学院") private String deptName; diff --git a/srs-system/src/main/java/com/srs/system/domain/StudentMentalRating.java b/srs-system/src/main/java/com/srs/system/domain/StudentMentalRating.java new file mode 100644 index 0000000..b26f57d --- /dev/null +++ b/srs-system/src/main/java/com/srs/system/domain/StudentMentalRating.java @@ -0,0 +1,49 @@ +package com.srs.system.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.srs.common.core.domain.BaseEntity; + +import java.util.Date; + +/** + * 学生心理问题评级表 知无涯 + */ +public class StudentMentalRating extends BaseEntity { + + private static final long serialVersionUID = 1L; + + private Long id; + private String studentId; + private String rating; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getStudentId() { + return studentId; + } + + public void setStudentId(String studentId) { + this.studentId = studentId; + } + + public String getRating() { + return rating; + } + + public void setRating(String rating) { + this.rating = rating; + } + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createdTime; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date updatedTime; +} \ No newline at end of file diff --git a/srs-system/src/main/java/com/srs/system/mapper/QgzxTeacherMapper.java b/srs-system/src/main/java/com/srs/system/mapper/QgzxTeacherMapper.java index fa8025e..6101a69 100644 --- a/srs-system/src/main/java/com/srs/system/mapper/QgzxTeacherMapper.java +++ b/srs-system/src/main/java/com/srs/system/mapper/QgzxTeacherMapper.java @@ -4,6 +4,7 @@ import java.util.List; import com.srs.system.domain.QgzxTeacher; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; /** * 教职工信息Mapper接口 @@ -59,4 +60,8 @@ public interface QgzxTeacherMapper extends BaseMapper { * @return 结果 */ int deleteQgzxTeacherByTeacherIds(Long[] teacherIds); + + public List selectTeacherList(); + Long selectDeptCode(String ksh); + Integer insertBatchSomeColumn(@Param("list")List entityList); } diff --git a/srs-system/src/main/java/com/srs/system/mapper/StudentMentalRatingMapper.java b/srs-system/src/main/java/com/srs/system/mapper/StudentMentalRatingMapper.java new file mode 100644 index 0000000..bcc0f32 --- /dev/null +++ b/srs-system/src/main/java/com/srs/system/mapper/StudentMentalRatingMapper.java @@ -0,0 +1,32 @@ +package com.srs.system.mapper; + +import com.srs.system.domain.StudentMentalRating; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface StudentMentalRatingMapper { + + /** + * 按学号查询 知无涯 + */ + StudentMentalRating selectByStudentId(String studentId); + + /** + * 插入 + */ + int insert(StudentMentalRating record); + + /** + * 按学号更新评级 + */ + int updateRatingByStudentId(StudentMentalRating record); + + /** 全部记录 */ + List selectAll(); + + /** 单学号全部记录 */ + List selectByStuNo(@Param("stuNo") String stuNo); + +} + diff --git a/srs-system/src/main/resources/mapper/system/QgzxTeacherMapper.xml b/srs-system/src/main/resources/mapper/system/QgzxTeacherMapper.xml index 515d026..140925a 100644 --- a/srs-system/src/main/resources/mapper/system/QgzxTeacherMapper.xml +++ b/srs-system/src/main/resources/mapper/system/QgzxTeacherMapper.xml @@ -39,7 +39,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where teacher_id = #{teacherId} - + + insert into qgzx_teacher @@ -65,6 +72,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{updateTime}, + + insert into qgzx_teacher(name,gender,age,employee_id,dept_id,status,create_time) + values + + ( + #{entity.name}, + #{entity.gender}, + #{entity.age}, + #{entity.employeeId}, + #{entity.deptId}, + #{entity.status}, + #{entity.createTime}, + ) + + update qgzx_teacher diff --git a/srs-system/src/main/resources/mapper/system/StudentMentalRatingMapper.xml b/srs-system/src/main/resources/mapper/system/StudentMentalRatingMapper.xml new file mode 100644 index 0000000..88cd1e5 --- /dev/null +++ b/srs-system/src/main/resources/mapper/system/StudentMentalRatingMapper.xml @@ -0,0 +1,46 @@ + + + + + + + + INSERT INTO student_mental_rating(student_id, rating) + VALUES (#{studentId}, #{rating}) + + + + UPDATE student_mental_rating + SET rating = #{rating} + WHERE student_id = #{studentId} + + + + + + + + \ No newline at end of file diff --git a/srs-workstudy/src/main/java/com/srs/workstudy/service/impl/QgzxPostServiceImpl.java b/srs-workstudy/src/main/java/com/srs/workstudy/service/impl/QgzxPostServiceImpl.java index a280c67..dd8a2c8 100644 --- a/srs-workstudy/src/main/java/com/srs/workstudy/service/impl/QgzxPostServiceImpl.java +++ b/srs-workstudy/src/main/java/com/srs/workstudy/service/impl/QgzxPostServiceImpl.java @@ -8,6 +8,8 @@ import com.srs.common.core.domain.entity.SysUser; import com.srs.common.enums.QgzxApplyStatus; import com.srs.comprehensive.domain.CphTeacher; import com.srs.comprehensive.mapper.CphTeacherMapper; +import com.srs.system.domain.QgzxTeacher; +import com.srs.system.mapper.QgzxTeacherMapper; import com.srs.system.mapper.SysDeptMapper; import com.srs.system.mapper.SysUserMapper; import com.srs.workstudy.domain.QgzxMoney; @@ -61,6 +63,8 @@ public class QgzxPostServiceImpl extends ServiceImpl im @Autowired private CphTeacherMapper _teacherMapper; + @Autowired + private QgzxTeacherMapper _qgzxteacherMapper; @Autowired private SysUserMapper _userMapper; @@ -383,10 +387,14 @@ public class QgzxPostServiceImpl extends ServiceImpl im } } - QueryWrapper fzrQuery = new QueryWrapper<>(); - fzrQuery.eq("employee_id", param.fzrNo) - .last("limit 1"); - CphTeacher fzr = _teacherMapper.selectOne(fzrQuery); +// QueryWrapper fzrQuery = new QueryWrapper<>(); +// fzrQuery.eq("employee_id", param.fzrNo) +// .last("limit 1"); +// CphTeacher fzr = _teacherMapper.selectOne(fzrQuery); + QueryWrapper fzrQuery = new QueryWrapper<>(); + fzrQuery.eq("employee_id", param.fzrNo) + .last("limit 1"); + QgzxTeacher fzr = _qgzxteacherMapper.selectOne(fzrQuery); if (fzr == null) { throw new Exception("负责人工号不存在"); } else { @@ -437,10 +445,14 @@ public class QgzxPostServiceImpl extends ServiceImpl im } } - QueryWrapper fzrQuery = new QueryWrapper<>(); +// QueryWrapper fzrQuery = new QueryWrapper<>(); +// fzrQuery.eq("employee_id", param.fzrNo) +// .last("limit 1"); +// CphTeacher fzr = _teacherMapper.selectOne(fzrQuery); + QueryWrapper fzrQuery = new QueryWrapper<>(); fzrQuery.eq("employee_id", param.fzrNo) .last("limit 1"); - CphTeacher fzr = _teacherMapper.selectOne(fzrQuery); + QgzxTeacher fzr = _qgzxteacherMapper.selectOne(fzrQuery); if (fzr == null) { throw new Exception("负责人工号不存在"); } else {