diff --git a/src/weaver/haikang/cronjob/InternalReferralRewardService.java b/src/weaver/haikang/cronjob/InternalReferralRewardService.java index 15c48bd..627cc30 100644 --- a/src/weaver/haikang/cronjob/InternalReferralRewardService.java +++ b/src/weaver/haikang/cronjob/InternalReferralRewardService.java @@ -11,13 +11,15 @@ import weaver.integration.logging.LoggerFactory; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Calendar; +import java.time.LocalDate; +import java.time.YearMonth; +import java.time.temporal.ChronoUnit; import java.util.Date; /** * 定时合计 内推奖励台账 盛世科技 */ -public class InternalReferralRewardService{ +public class InternalReferralRewardService { private final Logger log = LoggerFactory.getLogger(InternalReferralRewardService.class); private static final String ntjljmid = Prop.getPropValue("jiangshixinchou","ntjlhjjmid"); @@ -33,9 +35,10 @@ public class InternalReferralRewardService{ RecordSet recordSete = new RecordSet(); RecordSet recordSetf = new RecordSet(); RecordSet recordSetg = new RecordSet(); + RecordSet recordSeth = new RecordSet(); //内推记录有并且已经入职的人员 String sql2 = "select b.id as uid,a.btjrxm,a.sfzhm,a.tjr,a.tjgw,b.companystartdate,c.rz,c.zz,c.rzbn,b.status from uf_ntjl a inner join hrmresource b on a.btjrxm = b.lastname " + - "and a.sfzhm = b.certificatenum inner join uf_gwtjjlgz c on a.tjrylb = c.tjgw where b.status in (0,1,2,3) "; + "and a.sfzhm = b.certificatenum inner join uf_gwtjjlgz c on a.tjrylb = c.tjgw where b.status in (0,1,2,3)"; recordSeta.executeQuery(sql2); log.error("howec::::::sql2:"+sql2); while (recordSeta.next()) { @@ -62,31 +65,37 @@ public class InternalReferralRewardService{ //判断 当前岗位当前推荐人,被推荐人,当前奖励类型是否已经发放工资 //以下奖励 都是针对被推荐人 String statusstr = ""; - //先发一笔入职 + //先发一笔入职,需要统计入职日期如果是被统计月,才进行合计 if(!getJudgeResult(1,tjr,sfzhm,recordSetb)) {//如果不存在,处理 - result+=rz; - statusstr = statusstr+"1,"; - log.error("howec:::::::::::入职奖励新增"); - //记录入职奖励 - insertRzRecord(recordSetc,tjr,1,rz,tjgw,btjrxm,sfzhm); + if(judgeCurrentNyCompanyNy(companystartdate,currentYm)) { + result+=rz; + statusstr = statusstr+"1,"; + log.error("howec:::::::::::入职奖励新增"); + //记录入职奖励 + insertRzRecord(recordSetc,tjr,1,rz,tjgw,btjrxm,sfzhm); + } + } //判断员工状态是否存在转正,存在则给一笔转正钱 if(isExistZz(recordSetg,uid)) { if(!getJudgeResult(2,tjr,sfzhm,recordSetb)) {//如果不存在,处理 - result+=zz; - statusstr = statusstr+"2,"; - log.error("howec:::::::::::转正奖励新增"); - //记录转正奖励 - insertRzRecord(recordSetc,tjr,2,zz,tjgw,btjrxm,sfzhm); + //如果存在转正,需要获取转正日期,如果转正日期是被统计月,则进行转正奖励 + String zzrq = getZzrq(recordSeth,uid); + if(judgeCurrentNyCompanyNy(zzrq,currentYm)) { + result+=zz; + statusstr = statusstr+"2,"; + log.error("howec:::::::::::转正奖励新增"); + //记录转正奖励 + insertRzRecord(recordSetc,tjr,2,zz,tjgw,btjrxm,sfzhm); + } } } - //判断员工在职期间和入职时间差 大于180天则给奖励3 + //判断员工统计月月底和入职时间差 时间差如果大于6个月并且小于等于7个月 if(!getJudgeResult(3,tjr,sfzhm,recordSetb)) {//如果不存在,处理 //判断当前日期是否大于180天 - Date nowTime = parseDateBystr(nowNy); - Date beforeTime = parseDateBystr(companystartdate); - if(dataCompare(nowTime,beforeTime)){ + String ny = getMonthEndDay(currentYm); + if(dataCompare(companystartdate,ny) == 6l){//间隔时间刚好是6个月 result+=rzbn; statusstr = statusstr+"3,"; log.error("howec:::::::::::入职半年新增"); @@ -106,6 +115,22 @@ public class InternalReferralRewardService{ } } + private String getMonthEndDay(String ny1) { + String ny = ny1; + YearMonth currentYearMonth = YearMonth.parse(ny); // 获取当前的年月 + LocalDate lastDayOfMonth = currentYearMonth.atEndOfMonth(); // 获取当前年月的最后一天 + return lastDayOfMonth.toString(); + } + + private boolean judgeCurrentNyCompanyNy(String comparedate1, String currentYm) { + String comparedate = comparedate1; + comparedate = comparedate.substring(0,7); + if(currentYm.equals(comparedate)) { + return true; + } + return false; + } + //根据userid获取转正日期 private String getZzrq(RecordSet recordSetf,String uid) { String sql = "select count(id) as sums from hrmstatushistory where resourceid = "+uid+" and type_n = 2"; @@ -180,6 +205,8 @@ public class InternalReferralRewardService{ permissionReconstruction(Util.getIntValue(id),Integer.parseInt(ntjljmid)); } + // + // /** * 权限重构 * @param billId @@ -202,28 +229,12 @@ public class InternalReferralRewardService{ } /** - * 日期比较 + * 日期比较 差6个月发工资 */ - public static Boolean dataCompare(Date nowdate, Date beforedate) { - // 获取当前日期 - Calendar currentCalendar = Calendar.getInstance(); - currentCalendar.setTime(nowdate); - Date currentDate = currentCalendar.getTime(); - // 设置比较日期 - Calendar compareCalendar = Calendar.getInstance(); - compareCalendar.setTime(beforedate); - Date compareDate = compareCalendar.getTime(); - - // 判断当前日期是否大于比较日期半年 - Calendar halfYearLater = Calendar.getInstance(); - halfYearLater.setTime(compareDate); - halfYearLater.add(Calendar.MONTH, 6); // 增加6个月 - Date halfYearLaterDate = halfYearLater.getTime(); - - if (currentDate.after(halfYearLaterDate)) { - return true; - } else { - return false; - } + public static long dataCompare(String beforedate,String nowdate) { + LocalDate date1 = LocalDate.parse(beforedate); + LocalDate date2 = LocalDate.parse(nowdate); + long monthsBetween = ChronoUnit.MONTHS.between(date1, date2); + return monthsBetween; } }