diff --git a/src/com/engine/bjcj220907/dao/OverseasAllowanceDAO.java b/src/com/engine/bjcj220907/dao/OverseasAllowanceDAO.java index 5107080..82f1937 100644 --- a/src/com/engine/bjcj220907/dao/OverseasAllowanceDAO.java +++ b/src/com/engine/bjcj220907/dao/OverseasAllowanceDAO.java @@ -1,9 +1,10 @@ package com.engine.bjcj220907.dao; -import com.engine.bjcj220907.entity.JwCZInfoDetail; -import com.engine.bjcj220907.entity.XcdjJwjtParam; +import com.engine.bjcj220907.entity.*; import weaver.conn.RecordSet; +import weaver.formmode.setup.ModeRightInfo; import weaver.general.BaseBean; +import weaver.general.TimeUtil; import java.text.SimpleDateFormat; import java.util.*; @@ -26,8 +27,9 @@ public class OverseasAllowanceDAO { */ public List getCZInfo(Date startAttendanceCal,Date endAttendanceCal) { RecordSet rs = new RecordSet(); - String sql="select xm,jwgzksrq,jwgzjsrq,lx,jsglts,g.jwglbtbz,jwgzdw1, a.btbz dqbtbz " + + String sql="select xm,certificatenum,jwgzksrq,jwgzjsrq,lx,jsglts,g.jwglbtbz,jwgzdw1, a.btbz dqbtbz " + "from UF_NJJMB_DT1 d LEFT JOIN UF_NJJMB m on d.MAINID=m.id " + + "LEFT JOIN HRMRESOURCE h on m.xm=h.id " + "LEFT JOIN UF_DQBTBZ a on d.jwgzdw1=a.id "+ "LEFT JOIN uf_jwgl g on g.jwgl=case when floor(jsglts/365)>5 then 5 else floor(jsglts/365) end " + "WHERE lx in(0,1) " + @@ -62,7 +64,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(Integer.valueOf(jwgzdw1)).build(); + JwCZInfoDetail build = JwCZInfoDetail.builder().xm(rs.getString("xm")).sfzh(rs.getString("certificatenum")).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); @@ -196,4 +198,55 @@ public class OverseasAllowanceDAO { } return gwhg; } + + /** + * @description 插入境外津贴核算结果 + * @return void + * @author Harryxzy + * @date 2022/10/24 9:45 + */ + public void insertOverseasAllowance(List results) { + Integer fieldValue = Integer.valueOf( baseBean.getPropValue("bjcjydjx", "jwjt_module_id")); + baseBean.writeLog("获取境外津贴建模中模块id:"+fieldValue); + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM"); + Calendar sendMonthCal = Calendar.getInstance(); + sendMonthCal.setTime(results.get(0).getKqMonth()); + sendMonthCal.add(Calendar.MONTH,1); + String currTime = sdf.format(new Date()); + String currDate = TimeUtil.getCurrentDateString(); + RecordSet rs = new RecordSet(); + results.stream().forEach(result -> { + double gnQq = result.getGnQq(); + double jwQq = result.getJwQq(); + String sql = "insert into uf_jwcz(formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,xm,gnycqts,gnscqts,sfzh,xcdj,jwjtbz,jwglbtbzybz,jwglbtbztbz,sxbthjybz,czyf," + + "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() +"," + + 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"; + rs.execute(sql2); + int mainId = 0; + while (rs.next()) { + mainId = rs.getInt("id"); + } + List jkdqbts = result.getJkdqbts(); + JKDQBT first = jkdqbts.get(0); + StringBuilder sql3 = new StringBuilder( "insert into UF_JWCZ_DT1(MAINID,LX,JKDQBTBZ,TS,JKDQBTJE,DQ)" + + " select "+mainId+" , "+first.getLx()+" , "+first.getJkdqbtbz()+" , "+first.getDays()+" , "+first.getJkdqbt()+",'"+first.getJkdq()+"' from dual"); + for(int i=1;i jkdqbts; + /** + * 艰苦地区补贴合计 + */ + private double jkdqbthj; + /** * 四项补助合计(月标准) */ diff --git a/src/com/engine/bjcj220907/entity/JwCZInfo.java b/src/com/engine/bjcj220907/entity/JwCZInfo.java index 0b87650..19ca5b1 100644 --- a/src/com/engine/bjcj220907/entity/JwCZInfo.java +++ b/src/com/engine/bjcj220907/entity/JwCZInfo.java @@ -22,6 +22,11 @@ public class JwCZInfo { */ private String xm; + /** + * 身份证号 + */ + private String sfzh; + /** * 境外常驻详细信息 */ diff --git a/src/com/engine/bjcj220907/entity/JwCZInfoDetail.java b/src/com/engine/bjcj220907/entity/JwCZInfoDetail.java index fe1f1a9..955b633 100644 --- a/src/com/engine/bjcj220907/entity/JwCZInfoDetail.java +++ b/src/com/engine/bjcj220907/entity/JwCZInfoDetail.java @@ -24,6 +24,12 @@ public class JwCZInfoDetail { */ private String xm; + + /** + * 身份证号 + */ + private String sfzh; + /** * 类型( 0:开始常驻,1:结束常驻 6:公务回国) */ diff --git a/src/com/engine/bjcj220907/service/impl/GetKQ4OverseasAllowanceCountServiceImpl.java b/src/com/engine/bjcj220907/service/impl/GetKQ4OverseasAllowanceCountServiceImpl.java index 324b520..f103d77 100644 --- a/src/com/engine/bjcj220907/service/impl/GetKQ4OverseasAllowanceCountServiceImpl.java +++ b/src/com/engine/bjcj220907/service/impl/GetKQ4OverseasAllowanceCountServiceImpl.java @@ -81,9 +81,7 @@ public class GetKQ4OverseasAllowanceCountServiceImpl extends Service implements attDateList.stream().forEach(a -> { Map attCalMap =(Map) i.get(sdf.format(a)); String attCal = (String)attCalMap.get("text"); - if( (!attCal.equals("√")) && (!attCal.contains("休息")) && (!attCal.equals("")) && ( (attCal.contains("旷工")) || (attCal.contains("事假")) || (attCal.contains("病假")) || (attCal.contains("丧假")) || (attCal.contains("产假")) || (attCal.contains("婚假")) - || (attCal.contains("探亲假")) || (attCal.contains("陪产假")) || (attCal.contains("待岗")) || (attCal.contains("隔离假")) || (attCal.contains("哺乳假")) || (attCal.contains("产检假")) || (attCal.contains("计划生育假")) - || (attCal.contains("第三国出差/境外国内出差")) || (attCal.contains("公务回国")) || (attCal.contains("境外出差")) || (attCal.contains("境内出差")) || (attCal.contains("育儿假-境内")) || (attCal.contains("路程假")) || (attCal.contains("育儿假-境外")) ) ){ + if( (attCal.contains("旷工")) || ( (!attCal.equals("√")) && (!attCal.contains("休息")) && (!attCal.equals("")) && (!attCal.contains("境内年假")) && (!attCal.contains("境外年假")) && (!attCal.contains("工伤")) && (!attCal.contains("奖励假")) ) ){ // 存在缺勤 qqDate.add(a); } diff --git a/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java b/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java index 62dbee6..4b60943 100644 --- a/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java +++ b/src/com/engine/bjcj220907/service/impl/OverseasAllowanceCountServiceImpl.java @@ -79,15 +79,35 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse // 处理第三国出差(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()); - // 处理四项补贴(月标准) + // 计算艰苦地区补贴合计 + coutJkdqbthj(results); // 四项补贴合计(天标准)*(公务回国工作日天数+境外国内出差工作日天数+国内工作日天数) countSxbthj(results); - baseBean.writeLog("计算四项补贴合计"); + baseBean.writeLog("计算四项补贴合计:"+results.size()); + // 将结果插入建模表中 + getOverseasAllowanceDAO().insertOverseasAllowance(results); + baseBean.writeLog("将结果插入建模表中"); } - + /** + * @description 计算艰苦地区补贴合计 + * @return void + * @author Harryxzy + * @date 2022/10/24 14:11 + */ + private void coutJkdqbthj(List results) { + results.stream().forEach(result->{ + double[] total={0.0}; + List jkdqbts = result.getJkdqbts(); + jkdqbts.stream().forEach(j -> { + total[0]=total[0]+j.getJkdqbt(); + }); + result.setJkdqbthj(total[0]); + }); + } /** @@ -120,7 +140,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()).build(); + JKDQBT jk = JKDQBT.builder().lx(detail.getLx()).days(days).jkdq(detail.getJkdq()).jkdqbtbz(detail.getJkdqbtbz()).jkdqbt((days*detail.getJkdqbtbz())).build(); jkdqbts.add(jk); } else { // 开始常驻日期在 考勤开始日期前(应出勤日期为自然日) @@ -128,8 +148,8 @@ 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()).build(); - JWJT build = JWJT.builder().user(czInfo.getXm()).jwycq(days).gngzts(0.0).kqMonth(endAttendanceCal.getTime()).build(); + JKDQBT jk = JKDQBT.builder().lx(detail.getLx()).days(days).jkdq(detail.getJkdq()).jkdqbtbz(detail.getJkdqbtbz()).jkdqbt((days*detail.getJkdqbtbz())).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); build.setJkdqbts(jkdqbtList); @@ -161,7 +181,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()).build(); + JKDQBT jk = JKDQBT.builder().lx(detail.getLx()).days(days).jkdq(detail.getJkdq()).jkdqbtbz(detail.getJkdqbtbz()).jkdqbt((days*detail.getJkdqbtbz())).build(); jkdqbts.add(jk); } if (i == czDetails.size() - 1) { @@ -190,7 +210,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse aCal.add(Calendar.DATE, -1); } } - JWJT build = JWJT.builder().user(czInfo.getXm()).jwycq(ycq[0]).gngzts(gnycq[0]).kqMonth(endAttendanceCal.getTime()).build(); + JWJT build = JWJT.builder().user(czInfo.getXm()).sfzh(czInfo.getSfzh()).jwycq(ycq[0]).gngzts(gnycq[0]).kqMonth(endAttendanceCal.getTime()).jwgl(czInfo.getJsglts()).jwglbtybz(czInfo.getGlbtybz()).jwglbtrbz(czInfo.getGlbtrbz()).build(); build.setJkdqbts(jkdqbts); results.add(build); return true; @@ -256,7 +276,6 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse gnQqDays++; flag=true; } - // todo 看一下这个时分秒 if(BjcjCommonUtils.isBetween(d,detail.getJwczksrq(),detail.getJwczjsrq())){ // 在境外常驻期内的缺勤 jwQqDays++; @@ -274,6 +293,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse item.setGwhg((Double) kqDatas.get(item.getUser()+"-gwhg")); } item.setJwscq(item.getJwycq()-item.getJwQq()-item.getGwhg()); + item.setGnscq(item.getGngzts() - item.getGnQq()); item.setJwjt(item.getJwscq()*item.getJwjtbz()); if(validGwhgAndCountWorkdays.containsKey(Integer.valueOf(item.getUser()))){ // 该员工有公务回国数据 @@ -302,7 +322,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse List formatJwCZInfos = new ArrayList<>(); for (Map.Entry> entry : groupByName.entrySet()) { List values = entry.getValue(); - JwCZInfo build = new JwCZInfo().builder().xm(values.get(0).getXm()).jsglts(values.get(0).getJsglts()) + JwCZInfo build = new JwCZInfo().builder().xm(values.get(0).getXm()).sfzh(values.get(0).getSfzh()).jsglts(values.get(0).getJsglts()) .glbtybz(values.get(0).getGlbtybz()).glbtrbz(values.get(0).getGlbtybz()/days) .infos(entry.getValue()).build(); formatJwCZInfos.add(build); @@ -340,7 +360,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()).build(); + JKDQBT jk = JKDQBT.builder().lx(detail.getLx()).days(days).jkdq(detail.getJkdq()).jkdqbtbz(detail.getJkdqbtbz()).jkdqbt((days * detail.getJkdqbtbz())).build(); jwjt.getJkdqbts().add(jk); } } @@ -357,7 +377,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse private void countSxbthj(List results) { results.stream().forEach(result->{ // 获取员工的公务回国工作日天数和国内工作日天数 * 四项补助日标准 - result.setSxbzhj((result.getGngzts()+result.getGwhgWorkdays()) * result.getSxbzhjrbz()); + result.setSxbzhj((result.getGnscq()+result.getGwhgWorkdays()) * result.getSxbzhjrbz()); }); }