考勤-出差流程,明细数据生成接口
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