fix-国内外缺勤
This commit is contained in:
parent
c0b151bcbb
commit
e00115028c
|
|
@ -26,7 +26,6 @@ public class OverseasAllowanceDAO {
|
|||
*/
|
||||
public List<JwCZInfoDetail> getCZInfo(Date startAttendanceCal,Date endAttendanceCal) {
|
||||
RecordSet rs = new RecordSet();
|
||||
//TODO 修改sqluf_bjcjtestgl
|
||||
String sql="select xm,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 UF_DQBTBZ a on d.jwgzdw1=a.id "+
|
||||
|
|
@ -84,7 +83,7 @@ public class OverseasAllowanceDAO {
|
|||
StringBuilder sb =new StringBuilder();
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
if(users != null && users.size()>0){
|
||||
sb = new StringBuilder("select h.id,z.gj,z.xd,z.sxrq,d.xcdj,jwjtbz,cb+lb+txf+wcbz sxbzhj FROM hrmresource h LEFT JOIN uf_xczjbd z on h.id=z.xm and sxrq <= '" +sdf.format(startAttendanceCal.getTime()) +
|
||||
sb = new StringBuilder("select h.id,z.gj,z.xd,z.sxrq,d.xcdj,jwjtbz,sxbthj FROM hrmresource h LEFT JOIN uf_xczjbd z on h.id=z.xm and sxrq <= '" +sdf.format(startAttendanceCal.getTime()) +
|
||||
"' LEFT JOIN uf_xcdj d on d.gj=z.gj and d.xd=z.xd WHERE h.id IN ( ");
|
||||
for(int i=0;i<users.size();i++){
|
||||
sb.append(users.get(i));
|
||||
|
|
@ -100,7 +99,7 @@ public class OverseasAllowanceDAO {
|
|||
int xm = rs.getInt("id");
|
||||
String xcdjStr = rs.getString("XCDJ");
|
||||
double jwjtbz = rs.getDouble("jwjtbz");
|
||||
double sxbzhj = rs.getDouble("sxbzhj");
|
||||
double sxbzhj = rs.getDouble("sxbthj");
|
||||
if(sxbzhj == -1){
|
||||
sxbzhj = 0.0;
|
||||
}
|
||||
|
|
@ -158,6 +157,43 @@ public class OverseasAllowanceDAO {
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @description 获取公务回国信息
|
||||
* @return Map<Integer,List<JwCZInfoDetail>>
|
||||
* @author Harryxzy
|
||||
* @date 2022/10/20 17:29
|
||||
*/
|
||||
public Map<Integer, List<JwCZInfoDetail>> getGwhg() {
|
||||
RecordSet rs = new RecordSet();
|
||||
String sql = " select xm,lx,jwgzksrq,jwgzjsrq from UF_NJJMB n left JOIN UF_NJJMB_DT1 d on n.id=d.MAINID WHERE lx =6";
|
||||
HashMap<Integer, List<JwCZInfoDetail>> gwhg = new HashMap<>();
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
rs.execute(sql);
|
||||
while (rs.next()){
|
||||
try {
|
||||
String jwgzksrqStr = rs.getString("jwgzksrq");
|
||||
Date jwgzksrq=null;
|
||||
String jwgzjsrqStr = rs.getString("jwgzjsrq");
|
||||
Date jwgzjsrq=null;
|
||||
int xm = rs.getInt("xm");
|
||||
if(jwgzksrqStr!=null && jwgzksrqStr.length()!=0){
|
||||
jwgzksrq = sdf.parse(jwgzksrqStr);
|
||||
}
|
||||
if(jwgzjsrqStr!=null && jwgzjsrqStr.length()!=0){
|
||||
jwgzjsrq = sdf.parse(jwgzjsrqStr);
|
||||
}
|
||||
JwCZInfoDetail build = JwCZInfoDetail.builder().lx(rs.getInt("lx")).jwczksrq(jwgzksrq).jwczjsrq(jwgzjsrq).build();
|
||||
if(gwhg.containsKey(xm)){
|
||||
gwhg.get(xm).add(build);
|
||||
}else {
|
||||
ArrayList<JwCZInfoDetail> list = new ArrayList<>();
|
||||
list.add(build);
|
||||
gwhg.put(xm,list);
|
||||
}
|
||||
}catch (Exception e){
|
||||
baseBean.writeLog(e);
|
||||
}
|
||||
}
|
||||
return gwhg;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,9 +45,14 @@ public class JWJT {
|
|||
private double gngzts;
|
||||
|
||||
/**
|
||||
* 缺勤天数(请假)
|
||||
* 国内缺勤天数(请假)
|
||||
*/
|
||||
private double qq;
|
||||
private double gnQq;
|
||||
|
||||
/**
|
||||
* 境外缺勤天数(请假)
|
||||
*/
|
||||
private double jwQq;
|
||||
|
||||
/**
|
||||
* 公务回国天数(包含周末)
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ public class JwCZInfoDetail {
|
|||
private String xm;
|
||||
|
||||
/**
|
||||
* 类型( 0:开始常驻,1:结束常驻 )
|
||||
* 类型( 0:开始常驻,1:结束常驻 6:公务回国)
|
||||
*/
|
||||
private Integer lx;
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.engine.bjcj220907.service;
|
|||
|
||||
import com.engine.bjcj220907.entity.Attend4MonthBonus;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
|
|
@ -17,5 +18,5 @@ public interface GetKQ4OverseasAllowanceCountService {
|
|||
* @author Harryxzy
|
||||
* @date 2022/9/27 15:58
|
||||
*/
|
||||
Map<String,Double> getKQDatas(Attend4MonthBonus attend4MonthBonus);
|
||||
Map<String,Object> getKQDatas(Attend4MonthBonus attend4MonthBonus, List<String> users);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package com.engine.bjcj220907.service.impl;
|
||||
|
||||
import com.alibaba.druid.support.json.JSONUtils;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.engine.bjcj220907.entity.Attend4MonthBonus;
|
||||
import com.engine.bjcj220907.service.GetKQ4OverseasAllowanceCountService;
|
||||
|
|
@ -9,10 +8,7 @@ import com.engine.kq.cmd.report.GetKQReportCmd;
|
|||
import com.weaver.general.BaseBean;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
|
|
@ -29,12 +25,12 @@ public class GetKQ4OverseasAllowanceCountServiceImpl extends Service implements
|
|||
* @date 2022/9/27 15:58
|
||||
*/
|
||||
@Override
|
||||
public Map<String, Double> getKQDatas(Attend4MonthBonus attend4MonthBonus) {
|
||||
public Map<String, Object> getKQDatas(Attend4MonthBonus attend4MonthBonus,List<String> users) {
|
||||
baseBean.writeLog("开始获取考勤数据,参数{}", attend4MonthBonus);
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM");
|
||||
// SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM");
|
||||
List<Map> columnsList = new ArrayList<>();
|
||||
List<Map<String, String>> dataList = new ArrayList<>();
|
||||
List<Map<String, Object>> dataList = new ArrayList<>();
|
||||
try {
|
||||
Map<String, Object> paramsMap = new HashMap<String, Object>();
|
||||
paramsMap.put("typeselect", "6");
|
||||
|
|
@ -54,46 +50,55 @@ public class GetKQ4OverseasAllowanceCountServiceImpl extends Service implements
|
|||
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"));
|
||||
}
|
||||
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("工伤"))){
|
||||
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 = (List<Map<String, Object>>) execute.get("datas");
|
||||
// 获取每个人的缺勤日期、及公务回国天数
|
||||
Map<String, Object> qqDays = new HashMap<>();
|
||||
String[] gwhgS= {""};
|
||||
Calendar countBeginCal = Calendar.getInstance();
|
||||
countBeginCal.setTime(attend4MonthBonus.getBeginDate());
|
||||
Calendar countEndCal = Calendar.getInstance();
|
||||
countEndCal.setTime(attend4MonthBonus.getEndDate());
|
||||
List<Date> attDateList = new ArrayList<>();
|
||||
while (countEndCal.after(countBeginCal) || countEndCal.getTime().equals(countBeginCal.getTime())){
|
||||
attDateList.add(countEndCal.getTime());
|
||||
countEndCal.add(Calendar.DATE,-1);
|
||||
}
|
||||
baseBean.writeLog("获取缺勤日期为:"+attDateList);
|
||||
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";
|
||||
if(users.contains(i.get("resourceId"))){
|
||||
List<Date> qqDate = new ArrayList<>();
|
||||
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("育儿假-境外")) ) ){
|
||||
// 存在缺勤
|
||||
qqDate.add(a);
|
||||
}
|
||||
});
|
||||
String qqStr = i.get("resourceId") +"-qq";
|
||||
qqDays.put(qqStr,qqDate);
|
||||
String gwhgStr = i.get("resourceId") + "-gwhg";
|
||||
if(!gwhgDataIndex[0].equals("")){
|
||||
gwhgS[0] = (String) i.get(gwhgDataIndex[0]);
|
||||
}else {
|
||||
gwhgS[0] ="0";
|
||||
}
|
||||
qqDays.put(gwhgStr,Double.valueOf(gwhgS[0]));
|
||||
}
|
||||
qqDays.put(gwhgStr,Double.valueOf(gwhgS[0]));
|
||||
});
|
||||
baseBean.writeLog("获取的考勤缺勤及公务回国天数,{}", JSONUtils.toJSONString(qqDays));
|
||||
return qqDays;
|
||||
} catch (Exception e) {
|
||||
baseBean.writeLog("获取考勤数据失败{}", e);
|
||||
|
|
|
|||
|
|
@ -54,23 +54,27 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
|||
baseBean.writeLog("获取所有人的境外常驻信息,共:"+czInfos.size());
|
||||
// 将境外常驻信息格式化
|
||||
List<JwCZInfo> jwCZInfos = formatJwCZInfo(czInfos,startAttendanceCal,endAttendanceCal);
|
||||
baseBean.writeLog("将境外常驻信息格式化");
|
||||
// 如果用户在考勤周期内存在境外常驻信息则过滤出来,并且计算当月应常驻天数
|
||||
baseBean.writeLog("将境外常驻信息格式化,共:"+jwCZInfos.size());
|
||||
// 如果用户在考勤周期内存在境外常驻信息则过滤出来,并且计算当月应常驻天数及境内工作天数
|
||||
List<JWJT> results = new ArrayList<>();
|
||||
jwCZInfos = getCZInfosAndCZDays(jwCZInfos, startAttendanceCal, endAttendanceCal,results);
|
||||
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());
|
||||
// 获取公务回国天数 及 缺勤天数
|
||||
Map<Integer, XcdjJwjtParam> usersXCDJ = getOverseasAllowanceDAO().getXCDJByUsers(users,startAttendanceCal);
|
||||
baseBean.writeLog("获取所有员工考勤所属月的薪酬等级及所对应的境外津贴标准、四项补贴合计,共:"+usersXCDJ.size());
|
||||
// 获取考勤员工的公务回国天数 及 缺勤日期
|
||||
Attend4MonthBonus build = Attend4MonthBonus.builder().beginDate(startAttendanceCal.getTime()).endDate(endAttendanceCal.getTime()).build();
|
||||
Map<String, Double> kqDatas = GetKQ4OverseasAllowanceCountService().getKQDatas(build);
|
||||
baseBean.writeLog("调用考勤接口获取公务回国天数 及 缺勤天数,共:"+usersXSDJ.size());
|
||||
// 封装计算薪酬等级、境外津贴标准、考勤天数、四项补助合计
|
||||
// int days = BjcjCommonUtils.getDays(startAttendanceCal.getTime(), endAttendanceCal.getTime());
|
||||
getXcdjAndJwjtbz(results,usersXSDJ,kqDatas);
|
||||
// TODO:验证一下188 陈涛有没有考勤数据 结果不再是0.00
|
||||
Map<String, Object> kqDatas = GetKQ4OverseasAllowanceCountService().getKQDatas(build,users);
|
||||
baseBean.writeLog("调用考勤接口获取公务回国天数 及 缺勤日期:"+kqDatas);
|
||||
// 获取员工公务回国国内工作日天数
|
||||
Map<Integer, List<JwCZInfoDetail>> gwhgInfos = getOverseasAllowanceDAO().getGwhg();
|
||||
baseBean.writeLog("获取年假建模中所有公务回国信息,共:"+gwhgInfos.size());
|
||||
// 过滤考勤周期内的公务回国信息,并计算出国内工作日天数
|
||||
Map<Integer, Integer> validGwhgAndCountWorkdays = getValidGwhgAndCountWorkdays(gwhgInfos, startAttendanceCal.getTime(), endAttendanceCal.getTime());
|
||||
baseBean.writeLog("过滤考勤周期内的公务回国信息,并计算出国内工作日天数:"+validGwhgAndCountWorkdays);
|
||||
// 封装计算薪酬等级、境外津贴标准、考勤天数、四项补助合计、公务回国国内工作日天数
|
||||
getXcdjAndJwjtbz(results,usersXCDJ,kqDatas,validGwhgAndCountWorkdays,jwCZInfos);
|
||||
baseBean.writeLog("封装薪酬等级、境外津贴标准、考勤天数、境外实际常驻天数并计算实出勤天数、境外津贴,共:"+results.size());
|
||||
// 处理第三国出差(2)、境外国内出差(3)艰苦地区补贴
|
||||
Map<Integer, List<JwCZInfoDetail>> dsgccJkdq = getOverseasAllowanceDAO().getDsgcc();
|
||||
|
|
@ -80,6 +84,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
|||
// 处理四项补贴(月标准)
|
||||
// 四项补贴合计(天标准)*(公务回国工作日天数+境外国内出差工作日天数+国内工作日天数)
|
||||
countSxbthj(results);
|
||||
baseBean.writeLog("计算四项补贴合计");
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -202,7 +207,8 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
|||
* @author Harryxzy
|
||||
* @date 2022/9/27 15:37
|
||||
*/
|
||||
public void getXcdjAndJwjtbz(List<JWJT> results ,Map<Integer, XcdjJwjtParam> usersXSDJ,Map<String, Double> kqDatas){
|
||||
public void getXcdjAndJwjtbz(List<JWJT> results ,Map<Integer, XcdjJwjtParam> usersXSDJ,Map<String, Object> kqDatas,Map<Integer, Integer> validGwhgAndCountWorkdays,List<JwCZInfo> jwCZInfos){
|
||||
Map<String, List<JwCZInfoDetail>> czInfos = jwCZInfos.stream().collect(Collectors.toMap(JwCZInfo::getXm, JwCZInfo::getInfos));
|
||||
results.stream().forEach(item-> {
|
||||
XcdjJwjtParam param = usersXSDJ.get(Integer.valueOf(item.getUser()));
|
||||
item.setXcdj(param.getXcdj());
|
||||
|
|
@ -211,18 +217,79 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
|||
item.setSxbzhjrbz(param.getSxbzhj()/21.75);
|
||||
if(kqDatas.get(item.getUser() + "-qq") == null){
|
||||
// 目前该员工没有考勤数据
|
||||
item.setQq(0.0);
|
||||
item.setGnQq(0.0);
|
||||
item.setJwQq(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"));
|
||||
List<Date> qqDate =(List <Date>) kqDatas.get(item.getUser() + "-qq");
|
||||
double gnQqDays=0.0;
|
||||
double jwQqDays=0.0;
|
||||
// 判断是境内缺勤还是境外缺勤
|
||||
List<JwCZInfoDetail> jwCZInfoDetails = czInfos.get(item.getUser());
|
||||
if(jwCZInfoDetails != null && jwCZInfoDetails.size()>0){
|
||||
for(Date d : qqDate){
|
||||
Boolean flag = false;
|
||||
for(int i=0; (i<jwCZInfoDetails.size() && flag == false) ;i++){
|
||||
JwCZInfoDetail detail = jwCZInfoDetails.get(i);
|
||||
Calendar k = Calendar.getInstance();
|
||||
k.setTime(detail.getJwczksrq());
|
||||
setLastMinute(k);
|
||||
detail.setJwczksrq(k.getTime());
|
||||
if(detail.getJwczjsrq() != null){
|
||||
Calendar j = Calendar.getInstance();
|
||||
j.setTime(detail.getJwczjsrq());
|
||||
setLastMinute(j);
|
||||
detail.setJwczjsrq(j.getTime());
|
||||
}
|
||||
if(detail.getLx()==0){
|
||||
// 开始常驻
|
||||
if(detail.getJwczksrq().before(d) || detail.getJwczksrq().equals(d)){
|
||||
// 在境外常驻期内的缺勤
|
||||
jwQqDays++;
|
||||
flag=true;
|
||||
}
|
||||
}else {
|
||||
// 结束常驻
|
||||
if(detail.getJwczjsrq().before(d)){
|
||||
// 境外常驻结束日期在缺勤日前
|
||||
gnQqDays++;
|
||||
flag=true;
|
||||
}
|
||||
// todo 看一下这个时分秒
|
||||
if(BjcjCommonUtils.isBetween(d,detail.getJwczksrq(),detail.getJwczjsrq())){
|
||||
// 在境外常驻期内的缺勤
|
||||
jwQqDays++;
|
||||
flag=true;
|
||||
}
|
||||
}
|
||||
if( (i+1 == jwCZInfoDetails.size()) && (flag == false)){
|
||||
gnQqDays++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
item.setGnQq(gnQqDays);
|
||||
item.setJwQq(jwQqDays);
|
||||
item.setGwhg((Double) kqDatas.get(item.getUser()+"-gwhg"));
|
||||
}
|
||||
item.setJwscq(item.getJwycq()-item.getQq()-item.getGwhg());
|
||||
item.setJwscq(item.getJwycq()-item.getJwQq()-item.getGwhg());
|
||||
item.setJwjt(item.getJwscq()*item.getJwjtbz());
|
||||
if(validGwhgAndCountWorkdays.containsKey(Integer.valueOf(item.getUser()))){
|
||||
// 该员工有公务回国数据
|
||||
Integer workDays = validGwhgAndCountWorkdays.get(Integer.valueOf(item.getUser()));
|
||||
item.setGwhgWorkdays(workDays);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void setLastMinute(Calendar c){
|
||||
c.set(Calendar.HOUR_OF_DAY, 23);
|
||||
c.set(Calendar.MINUTE, 59);
|
||||
c.set(Calendar.SECOND, 59);
|
||||
c.set(Calendar.MILLISECOND, 999);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 境外常驻信息格式化
|
||||
* @return void
|
||||
|
|
@ -245,7 +312,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
|||
|
||||
|
||||
/**
|
||||
* @description 封装第三国出差数据到results中
|
||||
* @description 封装第三国出差和境外国内出差数据到results中
|
||||
* @return void
|
||||
* @author Harryxzy
|
||||
* @date 2022/9/28 17:07
|
||||
|
|
@ -289,10 +356,58 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
|||
*/
|
||||
private void countSxbthj(List<JWJT> results) {
|
||||
results.stream().forEach(result->{
|
||||
// 获取员工的公务回国天数和国内工作日天数 * 四项补助日标准
|
||||
// 获取员工的公务回国工作日天数和国内工作日天数 * 四项补助日标准
|
||||
result.setSxbzhj((result.getGngzts()+result.getGwhgWorkdays()) * result.getSxbzhjrbz());
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @description 过滤考勤周期内的公务回国信息,并计算出国内工作日天数
|
||||
* @return void
|
||||
* @author Harryxzy
|
||||
* @date 2022/10/21 9:47
|
||||
*/
|
||||
private Map<Integer,Integer> getValidGwhgAndCountWorkdays(Map<Integer, List<JwCZInfoDetail>> gwhgInfos, Date startAttendance, Date endAttendance) {
|
||||
Map<Integer,Integer> result = new HashMap();
|
||||
for(Map.Entry<Integer,List<JwCZInfoDetail>> entrySet : gwhgInfos.entrySet()){
|
||||
List<JwCZInfoDetail> values = entrySet.getValue();
|
||||
values.stream().forEach(value ->{
|
||||
if( (value.getJwczksrq().before(endAttendance) || value.getJwczksrq().equals(endAttendance))
|
||||
&& (value.getJwczjsrq().after(startAttendance) || value.getJwczjsrq().equals(startAttendance)) ){
|
||||
// 在考勤周期内的公务回国,计算国内工作天数
|
||||
Calendar countCal = Calendar.getInstance();
|
||||
if(value.getJwczjsrq().after(endAttendance)){
|
||||
countCal.setTime(endAttendance);
|
||||
}else {
|
||||
countCal.setTime(value.getJwczjsrq());
|
||||
}
|
||||
Calendar countStarCal = Calendar.getInstance();
|
||||
if(value.getJwczksrq().before(startAttendance)){
|
||||
countStarCal.setTime(startAttendance);
|
||||
}else{
|
||||
countStarCal.setTime(value.getJwczksrq());
|
||||
}
|
||||
int workDays=0;
|
||||
while (countCal.getTime().after(countStarCal.getTime()) || countCal.getTime().equals(countStarCal.getTime())){
|
||||
// 判断是否是工作日
|
||||
if((countCal.get(Calendar.DAY_OF_WEEK) != 1) && (countCal.get(Calendar.DAY_OF_WEEK)!=7)){
|
||||
workDays++;
|
||||
}
|
||||
countCal.add(Calendar.DATE,-1);
|
||||
}
|
||||
if(result.containsKey(entrySet.getKey())){
|
||||
Integer integer = result.get(entrySet.getKey());
|
||||
result.put(entrySet.getKey(), integer + workDays);
|
||||
}else{
|
||||
result.put(entrySet.getKey(), workDays);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,10 +7,10 @@
|
|||
<map>
|
||||
<entry key="com.zeroturnaround.jrebel.FormatVersion" value="7.0.0" />
|
||||
<entry key="jrebelEnabled" value="true" />
|
||||
<entry key="lastExternalPluginCheckTime" value="1663248149371" />
|
||||
<entry key="lastExternalPluginCheckTime" value="1666149205549" />
|
||||
</map>
|
||||
</option>
|
||||
<option name="version" value="4" />
|
||||
<option name="version" value="5" />
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
|
|
|
|||
Loading…
Reference in New Issue