package com.engine.attendance.attendanceanalysis.service.impl; import com.engine.attendance.attendanceanalysis.service.EvectionService; import com.engine.attendance.enums.CheckBoxEnum; import com.engine.attendance.enums.WorkForTimeEnum; import com.engine.common.util.DateUtil; import com.engine.common.util.Utils; import com.engine.core.impl.Service; import com.google.common.collect.Lists; import com.google.common.collect.Maps; 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 Map evectionByTime(Map param) { //人员迟到、早退、漏卡等记录 List> abnormalClockInList = (List>)param.get("abnormalClockInList"); //请假开始时间 String kssj = Util.null2String(param.get("kssj")); //请假结束时间 String jssj = Util.null2String(param.get("jssj")); //作用时段 String zysd = Util.null2String(param.get("zysd")); List> offsetEvectionAnomaly = Lists.newArrayList(); for (int i=0;i= 0) { offsetEvectionAnomaly.add(abnormalClockInList.get(i)); } } } abnormalClockInList.removeAll(offsetEvectionAnomaly); Map resultMap = Maps.newHashMap(); resultMap.put("abnormalClockInList",abnormalClockInList); resultMap.put("offsetEvectionAnomaly",offsetEvectionAnomaly); return resultMap; } @Override public Map 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> offsetEvectionAnomaly = Lists.newArrayList(); //作用时段 String zysd = Util.null2String(param.get("zysd")); 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()); String bdlx = Util.null2String(abnormalClockInList.get(i).get("bdlx")); if (ccsc > time && (zysd.contains(Utils.getWorkFor(bdlx)) || zysd.contains(WorkForTimeEnum.ALL_TIME.getKey()))){ ccsc = ccsc-time; offsetEvectionAnomaly.add(abnormalClockInList.get(i)); } } abnormalClockInList.removeAll(offsetEvectionAnomaly); }else{ for (int i=abnormalClockInList.size() -1;i>=0;i--){ int time = Integer.valueOf(abnormalClockInList.get(i).get("betweenMinutes").toString()); String bdlx = Util.null2String(abnormalClockInList.get(i).get("bdlx")); if (ccsc > time && (zysd.contains(Utils.getWorkFor(bdlx)) || zysd.contains(WorkForTimeEnum.ALL_TIME.getKey()))){ offsetEvectionAnomaly.add(abnormalClockInList.get(i)); abnormalClockInList.remove(i); break; } } } abnormalClockInList.addAll(forgetClockList); Map resultMap = Maps.newHashMap(); resultMap.put("abnormalClockInList",abnormalClockInList); resultMap.put("offsetEvectionAnomaly",offsetEvectionAnomaly); return resultMap; } @Override public List> evectionByHalfDay(Map param) { return null; } }