修改bug
This commit is contained in:
parent
0cf0c64722
commit
4d1938005f
@ -16,12 +16,14 @@ import com.zhgd.file.FileUtil;
|
|||||||
import com.zhgd.jeecg.common.api.vo.Result;
|
import com.zhgd.jeecg.common.api.vo.Result;
|
||||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||||
import com.zhgd.xmgl.async.AsyncAttendance;
|
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.entity.Project;
|
||||||
import com.zhgd.xmgl.modules.project.service.IProjectService;
|
import com.zhgd.xmgl.modules.project.service.IProjectService;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.WorkerAttendance;
|
import com.zhgd.xmgl.modules.worker.entity.WorkerAttendance;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.WorkerDailyAttendanceStatisticsV2;
|
import com.zhgd.xmgl.modules.worker.entity.WorkerDailyAttendanceStatisticsV2;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.dto.WorkerDailyAttendanceStatisticsV2Dto;
|
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.ExceptionHourStatisticsListVo;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.vo.StatisticsListVo;
|
import com.zhgd.xmgl.modules.worker.entity.vo.StatisticsListVo;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.vo.WorkerDailyAttendanceStatisticsV2Vo;
|
import com.zhgd.xmgl.modules.worker.entity.vo.WorkerDailyAttendanceStatisticsV2Vo;
|
||||||
|
|||||||
@ -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;
|
||||||
|
}
|
||||||
@ -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;
|
||||||
|
}
|
||||||
@ -6,12 +6,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.WorkerDailyAttendanceStatisticsV2;
|
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 com.zhgd.xmgl.modules.worker.entity.vo.WorkerDailyAttendanceStatisticsV2Vo;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 员工每日的考勤统计记录v2
|
* @Description: 员工每日的考勤统计记录v2
|
||||||
@ -51,4 +54,8 @@ public interface WorkerDailyAttendanceStatisticsV2Mapper extends BaseMapper<Work
|
|||||||
WorkerDailyAttendanceStatisticsV2Vo queryById(String id);
|
WorkerDailyAttendanceStatisticsV2Vo queryById(String id);
|
||||||
|
|
||||||
String getMaxTaskAttendanceDate();
|
String getMaxTaskAttendanceDate();
|
||||||
|
|
||||||
|
CountWorkerDailyAttendanceStatisticsV2Vo countWorkerDailyAttendanceStatisticsV2(Map<String, Object> param);
|
||||||
|
|
||||||
|
List<CountWorkerDailyAttendanceStatisticsV2ByDateBo> countWorkerDailyAttendanceStatisticsV2ByDate(Map<String, Object> param);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,10 +3,12 @@ package com.zhgd.xmgl.modules.worker.service;
|
|||||||
import cn.hutool.core.date.DateTime;
|
import cn.hutool.core.date.DateTime;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
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.WorkerAttendanceRuleV2;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.WorkerDailyAttendanceStatisticsV2;
|
import com.zhgd.xmgl.modules.worker.entity.WorkerDailyAttendanceStatisticsV2;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.bo.CalAttendanceBo;
|
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.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.entity.vo.WorkerDailyAttendanceStatisticsV2Vo;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -87,4 +89,8 @@ public interface IWorkerDailyAttendanceStatisticsV2Service extends IService<Work
|
|||||||
* @param map
|
* @param map
|
||||||
*/
|
*/
|
||||||
void recalculateAttendanceV2(Map<String, Object> map);
|
void recalculateAttendanceV2(Map<String, Object> map);
|
||||||
|
|
||||||
|
CountWorkerDailyAttendanceStatisticsV2Vo countWorkerDailyAttendanceStatisticsV2(Map<String, Object> param);
|
||||||
|
|
||||||
|
ChartDataVo countWorkerDailyAttendanceStatisticsV2ByDate(Map<String, Object> param);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,13 +12,17 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||||
import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
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.WorkerAttendance;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.WorkerAttendanceRuleV2;
|
import com.zhgd.xmgl.modules.worker.entity.WorkerAttendanceRuleV2;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.WorkerDailyAttendanceStatisticsV2;
|
import com.zhgd.xmgl.modules.worker.entity.WorkerDailyAttendanceStatisticsV2;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
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.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.bo.Hour2dayJsonBo;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.dto.WorkerDailyAttendanceStatisticsV2Dto;
|
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.entity.vo.WorkerDailyAttendanceStatisticsV2Vo;
|
||||||
import com.zhgd.xmgl.modules.worker.mapper.WorkerDailyAttendanceStatisticsV2Mapper;
|
import com.zhgd.xmgl.modules.worker.mapper.WorkerDailyAttendanceStatisticsV2Mapper;
|
||||||
import com.zhgd.xmgl.modules.worker.service.IWorkerAttendanceRuleV2Service;
|
import com.zhgd.xmgl.modules.worker.service.IWorkerAttendanceRuleV2Service;
|
||||||
@ -423,7 +427,9 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl<Wo
|
|||||||
DateRange range = DateUtil.range(startTime, endTime, DateField.DAY_OF_YEAR);
|
DateRange range = DateUtil.range(startTime, endTime, DateField.DAY_OF_YEAR);
|
||||||
String projectSn = MapUtils.getString(map, "projectSn");
|
String projectSn = MapUtils.getString(map, "projectSn");
|
||||||
List<WorkerInfo> workerInfos = workerInfoService.list(new LambdaQueryWrapper<WorkerInfo>()
|
List<WorkerInfo> workerInfos = workerInfoService.list(new LambdaQueryWrapper<WorkerInfo>()
|
||||||
.eq(WorkerInfo::getProjectSn, projectSn));
|
.eq(WorkerInfo::getProjectSn, projectSn)
|
||||||
|
.eq(WorkerInfo::getInserviceType, 1)
|
||||||
|
);
|
||||||
Map<Long, WorkerAttendanceRuleV2> groupToRuleMap = workerAttendanceRuleV2Service.list(new LambdaQueryWrapper<WorkerAttendanceRuleV2>().eq(WorkerAttendanceRuleV2::getProjectSn, projectSn))
|
Map<Long, WorkerAttendanceRuleV2> groupToRuleMap = workerAttendanceRuleV2Service.list(new LambdaQueryWrapper<WorkerAttendanceRuleV2>().eq(WorkerAttendanceRuleV2::getProjectSn, projectSn))
|
||||||
.stream().collect(Collectors.toMap(WorkerAttendanceRuleV2::getGroupV2Id, Function.identity(), (o1, o2) -> o1));
|
.stream().collect(Collectors.toMap(WorkerAttendanceRuleV2::getGroupV2Id, Function.identity(), (o1, o2) -> o1));
|
||||||
List<WorkerAttendance> attendanceDbs = workerAttendanceService.list(new LambdaQueryWrapper<WorkerAttendance>()
|
List<WorkerAttendance> attendanceDbs = workerAttendanceService.list(new LambdaQueryWrapper<WorkerAttendance>()
|
||||||
@ -448,4 +454,49 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl<Wo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CountWorkerDailyAttendanceStatisticsV2Vo countWorkerDailyAttendanceStatisticsV2(Map<String, Object> param) {
|
||||||
|
return baseMapper.countWorkerDailyAttendanceStatisticsV2(param);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ChartDataVo countWorkerDailyAttendanceStatisticsV2ByDate(Map<String, Object> param) {
|
||||||
|
String projectSn = MapUtils.getString(param, "projectSn");
|
||||||
|
List<String> 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<CountWorkerDailyAttendanceStatisticsV2ByDateBo> all = baseMapper.countWorkerDailyAttendanceStatisticsV2ByDate(param);
|
||||||
|
Map<String, CountWorkerDailyAttendanceStatisticsV2ByDateBo> allMap = all.stream().collect(Collectors.toMap(CountWorkerDailyAttendanceStatisticsV2ByDateBo::getXName, Function.identity()));
|
||||||
|
List<SeriesItem> 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<String> dateTimeStrList, Map<String, CountWorkerDailyAttendanceStatisticsV2ByDateBo> allMap, Function<CountWorkerDailyAttendanceStatisticsV2ByDateBo, Number> getAttendanceVal) {
|
||||||
|
SeriesItem item = new SeriesItem();
|
||||||
|
item.setName(yName);
|
||||||
|
List<Number> data = dateTimeStrList.stream().map(d -> Optional.ofNullable(allMap.get(d)).map(getAttendanceVal).orElse(null)).collect(Collectors.toList());
|
||||||
|
item.setData(data);
|
||||||
|
return item;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user