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); + } +}