diff --git a/src/com/engine/bjcj220907/dao/OverseasAllowanceDAO.java b/src/com/engine/bjcj220907/dao/OverseasAllowanceDAO.java index ef7aaac..e41af06 100644 --- a/src/com/engine/bjcj220907/dao/OverseasAllowanceDAO.java +++ b/src/com/engine/bjcj220907/dao/OverseasAllowanceDAO.java @@ -47,6 +47,9 @@ public class OverseasAllowanceDAO { String jwgzdw1 = rs.getString("JWGZDW1"); double dqbtbz = rs.getDouble("DQBTBZ"); int lx = rs.getInt("lx"); + if(jwgzdw1 == ""){ + jwgzdw1="0"; + } if(dqbtbz == -1){ dqbtbz =0.0; } @@ -60,7 +63,7 @@ public class OverseasAllowanceDAO { if(jwgzjsrqStr!=null && jwgzjsrqStr.length()!=0){ jwgzjsrq = sdf.parse(jwgzjsrqStr); } - JwCZInfoDetail build = JwCZInfoDetail.builder().xm(rs.getString("xm")).lx(lx).jwczksrq(jwgzksrq).jwczjsrq(jwgzjsrq).jsglts(jsglts).glbtybz(btbz).jkdqbtbz(dqbtbz).jkdq(jwgzdw1).build(); + JwCZInfoDetail build = JwCZInfoDetail.builder().xm(rs.getString("xm")).lx(lx).jwczksrq(jwgzksrq).jwczjsrq(jwgzjsrq).jsglts(jsglts).glbtybz(btbz).jkdqbtbz(dqbtbz).jkdq(Integer.valueOf(jwgzdw1)).build(); results.add(build); }catch (Exception e){ baseBean.writeLog(e); diff --git a/src/com/engine/bjcj220907/entity/JWJT.java b/src/com/engine/bjcj220907/entity/JWJT.java index 393ca31..30c7380 100644 --- a/src/com/engine/bjcj220907/entity/JWJT.java +++ b/src/com/engine/bjcj220907/entity/JWJT.java @@ -6,6 +6,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; +import java.util.List; /** * @author Harryxzy @@ -93,11 +94,11 @@ public class JWJT { // * 艰苦地区补贴总和 // */ // private double jkdqbtzh; -// -// /** -// * 艰苦地区补贴 -// */ -// private List jkdqbts; + + /** + * 艰苦地区补贴 + */ + private List jkdqbts; } diff --git a/src/com/engine/bjcj220907/entity/JwCZInfo.java b/src/com/engine/bjcj220907/entity/JwCZInfo.java index 1c87fff..0b87650 100644 --- a/src/com/engine/bjcj220907/entity/JwCZInfo.java +++ b/src/com/engine/bjcj220907/entity/JwCZInfo.java @@ -42,8 +42,4 @@ public class JwCZInfo { */ private double glbtrbz; -// /** -// * 考勤月份中境外应常驻天数 -// */ -// private Integer yczDays; } diff --git a/src/com/engine/bjcj220907/entity/JwCZInfoDetail.java b/src/com/engine/bjcj220907/entity/JwCZInfoDetail.java index 65101b3..0c9500b 100644 --- a/src/com/engine/bjcj220907/entity/JwCZInfoDetail.java +++ b/src/com/engine/bjcj220907/entity/JwCZInfoDetail.java @@ -69,7 +69,7 @@ public class JwCZInfoDetail { /** * 艰苦地区 */ - private String jkdq; + private Integer jkdq; } diff --git a/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java b/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java index 2ef794c..f1c64eb 100644 --- a/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java +++ b/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java @@ -22,7 +22,6 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse BaseBean baseBean = new BaseBean(); - public MonthBonusDAO getMonthBonusDAO(){ return new MonthBonusDAO(); } @@ -60,6 +59,8 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse List results = new ArrayList<>(); jwCZInfos = getCZInfosAndCZDays(jwCZInfos, startAttendanceCal, endAttendanceCal,results); baseBean.writeLog("获取用户在考勤周期内存在境外常驻信息过滤出来,并且计算当月境外应常驻天数及境内工作天数,共::"+results.size()); + // 将jwCZInfos中的艰苦地区常驻天数封装到results中 + // 计算考勤所属月员工的薪酬等级,获取相应的境外津贴标准 List users = results.stream().map(i -> i.getUser()).collect(Collectors.toList()); Map usersXSDJ = getOverseasAllowanceDAO().getXCDJByUsers(users,startAttendanceCal); @@ -75,7 +76,6 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse // 处理艰苦地区补贴 - } /** @@ -94,6 +94,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse int[] ycq = {0}; int[] gnycq = {0}; List details = new ArrayList<>(); + ArrayList jkdqbts = new ArrayList<>(); for (int i = 0; i < czDetails.size(); i++) { JwCZInfoDetail detail = czDetails.get(i); if (detail.getLx() == 0 && (detail.getJwczksrq().before(endAttendanceCal.getTime()) || detail.getJwczksrq().equals(endAttendanceCal.getTime()))) { @@ -104,10 +105,22 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse ycq[0] += days; countDay[0].setTime(detail.getJwczksrq()); countDay[0].add(Calendar.DATE, -1); + // 存入常驻天数用于计算艰苦地区补贴 +// int days1 = BjcjCommonUtils.getDays(detail.getJwczksrq(), endAttendanceCal.getTime()); + detail.setDays(days); + JKDQBT jk = JKDQBT.builder().lx(detail.getLx()).days(days).jkdq(detail.getJkdq()).jkdqbtbz(detail.getJkdqbtbz()).build(); + jkdqbts.add(jk); } else { // 开始常驻日期在 考勤开始日期前(应出勤日期为自然日) int days = BjcjCommonUtils.getDays(startAttendanceCal.getTime(), endAttendanceCal.getTime()); + // 存入常驻天数用于计算艰苦地区补贴 +// int days1 = BjcjCommonUtils.getDays(startAttendanceCal.getTime(), endAttendanceCal.getTime()); + detail.setDays(days); + JKDQBT jk = JKDQBT.builder().lx(detail.getLx()).days(days).jkdq(detail.getJkdq()).jkdqbtbz(detail.getJkdqbtbz()).build(); JWJT build = JWJT.builder().user(czInfo.getXm()).jwycq(days).gngzts(0.0).kqMonth(endAttendanceCal.getTime()).build(); + ArrayList jkdqbtList = new ArrayList<>(); + jkdqbtList.add(jk); + build.setJkdqbts(jkdqbtList); results.add(build); return true; } @@ -123,6 +136,21 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse details.add(starCal.getTime()); starCal.add(Calendar.DAY_OF_YEAR, 1); } + // 修正常驻开始时间和结束时间 + Calendar countStartCal = Calendar.getInstance(); + countStartCal.setTime(detail.getJwczksrq()); + Calendar countEndCal = Calendar.getInstance(); + countEndCal.setTime(detail.getJwczjsrq()); + if(countStartCal.getTime().before(startAttendanceCal.getTime())){ + countStartCal.setTime(startAttendanceCal.getTime()); + } + if(countEndCal.getTime().after(endAttendanceCal.getTime())){ + countEndCal.setTime(endAttendanceCal.getTime()); + } + int days = BjcjCommonUtils.getDays(countStartCal.getTime(), countEndCal.getTime()); + detail.setDays(days); + JKDQBT jk = JKDQBT.builder().lx(detail.getLx()).days(days).jkdq(detail.getJkdq()).jkdqbtbz(detail.getJkdqbtbz()).build(); + jkdqbts.add(jk); } if (i == czDetails.size() - 1) { // 已经将所有考勤周期内境外常驻的区间时间转换为记录 @@ -151,6 +179,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse } } JWJT build = JWJT.builder().user(czInfo.getXm()).jwycq(ycq[0]).gngzts(gnycq[0]).kqMonth(endAttendanceCal.getTime()).build(); + build.setJkdqbts(jkdqbts); results.add(build); return true; }