diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/PositionServiceApi.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/PositionServiceApi.java index 544fe402d..236e1e19f 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/PositionServiceApi.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/PositionServiceApi.java @@ -14,6 +14,6 @@ public interface PositionServiceApi { * @author xixiaowei * @date 2022/2/9 9:37 */ - Integer PositionNum(); + Integer positionNum(); } diff --git a/kernel-s-system/system-business-home/pom.xml b/kernel-s-system/system-business-home/pom.xml index 9d9857dbe..bf4d3e155 100644 --- a/kernel-s-system/system-business-home/pom.xml +++ b/kernel-s-system/system-business-home/pom.xml @@ -71,40 +71,32 @@ ${roses.version} - - cn.stylefeng.roses - system-business-user - ${roses.version} - - - - org.aspectj - aspectjweaver - - - - commons-lang - commons-lang - 2.6 - compile - - + cn.stylefeng.roses timer-api ${roses.version} + + cn.stylefeng.roses cache-sdk-memory ${roses.version} - compile + true cn.stylefeng.roses cache-sdk-redis ${roses.version} - compile + true + + + + + cn.stylefeng.roses + system-business-user + ${roses.version} @@ -120,6 +112,13 @@ system-business-organization ${roses.version} + + + + org.springframework.boot + spring-boot-starter-aop + + - \ No newline at end of file + diff --git a/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/controller/HomePageController.java b/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/controller/HomePageController.java index 6977e8175..c5f64e121 100644 --- a/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/controller/HomePageController.java +++ b/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/controller/HomePageController.java @@ -6,12 +6,9 @@ import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData; import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource; import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource; import cn.stylefeng.roses.kernel.system.api.pojo.home.HomeCompanyInfo; -import cn.stylefeng.roses.kernel.system.api.pojo.resource.ResourceRequest; -import cn.stylefeng.roses.kernel.system.api.pojo.user.OnlineUserDTO; import cn.stylefeng.roses.kernel.system.api.pojo.user.request.OnlineUserRequest; -import cn.stylefeng.roses.kernel.system.modular.menu.entity.SysMenu; -import org.springframework.web.bind.annotation.RestController; import cn.stylefeng.roses.kernel.system.modular.home.service.HomePageService; +import cn.stylefeng.roses.kernel.system.modular.menu.entity.SysMenu; import cn.stylefeng.roses.kernel.system.modular.statistic.pojo.OnlineUserStat; import org.springframework.web.bind.annotation.RestController; @@ -70,7 +67,7 @@ public class HomePageController { * @author xixiaowei * @date 2022/2/10 11:34 */ - @GetResource(name = "获取常用功能接口", path = "/homePage/getCommonFunctions") + @GetResource(name = "获取常用功能接口", path = "/homePage/getCommonFunctions", requiredPermission = false) public ResponseData> getCommonFunctions() { return new SuccessResponseData<>(homePageService.getCommonFunctions()); } diff --git a/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/HomePageService.java b/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/HomePageService.java index efb4b68d0..f623c7306 100644 --- a/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/HomePageService.java +++ b/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/HomePageService.java @@ -3,40 +3,40 @@ package cn.stylefeng.roses.kernel.system.modular.home.service; import cn.stylefeng.roses.kernel.log.api.pojo.record.LogRecordDTO; import cn.stylefeng.roses.kernel.system.api.pojo.home.HomeCompanyInfo; import cn.stylefeng.roses.kernel.system.api.pojo.user.request.OnlineUserRequest; -import cn.stylefeng.roses.kernel.system.modular.statistic.pojo.OnlineUserStat; import cn.stylefeng.roses.kernel.system.modular.menu.entity.SysMenu; +import cn.stylefeng.roses.kernel.system.modular.statistic.pojo.OnlineUserStat; import java.util.List; /** * 首页服务接口 * - * @author xixiaowei - * @date 2022/1/25 9:43 + * @author fengshuonan + * @date 2022/2/11 20:41 */ public interface HomePageService { /** - * 查询动态列表 + * 查询本用户最近操作记录 * - * @author xixiaowei - * @date 2022/1/25 14:48 + * @author fengshuonan + * @date 2022/2/11 20:40 */ List getRecentLogs(); /** - * 获取在线用户列表 + * 获取在线用户统计 * - * @author xixiaowei - * @date 2022/1/25 14:06 + * @author fengshuonan + * @date 2022/2/11 20:40 */ OnlineUserStat getOnlineUserList(OnlineUserRequest onlineUserRequest); /** - * 获取首页企业和公司信息 + * 获取首页公司部门人员信息统计 * - * @author xixiaowei - * @date 2022/1/25 15:31 + * @author fengshuonan + * @date 2022/2/11 21:03 */ HomeCompanyInfo getHomeCompanyInfo(); diff --git a/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/impl/HomePageServiceImpl.java b/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/impl/HomePageServiceImpl.java index a7d07d9ec..3214d62db 100644 --- a/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/impl/HomePageServiceImpl.java +++ b/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/impl/HomePageServiceImpl.java @@ -8,15 +8,16 @@ import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.log.api.LogManagerApi; import cn.stylefeng.roses.kernel.log.api.pojo.manage.LogManagerRequest; import cn.stylefeng.roses.kernel.log.api.pojo.record.LogRecordDTO; -import cn.stylefeng.roses.kernel.system.api.*; +import cn.stylefeng.roses.kernel.system.api.HomePageServiceApi; +import cn.stylefeng.roses.kernel.system.api.PositionServiceApi; +import cn.stylefeng.roses.kernel.system.api.UserServiceApi; import cn.stylefeng.roses.kernel.system.api.pojo.home.HomeCompanyInfo; -import cn.stylefeng.roses.kernel.system.api.pojo.organization.HrOrganizationDTO; import cn.stylefeng.roses.kernel.system.api.pojo.user.OnlineUserDTO; import cn.stylefeng.roses.kernel.system.api.pojo.user.request.OnlineUserRequest; import cn.stylefeng.roses.kernel.system.api.pojo.user.request.SysUserRequest; +import cn.stylefeng.roses.kernel.system.modular.home.entity.SysStatisticsCount; import cn.stylefeng.roses.kernel.system.modular.home.entity.SysStatisticsUrl; import cn.stylefeng.roses.kernel.system.modular.home.service.HomePageService; -import cn.stylefeng.roses.kernel.system.modular.home.entity.SysStatisticsCount; import cn.stylefeng.roses.kernel.system.modular.home.service.SysStatisticsCountService; import cn.stylefeng.roses.kernel.system.modular.home.service.SysStatisticsUrlService; import cn.stylefeng.roses.kernel.system.modular.menu.entity.SysMenu; @@ -26,6 +27,7 @@ import cn.stylefeng.roses.kernel.system.modular.organization.service.HrOrganizat import cn.stylefeng.roses.kernel.system.modular.statistic.pojo.OnlineUserStat; import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserOrg; import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserOrgService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.springframework.stereotype.Service; @@ -33,11 +35,14 @@ import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; +import static cn.stylefeng.roses.kernel.rule.constants.SymbolConstant.LEFT_SQUARE_BRACKETS; +import static cn.stylefeng.roses.kernel.rule.constants.SymbolConstant.RIGHT_SQUARE_BRACKETS; + /** * 首页服务实现类 * - * @author xixiaowei - * @date 2022/1/25 9:45 + * @author fengshuonan + * @date 2022/2/11 20:41 */ @Service public class HomePageServiceImpl implements HomePageService, HomePageServiceApi { @@ -88,7 +93,7 @@ public class HomePageServiceImpl implements HomePageService, HomePageServiceApi // 获取在线总人数 List onlineUserDTOS = userServiceApi.onlineUserList(onlineUserRequest); - // 去重 + // 同一用户多个会话去重 HashSet onlineUserList = new HashSet<>(); for (OnlineUserDTO onlineUserDTO : onlineUserDTOS) { if (ObjectUtil.isNotEmpty(onlineUserDTO.getRealName())) { @@ -108,49 +113,35 @@ public class HomePageServiceImpl implements HomePageService, HomePageServiceApi public HomeCompanyInfo getHomeCompanyInfo() { HomeCompanyInfo homeCompanyInfo = new HomeCompanyInfo(); - // 获取组织机构数量 - List hrOrganizationList = hrOrganizationService.list(); - homeCompanyInfo.setOrganizationNum(hrOrganizationList.size()); + // 获取组织机构总数量 + homeCompanyInfo.setOrganizationNum(hrOrganizationService.count()); - // 获取企业人员总数 + // 获取企业人员总数量 SysUserRequest sysUserRequest = new SysUserRequest(); List allUserIdList = userServiceApi.queryAllUserIdList(sysUserRequest); homeCompanyInfo.setEnterprisePersonNum(allUserIdList.size()); - // 获取职位总数 - int positionNum = positionServiceApi.PositionNum(); + // 获取所有职位总数 + int positionNum = positionServiceApi.positionNum(); homeCompanyInfo.setPositionNum(positionNum); - // 获取当前登录用户 + // 获取当前登录人的组织机构id LoginUser loginUser = LoginContext.me().getLoginUser(); - - // 获取组织公司ID Long organizationId = loginUser.getOrganizationId(); - // 设置公司部门数 - int sectionNum = 1; - List orgIds = new ArrayList<>(); - // 添加当前用户部门ID - orgIds.add(organizationId); - for (HrOrganization hrOrganization : hrOrganizationList) { - String[] orgPids = hrOrganization.getOrgPids().split(","); - for (String orgPid : orgPids) { - orgPid = orgPid.substring(1, orgPid.length() - 1); - if (organizationId.toString().equals(orgPid)) { - orgIds.add(hrOrganization.getOrgId()); - sectionNum++; - } - } - } - homeCompanyInfo.setCurrentDeptNum(sectionNum); + // 获取当前公司的所有子公司数量(含当前公司) + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(HrOrganization.class) + .like(HrOrganization::getOrgPids, LEFT_SQUARE_BRACKETS + organizationId + RIGHT_SQUARE_BRACKETS) + .or() + .eq(HrOrganization::getOrgId, organizationId) + .select(HrOrganization::getOrgId); + List organizations = hrOrganizationService.list(wrapper); + homeCompanyInfo.setCurrentDeptNum(organizations.size()); - // 设置当前公司人数 - int currentCompanyPersonNum = 0; - for (Long orgId : orgIds) { - List sysUserOrgs = sysUserOrgService.list(Wrappers.lambdaQuery().eq(SysUserOrg::getOrgId, orgId)); - currentCompanyPersonNum += sysUserOrgs.size(); - } - homeCompanyInfo.setCurrentCompanyPersonNum(currentCompanyPersonNum); + // 设置当前所属机构和所有子机构的人数 + List orgIds = organizations.stream().map(HrOrganization::getOrgId).collect(Collectors.toList()); + int currentOrgPersonNum = sysUserOrgService.count(Wrappers.lambdaQuery(SysUserOrg.class).in(SysUserOrg::getOrgId, orgIds)); + homeCompanyInfo.setCurrentCompanyPersonNum(currentOrgPersonNum); return homeCompanyInfo; } diff --git a/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/impl/HrPositionServiceImpl.java b/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/impl/HrPositionServiceImpl.java index 17175f32e..8b566de12 100644 --- a/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/impl/HrPositionServiceImpl.java +++ b/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/impl/HrPositionServiceImpl.java @@ -127,6 +127,11 @@ public class HrPositionServiceImpl extends ServiceImpl