From c21e4bb9d88d0cbd0a444e0bc597764eebb6e357 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Thu, 17 Jul 2025 10:33:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(portal):=20=E5=A2=9E=E5=8A=A0=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E4=BA=BA=E4=BA=8BSQL=E6=9F=A5=E8=AF=A2=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 getBasicPersonnelSql 接口和实现方法 - 添加不同数据指标的 SQL 查询条件 - 优化在职人数、年度离职人数等查询的 URL 参数 -移除了一些不必要的日志输出 --- .../controller/ManagerPortalController.java | 5 ++ .../portal/service/ManagerPortalService.java | 8 +++ .../impl/EmployeePortalServiceImpl.java | 3 - .../impl/ManagerPortalServiceImpl.java | 71 +++++++++++++++++-- .../resources/mapper/ManagerPortalMapper.xml | 12 ++++ 5 files changed, 91 insertions(+), 8 deletions(-) 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 516f41a..678ebb4 100644 --- a/src/main/java/com/weaver/seconddev/portal/controller/ManagerPortalController.java +++ b/src/main/java/com/weaver/seconddev/portal/controller/ManagerPortalController.java @@ -43,6 +43,11 @@ public class ManagerPortalController { return managerPortalService.getBasicPersonnel(params); } + @PostMapping("/getBasicPersonnelSql") + private WeaResult getBasicPersonnelSql(@RequestBody Map params) { + return managerPortalService.getBasicPersonnelSql(params); + } + @PostMapping("/getTeamMemorialDay") private WeaResult> getTeamMemorialDay(@RequestBody Map params) { return managerPortalService.getTeamMemorialDay(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 590c7f6..50cf88f 100644 --- a/src/main/java/com/weaver/seconddev/portal/service/ManagerPortalService.java +++ b/src/main/java/com/weaver/seconddev/portal/service/ManagerPortalService.java @@ -39,6 +39,14 @@ public interface ManagerPortalService { */ WeaResult> getBasicPersonnel(Map params); + /** + * 基础人事SQL + * + * @param params + * @return + */ + WeaResult getBasicPersonnelSql(Map params); + /** * 团队纪念日 diff --git a/src/main/java/com/weaver/seconddev/portal/service/impl/EmployeePortalServiceImpl.java b/src/main/java/com/weaver/seconddev/portal/service/impl/EmployeePortalServiceImpl.java index cdeeb56..c2de990 100644 --- a/src/main/java/com/weaver/seconddev/portal/service/impl/EmployeePortalServiceImpl.java +++ b/src/main/java/com/weaver/seconddev/portal/service/impl/EmployeePortalServiceImpl.java @@ -70,20 +70,17 @@ public class EmployeePortalServiceImpl implements EmployeePortalService { employeeBasicInfoPo.setEmployeeId(currentUser.getEmployeeId()); SimpleEmployee byId = hrmCommonEmployeeDao.getById(currentUser.getEmployeeId()); - log.error("byId===" + JSON.toJSONString(byId)); Avatar avatar = byId.getAvatar(); employeeBasicInfoPo.setAvatar(avatar); employeeBasicInfoPo.setUserName(byId.getUsername()); employeeBasicInfoPo.setWorkCode(byId.getJobNum()); WeaDepartMent departmentById = departMentService.getDepartMentById(byId.getDepartmentId()); - log.error("departmentById===" + departmentById); employeeBasicInfoPo.setCompanyName(null != departmentById ? departmentById.getDepartMentName() : ""); employeeBasicInfoPo.setHireDate(byId.getHiredate()); employeeBasicInfoPo.setEmployeeStatus(PersonnelStatusEnum.getShowNameByValue(byId.getPersonnelStatus())); SimpleEmployee superior = byId.getSuperior(); - log.error("superior===" + JSON.toJSONString(superior)); employeeBasicInfoPo.setDirectSuperior(null != superior ? superior.getUsername() : ""); 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 a71325d..5fd5bcb 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 @@ -1,6 +1,7 @@ package com.weaver.seconddev.portal.service.impl; import cn.hutool.core.convert.Convert; +import com.alibaba.fastjson.JSON; import com.weaver.common.base.entity.result.WeaResult; import com.weaver.common.form.datasource.FormdataTemplateDetails; import com.weaver.common.form.metadata.field.FormField; @@ -126,25 +127,85 @@ public class ManagerPortalServiceImpl implements ManagerPortalService { // 在职人数 returnMap.put("onJobNumber", onJobNum); - returnMap.put("onJobNumberUrl", urlMap.get("onJobNumber")); + returnMap.put("onJobNumberUrl", urlMap.get("onJobNumber") + "?dataKey=onJobNumber&startDate=" + basicPersonnelParam.getStartDate() + "&endDate=" + basicPersonnelParam.getEndDate()); // 年度离职人数 returnMap.put("resignNumber", resignNumber); - returnMap.put("resignNumberUrl", urlMap.get("resignNumber")); + returnMap.put("resignNumberUrl", urlMap.get("resignNumber") + "?dataKey=resignNumber&startDate=" + basicPersonnelParam.getStartDate() + "&endDate=" + basicPersonnelParam.getEndDate()); // 年度入职人数 returnMap.put("entryNumber", entryNumber); - returnMap.put("entryNumberUrl", urlMap.get("entryNumber")); + returnMap.put("entryNumberUrl", urlMap.get("entryNumber") + "?dataKey=entryNumber&startDate=" + basicPersonnelParam.getStartDate() + "&endDate=" + basicPersonnelParam.getEndDate()); // 离职流程中人数 returnMap.put("resigningNumber", resigningNumber); - returnMap.put("resigningNumberUrl", urlMap.get("resigningNumber")); + returnMap.put("resigningNumberUrl", urlMap.get("resigningNumber") + "?dataKey=resigningNumber&startDate=" + basicPersonnelParam.getStartDate() + "&endDate=" + basicPersonnelParam.getEndDate()); // 入职流程中人数 returnMap.put("entryingNumber", entryingNumber); - returnMap.put("entryingNumberUrl", urlMap.get("entryingNumber")); + returnMap.put("entryingNumberUrl", urlMap.get("entryingNumber") + "?dataKey=entryingNumber&startDate=" + basicPersonnelParam.getStartDate() + "&endDate=" + basicPersonnelParam.getEndDate()); return WeaResult.success(returnMap); } + @Override + public WeaResult getBasicPersonnelSql(Map params) { + String dataKey = params.get("dataKey"); + String startDate = params.get("startDate"); + String endDate = params.get("endDate"); + 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 "onJobNumber": + // 在职人数 + if (CollectionUtils.isNotEmpty(allDepartmentIdList)) { + andCondition.add(" t1.department in (" + StringUtils.join(allDepartmentIdList, ",") + ") "); + } + andCondition.add(" t1.hiredate <= #{endDate} AND (t1.zhgzr >= #{startDate} OR t1.zhgzr IS NULL OR t1.zhgzr = '') "); + break; + case "resignNumber": + // 年度离职人数 + andCondition.add(" t1.lzzt = 1 "); + if (CollectionUtils.isNotEmpty(allDepartmentIdList)) { + andCondition.add(" t1.lzqbm in (" + StringUtils.join(allDepartmentIdList, ",") + ") "); + } + andCondition.add(" t1.zhgzr >= #{startDate} and t1.zhgzr <= #{endDate} "); + break; + case "entryNumber": + // 年度入职人数 + andCondition.add(" t1.rzzt = 1 "); + if (CollectionUtils.isNotEmpty(allDepartmentIdList)) { + andCondition.add(" t1.department in (" + StringUtils.join(allDepartmentIdList, ",") + ") "); + } + andCondition.add(" t1.hiredate >= #{startDate} and t1.hiredate <= #{endDate} "); + break; + case "resigningNumber": + // 离职流程中人数 + andCondition.add(" t1.flow_status in (0,1,2) "); + if (CollectionUtils.isNotEmpty(allDepartmentIdList)) { + andCondition.add(" t1.lzqbm in (" + StringUtils.join(allDepartmentIdList, ",") + ") "); + } + andCondition.add(" t1.sqrq >= #{startDate} and t1.sqrq <= #{endDate} "); + break; + case "entryingNumber": + // 入职流程中人数 + andCondition.add(" t1.flow_status in (0,1,2) "); + if (CollectionUtils.isNotEmpty(allDepartmentIdList)) { + andCondition.add(" t1.ssbm in (" + StringUtils.join(allDepartmentIdList, ",") + ") "); + } + andCondition.add(" t1.sqsj >= #{startDate} and t1.sqsj <= #{endDate} "); + break; + default: + break; + } + + String replaceSql = andCondition.toString().replace("#{startDate}", "'" + startDate + "'").replace("#{endDate}", "'" + endDate + "'"); + log.error("replaceSql==={}", replaceSql); + return WeaResult.success(replaceSql); + } + /** * 生日提醒:提前一周 * 转正提醒:提前30天 diff --git a/src/main/resources/mapper/ManagerPortalMapper.xml b/src/main/resources/mapper/ManagerPortalMapper.xml index 2cb74e6..d56770a 100644 --- a/src/main/resources/mapper/ManagerPortalMapper.xml +++ b/src/main/resources/mapper/ManagerPortalMapper.xml @@ -39,6 +39,12 @@ select count(t.id) from ${e10_common}.uf_jcl_rzsq t where t.delete_type = 0 and t.tenant_key = #{tenantKey} + + AND t.ssbm IN + + #{departmentId} + + and t.flow_status in (0,1,2)