diff --git a/src/com/engine/bjcj220907/service/impl/GetKQ4OverseasAllowanceCountServiceImpl.java b/src/com/engine/bjcj220907/service/impl/GetKQ4OverseasAllowanceCountServiceImpl.java index cd0f087..2f133a6 100644 --- a/src/com/engine/bjcj220907/service/impl/GetKQ4OverseasAllowanceCountServiceImpl.java +++ b/src/com/engine/bjcj220907/service/impl/GetKQ4OverseasAllowanceCountServiceImpl.java @@ -70,13 +70,16 @@ public class GetKQ4OverseasAllowanceCountServiceImpl extends Service implements countBeginCal.setTime(attend4MonthBonus.getBeginDate()); Calendar countEndCal = Calendar.getInstance(); countEndCal.setTime(attend4MonthBonus.getEndDate()); + countEndCal.set(Calendar.HOUR_OF_DAY, 0); + countEndCal.set(Calendar.MINUTE, 0); + countEndCal.set(Calendar.SECOND, 0); + countEndCal.set(Calendar.MILLISECOND, 0); List attDateList = new ArrayList<>(); while (countEndCal.after(countBeginCal) || countEndCal.getTime().equals(countBeginCal.getTime())){ attDateList.add(countEndCal.getTime()); countEndCal.add(Calendar.DATE,-1); } baseBean.writeLog("获取缺勤日期为:"+attDateList); -// baseBean.writeLog("dataList:"+dataList); dataList.stream().forEach(i->{ if(users.contains(i.get("resourceId"))){ List qqDate = new ArrayList<>(); diff --git a/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java b/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java index 302c5f0..b375a61 100644 --- a/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java +++ b/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java @@ -42,6 +42,10 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse */ @Override public void countOverseasAllowance(Calendar countCal) { + //TODO + + countCal.set(Calendar.MONTH,9); + // 境外津贴包含:境外津贴(天标准)+境外工龄补贴(月标准)+艰苦地区补贴(天标准) // 考勤开始日期 Calendar startAttendanceCal = BjcjCommonUtils.getStartAttendanceCal(countCal.getTime()); @@ -82,8 +86,8 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse baseBean.writeLog("第三国出差(2)、境外国内出差(3)艰苦地区补贴:"+dsgccJkdq); // 封装第三国出差数、境外国内出差据到result中 getDsgcc(results,dsgccJkdq,startAttendanceCal.getTime(),endAttendanceCal.getTime()); - // 处理艰苦地区补贴天数(境外常驻补贴天数=境外实出勤-第三国出差-?) - handleJkdqDays(results); + // 处理艰苦地区补贴天数(境外常驻补贴天数=境外实出勤-第三国出差-境外国内出差) + handleJkdqDays(results, kqDatas, gwhgInfos); // 计算艰苦地区补贴合计 coutJkdqbthj(results); // 四项补贴合计(天标准)*(公务回国工作日天数+国内工作日天数) @@ -100,7 +104,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse * @author Harryxzy * @date 2022/12/23 18:04 */ - private void handleJkdqDays(List results) { + private void handleJkdqDays(List results, Map kqData, Map> gwhgInfos) { results.forEach(result -> { // 获取境外常驻的艰苦地区 和 第三国出差及境外国内出差的艰苦地区 ArrayList dsgAndJwgncc = new ArrayList<>(); @@ -123,6 +127,43 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse }); }); } + + // 缺勤List + List qqDate = (List ) kqData.get(result.getUser() + "-qq"); + // 公务回国List + List gwhgList = gwhgInfos.get(new Integer(result.getUser())); + if(result.getUser().equals("109")){ + System.out.println("-"); + } + + // 减去缺勤、公务回国 + jwcc.stream().forEach(cc -> { + Calendar countKs = Calendar.getInstance(); + countKs.setTime(cc.getJkdqKssj()); + Calendar countJs = Calendar.getInstance(); + countJs.setTime(cc.getJkdqJssj()); + while (countKs.before(countJs) || countJs.equals(countKs)){ + // 是否存在缺勤 + if(qqDate != null){ + if(qqDate.contains(countKs.getTime())){ + cc.setDays(cc.getDays()-1); + } + } + if(gwhgList != null){ + gwhgList.stream().forEach(gwhg ->{ + boolean isBetween = BjcjCommonUtils.isBetween(countKs.getTime(), gwhg.getJwczksrq(), gwhg.getJwczjsrq()); + if(isBetween){ + // 常驻期间存在公务回国 + cc.setDays(cc.getDays()-1); + } + }); + } + countKs.add(Calendar.DAY_OF_MONTH,1); + } + + cc.setJkdqbt(cc.getDays() * cc.getJkdqbtbz()); + }); + }); } @@ -429,6 +470,10 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse for(Map.Entry> entrySet : gwhgInfos.entrySet()){ List values = entrySet.getValue(); values.stream().forEach(value ->{ + // TODO + if(entrySet.getKey().equals(109)){ + System.out.println("-"); + } if( (value.getJwczksrq().before(endAttendance) || value.getJwczksrq().equals(endAttendance)) && (value.getJwczjsrq().after(startAttendance) || value.getJwczjsrq().equals(startAttendance)) ){ // 在考勤周期内的公务回国,计算国内工作天数