考虑节假日

This commit is contained in:
Harryxzy 2023-01-08 22:18:53 +08:00
parent cdf976f77e
commit 16e399616d
2 changed files with 53 additions and 4 deletions

View File

@ -83,6 +83,7 @@ public class GetKQ4OverseasAllowanceCountServiceImpl extends Service implements
dataList.stream().forEach(i->{ dataList.stream().forEach(i->{
if(users.contains(i.get("resourceId"))){ if(users.contains(i.get("resourceId"))){
List<Date> qqDate = new ArrayList<>(); List<Date> qqDate = new ArrayList<>();
List<Date> restDate = new ArrayList<>();
attDateList.stream().forEach(a -> { attDateList.stream().forEach(a -> {
Object o = i.get(sdf.format(a)); Object o = i.get(sdf.format(a));
// baseBean.writeLog("i.get(sdf.format(a)) o:"+o); // baseBean.writeLog("i.get(sdf.format(a)) o:"+o);
@ -99,9 +100,15 @@ public class GetKQ4OverseasAllowanceCountServiceImpl extends Service implements
qqDate.add(a); qqDate.add(a);
// baseBean.writeLog(attCal+"缺勤"); // baseBean.writeLog(attCal+"缺勤");
} }
if( attCal.contains("休息") ){
// 记录休息日期用于后续判断公共节假日
restDate.add(a);
}
}); });
String qqStr = i.get("resourceId") +"-qq"; String qqStr = i.get("resourceId") +"-qq";
qqDays.put(qqStr,qqDate); qqDays.put(qqStr,qqDate);
String restStr = i.get("resourceId") +"-rest";
qqDays.put(restStr,restDate);
String gwhgStr = i.get("resourceId") + "-gwhg"; String gwhgStr = i.get("resourceId") + "-gwhg";
if(!gwhgDataIndex[0].equals("")){ if(!gwhgDataIndex[0].equals("")){
gwhgS[0] = (String) i.get(gwhgDataIndex[0]); gwhgS[0] = (String) i.get(gwhgDataIndex[0]);

View File

@ -67,6 +67,8 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
Attend4MonthBonus build = Attend4MonthBonus.builder().beginDate(startAttendanceCal.getTime()).endDate(endAttendanceCal.getTime()).build(); Attend4MonthBonus build = Attend4MonthBonus.builder().beginDate(startAttendanceCal.getTime()).endDate(endAttendanceCal.getTime()).build();
Map<String, Object> kqDatas = GetKQ4OverseasAllowanceCountService().getKQDatas(build,users); Map<String, Object> kqDatas = GetKQ4OverseasAllowanceCountService().getKQDatas(build,users);
baseBean.writeLog("调用考勤接口获取公务回国天数 及 缺勤日期:"+kqDatas); baseBean.writeLog("调用考勤接口获取公务回国天数 及 缺勤日期:"+kqDatas);
// 处理国内应出勤国内天数-休息天数
handleGnycq(results,kqDatas);
// 获取员工公务回国国内工作日天数 // 获取员工公务回国国内工作日天数
Map<Integer, List<JwCZInfoDetail>> gwhgInfos = getOverseasAllowanceDAO().getGwhg(); Map<Integer, List<JwCZInfoDetail>> gwhgInfos = getOverseasAllowanceDAO().getGwhg();
baseBean.writeLog("获取年假建模中所有公务回国信息,共:"+gwhgInfos.size()); baseBean.writeLog("获取年假建模中所有公务回国信息,共:"+gwhgInfos.size());
@ -94,6 +96,44 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
baseBean.writeLog("将结果插入建模表中"); baseBean.writeLog("将结果插入建模表中");
} }
/**
* 处理国内应出勤国内天数-休息天数
* @param results
* @param kqDatas
*/
private void handleGnycq(List<JWJT> results, Map<String, Object> kqDatas) {
results.stream().forEach(item -> {
List<JKDQBT> czList = item.getJkdqbts().stream().filter(jkdqbt -> Objects.equals(jkdqbt.getLx(), 0) || Objects.equals(jkdqbt.getLx(), 1)).collect(Collectors.toList());
List<Date> restDates =(List<Date>) 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 处理艰苦地区补贴天数境外常驻补贴天数=境外实出勤-第三国出差- * @description 处理艰苦地区补贴天数境外常驻补贴天数=境外实出勤-第三国出差-
* @return void * @return void
@ -274,11 +314,11 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
ycq[0]++; ycq[0]++;
aCal.add(Calendar.DATE, -1); aCal.add(Calendar.DATE, -1);
} else { } 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]++; gnycq[0]++;
} // }
aCal.add(Calendar.DATE, -1); aCal.add(Calendar.DATE, -1);
} }
} }
@ -321,6 +361,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
double gnQqDays=0.0; double gnQqDays=0.0;
double jwQqDays=0.0; double jwQqDays=0.0;
// 判断是境内缺勤还是境外缺勤 // 判断是境内缺勤还是境外缺勤
ArrayList<Date> t = new ArrayList<>();
List<JwCZInfoDetail> jwCZInfoDetails = czInfos.get(item.getUser()); List<JwCZInfoDetail> jwCZInfoDetails = czInfos.get(item.getUser());
if(jwCZInfoDetails != null && jwCZInfoDetails.size()>0){ if(jwCZInfoDetails != null && jwCZInfoDetails.size()>0){
for(Date d : qqDate){ for(Date d : qqDate){
@ -350,6 +391,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
if(detail.getJwczjsrq().before(d)){ if(detail.getJwczjsrq().before(d)){
// 境外常驻结束日期在缺勤日前 // 境外常驻结束日期在缺勤日前
gnQqDays++; gnQqDays++;
t.add(d);
flag=true; flag=true;
} }
if(BjcjCommonUtils.isBetween(d,detail.getJwczksrq(),detail.getJwczjsrq())){ 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)){ if( (i+1 == jwCZInfoDetails.size()) && (flag == false)){
gnQqDays++; gnQqDays++;
t.add(d);
} }
} }
} }
@ -369,7 +412,6 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
item.setGwhg((Double) kqDatas.get(item.getUser()+"-gwhg")); item.setGwhg((Double) kqDatas.get(item.getUser()+"-gwhg"));
} }
item.setJwscq(item.getJwycq()-item.getJwQq()-item.getGwhg()); item.setJwscq(item.getJwycq()-item.getJwQq()-item.getGwhg());
item.setGnscq(item.getGngzts() - item.getGnQq()); item.setGnscq(item.getGngzts() - item.getGnQq());
item.setJwjt(item.getJwscq()*item.getJwjtbz()); item.setJwjt(item.getJwscq()*item.getJwjtbz());
if(validGwhgAndCountWorkdays.containsKey(Integer.valueOf(item.getUser()))){ if(validGwhgAndCountWorkdays.containsKey(Integer.valueOf(item.getUser()))){