处理艰苦地区-缺勤-公务回国

This commit is contained in:
Harryxzy 2022-12-26 14:41:34 +08:00
parent 6b1d6dd49f
commit 3eb5e5861c
2 changed files with 52 additions and 4 deletions

View File

@ -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<Date> 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<Date> qqDate = new ArrayList<>();

View File

@ -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<JWJT> results) {
private void handleJkdqDays(List<JWJT> results, Map<String, Object> kqData, Map<Integer, List<JwCZInfoDetail>> gwhgInfos) {
results.forEach(result -> {
// 获取境外常驻的艰苦地区 第三国出差及境外国内出差的艰苦地区
ArrayList<JKDQBT> dsgAndJwgncc = new ArrayList<>();
@ -123,6 +127,43 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
});
});
}
// 缺勤List
List<Date> qqDate = (List <Date>) kqData.get(result.getUser() + "-qq");
// 公务回国List
List<JwCZInfoDetail> 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<Integer,List<JwCZInfoDetail>> entrySet : gwhgInfos.entrySet()){
List<JwCZInfoDetail> 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)) ){
// 在考勤周期内的公务回国计算国内工作天数