utis
This commit is contained in:
parent
575e54536a
commit
cff05b3f29
|
|
@ -0,0 +1,14 @@
|
|||
package com.api.bjcj220907.web;
|
||||
|
||||
import com.engine.bjcj220907.web.OverseasAllowanceCountController;
|
||||
|
||||
import javax.ws.rs.Path;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
* @date 2022/09/26 13:41
|
||||
* @description
|
||||
*/
|
||||
@Path("/bs/OverseasAllowanceCount")
|
||||
public class OverseasAllowanceWeb extends OverseasAllowanceCountController {
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
package com.engine.bjcj220907.dao;
|
||||
|
||||
import weaver.general.BaseBean;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
* @date 2022/09/26 14:10
|
||||
* @description 境外津贴
|
||||
*/
|
||||
public class OverseasAllowanceDAO {
|
||||
|
||||
BaseBean baseBean = new BaseBean();
|
||||
|
||||
|
||||
/**
|
||||
* @description 判断月度绩效核算表中是否有该月数据
|
||||
* @return void
|
||||
* @author Harryxzy
|
||||
* @date 2022/9/8 17:25
|
||||
*/
|
||||
// public boolean haveRecord(Date bonusMonth) {
|
||||
// RecordSet rs = new RecordSet();
|
||||
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
|
||||
// String sql ="select count(*) from uf_ydjxzj where JXSSYF ='"+sdf.format(bonusMonth)+"'";
|
||||
// rs.execute(sql);
|
||||
// while (rs.next()){
|
||||
// int anInt = rs.getInt("count(*)");
|
||||
// if(anInt>1){
|
||||
// baseBean.writeLog("该绩效所属月已有核算记录");
|
||||
// return true;
|
||||
// }
|
||||
// }
|
||||
// return false;
|
||||
// }
|
||||
|
||||
}
|
||||
|
|
@ -26,4 +26,9 @@ public class JwCZInfo {
|
|||
* 境外常驻详细信息
|
||||
*/
|
||||
private List<JwCZInfoDetail> infos;
|
||||
|
||||
/**
|
||||
* 考勤月份中境外应常驻天数
|
||||
*/
|
||||
private Integer yczDays;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,4 +38,9 @@ public class JwCZInfoDetail {
|
|||
* 境外工作结束日期
|
||||
*/
|
||||
private Date jwczjsrq;
|
||||
|
||||
/**
|
||||
* 天数
|
||||
*/
|
||||
private Integer days;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
package com.engine.bjcj220907.service;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
* @date 2022/09/26 13:59
|
||||
* @description 境外津贴
|
||||
*/
|
||||
public interface OverseasAllowanceCountService {
|
||||
|
||||
/***
|
||||
* @description 计算境外津贴
|
||||
* @return void
|
||||
* @author Harryxzy
|
||||
* @date 2022/9/26 14:05
|
||||
*/
|
||||
void countOverseasAllowance(Calendar countCal);
|
||||
}
|
||||
|
|
@ -4,6 +4,7 @@ import com.engine.bjcj220907.dao.MonthBonusDAO;
|
|||
import com.engine.bjcj220907.entity.*;
|
||||
import com.engine.bjcj220907.service.GetKQ4MonthBonusService;
|
||||
import com.engine.bjcj220907.service.MonthBonusCountService;
|
||||
import com.engine.bjcj220907.utils.BjcjCommonUtils;
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.core.impl.Service;
|
||||
import weaver.general.BaseBean;
|
||||
|
|
@ -80,8 +81,8 @@ public class MonthBonusCountServiceImpl extends Service implements MonthBonusCou
|
|||
}).collect(Collectors.toList());
|
||||
baseBean.writeLog("获取所有人的薪酬等级和绩效工资");
|
||||
// 获取在职员工的考勤周期(上个月29-这个月28)
|
||||
Calendar startAttendanceCal = getStartAttendanceCal(bonusMonth);
|
||||
Calendar endAttendanceCal = getEndAttendanceCal(bonusMonth);
|
||||
Calendar startAttendanceCal = BjcjCommonUtils.getStartAttendanceCal(bonusMonth);
|
||||
Calendar endAttendanceCal = BjcjCommonUtils.getEndAttendanceCal(bonusMonth);
|
||||
|
||||
// 获取所有人的境外常驻信息
|
||||
List<JwCZInfoDetail> czInfos = getMonthBonusDAO().getCZInfo();
|
||||
|
|
@ -96,8 +97,8 @@ public class MonthBonusCountServiceImpl extends Service implements MonthBonusCou
|
|||
// 循环将离职人员的各个月的缺勤天数取到
|
||||
Map<String, Double> qqDatasDepar= new HashMap<>();
|
||||
for(int i=0;i<departureTemp.size();i++){
|
||||
Date saDate = getStartAttendanceCal(departureTemp.get(i).getKqyf()).getTime();
|
||||
Date eaDate = getEndAttendanceCal(departureTemp.get(i).getKqyf()).getTime();
|
||||
Date saDate = BjcjCommonUtils.getStartAttendanceCal(departureTemp.get(i).getKqyf()).getTime();
|
||||
Date eaDate = BjcjCommonUtils.getEndAttendanceCal(departureTemp.get(i).getKqyf()).getTime();
|
||||
qqDatasDepar.putAll(getKQ4MonthBonusService().getKQDatas(Attend4MonthBonus.builder().beginDate(saDate).endDate(eaDate).user(Integer.valueOf(departureTemp.get(i).getXm())).build()));
|
||||
}
|
||||
baseBean.writeLog("获取所有离职人员的各个月的缺勤天数"+qqDatasDepar);
|
||||
|
|
@ -137,9 +138,9 @@ public class MonthBonusCountServiceImpl extends Service implements MonthBonusCou
|
|||
List<Date> details = new ArrayList<>();
|
||||
|
||||
// 考勤开始日期(在职、离职)
|
||||
Calendar s = getStartAttendanceCal(item.getKqyf());
|
||||
Calendar s = BjcjCommonUtils.getStartAttendanceCal(item.getKqyf());
|
||||
// 考勤结束日期(在职、离职)
|
||||
Calendar e = getEndAttendanceCal(item.getKqyf());
|
||||
Calendar e = BjcjCommonUtils.getEndAttendanceCal(item.getKqyf());
|
||||
// 用于存储计算到哪一天的日期
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.setTime(e.getTime());
|
||||
|
|
@ -150,13 +151,13 @@ public class MonthBonusCountServiceImpl extends Service implements MonthBonusCou
|
|||
// 开始常驻
|
||||
if(infoi.getJwczksrq().after(s.getTime())){
|
||||
// 开始常驻日期在 考勤开始日期后,结束日期前
|
||||
int d = getDays(infoi.getJwczksrq(), e.getTime());
|
||||
int d = BjcjCommonUtils.getDays(infoi.getJwczksrq(), e.getTime());
|
||||
ycq[0]+=d;
|
||||
countDay[0].setTime(infoi.getJwczksrq());
|
||||
countDay[0].add(Calendar.DATE,-1);
|
||||
}else{
|
||||
// 开始常驻日期在 考勤开始日期前(应出勤日期为自然日)
|
||||
ycq[0]=getDays(s.getTime(), e.getTime());
|
||||
ycq[0]=BjcjCommonUtils.getDays(s.getTime(), e.getTime());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -234,7 +235,7 @@ public class MonthBonusCountServiceImpl extends Service implements MonthBonusCou
|
|||
Calendar deparLastDay = Calendar.getInstance();
|
||||
deparLastDay.setTime(date);
|
||||
deparLastDay.add(Calendar.DATE,1);
|
||||
Calendar deaprAttendEndDay = getEndAttendanceCal(kqyf);
|
||||
Calendar deaprAttendEndDay = BjcjCommonUtils.getEndAttendanceCal(kqyf);
|
||||
double[] sqq={0.0};
|
||||
if(Math.abs(i.getYcq()-21.75) < 0.000000002){
|
||||
int[] qq={0};
|
||||
|
|
@ -250,7 +251,7 @@ public class MonthBonusCountServiceImpl extends Service implements MonthBonusCou
|
|||
sqq[0] = i.getQq()+qq[0];
|
||||
}else{
|
||||
// 存在境外,取离职日后一天-考勤最后一天的自然日
|
||||
sqq[0] = i.getQq()+getDays(deparLastDay.getTime(), deaprAttendEndDay.getTime());
|
||||
sqq[0] = i.getQq()+BjcjCommonUtils.getDays(deparLastDay.getTime(), deaprAttendEndDay.getTime());
|
||||
}
|
||||
i.setQq(sqq[0]);
|
||||
// 重新计算1、实出勤天数 =应出勤天数-缺勤天数 2、奖金基数(考勤)= 月度绩效奖金基数-月度绩效基数/满勤*缺勤天数 3、奖金实发放额= 奖金基数(考勤)*个人绩效系数
|
||||
|
|
@ -277,13 +278,13 @@ public class MonthBonusCountServiceImpl extends Service implements MonthBonusCou
|
|||
|
||||
|
||||
|
||||
/***
|
||||
/**
|
||||
* @description 境外常驻信息格式化
|
||||
* @return void
|
||||
* @author Harryxzy
|
||||
* @date 2022/9/11 17:07
|
||||
*/
|
||||
private List<JwCZInfo> formatJwCZInfo(List<JwCZInfoDetail> czInfos) {
|
||||
public static List<JwCZInfo> formatJwCZInfo(List<JwCZInfoDetail> czInfos) {
|
||||
Map<String, List<JwCZInfoDetail>> groupByName = czInfos.stream().collect(Collectors.groupingBy(item -> item.getXm()));
|
||||
List<JwCZInfo> formatJwCZInfos = new ArrayList<>();
|
||||
for (Map.Entry<String, List<JwCZInfoDetail>> entry : groupByName.entrySet()) {
|
||||
|
|
@ -293,73 +294,5 @@ public class MonthBonusCountServiceImpl extends Service implements MonthBonusCou
|
|||
return formatJwCZInfos;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取2个时间段中有多少天
|
||||
* @return Long
|
||||
* @author Harryxzy
|
||||
* @date 2022/9/11 20:12
|
||||
*/
|
||||
private int getDays(Date startDate,Date endDate) {
|
||||
int days = (int)( (endDate.getTime() - startDate.getTime()) / (1000 * 60 * 60 * 24) + 1);
|
||||
return days;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 判断某一天是否在某一个时间区间内
|
||||
* @return Long
|
||||
* @author Harryxzy
|
||||
* @date 2022/9/11 20:12
|
||||
*/
|
||||
private boolean isBetween(Date now,Date startDate,Date endDate) {
|
||||
if( (now.after(startDate) || now.equals(startDate)) && ( (now.before(endDate) || now.equals(endDate)) )){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/***
|
||||
* @description 根据考勤所属月获取考勤开始日期
|
||||
* @return Calendar
|
||||
* @author Harryxzy
|
||||
* @date 2022/9/14 21:57
|
||||
*/
|
||||
private Calendar getStartAttendanceCal(Date bonusMonth){
|
||||
Calendar startAttendanceCal = Calendar.getInstance();
|
||||
startAttendanceCal.setTime(bonusMonth);
|
||||
startAttendanceCal.add(Calendar.MONTH,-1);
|
||||
if(startAttendanceCal.getActualMaximum(Calendar.DAY_OF_MONTH) == 28){
|
||||
// 2月只有28天的情况(从3.1开始)
|
||||
startAttendanceCal.add(Calendar.MONTH, 1);
|
||||
startAttendanceCal.set(Calendar.DAY_OF_MONTH, 1);
|
||||
startAttendanceCal.set(Calendar.HOUR_OF_DAY, 0);
|
||||
startAttendanceCal.set(Calendar.MINUTE, 0);
|
||||
startAttendanceCal.set(Calendar.SECOND, 0);
|
||||
startAttendanceCal.set(Calendar.MILLISECOND, 0);
|
||||
}else{
|
||||
startAttendanceCal.set(Calendar.DAY_OF_MONTH, 29);
|
||||
startAttendanceCal.set(Calendar.HOUR_OF_DAY, 0);
|
||||
startAttendanceCal.set(Calendar.MINUTE, 0);
|
||||
startAttendanceCal.set(Calendar.SECOND, 0);
|
||||
startAttendanceCal.set(Calendar.MILLISECOND, 0);
|
||||
}
|
||||
return startAttendanceCal;
|
||||
}
|
||||
|
||||
/***
|
||||
* @description 根据考勤所属月获取考勤结束日期
|
||||
* @return Calendar
|
||||
* @author Harryxzy
|
||||
* @date 2022/9/14 21:57
|
||||
*/
|
||||
private Calendar getEndAttendanceCal(Date bonusMonth){
|
||||
Calendar endAttendanceCal = Calendar.getInstance();
|
||||
endAttendanceCal.setTime(bonusMonth);
|
||||
endAttendanceCal.set(Calendar.DAY_OF_MONTH,28);
|
||||
endAttendanceCal.set(Calendar.HOUR_OF_DAY, 23);
|
||||
endAttendanceCal.set(Calendar.MINUTE, 59);
|
||||
endAttendanceCal.set(Calendar.SECOND, 59);
|
||||
endAttendanceCal.set(Calendar.MILLISECOND, 999);
|
||||
return endAttendanceCal;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,44 @@
|
|||
package com.engine.bjcj220907.service.impl;
|
||||
|
||||
import com.engine.bjcj220907.dao.MonthBonusDAO;
|
||||
import com.engine.bjcj220907.entity.JwCZInfo;
|
||||
import com.engine.bjcj220907.entity.JwCZInfoDetail;
|
||||
import com.engine.bjcj220907.service.OverseasAllowanceCountService;
|
||||
import weaver.general.BaseBean;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
* @date 2022/09/26 14:03
|
||||
* @description 境外津贴
|
||||
*/
|
||||
public class OverseasAllowanceCountServiceImpl implements OverseasAllowanceCountService {
|
||||
|
||||
BaseBean baseBean = new BaseBean();
|
||||
|
||||
public MonthBonusDAO getMonthBonusDAO(){
|
||||
return new MonthBonusDAO();
|
||||
}
|
||||
/**
|
||||
* @description 计算境外津贴
|
||||
* @return void
|
||||
* @author Harryxzy
|
||||
* @date 2022/9/26 14:06
|
||||
*/
|
||||
@Override
|
||||
public void countOverseasAllowance(Calendar countCal) {
|
||||
// 境外津贴包含:境外津贴(天标准)+境外工龄补贴(月标准)+艰苦地区补贴(天标准)
|
||||
// 获取境外津贴(天标准) --计算当月应常驻天数
|
||||
// 获取所有人的境外常驻信息
|
||||
List<JwCZInfoDetail> czInfos = getMonthBonusDAO().getCZInfo();
|
||||
baseBean.writeLog("获取所有人的境外常驻信息,共:"+czInfos.size());
|
||||
// 将境外常驻信息格式化
|
||||
List<JwCZInfo> jwCZInfos = MonthBonusCountServiceImpl.formatJwCZInfo(czInfos);
|
||||
baseBean.writeLog("将境外常驻信息格式化");
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
package com.engine.bjcj220907.utils;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
* @date 2022/09/26 13:55
|
||||
* @description
|
||||
*/
|
||||
public class BjcjCommonUtils {
|
||||
|
||||
/***
|
||||
* @description 获取当前calendar
|
||||
* @return Calendar
|
||||
* @author Harryxzy
|
||||
* @date 2022/9/26 14:44
|
||||
*/
|
||||
public static Calendar getNowCalendar(){
|
||||
Date date = new Date();
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(date);
|
||||
return cal;
|
||||
}
|
||||
|
||||
/***
|
||||
* @description 根据考勤所属月获取考勤开始日期
|
||||
* @return Calendar
|
||||
* @author Harryxzy
|
||||
* @date 2022/9/14 21:57
|
||||
*/
|
||||
public static Calendar getStartAttendanceCal(Date bonusMonth){
|
||||
Calendar startAttendanceCal = Calendar.getInstance();
|
||||
startAttendanceCal.setTime(bonusMonth);
|
||||
startAttendanceCal.add(Calendar.MONTH,-1);
|
||||
if(startAttendanceCal.getActualMaximum(Calendar.DAY_OF_MONTH) == 28){
|
||||
// 2月只有28天的情况(从3.1开始)
|
||||
startAttendanceCal.add(Calendar.MONTH, 1);
|
||||
startAttendanceCal.set(Calendar.DAY_OF_MONTH, 1);
|
||||
startAttendanceCal.set(Calendar.HOUR_OF_DAY, 0);
|
||||
startAttendanceCal.set(Calendar.MINUTE, 0);
|
||||
startAttendanceCal.set(Calendar.SECOND, 0);
|
||||
startAttendanceCal.set(Calendar.MILLISECOND, 0);
|
||||
}else{
|
||||
startAttendanceCal.set(Calendar.DAY_OF_MONTH, 29);
|
||||
startAttendanceCal.set(Calendar.HOUR_OF_DAY, 0);
|
||||
startAttendanceCal.set(Calendar.MINUTE, 0);
|
||||
startAttendanceCal.set(Calendar.SECOND, 0);
|
||||
startAttendanceCal.set(Calendar.MILLISECOND, 0);
|
||||
}
|
||||
return startAttendanceCal;
|
||||
}
|
||||
|
||||
|
||||
/***
|
||||
* @description 根据考勤所属月获取考勤结束日期
|
||||
* @return Calendar
|
||||
* @author Harryxzy
|
||||
* @date 2022/9/14 21:57
|
||||
*/
|
||||
public static Calendar getEndAttendanceCal(Date bonusMonth){
|
||||
Calendar endAttendanceCal = Calendar.getInstance();
|
||||
endAttendanceCal.setTime(bonusMonth);
|
||||
endAttendanceCal.set(Calendar.DAY_OF_MONTH,28);
|
||||
endAttendanceCal.set(Calendar.HOUR_OF_DAY, 23);
|
||||
endAttendanceCal.set(Calendar.MINUTE, 59);
|
||||
endAttendanceCal.set(Calendar.SECOND, 59);
|
||||
endAttendanceCal.set(Calendar.MILLISECOND, 999);
|
||||
return endAttendanceCal;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @description 获取2个时间段中有多少天
|
||||
* @return Long
|
||||
* @author Harryxzy
|
||||
* @date 2022/9/11 20:12
|
||||
*/
|
||||
public static int getDays(Date startDate,Date endDate) {
|
||||
int days = (int)( (endDate.getTime() - startDate.getTime()) / (1000 * 60 * 60 * 24) + 1);
|
||||
return days;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 判断某一天是否在某一个时间区间内
|
||||
* @return Long
|
||||
* @author Harryxzy
|
||||
* @date 2022/9/11 20:12
|
||||
*/
|
||||
public static boolean isBetween(Date now,Date startDate,Date endDate) {
|
||||
if( (now.after(startDate) || now.equals(startDate)) && ( (now.before(endDate) || now.equals(endDate)) )){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
package com.engine.bjcj220907.web;
|
||||
|
||||
import com.engine.bjcj220907.service.impl.OverseasAllowanceCountServiceImpl;
|
||||
import com.engine.bjcj220907.utils.BjcjCommonUtils;
|
||||
import weaver.general.BaseBean;
|
||||
import weaver.hrm.HrmUserVarify;
|
||||
import weaver.hrm.User;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.Context;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import java.util.Calendar;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
* @date 2022/09/26 13:42
|
||||
* @description
|
||||
*/
|
||||
public class OverseasAllowanceCountController {
|
||||
|
||||
BaseBean baseBean = new BaseBean();
|
||||
|
||||
/**
|
||||
* 境外津贴计算
|
||||
*/
|
||||
@GET
|
||||
@Path("/countOverseasAllowanceCount")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public void countOverseasAllowance(@Context HttpServletRequest request, @Context HttpServletResponse response) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
Calendar cal = BjcjCommonUtils.getNowCalendar();
|
||||
cal.add(Calendar.MONTH,-1);
|
||||
baseBean.writeLog("开始计算:"+cal.getTime()+"的境外津贴");
|
||||
new OverseasAllowanceCountServiceImpl().countOverseasAllowance(cal);
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue