diff --git a/src/com/engine/bjcj220907/service/impl/GetKQ4OverseasAllowanceCountServiceImpl.java b/src/com/engine/bjcj220907/service/impl/GetKQ4OverseasAllowanceCountServiceImpl.java index 63a1764..9ec46dc 100644 --- a/src/com/engine/bjcj220907/service/impl/GetKQ4OverseasAllowanceCountServiceImpl.java +++ b/src/com/engine/bjcj220907/service/impl/GetKQ4OverseasAllowanceCountServiceImpl.java @@ -83,6 +83,7 @@ public class GetKQ4OverseasAllowanceCountServiceImpl extends Service implements dataList.stream().forEach(i->{ if(users.contains(i.get("resourceId"))){ List qqDate = new ArrayList<>(); + List restDate = new ArrayList<>(); attDateList.stream().forEach(a -> { Object o = i.get(sdf.format(a)); // baseBean.writeLog("i.get(sdf.format(a)) o:"+o); @@ -99,9 +100,15 @@ public class GetKQ4OverseasAllowanceCountServiceImpl extends Service implements qqDate.add(a); // baseBean.writeLog(attCal+"缺勤"); } + if( attCal.contains("休息") ){ + // 记录休息日期(用于后续判断公共节假日) + restDate.add(a); + } }); String qqStr = i.get("resourceId") +"-qq"; qqDays.put(qqStr,qqDate); + String restStr = i.get("resourceId") +"-rest"; + qqDays.put(restStr,restDate); String gwhgStr = i.get("resourceId") + "-gwhg"; if(!gwhgDataIndex[0].equals("")){ gwhgS[0] = (String) i.get(gwhgDataIndex[0]); diff --git a/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java b/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java index 73bff0b..cfc1a6e 100644 --- a/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java +++ b/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java @@ -67,6 +67,8 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse Attend4MonthBonus build = Attend4MonthBonus.builder().beginDate(startAttendanceCal.getTime()).endDate(endAttendanceCal.getTime()).build(); Map kqDatas = GetKQ4OverseasAllowanceCountService().getKQDatas(build,users); baseBean.writeLog("调用考勤接口获取公务回国天数 及 缺勤日期:"+kqDatas); + // 处理国内应出勤,国内天数-休息天数 + handleGnycq(results,kqDatas); // 获取员工公务回国国内工作日天数 Map> gwhgInfos = getOverseasAllowanceDAO().getGwhg(); baseBean.writeLog("获取年假建模中所有公务回国信息,共:"+gwhgInfos.size()); @@ -94,6 +96,44 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse baseBean.writeLog("将结果插入建模表中"); } + /** + * 处理国内应出勤,国内天数-休息天数 + * @param results + * @param kqDatas + */ + private void handleGnycq(List results, Map kqDatas) { + results.stream().forEach(item -> { + List czList = item.getJkdqbts().stream().filter(jkdqbt -> Objects.equals(jkdqbt.getLx(), 0) || Objects.equals(jkdqbt.getLx(), 1)).collect(Collectors.toList()); + List restDates =(List) kqDatas.get(item.getUser() + "-rest"); + if(restDates != null && restDates.size() > 0){ + int gnRestDays = 0; + boolean[] flag = {false}; + for(Date d : restDates){ + flag[0] = false; + czList.stream().forEach(cz -> { + if(Objects.equals(cz.getLx(),0)){ + if(d.after(cz.getJkdqKssj()) || cz.getJkdqKssj().equals(d)){ + // 是国外休息 + flag[0] = true; + } + }else{ + // 结束常驻 + if( BjcjCommonUtils.isBetween(d, cz.getJkdqKssj(), cz.getJkdqJssj()) ){ + // 是国外休息 + flag[0] = true; + } + } + + }); + if(flag[0] == false){ + gnRestDays++; + } + } + item.setGngzts( item.getGngzts() -gnRestDays ); + } + }); + } + /** * @description 处理艰苦地区补贴天数(境外常驻补贴天数=境外实出勤-第三国出差-?) * @return void @@ -274,11 +314,11 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse ycq[0]++; aCal.add(Calendar.DATE, -1); } else { - // 没有境外记录,判断是否是工作日 - if ((aCal.get(Calendar.DAY_OF_WEEK) != 1) && (aCal.get(Calendar.DAY_OF_WEEK) != 7)) { + // 没有境外记录,判断是否是工作日(需考虑节假日) +// if ((aCal.get(Calendar.DAY_OF_WEEK) != 1) && (aCal.get(Calendar.DAY_OF_WEEK) != 7)) { // 是工作日 gnycq[0]++; - } +// } aCal.add(Calendar.DATE, -1); } } @@ -321,6 +361,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse double gnQqDays=0.0; double jwQqDays=0.0; // 判断是境内缺勤还是境外缺勤 + ArrayList t = new ArrayList<>(); List jwCZInfoDetails = czInfos.get(item.getUser()); if(jwCZInfoDetails != null && jwCZInfoDetails.size()>0){ for(Date d : qqDate){ @@ -350,6 +391,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse if(detail.getJwczjsrq().before(d)){ // 境外常驻结束日期在缺勤日前 gnQqDays++; + t.add(d); flag=true; } if(BjcjCommonUtils.isBetween(d,detail.getJwczksrq(),detail.getJwczjsrq())){ @@ -360,6 +402,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse } if( (i+1 == jwCZInfoDetails.size()) && (flag == false)){ gnQqDays++; + t.add(d); } } } @@ -369,7 +412,6 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse item.setGwhg((Double) kqDatas.get(item.getUser()+"-gwhg")); } item.setJwscq(item.getJwycq()-item.getJwQq()-item.getGwhg()); - item.setGnscq(item.getGngzts() - item.getGnQq()); item.setJwjt(item.getJwscq()*item.getJwjtbz()); if(validGwhgAndCountWorkdays.containsKey(Integer.valueOf(item.getUser()))){