generated from dxfeng/secondev-wugang-dxfeng
feat(portal): 增加团队纪念日 SQL 接口并优化相关功能
- 新增 getTeamMemorialDaySql 接口,用于获取团队纪念日的 SQL 语句 - 优化 getTeamMemorialDay 接口,为 URL 添加 dataKey 参数 - 新增 StringUtil 工具类,用于 XML 转义字符处理和 SQL 条件构建
This commit is contained in:
parent
c21e4bb9d8
commit
a66e1b9073
|
|
@ -52,6 +52,10 @@ public class ManagerPortalController {
|
|||
private WeaResult<Map<String, Object>> getTeamMemorialDay(@RequestBody Map<String, String> params) {
|
||||
return managerPortalService.getTeamMemorialDay(params);
|
||||
}
|
||||
@PostMapping("/getTeamMemorialDaySql")
|
||||
private WeaResult<String> getTeamMemorialDaySql(@RequestBody Map<String, String> params) {
|
||||
return managerPortalService.getTeamMemorialDaySql(params);
|
||||
}
|
||||
|
||||
@PostMapping("/getEducationInfo")
|
||||
private WeaResult<Map<String, Object>> getEducationInfo(@RequestBody Map<String, String> params) {
|
||||
|
|
|
|||
|
|
@ -56,6 +56,8 @@ public interface ManagerPortalService {
|
|||
*/
|
||||
WeaResult<Map<String, Object>> getTeamMemorialDay(Map<String, String> params);
|
||||
|
||||
WeaResult<String> getTeamMemorialDaySql(Map<String, String> params);
|
||||
|
||||
|
||||
/**
|
||||
* 数据看板
|
||||
|
|
|
|||
|
|
@ -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<String, Object> 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<String> getTeamMemorialDaySql(Map<String, String> 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<Long> 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<Map<String, Object>> getEducationInfo(Map<String, String> params) {
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue