12-17-人员管理大屏-修复循环注入版-修复timeType版-消息回复-完善-修复版-优化分包公司查询版-修复数据-优化查询
This commit is contained in:
@ -2879,6 +2879,28 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
|
||||
List<SysUserVo> users = userMapper.selectVoList(Wrappers.lambdaQuery());
|
||||
//查询分包公司用于填充名称
|
||||
List<SubContractor> subContractors = baseMapper.getSubContractor();
|
||||
//查询打卡表进行优化
|
||||
// 今天所有用户的打卡记录
|
||||
List<BusAttendance> attendanceList = new ArrayList<>();
|
||||
LambdaQueryWrapper<BusAttendance> lqw1 = new LambdaQueryWrapper<BusAttendance>()
|
||||
.eq(BusAttendance::getProjectId, projectId);
|
||||
// .eq(BusAttendance::getUserId, userId);
|
||||
if (timeType == 1L) {
|
||||
lqw1.eq(BusAttendance::getClockDate, LocalDate.now());
|
||||
} else if (timeType == 2L) {
|
||||
// 获取本周一到今天的日期
|
||||
LocalDate today = LocalDate.now();
|
||||
LocalDate monday = today.with(DayOfWeek.MONDAY);
|
||||
lqw1.between(BusAttendance::getClockDate, monday, today);
|
||||
}else if (timeType == 3L){
|
||||
// 获取本月1号到今天的日期
|
||||
LocalDate today = LocalDate.now();
|
||||
LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth());
|
||||
lqw1.between(BusAttendance::getClockDate, firstDayOfMonth, today);
|
||||
}
|
||||
lqw1.in(BusAttendance::getClockStatus, ATTENDANCE_STATUS)
|
||||
.apply(" user_id not in (select sys_user_id from sub_construction_user where project_id = {0} and user_role != '0' )", projectId);
|
||||
attendanceList = this.list(lqw1);
|
||||
//根据分包和班组的id进行分类 统计都有多少人 未入场人员没有两项数据 无法统计 仅能计算为总数
|
||||
List<RyglWebSocketVo> fbList = new ArrayList<>();
|
||||
List<RyglWebSocketVo> bzList = new ArrayList<>();
|
||||
@ -2897,9 +2919,9 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
|
||||
}
|
||||
//判断userType app用户类型 0-施工人员 1-管理人员 2-分包人员
|
||||
if (sysUserVo.getAppUserType().equals("0")){
|
||||
checkAndSetValue(bzList,constructionUser,0,timeType,projectId,subContractors);
|
||||
checkAndSetValue(bzList,constructionUser,0,timeType,projectId,subContractors,attendanceList);
|
||||
}else if (sysUserVo.getAppUserType().equals("2")){
|
||||
checkAndSetValue(fbList,constructionUser,2,timeType,projectId,subContractors);
|
||||
checkAndSetValue(fbList,constructionUser,2,timeType,projectId,subContractors,attendanceList);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2933,19 +2955,6 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
|
||||
zrs = zrs + vo.getZrs();
|
||||
}
|
||||
|
||||
//总人数
|
||||
// if (timeType == 2L) {
|
||||
// // 获取本周一到今天的天数
|
||||
// LocalDate today = LocalDate.now();
|
||||
// LocalDate monday = today.with(DayOfWeek.MONDAY);
|
||||
// timeType = ChronoUnit.DAYS.between(monday, today) + 1;
|
||||
// } else if (timeType == 3L) {
|
||||
// // 获取本月1日到今天的天数
|
||||
// LocalDate today = LocalDate.now();
|
||||
// LocalDate firstDay = today.withDayOfMonth(1);
|
||||
// timeType = ChronoUnit.DAYS.between(firstDay, today) + 1;
|
||||
// }
|
||||
// zrs = (long) list.size() * timeType;
|
||||
//总出勤人
|
||||
cqr = fbcqr + bzcqr;
|
||||
//出勤率
|
||||
@ -2964,7 +2973,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
|
||||
/**
|
||||
* getAttendanceInfo附属方法
|
||||
*/
|
||||
private void checkAndSetValue(List<RyglWebSocketVo> ryglWebSocketVoList, SubConstructionUser info,int type,Long time,Long projectId,List<SubContractor> SubContractors){
|
||||
private void checkAndSetValue(List<RyglWebSocketVo> ryglWebSocketVoList, SubConstructionUser info,int type,Long time,Long projectId,List<SubContractor> SubContractors,List<BusAttendance> attendanceList){
|
||||
//timeType 1:今天 2:本周 3:本月 此参数的校验放在连接时获取参数进行校验
|
||||
if (time == 2L) {
|
||||
// 获取本周一到今天的天数
|
||||
@ -2986,7 +2995,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
|
||||
ryglWebSocketVoList.stream().filter(item -> Objects.equals(item.getZzId(), info.getContractorId())).findFirst().ifPresentOrElse(
|
||||
item -> {
|
||||
item.setZrs(item.getZrs() + finalTime);
|
||||
item.setDgrs(item.getDgrs() + getDgrs(info.getSysUserId(),finalTime,projectId));
|
||||
item.setDgrs(item.getDgrs() + getDgrs(info.getSysUserId(),finalTime,projectId,attendanceList));
|
||||
}, () -> {
|
||||
RyglWebSocketVo ryglWebSocketVo = new RyglWebSocketVo();
|
||||
//分包组织id
|
||||
@ -3002,7 +3011,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
|
||||
}
|
||||
//总人数 先设置1
|
||||
ryglWebSocketVo.setZrs(finalTime);
|
||||
ryglWebSocketVo.setDgrs(getDgrs(info.getSysUserId(),finalTime,projectId));
|
||||
ryglWebSocketVo.setDgrs(getDgrs(info.getSysUserId(),finalTime,projectId,attendanceList));
|
||||
ryglWebSocketVoList.add(ryglWebSocketVo);
|
||||
});
|
||||
|
||||
@ -3012,7 +3021,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
|
||||
ryglWebSocketVoList.stream().filter(item -> Objects.equals(item.getZzId(), info.getTeamId())).findFirst().ifPresentOrElse(
|
||||
item -> {
|
||||
item.setZrs(item.getZrs() + finalTime);
|
||||
item.setDgrs(item.getDgrs() + getDgrs(info.getSysUserId(),finalTime,projectId));
|
||||
item.setDgrs(item.getDgrs() + getDgrs(info.getSysUserId(),finalTime,projectId,attendanceList));
|
||||
}, () -> {
|
||||
RyglWebSocketVo ryglWebSocketVo = new RyglWebSocketVo();
|
||||
//班组组织id
|
||||
@ -3021,7 +3030,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
|
||||
ryglWebSocketVo.setZzmc(info.getTeamName());
|
||||
//总人数
|
||||
ryglWebSocketVo.setZrs(finalTime);
|
||||
ryglWebSocketVo.setDgrs(getDgrs(info.getSysUserId(),finalTime,projectId));
|
||||
ryglWebSocketVo.setDgrs(getDgrs(info.getSysUserId(),finalTime,projectId,attendanceList));
|
||||
ryglWebSocketVoList.add(ryglWebSocketVo);
|
||||
});
|
||||
}
|
||||
@ -3035,35 +3044,36 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
|
||||
/**
|
||||
* 获取到岗人数 根据时间类型 返回到岗次数
|
||||
*/
|
||||
private Long getDgrs(Long userId,Long time,Long projectId) {
|
||||
private Long getDgrs(Long userId,Long time,Long projectId,List<BusAttendance> attendanceList) {
|
||||
// 今天所有用户的打卡记录
|
||||
List<BusAttendance> attendanceList;
|
||||
LambdaQueryWrapper<BusAttendance> lqw = new LambdaQueryWrapper<BusAttendance>()
|
||||
.eq(BusAttendance::getProjectId, projectId)
|
||||
.eq(BusAttendance::getUserId, userId);
|
||||
if (time == 1L) {
|
||||
lqw.eq(BusAttendance::getClockDate, LocalDate.now());
|
||||
} else if (time == 2L) {
|
||||
// 获取本周一到今天的日期
|
||||
LocalDate today = LocalDate.now();
|
||||
LocalDate monday = today.with(DayOfWeek.MONDAY);
|
||||
lqw.between(BusAttendance::getClockDate, monday, today);
|
||||
}else if (time == 3L){
|
||||
// 获取本月1号到今天的日期
|
||||
LocalDate today = LocalDate.now();
|
||||
LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth());
|
||||
lqw.between(BusAttendance::getClockDate, firstDayOfMonth, today);
|
||||
}
|
||||
lqw.in(BusAttendance::getClockStatus, ATTENDANCE_STATUS)
|
||||
.apply(" user_id not in (select sys_user_id from sub_construction_user where project_id = {0} and user_role != '0' )", projectId);
|
||||
attendanceList = this.list(lqw);
|
||||
if (attendanceList == null || attendanceList.isEmpty()){
|
||||
List<BusAttendance> busAttendances = attendanceList.stream().filter(item -> Objects.equals(item.getUserId(), userId)).toList();
|
||||
// List<BusAttendance> attendanceList;
|
||||
// LambdaQueryWrapper<BusAttendance> lqw = new LambdaQueryWrapper<BusAttendance>()
|
||||
// .eq(BusAttendance::getProjectId, projectId)
|
||||
// .eq(BusAttendance::getUserId, userId);
|
||||
// if (time == 1L) {
|
||||
// lqw.eq(BusAttendance::getClockDate, LocalDate.now());
|
||||
// } else if (time == 2L) {
|
||||
// // 获取本周一到今天的日期
|
||||
// LocalDate today = LocalDate.now();
|
||||
// LocalDate monday = today.with(DayOfWeek.MONDAY);
|
||||
// lqw.between(BusAttendance::getClockDate, monday, today);
|
||||
// }else if (time == 3L){
|
||||
// // 获取本月1号到今天的日期
|
||||
// LocalDate today = LocalDate.now();
|
||||
// LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth());
|
||||
// lqw.between(BusAttendance::getClockDate, firstDayOfMonth, today);
|
||||
// }
|
||||
// lqw.in(BusAttendance::getClockStatus, ATTENDANCE_STATUS)
|
||||
// .apply(" user_id not in (select sys_user_id from sub_construction_user where project_id = {0} and user_role != '0' )", projectId);
|
||||
// attendanceList = this.list(lqw);
|
||||
if (busAttendances.isEmpty()){
|
||||
return 0L;
|
||||
}
|
||||
|
||||
final Long[] count = {0L};
|
||||
//根据日期分组
|
||||
Map<LocalDate, List<BusAttendance>> collect = attendanceList.stream().collect(Collectors.groupingBy(BusAttendance::getClockDate));
|
||||
Map<LocalDate, List<BusAttendance>> collect = busAttendances.stream().collect(Collectors.groupingBy(BusAttendance::getClockDate));
|
||||
collect.forEach((key, value) -> {
|
||||
//每一天分组 同一天去重
|
||||
List<Long> list = value.stream().map(BusAttendance::getUserId).distinct().toList();
|
||||
|
||||
Reference in New Issue
Block a user