diff --git a/src/com/engine/bjcj220907/dao/OverseasAllowanceDAO.java b/src/com/engine/bjcj220907/dao/OverseasAllowanceDAO.java index c4271d8..1259446 100644 --- a/src/com/engine/bjcj220907/dao/OverseasAllowanceDAO.java +++ b/src/com/engine/bjcj220907/dao/OverseasAllowanceDAO.java @@ -18,22 +18,35 @@ public class OverseasAllowanceDAO { /** - * @description 计算考勤所属月员工的薪酬等级 + * @description 计算考勤所属月境外常驻员工的薪酬等级 * @return Map * @author Harryxzy * @date 2022/9/26 17:43 */ - public Map getXCDJByUsers(Calendar startAttendanceCal) { + public Map getXCDJByUsers(List users,Calendar startAttendanceCal) { RecordSet rs = new RecordSet(); + StringBuilder sb =new StringBuilder(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - String sql ="select z.xm,z.gj,z.xd,z.sxrq,d.xcdj,jxgz from uf_xczjbd z LEFT JOIN uf_xcdj d on d.gj=z.gj and d.xd=z.xd where sxrq <= " - +sdf.format(startAttendanceCal.getTime())+" order by sxrq desc"; - rs.execute(sql); + 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()) + + "' LEFT JOIN uf_xcdj d on d.gj=z.gj and d.xd=z.xd WHERE h.id IN ( "); + for(int i=0;i xcdj = new HashMap<>(); while (rs.next()){ - int xm = rs.getInt("xm"); + int xm = rs.getInt("id"); String xcdjStr = rs.getString("XCDJ"); double jwjtbz = rs.getDouble("jwjtbz"); + if(jwjtbz==-1){ + jwjtbz=0.0; + } if(!xcdj.containsKey(xm)){ XcdjJwjtParam build = XcdjJwjtParam.builder().xcdj(xcdjStr).jwjtbz(jwjtbz).build(); xcdj.put(xm,build); diff --git a/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java b/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java index 7691859..603e8d0 100644 --- a/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java +++ b/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java @@ -55,9 +55,9 @@ public class OverseasAllowanceCountServiceImpl implements OverseasAllowanceCount baseBean.writeLog("获取用户在考勤周期内存在境外常驻信息过滤出来,并且计算当月境外应常驻天数及境内工作天数:"+results.size()); // 计算考勤所属月员工的薪酬等级,获取相应的境外津贴标准 List users = results.stream().map(i -> i.getUser()).collect(Collectors.toList()); - Map usersXSDJ = getOverseasAllowanceDAO().getXCDJByUsers(startAttendanceCal); + Map usersXSDJ = getOverseasAllowanceDAO().getXCDJByUsers(users,startAttendanceCal); baseBean.writeLog("获取所有员工考勤所属月的薪酬等级及所对应的境外津贴标准:"+usersXSDJ.size()); - // + } /** @@ -69,9 +69,6 @@ public class OverseasAllowanceCountServiceImpl implements OverseasAllowanceCount public List getCZInfosAndCZDays(List jwCZInfos,Calendar startAttendanceCal,Calendar endAttendanceCal){ ArrayList results = new ArrayList<>(); jwCZInfos.stream().filter(czInfo -> { - if(czInfo.getXm().equals("1462")){ - System.out.println("H"); - } List czDetails = czInfo.getInfos(); // 用于存储计算到哪一天的日期 Calendar c = Calendar.getInstance();