|
@@ -34,10 +34,7 @@ import java.text.DecimalFormat;
|
|
|
import java.time.*;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.time.temporal.TemporalAccessor;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
import java.util.stream.IntStream;
|
|
|
|
|
@@ -190,7 +187,7 @@ public class TimingTask {
|
|
|
}
|
|
|
|
|
|
//每天2:11 同步钉钉用户前2天到未来30天时间段的打卡,请假,出差数据
|
|
|
- @Scheduled(cron = "0 30 2 ? * *")
|
|
|
+ @Scheduled(cron = "0 11 2 ? * *")
|
|
|
private void synFanWeiWorkData() {
|
|
|
if (isDev) return;
|
|
|
List<TimeType> timeTypeList = timeTypeMapper.selectList(new QueryWrapper<TimeType>().eq("sync_fanwei", 1));
|
|
@@ -202,10 +199,13 @@ public class TimingTask {
|
|
|
JSONObject jsonObject=new JSONObject();
|
|
|
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
- DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("HH:mm:ss");
|
|
|
+ DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("HH:mm");
|
|
|
LocalDateTime yesterday = LocalDateTime.now().minusDays(2);
|
|
|
String startDate = dtf.format(yesterday);
|
|
|
String endDate = dtf.format(yesterday.plusDays(32));
|
|
|
+ List<UserFvTime> oldUserFvTimeList = userFvTimeService.list(new QueryWrapper<UserFvTime>().in("company_id", compIds));
|
|
|
+ List<LeaveSheet> oldLeaveSheetList = leaveSheetService.list(new QueryWrapper<LeaveSheet>().in("company_id", compIds));
|
|
|
+ List<BusinessTrip> oldBusinessTripList = businessTripService.list(new QueryWrapper<BusinessTrip>().in("company_id", compIds));
|
|
|
jsonObject.put("startDate",startDate);
|
|
|
jsonObject.put("endDate",endDate);
|
|
|
String jsonString = jsonObject.toJSONString();
|
|
@@ -222,19 +222,27 @@ public class TimingTask {
|
|
|
continue;
|
|
|
}
|
|
|
if(compIds.contains(user.getCompanyId())){
|
|
|
- userFvTime.setWorkDate((LocalDate) map.get("workDate"));
|
|
|
+ userFvTime.setWorkDate(LocalDate.parse(String.valueOf(map.get("workDate")),dtf));
|
|
|
LocalTime startTime = LocalTime.parse(String.valueOf(map.get("startTime")), dtf2);
|
|
|
- LocalTime endTime = LocalTime.parse(String.valueOf(map.get("startTime")), dtf2);
|
|
|
- Duration between = Duration.between(startTime, endTime);
|
|
|
+ LocalTime endTime = LocalTime.parse(String.valueOf(map.get("endTime")), dtf2);
|
|
|
+ LocalDateTime time1= LocalDate.now().atTime(startTime);
|
|
|
+ LocalDateTime time2 = LocalDate.now().atTime(endTime);
|
|
|
+ Duration between = Duration.between(time1, time2);
|
|
|
userFvTime.setStartTime((String) map.get("startTime"));
|
|
|
userFvTime.setEndTime((String) map.get("endTime"));
|
|
|
userFvTime.setCompanyId(user.getCompanyId());
|
|
|
userFvTime.setUserId(user.getId());
|
|
|
- userFvTime.setWorkHours((float) between.toHours());
|
|
|
+ userFvTime.setWorkHours((float)between.toHours());
|
|
|
+ Optional<UserFvTime> first = oldUserFvTimeList.stream().filter(ol -> ol.getWorkDate().isEqual(userFvTime.getWorkDate()) && ol.getUserId().equals(userFvTime.getUserId())).findFirst();
|
|
|
+ if(first.isPresent()){
|
|
|
+ userFvTime.setId(first.get().getId());
|
|
|
+ }
|
|
|
userFvTimeList.add(userFvTime);
|
|
|
}
|
|
|
}
|
|
|
- userFvTimeService.saveBatch(userFvTimeList);
|
|
|
+ if(userFvTimeList.size()>0){
|
|
|
+ userFvTimeService.saveOrUpdateBatch(userFvTimeList);
|
|
|
+ }
|
|
|
//Todo: 获取请假数据
|
|
|
HttpRespMsg leaveRecordMsg = dockWithMLD.getResult("http://10.1.10.41:20170/api/cube/restful/interface/getModeDataPageList/getLeaveRecord", jsonString);
|
|
|
List<Map<String,Object>> leaveRecordList= (List<Map<String, Object>>) leaveRecordMsg.data;
|
|
@@ -257,10 +265,16 @@ public class TimingTask {
|
|
|
leaveSheet.setLeaveType(Integer.parseInt(String.valueOf(map.get("leaveType"))));
|
|
|
leaveSheet.setProcinstId(String.valueOf(map.get("procinstId")));
|
|
|
leaveSheet.setGmtFinished(String.valueOf(map.get("gmtFinished")));
|
|
|
+ Optional<LeaveSheet> first = oldLeaveSheetList.stream().filter(ol -> ol.getStartDate().isEqual(leaveSheet.getStartDate())&&ol.getEndDate().isEqual(leaveSheet.getEndDate()) && ol.getOwnerId().equals(leaveSheet.getOwnerId())).findFirst();
|
|
|
+ if(first.isPresent()){
|
|
|
+ leaveSheet.setId(first.get().getId());
|
|
|
+ }
|
|
|
leaveSheetList.add(leaveSheet);
|
|
|
}
|
|
|
}
|
|
|
- leaveSheetService.saveBatch(leaveSheetList);
|
|
|
+ if(leaveSheetList.size()>0){
|
|
|
+ leaveSheetService.saveOrUpdateBatch(leaveSheetList);
|
|
|
+ }
|
|
|
//Todo: 获取出差数据
|
|
|
HttpRespMsg travelRecordMsg = dockWithMLD.getResult("http://10.1.10.41:20170/api/cube/restful/interface/getModeDataPageList/getTravelRecord", jsonString);
|
|
|
List<Map<String,Object>> travelRecordList= (List<Map<String, Object>>) travelRecordMsg.data;
|
|
@@ -281,10 +295,16 @@ public class TimingTask {
|
|
|
businessTrip.setDayCount(Integer.valueOf(String.valueOf(map.get("dayCount"))));
|
|
|
businessTrip.setProcinstId((String) map.get("procinstId"));
|
|
|
businessTrip.setGmtFinished((String)map.get("gmtFinished"));
|
|
|
+ Optional<BusinessTrip> first = oldBusinessTripList.stream().filter(ol -> ol.getStartDate().isEqual(businessTrip.getStartDate())&&ol.getEndDate().isEqual(businessTrip.getEndDate()) && ol.getOwnerId().equals(businessTrip.getOwnerId())).findFirst();
|
|
|
+ if(first.isPresent()){
|
|
|
+ businessTrip.setId(first.get().getId());
|
|
|
+ }
|
|
|
businessTripList.add(businessTrip);
|
|
|
}
|
|
|
}
|
|
|
- businessTripService.saveBatch(businessTripList);
|
|
|
+ if(businessTripList.size()>0){
|
|
|
+ businessTripService.saveOrUpdateBatch(businessTripList);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//每天1:00 同步昨天的微信请假信息
|