|
@@ -5792,6 +5792,53 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
NumberFormat nf = NumberFormat.getPercentInstance();
|
|
|
li.put("proportion",nf.format(divide));
|
|
|
});
|
|
|
+ Integer companyId = user.getCompanyId();
|
|
|
+ WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
|
|
|
+ List<LeaveSheet> leaveSheet = leaveSheetMapper.selectLeave(companyId,startDate,endDate);
|
|
|
+ List<Department> deptName = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
|
|
|
+ TimeType allDay = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", companyId));
|
|
|
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
+ LocalDate localStartDate = LocalDate.parse(startDate, dateTimeFormatter);
|
|
|
+ LocalDate localEndDate = LocalDate.parse(endDate, dateTimeFormatter);
|
|
|
+ for (Map<String, Object> map : list) {
|
|
|
+ //取部门名
|
|
|
+ for (Department department : deptName) {
|
|
|
+ if (map.get("deptId").toString().equals(department.getDepartmentId().toString())){
|
|
|
+ if (wxCorpInfo!=null && wxCorpInfo.getSaasSyncContact()==1){
|
|
|
+ map.put("deptName",getWxDepartment(department));
|
|
|
+ }else {
|
|
|
+ map.put("deptName",getSupDepartment(department));
|
|
|
+ }
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //计算请假时间
|
|
|
+ Float leaveSum = 0F;
|
|
|
+ for (LeaveSheet sheet : leaveSheet) {
|
|
|
+ if (sheet.getOwnerId().equals(map.get("userId"))){
|
|
|
+// System.err.println(sheet.getOwnerName());
|
|
|
+// System.err.println(sheet.getStartDate());
|
|
|
+// System.err.println(sheet.getEndDate());
|
|
|
+ Float timeHours = sheet.getTimeHours();
|
|
|
+ //若请假开始时间不在筛选时间内
|
|
|
+ if (sheet.getStartDate().isBefore(localStartDate)) {
|
|
|
+ long day = localStartDate.toEpochDay() - sheet.getStartDate().toEpochDay();
|
|
|
+ timeHours -= day * allDay.getAllday();
|
|
|
+// System.err.println("请假开始时间不在筛选时间内,应减去" + day * allDay.getAllday()+"小时");
|
|
|
+ }
|
|
|
+ //若请假结束时间不在筛选时间内
|
|
|
+ if (sheet.getEndDate().isAfter(localEndDate)) {
|
|
|
+ long day = sheet.getEndDate().toEpochDay() - localEndDate.toEpochDay();
|
|
|
+ timeHours -= day * allDay.getAllday();
|
|
|
+// System.err.println("请假结束时间不在筛选时间内,应减去"+day * allDay.getAllday()+"小时");
|
|
|
+ }
|
|
|
+// System.err.println("计算完的时间为:" + timeHours);
|
|
|
+ leaveSum += timeHours;
|
|
|
+ }
|
|
|
+ }
|
|
|
+// System.err.println("总时间为:"+leaveSum);
|
|
|
+ map.put("leaveSum",leaveSum + "h");
|
|
|
+ }
|
|
|
HashMap map=new HashMap();
|
|
|
map.put("total",total);
|
|
|
map.put("result",list);
|
|
@@ -5826,11 +5873,55 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
}
|
|
|
}
|
|
|
List<Map<String, Object>> list = projectMapper.getUserWorkingTimeList(userId, user.getCompanyId(), startDate, endDate, projectId,null,null,null,deptIds);
|
|
|
- //String[] string={"人员","工号","普通项目工时","公共项目工时","总工时","公共项目工时占比"};
|
|
|
- String[] string={MessageUtils.message("entry.personnel"),MessageUtils.message("entry.No"),MessageUtils.message("entry.GenProHours"),MessageUtils.message("entry.PubProHours"),MessageUtils.message("entry.totalManHours"),MessageUtils.message("entry.PubProHoursProp")};
|
|
|
+ //String[] string={"人员","部门","工号","请假时长","普通项目工时","公共项目工时","总工时","公共项目工时占比"};
|
|
|
+ String[] string={MessageUtils.message("entry.personnel"),MessageUtils.message("excel.department"),MessageUtils.message("entry.No"),MessageUtils.message("leave.duration"),MessageUtils.message("entry.GenProHours"),MessageUtils.message("entry.PubProHours"),MessageUtils.message("entry.totalManHours"),MessageUtils.message("entry.PubProHoursProp")};
|
|
|
List<List<String>> dataList=new ArrayList<>();
|
|
|
dataList.add(Arrays.asList(string));
|
|
|
+ Integer companyId = user.getCompanyId();
|
|
|
+ List<LeaveSheet> leaveSheet = leaveSheetMapper.selectLeave(companyId,startDate,endDate);
|
|
|
+ List<Department> deptName = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
|
|
|
+ TimeType allDay = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", companyId));
|
|
|
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
+ LocalDate localStartDate = LocalDate.parse(startDate, dateTimeFormatter);
|
|
|
+ LocalDate localEndDate = LocalDate.parse(endDate, dateTimeFormatter);
|
|
|
for(Map<String,Object> item:list){
|
|
|
+ //取部门名
|
|
|
+ for (Department department : deptName) {
|
|
|
+ if (item.get("deptId").toString().equals(department.getDepartmentId().toString())){
|
|
|
+ if (wxCorpInfo!=null && wxCorpInfo.getSaasSyncContact()==1){
|
|
|
+ item.put("deptName",getWxDepartment(department));
|
|
|
+ }else {
|
|
|
+ item.put("deptName",getSupDepartment(department));
|
|
|
+ }
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //计算请假时间
|
|
|
+ Float leaveSum = 0F;
|
|
|
+ for (LeaveSheet sheet : leaveSheet) {
|
|
|
+ if (sheet.getOwnerId().equals(item.get("userId"))){
|
|
|
+// System.err.println(sheet.getOwnerName());
|
|
|
+// System.err.println(sheet.getStartDate());
|
|
|
+// System.err.println(sheet.getEndDate());
|
|
|
+ Float timeHours = sheet.getTimeHours();
|
|
|
+ //若请假开始时间不在筛选时间内
|
|
|
+ if (sheet.getStartDate().isBefore(localStartDate)) {
|
|
|
+ long day = localStartDate.toEpochDay() - sheet.getStartDate().toEpochDay();
|
|
|
+ timeHours -= day * allDay.getAllday();
|
|
|
+// System.err.println("请假开始时间不在筛选时间内,应减去" + day * allDay.getAllday()+"小时");
|
|
|
+ }
|
|
|
+ //若请假结束时间不在筛选时间内
|
|
|
+ if (sheet.getEndDate().isAfter(localEndDate)) {
|
|
|
+ long day = sheet.getEndDate().toEpochDay() - localEndDate.toEpochDay();
|
|
|
+ timeHours -= day * allDay.getAllday();
|
|
|
+// System.err.println("请假结束时间不在筛选时间内,应减去"+day * allDay.getAllday()+"小时");
|
|
|
+ }
|
|
|
+// System.err.println("计算完的时间为:" + timeHours);
|
|
|
+ leaveSum += timeHours;
|
|
|
+ }
|
|
|
+ }
|
|
|
+// System.err.println("总时间为:"+leaveSum);
|
|
|
+ item.put("leaveSum",leaveSum + "h");
|
|
|
List<String> subList=new ArrayList<>();
|
|
|
double isPublic = (double) item.get("isPublic");
|
|
|
double workingTime = (double) item.get("workingTime");
|
|
@@ -5842,7 +5933,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
}else {
|
|
|
subList.add(String.valueOf(item.get("username")));
|
|
|
}
|
|
|
+ subList.add(String.valueOf(item.get("deptName")));
|
|
|
subList.add(String.valueOf(StringUtils.isEmpty(item.get("jobNumber"))?"":item.get("jobNumber")));
|
|
|
+ subList.add(String.valueOf(item.get("leaveSum")));
|
|
|
subList.add(String.valueOf(item.get("unPublic")));
|
|
|
subList.add(String.valueOf(item.get("isPublic")));
|
|
|
subList.add(String.valueOf(item.get("workingTime")));
|
|
@@ -5934,8 +6027,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
List<Map<String,Object>> dataList=new ArrayList<>();
|
|
|
long days =dateTimeList.size();
|
|
|
List<LeaveSheet> leaveSheets = leaveSheetList.stream().filter(ls -> ls.getOwnerId().equals(user.getId())
|
|
|
- &&((ls.getStartDate().isAfter(ChronoLocalDate.from(sDate))||ls.getStartDate().isEqual(ChronoLocalDate.from(sDate)))&&(ls.getStartDate().isBefore(ChronoLocalDate.from(eDate))||ls.getStartDate().isEqual(ChronoLocalDate.from(eDate))))
|
|
|
- &&((ls.getEndDate().isBefore(ChronoLocalDate.from(eDate))||ls.getEndDate().isEqual(ChronoLocalDate.from(eDate)))&&(ls.getEndDate().isAfter(ChronoLocalDate.from(sDate))||ls.getEndDate().isEqual(ChronoLocalDate.from(sDate))))).collect(Collectors.toList());
|
|
|
+ &&((ls.getStartDate().isBefore(ChronoLocalDate.from(eDate))||ls.getStartDate().isEqual(ChronoLocalDate.from(eDate))))
|
|
|
+ &&((ls.getEndDate().isAfter(ChronoLocalDate.from(sDate))||ls.getEndDate().isEqual(ChronoLocalDate.from(sDate))))).collect(Collectors.toList());
|
|
|
TimelinessRateVO timelinessRateVO=new TimelinessRateVO();
|
|
|
timelinessRateVO.setUserName(user.getName());
|
|
|
timelinessRateVO.setJobNumber(user.getJobNumber());
|
|
@@ -5949,6 +6042,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
//去掉填非工作日
|
|
|
for (LocalDateTime localDateTime : dateTimeList) {
|
|
|
if(mapList!=null){
|
|
|
+ //在非工作日下 填报了的情况下 及时填报了就算作及时率计算的基数
|
|
|
if(!WorkDayCalculateUtils.isWorkDay(localDateTime.toLocalDate())&&!mapList.stream().anyMatch(ml->{
|
|
|
Object date = ml.get("createDate");
|
|
|
LocalDate createDate = LocalDate.parse(String.valueOf(date));
|
|
@@ -5964,7 +6058,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
|
|
|
}
|
|
|
//请假的不参与及时率统计
|
|
|
- //todo: 此处对请假的 数据做处理 计请假填报
|
|
|
+ //todo: 此处对请假的 数据做处理 计请假填报 去除请假日期中的需要填报的日期
|
|
|
long daysWithLeave =days;
|
|
|
if(leaveSheets.size()>0){
|
|
|
for (LeaveSheet leaveSheet : leaveSheets) {
|
|
@@ -5974,7 +6068,13 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
}else{
|
|
|
days-=leaveSheet.getTimeDays();
|
|
|
}
|
|
|
+ System.out.println(leaveDateList.size());
|
|
|
for (LocalDateTime localDateTime : leaveDateList) {
|
|
|
+ //todo: 请假区间当中有非工作日在之前被当作 不需填报 所以要加上 保证基数正确
|
|
|
+ if(!WorkDayCalculateUtils.isWorkDay(localDateTime.toLocalDate())){
|
|
|
+ days+=1;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
if(localDateTime.isBefore(sDate)||localDateTime.isAfter(eDate)){
|
|
|
days++;
|
|
|
continue;
|
|
@@ -5994,6 +6094,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
}
|
|
|
}
|
|
|
int num=0;
|
|
|
+ System.out.println(days);
|
|
|
if(mapList!=null){
|
|
|
for (Map<String, Object> map : mapList) {
|
|
|
Map<String,Object> objectMap=new HashMap<>();
|