考勤-出差流程,明细数据生成接口
parent
b87e36e250
commit
7c304d6b13
@ -0,0 +1,54 @@
|
|||||||
|
package com.engine.jucailinkq.attendance.attendanceanalysis.cmd.getclockInpoint;
|
||||||
|
|
||||||
|
import com.engine.jucailinkq.attendance.attendanceanalysis.cmd.getclockInpoint.biz.AbstractAdjustClockPointAction;
|
||||||
|
import com.engine.jucailinkq.attendance.attendanceanalysis.dto.clockpoint.ClockPointDTO;
|
||||||
|
import com.engine.jucailinkq.attendance.attendanceanalysis.dto.clockpoint.ClockPointInfo;
|
||||||
|
import com.engine.jucailinkq.attendance.enums.ClassSegmentTypeEnum;
|
||||||
|
import com.engine.jucailinkq.attendance.enums.ClockPointEnum;
|
||||||
|
import com.engine.jucailinkq.common.util.DateUtil;
|
||||||
|
|
||||||
|
import java.time.ZoneOffset;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public class AdjustLastWorkPointCmd extends AbstractAdjustClockPointAction {
|
||||||
|
@Override
|
||||||
|
public List<ClockPointDTO> execute(ClockPointInfo clockPointInfo) {
|
||||||
|
|
||||||
|
//卡点集合
|
||||||
|
List<ClockPointDTO> clcokInPointList = clockPointInfo.getClcokInPointList();
|
||||||
|
String analysisDate = clockPointInfo.getAnalysisDate();
|
||||||
|
|
||||||
|
clcokInPointList = clcokInPointList.stream().sorted(Comparator.comparing(e-> DateUtil.getTime(e.getClassTime()).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int lastWorkPoint = clcokInPointList.size()-3;
|
||||||
|
if (lastWorkPoint >0 && clcokInPointList.get(lastWorkPoint).getPointType().equals(ClockPointEnum.END) &&(clcokInPointList.get(lastWorkPoint).getClassSegmentType().equals(ClassSegmentTypeEnum.WORK_TIME.getKey()) ||
|
||||||
|
clcokInPointList.get(lastWorkPoint).getClassSegmentType().equals(ClassSegmentTypeEnum.OVERTIME_PLAN.getKey()))){
|
||||||
|
ClockPointDTO lastWorkClockPoint = clcokInPointList.get(lastWorkPoint);
|
||||||
|
String lastclassTime = lastWorkClockPoint.getClassTime();
|
||||||
|
Map<String, Object> signClockMap = null;
|
||||||
|
for (int i=clcokInPointList.size()-1;i>lastWorkPoint;i--){
|
||||||
|
signClockMap = clcokInPointList.get(i).getClockTime();
|
||||||
|
if (signClockMap != null){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (signClockMap != null && DateUtil.getTime(lastclassTime).compareTo(DateUtil.getTime(signClockMap.get("signdate")+" "+signClockMap.get("signtime"))) >0){
|
||||||
|
lastWorkClockPoint.setClockTime(signClockMap);
|
||||||
|
lastWorkClockPoint.setTimeType(ClockPointEnum.BEFORE);
|
||||||
|
lastWorkClockPoint.setElasticTime(null);
|
||||||
|
lastWorkClockPoint.setResetCard(true);
|
||||||
|
for (int i=lastWorkPoint+1;i<clcokInPointList.size();i++){
|
||||||
|
clcokInPointList.get(i).setTimeType(ClockPointEnum.EMPTY);
|
||||||
|
clcokInPointList.get(i).setClockTime(null);
|
||||||
|
clcokInPointList.get(i).setElasticTime(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return clcokInPointList;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue