From 4d1938005f730dc6759d916cf337542449ddf583 Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Wed, 13 Aug 2025 11:43:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...DailyAttendanceStatisticsV2Controller.java | 2 + ...erDailyAttendanceStatisticsV2ByDateBo.java | 23 ++++++++ ...ntWorkerDailyAttendanceStatisticsV2Vo.java | 16 ++++++ ...rkerDailyAttendanceStatisticsV2Mapper.java | 7 +++ ...kerDailyAttendanceStatisticsV2Service.java | 6 +++ ...ailyAttendanceStatisticsV2ServiceImpl.java | 53 ++++++++++++++++++- 6 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/zhgd/xmgl/modules/worker/entity/bo/CountWorkerDailyAttendanceStatisticsV2ByDateBo.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/worker/entity/vo/CountWorkerDailyAttendanceStatisticsV2Vo.java diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/controller/WorkerDailyAttendanceStatisticsV2Controller.java b/src/main/java/com/zhgd/xmgl/modules/worker/controller/WorkerDailyAttendanceStatisticsV2Controller.java index b6f38c65f..9ca79eea0 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/controller/WorkerDailyAttendanceStatisticsV2Controller.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/controller/WorkerDailyAttendanceStatisticsV2Controller.java @@ -16,12 +16,14 @@ import com.zhgd.file.FileUtil; import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.xmgl.async.AsyncAttendance; +import com.zhgd.xmgl.base.entity.vo.echarts.ChartDataVo; import com.zhgd.xmgl.modules.project.entity.Project; import com.zhgd.xmgl.modules.project.service.IProjectService; import com.zhgd.xmgl.modules.worker.entity.WorkerAttendance; import com.zhgd.xmgl.modules.worker.entity.WorkerDailyAttendanceStatisticsV2; import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; import com.zhgd.xmgl.modules.worker.entity.dto.WorkerDailyAttendanceStatisticsV2Dto; +import com.zhgd.xmgl.modules.worker.entity.vo.CountWorkerDailyAttendanceStatisticsV2Vo; import com.zhgd.xmgl.modules.worker.entity.vo.ExceptionHourStatisticsListVo; import com.zhgd.xmgl.modules.worker.entity.vo.StatisticsListVo; import com.zhgd.xmgl.modules.worker.entity.vo.WorkerDailyAttendanceStatisticsV2Vo; diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/entity/bo/CountWorkerDailyAttendanceStatisticsV2ByDateBo.java b/src/main/java/com/zhgd/xmgl/modules/worker/entity/bo/CountWorkerDailyAttendanceStatisticsV2ByDateBo.java new file mode 100644 index 000000000..eccfe30c3 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/worker/entity/bo/CountWorkerDailyAttendanceStatisticsV2ByDateBo.java @@ -0,0 +1,23 @@ +package com.zhgd.xmgl.modules.worker.entity.bo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class CountWorkerDailyAttendanceStatisticsV2ByDateBo { + private String xName; + /** + * 出勤总人数 + */ + private Integer totalAttendanceNum; + /** + * 在职总人数 + */ + private Integer totalInServiceNum; + /** + * 平均出勤率 + */ + private BigDecimal attendanceRateAvg; +} diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/entity/vo/CountWorkerDailyAttendanceStatisticsV2Vo.java b/src/main/java/com/zhgd/xmgl/modules/worker/entity/vo/CountWorkerDailyAttendanceStatisticsV2Vo.java new file mode 100644 index 000000000..25f9a30d9 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/worker/entity/vo/CountWorkerDailyAttendanceStatisticsV2Vo.java @@ -0,0 +1,16 @@ +package com.zhgd.xmgl.modules.worker.entity.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class CountWorkerDailyAttendanceStatisticsV2Vo { + @ApiModelProperty("出勤总人数") + private Integer totalAttendanceNum; + @ApiModelProperty("在职总人数") + private Integer totalInServiceNum; + @ApiModelProperty("平均出勤率") + private BigDecimal attendanceRateAvg; +} diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/WorkerDailyAttendanceStatisticsV2Mapper.java b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/WorkerDailyAttendanceStatisticsV2Mapper.java index f52015636..2b5a9a9fb 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/WorkerDailyAttendanceStatisticsV2Mapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/WorkerDailyAttendanceStatisticsV2Mapper.java @@ -6,12 +6,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zhgd.xmgl.modules.worker.entity.WorkerDailyAttendanceStatisticsV2; +import com.zhgd.xmgl.modules.worker.entity.bo.CountWorkerDailyAttendanceStatisticsV2ByDateBo; +import com.zhgd.xmgl.modules.worker.entity.vo.CountWorkerDailyAttendanceStatisticsV2Vo; import com.zhgd.xmgl.modules.worker.entity.vo.WorkerDailyAttendanceStatisticsV2Vo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @Description: 员工每日的考勤统计记录v2 @@ -51,4 +54,8 @@ public interface WorkerDailyAttendanceStatisticsV2Mapper extends BaseMapper param); + + List countWorkerDailyAttendanceStatisticsV2ByDate(Map param); } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/IWorkerDailyAttendanceStatisticsV2Service.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/IWorkerDailyAttendanceStatisticsV2Service.java index 844ead514..f774696f6 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/IWorkerDailyAttendanceStatisticsV2Service.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/IWorkerDailyAttendanceStatisticsV2Service.java @@ -3,10 +3,12 @@ package com.zhgd.xmgl.modules.worker.service; import cn.hutool.core.date.DateTime; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import com.zhgd.xmgl.base.entity.vo.echarts.ChartDataVo; import com.zhgd.xmgl.modules.worker.entity.WorkerAttendanceRuleV2; import com.zhgd.xmgl.modules.worker.entity.WorkerDailyAttendanceStatisticsV2; import com.zhgd.xmgl.modules.worker.entity.bo.CalAttendanceBo; import com.zhgd.xmgl.modules.worker.entity.dto.WorkerDailyAttendanceStatisticsV2Dto; +import com.zhgd.xmgl.modules.worker.entity.vo.CountWorkerDailyAttendanceStatisticsV2Vo; import com.zhgd.xmgl.modules.worker.entity.vo.WorkerDailyAttendanceStatisticsV2Vo; import java.util.HashMap; @@ -87,4 +89,8 @@ public interface IWorkerDailyAttendanceStatisticsV2Service extends IService map); + + CountWorkerDailyAttendanceStatisticsV2Vo countWorkerDailyAttendanceStatisticsV2(Map param); + + ChartDataVo countWorkerDailyAttendanceStatisticsV2ByDate(Map param); } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerDailyAttendanceStatisticsV2ServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerDailyAttendanceStatisticsV2ServiceImpl.java index 7c6e126b2..d1103c009 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerDailyAttendanceStatisticsV2ServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerDailyAttendanceStatisticsV2ServiceImpl.java @@ -12,13 +12,17 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.jeecg.common.system.query.QueryGenerator; +import com.zhgd.xmgl.base.entity.vo.echarts.ChartDataVo; +import com.zhgd.xmgl.base.entity.vo.echarts.SeriesItem; import com.zhgd.xmgl.modules.worker.entity.WorkerAttendance; import com.zhgd.xmgl.modules.worker.entity.WorkerAttendanceRuleV2; import com.zhgd.xmgl.modules.worker.entity.WorkerDailyAttendanceStatisticsV2; import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; import com.zhgd.xmgl.modules.worker.entity.bo.CalAttendanceBo; +import com.zhgd.xmgl.modules.worker.entity.bo.CountWorkerDailyAttendanceStatisticsV2ByDateBo; import com.zhgd.xmgl.modules.worker.entity.bo.Hour2dayJsonBo; import com.zhgd.xmgl.modules.worker.entity.dto.WorkerDailyAttendanceStatisticsV2Dto; +import com.zhgd.xmgl.modules.worker.entity.vo.CountWorkerDailyAttendanceStatisticsV2Vo; import com.zhgd.xmgl.modules.worker.entity.vo.WorkerDailyAttendanceStatisticsV2Vo; import com.zhgd.xmgl.modules.worker.mapper.WorkerDailyAttendanceStatisticsV2Mapper; import com.zhgd.xmgl.modules.worker.service.IWorkerAttendanceRuleV2Service; @@ -423,7 +427,9 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl workerInfos = workerInfoService.list(new LambdaQueryWrapper() - .eq(WorkerInfo::getProjectSn, projectSn)); + .eq(WorkerInfo::getProjectSn, projectSn) + .eq(WorkerInfo::getInserviceType, 1) + ); Map groupToRuleMap = workerAttendanceRuleV2Service.list(new LambdaQueryWrapper().eq(WorkerAttendanceRuleV2::getProjectSn, projectSn)) .stream().collect(Collectors.toMap(WorkerAttendanceRuleV2::getGroupV2Id, Function.identity(), (o1, o2) -> o1)); List attendanceDbs = workerAttendanceService.list(new LambdaQueryWrapper() @@ -448,4 +454,49 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl param) { + return baseMapper.countWorkerDailyAttendanceStatisticsV2(param); + } + + @Override + public ChartDataVo countWorkerDailyAttendanceStatisticsV2ByDate(Map param) { + String projectSn = MapUtils.getString(param, "projectSn"); + List dateTimeStrList; + if (StrUtil.isNotBlank(MapUtils.getString(param, "startMonth"))) { + dateTimeStrList = DateUtil.rangeToList(DateUtil.parseDate(MapUtils.getString(param, "startMonth") + "-01"), DateUtil.parseDate(MapUtils.getString(param, "endMonth") + "-01"), DateField.MONTH) + .stream().map(dateTime -> DateUtil.format(dateTime, "yyyy-MM")).collect(Collectors.toList()); + } else { + dateTimeStrList = DateUtil.rangeToList(DateUtil.parseDate(MapUtils.getString(param, "startDate")), DateUtil.parseDate(MapUtils.getString(param, "endDate")), DateField.DAY_OF_YEAR) + .stream().map(dateTime -> DateUtil.format(dateTime, "yyyy-MM-dd")).collect(Collectors.toList()); + } + ChartDataVo chartDataVo = new ChartDataVo(); + chartDataVo.setX(dateTimeStrList); + List all = baseMapper.countWorkerDailyAttendanceStatisticsV2ByDate(param); + Map allMap = all.stream().collect(Collectors.toMap(CountWorkerDailyAttendanceStatisticsV2ByDateBo::getXName, Function.identity())); + List seriesItems = new ArrayList<>(); + seriesItems.add(getSeriesItemForCountDate("出勤总人数", dateTimeStrList, allMap, CountWorkerDailyAttendanceStatisticsV2ByDateBo::getTotalAttendanceNum)); + seriesItems.add(getSeriesItemForCountDate("在职总人数", dateTimeStrList, allMap, CountWorkerDailyAttendanceStatisticsV2ByDateBo::getTotalInServiceNum)); + seriesItems.add(getSeriesItemForCountDate("平均出勤率", dateTimeStrList, allMap, CountWorkerDailyAttendanceStatisticsV2ByDateBo::getAttendanceRateAvg)); + chartDataVo.setSeries(seriesItems); + return chartDataVo; + } + + /** + * 获取每月/日出勤/在职人数的图例数据 + * + * @param yName + * @param dateTimeStrList + * @param allMap + * @param getAttendanceVal + * @return + */ + private SeriesItem getSeriesItemForCountDate(String yName, List dateTimeStrList, Map allMap, Function getAttendanceVal) { + SeriesItem item = new SeriesItem(); + item.setName(yName); + List data = dateTimeStrList.stream().map(d -> Optional.ofNullable(allMap.get(d)).map(getAttendanceVal).orElse(null)).collect(Collectors.toList()); + item.setData(data); + return item; + } }