【7.1.6】【statistics】更新首页统计数字的方法

pull/26/MERGE
fengshuonan 2022-02-11 21:39:42 +08:00
parent 384bade526
commit 55bcdc8a99
6 changed files with 69 additions and 82 deletions

View File

@ -14,6 +14,6 @@ public interface PositionServiceApi {
* @author xixiaowei * @author xixiaowei
* @date 2022/2/9 9:37 * @date 2022/2/9 9:37
*/ */
Integer PositionNum(); Integer positionNum();
} }

View File

@ -71,40 +71,32 @@
<version>${roses.version}</version> <version>${roses.version}</version>
</dependency> </dependency>
<dependency> <!--定时任务-->
<groupId>cn.stylefeng.roses</groupId>
<artifactId>system-business-user</artifactId>
<version>${roses.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
<scope>compile</scope>
</dependency>
<dependency> <dependency>
<groupId>cn.stylefeng.roses</groupId> <groupId>cn.stylefeng.roses</groupId>
<artifactId>timer-api</artifactId> <artifactId>timer-api</artifactId>
<version>${roses.version}</version> <version>${roses.version}</version>
</dependency> </dependency>
<!--首页信息缓存-->
<dependency> <dependency>
<groupId>cn.stylefeng.roses</groupId> <groupId>cn.stylefeng.roses</groupId>
<artifactId>cache-sdk-memory</artifactId> <artifactId>cache-sdk-memory</artifactId>
<version>${roses.version}</version> <version>${roses.version}</version>
<scope>compile</scope> <optional>true</optional>
</dependency> </dependency>
<dependency> <dependency>
<groupId>cn.stylefeng.roses</groupId> <groupId>cn.stylefeng.roses</groupId>
<artifactId>cache-sdk-redis</artifactId> <artifactId>cache-sdk-redis</artifactId>
<version>${roses.version}</version> <version>${roses.version}</version>
<scope>compile</scope> <optional>true</optional>
</dependency>
<!--用户业务-->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>system-business-user</artifactId>
<version>${roses.version}</version>
</dependency> </dependency>
<!--菜单业务--> <!--菜单业务-->
@ -120,6 +112,13 @@
<artifactId>system-business-organization</artifactId> <artifactId>system-business-organization</artifactId>
<version>${roses.version}</version> <version>${roses.version}</version>
</dependency> </dependency>
<!-- 拦截接口,记录常用功能 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -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.ApiResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource; 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.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.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.home.service.HomePageService;
import cn.stylefeng.roses.kernel.system.modular.menu.entity.SysMenu;
import cn.stylefeng.roses.kernel.system.modular.statistic.pojo.OnlineUserStat; import cn.stylefeng.roses.kernel.system.modular.statistic.pojo.OnlineUserStat;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@ -70,7 +67,7 @@ public class HomePageController {
* @author xixiaowei * @author xixiaowei
* @date 2022/2/10 11:34 * @date 2022/2/10 11:34
*/ */
@GetResource(name = "获取常用功能接口", path = "/homePage/getCommonFunctions") @GetResource(name = "获取常用功能接口", path = "/homePage/getCommonFunctions", requiredPermission = false)
public ResponseData<List<SysMenu>> getCommonFunctions() { public ResponseData<List<SysMenu>> getCommonFunctions() {
return new SuccessResponseData<>(homePageService.getCommonFunctions()); return new SuccessResponseData<>(homePageService.getCommonFunctions());
} }

View File

@ -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.log.api.pojo.record.LogRecordDTO;
import cn.stylefeng.roses.kernel.system.api.pojo.home.HomeCompanyInfo; 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.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.menu.entity.SysMenu;
import cn.stylefeng.roses.kernel.system.modular.statistic.pojo.OnlineUserStat;
import java.util.List; import java.util.List;
/** /**
* *
* *
* @author xixiaowei * @author fengshuonan
* @date 2022/1/25 9:43 * @date 2022/2/11 20:41
*/ */
public interface HomePageService { public interface HomePageService {
/** /**
* *
* *
* @author xixiaowei * @author fengshuonan
* @date 2022/1/25 14:48 * @date 2022/2/11 20:40
*/ */
List<LogRecordDTO> getRecentLogs(); List<LogRecordDTO> getRecentLogs();
/** /**
* 线 * 线
* *
* @author xixiaowei * @author fengshuonan
* @date 2022/1/25 14:06 * @date 2022/2/11 20:40
*/ */
OnlineUserStat getOnlineUserList(OnlineUserRequest onlineUserRequest); OnlineUserStat getOnlineUserList(OnlineUserRequest onlineUserRequest);
/** /**
* *
* *
* @author xixiaowei * @author fengshuonan
* @date 2022/1/25 15:31 * @date 2022/2/11 21:03
*/ */
HomeCompanyInfo getHomeCompanyInfo(); HomeCompanyInfo getHomeCompanyInfo();

View File

@ -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.LogManagerApi;
import cn.stylefeng.roses.kernel.log.api.pojo.manage.LogManagerRequest; 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.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.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.OnlineUserDTO;
import cn.stylefeng.roses.kernel.system.api.pojo.user.request.OnlineUserRequest; 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.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.entity.SysStatisticsUrl;
import cn.stylefeng.roses.kernel.system.modular.home.service.HomePageService; 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.SysStatisticsCountService;
import cn.stylefeng.roses.kernel.system.modular.home.service.SysStatisticsUrlService; import cn.stylefeng.roses.kernel.system.modular.home.service.SysStatisticsUrlService;
import cn.stylefeng.roses.kernel.system.modular.menu.entity.SysMenu; 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.statistic.pojo.OnlineUserStat;
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserOrg; import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserOrg;
import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserOrgService; 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 com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -33,11 +35,14 @@ import javax.annotation.Resource;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; 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 * @author fengshuonan
* @date 2022/1/25 9:45 * @date 2022/2/11 20:41
*/ */
@Service @Service
public class HomePageServiceImpl implements HomePageService, HomePageServiceApi { public class HomePageServiceImpl implements HomePageService, HomePageServiceApi {
@ -88,7 +93,7 @@ public class HomePageServiceImpl implements HomePageService, HomePageServiceApi
// 获取在线总人数 // 获取在线总人数
List<OnlineUserDTO> onlineUserDTOS = userServiceApi.onlineUserList(onlineUserRequest); List<OnlineUserDTO> onlineUserDTOS = userServiceApi.onlineUserList(onlineUserRequest);
// 去重 // 同一用户多个会话去重
HashSet<String> onlineUserList = new HashSet<>(); HashSet<String> onlineUserList = new HashSet<>();
for (OnlineUserDTO onlineUserDTO : onlineUserDTOS) { for (OnlineUserDTO onlineUserDTO : onlineUserDTOS) {
if (ObjectUtil.isNotEmpty(onlineUserDTO.getRealName())) { if (ObjectUtil.isNotEmpty(onlineUserDTO.getRealName())) {
@ -108,49 +113,35 @@ public class HomePageServiceImpl implements HomePageService, HomePageServiceApi
public HomeCompanyInfo getHomeCompanyInfo() { public HomeCompanyInfo getHomeCompanyInfo() {
HomeCompanyInfo homeCompanyInfo = new HomeCompanyInfo(); HomeCompanyInfo homeCompanyInfo = new HomeCompanyInfo();
// 获取组织机构数量 // 获取组织机构总数量
List<HrOrganization> hrOrganizationList = hrOrganizationService.list(); homeCompanyInfo.setOrganizationNum(hrOrganizationService.count());
homeCompanyInfo.setOrganizationNum(hrOrganizationList.size());
// 获取企业人员总数 // 获取企业人员总数
SysUserRequest sysUserRequest = new SysUserRequest(); SysUserRequest sysUserRequest = new SysUserRequest();
List<Long> allUserIdList = userServiceApi.queryAllUserIdList(sysUserRequest); List<Long> allUserIdList = userServiceApi.queryAllUserIdList(sysUserRequest);
homeCompanyInfo.setEnterprisePersonNum(allUserIdList.size()); homeCompanyInfo.setEnterprisePersonNum(allUserIdList.size());
// 获取职位总数 // 获取所有职位总数
int positionNum = positionServiceApi.PositionNum(); int positionNum = positionServiceApi.positionNum();
homeCompanyInfo.setPositionNum(positionNum); homeCompanyInfo.setPositionNum(positionNum);
// 获取当前登录用户 // 获取当前登录人的组织机构id
LoginUser loginUser = LoginContext.me().getLoginUser(); LoginUser loginUser = LoginContext.me().getLoginUser();
// 获取组织公司ID
Long organizationId = loginUser.getOrganizationId(); Long organizationId = loginUser.getOrganizationId();
// 设置公司部门数 // 获取当前公司的所有子公司数量(含当前公司)
int sectionNum = 1; LambdaQueryWrapper<HrOrganization> wrapper = Wrappers.lambdaQuery(HrOrganization.class)
List<Long> orgIds = new ArrayList<>(); .like(HrOrganization::getOrgPids, LEFT_SQUARE_BRACKETS + organizationId + RIGHT_SQUARE_BRACKETS)
// 添加当前用户部门ID .or()
orgIds.add(organizationId); .eq(HrOrganization::getOrgId, organizationId)
for (HrOrganization hrOrganization : hrOrganizationList) { .select(HrOrganization::getOrgId);
String[] orgPids = hrOrganization.getOrgPids().split(","); List<HrOrganization> organizations = hrOrganizationService.list(wrapper);
for (String orgPid : orgPids) { homeCompanyInfo.setCurrentDeptNum(organizations.size());
orgPid = orgPid.substring(1, orgPid.length() - 1);
if (organizationId.toString().equals(orgPid)) {
orgIds.add(hrOrganization.getOrgId());
sectionNum++;
}
}
}
homeCompanyInfo.setCurrentDeptNum(sectionNum);
// 设置当前公司人数 // 设置当前所属机构和所有子机构的人数
int currentCompanyPersonNum = 0; List<Long> orgIds = organizations.stream().map(HrOrganization::getOrgId).collect(Collectors.toList());
for (Long orgId : orgIds) { int currentOrgPersonNum = sysUserOrgService.count(Wrappers.lambdaQuery(SysUserOrg.class).in(SysUserOrg::getOrgId, orgIds));
List<SysUserOrg> sysUserOrgs = sysUserOrgService.list(Wrappers.<SysUserOrg>lambdaQuery().eq(SysUserOrg::getOrgId, orgId)); homeCompanyInfo.setCurrentCompanyPersonNum(currentOrgPersonNum);
currentCompanyPersonNum += sysUserOrgs.size();
}
homeCompanyInfo.setCurrentCompanyPersonNum(currentCompanyPersonNum);
return homeCompanyInfo; return homeCompanyInfo;
} }

View File

@ -127,6 +127,11 @@ public class HrPositionServiceImpl extends ServiceImpl<HrPositionMapper, HrPosit
} }
} }
@Override
public Integer positionNum() {
return this.count();
}
/** /**
* id * id
* *
@ -172,9 +177,4 @@ public class HrPositionServiceImpl extends ServiceImpl<HrPositionMapper, HrPosit
return queryWrapper; return queryWrapper;
} }
@Override
public Integer PositionNum() {
return this.count();
}
} }