|
@@ -48,6 +48,7 @@ import java.math.RoundingMode;
|
|
import java.sql.Timestamp;
|
|
import java.sql.Timestamp;
|
|
import java.text.DateFormat;
|
|
import java.text.DateFormat;
|
|
import java.text.DecimalFormat;
|
|
import java.text.DecimalFormat;
|
|
|
|
+import java.text.ParseException;
|
|
import java.text.SimpleDateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
import java.time.*;
|
|
import java.time.*;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.time.format.DateTimeFormatter;
|
|
@@ -6151,6 +6152,11 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
if (!workDay){
|
|
if (!workDay){
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
+ //去掉非工作日
|
|
|
|
+ boolean workDay1 = WorkDayCalculateUtils.isWorkDay(date);
|
|
|
|
+ if(!workDay1){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
//去掉设置了分摊比例的人员
|
|
//去掉设置了分摊比例的人员
|
|
if (setPercentUserIdList.contains(curUser.getId())) {
|
|
if (setPercentUserIdList.contains(curUser.getId())) {
|
|
continue;
|
|
continue;
|
|
@@ -9104,6 +9110,11 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
List<LocalDate> days = getDays(LocalDate.parse(startDate, df), LocalDate.parse(endDate, df));
|
|
List<LocalDate> days = getDays(LocalDate.parse(startDate, df), LocalDate.parse(endDate, df));
|
|
for (User item : needRangeUserList) {
|
|
for (User item : needRangeUserList) {
|
|
for (LocalDate day : days) {
|
|
for (LocalDate day : days) {
|
|
|
|
+ boolean workDay = WorkDayCalculateUtils.isWorkDay(day);
|
|
|
|
+ //去掉非工作日
|
|
|
|
+ if(!workDay){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
boolean match = list.stream().anyMatch(l -> l.get("createDate").equals(df.format(day)) && l.get("userId").equals(item.getId()));
|
|
boolean match = list.stream().anyMatch(l -> l.get("createDate").equals(df.format(day)) && l.get("userId").equals(item.getId()));
|
|
if(!match){
|
|
if(!match){
|
|
Map<String,Object> map=new HashMap<>();
|
|
Map<String,Object> map=new HashMap<>();
|
|
@@ -9115,6 +9126,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
Optional<UserFvTime> time = userFvTimeList.stream().filter(u -> u.getWorkDate().isEqual(day) && u.getUserId().equals(item.getId())).findFirst();
|
|
Optional<UserFvTime> time = userFvTimeList.stream().filter(u -> u.getWorkDate().isEqual(day) && u.getUserId().equals(item.getId())).findFirst();
|
|
if(time.isPresent()){
|
|
if(time.isPresent()){
|
|
map.put("cardTime",time.get().getWorkHours());
|
|
map.put("cardTime",time.get().getWorkHours());
|
|
|
|
+ map.put("cancelNormal",time.get().getCancelNormal());
|
|
}else {
|
|
}else {
|
|
map.put("cardTime",0);
|
|
map.put("cardTime",0);
|
|
}
|
|
}
|
|
@@ -9125,6 +9137,31 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ // 进行排序 list:就是要排序的集合
|
|
|
|
+ Collections.sort(list, new Comparator<Map<String, Object>>() {
|
|
|
|
+ @Override
|
|
|
|
+ public int compare(Map<String, Object> o1, Map<String, Object> o2) {
|
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
+ String userId1 = (String) o1.get("userId");
|
|
|
|
+ String userId2 = (String) o2.get("userId");
|
|
|
|
+// return date2.compareTo(date1); //倒序
|
|
|
|
+ return userId1.compareTo(userId2); // 正序
|
|
|
|
+ }
|
|
|
|
+ }.thenComparing(new Comparator<Map<String, Object>>() {
|
|
|
|
+ @Override
|
|
|
|
+ public int compare(Map<String, Object> o1, Map<String, Object> o2) {
|
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
+ try {
|
|
|
|
+ Date date1 = format.parse((String) o1.get("createDate"));
|
|
|
|
+ Date date2 = format.parse((String) o2.get("createDate"));
|
|
|
|
+// return date2.compareTo(date1); //倒序
|
|
|
|
+ return date1.compareTo(date2); // 正序
|
|
|
|
+ } catch (ParseException e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+ }));
|
|
for (Map<String, Object> map : list) {
|
|
for (Map<String, Object> map : list) {
|
|
//针对景昱 5978 校验填报工时是否超过考勤
|
|
//针对景昱 5978 校验填报工时是否超过考勤
|
|
if(user.getCompanyId().equals(5978)){
|
|
if(user.getCompanyId().equals(5978)){
|
|
@@ -9140,17 +9177,22 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
Method method = aClass.getMethod(getter);
|
|
Method method = aClass.getMethod(getter);
|
|
String invoke = (String) method.invoke(targetUser);
|
|
String invoke = (String) method.invoke(targetUser);
|
|
if(invoke==null||invoke.equals("有加班费")){
|
|
if(invoke==null||invoke.equals("有加班费")){
|
|
- if(!(Double.valueOf(String.valueOf(map.get("workingTime"))).equals(Double.valueOf(String.valueOf(map.get("cardTime")))))){
|
|
|
|
|
|
+ if((!(Double.valueOf(String.valueOf(map.get("workingTime"))).equals(Double.valueOf(String.valueOf(map.get("cardTime"))))))&&(map.containsKey("cancelNormal")&&(Integer)map.get("cancelNormal")!=1)){
|
|
map.put("exceedCardTime",1);
|
|
map.put("exceedCardTime",1);
|
|
}
|
|
}
|
|
|
|
+ map.put("invokeValue","有加班费");
|
|
}else{
|
|
}else{
|
|
- if((Double.valueOf(String.valueOf(map.get("workingTime")))<Double.valueOf(String.valueOf(map.get("cardTime"))))){
|
|
|
|
|
|
+ if(((Double.valueOf(String.valueOf(map.get("workingTime")))<Double.valueOf(String.valueOf(map.get("cardTime")))))&&(map.containsKey("cancelNormal")&&(Integer)map.get("cancelNormal")!=1)){
|
|
map.put("exceedCardTime",1);
|
|
map.put("exceedCardTime",1);
|
|
}
|
|
}
|
|
|
|
+ map.put("invokeValue","无加班费");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ if(viewValue==1){
|
|
|
|
+ list=list.stream().filter(l->Integer.valueOf(String.valueOf(l.get("exceedCardTime")))==1).collect(Collectors.toList());
|
|
|
|
+ }
|
|
Map<String,Object> map=new HashMap<>();
|
|
Map<String,Object> map=new HashMap<>();
|
|
map.put("list",list);
|
|
map.put("list",list);
|
|
msg.setData(map);
|
|
msg.setData(map);
|
|
@@ -9195,4 +9237,18 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
String fileName="工时异常表"+System.currentTimeMillis();
|
|
String fileName="工时异常表"+System.currentTimeMillis();
|
|
return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,dingding,fileName,dataList,path);
|
|
return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,dingding,fileName,dataList,path);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public HttpRespMsg cancelReminder(HttpServletRequest request, String createDate, String userId) {
|
|
|
|
+ HttpRespMsg msg=new HttpRespMsg();
|
|
|
|
+ Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
|
|
|
|
+ DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
|
+ LambdaQueryWrapper<UserFvTime> wrapper = new LambdaQueryWrapper<UserFvTime>().eq(UserFvTime::getCompanyId, companyId).eq(UserFvTime::getWorkDate, LocalDate.parse(createDate, df)).eq(UserFvTime::getUserId, userId);
|
|
|
|
+ UserFvTime userFvTime=new UserFvTime();
|
|
|
|
+ userFvTime.setCancelNormal(1);
|
|
|
|
+ if(userFvTimeMapper.update(userFvTime,wrapper)<=0){
|
|
|
|
+ msg.setError("操作失败");
|
|
|
|
+ }
|
|
|
|
+ return msg;
|
|
|
|
+ }
|
|
}
|
|
}
|