|
@@ -10971,8 +10971,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
List<Integer> taskIds = reportRateTaskVOList.stream().distinct().map(r -> r.getTaskId()).collect(Collectors.toList());
|
|
List<Integer> taskIds = reportRateTaskVOList.stream().distinct().map(r -> r.getTaskId()).collect(Collectors.toList());
|
|
System.out.println(taskIds.toString());
|
|
System.out.println(taskIds.toString());
|
|
taskIds.add(-1);
|
|
taskIds.add(-1);
|
|
- List<Map<String,Object>> reportList=reportMapper.getUserReportTimelinessRateWithTask(companyId,taskIds);
|
|
|
|
- Map<Object, List<Map<String, Object>>> listMap = reportList.stream().filter(item->!StringUtils.isEmpty(item.get("userName"))).collect(Collectors.groupingBy(rp -> rp.get("userName")));
|
|
|
|
|
|
+ List<Map<String,Object>> reportList = reportMapper.getUserReportTimelinessRateWithTask(companyId,taskIds);
|
|
|
|
+// Map<Object, List<Map<String, Object>>> listMap = reportList.stream().filter(item->!StringUtils.isEmpty(item.get("taskId"))).collect(Collectors.groupingBy(rp -> rp.get("userName")));
|
|
//获取到公司设置的特殊节假日设置
|
|
//获取到公司设置的特殊节假日设置
|
|
List<HolidaySetting> holidaySettingList = holidaySettingService.list(new LambdaQueryWrapper<HolidaySetting>().eq(HolidaySetting::getCompanyId, companyId).isNotNull(HolidaySetting::getHolidayDate));
|
|
List<HolidaySetting> holidaySettingList = holidaySettingService.list(new LambdaQueryWrapper<HolidaySetting>().eq(HolidaySetting::getCompanyId, companyId).isNotNull(HolidaySetting::getHolidayDate));
|
|
List<HolidaySetting> allUsersSetting = holidaySettingList.stream().filter(h -> h.getRangeType() == 0).collect(Collectors.toList());
|
|
List<HolidaySetting> allUsersSetting = holidaySettingList.stream().filter(h -> h.getRangeType() == 0).collect(Collectors.toList());
|
|
@@ -10991,21 +10991,21 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
rateTaskVO.setDepartmentName(dept.getDepartmentName());
|
|
rateTaskVO.setDepartmentName(dept.getDepartmentName());
|
|
}
|
|
}
|
|
|
|
|
|
- List<Map<String, Object>> mapList = listMap.get(user.getName());
|
|
|
|
|
|
+ List<Map<String, Object>> curTaskUserReportList = reportList.stream().filter(r->r.get("taskId")!=null
|
|
|
|
+ &&Integer.parseInt(r.get("taskId").toString()) == rateTaskVO.getTaskId() && r.get("userId")!=null
|
|
|
|
+ &&r.get("userId").equals(rateTaskVO.getUserId())).collect(Collectors.toList());
|
|
LocalDate startDate = rateTaskVO.getStartDate();
|
|
LocalDate startDate = rateTaskVO.getStartDate();
|
|
- LocalDate endDate = rateTaskVO.getEndDate();
|
|
|
|
|
|
+ int lines = timeType.getTimeliness();//0-当天,1-次日,2-第二天
|
|
|
|
+ LocalDate maxEndDate = LocalDate.now().minusDays(lines + 1);//最大只检测到当前日期的前几天
|
|
|
|
+ LocalDate endDate = rateTaskVO.getEndDate() == null ? maxEndDate :(rateTaskVO.getEndDate().isAfter(maxEndDate)?maxEndDate:rateTaskVO.getEndDate());
|
|
AtomicReference<List<LocalDate>> listAtomicReference = new AtomicReference<>(getDays(startDate, endDate));
|
|
AtomicReference<List<LocalDate>> listAtomicReference = new AtomicReference<>(getDays(startDate, endDate));
|
|
long days = listAtomicReference.get().size();
|
|
long days = listAtomicReference.get().size();
|
|
for (LocalDate localDateTime : listAtomicReference.get()) {
|
|
for (LocalDate localDateTime : listAtomicReference.get()) {
|
|
- if(mapList!=null){
|
|
|
|
- //在非工作日下 填报了的情况下 及时填报了就算作及时率计算的基数
|
|
|
|
- if(localDateTime!=null&& !WorkDayCalculateUtils.isWorkDay(localDateTime)&&!mapList.stream().anyMatch(ml->{
|
|
|
|
- Integer taskId=ml.get("taskId")!=null?Integer.parseInt(ml.get("taskId").toString()):null;
|
|
|
|
- if (taskId == null || !taskId.equals(rateTaskVO.getTaskId())) {
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
- Date date = (Date) ml.get("createDate");
|
|
|
|
- LocalDate createDate = date != null ? date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate() : null;
|
|
|
|
|
|
+ if(curTaskUserReportList!=null && curTaskUserReportList.size() > 0){
|
|
|
|
+ //在非工作日下,并且没有填写日报,就不算填报基数。 如果非工作日填了,是要算成基数的
|
|
|
|
+ if(!WorkDayCalculateUtils.isWorkDay(localDateTime)&&!curTaskUserReportList.stream().anyMatch(ml->{
|
|
|
|
+ java.sql.Date date = (java.sql.Date) ml.get("createDate");
|
|
|
|
+ LocalDate createDate = date.toLocalDate();
|
|
return createDate.isEqual(localDateTime);
|
|
return createDate.isEqual(localDateTime);
|
|
})){
|
|
})){
|
|
days-=1;
|
|
days-=1;
|
|
@@ -11074,13 +11074,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
days++;
|
|
days++;
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
- if(mapList!=null&&mapList.stream().anyMatch(ml->{
|
|
|
|
- Integer taskId=ml.get("taskId")!=null?Integer.parseInt(ml.get("taskId").toString()):null;
|
|
|
|
- if (taskId == null || !taskId.equals(rateTaskVO.getTaskId())) {
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
- Date date = (Date) ml.get("createDate");
|
|
|
|
- LocalDate createDate = date != null ? date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate() : null;
|
|
|
|
|
|
+ if(curTaskUserReportList!=null&&curTaskUserReportList.stream().anyMatch(ml->{
|
|
|
|
+ java.sql.Date date = (java.sql.Date) ml.get("createDate");
|
|
|
|
+ LocalDate createDate = date.toLocalDate();
|
|
return createDate.isEqual(localDateTime.toLocalDate());
|
|
return createDate.isEqual(localDateTime.toLocalDate());
|
|
})){
|
|
})){
|
|
days++;
|
|
days++;
|
|
@@ -11090,22 +11086,16 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
}
|
|
}
|
|
|
|
|
|
int num=0;
|
|
int num=0;
|
|
- if(mapList!=null){
|
|
|
|
- for (Map<String, Object> map : mapList) {
|
|
|
|
|
|
+ if(curTaskUserReportList!=null){
|
|
|
|
+ for (Map<String, Object> map : curTaskUserReportList) {
|
|
if (map.get("createDate")!=null && map.get("createTime")!=null) {
|
|
if (map.get("createDate")!=null && map.get("createTime")!=null) {
|
|
Map<String, Object> objectMap = new HashMap<>();
|
|
Map<String, Object> objectMap = new HashMap<>();
|
|
- Date date = (Date) map.get("createDate");
|
|
|
|
|
|
+ java.sql.Date date = (java.sql.Date) map.get("createDate");
|
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
//去掉sql返回的毫秒值
|
|
//去掉sql返回的毫秒值
|
|
- java.sql.Date createTime = (java.sql.Date) map.get("createTime");
|
|
|
|
- LocalDate createDate = date != null ? date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate() : null;
|
|
|
|
- // 针对美莱德 去除2024-02-09
|
|
|
|
- if (user.getCompanyId() == 876) {
|
|
|
|
- if (createDate.isEqual(LocalDate.parse("2024-02-09"))) {
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- LocalDate createTimeDate = createTime.toLocalDate();
|
|
|
|
|
|
+ java.sql.Timestamp createTime = (java.sql.Timestamp) map.get("createTime");
|
|
|
|
+ LocalDate createDate = date.toLocalDate();
|
|
|
|
+ LocalDate createTimeDate = createTime.toLocalDateTime().toLocalDate();
|
|
//根据设置
|
|
//根据设置
|
|
switch (timeliness) {
|
|
switch (timeliness) {
|
|
case 1:
|
|
case 1:
|
|
@@ -11133,14 +11123,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
- //处理漏填的情况,漏填的也算不及时
|
|
|
|
- boolean hasMissReport = false;
|
|
|
|
- for (LocalDate localDateTime : listAtomicReference.get()) {
|
|
|
|
- if(localDateTime!=null&&!WorkDayCalculateUtils.isWorkDay(localDateTime)){
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- hasMissReport = true;
|
|
|
|
- }
|
|
|
|
BigDecimal bigDecimal=new BigDecimal(num);
|
|
BigDecimal bigDecimal=new BigDecimal(num);
|
|
BigDecimal bigDecimalWithLeave=new BigDecimal(num+(daysWithLeave-days));
|
|
BigDecimal bigDecimalWithLeave=new BigDecimal(num+(daysWithLeave-days));
|
|
BigDecimal divide;
|
|
BigDecimal divide;
|