|
@@ -34,6 +34,7 @@ import javax.servlet.http.HttpServletRequest;
|
|
|
import java.io.*;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
+import java.text.DateFormat;
|
|
|
import java.text.DecimalFormat;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.time.Duration;
|
|
@@ -2264,7 +2265,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
List<Integer> collect = subDepts.stream().map(Department::getDepartmentId).collect(Collectors.toList());
|
|
|
list = reportMapper.getUserDailyWorkTime(companyId, startDate, endDate, collect, null);
|
|
|
//部门负责人看自己部门相关的
|
|
|
- allRangeUserList = userMapper.selectList(new QueryWrapper<User>().in("department_id", collect));
|
|
|
+ allRangeUserList = userMapper.selectList(new QueryWrapper<User>().in("department_id", collect).orderByDesc("department_id"));
|
|
|
} else {
|
|
|
//看自己的所负责的项目相关人员的
|
|
|
list = reportMapper.getUserDailyWorkTime(companyId, startDate, endDate, null, user.getId());
|
|
@@ -2275,14 +2276,14 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
List<Participation> participationList = participationMapper.selectList(new QueryWrapper<Participation>().in("project_id", collect));
|
|
|
List<String> collect1 = participationList.stream().map(Participation::getUserId).collect(Collectors.toList());
|
|
|
if (collect1.size() > 0) {
|
|
|
- allRangeUserList = userMapper.selectList(new QueryWrapper<User>().in("id", collect1));
|
|
|
+ allRangeUserList = userMapper.selectList(new QueryWrapper<User>().in("id", collect1).orderByDesc("department_id"));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
list = reportMapper.getUserDailyWorkTime(companyId, startDate, endDate, null, null);
|
|
|
//管理员看全公司所有人
|
|
|
- allRangeUserList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
|
|
|
+ allRangeUserList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId).orderByDesc("department_id"));
|
|
|
}
|
|
|
List<User> needRangeUserList=new ArrayList<>();
|
|
|
for (User u : allRangeUserList) {
|
|
@@ -2772,6 +2773,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
@Override
|
|
|
public HttpRespMsg exportReport(@RequestParam String startDate, @RequestParam String endDate, Integer projectId,Integer stateKey,Integer departmentId, HttpServletRequest request) {
|
|
|
HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
|
+ DateFormat timeDf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
try {
|
|
|
String userId = request.getHeader("Token");
|
|
|
User user = userMapper.selectById(userId);
|
|
@@ -2825,6 +2827,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
if(stateKey==1){
|
|
|
titles.add("审核状态");
|
|
|
}
|
|
|
+ if(timeType.getSyncCorpwxTime()==1){
|
|
|
+ titles.add("考勤时长");
|
|
|
+ }
|
|
|
//创建表头
|
|
|
HSSFRow headRow = sheet.createRow(0);
|
|
|
//设置列宽 setColumnWidth的第二个参数要乘以256 这个参数的单位是1/256个字符宽度
|
|
@@ -2917,6 +2922,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
//看公司所有人的
|
|
|
allReportByDate = reportMapper.getAllReportByDate(startDate, user.getCompanyId(), null, endDate, projectId,stateKey,departmentId);
|
|
|
}
|
|
|
+ //获取企业微信考勤数据
|
|
|
+ List<UserCorpwxTime> userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", user.getCompanyId()).between("create_date", startDate, endDate));
|
|
|
if (timeType.getMultiWorktime() == 1) {
|
|
|
java.text.DecimalFormat df = new java.text.DecimalFormat("#0.00");
|
|
|
//重新处理一下数据,把工作时间和工作事项移出来
|
|
@@ -3043,6 +3050,16 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
case 1:row.createCell(index).setCellValue("已通过");
|
|
|
break;
|
|
|
}
|
|
|
+ index++;
|
|
|
+ }
|
|
|
+ if(timeType.getSyncCorpwxTime()==1){
|
|
|
+ for (UserCorpwxTime userCorpwxTime : userCorpwxTimeList) {
|
|
|
+ String s = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(userCorpwxTime.getCreateDate());
|
|
|
+ String s1 = timeDf.format(map.get("createDate"));
|
|
|
+ if(map.get("corpwxUserId").equals(userCorpwxTime.getCorpwxUserid())&&s.equals(s1)){
|
|
|
+ row.createCell(index).setCellValue(userCorpwxTime.getStartTime()+"-"+userCorpwxTime.getEndTime()+",工作时长"+userCorpwxTime.getWorkHours());
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
rowNum++;
|
|
|
}
|
|
@@ -3299,6 +3316,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
|
|
|
long cnt = localStart.until(localEnd, ChronoUnit.DAYS);
|
|
|
List<String> cpwxIds = new ArrayList<>();
|
|
|
+ //获取请假数据
|
|
|
+ List<LeaveSheet> leaveSheetList = leaveSheetMapper.selectList(new QueryWrapper<LeaveSheet>().eq("company_id", user.getCompanyId()));
|
|
|
//按人员过滤
|
|
|
for (User curUser: allRangeUserList){
|
|
|
for (int i=0;i<=cnt; i++) {
|
|
@@ -3338,7 +3357,18 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
noRecord.department = "无";
|
|
|
}
|
|
|
noRecord.name = curUser.getName();
|
|
|
+ //请假的
|
|
|
+ List<LeaveSheet> leaveSheets = leaveSheetList.stream().filter(ls -> ls.getOwnerId().equals(curUser.getId())
|
|
|
+ &&(ls.getStartDate().isAfter(LocalDate.parse(startDate))||ls.getStartDate().isEqual(LocalDate.parse(startDate)))
|
|
|
+ &&(ls.getEndDate().isBefore(LocalDate.parse(endDate))||ls.getEndDate().isEqual(LocalDate.parse(endDate)))).collect(Collectors.toList());
|
|
|
+ System.out.println(date);
|
|
|
+ System.out.println(leaveSheets);
|
|
|
noReportDataList.add(noRecord);
|
|
|
+ for (LeaveSheet leaveSheet : leaveSheets) {
|
|
|
+ if(!(date.isBefore(leaveSheet.getStartDate())||date.isAfter(leaveSheet.getEndDate()))){
|
|
|
+ noReportDataList.remove(noRecord);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|