|
@@ -17,8 +17,10 @@ import com.management.platform.util.BeiSenUtils;
|
|
import com.management.platform.util.DateTimeUtil;
|
|
import com.management.platform.util.DateTimeUtil;
|
|
import com.management.platform.util.HttpRespMsg;
|
|
import com.management.platform.util.HttpRespMsg;
|
|
import com.management.platform.util.WorkDayCalculateUtils;
|
|
import com.management.platform.util.WorkDayCalculateUtils;
|
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
import java.math.RoundingMode;
|
|
import java.math.RoundingMode;
|
|
@@ -44,13 +46,21 @@ import java.util.stream.Stream;
|
|
@Service
|
|
@Service
|
|
public class UserWithBeisenServiceImpl extends ServiceImpl<UserWithBeisenMapper, UserWithBeisen> implements UserWithBeisenService {
|
|
public class UserWithBeisenServiceImpl extends ServiceImpl<UserWithBeisenMapper, UserWithBeisen> implements UserWithBeisenService {
|
|
|
|
|
|
|
|
+ @Resource
|
|
private UserFvTimeService userFvTimeService;
|
|
private UserFvTimeService userFvTimeService;
|
|
|
|
+ @Resource
|
|
private UserMapper userMapper;
|
|
private UserMapper userMapper;
|
|
|
|
+ @Resource
|
|
private TimeTypeMapper timeTypeMapper;
|
|
private TimeTypeMapper timeTypeMapper;
|
|
|
|
+ @Resource
|
|
private HttpServletRequest request;
|
|
private HttpServletRequest request;
|
|
|
|
+ @Resource
|
|
private UserWithBeisenService userWithBeisenService;
|
|
private UserWithBeisenService userWithBeisenService;
|
|
|
|
+ @Resource
|
|
private BeisenConfigMapper beisenConfigMapper;
|
|
private BeisenConfigMapper beisenConfigMapper;
|
|
|
|
+ @Resource
|
|
private HolidaySettingService holidaySettingService;
|
|
private HolidaySettingService holidaySettingService;
|
|
|
|
+ @Resource
|
|
private LeaveSheetService leaveSheetService;
|
|
private LeaveSheetService leaveSheetService;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -77,6 +87,7 @@ public class UserWithBeisenServiceImpl extends ServiceImpl<UserWithBeisenMapper,
|
|
List<LocalDate> workDaysListInRange = WorkDayCalculateUtils.getWorkDaysListInRange(startDate, endDate, 1);
|
|
List<LocalDate> workDaysListInRange = WorkDayCalculateUtils.getWorkDaysListInRange(startDate, endDate, 1);
|
|
JSONArray allOverTimeList=new JSONArray();
|
|
JSONArray allOverTimeList=new JSONArray();
|
|
JSONArray allVacationList=new JSONArray();
|
|
JSONArray allVacationList=new JSONArray();
|
|
|
|
+ JSONArray allDailyReportList=new JSONArray();
|
|
List<LeaveSheet> leaveSheetList=new ArrayList<>();
|
|
List<LeaveSheet> leaveSheetList=new ArrayList<>();
|
|
//同步休假数据到工时管家
|
|
//同步休假数据到工时管家
|
|
for (int i = 0; i < allVacationList.size(); i++) {
|
|
for (int i = 0; i < allVacationList.size(); i++) {
|
|
@@ -134,9 +145,11 @@ public class UserWithBeisenServiceImpl extends ServiceImpl<UserWithBeisenMapper,
|
|
JSONArray statisticList = BeiSenUtils.getAttendanceStatistics(df.format(localDate), df.format(localDate), beisenConfig.getAppKey(), beisenConfig.getAppSecret(), 1, 100);
|
|
JSONArray statisticList = BeiSenUtils.getAttendanceStatistics(df.format(localDate), df.format(localDate), beisenConfig.getAppKey(), beisenConfig.getAppSecret(), 1, 100);
|
|
JSONArray overTimeList = BeiSenUtils.getOverTimeList(df.format(localDate), beisenConfig.getAppKey(), beisenConfig.getAppSecret(), 1, 100);
|
|
JSONArray overTimeList = BeiSenUtils.getOverTimeList(df.format(localDate), beisenConfig.getAppKey(), beisenConfig.getAppSecret(), 1, 100);
|
|
JSONArray vacationList = BeiSenUtils.getVacationList(df.format(localDate), beisenConfig.getAppKey(), beisenConfig.getAppSecret(),1,100);
|
|
JSONArray vacationList = BeiSenUtils.getVacationList(df.format(localDate), beisenConfig.getAppKey(), beisenConfig.getAppSecret(),1,100);
|
|
|
|
+ JSONArray dailyReportList = BeiSenUtils.getDailyReportList(df.format(localDate), beisenConfig.getAppKey(), beisenConfig.getAppSecret(), 1, 100);
|
|
allOverTimeList.addAll(overTimeList);
|
|
allOverTimeList.addAll(overTimeList);
|
|
attendanceStatistics.addAll(statisticList);
|
|
attendanceStatistics.addAll(statisticList);
|
|
allVacationList.addAll(vacationList);
|
|
allVacationList.addAll(vacationList);
|
|
|
|
+ allDailyReportList.addAll(dailyReportList);
|
|
}
|
|
}
|
|
for (LocalDate localDate : workDaysListInRange) {
|
|
for (LocalDate localDate : workDaysListInRange) {
|
|
Stream<JSONObject> swipingCardsStream = attendanceStatistics.stream().map(item -> (JSONObject) item);
|
|
Stream<JSONObject> swipingCardsStream = attendanceStatistics.stream().map(item -> (JSONObject) item);
|
|
@@ -176,6 +189,7 @@ public class UserWithBeisenServiceImpl extends ServiceImpl<UserWithBeisenMapper,
|
|
}
|
|
}
|
|
Stream<JSONObject> overTimeStream = allOverTimeList.stream().map(elment -> (JSONObject) elment);
|
|
Stream<JSONObject> overTimeStream = allOverTimeList.stream().map(elment -> (JSONObject) elment);
|
|
Stream<JSONObject> vacationStream = allVacationList.stream().map(elment -> (JSONObject) elment);
|
|
Stream<JSONObject> vacationStream = allVacationList.stream().map(elment -> (JSONObject) elment);
|
|
|
|
+ Stream<JSONObject> dailyReportStream = allDailyReportList.stream().map(elment -> (JSONObject) elment);
|
|
Optional<UserWithBeisen> beisen = userWithBeisenList.stream().filter(u -> u.getJobNumber() != null && u.getJobNumber().equals(first.get().getJobNumber())).findFirst();
|
|
Optional<UserWithBeisen> beisen = userWithBeisenList.stream().filter(u -> u.getJobNumber() != null && u.getJobNumber().equals(first.get().getJobNumber())).findFirst();
|
|
if(beisen.isPresent()){
|
|
if(beisen.isPresent()){
|
|
//todo:之前的逻辑
|
|
//todo:之前的逻辑
|
|
@@ -261,44 +275,59 @@ public class UserWithBeisenServiceImpl extends ServiceImpl<UserWithBeisenMapper,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- //处理修改
|
|
|
|
- List<JSONObject> vacationList = vacationStream.filter(a ->{
|
|
|
|
- LocalDate vacationStartDate = LocalDateTime.parse(a.getString("VacationStartDateTime"), df3).toLocalDate();
|
|
|
|
- LocalDate vacationStopDate = LocalDateTime.parse(a.getString("VacationStopDateTime"), df3).toLocalDate();
|
|
|
|
- boolean b=false;
|
|
|
|
- if((localDate.isAfter(vacationStartDate)||localDate.isEqual(vacationStartDate))
|
|
|
|
- &&(localDate.isBefore(vacationStopDate)||localDate.isEqual(vacationStopDate))){
|
|
|
|
- b=true;
|
|
|
|
- }
|
|
|
|
- if(a.getString("StaffId").equals(beisen.get().getUserId())
|
|
|
|
- && b
|
|
|
|
- &&a.getString("DocumentType").equals("请假")
|
|
|
|
- && (a.getString("ApproveStatus").equals("通过") || a.getString("ApproveStatus").equals("审批中"))){
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
- return false;
|
|
|
|
- }).collect(Collectors.toList());
|
|
|
|
- if(vacationList.size()>0){
|
|
|
|
- double vacationDuration = vacationList.stream().mapToDouble(i -> i.getDouble("VacationDuration")).sum();
|
|
|
|
- BigDecimal decimal = new BigDecimal(vacationDuration);
|
|
|
|
- decimal=decimal.divide(new BigDecimal(60),1,RoundingMode.HALF_DOWN);
|
|
|
|
-// //可能存在休假多天 只减去一天
|
|
|
|
- if(decimal.doubleValue()>=8){
|
|
|
|
- workTime= workTime-8;
|
|
|
|
- }else {
|
|
|
|
- workTime= workTime-decimal.doubleValue();
|
|
|
|
- }
|
|
|
|
- }else {
|
|
|
|
-// //在工时管家已经同步到的请假数据中找到当前人员的所有请假数据
|
|
|
|
-// List<LeaveSheet> list = leaveSheetService.list(new LambdaQueryWrapper<LeaveSheet>().eq(LeaveSheet::getOwnerId, beisen.get().getUserId()));
|
|
|
|
-// //当前考勤日期在工时同步到的请假数据开始请假和结束日期区间的数据
|
|
|
|
-// List<LeaveSheet> sheets = list.stream().filter(l -> (l.getStartDate().isBefore(localDate) || l.getStartDate().isEqual(localDate)) && (l.getEndDate().isAfter(localDate) || l.getEndDate().isEqual(localDate))).collect(Collectors.toList());
|
|
|
|
-// double sum = sheets.stream().mapToDouble(LeaveSheet::getTimeHours).sum();
|
|
|
|
-// if(sum>=8){
|
|
|
|
|
|
+// //处理修改
|
|
|
|
+// List<JSONObject> vacationList = vacationStream.filter(a ->{
|
|
|
|
+// LocalDate vacationStartDate = LocalDateTime.parse(a.getString("VacationStartDateTime"), df3).toLocalDate();
|
|
|
|
+// LocalDate vacationStopDate = LocalDateTime.parse(a.getString("VacationStopDateTime"), df3).toLocalDate();
|
|
|
|
+// boolean b=false;
|
|
|
|
+// if((localDate.isAfter(vacationStartDate)||localDate.isEqual(vacationStartDate))
|
|
|
|
+// &&(localDate.isBefore(vacationStopDate)||localDate.isEqual(vacationStopDate))){
|
|
|
|
+// b=true;
|
|
|
|
+// }
|
|
|
|
+// if(a.getString("StaffId").equals(beisen.get().getUserId())
|
|
|
|
+// && b
|
|
|
|
+// &&a.getString("DocumentType").equals("请假")
|
|
|
|
+// && (a.getString("ApproveStatus").equals("通过") || a.getString("ApproveStatus").equals("审批中"))){
|
|
|
|
+// return true;
|
|
|
|
+// }
|
|
|
|
+// return false;
|
|
|
|
+// }).collect(Collectors.toList());
|
|
|
|
+// if(vacationList.size()>0){
|
|
|
|
+// double vacationDuration = vacationList.stream().mapToDouble(i -> i.getDouble("VacationDuration")).sum();
|
|
|
|
+// BigDecimal decimal = new BigDecimal(vacationDuration);
|
|
|
|
+// decimal=decimal.divide(new BigDecimal(60),1,RoundingMode.HALF_DOWN);
|
|
|
|
+//// //可能存在休假多天 只减去一天
|
|
|
|
+// if(decimal.doubleValue()>=8){
|
|
// workTime= workTime-8;
|
|
// workTime= workTime-8;
|
|
// }else {
|
|
// }else {
|
|
-// workTime= workTime-sum;
|
|
|
|
|
|
+// workTime= workTime-decimal.doubleValue();
|
|
// }
|
|
// }
|
|
|
|
+// }else {
|
|
|
|
+//// //在工时管家已经同步到的请假数据中找到当前人员的所有请假数据
|
|
|
|
+//// List<LeaveSheet> list = leaveSheetService.list(new LambdaQueryWrapper<LeaveSheet>().eq(LeaveSheet::getOwnerId, beisen.get().getUserId()));
|
|
|
|
+//// //当前考勤日期在工时同步到的请假数据开始请假和结束日期区间的数据
|
|
|
|
+//// List<LeaveSheet> sheets = list.stream().filter(l -> (l.getStartDate().isBefore(localDate) || l.getStartDate().isEqual(localDate)) && (l.getEndDate().isAfter(localDate) || l.getEndDate().isEqual(localDate))).collect(Collectors.toList());
|
|
|
|
+//// double sum = sheets.stream().mapToDouble(LeaveSheet::getTimeHours).sum();
|
|
|
|
+//// if(sum>=8){
|
|
|
|
+//// workTime= workTime-8;
|
|
|
|
+//// }else {
|
|
|
|
+//// workTime= workTime-sum;
|
|
|
|
+//// }
|
|
|
|
+// }
|
|
|
|
+ //根据日报处理休假时长
|
|
|
|
+ List<JSONObject> list = dailyReportStream.filter(d -> d.getString("StaffId").equals(beisen.get().getUserId())&&d.getString("Date").equals(df.format(localDate))).collect(Collectors.toList());
|
|
|
|
+ if(list.size()>0){
|
|
|
|
+ //年假
|
|
|
|
+ double annualLeaveHour = list.stream().mapToDouble(l -> l.getDoubleValue("AnnualLeaveHour")).sum();
|
|
|
|
+ //事假
|
|
|
|
+ double casualLeaveHour = list.stream().mapToDouble(l -> l.getDoubleValue("CasualLeaveHour")).sum();
|
|
|
|
+ //病假
|
|
|
|
+ double sickLeaveHour = list.stream().mapToDouble(l -> l.getDoubleValue("SickLeaveHour")).sum();
|
|
|
|
+ //婚假
|
|
|
|
+ double marriageLeaveHour = list.stream().mapToDouble(l -> l.getDoubleValue("MarriageLeaveHour")).sum();
|
|
|
|
+ //产假
|
|
|
|
+ double maternityLeaveHour = list.stream().mapToDouble(l -> l.getDoubleValue("MaternityLeaveHour")).sum();
|
|
|
|
+ workTime=workTime-annualLeaveHour-casualLeaveHour-sickLeaveHour-marriageLeaveHour-maternityLeaveHour;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
UserFvTime userFvTime=new UserFvTime();
|
|
UserFvTime userFvTime=new UserFvTime();
|