|
@@ -10,10 +10,7 @@ import com.management.platform.mapper.BeisenConfigMapper;
|
|
|
import com.management.platform.mapper.TimeTypeMapper;
|
|
|
import com.management.platform.mapper.UserMapper;
|
|
|
import com.management.platform.mapper.UserWithBeisenMapper;
|
|
|
-import com.management.platform.service.HolidaySettingService;
|
|
|
-import com.management.platform.service.UserFvTimeService;
|
|
|
-import com.management.platform.service.UserService;
|
|
|
-import com.management.platform.service.UserWithBeisenService;
|
|
|
+import com.management.platform.service.*;
|
|
|
import com.management.platform.util.BeiSenUtils;
|
|
|
import com.management.platform.util.HttpRespMsg;
|
|
|
import com.management.platform.util.WorkDayCalculateUtils;
|
|
@@ -67,6 +64,8 @@ public class UserWithBeisenController {
|
|
|
private UserService userService;
|
|
|
@Resource
|
|
|
private HolidaySettingService holidaySettingService;
|
|
|
+ @Resource
|
|
|
+ private LeaveSheetService leaveSheetService;
|
|
|
|
|
|
@RequestMapping("/getByTimeWindow")
|
|
|
public HttpRespMsg getByTimeWindow(String startTime,String stopTime){
|
|
@@ -170,6 +169,7 @@ public class UserWithBeisenController {
|
|
|
List<LocalDate> workDaysListInRange = WorkDayCalculateUtils.getWorkDaysListInRange(startDate, endDate, 1);
|
|
|
JSONArray allOverTimeList=new JSONArray();
|
|
|
JSONArray allVacationList=new JSONArray();
|
|
|
+ List<LeaveSheet> leaveSheetList=new ArrayList<>();
|
|
|
List<UserFvTime> userFvTimeList=new ArrayList<>();
|
|
|
for (LocalDate localDate : workDaysListInRange) {
|
|
|
JSONArray statisticList = BeiSenUtils.getAttendanceStatistics(df.format(localDate), df.format(localDate), beisenConfig.getAppKey(), beisenConfig.getAppSecret(), 1, 100);
|
|
@@ -249,15 +249,12 @@ public class UserWithBeisenController {
|
|
|
double vacationDuration = vacationList.stream().mapToDouble(i -> i.getDouble("VacationDuration")).sum();
|
|
|
BigDecimal decimal = new BigDecimal(vacationDuration);
|
|
|
decimal=decimal.divide(new BigDecimal(60),1,RoundingMode.HALF_UP);
|
|
|
- //考勤打卡区间大于8小时 但是存在休假数据
|
|
|
-// if(between.toHours()>8){
|
|
|
-// if(decimal.doubleValue()>8){
|
|
|
-// workTime= workTime-8;
|
|
|
-// }else {
|
|
|
-// workTime= workTime-decimal.doubleValue();
|
|
|
-// }
|
|
|
-// }
|
|
|
- workTime= workTime-decimal.doubleValue();
|
|
|
+// //可能存在休假多天 只减去一天
|
|
|
+ if(decimal.doubleValue()>=8){
|
|
|
+ workTime= workTime-8;
|
|
|
+ }else {
|
|
|
+ workTime= workTime-decimal.doubleValue();
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
UserFvTime userFvTime=new UserFvTime();
|
|
@@ -280,6 +277,58 @@ public class UserWithBeisenController {
|
|
|
msg.setError("同步验证失败");
|
|
|
}
|
|
|
}
|
|
|
+ //同步休假数据到工时管家
|
|
|
+ for (int i = 0; i < allVacationList.size(); i++) {
|
|
|
+ JSONObject jsonObject = allVacationList.getJSONObject(i);
|
|
|
+ Optional<UserWithBeisen> beisen = userWithBeisenList.stream().filter(b -> b.getUserId().equals(jsonObject.getString("StaffId"))).findFirst();
|
|
|
+ if(beisen.isPresent()){
|
|
|
+ Optional<User> first = userList.stream().filter(u -> u.getJobNumber().equals(beisen.get().getJobNumber())).findFirst();
|
|
|
+ if(first.isPresent()){
|
|
|
+ LeaveSheet leaveSheet=new LeaveSheet();
|
|
|
+ leaveSheet.setCompanyId(beisenConfig.getCompanyId());
|
|
|
+ leaveSheet.setStatus(0);
|
|
|
+ leaveSheet.setOwnerId(first.get().getId());
|
|
|
+ leaveSheet.setOwnerName(first.get().getName());
|
|
|
+ leaveSheet.setStartDate(LocalDateTime.parse(String.valueOf(jsonObject.get("VacationStartDateTime")),df3).toLocalDate());
|
|
|
+ leaveSheet.setEndDate(LocalDateTime.parse(String.valueOf(jsonObject.get("VacationStopDateTime")),df3).toLocalDate());
|
|
|
+ leaveSheet.setTimeType(1);
|
|
|
+ leaveSheet.setTimeDays(jsonObject.getFloatValue("DayValueOfDuration"));
|
|
|
+ leaveSheet.setTimeHours(jsonObject.getFloatValue("VacationDuration")/60);
|
|
|
+ Integer leaveType;
|
|
|
+ switch (jsonObject.getString("VacationType")){
|
|
|
+ case "事假":leaveType=0;
|
|
|
+ break;
|
|
|
+ case "病假":leaveType=1;
|
|
|
+ break;
|
|
|
+ case "年假":leaveType=2;
|
|
|
+ break;
|
|
|
+ case "产假":leaveType=3;
|
|
|
+ break;
|
|
|
+ case "婚假":leaveType=4;
|
|
|
+ break;
|
|
|
+ case "丧假":leaveType=5;
|
|
|
+ break;
|
|
|
+ case "调休":leaveType=6;
|
|
|
+ break;
|
|
|
+ case "陪产假":leaveType=7;
|
|
|
+ break;
|
|
|
+ default:leaveType=8;
|
|
|
+ }
|
|
|
+ leaveSheet.setLeaveType(leaveType);
|
|
|
+ leaveSheet.setRemark(jsonObject.getString("Reason"));
|
|
|
+ leaveSheet.setStatus(jsonObject.getString("ApproveStatus").equals("通过")?0:jsonObject.getString("Reason").equals("审批中")?1:2);
|
|
|
+ leaveSheet.setProcinstId(jsonObject.getString("VacationId"));
|
|
|
+ LeaveSheet one = leaveSheetService.getOne(new LambdaQueryWrapper<LeaveSheet>().eq(LeaveSheet::getProcinstId,leaveSheet.getProcinstId()).eq(LeaveSheet::getOwnerId, first.get().getId()).eq(LeaveSheet::getStartDate, leaveSheet.getStartDate()).eq(LeaveSheet::getEndDate, endDate));
|
|
|
+ if(one!=null){
|
|
|
+ leaveSheet.setId(one.getId());
|
|
|
+ }
|
|
|
+ leaveSheetList.add(leaveSheet);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(leaveSheetList.size()>0){
|
|
|
+ leaveSheetService.saveOrUpdateBatch(leaveSheetList);
|
|
|
+ }
|
|
|
return msg;
|
|
|
}
|
|
|
|