diff --git a/src/com/engine/kq/job/SynClockInTimeJob.java b/src/com/engine/kq/job/SynClockInTimeJob.java
index ee596ba..c1a1d78 100644
--- a/src/com/engine/kq/job/SynClockInTimeJob.java
+++ b/src/com/engine/kq/job/SynClockInTimeJob.java
@@ -1,5 +1,6 @@
package com.engine.kq.job;
+import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.TimeUtil;
import weaver.general.Util;
@@ -51,6 +52,14 @@ public class SynClockInTimeJob extends BaseCronJob {
boolean bool = rs1.executeUpdate("update uf_jbtz set zzdksj=?,zwdkrq=? where id=?",earlystarttime,afterendtime,mainid);
if(bool){
rs.writeLog(userid+ " ------------ "+ kssj +" ------------ "+ jsrq +" ---------- "+ bool);
+ // 计算有效时长
+ rs.writeLog("计算有效时长开始");
+ rs.writeLog("earlystarttime===" + earlystarttime + ",afterendtime===" + afterendtime + ",gzrq===" + gzrq);
+ // 来源为导入,且最早、最晚打卡时间,归属日期不为空的数据
+ if (StringUtils.isNoneBlank(earlystarttime, afterendtime, gzrq)) {
+ UpdateEffectiveDuration.execute(mainid, userid, gzrq, earlystarttime, afterendtime,starttime,endtime);
+ }
+ rs.writeLog("计算有效时长结束");
}
}
}catch(Exception e){
diff --git a/src/com/engine/kq/job/UpdateEffectiveDuration.java b/src/com/engine/kq/job/UpdateEffectiveDuration.java
new file mode 100644
index 0000000..ec07e1d
--- /dev/null
+++ b/src/com/engine/kq/job/UpdateEffectiveDuration.java
@@ -0,0 +1,317 @@
+package com.engine.kq.job;
+
+import com.alibaba.fastjson.JSON;
+import com.engine.kq.biz.KQShiftManagementComInfo;
+import com.engine.kq.biz.KQShiftRestTimeSectionComInfo;
+import com.engine.kq.biz.KQWorkTime;
+import com.engine.kq.entity.WorkTimeEntity;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import weaver.common.DateUtil;
+import weaver.conn.RecordSet;
+import weaver.general.BaseBean;
+
+import java.time.Duration;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
+import java.util.*;
+
+/**
+ * @author:dxfeng
+ * @createTime: 2024/03/29
+ * @version: 1.0
+ */
+public class UpdateEffectiveDuration {
+ /**
+ * 日期时间格式化
+ */
+ private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+
+ /**
+ * 更新加班台账表,有效时长字段
+ *
+ * 导入的加班数据增加根据班次的最早最晚打卡时间取交集,按照系统的加班单和打卡数据取交集处理
+ *
+ * @param mainId 当前数据ID
+ * @param userId 加班人ID
+ * @param gzrq 归属日志
+ * @param earlyStartTime 最早打卡时间
+ * @param afterEndTime 最晚打卡时间
+ */
+ public static void execute(String mainId, String userId, String gzrq, String earlyStartTime, String afterEndTime, String startTime, String endTime) {
+ RecordSet recordSet = new RecordSet();
+ try {
+ KQWorkTime kqWorkTime = new KQWorkTime();
+ WorkTimeEntity workTimeEntity = kqWorkTime.getWorkTime(userId, gzrq);
+ String serialId = workTimeEntity.getSerialId();
+ recordSet.writeLog("serialId===" + serialId);
+ if (StringUtils.isBlank(serialId) || "-1".equals(serialId)) {
+ kqWorkTime.setIsFormat(true);
+ workTimeEntity = kqWorkTime.getWorkTime(userId, gzrq);
+ serialId = workTimeEntity.getSerialId();
+ }
+ recordSet.writeLog("userId==" + userId + ",serialId===" + JSON.toJSONString(serialId) + ",workTimeEntity===" + JSON.toJSONString(workTimeEntity));
+ // 转换所有的工作时间
+ List