From a66e1b9073f0a6333554ff4e17ad1c31fa228007 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Thu, 17 Jul 2025 16:36:33 +0800 Subject: [PATCH] =?UTF-8?q?feat(portal):=20=E5=A2=9E=E5=8A=A0=E5=9B=A2?= =?UTF-8?q?=E9=98=9F=E7=BA=AA=E5=BF=B5=E6=97=A5=20SQL=20=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 getTeamMemorialDaySql 接口,用于获取团队纪念日的 SQL 语句 - 优化 getTeamMemorialDay 接口,为 URL 添加 dataKey 参数 - 新增 StringUtil 工具类,用于 XML 转义字符处理和 SQL 条件构建 --- .../controller/ManagerPortalController.java | 4 ++ .../portal/service/ManagerPortalService.java | 2 + .../impl/ManagerPortalServiceImpl.java | 49 +++++++++++++++++-- .../seconddev/portal/util/StringUtil.java | 36 ++++++++++++++ 4 files changed, 88 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/weaver/seconddev/portal/util/StringUtil.java diff --git a/src/main/java/com/weaver/seconddev/portal/controller/ManagerPortalController.java b/src/main/java/com/weaver/seconddev/portal/controller/ManagerPortalController.java index 678ebb4..1ef3b04 100644 --- a/src/main/java/com/weaver/seconddev/portal/controller/ManagerPortalController.java +++ b/src/main/java/com/weaver/seconddev/portal/controller/ManagerPortalController.java @@ -52,6 +52,10 @@ public class ManagerPortalController { private WeaResult> getTeamMemorialDay(@RequestBody Map params) { return managerPortalService.getTeamMemorialDay(params); } + @PostMapping("/getTeamMemorialDaySql") + private WeaResult getTeamMemorialDaySql(@RequestBody Map params) { + return managerPortalService.getTeamMemorialDaySql(params); + } @PostMapping("/getEducationInfo") private WeaResult> getEducationInfo(@RequestBody Map params) { diff --git a/src/main/java/com/weaver/seconddev/portal/service/ManagerPortalService.java b/src/main/java/com/weaver/seconddev/portal/service/ManagerPortalService.java index 50cf88f..6d0e849 100644 --- a/src/main/java/com/weaver/seconddev/portal/service/ManagerPortalService.java +++ b/src/main/java/com/weaver/seconddev/portal/service/ManagerPortalService.java @@ -56,6 +56,8 @@ public interface ManagerPortalService { */ WeaResult> getTeamMemorialDay(Map params); + WeaResult getTeamMemorialDaySql(Map params); + /** * 数据看板 diff --git a/src/main/java/com/weaver/seconddev/portal/service/impl/ManagerPortalServiceImpl.java b/src/main/java/com/weaver/seconddev/portal/service/impl/ManagerPortalServiceImpl.java index 5fd5bcb..09f2ec8 100644 --- a/src/main/java/com/weaver/seconddev/portal/service/impl/ManagerPortalServiceImpl.java +++ b/src/main/java/com/weaver/seconddev/portal/service/impl/ManagerPortalServiceImpl.java @@ -20,6 +20,7 @@ import com.weaver.seconddev.portal.mapper.ManagerPortalMapper; import com.weaver.seconddev.portal.mapper.PortalMapper; import com.weaver.seconddev.portal.service.ManagerPortalService; import com.weaver.seconddev.portal.util.DateUtil; +import com.weaver.seconddev.portal.util.StringUtil; import com.weaver.teams.security.context.UserContext; import com.weaver.teams.security.user.User; import com.weaver.workflow.common.cfg.org.service.DepartMentService; @@ -236,17 +237,59 @@ public class ManagerPortalServiceImpl implements ManagerPortalService { Map returnMap = new HashMap<>(); // 生日提醒 returnMap.put("birthdayNum", birthdayNum); - returnMap.put("birthdayNumUrl", urlMap.get("birthdayNum")); + returnMap.put("birthdayNumUrl", urlMap.get("birthdayNum") + "?dataKey=birthdayNum"); // 转正日期 returnMap.put("regularEmployeeNum", regularEmployeeNum); - returnMap.put("regularEmployeeNumUrl", urlMap.get("regularEmployeeNum")); + returnMap.put("regularEmployeeNumUrl", urlMap.get("regularEmployeeNum") + "?dataKey=regularEmployeeNum"); // 入职周年提醒 returnMap.put("employmentAnniversary", employmentAnniversary); - returnMap.put("employmentAnniversaryUrl", urlMap.get("employmentAnniversary")); + returnMap.put("employmentAnniversaryUrl", urlMap.get("employmentAnniversary") + "?dataKey=employmentAnniversary"); return WeaResult.success(returnMap); } + @Override + public WeaResult getTeamMemorialDaySql(Map params) { + String dataKey = params.get("dataKey"); + log.error("params==={}", JSON.toJSONString(params)); + User currentUser = UserContext.getCurrentUser(); + BasicPersonnelParam basicPersonnelParam = new BasicPersonnelParam(); + basicPersonnelParam.setTenantKey(currentUser.getTenantKey()); + Set allDepartmentIdList = getAllDepartmentIdList(basicPersonnelParam, currentUser.getEmployeeId()); + StringJoiner andCondition = new StringJoiner(" and "); + switch (dataKey) { + case "birthdayNum": + // 生日提醒 + if (CollectionUtils.isNotEmpty(allDepartmentIdList)) { + andCondition.add(" t1.department in (" + StringUtils.join(allDepartmentIdList, ",") + ") "); + } + andCondition.add(" ( ( DATE_FORMAT(t1.birthday, '%m-%d') BETWEEN DATE_FORMAT(CURDATE(), '%m-%d') AND DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL 7 DAY), '%m-%d') ) OR ( DATE_FORMAT(CURDATE(), '%m-%d') > DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL 7 DAY), '%m-%d') AND ( DATE_FORMAT(birthday, '%m-%d') >= DATE_FORMAT(CURDATE(), '%m-%d') OR DATE_FORMAT(t1.birthday, '%m-%d') <= DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL 7 DAY), '%m-%d') ) ) ) "); + + break; + case "regularEmployeeNum": + // 转正日期 + if (CollectionUtils.isNotEmpty(allDepartmentIdList)) { + andCondition.add(" t1.department in (" + StringUtils.join(allDepartmentIdList, ",") + ") "); + } + andCondition.add(" t1.yjsyjsrq IS NOT NULL AND ( STR_TO_DATE(CONCAT(YEAR(CURDATE()), '-', DATE_FORMAT(t1.yjsyjsrq, '%m-%d')), '%Y-%m-%d') BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 60 DAY) OR STR_TO_DATE(CONCAT(YEAR(CURDATE()) + 1, '-', DATE_FORMAT(t1.yjsyjsrq, '%m-%d')), '%Y-%m-%d') BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 60 DAY) ) "); + + break; + case "employmentAnniversary": + // 入职周年提醒 + if (CollectionUtils.isNotEmpty(allDepartmentIdList)) { + andCondition.add(" t1.department in (" + StringUtils.join(allDepartmentIdList, ",") + ") "); + } + andCondition.add(" ( ( DATE_FORMAT(t1.hiredate, '%m-%d') between DATE_FORMAT(CURDATE(), '%m-%d') and DATE_FORMAT(DATE_ADD(CURDATE(), interval 7 day), '%m-%d') ) or ( DATE_FORMAT(CURDATE(), '%m-%d') & gt; DATE_FORMAT(DATE_ADD(CURDATE(), interval 7 day), '%m-%d') and ( DATE_FORMAT(t1.hiredate, '%m-%d') & gt; = DATE_FORMAT(CURDATE(), '%m-%d') or DATE_FORMAT(t1.hiredate, '%m-%d') & lt; = DATE_FORMAT(DATE_ADD(CURDATE(), interval 7 day), '%m-%d') ) ) ) "); + break; + default: + break; + } + String replaceSql = StringUtil.buildSqlCondition(andCondition.toString()); + log.error("replaceSql==={}", replaceSql); + return WeaResult.success(replaceSql); + + } + @Override public WeaResult> getEducationInfo(Map params) { diff --git a/src/main/java/com/weaver/seconddev/portal/util/StringUtil.java b/src/main/java/com/weaver/seconddev/portal/util/StringUtil.java new file mode 100644 index 0000000..b5c0912 --- /dev/null +++ b/src/main/java/com/weaver/seconddev/portal/util/StringUtil.java @@ -0,0 +1,36 @@ +package com.weaver.seconddev.portal.util; + +import org.apache.commons.lang.StringUtils; + +/** + * @author:dxfeng + * @createTime: 2025/07/17 + * @version: 1.0 + */ +public class StringUtil { + /** + * XML转义字符处理 + * + * @param input + * @return + */ + public static String unescapeXml(String input) { + if (input == null) { + return null; + } + // 替换常见的XML转义字符 + return input.replace("<", "<") + .replace(">", ">") + .replace("&", "&") + .replace(""", "\"") + .replace("'", "'"); + } + + + public static String buildSqlCondition(String sql) { + if (StringUtils.isBlank(sql)) { + return ""; + } + return unescapeXml(sql); + } +}