diff --git a/src/com/engine/kq/biz/KQFormatData.java b/src/com/engine/kq/biz/KQFormatData.java index cd0d0f9..9c3ad76 100644 --- a/src/com/engine/kq/biz/KQFormatData.java +++ b/src/com/engine/kq/biz/KQFormatData.java @@ -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=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){