diff --git a/src/com/engine/bjcj220907/dao/OverseasAllowanceDAO.java b/src/com/engine/bjcj220907/dao/OverseasAllowanceDAO.java index 82f1937..b403e48 100644 --- a/src/com/engine/bjcj220907/dao/OverseasAllowanceDAO.java +++ b/src/com/engine/bjcj220907/dao/OverseasAllowanceDAO.java @@ -223,7 +223,7 @@ public class OverseasAllowanceDAO { "jwyczts,jwsjczts,qjtscgs,gwhgts,gwhggzrts,jwjtje,jkdqbtje,jwgl,jwglbtje,sxbtje,jwjtjehj,ffyf)" + "values('"+fieldValue+"','1','0','"+currDate+"','"+currTime+"',"+result.getUser()+","+result.getGngzts()+","+result.getGnscq()+",'"+result.getSfzh()+"','"+result.getXcdj()+"'," + result.getJwjtbz()+","+result.getJwglbtybz()+","+result.getJwglbtrbz()+","+result.getSxbzhjbz()+",'"+sdf2.format(result.getKqMonth())+"'," +result.getJwycq()+","+result.getJwscq()+"," + - (gnQq+jwQq)+","+result.getGwhg()+","+result.getGwhgWorkdays()+","+result.getJwjt()+","+result.getJkdqbthj()+","+result.getJwgl()+","+result.getJwycq()*result.getJwglbtrbz() +"," + + (gnQq+jwQq)+","+result.getGwhg()+","+result.getGwhgWorkdays()+","+result.getJwjt()+","+result.getJkdqbthj()+","+result.getJwgl()+","+result.getJwscq()*result.getJwglbtrbz() +"," + result.getSxbzhj()+","+(result.getJwjt()+result.getJwycq()*result.getJwglbtrbz()+result.getJkdqbthj())+",'"+sdf2.format(sendMonthCal.getTime())+"')"; rs.execute(sql); String sql2 = "select max(id) as id from uf_jwcz"; diff --git a/src/com/engine/bjcj220907/entity/JKDQBT.java b/src/com/engine/bjcj220907/entity/JKDQBT.java index 1801bfb..6e0af4b 100644 --- a/src/com/engine/bjcj220907/entity/JKDQBT.java +++ b/src/com/engine/bjcj220907/entity/JKDQBT.java @@ -5,6 +5,8 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Date; + /** * @author Harryxzy * @date 2022/09/28 15:58 @@ -40,4 +42,14 @@ public class JKDQBT { * 艰苦地区补贴总和 */ private double jkdqbt; + + /** + * 艰苦地区开始时间 + */ + private Date jkdqKssj; + + /** + * 艰苦地区结束时间 + */ + private Date jkdqJssj; } diff --git a/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java b/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java index 4b60943..302c5f0 100644 --- a/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java +++ b/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java @@ -76,15 +76,17 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse // 封装计算薪酬等级、境外津贴标准、考勤天数、四项补助合计、公务回国国内工作日天数 getXcdjAndJwjtbz(results,usersXCDJ,kqDatas,validGwhgAndCountWorkdays,jwCZInfos); baseBean.writeLog("封装薪酬等级、境外津贴标准、考勤天数、境外实际常驻天数并计算实出勤天数、境外津贴,共:"+results.size()); - // 处理第三国出差(2)、境外国内出差(3)艰苦地区补贴 + // 处理第三国出差(2)、境外国内出差(3)的艰苦地区补贴 Map> dsgccJkdq = getOverseasAllowanceDAO().getDsgcc(); baseBean.writeLog("获取第三国出差(2)、境外国内出差(3)艰苦地区补贴,共:"+dsgccJkdq.size()); baseBean.writeLog("第三国出差(2)、境外国内出差(3)艰苦地区补贴:"+dsgccJkdq); // 封装第三国出差数、境外国内出差据到result中 getDsgcc(results,dsgccJkdq,startAttendanceCal.getTime(),endAttendanceCal.getTime()); + // 处理艰苦地区补贴天数(境外常驻补贴天数=境外实出勤-第三国出差-?) + handleJkdqDays(results); // 计算艰苦地区补贴合计 coutJkdqbthj(results); - // 四项补贴合计(天标准)*(公务回国工作日天数+境外国内出差工作日天数+国内工作日天数) + // 四项补贴合计(天标准)*(公务回国工作日天数+国内工作日天数) countSxbthj(results); baseBean.writeLog("计算四项补贴合计:"+results.size()); // 将结果插入建模表中 @@ -92,6 +94,39 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse baseBean.writeLog("将结果插入建模表中"); } + /** + * @description 处理艰苦地区补贴天数(境外常驻补贴天数=境外实出勤-第三国出差-?) + * @return void + * @author Harryxzy + * @date 2022/12/23 18:04 + */ + private void handleJkdqDays(List results) { + results.forEach(result -> { + // 获取境外常驻的艰苦地区 和 第三国出差及境外国内出差的艰苦地区 + ArrayList dsgAndJwgncc = new ArrayList<>(); + List jwcc = result.getJkdqbts().stream().filter(j -> { + if (Objects.equals(j.getLx(), 0) || Objects.equals(j.getLx(), 1)) { + return true; + } else { + dsgAndJwgncc.add(j); + return false; + } + }).collect(Collectors.toList()); + if( dsgAndJwgncc.size() > 0 ){ + // 常驻期内存在第三国出差或境外国内出差 + dsgAndJwgncc.stream().forEach(dsg -> { + jwcc.stream().forEach(cc -> { + if(BjcjCommonUtils.isBetween(dsg.getJkdqKssj(), cc.getJkdqKssj(), cc.getJkdqJssj())){ + cc.setDays(cc.getDays()-dsg.getDays()); + cc.setJkdqbt(cc.getDays() * cc.getJkdqbtbz()); + } + }); + }); + } + }); + } + + /** * @description 计算艰苦地区补贴合计 * @return void @@ -140,7 +175,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse // 存入常驻天数用于计算艰苦地区补贴 // 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()).jkdqbt((days*detail.getJkdqbtbz())).build(); + JKDQBT jk = JKDQBT.builder().lx(detail.getLx()).days(days).jkdq(detail.getJkdq()).jkdqbtbz(detail.getJkdqbtbz()).jkdqbt((days*detail.getJkdqbtbz())).jkdqKssj(detail.getJwczksrq()).jkdqJssj( endAttendanceCal.getTime()).build(); jkdqbts.add(jk); } else { // 开始常驻日期在 考勤开始日期前(应出勤日期为自然日) @@ -148,7 +183,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse // 存入常驻天数用于计算艰苦地区补贴 // 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()).jkdqbt((days*detail.getJkdqbtbz())).build(); + JKDQBT jk = JKDQBT.builder().lx(detail.getLx()).days(days).jkdq(detail.getJkdq()).jkdqbtbz(detail.getJkdqbtbz()).jkdqbt((days*detail.getJkdqbtbz())).jkdqKssj(startAttendanceCal.getTime()).jkdqJssj( endAttendanceCal.getTime()).build(); JWJT build = JWJT.builder().user(czInfo.getXm()).sfzh(czInfo.getSfzh()).jwycq(days).gngzts(0.0).kqMonth(endAttendanceCal.getTime()).jwgl(czInfo.getJsglts()).jwglbtybz(czInfo.getGlbtybz()).jwglbtrbz(czInfo.getGlbtrbz()).build(); ArrayList jkdqbtList = new ArrayList<>(); jkdqbtList.add(jk); @@ -181,7 +216,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse } 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()).jkdqbt((days*detail.getJkdqbtbz())).build(); + JKDQBT jk = JKDQBT.builder().lx(detail.getLx()).days(days).jkdq(detail.getJkdq()).jkdqbtbz(detail.getJkdqbtbz()).jkdqbt((days*detail.getJkdqbtbz())).jkdqbt((days*detail.getJkdqbtbz())).jkdqKssj(countStartCal.getTime()).jkdqJssj( countEndCal.getTime()).build(); jkdqbts.add(jk); } if (i == czDetails.size() - 1) { @@ -360,7 +395,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse countEndCal.setTime(endAttendance); } int days = BjcjCommonUtils.getDays(countStartCal.getTime(), countEndCal.getTime()); - JKDQBT jk = JKDQBT.builder().lx(detail.getLx()).days(days).jkdq(detail.getJkdq()).jkdqbtbz(detail.getJkdqbtbz()).jkdqbt((days * detail.getJkdqbtbz())).build(); + JKDQBT jk = JKDQBT.builder().lx(detail.getLx()).days(days).jkdq(detail.getJkdq()).jkdqKssj(countStartCal.getTime()).jkdqJssj(countEndCal.getTime()).jkdqbtbz(detail.getJkdqbtbz()).jkdqbt((days * detail.getJkdqbtbz())).build(); jwjt.getJkdqbts().add(jk); } } diff --git a/weaver-bjcj.iml b/weaver-bjcj.iml index 83c5fdc..4828872 100644 --- a/weaver-bjcj.iml +++ b/weaver-bjcj.iml @@ -7,10 +7,10 @@ - + -