接go数据

This commit is contained in:
lcj
2025-09-12 21:16:00 +08:00
parent 91f01dc012
commit c662e1aa4d
2 changed files with 39 additions and 10 deletions

View File

@ -1,14 +1,15 @@
package org.dromara.bigscreen.controller; package org.dromara.bigscreen.controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.dromara.bigscreen.domain.dto.WeatherQueryReq; import org.dromara.bigscreen.domain.dto.WeatherQueryReq;
import org.dromara.bigscreen.domain.vo.*; import org.dromara.bigscreen.domain.vo.*;
import org.dromara.bigscreen.mapper.ProjectBigScreenMapper;
import org.dromara.bigscreen.service.EnterpriseBigScreenService; import org.dromara.bigscreen.service.EnterpriseBigScreenService;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.utils.BigDecimalUtil;
import org.dromara.manager.weathermanager.vo.WeatherVo; import org.dromara.manager.weathermanager.vo.WeatherVo;
import org.dromara.project.domain.BusAttendance;
import org.dromara.project.domain.BusProject; import org.dromara.project.domain.BusProject;
import org.dromara.project.domain.BusUserProjectRelevancy; import org.dromara.project.domain.BusUserProjectRelevancy;
import org.dromara.project.service.IBusAttendanceService; import org.dromara.project.service.IBusAttendanceService;
@ -23,8 +24,7 @@ import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.List;
import java.util.stream.Collectors;
/** /**
* 企业级大屏 * 企业级大屏
@ -49,6 +49,9 @@ public class EnterpriseBigScreenController {
@Resource @Resource
private IBusProjectService projectService; private IBusProjectService projectService;
@Resource
private ProjectBigScreenMapper projectBigScreenMapper;
/** /**
* 获取关键指标 * 获取关键指标
@ -137,7 +140,8 @@ public class EnterpriseBigScreenController {
peopleCountVo.setSubcontractorsCount(list.stream().filter(item -> "3".equals(item.getUserType())) peopleCountVo.setSubcontractorsCount(list.stream().filter(item -> "3".equals(item.getUserType()))
.map(BusUserProjectRelevancy::getUserId) .map(BusUserProjectRelevancy::getUserId)
.distinct().count()); .distinct().count());
Integer projectUserCount = projectBigScreenMapper.getUserCount();
peopleCountVo.setConstructionPersonnelCount(Long.valueOf(projectUserCount));
return R.ok(peopleCountVo); return R.ok(peopleCountVo);
} }
@ -149,6 +153,15 @@ public class EnterpriseBigScreenController {
@GetMapping("/allAttendanceCount") @GetMapping("/allAttendanceCount")
public R<TodayAttendanceCountVo> getAllAttendanceCount() { public R<TodayAttendanceCountVo> getAllAttendanceCount() {
TodayAttendanceCountVo todayAttendanceCountVo = new TodayAttendanceCountVo(); TodayAttendanceCountVo todayAttendanceCountVo = new TodayAttendanceCountVo();
List<BusProject> projectList = projectService.listByIds(List.of(1897160897167638529L, 1897161054676336641L));
Integer countUser = 0;
Integer countAttendance = 0;
for (BusProject project : projectList) {
Long projectId = project.getGoId();
countUser = countUser + projectBigScreenMapper.getProjectUserCount(projectId);
countAttendance = countAttendance + projectBigScreenMapper.getAttendanceCount(projectId, DateUtils.getDate());
}
/*
List<BusAttendance> list = attendanceService.list(Wrappers.<BusAttendance>lambdaQuery() List<BusAttendance> list = attendanceService.list(Wrappers.<BusAttendance>lambdaQuery()
.eq(BusAttendance::getClockDate, LocalDate.now()) .eq(BusAttendance::getClockDate, LocalDate.now())
.in(BusAttendance::getClockStatus, Arrays.asList("1", "2", "3")) .in(BusAttendance::getClockStatus, Arrays.asList("1", "2", "3"))
@ -160,11 +173,12 @@ public class EnterpriseBigScreenController {
// 查询总人数 // 查询总人数
List<BusUserProjectRelevancy> relevancyList = userProjectRelevancyService.list(); List<BusUserProjectRelevancy> relevancyList = userProjectRelevancyService.list();
long totalUserCount = relevancyList.stream().map(BusUserProjectRelevancy::getUserId).distinct().count(); long totalUserCount = relevancyList.stream().map(BusUserProjectRelevancy::getUserId).distinct().count();
*/
// 计算考勤率(保留一位小数) // 计算考勤率(保留一位小数)
if (totalUserCount > 0) { if (countUser > 0) {
BigDecimal rate = new BigDecimal(attendanceCount * 100) BigDecimal rate = new BigDecimal(countAttendance * 100)
.divide(new BigDecimal(totalUserCount), 1, RoundingMode.HALF_UP); .divide(new BigDecimal(countUser), 1, RoundingMode.HALF_UP);
todayAttendanceCountVo.setAttendanceRate(rate.doubleValue()); todayAttendanceCountVo.setAttendanceRate(rate.doubleValue());
} else { } else {
todayAttendanceCountVo.setAttendanceRate(0.0); todayAttendanceCountVo.setAttendanceRate(0.0);
@ -179,7 +193,19 @@ public class EnterpriseBigScreenController {
@GetMapping("/projectAttendanceCount") @GetMapping("/projectAttendanceCount")
public R<List<ProjectAttendanceCountVo>> getProjectAttendanceCount() { public R<List<ProjectAttendanceCountVo>> getProjectAttendanceCount() {
ArrayList<ProjectAttendanceCountVo> projectAttendanceCountVos = new ArrayList<>(); List<BusProject> projectList = projectService.listByIds(List.of(1897160897167638529L, 1897161054676336641L));
return R.ok(projectList.stream().map(busProject -> {
ProjectAttendanceCountVo vo = new ProjectAttendanceCountVo();
vo.setProjectId(busProject.getId());
vo.setProjectName(busProject.getProjectName());
Long projectId = busProject.getGoId();
Integer projectUserCount = projectBigScreenMapper.getProjectUserCount(projectId);
Integer attendanceCount = projectBigScreenMapper.getAttendanceCount(projectId, DateUtils.getDate());
vo.setAttendanceCount(Long.valueOf(attendanceCount));
vo.setAttendanceRate(BigDecimalUtil.toPercentage(BigDecimal.valueOf(attendanceCount), BigDecimal.valueOf(projectUserCount)).doubleValue());
return vo;
}).toList());
/*ArrayList<ProjectAttendanceCountVo> projectAttendanceCountVos = new ArrayList<>();
List<BusAttendance> list = attendanceService.list(Wrappers.<BusAttendance>lambdaQuery() List<BusAttendance> list = attendanceService.list(Wrappers.<BusAttendance>lambdaQuery()
.eq(BusAttendance::getClockDate, LocalDate.now()) .eq(BusAttendance::getClockDate, LocalDate.now())
@ -221,7 +247,7 @@ public class EnterpriseBigScreenController {
projectAttendanceCountVos.add(projectAttendanceCountVo); projectAttendanceCountVos.add(projectAttendanceCountVo);
} }
return R.ok(projectAttendanceCountVos); return R.ok(projectAttendanceCountVos);*/
} }

View File

@ -26,6 +26,9 @@ public interface ProjectBigScreenMapper {
@Select("select count(*) from bus_construction_user where project_id = #{projectId} && deleted_at is NULL") @Select("select count(*) from bus_construction_user where project_id = #{projectId} && deleted_at is NULL")
Integer getProjectUserCount(@Param("projectId") Long projectId); Integer getProjectUserCount(@Param("projectId") Long projectId);
@Select("select count(*) from bus_construction_user where project_id in (60,59) && deleted_at is NULL")
Integer getUserCount();
@Select("select count(*) from bus_attendance where project_id = #{projectId} && printing_date = #{printingDate} && commuter = '1'") @Select("select count(*) from bus_attendance where project_id = #{projectId} && printing_date = #{printingDate} && commuter = '1'")
Integer getAttendanceCount(@Param("projectId") Long projectId, Integer getAttendanceCount(@Param("projectId") Long projectId,
@Param("printingDate") String printingDate); @Param("printingDate") String printingDate);