|
@@ -1539,7 +1539,7 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
|
|
|
leaveTotalMin = 0;
|
|
leaveTotalMin = 0;
|
|
|
}
|
|
}
|
|
|
double leaveTotalHour = leaveTotalMin / 60 - minusRest;
|
|
double leaveTotalHour = leaveTotalMin / 60 - minusRest;
|
|
|
- if (showLog) System.out.println("重新计算请假时长:"+leaveStart+"--"+leaveEnd+", 时间间隔="+leaveTotalHour);
|
|
|
|
|
|
|
+// if (showLog) System.out.println("重新计算请假时长:"+leaveStart+"--"+leaveEnd+", 时间间隔="+leaveTotalHour);
|
|
|
if (ct.getAskLeaveTime() != null && ct.getAskLeaveTime() > 0) {
|
|
if (ct.getAskLeaveTime() != null && ct.getAskLeaveTime() > 0) {
|
|
|
//可能一天有多个请假单
|
|
//可能一天有多个请假单
|
|
|
ct.setAskLeaveTime(ct.getAskLeaveTime() + leaveTotalHour);
|
|
ct.setAskLeaveTime(ct.getAskLeaveTime() + leaveTotalHour);
|
|
@@ -1698,8 +1698,29 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
|
|
|
isOldFormat = true;
|
|
isOldFormat = true;
|
|
|
}
|
|
}
|
|
|
//获取到请假的开始时间和结束时间
|
|
//获取到请假的开始时间和结束时间
|
|
|
|
|
+ String startDate = s[0];//格式:12/29
|
|
|
|
|
+ String endDate = s[2];//格式:12/31
|
|
|
String leaveStart = s[1];
|
|
String leaveStart = s[1];
|
|
|
String leaveEnd = isOldFormat ? s[3] : s[4];
|
|
String leaveEnd = isOldFormat ? s[3] : s[4];
|
|
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd");
|
|
|
|
|
+ String createDate = formatter.format(ct.getCreateDate());
|
|
|
|
|
+
|
|
|
|
|
+ if (!startDate.equals(endDate)) {
|
|
|
|
|
+ //跨天请假的情况,需要特殊处理,重新计算开始结束时间
|
|
|
|
|
+ if (createDate.equals(startDate)) {
|
|
|
|
|
+ //当前是第一天,下班时间应该是当天下午结束时间
|
|
|
|
|
+ leaveEnd = baseAfternoonEnd;
|
|
|
|
|
+ } else if (createDate.equals(endDate)) {
|
|
|
|
|
+ //当前是中间天,应该是全天
|
|
|
|
|
+ leaveStart = baseMorningStart;
|
|
|
|
|
+ leaveEnd = baseAfternoonEnd;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ //最后一天,上班时间应该是上午正常上班时间
|
|
|
|
|
+ leaveStart = baseMorningStart;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (showLog) System.out.println("====请假时间=" + leaveStart + " - " + leaveEnd + ", baseAfternoonStart" + baseAfternoonStart + " baseAfternoonEnd=" + baseAfternoonEnd + " baseMorningStart=" + baseMorningStart + " baseMorningEnd=" + baseMorningEnd);
|
|
|
//检查请假时间段是否在打卡的时间范围内
|
|
//检查请假时间段是否在打卡的时间范围内
|
|
|
if (baseMorningStart.equals(leaveStart) && baseMorningEnd.equals(leaveEnd)) {
|
|
if (baseMorningStart.equals(leaveStart) && baseMorningEnd.equals(leaveEnd)) {
|
|
|
morningLeave = true;
|
|
morningLeave = true;
|
|
@@ -1798,14 +1819,14 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
|
|
|
ct.setStartTime(baseMorningStart);
|
|
ct.setStartTime(baseMorningStart);
|
|
|
ct.setEndTime(baseAfternoonEnd);
|
|
ct.setEndTime(baseAfternoonEnd);
|
|
|
if (showLog) System.out.println("再次校正,全天请假");
|
|
if (showLog) System.out.println("再次校正,全天请假");
|
|
|
- } else if (morningLeave){
|
|
|
|
|
|
|
+ } else if (morningLeave && ct.getAskLeaveTime() < 6.0) {//加上时长的比对,确保是半天请假
|
|
|
ct.setAskLeaveTime(baseMorningWorkTime);
|
|
ct.setAskLeaveTime(baseMorningWorkTime);
|
|
|
ct.setWorkHours(baseAfternoonWorkTime);
|
|
ct.setWorkHours(baseAfternoonWorkTime);
|
|
|
ct.setCardTime(baseAfternoonWorkTime);
|
|
ct.setCardTime(baseAfternoonWorkTime);
|
|
|
ct.setStartTime(baseAfternoonStart);
|
|
ct.setStartTime(baseAfternoonStart);
|
|
|
ct.setEndTime(baseAfternoonEnd);
|
|
ct.setEndTime(baseAfternoonEnd);
|
|
|
if (showLog) System.out.println("再次校正,上午请假");
|
|
if (showLog) System.out.println("再次校正,上午请假");
|
|
|
- } else if (afternoonLeave) {
|
|
|
|
|
|
|
+ } else if (afternoonLeave && ct.getAskLeaveTime() < 6.0) {//加上时长的比对,确保是半天请假
|
|
|
ct.setAskLeaveTime(baseAfternoonWorkTime);
|
|
ct.setAskLeaveTime(baseAfternoonWorkTime);
|
|
|
ct.setWorkHours(baseMorningWorkTime);
|
|
ct.setWorkHours(baseMorningWorkTime);
|
|
|
ct.setCardTime(baseMorningWorkTime);
|
|
ct.setCardTime(baseMorningWorkTime);
|
|
@@ -1903,10 +1924,12 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
|
|
|
ct.setId(item.getId());
|
|
ct.setId(item.getId());
|
|
|
//之前有的时长不合法,或者新的有打卡时长
|
|
//之前有的时长不合法,或者新的有打卡时长
|
|
|
if (item.getWorkHours() <= 0 || hasTimeRecord) {
|
|
if (item.getWorkHours() <= 0 || hasTimeRecord) {
|
|
|
|
|
+ if (showLog) System.out.println("更新考勤记录"+curUserid+", "+localDate);
|
|
|
userCorpwxTimeMapper.updateById(ct);
|
|
userCorpwxTimeMapper.updateById(ct);
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
|
if (hasTimeRecord) {
|
|
if (hasTimeRecord) {
|
|
|
|
|
+ if (showLog) System.out.println("插入考勤记录"+curUserid+", "+localDate);
|
|
|
userCorpwxTimeMapper.insert(ct);
|
|
userCorpwxTimeMapper.insert(ct);
|
|
|
} else {
|
|
} else {
|
|
|
//调用打卡详情去获取,弥补外出打卡且时间不在自动同步范围内的情况; 仅对工作日有效
|
|
//调用打卡详情去获取,弥补外出打卡且时间不在自动同步范围内的情况; 仅对工作日有效
|