工龄补贴
This commit is contained in:
parent
6bac35b3ee
commit
2ff05c2063
|
|
@ -1,5 +1,6 @@
|
|||
package com.engine.bjcj220907.dao;
|
||||
|
||||
import com.engine.bjcj220907.entity.JwCZInfoDetail;
|
||||
import com.engine.bjcj220907.entity.XcdjJwjtParam;
|
||||
import weaver.conn.RecordSet;
|
||||
import weaver.general.BaseBean;
|
||||
|
|
@ -17,6 +18,50 @@ public class OverseasAllowanceDAO {
|
|||
BaseBean baseBean = new BaseBean();
|
||||
|
||||
|
||||
/***
|
||||
* @description 获取所有人的境外常驻信息
|
||||
* @return void
|
||||
* @author Harryxzy
|
||||
* @date 2022/9/28 16:06
|
||||
*/
|
||||
public List<JwCZInfoDetail> getCZInfo() {
|
||||
RecordSet rs = new RecordSet();
|
||||
String sql="select xm,jwgzksrq,jwgzjsrq,lx,jsglts,btbz " +
|
||||
"from UF_NJJMB_DT1 d LEFT JOIN UF_NJJMB m on d.MAINID=m.id " +
|
||||
"LEFT JOIN uf_bjcjtestgl g on g.jwgl=case when floor(jsglts/365)>5 then 5 else floor(jsglts/365) end " +
|
||||
"WHERE lx in(0,1) " +
|
||||
"ORDER by JWGZKSRQ desc";
|
||||
rs.execute(sql);
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
ArrayList<JwCZInfoDetail> results = new ArrayList<>();
|
||||
while (rs.next()){
|
||||
try {
|
||||
String jwgzksrqStr = rs.getString("jwgzksrq");
|
||||
Date jwgzksrq=null;
|
||||
String jwgzjsrqStr = rs.getString("jwgzjsrq");
|
||||
Date jwgzjsrq=null;
|
||||
double jsglts = rs.getDouble("jsglts");
|
||||
double btbz = rs.getDouble("btbz");
|
||||
if(btbz == -1){
|
||||
// 境外工龄未满1年
|
||||
btbz=0.0;
|
||||
}
|
||||
if(jwgzksrqStr!=null && jwgzksrqStr.length()!=0){
|
||||
jwgzksrq = sdf.parse(jwgzksrqStr);
|
||||
}
|
||||
if(jwgzjsrqStr!=null && jwgzjsrqStr.length()!=0){
|
||||
jwgzjsrq = sdf.parse(jwgzjsrqStr);
|
||||
}
|
||||
JwCZInfoDetail build = JwCZInfoDetail.builder().xm(rs.getString("xm")).lx(rs.getInt("lx")).jwczksrq(jwgzksrq).jwczjsrq(jwgzjsrq).jsglts(jsglts).glbtybz(btbz).build();
|
||||
results.add(build);
|
||||
}catch (Exception e){
|
||||
baseBean.writeLog(e);
|
||||
}
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @description 计算考勤所属月境外常驻员工的薪酬等级
|
||||
* @return Map<String,String>
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ import lombok.Builder;
|
|||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
* @date 2022/09/26 17:19
|
||||
|
|
@ -17,20 +19,45 @@ import lombok.NoArgsConstructor;
|
|||
public class JWJT {
|
||||
|
||||
/**
|
||||
* 境外津贴
|
||||
* 用户名
|
||||
*/
|
||||
private String user;
|
||||
|
||||
/**
|
||||
* 考勤月份
|
||||
*/
|
||||
private Date kqMonth;
|
||||
|
||||
/**
|
||||
* 境外应常驻天数
|
||||
*/
|
||||
private double jwycq;
|
||||
|
||||
/**
|
||||
* 境外实际常驻天数 境外应常驻天数-请假天数(不含年假、奖励假)-公务回国天数
|
||||
*/
|
||||
private double jwscq;
|
||||
|
||||
/**
|
||||
* 国内工作天数(工作日)
|
||||
*/
|
||||
private double gngzts;
|
||||
|
||||
/**
|
||||
* 缺勤天数(请假)
|
||||
*/
|
||||
private double qq;
|
||||
|
||||
/**
|
||||
* 公务回国天数(包含周末)
|
||||
*/
|
||||
private double gwhg;
|
||||
|
||||
/**
|
||||
* 公务回国工作日天数
|
||||
*/
|
||||
private double gwhgWorkdays;
|
||||
|
||||
/**
|
||||
* 薪酬等级
|
||||
*/
|
||||
|
|
@ -40,4 +67,29 @@ public class JWJT {
|
|||
* 境外津贴标准
|
||||
*/
|
||||
private double jwjtbz;
|
||||
|
||||
/**
|
||||
* 境外津贴=境外实际常驻天数*境外津贴标准
|
||||
*/
|
||||
private double jwjt;
|
||||
|
||||
/**
|
||||
* 境外工龄补贴月标准
|
||||
*/
|
||||
private double jwglbtybz;
|
||||
|
||||
/**
|
||||
* 境外工龄补贴日标准
|
||||
*/
|
||||
private double jwglbtrbz;
|
||||
|
||||
/**
|
||||
* 境外工龄天数
|
||||
*/
|
||||
private double jwgl;
|
||||
|
||||
/**
|
||||
* 艰苦地区补贴
|
||||
*/
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,21 @@ public class JwCZInfo {
|
|||
*/
|
||||
private List<JwCZInfoDetail> infos;
|
||||
|
||||
/**
|
||||
* 计算工龄天数
|
||||
*/
|
||||
private double jsglts;
|
||||
|
||||
/**
|
||||
* 工龄补贴月标准
|
||||
*/
|
||||
private double glbtybz;
|
||||
|
||||
/**
|
||||
* 工龄补贴日标准
|
||||
*/
|
||||
private double glbtrbz;
|
||||
|
||||
// /**
|
||||
// * 考勤月份中境外应常驻天数
|
||||
// */
|
||||
|
|
|
|||
|
|
@ -43,4 +43,21 @@ public class JwCZInfoDetail {
|
|||
* 天数
|
||||
*/
|
||||
private Integer days;
|
||||
|
||||
/**
|
||||
* 计算工龄天数
|
||||
*/
|
||||
private double jsglts;
|
||||
|
||||
/**
|
||||
* 工龄补贴月标准
|
||||
*/
|
||||
private double glbtybz;
|
||||
|
||||
/**
|
||||
* 工龄补贴日标准
|
||||
*/
|
||||
private double glbtrbz;
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
package com.engine.bjcj220907.entity;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
* @date 2022/09/28 15:58
|
||||
* @description
|
||||
*/
|
||||
public class jkdqbt {
|
||||
}
|
||||
|
|
@ -49,10 +49,13 @@ public class GetKQ4OverseasAllowanceCountServiceImpl extends Service implements
|
|||
Map<String, Object> temp = new HashMap<String, Object>();
|
||||
temp.put("data", JSONObject.toJSONString(paramsMap));
|
||||
temp.put("reportType", "month");
|
||||
baseBean.writeLog("开始执行GetKQReportCmd");
|
||||
Map execute = commandExecutor.execute(new GetKQReportCmd(temp,user));
|
||||
baseBean.writeLog("GetKQReportCmd执行成功");
|
||||
// 获取列数据
|
||||
columnsList = (List<Map>) execute.get("columns");
|
||||
List c = new ArrayList();
|
||||
String[] gwhgDataIndex={""};
|
||||
columnsList.stream().forEach(column->{
|
||||
if(column.get("title").equals("旷工")){
|
||||
c.add(column.get("dataIndex"));
|
||||
|
|
@ -60,39 +63,37 @@ public class GetKQ4OverseasAllowanceCountServiceImpl extends Service implements
|
|||
if(column.get("title").equals("出差及请假")){
|
||||
List<Map> children =(List<Map>) column.get("children");
|
||||
children.stream().forEach(i->{
|
||||
if((!i.get("title").equals("境内年假")) && (!i.get("title").equals("境外年假")) && (!i.get("title").equals("奖励假")) && (!i.get("title").equals("工伤")) && (!i.get("title").equals("隔离假")) ){
|
||||
if((!i.get("title").equals("境内年假")) && (!i.get("title").equals("境外年假")) && (!i.get("title").equals("工伤"))){
|
||||
c.add(i.get("dataIndex"));
|
||||
}
|
||||
if(i.get("title").equals("公务回国") ){
|
||||
gwhgDataIndex[0] =(String) column.get("dataIndex");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
baseBean.writeLog("计算缺勤列:"+c);
|
||||
dataList = (List<Map<String, String>>) execute.get("datas");
|
||||
// 获取每个人的缺勤天数
|
||||
// 获取每个人的缺勤天数、及公务回国天数
|
||||
Map<String, Double> qqDays = new HashMap<>();
|
||||
// dataList.stream().forEach(i->{
|
||||
// if(attend4MonthBonus.getUser()!=null){
|
||||
// if(i.get("resourceId").equals(attend4MonthBonus.getUser())){
|
||||
// double[] qq={0.0};
|
||||
// c.stream().forEach(j->{
|
||||
// // 累加各种请假天数
|
||||
// qq[0]+=Double.parseDouble(i.get(j));
|
||||
// });
|
||||
// String s = i.get("resourceId") +"-"+ sdf2.format(attend4MonthBonus.getEndDate());
|
||||
// qqDays.put(s,qq[0]);
|
||||
// }
|
||||
// }else{
|
||||
// double[] qq={0.0};
|
||||
// c.stream().forEach(j->{
|
||||
// // 累加各种请假天数
|
||||
// qq[0]+=Double.parseDouble(i.get(j));
|
||||
// });
|
||||
// String s = i.get("resourceId") +"-"+ sdf2.format(attend4MonthBonus.getEndDate());
|
||||
// qqDays.put(s,qq[0]);
|
||||
// }
|
||||
//
|
||||
// });
|
||||
baseBean.writeLog("获取的考勤缺勤天数,{}", JSONUtils.toJSONString(qqDays));
|
||||
String[] gwhgS= {""};
|
||||
dataList.stream().forEach(i->{
|
||||
double[] qq={0.0};
|
||||
c.stream().forEach(j->{
|
||||
// 累加各种请假天数
|
||||
qq[0]+=Double.parseDouble(i.get(j));
|
||||
});
|
||||
String qqStr = i.get("resourceId") +"-qq";
|
||||
qqDays.put(qqStr,qq[0]);
|
||||
String gwhgStr = i.get("resourceId") + "-gwhg";
|
||||
if(!gwhgDataIndex[0].equals("")){
|
||||
gwhgS[0] = i.get(gwhgDataIndex[0]);
|
||||
}else {
|
||||
gwhgS[0] ="0";
|
||||
}
|
||||
qqDays.put(gwhgStr,Double.valueOf(gwhgS[0]));
|
||||
});
|
||||
baseBean.writeLog("获取的考勤缺勤及公务回国天数,{}", JSONUtils.toJSONString(qqDays));
|
||||
return qqDays;
|
||||
} catch (Exception e) {
|
||||
baseBean.writeLog("获取考勤数据失败{}", e);
|
||||
|
|
|
|||
|
|
@ -45,29 +45,35 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
|||
// 境外津贴包含:境外津贴(天标准)+境外工龄补贴(月标准)+艰苦地区补贴(天标准)
|
||||
// 获取境外津贴(天标准) --计算当月应常驻天数
|
||||
// 获取所有人的境外常驻信息
|
||||
List<JwCZInfoDetail> czInfos = getMonthBonusDAO().getCZInfo();
|
||||
List<JwCZInfoDetail> czInfos = getOverseasAllowanceDAO().getCZInfo();
|
||||
baseBean.writeLog("获取所有人的境外常驻信息,共:"+czInfos.size());
|
||||
// 将境外常驻信息格式化
|
||||
List<JwCZInfo> jwCZInfos = MonthBonusCountServiceImpl.formatJwCZInfo(czInfos);
|
||||
baseBean.writeLog("将境外常驻信息格式化");
|
||||
// 考勤开始日期
|
||||
Calendar startAttendanceCal = BjcjCommonUtils.getStartAttendanceCal(countCal.getTime());
|
||||
// 考勤结束日期
|
||||
Calendar endAttendanceCal = BjcjCommonUtils.getEndAttendanceCal(countCal.getTime());
|
||||
baseBean.writeLog("考勤开始日期:"+startAttendanceCal.getTime()+",考勤结束日期:"+endAttendanceCal);
|
||||
// 将境外常驻信息格式化
|
||||
List<JwCZInfo> jwCZInfos = formatJwCZInfo(czInfos,startAttendanceCal,endAttendanceCal);
|
||||
baseBean.writeLog("将境外常驻信息格式化");
|
||||
// 如果用户在考勤周期内存在境外常驻信息则过滤出来,并且计算当月应常驻天数
|
||||
List<JWJT> results = getCZInfosAndCZDays(jwCZInfos, startAttendanceCal, endAttendanceCal);
|
||||
baseBean.writeLog("获取用户在考勤周期内存在境外常驻信息过滤出来,并且计算当月境外应常驻天数及境内工作天数:"+results.size());
|
||||
baseBean.writeLog("获取用户在考勤周期内存在境外常驻信息过滤出来,并且计算当月境外应常驻天数及境内工作天数,共::"+results.size());
|
||||
// 计算考勤所属月员工的薪酬等级,获取相应的境外津贴标准
|
||||
List<String> users = results.stream().map(i -> i.getUser()).collect(Collectors.toList());
|
||||
Map<Integer, XcdjJwjtParam> usersXSDJ = getOverseasAllowanceDAO().getXCDJByUsers(users,startAttendanceCal);
|
||||
baseBean.writeLog("获取所有员工考勤所属月的薪酬等级及所对应的境外津贴标准:"+usersXSDJ.size());
|
||||
// 封装薪酬等级、境外津贴标准
|
||||
getXcdjAndJwjtbz(results,usersXSDJ);
|
||||
// 获取公务回国天数 及 公务回国工作日天数
|
||||
baseBean.writeLog("获取所有员工考勤所属月的薪酬等级及所对应的境外津贴标准,共:"+usersXSDJ.size());
|
||||
// 获取公务回国天数 及 缺勤天数
|
||||
Attend4MonthBonus build = Attend4MonthBonus.builder().beginDate(startAttendanceCal.getTime()).endDate(endAttendanceCal.getTime()).build();
|
||||
GetKQ4OverseasAllowanceCountService().getKQDatas(build);
|
||||
baseBean.writeLog("调用考勤接口获取公务回国天数 及 公务回国工作日天数"+usersXSDJ.size());
|
||||
Map<String, Double> kqDatas = GetKQ4OverseasAllowanceCountService().getKQDatas(build);
|
||||
baseBean.writeLog("调用考勤接口获取公务回国天数 及 缺勤天数,共:"+usersXSDJ.size());
|
||||
// 封装薪酬等级、境外津贴标准、考勤天数
|
||||
getXcdjAndJwjtbz(results,usersXSDJ,kqDatas);
|
||||
// TODO:验证一下188 陈涛有没有考勤数据 结果不再是0.0
|
||||
baseBean.writeLog("封装薪酬等级、境外津贴标准、考勤天数、境外实际常驻天数并计算实出勤天数、境外津贴,共:"+results.size());
|
||||
// 处理艰苦地区补贴
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -100,8 +106,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
|||
} else {
|
||||
// 开始常驻日期在 考勤开始日期前(应出勤日期为自然日)
|
||||
int days = BjcjCommonUtils.getDays(startAttendanceCal.getTime(), endAttendanceCal.getTime());
|
||||
// czInfo.setYczDays(days);
|
||||
JWJT build = JWJT.builder().user(czInfo.getXm()).jwycq(days).gngzts(0.0).build();
|
||||
JWJT build = JWJT.builder().user(czInfo.getXm()).jwycq(days).gngzts(0.0).kqMonth(endAttendanceCal.getTime()).build();
|
||||
results.add(build);
|
||||
return true;
|
||||
}
|
||||
|
|
@ -144,7 +149,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]).build();
|
||||
JWJT build = JWJT.builder().user(czInfo.getXm()).jwycq(ycq[0]).gngzts(gnycq[0]).kqMonth(endAttendanceCal.getTime()).build();
|
||||
results.add(build);
|
||||
return true;
|
||||
}
|
||||
|
|
@ -154,17 +159,47 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
|||
return results;
|
||||
}
|
||||
|
||||
/***
|
||||
* @description 将获取到的薪酬等级与境外津贴标准与人员对应
|
||||
/**
|
||||
* @description 将获取到的缺勤天数(请假)、公务回国天数、薪酬等级与境外津贴标准与人员对应并计算出实出勤天数
|
||||
* @return void
|
||||
* @author Harryxzy
|
||||
* @date 2022/9/27 15:37
|
||||
*/
|
||||
public void getXcdjAndJwjtbz(List<JWJT> results ,Map<Integer, XcdjJwjtParam> usersXSDJ){
|
||||
public void getXcdjAndJwjtbz(List<JWJT> results ,Map<Integer, XcdjJwjtParam> usersXSDJ,Map<String, Double> kqDatas){
|
||||
results.stream().forEach(item-> {
|
||||
XcdjJwjtParam param = usersXSDJ.get(Integer.valueOf(item.getUser()));
|
||||
item.setXcdj(param.getXcdj());
|
||||
item.setJwjtbz(param.getJwjtbz());
|
||||
if(kqDatas.get(item.getUser() + "-qq") == null){
|
||||
// 目前该员工没有考勤数据
|
||||
item.setQq(0.0);
|
||||
item.setGwhg(0.0);
|
||||
baseBean.writeLog("员工" +item.getUser()+"没有考勤数据!请核对考勤报表");
|
||||
}else{
|
||||
item.setQq(kqDatas.get(item.getUser()+"-qq"));
|
||||
item.setGwhg(kqDatas.get(item.getUser()+"-gwhg"));
|
||||
}
|
||||
item.setJwscq(item.getJwycq()-item.getQq()-item.getGwhg());
|
||||
item.setJwjt(item.getJwscq()*item.getJwjtbz());
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @description 境外常驻信息格式化
|
||||
* @return void
|
||||
* @author Harryxzy
|
||||
* @date 2022/9/28 17:07
|
||||
*/
|
||||
public static List<JwCZInfo> formatJwCZInfo(List<JwCZInfoDetail> czInfos,Calendar startAttendanceCal,Calendar endAttendanceCal) {
|
||||
Map<String, List<JwCZInfoDetail>> groupByName = czInfos.stream().collect(Collectors.groupingBy(item -> item.getXm()));
|
||||
int days = BjcjCommonUtils.getDays(startAttendanceCal.getTime(), endAttendanceCal.getTime());
|
||||
List<JwCZInfo> formatJwCZInfos = new ArrayList<>();
|
||||
for (Map.Entry<String, List<JwCZInfoDetail>> entry : groupByName.entrySet()) {
|
||||
List<JwCZInfoDetail> values = entry.getValue();
|
||||
JwCZInfo build = new JwCZInfo().builder().xm(values.get(0).getXm()).jsglts(values.get(0).getJsglts()).glbtybz(values.get(0).getGlbtybz()).glbtrbz(values.get(0).getGlbtybz()/days).infos(entry.getValue()).build();
|
||||
formatJwCZInfos.add(build);
|
||||
}
|
||||
return formatJwCZInfos;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue