|
@@ -2226,7 +2226,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
if (r.getDepartmentAuditState() == 0 && user.getId().equals(r.getAuditDeptManagerid())) {
|
|
|
newReport.setDepartmentAuditState(1);
|
|
|
r.setDepartmentAuditState(1);
|
|
|
- } else if (r.getProjectAuditState() == 0 && user.getId().equals(r.getProjectAuditorId())) {
|
|
|
+ }
|
|
|
+ if (r.getProjectAuditState() == 0 && user.getId().equals(r.getProjectAuditorId())) {
|
|
|
newReport.setProjectAuditState(1);
|
|
|
newReport.setProjectAuditTime(LocalDateTime.now());
|
|
|
r.setProjectAuditState(1);
|
|
@@ -3493,7 +3494,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
if (r.getDepartmentAuditState() == 0 && user.getId().equals(r.getAuditDeptManagerid())) {
|
|
|
newReport.setDepartmentAuditState(1);
|
|
|
r.setDepartmentAuditState(1);
|
|
|
- } else if (r.getProjectAuditState() == 0 && user.getId().equals(r.getProjectAuditorId())) {
|
|
|
+ }
|
|
|
+ if (r.getProjectAuditState() == 0 && user.getId().equals(r.getProjectAuditorId())) {
|
|
|
newReport.setProjectAuditState(1);
|
|
|
newReport.setProjectAuditTime(LocalDateTime.now());
|
|
|
r.setProjectAuditState(1);
|
|
@@ -4077,7 +4079,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
public HttpRespMsg getReportFillStatus(String startDate, String endDate, String userId, HttpServletRequest request)throws Exception {
|
|
|
HttpRespMsg msg = new HttpRespMsg();
|
|
|
User user = userMapper.selectById(request.getHeader("token"));
|
|
|
- DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
+ DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, user.getCompanyId()));
|
|
|
List<UserCustom> userCustomList = userCustomMapper.selectList(new LambdaQueryWrapper<UserCustom>().eq(UserCustom::getCompanyId, user.getCompanyId()));
|
|
|
List<UserFvTime> userFvTimeList = userFvTimeMapper.selectList(new LambdaQueryWrapper<UserFvTime>().between(UserFvTime::getWorkDate, startDate, endDate));
|
|
@@ -4113,6 +4115,38 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ } else if (user.getReportStatus() == 0){
|
|
|
+ //获取企业微信,钉钉的考勤
|
|
|
+ WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new LambdaQueryWrapper<WxCorpInfo>().eq(WxCorpInfo::getCompanyId, user.getCompanyId()));
|
|
|
+ if (wxCorpInfo != null) {
|
|
|
+ TimeType timeType = timeTypeMapper.selectById(user.getCompanyId());
|
|
|
+ if (timeType.getSyncCorpwxTime() == 1) {
|
|
|
+ //企业微信考勤
|
|
|
+ List<UserCorpwxTime> corpwxTimeList = userCorpwxTimeMapper.selectList(new LambdaQueryWrapper<UserCorpwxTime>().between(UserCorpwxTime::getCreateDate, startDate, endDate).eq(UserCorpwxTime::getCorpwxUserid, user.getCorpwxUserid()));
|
|
|
+ //遍历corpwxTimeList,在reportFillStatus中找到对应的日期的工时
|
|
|
+ for (UserCorpwxTime time : corpwxTimeList) {
|
|
|
+ boolean find = false;
|
|
|
+ if (time.getWorkHours() > 0) {
|
|
|
+ String cDate = time.getCreateDate().format(df);
|
|
|
+ for (Map<String, Object> map : reportFillStatus) {
|
|
|
+ if (cDate.equals(String.valueOf(map.get("createDate")))) {
|
|
|
+ find = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!find) {
|
|
|
+ //没有找到,添加到reportFillStatus
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("createDate", cDate);
|
|
|
+ map.put("workingTime", 0);
|
|
|
+ map.put("missReport", 1);
|
|
|
+ reportFillStatus.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
msg.data =reportFillStatus;
|
|
|
return msg;
|
|
@@ -4403,7 +4437,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
}
|
|
|
List<UserMonthWork> userMonthWorks = new ArrayList<UserMonthWork>();
|
|
|
//获取所有同步的企业微信数据
|
|
|
- List<Map> userCorpwxTimeMapList = userCorpwxTimeMapper.selectByAsk(companyId,startDate,endDate);
|
|
|
+// List<Map> userCorpwxTimeMapList = userCorpwxTimeMapper.selectByAsk(companyId,startDate,endDate);
|
|
|
+ List<UserCorpwxTime> userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().between("create_date", LocalDate.parse(startDate, df), LocalDate.parse(endDate, df)).eq("corpwx_userid", user.getCorpwxUserid()));
|
|
|
String lastUserId = null;
|
|
|
UserMonthWork lastUserData = null;
|
|
|
for (Map<String, Object> data : list) {
|
|
@@ -4477,31 +4512,61 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
for (UserMonthWork userMonthWork : userMonthWorks) {
|
|
|
List<Map<String, Object>> worktimeList = userMonthWork.worktimeList;
|
|
|
//获取到该员工请假的数据
|
|
|
- List<Map<String, Object>> curUserCorpTime = new ArrayList<>();
|
|
|
- for (Map<String, Object> corpWx : userCorpwxTimeMapList) {
|
|
|
- if (((String)corpWx.get("corpwx_userid")).equals(userMonthWork.corpwxUserId)) {
|
|
|
- curUserCorpTime.add(corpWx);
|
|
|
- }
|
|
|
- }
|
|
|
+ List<UserCorpwxTime> curUserCorpTime = userCorpwxTimeList.stream().filter(s->s.getCorpwxUserid().equals(userMonthWork.corpwxUserId)).collect(Collectors.toList());
|
|
|
+// for (Map<String, Object> corpWx : userCorpwxTimeMapList) {
|
|
|
+// if (((String)corpWx.get("corpwx_userid")).equals(userMonthWork.corpwxUserId)) {
|
|
|
+// curUserCorpTime.add(corpWx);
|
|
|
+// }
|
|
|
+// }
|
|
|
|
|
|
//处理企业微信的请假数据
|
|
|
+// curUserCorpTime.forEach(corpTime->{
|
|
|
+// java.sql.Date leaveDate = (java.sql.Date)corpTime.get("create_date");
|
|
|
+// String leaveDateStr = sdf.format(leaveDate);
|
|
|
+// Optional<Map<String, Object>> find = worktimeList.stream().filter(w->((String)w.get("createDate")).equals(leaveDateStr)).findFirst();
|
|
|
+// if (find.isPresent()) {
|
|
|
+// //打卡的有记录,加上请假
|
|
|
+// String newStr = (double)find.get().get("workingTime")+"("+MessageUtils.message("leave.leave")+(corpTime.get("ask_leave_time"))+"h)";
|
|
|
+// find.get().put("workingTime", newStr);
|
|
|
+// } else {
|
|
|
+// //没有对应的打卡记录,直接加上当天请假
|
|
|
+// Map<String, Object> leaveMap = new HashMap<>();
|
|
|
+// leaveMap.put("createDate", leaveDateStr);
|
|
|
+// //leaveMap.put("workingTime", "当天请假"+corpTime.get("ask_leave_time")+"h");
|
|
|
+// leaveMap.put("workingTime", MessageUtils.message("leave.leaveOfDay")+corpTime.get("ask_leave_time")+"h");
|
|
|
+// worktimeList.add(leaveMap);
|
|
|
+// }
|
|
|
+// });
|
|
|
curUserCorpTime.forEach(corpTime->{
|
|
|
- java.sql.Date leaveDate = (java.sql.Date)corpTime.get("create_date");
|
|
|
- String leaveDateStr = sdf.format(leaveDate);
|
|
|
- Optional<Map<String, Object>> find = worktimeList.stream().filter(w->((String)w.get("createDate")).equals(leaveDateStr)).findFirst();
|
|
|
+ LocalDate wDate = corpTime.getCreateDate();
|
|
|
+ String curWDateStr = df.format(wDate);
|
|
|
+ double askLeaveTime = corpTime.getAskLeaveTime();
|
|
|
+// String leaveDateStr = sdf.format(leaveDate);
|
|
|
+ Optional<Map<String, Object>> find = worktimeList.stream().filter(w->((String)w.get("createDate")).equals(curWDateStr)).findFirst();
|
|
|
if (find.isPresent()) {
|
|
|
- //打卡的有记录,加上请假
|
|
|
- String newStr = (double)find.get().get("workingTime")+"("+MessageUtils.message("leave.leave")+(corpTime.get("ask_leave_time"))+"h)";
|
|
|
- find.get().put("workingTime", newStr);
|
|
|
+ //打卡的有记录,如果有请假,加上请假
|
|
|
+ if (askLeaveTime > 0) {
|
|
|
+ String newStr = (double)find.get().get("workingTime")+"("+MessageUtils.message("leave.leave")+(corpTime.getAskLeaveTime())+"h)";
|
|
|
+ find.get().put("workingTime", newStr);
|
|
|
+ }
|
|
|
} else {
|
|
|
//没有对应的打卡记录,直接加上当天请假
|
|
|
- Map<String, Object> leaveMap = new HashMap<>();
|
|
|
- leaveMap.put("createDate", leaveDateStr);
|
|
|
- //leaveMap.put("workingTime", "当天请假"+corpTime.get("ask_leave_time")+"h");
|
|
|
- leaveMap.put("workingTime", MessageUtils.message("leave.leaveOfDay")+corpTime.get("ask_leave_time")+"h");
|
|
|
- worktimeList.add(leaveMap);
|
|
|
+ if (askLeaveTime > 0) {
|
|
|
+ Map<String, Object> leaveMap = new HashMap<>();
|
|
|
+ leaveMap.put("createDate", curWDateStr);
|
|
|
+ leaveMap.put("workingTime", MessageUtils.message("leave.leaveOfDay")+corpTime.getAskLeaveTime()+"h");
|
|
|
+ worktimeList.add(leaveMap);
|
|
|
+ } else {
|
|
|
+ Map<String, Object> leaveMap = new HashMap<>();
|
|
|
+ leaveMap.put("createDate", curWDateStr);
|
|
|
+ leaveMap.put("workingTime", "漏填");
|
|
|
+ leaveMap.put("missReport", 1);
|
|
|
+ worktimeList.add(leaveMap);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
});
|
|
|
+
|
|
|
//钉钉请假的数据
|
|
|
if ((timeType.getSyncDingding() == 1 || timeType.getSyncFanwei()==1 || company.getPackageOa() == 1)&& leaveSheets != null && leaveSheets.size() > 0) {
|
|
|
List<LeaveSheet> curUserLeaveList = leaveSheets.stream().filter(leave -> leave.getOwnerId().equals(userMonthWork.userId)).collect(Collectors.toList());
|