考勤格式化版本代码合并

dev-chenwnj
Administrator 1 year ago
parent 2a6faf096e
commit 60659fe90d

@ -2,24 +2,29 @@ package com.engine.kq.biz;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cloudstore.dev.api.util.Util_DataMap;
import com.engine.kq.biz.chain.shiftinfo.ShiftInfoBean;
import com.engine.kq.cmd.attendanceButton.ButtonStatusEnum;
import com.engine.kq.entity.KQShiftRuleEntity;
import com.engine.kq.entity.TimeScopeEntity;
import com.engine.kq.entity.TimeSignScopeEntity;
import com.engine.kq.entity.WorkTimeEntity;
import com.engine.kq.enums.FlowReportTypeEnum;
import com.engine.kq.log.KQLog;
import com.engine.kq.util.UtilKQ;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.googlecode.aviator.AviatorEvaluator;
import com.googlecode.aviator.Expression;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.commons.lang3.StringUtils;
import weaver.common.DateUtil;
import weaver.conn.BatchRecordSet;
import weaver.conn.RecordSet;
import weaver.file.Prop;
import weaver.general.BaseBean;
import weaver.general.InitServer;
import weaver.general.Util;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -309,9 +314,28 @@ public class KQFormatData extends BaseBean {
int[] dayMins = new int[2880];//一天所有分钟数
Arrays.fill(dayMins, -1);
// 一天4次打卡单独做判断
// 一天4次打卡单独做判断如果是上午下班打卡和下午上班打卡时间重叠那么上午的下班卡取最早的下午的上班卡取最晚的。用shiftCount是否等于-1判断-1就走标准不重叠。2就表示重叠走新的逻辑
int shiftCount = lsWorkTime == null ? 0 : lsWorkTime.size();
int shiftI = 0;
String signEndDateTimeZero = "";
for (int i = 0; lsWorkTime != null && i < lsWorkTime.size(); i++) {
shiftI = i;
TimeScopeEntity signTimeScope = lsSignTime.get(i);
TimeScopeEntity workTimeScope = lsWorkTime.get(i);
String signBeginDateTime = signTimeScope.getBeginTimeAcross() ? nextDate : kqDate;
if(signTimeScope.isBeginTimePreAcross()){
signBeginDateTime = preDate;
}
signBeginDateTime+=" "+kqTimesArrayComInfo.turn48to24Time(signTimeScope.getBeginTime())+":00";
String signEndDateTime = signTimeScope.getEndTimeAcross() ? nextDate : kqDate;
signEndDateTime+=" "+kqTimesArrayComInfo.turn48to24Time(signTimeScope.getEndTime())+":59";
if (shiftCount == 2 && shiftI == 0) {
signEndDateTimeZero = signEndDateTime;
}
if (shiftCount == 2 && shiftI == 1) {
shiftCount = signBeginDateTime.compareTo(signEndDateTimeZero) <= 0 ? shiftCount : -1;
}
}
for (int i = 0; lsWorkTime != null && i < lsWorkTime.size(); i++) {
shiftI = i;
params = new ArrayList<>();
@ -590,7 +614,7 @@ public class KQFormatData extends BaseBean {
if(signInTimeOutdx4Sign<signInTimeIndx4Sign){
signMins = 1440 + signInTimeOutdx4Sign - signInTimeIndx4Sign;
}else{
signMins = signInTimeOutdx4Sign - signInTimeIndx4Sign;
signMins = 1440 + signInTimeOutdx4Sign - signInTimeIndx4Sign;
}
}
}else{
@ -669,6 +693,12 @@ public class KQFormatData extends BaseBean {
int tmpBeginIdx = beginIdx;
int tmpEndIdx = endIdx;
Integer val = 0;
if(beginIdx>=workEndIdx){
continue;
}
if(endIdx<=workBeginIdx){
continue;
}
if(leaveInfo.get(newLeaveType)==null){
leaveInfo.put(newLeaveType,val);
}else{
@ -853,7 +883,7 @@ public class KQFormatData extends BaseBean {
forgotCheckMins = 0;
forgotBeginWorkCheckMins = 0;
}
//允许下班不打卡 ,如果上班也没有打卡,那么算漏签
//允许下班不打卡 ,如果上班也没有打卡,那么算上班旷工0.5天
if (isoffdutyfreecheck) {
if (checkIn == 0) {//(无签到),就会有上班漏签,如果有下班卡,那么上班漏签
if(forgotBeginWorkCheckMins==0&&absenteeismMins>0){

Loading…
Cancel
Save