开始核算四项补助合计

This commit is contained in:
Harryxzy 2022-09-29 18:07:09 +08:00
parent 511fd6f4ce
commit bfa7831e08
4 changed files with 55 additions and 12 deletions

View File

@ -84,7 +84,7 @@ public class OverseasAllowanceDAO {
StringBuilder sb =new StringBuilder();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if(users != null && users.size()>0){
sb = new StringBuilder("select h.id,z.gj,z.xd,z.sxrq,d.xcdj,jwjtbz FROM hrmresource h LEFT JOIN uf_xczjbd z on h.id=z.xm and sxrq <= '" +sdf.format(startAttendanceCal.getTime()) +
sb = new StringBuilder("select h.id,z.gj,z.xd,z.sxrq,d.xcdj,jwjtbz,cb+lb+txf+wcbz sxbzhj FROM hrmresource h LEFT JOIN uf_xczjbd z on h.id=z.xm and sxrq <= '" +sdf.format(startAttendanceCal.getTime()) +
"' LEFT JOIN uf_xcdj d on d.gj=z.gj and d.xd=z.xd WHERE h.id IN ( ");
for(int i=0;i<users.size();i++){
sb.append(users.get(i));
@ -100,11 +100,15 @@ public class OverseasAllowanceDAO {
int xm = rs.getInt("id");
String xcdjStr = rs.getString("XCDJ");
double jwjtbz = rs.getDouble("jwjtbz");
double sxbzhj = rs.getDouble("sxbzhj");
if(sxbzhj == -1){
sxbzhj = 0.0;
}
if(jwjtbz == -1){
jwjtbz=0.0;
}
if(!xcdj.containsKey(xm)){
XcdjJwjtParam build = XcdjJwjtParam.builder().xcdj(xcdjStr).jwjtbz(jwjtbz).build();
XcdjJwjtParam build = XcdjJwjtParam.builder().xcdj(xcdjStr).jwjtbz(jwjtbz).sxbzhj(sxbzhj).build();
xcdj.put(xm,build);
}
}

View File

@ -100,5 +100,20 @@ public class JWJT {
*/
private List<JKDQBT> jkdqbts;
/**
* 四项补助合计月标准
*/
private double sxbzhjbz;
/**
* 四项补助合计日标准
*/
private double sxbzhjrbz;
/**
* 四项补助合计
*/
private double sxbzhj;
}

View File

@ -30,4 +30,9 @@ public class XcdjJwjtParam {
* 境外津贴标准
*/
private double jwjtbz;
/**
* 四项补助合计金额
*/
private double sxbzhj;
}

View File

@ -62,26 +62,29 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
// 计算考勤所属月员工的薪酬等级获取相应的境外津贴标准
List<String> users = results.stream().map(i -> i.getUser()).collect(Collectors.toList());
Map<Integer, XcdjJwjtParam> usersXSDJ = getOverseasAllowanceDAO().getXCDJByUsers(users,startAttendanceCal);
baseBean.writeLog("获取所有员工考勤所属月的薪酬等级及所对应的境外津贴标准,共:"+usersXSDJ.size());
baseBean.writeLog("获取所有员工考勤所属月的薪酬等级及所对应的境外津贴标准、四项补贴合计,共:"+usersXSDJ.size());
// 获取公务回国天数 缺勤天数
Attend4MonthBonus build = Attend4MonthBonus.builder().beginDate(startAttendanceCal.getTime()).endDate(endAttendanceCal.getTime()).build();
Map<String, Double> kqDatas = GetKQ4OverseasAllowanceCountService().getKQDatas(build);
baseBean.writeLog("调用考勤接口获取公务回国天数 及 缺勤天数,共:"+usersXSDJ.size());
// 封装薪酬等级境外津贴标准考勤天数
getXcdjAndJwjtbz(results,usersXSDJ,kqDatas);
// 封装薪酬等级境外津贴标准考勤天数四项补助合计
int days = BjcjCommonUtils.getDays(startAttendanceCal.getTime(), endAttendanceCal.getTime());
getXcdjAndJwjtbz(results,usersXSDJ,kqDatas,days);
// TODO:验证一下188 陈涛有没有考勤数据 结果不再是0.00
baseBean.writeLog("封装薪酬等级、境外津贴标准、考勤天数、境外实际常驻天数并计算实出勤天数、境外津贴,共:"+results.size());
// 处理第三国出差(2)境外国内出差3艰苦地区补贴
Map<Integer, List<JwCZInfoDetail>> dsgccJkdq = getOverseasAllowanceDAO().getDsgcc();
baseBean.writeLog("获取第三国出差(2)、境外国内出差3艰苦地区补贴,共:"+dsgccJkdq.size());
// 封装第三国出差数境外国内出差据到result中
getDsgcc(results,dsgccJkdq,startAttendanceCal.getTime(),endAttendanceCal.getTime());
List<JWJT> collect = results.stream().sorted((a, b) -> Integer.valueOf(a.getUser()).compareTo(Integer.valueOf(b.getUser()))).collect(Collectors.toList());
System.out.println("hi");
// 处理四项补贴月标准
// 四项补贴合计天标准*公务回国工作日天数+境外国内出差工作日天数+国内工作日天数
countSxbthj(results);
}
/**
* @description 获取用户在考勤周期内存在境外常驻信息过滤出来并且计算当月境外应常驻天数及境内工作天数
* @return List<JwCZInfo>
@ -199,11 +202,13 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
* @author Harryxzy
* @date 2022/9/27 15:37
*/
public void getXcdjAndJwjtbz(List<JWJT> results ,Map<Integer, XcdjJwjtParam> usersXSDJ,Map<String, Double> kqDatas){
public void getXcdjAndJwjtbz(List<JWJT> results ,Map<Integer, XcdjJwjtParam> usersXSDJ,Map<String, Double> kqDatas,int kqDays){
results.stream().forEach(item-> {
XcdjJwjtParam param = usersXSDJ.get(Integer.valueOf(item.getUser()));
item.setXcdj(param.getXcdj());
item.setJwjtbz(param.getJwjtbz());
item.setSxbzhjbz(param.getSxbzhj());
item.setSxbzhjrbz(param.getSxbzhj()/kqDays);
if(kqDatas.get(item.getUser() + "-qq") == null){
// 目前该员工没有考勤数据
item.setQq(0.0);
@ -273,4 +278,18 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
}
});
}
/**
* @description 计算四项补助合计 = 四项补贴合计天标准*公务回国工作日天数+国内工作日天数
* @return void
* @author Harryxzy
* @date 2022/9/29 17:59
*/
private void countSxbthj(List<JWJT> results) {
results.stream().forEach(i->{
// 获取员工的公务回国天数和国内工作日天数
});
}
}