From 7def6959626365c7fdf5490f84e6c0ab1cf75a85 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Wed, 9 Jul 2025 15:29:26 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=86=E5=AF=BC=E9=A9=BE=E9=A9=B6=E8=88=B1?= =?UTF-8?q?=201=E3=80=81=E9=83=A8=E9=97=A8=E6=9F=A5=E8=AF=A2=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E8=B0=83=E6=95=B4=202=E3=80=81=E5=8F=B0=E8=B4=A6?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E5=86=85=E5=AE=B9=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/param/SearchConditionParam.java | 5 + .../portal/entity/po/PortalData.java | 2 + .../portal/mapper/LeaderCockpitMapper.java | 37 +++-- .../impl/LeaderCockpitServiceImpl.java | 144 +++++++++++------- .../seconddev/portal/util/DateUtil.java | 16 ++ .../resources/mapper/LeaderCockpitMapper.xml | 87 ++++++++--- 6 files changed, 199 insertions(+), 92 deletions(-) diff --git a/src/main/java/com/weaver/seconddev/portal/entity/param/SearchConditionParam.java b/src/main/java/com/weaver/seconddev/portal/entity/param/SearchConditionParam.java index 361e7ef..8a246bc 100644 --- a/src/main/java/com/weaver/seconddev/portal/entity/param/SearchConditionParam.java +++ b/src/main/java/com/weaver/seconddev/portal/entity/param/SearchConditionParam.java @@ -2,6 +2,8 @@ package com.weaver.seconddev.portal.entity.param; import lombok.Data; +import java.util.Set; + /** * @author:dxfeng * @createTime: 2025/07/07 @@ -11,9 +13,12 @@ import lombok.Data; public class SearchConditionParam { private String tenantKey; private String departmentId; + private Set departmentIdList; private String searchDate; private String startDate; private String endDate; + + private Set selectDepartmentId; /** * 是否关键人员 */ diff --git a/src/main/java/com/weaver/seconddev/portal/entity/po/PortalData.java b/src/main/java/com/weaver/seconddev/portal/entity/po/PortalData.java index 05de3bc..2cdfef7 100644 --- a/src/main/java/com/weaver/seconddev/portal/entity/po/PortalData.java +++ b/src/main/java/com/weaver/seconddev/portal/entity/po/PortalData.java @@ -15,4 +15,6 @@ public class PortalData { private String posi; private String leader; private String count; + private Integer all; + private Integer key; } diff --git a/src/main/java/com/weaver/seconddev/portal/mapper/LeaderCockpitMapper.java b/src/main/java/com/weaver/seconddev/portal/mapper/LeaderCockpitMapper.java index 7d259b8..b52f979 100644 --- a/src/main/java/com/weaver/seconddev/portal/mapper/LeaderCockpitMapper.java +++ b/src/main/java/com/weaver/seconddev/portal/mapper/LeaderCockpitMapper.java @@ -6,7 +6,9 @@ import com.weaver.seconddev.portal.entity.po.Position; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.Collection; import java.util.List; +import java.util.Set; /** * @author:dxfeng @@ -31,72 +33,83 @@ public interface LeaderCockpitMapper { * @return */ int getOnJobCount(SearchConditionParam conditionParam); + /** * 查询入职人数 * * @param tenantKey - * @param departmentId + * @param departmentIdList * @param startDate * @param endDate * @return */ - int getEmploymentCount(@Param("tenantKey") String tenantKey, @Param("departmentId") String departmentId, @Param("startDate") String startDate, @Param("endDate") String endDate); + int getEmploymentCount(@Param("tenantKey") String tenantKey, @Param("departmentIdList") Collection departmentIdList, @Param("startDate") String startDate, @Param("endDate") String endDate); /** * 查询入职人数列表 + * * @param tenantKey - * @param departmentId + * @param departmentIdList * @param startDate * @param endDate * @return */ - List getEmploymentListByPosition(@Param("tenantKey") String tenantKey, @Param("departmentId") String departmentId, @Param("startDate") String startDate, @Param("endDate") String endDate); + List getEmploymentListByPosition(@Param("tenantKey") String tenantKey, @Param("departmentIdList") Collection departmentIdList, @Param("startDate") String startDate, @Param("endDate") String endDate); /** * 查询关键入职人数 * * @param tenantKey - * @param departmentId + * @param departmentIdList * @param startDate * @param endDate * @return */ - int getKeyEmploymentCount(@Param("tenantKey") String tenantKey, @Param("departmentId") String departmentId, @Param("startDate") String startDate, @Param("endDate") String endDate); + int getKeyEmploymentCount(@Param("tenantKey") String tenantKey, @Param("departmentIdList") Collection departmentIdList, @Param("startDate") String startDate, @Param("endDate") String endDate); /** * 查询离职人数 * * @param tenantKey - * @param departmentId + * @param departmentIdList * @param startDate * @param endDate * @return */ - int getResignCount(@Param("tenantKey") String tenantKey, @Param("departmentId") String departmentId, @Param("startDate") String startDate, @Param("endDate") String endDate); + int getResignCount(@Param("tenantKey") String tenantKey, @Param("departmentIdList") Collection departmentIdList, @Param("startDate") String startDate, @Param("endDate") String endDate); /** * 查询关键离职人数 * * @param tenantKey - * @param departmentId + * @param departmentIdList * @param startDate * @param endDate * @return */ - int getKeyResignCount(@Param("tenantKey") String tenantKey, @Param("departmentId") String departmentId, @Param("startDate") String startDate, @Param("endDate") String endDate); + int getKeyResignCount(@Param("tenantKey") String tenantKey, @Param("departmentIdList") Collection departmentIdList, @Param("startDate") String startDate, @Param("endDate") String endDate); /** * 查询离职人数列表 + * * @param tenantKey - * @param departmentId + * @param departmentIdList * @param startDate * @param endDate * @return */ - List getResignListByPosition(@Param("tenantKey") String tenantKey, @Param("departmentId") String departmentId, @Param("startDate") String startDate, @Param("endDate") String endDate); + List getResignListByPosition(@Param("tenantKey") String tenantKey, @Param("departmentIdList") Collection departmentIdList, @Param("startDate") String startDate, @Param("endDate") String endDate); Position getPositionById(@Param("tenantKey") String tenantKey, @Param("positionId") String positionId); + /** + * 获取顶级部门id列表 + * + * @param tenantKey + * @return + */ + Set getTopDepartmentIds(@Param("tenantKey") String tenantKey); + } diff --git a/src/main/java/com/weaver/seconddev/portal/service/impl/LeaderCockpitServiceImpl.java b/src/main/java/com/weaver/seconddev/portal/service/impl/LeaderCockpitServiceImpl.java index 60f0ea1..27c7d8e 100644 --- a/src/main/java/com/weaver/seconddev/portal/service/impl/LeaderCockpitServiceImpl.java +++ b/src/main/java/com/weaver/seconddev/portal/service/impl/LeaderCockpitServiceImpl.java @@ -6,12 +6,13 @@ import com.weaver.common.hrm.dao.HrmCommonEmployeeDao; import com.weaver.seconddev.portal.entity.param.SearchConditionParam; import com.weaver.seconddev.portal.entity.po.PortalData; import com.weaver.seconddev.portal.entity.po.PortalPO; -import com.weaver.seconddev.portal.entity.po.Position; import com.weaver.seconddev.portal.mapper.LeaderCockpitMapper; import com.weaver.seconddev.portal.service.LeaderCockpitService; import com.weaver.seconddev.portal.util.DateUtil; import com.weaver.teams.security.StringUtils; import com.weaver.teams.security.context.UserContext; +import com.weaver.workflow.common.cfg.org.service.DepartMentService; +import com.weaver.workflow.common.entity.org.WeaDepartMent; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -36,6 +37,9 @@ public class LeaderCockpitServiceImpl implements LeaderCockpitService { @Autowired HrmCommonEmployeeDao hrmCommonEmployeeDao; + @Autowired + DepartMentService departMentService; + @Override public WeaResult> getOnJobNumber(Map params) { SearchConditionParam searchConditionParam = new SearchConditionParam(); @@ -58,9 +62,9 @@ public class LeaderCockpitServiceImpl implements LeaderCockpitService { // 查询范围内在职人员 int onJobCount = leaderCockpitMapper.getOnJobCount(searchConditionParam); // 查询范围内离职人员 - int resignCount = leaderCockpitMapper.getResignCount(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentId(), searchConditionParam.getStartDate(), searchConditionParam.getEndDate()); + int resignCount = leaderCockpitMapper.getResignCount(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentIdList(), searchConditionParam.getStartDate(), searchConditionParam.getEndDate()); // 查询关键离职率 - int keyResignCount = leaderCockpitMapper.getKeyResignCount(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentId(), searchConditionParam.getStartDate(), searchConditionParam.getEndDate()); + int keyResignCount = leaderCockpitMapper.getKeyResignCount(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentIdList(), searchConditionParam.getStartDate(), searchConditionParam.getEndDate()); // 计算离职率 double turnoverRate = calculateRate(keyResignCount, onJobCount); //TODO 计算关键离职率 @@ -97,47 +101,51 @@ public class LeaderCockpitServiceImpl implements LeaderCockpitService { String month = DateUtil.formatToYearMonth_ZH(localDate); Map allDataMap = new LinkedHashMap<>(3); Map keyDataMap = new LinkedHashMap<>(3); - allDataMap.put(month, leaderCockpitMapper.getEmploymentCount(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentId(), searchConditionParam.getStartDate(), searchConditionParam.getEndDate())); - keyDataMap.put(month, leaderCockpitMapper.getKeyEmploymentCount(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentId(), searchConditionParam.getStartDate(), searchConditionParam.getEndDate())); + allDataMap.put(month, leaderCockpitMapper.getEmploymentCount(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentIdList(), searchConditionParam.getStartDate(), searchConditionParam.getEndDate())); + keyDataMap.put(month, leaderCockpitMapper.getKeyEmploymentCount(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentIdList(), searchConditionParam.getStartDate(), searchConditionParam.getEndDate())); String firstDayOfMonthStr = DateUtil.getFirstDayOfPreviousMonthStr(searchConditionParam.getStartDate()); String lastDayOfMonthStr = DateUtil.getLastDayOfPreviousMonthStr(searchConditionParam.getEndDate()); // 前面5个月 for (int i = 1; i < 7; i++) { - allDataMap.put(DateUtil.formatToYearMonth_ZH(firstDayOfMonthStr), leaderCockpitMapper.getEmploymentCount(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentId(), firstDayOfMonthStr, lastDayOfMonthStr)); - keyDataMap.put(DateUtil.formatToYearMonth_ZH(firstDayOfMonthStr), leaderCockpitMapper.getKeyEmploymentCount(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentId(), firstDayOfMonthStr, lastDayOfMonthStr)); + allDataMap.put(DateUtil.formatToYearMonth_ZH(firstDayOfMonthStr), leaderCockpitMapper.getEmploymentCount(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentIdList(), firstDayOfMonthStr, lastDayOfMonthStr)); + keyDataMap.put(DateUtil.formatToYearMonth_ZH(firstDayOfMonthStr), leaderCockpitMapper.getKeyEmploymentCount(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentIdList(), firstDayOfMonthStr, lastDayOfMonthStr)); firstDayOfMonthStr = DateUtil.getFirstDayOfPreviousMonthStr(searchConditionParam.getStartDate(), i); lastDayOfMonthStr = DateUtil.getLastDayOfPreviousMonthStr(searchConditionParam.getEndDate(), i); } // 查询台账 String currentMonth = DateUtil.formatToYearMonth(searchConditionParam.getStartDate()); - List employmentListByPosition = leaderCockpitMapper.getEmploymentListByPosition(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentId(), searchConditionParam.getStartDate(), searchConditionParam.getEndDate()); - List portalList = new ArrayList<>(); - for (PortalPO portal : employmentListByPosition) { - PortalData portalData = new PortalData(); - portalData.setDate(currentMonth); - portalData.setCount(portal.getName()); - String positionId = portal.getValue(); - // 获取岗位名称 - Position positionById = leaderCockpitMapper.getPositionById(searchConditionParam.getTenantKey(), positionId); - log.error("positionById==" + JSON.toJSONString(positionById)); - portalData.setPosi(positionById.getPositionName()); - portalData.setDepart(positionById.getDepartmentName()); - portalData.setLeader(positionById.getGradeName()); - portalList.add(portalData); + Set selectDepartmentId = searchConditionParam.getSelectDepartmentId(); + log.error("selectDepartmentId===" + JSON.toJSONString(selectDepartmentId)); + if (CollectionUtils.isEmpty(selectDepartmentId)) { + // 未选择部门,查询所有一级部门数据 + selectDepartmentId = leaderCockpitMapper.getTopDepartmentIds(searchConditionParam.getTenantKey()); + log.error("topDepartmentId===" + JSON.toJSONString(selectDepartmentId)); } - // TODO - if (CollectionUtils.isEmpty(portalList)) { + + // 查询每个部门 时间范围内的入职人数 + List portalList = new ArrayList<>(); + for (Long topDepartmentId : selectDepartmentId) { + List beLongDeps = departMentService.getBeLongDeps(topDepartmentId, searchConditionParam.getTenantKey(), false); + beLongDeps.add(topDepartmentId); + WeaDepartMent departMentById = departMentService.getDepartMentById(topDepartmentId); PortalData portalData = new PortalData(); portalData.setDate(currentMonth); - portalData.setLeader("M1"); - portalData.setPosi("人事经理"); - portalData.setDepart("薪酬绩效组"); + portalData.setDepart(departMentById.getDepartMentName()); + // 关键 + int keyEmploymentCount = leaderCockpitMapper.getKeyEmploymentCount(searchConditionParam.getTenantKey(), beLongDeps, searchConditionParam.getStartDate(), searchConditionParam.getEndDate()); + // 非关键 + int employmentCount = leaderCockpitMapper.getEmploymentCount(searchConditionParam.getTenantKey(), beLongDeps, searchConditionParam.getStartDate(), searchConditionParam.getEndDate()); + portalData.setKey(keyEmploymentCount); + portalData.setAll(employmentCount); portalList.add(portalData); } + // portalList按照all排序 + portalList.sort((o1, o2) -> o2.getAll().compareTo(o1.getAll())); + Map returnMap = new HashMap<>(3); returnMap.put("dataSource", portalList); returnMap.put("all", allDataMap); @@ -160,48 +168,49 @@ public class LeaderCockpitServiceImpl implements LeaderCockpitService { String month = DateUtil.formatToYearMonth_ZH(localDate); Map allDataMap = new LinkedHashMap<>(3); Map keyDataMap = new LinkedHashMap<>(3); - allDataMap.put(month, leaderCockpitMapper.getResignCount(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentId(), searchConditionParam.getStartDate(), searchConditionParam.getEndDate())); - keyDataMap.put(month, leaderCockpitMapper.getKeyResignCount(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentId(), searchConditionParam.getStartDate(), searchConditionParam.getEndDate())); + allDataMap.put(month, leaderCockpitMapper.getResignCount(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentIdList(), searchConditionParam.getStartDate(), searchConditionParam.getEndDate())); + keyDataMap.put(month, leaderCockpitMapper.getKeyResignCount(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentIdList(), searchConditionParam.getStartDate(), searchConditionParam.getEndDate())); String firstDayOfMonthStr = DateUtil.getFirstDayOfPreviousMonthStr(searchConditionParam.getStartDate()); String lastDayOfMonthStr = DateUtil.getLastDayOfPreviousMonthStr(searchConditionParam.getEndDate()); // 前两个月 for (int i = 1; i < 4; i++) { - allDataMap.put(DateUtil.formatToYearMonth_ZH(firstDayOfMonthStr), leaderCockpitMapper.getResignCount(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentId(), firstDayOfMonthStr, lastDayOfMonthStr)); - keyDataMap.put(DateUtil.formatToYearMonth_ZH(firstDayOfMonthStr), leaderCockpitMapper.getKeyResignCount(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentId(), firstDayOfMonthStr, lastDayOfMonthStr)); + allDataMap.put(DateUtil.formatToYearMonth_ZH(firstDayOfMonthStr), leaderCockpitMapper.getResignCount(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentIdList(), firstDayOfMonthStr, lastDayOfMonthStr)); + keyDataMap.put(DateUtil.formatToYearMonth_ZH(firstDayOfMonthStr), leaderCockpitMapper.getKeyResignCount(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentIdList(), firstDayOfMonthStr, lastDayOfMonthStr)); firstDayOfMonthStr = DateUtil.getFirstDayOfPreviousMonthStr(searchConditionParam.getStartDate(), i); lastDayOfMonthStr = DateUtil.getLastDayOfPreviousMonthStr(searchConditionParam.getEndDate(), i); } - // 查询 String currentMonth = DateUtil.formatToYearMonth(searchConditionParam.getStartDate()); - List resignListByPosition = leaderCockpitMapper.getResignListByPosition(searchConditionParam.getTenantKey(), searchConditionParam.getDepartmentId(), searchConditionParam.getStartDate(), searchConditionParam.getEndDate()); + Set selectDepartmentId = searchConditionParam.getSelectDepartmentId(); + log.error("selectDepartmentId===" + JSON.toJSONString(selectDepartmentId)); + if (CollectionUtils.isEmpty(selectDepartmentId)) { + // 未选择部门,查询所有一级部门数据 + selectDepartmentId = leaderCockpitMapper.getTopDepartmentIds(searchConditionParam.getTenantKey()); + log.error("topDepartmentId===" + JSON.toJSONString(selectDepartmentId)); + } + // 查询每个部门 时间范围内的离职人数 List portalList = new ArrayList<>(); - for (PortalPO portal : resignListByPosition) { + for (Long topDepartmentId : selectDepartmentId) { + List beLongDeps = departMentService.getBeLongDeps(topDepartmentId, searchConditionParam.getTenantKey(), false); + beLongDeps.add(topDepartmentId); + WeaDepartMent departMentById = departMentService.getDepartMentById(topDepartmentId); PortalData portalData = new PortalData(); portalData.setDate(currentMonth); - portalData.setCount(portal.getName()); - String positionId = portal.getValue(); - // 获取岗位名称 - Position positionById = leaderCockpitMapper.getPositionById(searchConditionParam.getTenantKey(), positionId); - log.error("positionById==" + JSON.toJSONString(positionById)); + portalData.setDepart(departMentById.getDepartMentName()); + // 关键 + int keyEmploymentCount = leaderCockpitMapper.getKeyResignCount(searchConditionParam.getTenantKey(), beLongDeps, searchConditionParam.getStartDate(), searchConditionParam.getEndDate()); + // 非关键 + int employmentCount = leaderCockpitMapper.getResignCount(searchConditionParam.getTenantKey(), beLongDeps, searchConditionParam.getStartDate(), searchConditionParam.getEndDate()); + portalData.setKey(keyEmploymentCount); + portalData.setAll(employmentCount); + portalList.add(portalData); + } - portalData.setPosi(positionById.getPositionName()); - portalData.setDepart(positionById.getDepartmentName()); - portalData.setLeader(positionById.getGradeName()); - portalList.add(portalData); - } - // TODO - if (CollectionUtils.isEmpty(portalList)) { - PortalData portalData = new PortalData(); - portalData.setDate(currentMonth); - portalData.setLeader("M1"); - portalData.setPosi("人事经理"); - portalData.setDepart("薪酬绩效组"); - portalList.add(portalData); - } + // portalList按照all排序 + portalList.sort((o1, o2) -> o2.getAll().compareTo(o1.getAll())); Map returnMap = new HashMap<>(3); @@ -235,14 +244,35 @@ public class LeaderCockpitServiceImpl implements LeaderCockpitService { * @param params * @param beforeMonth */ - private static void initSearchConditionParam(SearchConditionParam searchConditionParam, Map params, Integer beforeMonth) { + private void initSearchConditionParam(SearchConditionParam searchConditionParam, Map params, Integer beforeMonth) { String searchDate = params.get("searchDate"); String departmentId = params.get("departmentId"); // 租户 searchConditionParam.setTenantKey(UserContext.getCurrentUser().getTenantKey()); // 部门 - searchConditionParam.setDepartmentId(departmentId); + //searchConditionParam.setDepartmentId(departmentId); + + // 获取部门下的所有子部门 + if (StringUtils.isNotBlank(departmentId)) { + Set deptIdSet = new HashSet<>(); + Set selectDepartmentId = new HashSet<>(); + String[] split = departmentId.split(","); + for (String s : split) { + if (StringUtils.isBlank(s)) { + continue; + } + long parseLong = Long.parseLong(s); + log.error("parseLong===" + parseLong); + selectDepartmentId.add(parseLong); + List beLongDeps = departMentService.getBeLongDeps(parseLong, searchConditionParam.getTenantKey(), false); + beLongDeps.add(parseLong); + log.error("beLongDeps===" + JSON.toJSONString(beLongDeps)); + deptIdSet.addAll(beLongDeps); + } + searchConditionParam.setDepartmentIdList(deptIdSet); + searchConditionParam.setSelectDepartmentId(selectDepartmentId); + } // 处理截止日期 String endDateStr; @@ -262,7 +292,7 @@ public class LeaderCockpitServiceImpl implements LeaderCockpitService { // 处理开始日期 if (beforeMonth == null) { // 查询当前年度数据 - searchConditionParam.setStartDate(DateUtil.getFirstDayOfYearStr()); + searchConditionParam.setStartDate(DateUtil.getFirstDayOfYearStr(searchConditionParam.getEndDate())); } else { // 查询前N个月数据 try { @@ -270,8 +300,8 @@ public class LeaderCockpitServiceImpl implements LeaderCockpitService { LocalDate startDate = endDate.minusMonths(beforeMonth); searchConditionParam.setStartDate(DateUtil.getFirstDayOfMonthStr(DateUtil.formatDate(startDate))); } catch (Exception e) { - log.error("计算开始日期失败,使用当前年度第一天", e); - searchConditionParam.setStartDate(DateUtil.getFirstDayOfYearStr()); + log.error("计算开始日期失败,使用所选日期年度第一天", e); + searchConditionParam.setStartDate(searchConditionParam.getEndDate()); } } } diff --git a/src/main/java/com/weaver/seconddev/portal/util/DateUtil.java b/src/main/java/com/weaver/seconddev/portal/util/DateUtil.java index add15ce..b99b512 100644 --- a/src/main/java/com/weaver/seconddev/portal/util/DateUtil.java +++ b/src/main/java/com/weaver/seconddev/portal/util/DateUtil.java @@ -14,6 +14,8 @@ import java.util.Date; public class DateUtil { + private static final DateTimeFormatter DEFAULT_YEAR_FORMATTER = DateTimeFormatter.ofPattern("yyyy"); + private static final DateTimeFormatter DEFAULT_MONTH_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM"); private static final DateTimeFormatter DEFAULT_DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); private static final DateTimeFormatter DEFAULT_DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); @@ -23,6 +25,12 @@ public class DateUtil { public static String getCurrentDateStr() { return LocalDate.now().format(DEFAULT_DATE_FORMATTER); } + public static String getCurrentYearStr() { + return LocalDate.now().format(DEFAULT_YEAR_FORMATTER); + } + public static String getCurrentMonthStr() { + return LocalDate.now().format(DEFAULT_MONTH_FORMATTER); + } /** * 获取当前日期时间字符串 (yyyy-MM-dd HH:mm:ss) @@ -78,6 +86,14 @@ public class DateUtil { return LocalDate.now().withMonth(1).withDayOfMonth(1).format(DEFAULT_DATE_FORMATTER); } + public static String getFirstDayOfYearStr(String dateStr) { + LocalDate date = parseDate(dateStr); + if (date == null) { + return null; + } + return date.withMonth(1).withDayOfMonth(1).format(DEFAULT_DATE_FORMATTER); + } + /** * 获取当前年度最后一天的字符串 diff --git a/src/main/resources/mapper/LeaderCockpitMapper.xml b/src/main/resources/mapper/LeaderCockpitMapper.xml index 99000e8..249ef2f 100644 --- a/src/main/resources/mapper/LeaderCockpitMapper.xml +++ b/src/main/resources/mapper/LeaderCockpitMapper.xml @@ -4,30 +4,45 @@ select count(id) as value from e10_common.uf_jcl_lzxxjl t where t.delete_type = 0 and t.tenant_key = #{tenantKey} - - and t.department = #{departmentId} + + AND t.department IN + + #{departmentId} + and t.sfgjrc = 1 and t.zhgzr >= #{startDate} @@ -46,8 +64,11 @@ select count(id) as value from e10_common.uf_jcl_rzgl t where t.delete_type = 0 and t.tenant_key = #{tenantKey} - - and t.department = #{departmentId} + + AND t.department IN + + #{departmentId} + and t.sfgjrc = 1 and t.hiredate >= #{startDate} @@ -66,8 +90,11 @@ select count(id) as name,lzqgw as value from e10_common.uf_jcl_lzxxjl t where t.delete_type = 0 and t.tenant_key = #{tenantKey} - - and t.department = #{departmentId} + + AND t.department IN + + #{departmentId} + and t.zhgzr >= #{startDate} and t.zhgzr <= #{endDate} and t.lzqgw !='' and t.lzqgw is not null group by t.lzqgw order by value limit 3 - - +