举例
@Override
public Map<String, Object> getCockpitStaffAttendanceTask() {
Map<String, Object> map = new HashMap<>();
int chuqin = 0; //出勤
int queqin = 0; //缺勤
int chidao = 0; //迟到
int zaotui = 0; //早退
//获取所有设备卡号 并且已经绑定了人
List<CardDeviceInfo> cardDeviceInfoList = cardDeviceInfoService.list(new LambdaQueryWrapper<CardDeviceInfo>().isNotNull(CardDeviceInfo::getStaffId).eq(CardDeviceInfo::getCardStatus,0));
for (CardDeviceInfo cardDeviceInfo : cardDeviceInfoList) {
if (StringUtils.isNotEmpty(cardDeviceInfo.getLandId()) && StringUtils.isNotEmpty(cardDeviceInfo.getJobTimeId())){
//判断当天是否有轨迹
CardDeviceTrajectoryInfo cardDeviceTrajectoryInfosToDay = sanitationJobStatisticsMapper.selectToDayTrajectory(cardDeviceInfo.getImei());
if (ObjectUtils.isNotEmpty(cardDeviceTrajectoryInfosToDay)){
chuqin += 1;
}else{
queqin += 1;
}
//先处理作业地块和作业时间
String landId = cardDeviceInfo.getLandId();
String[] jobTypeSplit = cardDeviceInfo.getJobTimeId().split(",");
List<String> jobTypeStartTimeList = new ArrayList<>();
List<String> jobTypeEndTimeList = new ArrayList<>();
List<String> geomList = sanitationJobStatisticsMapper.getGeomByLandId(Integer.parseInt(landId));
for (String jobTypeId : jobTypeSplit) {
// (防止多个时间段)根据作业类型编号 获取 作业时间段的开始时间以及结束时间 xml中使用forEach提取
List<SanitationRoadOperationTimeInfo> list = sanitationRoadOperationTimeInfoService.lambdaQuery().eq(SanitationRoadOperationTimeInfo::getPid, Integer.parseInt(jobTypeId)).list();
list