package com.engine.attendance.attendanceanalysis.service.impl; import com.engine.attendance.attendanceanalysis.service.EvectionService; import com.engine.attendance.enums.CheckBoxEnum; import com.engine.common.util.DateUtil; import com.engine.core.impl.Service; import com.google.common.collect.Lists; import weaver.general.Util; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class EvectionServiceImpl extends Service implements EvectionService { @Override public List> evectionByTime(Map param) { //人员迟到、早退、漏卡等记录 List> abnormalClockInList = (List>)param.get("abnormalClockInList"); //请假开始时间 String kssj = Util.null2String(param.get("kssj")); //请假结束时间 String jssj = Util.null2String(param.get("jssj")); List> needRemoveList = Lists.newArrayList(); for (int i=0;i=0){ needRemoveList.add(abnormalClockInList.get(i)); } } abnormalClockInList.removeAll(needRemoveList); return abnormalClockInList; } @Override public List> evectionByDurationTime(Map param) { //人员迟到、早退、漏卡等记录 List> abnormalClockInList = (List>)param.get("abnormalClockInList"); List> forgetClockList = abnormalClockInList.stream().filter(e -> e.get("betweenMinutes") == null).collect(Collectors.toList()); abnormalClockInList = abnormalClockInList.stream().filter(e -> e.get("betweenMinutes") != null).collect(Collectors.toList()); abnormalClockInList = abnormalClockInList.stream().sorted(Comparator.comparing(e->Integer.valueOf(e.get("betweenMinutes").toString()))).collect(Collectors.toList()); //请假时长,单位小时 int ccsc = param.get("ccsc") == null?0:Double.valueOf(Double.valueOf(param.get("ccsc").toString())*60).intValue(); //同一天可抵消多个异常 List> needRemoveList = Lists.newArrayList(); String tybcndbjlhbjs = Util.null2String(param.get("tybcndbjlhbjs")); if (CheckBoxEnum.CHECKED.getKey().equals(tybcndbjlhbjs)){ for (int i=abnormalClockInList.size() -1;i>=0;i--){ int time = Integer.valueOf(abnormalClockInList.get(i).get("betweenMinutes").toString()); if (ccsc > time){ ccsc = ccsc-time; needRemoveList.add(abnormalClockInList.get(i)); } } abnormalClockInList.removeAll(needRemoveList); }else{ for (int i=abnormalClockInList.size() -1;i>=0;i--){ int time = Integer.valueOf(abnormalClockInList.get(i).get("betweenMinutes").toString()); if (ccsc > time){ abnormalClockInList.remove(i); break; } } } abnormalClockInList.addAll(forgetClockList); return abnormalClockInList; } @Override public List> evectionByHalfDay(Map param) { return null; } }