接go数据
This commit is contained in:
@ -1,14 +1,15 @@
|
||||
package org.dromara.bigscreen.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.dromara.bigscreen.domain.dto.WeatherQueryReq;
|
||||
import org.dromara.bigscreen.domain.vo.*;
|
||||
import org.dromara.bigscreen.mapper.ProjectBigScreenMapper;
|
||||
import org.dromara.bigscreen.service.EnterpriseBigScreenService;
|
||||
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.project.domain.BusAttendance;
|
||||
import org.dromara.project.domain.BusProject;
|
||||
import org.dromara.project.domain.BusUserProjectRelevancy;
|
||||
import org.dromara.project.service.IBusAttendanceService;
|
||||
@ -23,8 +24,7 @@ import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDate;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 企业级大屏
|
||||
@ -49,6 +49,9 @@ public class EnterpriseBigScreenController {
|
||||
@Resource
|
||||
private IBusProjectService projectService;
|
||||
|
||||
@Resource
|
||||
private ProjectBigScreenMapper projectBigScreenMapper;
|
||||
|
||||
|
||||
/**
|
||||
* 获取关键指标
|
||||
@ -137,7 +140,8 @@ public class EnterpriseBigScreenController {
|
||||
peopleCountVo.setSubcontractorsCount(list.stream().filter(item -> "3".equals(item.getUserType()))
|
||||
.map(BusUserProjectRelevancy::getUserId)
|
||||
.distinct().count());
|
||||
|
||||
Integer projectUserCount = projectBigScreenMapper.getUserCount();
|
||||
peopleCountVo.setConstructionPersonnelCount(Long.valueOf(projectUserCount));
|
||||
return R.ok(peopleCountVo);
|
||||
}
|
||||
|
||||
@ -149,6 +153,15 @@ public class EnterpriseBigScreenController {
|
||||
@GetMapping("/allAttendanceCount")
|
||||
public R<TodayAttendanceCountVo> getAllAttendanceCount() {
|
||||
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()
|
||||
.eq(BusAttendance::getClockDate, LocalDate.now())
|
||||
.in(BusAttendance::getClockStatus, Arrays.asList("1", "2", "3"))
|
||||
@ -160,11 +173,12 @@ public class EnterpriseBigScreenController {
|
||||
// 查询总人数
|
||||
List<BusUserProjectRelevancy> relevancyList = userProjectRelevancyService.list();
|
||||
long totalUserCount = relevancyList.stream().map(BusUserProjectRelevancy::getUserId).distinct().count();
|
||||
*/
|
||||
|
||||
// 计算考勤率(保留一位小数)
|
||||
if (totalUserCount > 0) {
|
||||
BigDecimal rate = new BigDecimal(attendanceCount * 100)
|
||||
.divide(new BigDecimal(totalUserCount), 1, RoundingMode.HALF_UP);
|
||||
if (countUser > 0) {
|
||||
BigDecimal rate = new BigDecimal(countAttendance * 100)
|
||||
.divide(new BigDecimal(countUser), 1, RoundingMode.HALF_UP);
|
||||
todayAttendanceCountVo.setAttendanceRate(rate.doubleValue());
|
||||
} else {
|
||||
todayAttendanceCountVo.setAttendanceRate(0.0);
|
||||
@ -179,7 +193,19 @@ public class EnterpriseBigScreenController {
|
||||
@GetMapping("/projectAttendanceCount")
|
||||
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()
|
||||
.eq(BusAttendance::getClockDate, LocalDate.now())
|
||||
@ -221,7 +247,7 @@ public class EnterpriseBigScreenController {
|
||||
projectAttendanceCountVos.add(projectAttendanceCountVo);
|
||||
}
|
||||
|
||||
return R.ok(projectAttendanceCountVos);
|
||||
return R.ok(projectAttendanceCountVos);*/
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -26,6 +26,9 @@ public interface ProjectBigScreenMapper {
|
||||
@Select("select count(*) from bus_construction_user where project_id = #{projectId} && deleted_at is NULL")
|
||||
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'")
|
||||
Integer getAttendanceCount(@Param("projectId") Long projectId,
|
||||
@Param("printingDate") String printingDate);
|
||||
|
||||
Reference in New Issue
Block a user