bjcj-调整考勤
This commit is contained in:
parent
8cec2b35bf
commit
d98138653b
|
|
@ -33,7 +33,7 @@ public class AbroadBusinessDAO {
|
||||||
public List<AbroadBusiness> getList(){
|
public List<AbroadBusiness> getList(){
|
||||||
RecordSet rs = new RecordSet();
|
RecordSet rs = new RecordSet();
|
||||||
ArrayList<AbroadBusiness> abroadBusinesses = new ArrayList<AbroadBusiness>();
|
ArrayList<AbroadBusiness> abroadBusinesses = new ArrayList<AbroadBusiness>();
|
||||||
String sql ="select DISTINCT XM,JWGZKSRQ,JWGZJSRQ,JWGZDW1,lcbh from uf_njjmb_dt1 t LEFT JOIN uf_njjmb m on t.MAINID=m.id WHERE lx='"+ AbroadBusinessCountConstant.ABROADBUSINESS_LX +"'order by JWGZKSRQ ASC";
|
String sql ="select DISTINCT XM,JWGZKSRQ,JWGZJSRQ,JWGZDW1,lcbh,jsglts from uf_njjmb_dt1 t LEFT JOIN uf_njjmb m on t.MAINID=m.id WHERE lx='"+ AbroadBusinessCountConstant.ABROADBUSINESS_LX +"'order by JWGZKSRQ ASC";
|
||||||
rs.execute(sql);
|
rs.execute(sql);
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
while (rs.next()){
|
while (rs.next()){
|
||||||
|
|
@ -46,6 +46,7 @@ public class AbroadBusinessDAO {
|
||||||
.jwgzkssj(startDate)
|
.jwgzkssj(startDate)
|
||||||
.jwgzjssj(endDate)
|
.jwgzjssj(endDate)
|
||||||
.lcbh(rs.getString("lcbh"))
|
.lcbh(rs.getString("lcbh"))
|
||||||
|
.jsglts(rs.getDouble("JSGLTS"))
|
||||||
.build();
|
.build();
|
||||||
abroadBusinesses.add(build);
|
abroadBusinesses.add(build);
|
||||||
} catch (ParseException e) {
|
} catch (ParseException e) {
|
||||||
|
|
@ -133,10 +134,10 @@ public class AbroadBusinessDAO {
|
||||||
String ccMonth = sdf2.format(result.getMonth());
|
String ccMonth = sdf2.format(result.getMonth());
|
||||||
double JWJTJE = result.getJwjtbz() * result.getAbroadAllowanceDays();
|
double JWJTJE = result.getJwjtbz() * result.getAbroadAllowanceDays();
|
||||||
double DQCCBTJE = result.getCcbtbz() * result.getBasicAllowanceDays();
|
double DQCCBTJE = result.getCcbtbz() * result.getBasicAllowanceDays();
|
||||||
String sql ="insert into UF_JWCCTS(formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,XM,GJ,XD,XCDJ,CCYF,CCBTBZ,JWJTBZ,CCBTTS,JWJTTS,JWCCTS,FFYF,JWJTJE,DQCCBTJE,jkdqbtje,CCBTHJ)" +
|
String sql ="insert into UF_JWCCTS(formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,XM,GJ,XD,XCDJ,CCYF,CCBTBZ,JWJTBZ,CCBTTS,JWJTTS,JWCCTS,FFYF,JWJTJE,DQCCBTJE,jkdqbtje,CCBTHJ,GL)" +
|
||||||
"values('"+fieldValue+"','1','0','"+currDate+"','"+currTime+"',"+result.getUser()+",'"+result.getGj()+"','"+result.getXd()+"','"+result.getXcdj()+"','" +ccMonth+"',"+result.getCcbtbz()+","
|
"values('"+fieldValue+"','1','0','"+currDate+"','"+currTime+"',"+result.getUser()+",'"+result.getGj()+"','"+result.getXd()+"','"+result.getXcdj()+"','" +ccMonth+"',"+result.getCcbtbz()+","
|
||||||
+result.getJwjtbz()+","+result.getBasicAllowanceDays()+","+result.getAbroadAllowanceDays()+","+result.getTotalDays()+",'"+sendMonth+"',"+
|
+result.getJwjtbz()+","+result.getBasicAllowanceDays()+","+result.getAbroadAllowanceDays()+","+result.getTotalDays()+",'"+sendMonth+"',"+
|
||||||
JWJTJE+","+DQCCBTJE+","+result.getJkdqbtje()+","+(JWJTJE+DQCCBTJE+result.getJkdqbtje())+")";
|
JWJTJE+","+DQCCBTJE+","+result.getJkdqbtje()+","+(JWJTJE+DQCCBTJE+result.getJkdqbtje())+" , " + result.getJsglnf() + ")";
|
||||||
rs.execute(sql);
|
rs.execute(sql);
|
||||||
String sql2 ="select max(id) as id from UF_JWCCTS";
|
String sql2 ="select max(id) as id from UF_JWCCTS";
|
||||||
rs.execute(sql2);
|
rs.execute(sql2);
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import com.engine.bjcj220907.entity.CountMonthBonus;
|
||||||
import com.engine.bjcj220907.entity.CountMonthBonusParam;
|
import com.engine.bjcj220907.entity.CountMonthBonusParam;
|
||||||
import com.engine.bjcj220907.entity.DepartureInfo;
|
import com.engine.bjcj220907.entity.DepartureInfo;
|
||||||
import com.engine.bjcj220907.entity.JwCZInfoDetail;
|
import com.engine.bjcj220907.entity.JwCZInfoDetail;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import weaver.conn.RecordSet;
|
import weaver.conn.RecordSet;
|
||||||
import weaver.conn.RecordSetTrans;
|
import weaver.conn.RecordSetTrans;
|
||||||
import weaver.formmode.setup.ModeRightInfo;
|
import weaver.formmode.setup.ModeRightInfo;
|
||||||
|
|
@ -348,12 +349,12 @@ public class MonthBonusDAO {
|
||||||
public List<DepartureInfo> getDepartureInfo(Date bonusSendMonth) {
|
public List<DepartureInfo> getDepartureInfo(Date bonusSendMonth) {
|
||||||
RecordSet rs = new RecordSet();
|
RecordSet rs = new RecordSet();
|
||||||
ArrayList<DepartureInfo> departure = new ArrayList<>();
|
ArrayList<DepartureInfo> departure = new ArrayList<>();
|
||||||
String sql="select xm,lzrq from uf_rybs where ryzt=4 and (sfyjhsjx=0 or sfyjhsjx is null)";
|
String sql="select xm,lzrq from uf_rybs where lz=0 and (sfyjhsjx=0 or sfyjhsjx is null)";
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
rs.execute(sql);
|
rs.execute(sql);
|
||||||
while (rs.next()){
|
while (rs.next()){
|
||||||
try {
|
try {
|
||||||
Date lzrq = sdf.parse(rs.getString("lzrq"));
|
// Date lzrq = sdf.parse(rs.getString("lzrq"));
|
||||||
DepartureInfo build = DepartureInfo.builder().xm(rs.getInt("xm")).lzrq(sdf.parse(rs.getString("LZRQ"))).build();
|
DepartureInfo build = DepartureInfo.builder().xm(rs.getInt("xm")).lzrq(sdf.parse(rs.getString("LZRQ"))).build();
|
||||||
departure.add(build);
|
departure.add(build);
|
||||||
} catch (ParseException e) {
|
} catch (ParseException e) {
|
||||||
|
|
@ -372,7 +373,7 @@ public class MonthBonusDAO {
|
||||||
public List<DepartureInfo> getHaveSendDepartureInfo() {
|
public List<DepartureInfo> getHaveSendDepartureInfo() {
|
||||||
RecordSet rs = new RecordSet();
|
RecordSet rs = new RecordSet();
|
||||||
ArrayList<DepartureInfo> departure = new ArrayList<>();
|
ArrayList<DepartureInfo> departure = new ArrayList<>();
|
||||||
String sql="select xm,lzrq from uf_rybs where ryzt=4 and sfyjhsjx=1";
|
String sql="select xm,lzrq from uf_rybs where lz=0 and sfyjhsjx=1";
|
||||||
rs.execute(sql);
|
rs.execute(sql);
|
||||||
while (rs.next()){
|
while (rs.next()){
|
||||||
DepartureInfo build = DepartureInfo.builder().xm(rs.getInt("xm")).build();
|
DepartureInfo build = DepartureInfo.builder().xm(rs.getInt("xm")).build();
|
||||||
|
|
@ -381,6 +382,41 @@ public class MonthBonusDAO {
|
||||||
return departure;
|
return departure;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* @description 获取所有人的入职日期、离职日期、其他缺勤天数
|
||||||
|
* @return List<DepartureInfo>
|
||||||
|
* @author Harryxzy
|
||||||
|
* @date 2023/02/05 10:47
|
||||||
|
*/
|
||||||
|
public List<DepartureInfo> getRybsInfo() {
|
||||||
|
RecordSet rs = new RecordSet();
|
||||||
|
ArrayList<DepartureInfo> departure = new ArrayList<>();
|
||||||
|
String sql="select xm,lzrq,rzrq,rzqqts,lzqqts from uf_rybs where sfyjhsjx!=1 or sfyjhsjx is null";
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
|
rs.execute(sql);
|
||||||
|
while (rs.next()){
|
||||||
|
try {
|
||||||
|
String lzrqStr = rs.getString("LZRQ");
|
||||||
|
String rzrqStr = rs.getString("RZRQ");
|
||||||
|
Date rzrq = null;
|
||||||
|
Date lzrq = null;
|
||||||
|
if(StringUtils.isNotEmpty(rzrqStr)){
|
||||||
|
rzrq = sdf.parse(rzrqStr);
|
||||||
|
}
|
||||||
|
if(StringUtils.isNotEmpty(lzrqStr)){
|
||||||
|
lzrq = sdf.parse(lzrqStr);
|
||||||
|
}
|
||||||
|
int rzqqts = rs.getInt("rzqqts") == -1 ? 0 : rs.getInt("rzqqts");
|
||||||
|
int lzqqts = rs.getInt("lzqqts") == -1 ? 0 : rs.getInt("lzqqts");
|
||||||
|
DepartureInfo build = DepartureInfo.builder().xm(rs.getInt("xm")).lzrq(lzrq).rzrq(rzrq).rzqqts(rzqqts ).lzqqts(lzqqts).build();
|
||||||
|
departure.add(build);
|
||||||
|
}catch (ParseException e) {
|
||||||
|
baseBean.writeLog("所有人的入职日期、离职日期、其他缺勤天数 日期格式化错误");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return departure;
|
||||||
|
}
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* @description 获取绩效日期的ID
|
* @description 获取绩效日期的ID
|
||||||
* @return Integer
|
* @return Integer
|
||||||
|
|
|
||||||
|
|
@ -50,4 +50,9 @@ public class AbroadBusiness {
|
||||||
*/
|
*/
|
||||||
private String lcbh;
|
private String lcbh;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计算工龄天数
|
||||||
|
*/
|
||||||
|
private Double jsglts;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,4 +37,9 @@ public class AbroadBusinessDetail {
|
||||||
*/
|
*/
|
||||||
private String lcbh;
|
private String lcbh;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计算工龄天数
|
||||||
|
*/
|
||||||
|
private Double jsglts;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -102,6 +102,16 @@ public class AbroadBusinessResult {
|
||||||
*/
|
*/
|
||||||
private double jkdqbtje;
|
private double jkdqbtje;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计算工龄天数
|
||||||
|
*/
|
||||||
|
private Double jsglts;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计算工龄年份
|
||||||
|
*/
|
||||||
|
private Integer jsglnf;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,4 +26,19 @@ public class DepartureInfo {
|
||||||
* 离职日期
|
* 离职日期
|
||||||
*/
|
*/
|
||||||
private Date lzrq;
|
private Date lzrq;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入职日期
|
||||||
|
*/
|
||||||
|
private Date rzrq;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入职缺勤天数
|
||||||
|
*/
|
||||||
|
private Integer rzqqts;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 离职缺勤天数
|
||||||
|
*/
|
||||||
|
private Integer lzqqts;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -59,11 +59,11 @@ public class AbroadBusinessCountServiceImpl extends Service implements AbroadBus
|
||||||
tempEnd.set(Calendar.MILLISECOND, 0);
|
tempEnd.set(Calendar.MILLISECOND, 0);
|
||||||
tempEnd.add(Calendar.DATE, 1);
|
tempEnd.add(Calendar.DATE, 1);
|
||||||
while (tempStart.before(tempEnd)) {
|
while (tempStart.before(tempEnd)) {
|
||||||
abroadBusinessDetails.add(AbroadBusinessDetail.builder().xm(business.getUser()).date(tempStart.getTime()).jwgzdw(business.getJwgzdw()).lcbh(business.getLcbh()).build());
|
abroadBusinessDetails.add(AbroadBusinessDetail.builder().xm(business.getUser()).date(tempStart.getTime()).jwgzdw(business.getJwgzdw()).lcbh(business.getLcbh()).jsglts(business.getJsglts()).build());
|
||||||
tempStart.add(Calendar.DAY_OF_YEAR, 1);
|
tempStart.add(Calendar.DAY_OF_YEAR, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
baseBean.writeLog("将所有出差记录转换为明细完成共"+abroadBusinesses.size()+"条明细");
|
baseBean.writeLog("将所有出差记录转换为明细完成共"+abroadBusinessDetails.size()+"条明细");
|
||||||
// 查询月份的年月(当月的28号11:59:59)
|
// 查询月份的年月(当月的28号11:59:59)
|
||||||
Calendar searchCal = Calendar.getInstance();
|
Calendar searchCal = Calendar.getInstance();
|
||||||
searchCal.setTime(param.getMonth());
|
searchCal.setTime(param.getMonth());
|
||||||
|
|
@ -220,7 +220,7 @@ public class AbroadBusinessCountServiceImpl extends Service implements AbroadBus
|
||||||
|
|
||||||
}
|
}
|
||||||
AbroadBusinessResult build = AbroadBusinessResult.builder().user(detail.get(0).getXm()).basicAllowanceDays(thisMonthCount).abroadAllowanceDays(thisMonthAbroadCount).totalDays(thisMonthCount + thisMonthAbroadCount)
|
AbroadBusinessResult build = AbroadBusinessResult.builder().user(detail.get(0).getXm()).basicAllowanceDays(thisMonthCount).abroadAllowanceDays(thisMonthAbroadCount).totalDays(thisMonthCount + thisMonthAbroadCount)
|
||||||
.month(param.getMonth()).sendMonth(sendMonth.getTime()).build();
|
.month(param.getMonth()).sendMonth(sendMonth.getTime()).jsglts(detail.get(0).getJsglts()).build();
|
||||||
// 处理艰苦地区补助
|
// 处理艰苦地区补助
|
||||||
handleJkdqbt(build, searchMonthDetails, jkdqbtDates);
|
handleJkdqbt(build, searchMonthDetails, jkdqbtDates);
|
||||||
results.add(build);
|
results.add(build);
|
||||||
|
|
@ -231,7 +231,7 @@ public class AbroadBusinessCountServiceImpl extends Service implements AbroadBus
|
||||||
getAbroadBusinessDAO().getJobInfo(result);
|
getAbroadBusinessDAO().getJobInfo(result);
|
||||||
return result;
|
return result;
|
||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
baseBean.writeLog("开始获取并计算艰苦地区补助");
|
baseBean.writeLog("开始获取并计算艰苦地区补助,并计算境外工龄年份");
|
||||||
getDqBonus(results);
|
getDqBonus(results);
|
||||||
// 计算结果插入建模表中
|
// 计算结果插入建模表中
|
||||||
baseBean.writeLog("计算结果插入建模表中"+results);
|
baseBean.writeLog("计算结果插入建模表中"+results);
|
||||||
|
|
@ -239,6 +239,7 @@ public class AbroadBusinessCountServiceImpl extends Service implements AbroadBus
|
||||||
return "success";
|
return "success";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 开始获取并计算艰苦地区补助
|
* @description 开始获取并计算艰苦地区补助
|
||||||
* @return void
|
* @return void
|
||||||
|
|
@ -258,6 +259,15 @@ public class AbroadBusinessCountServiceImpl extends Service implements AbroadBus
|
||||||
jkdqbtje[0] += jkdq.getJkdqbt();
|
jkdqbtje[0] += jkdq.getJkdqbt();
|
||||||
});
|
});
|
||||||
result.setJkdqbtje(jkdqbtje[0]);
|
result.setJkdqbtje(jkdqbtje[0]);
|
||||||
|
// 处理境外工龄
|
||||||
|
int jwgl;
|
||||||
|
if(result.getJsglts() == null || Objects.equals(result.getJsglts(),-1) ){
|
||||||
|
jwgl = 0;
|
||||||
|
}else{
|
||||||
|
jwgl = (int)Math.floor(result.getJsglts() / 365);
|
||||||
|
jwgl = jwgl < 0 ? 0 : jwgl;
|
||||||
|
}
|
||||||
|
result.setJsglnf(jwgl);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ public class GetKQ4MonthBonusServiceImpl extends Service implements GetKQ4MonthB
|
||||||
List<Map> children =(List<Map>) column.get("children");
|
List<Map> children =(List<Map>) column.get("children");
|
||||||
children.stream().forEach(i->{
|
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("奖励假")) && (!i.get("title").equals("工伤")) && (!i.get("title").equals("隔离假"))
|
||||||
&& (!i.get("title").equals("境外出差")) && (!i.get("title").equals("境内出差")) && (!i.get("title").equals("第三国出差/境外国内出差")) && (!i.get("title").equals("公务回国")) ){
|
&& (!i.get("title").equals("境外出差")) && (!i.get("title").equals("境内出差")) && (!i.get("title").equals("第三国出差/境外国内出差")) && (!i.get("title").equals("公务回国")) && (!i.get("title").equals("路程假")) ){
|
||||||
c.add(i.get("dataIndex"));
|
c.add(i.get("dataIndex"));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ public class GetKQ4OverseasAllowanceCountServiceImpl extends Service implements
|
||||||
// baseBean.writeLog("考勤数据:"+o+"转换为Map失败");
|
// baseBean.writeLog("考勤数据:"+o+"转换为Map失败");
|
||||||
attCal="休息";
|
attCal="休息";
|
||||||
}
|
}
|
||||||
if( (attCal.contains("旷工")) || ( (!attCal.equals("√")) && (!attCal.contains("休息")) && (!attCal.equals("")) && (!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("工伤")) && (!attCal.contains("奖励假")) && (!attCal.contains("第三国出差/境外国内出差")) && (!attCal.contains("路程假")) ) ){
|
||||||
// 存在缺勤
|
// 存在缺勤
|
||||||
qqDate.add(a);
|
qqDate.add(a);
|
||||||
// baseBean.writeLog(attCal+"缺勤");
|
// baseBean.writeLog(attCal+"缺勤");
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import com.engine.bjcj220907.service.MonthBonusCountService;
|
||||||
import com.engine.bjcj220907.utils.BjcjCommonUtils;
|
import com.engine.bjcj220907.utils.BjcjCommonUtils;
|
||||||
import com.engine.common.util.ServiceUtil;
|
import com.engine.common.util.ServiceUtil;
|
||||||
import com.engine.core.impl.Service;
|
import com.engine.core.impl.Service;
|
||||||
|
import com.engine.salary.util.SalaryEntityUtil;
|
||||||
import weaver.general.BaseBean;
|
import weaver.general.BaseBean;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
|
@ -46,10 +47,20 @@ public class MonthBonusCountServiceImpl extends Service implements MonthBonusCou
|
||||||
bonusCal.setTime(bonusMonth);
|
bonusCal.setTime(bonusMonth);
|
||||||
int bonusYear = bonusCal.get(Calendar.YEAR);
|
int bonusYear = bonusCal.get(Calendar.YEAR);
|
||||||
int bonusSeason =bonusCal.get(Calendar.MONTH)/3+1;
|
int bonusSeason =bonusCal.get(Calendar.MONTH)/3+1;
|
||||||
// 获取已经tr并且已经发放过绩效的人员信息
|
// 获取已经离职并且已经发放过绩效的人员信息
|
||||||
baseBean.writeLog("获取已经离职并且已经发放过绩效的人员信息");
|
baseBean.writeLog("获取已经离职并且已经发放过绩效的人员信息");
|
||||||
List<Integer> haveSendDepartureInfo = getMonthBonusDAO().getHaveSendDepartureInfo().stream().map(i->i.getXm()).collect(Collectors.toList());
|
List<Integer> haveSendDepartureInfo = getMonthBonusDAO().getHaveSendDepartureInfo().stream().map(i->i.getXm()).collect(Collectors.toList());
|
||||||
baseBean.writeLog("获取已经离职并且已经发放过绩效的人员信息"+haveSendDepartureInfo+" 共:"+haveSendDepartureInfo.size());
|
baseBean.writeLog("获取已经离职并且已经发放过绩效的人员信息 共:"+haveSendDepartureInfo.size());
|
||||||
|
// 获取所有人的入职日期、离职日期、其他缺勤天数
|
||||||
|
List<DepartureInfo> rybsInfo = getMonthBonusDAO().getRybsInfo();
|
||||||
|
baseBean.writeLog("获取所有人的入职日期、离职日期、其他缺勤天数"+rybsInfo);
|
||||||
|
Map<Integer,DepartureInfo> rybsInfoMap = SalaryEntityUtil.convert2Map(rybsInfo, DepartureInfo::getXm);
|
||||||
|
// 入职日期小于绩效所属月的不核算绩效
|
||||||
|
rybsInfo.stream().forEach(info -> {
|
||||||
|
if(BjcjCommonUtils.isBeforeMonth(param.getBonusMonth(),info.getRzrq())){
|
||||||
|
haveSendDepartureInfo.add(info.getXm());
|
||||||
|
}
|
||||||
|
});
|
||||||
// 获取所有人的绩效等级 --> 绩效系数
|
// 获取所有人的绩效等级 --> 绩效系数
|
||||||
List<CountMonthBonus> result = getMonthBonusDAO().getJXInfo(bonusSendMonth,bonusMonth,bonusYear,bonusSeason,haveSendDepartureInfo);
|
List<CountMonthBonus> result = getMonthBonusDAO().getJXInfo(bonusSendMonth,bonusMonth,bonusYear,bonusSeason,haveSendDepartureInfo);
|
||||||
baseBean.writeLog("获取所有人的绩效等级、绩效系数等信息,共计:"+result.size());
|
baseBean.writeLog("获取所有人的绩效等级、绩效系数等信息,共计:"+result.size());
|
||||||
|
|
@ -64,6 +75,10 @@ public class MonthBonusCountServiceImpl extends Service implements MonthBonusCou
|
||||||
Calendar countCal = Calendar.getInstance();
|
Calendar countCal = Calendar.getInstance();
|
||||||
countCal.setTime(bonusMonth);
|
countCal.setTime(bonusMonth);
|
||||||
countCal.add(Calendar.MONTH,1);
|
countCal.add(Calendar.MONTH,1);
|
||||||
|
// 核算月在员工入职日期前
|
||||||
|
if(rybsInfoMap.get(info.getXm()) != null && BjcjCommonUtils.isBeforeMonth(countCal.getTime(),rybsInfoMap.get(info.getXm()).getRzrq())){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
while (countCal.getTime().before(info.getLzrq()) || countCal.getTime().equals(info.getLzrq())){
|
while (countCal.getTime().before(info.getLzrq()) || countCal.getTime().equals(info.getLzrq())){
|
||||||
int year = countCal.get(Calendar.YEAR);
|
int year = countCal.get(Calendar.YEAR);
|
||||||
int season =countCal.get(Calendar.MONTH)/3+1;
|
int season =countCal.get(Calendar.MONTH)/3+1;
|
||||||
|
|
@ -111,6 +126,7 @@ public class MonthBonusCountServiceImpl extends Service implements MonthBonusCou
|
||||||
// 计算考勤月内的月度绩效信息
|
// 计算考勤月内的月度绩效信息
|
||||||
baseBean.writeLog("计算考勤月内的月度绩效信息");
|
baseBean.writeLog("计算考勤月内的月度绩效信息");
|
||||||
result = result.stream().map(item -> {
|
result = result.stream().map(item -> {
|
||||||
|
DepartureInfo userInfo = rybsInfoMap.get(new Integer(item.getXm()));
|
||||||
if(!jwCZUsers.contains(item.getXm())){
|
if(!jwCZUsers.contains(item.getXm())){
|
||||||
// 用户不存在境外常驻信息(全勤21.75)
|
// 用户不存在境外常驻信息(全勤21.75)
|
||||||
item.setYcq(21.75);
|
item.setYcq(21.75);
|
||||||
|
|
@ -118,6 +134,14 @@ public class MonthBonusCountServiceImpl extends Service implements MonthBonusCou
|
||||||
if(qqDatas.containsKey( (item.getXm()+"-"+sdf.format(item.getKqyf())) )){
|
if(qqDatas.containsKey( (item.getXm()+"-"+sdf.format(item.getKqyf())) )){
|
||||||
qq = qqDatas.get((item.getXm()+"-"+sdf.format(item.getKqyf())));
|
qq = qqDatas.get((item.getXm()+"-"+sdf.format(item.getKqyf())));
|
||||||
}
|
}
|
||||||
|
// 是否是入职月或离职月 加上其他缺勤天数
|
||||||
|
if(userInfo != null && BjcjCommonUtils.isEqualsMonth(userInfo.getRzrq(),item.getKqyf()) ){
|
||||||
|
qq = qq + userInfo.getRzqqts();
|
||||||
|
}
|
||||||
|
if(userInfo != null && BjcjCommonUtils.isEqualsMonth(userInfo.getLzrq(),item.getKqyf())){
|
||||||
|
qq = qq + userInfo.getLzqqts();
|
||||||
|
}
|
||||||
|
|
||||||
if(qq>21.75){
|
if(qq>21.75){
|
||||||
// 境内员工,并且缺勤天数大于21.75,可能导致负数因此修正缺勤天数为21.75
|
// 境内员工,并且缺勤天数大于21.75,可能导致负数因此修正缺勤天数为21.75
|
||||||
qq = 21.75;
|
qq = 21.75;
|
||||||
|
|
@ -210,6 +234,13 @@ public class MonthBonusCountServiceImpl extends Service implements MonthBonusCou
|
||||||
if(qqDatas.containsKey( (item.getXm()+"-"+sdf.format(item.getKqyf())) )){
|
if(qqDatas.containsKey( (item.getXm()+"-"+sdf.format(item.getKqyf())) )){
|
||||||
qq = qqDatas.get((item.getXm()+"-"+sdf.format(item.getKqyf())));
|
qq = qqDatas.get((item.getXm()+"-"+sdf.format(item.getKqyf())));
|
||||||
}
|
}
|
||||||
|
// 是否是入职月或离职月 加上其他缺勤天数
|
||||||
|
if(userInfo != null && BjcjCommonUtils.isEqualsMonth(userInfo.getRzrq(),item.getKqyf()) ){
|
||||||
|
qq = qq + userInfo.getRzqqts();
|
||||||
|
}
|
||||||
|
if(userInfo != null && BjcjCommonUtils.isEqualsMonth(userInfo.getLzrq(),item.getKqyf())){
|
||||||
|
qq = qq + userInfo.getLzqqts();
|
||||||
|
}
|
||||||
if(ycq[0]==21.75 && qq>21.75){
|
if(ycq[0]==21.75 && qq>21.75){
|
||||||
// 没有境外常驻信息,并且缺勤天数大于21.75,可能导致负数因此修正缺勤天数为21.75
|
// 没有境外常驻信息,并且缺勤天数大于21.75,可能导致负数因此修正缺勤天数为21.75
|
||||||
qq = 21.75;
|
qq = 21.75;
|
||||||
|
|
@ -232,47 +263,50 @@ public class MonthBonusCountServiceImpl extends Service implements MonthBonusCou
|
||||||
|
|
||||||
// 处理离职人员离职所在月份的数据
|
// 处理离职人员离职所在月份的数据
|
||||||
// 将离职信息转为map
|
// 将离职信息转为map
|
||||||
baseBean.writeLog("处理离职人员离职所在月份的数据");
|
// baseBean.writeLog("处理离职人员离职所在月份的数据");
|
||||||
Map<Integer, Date> map = departureInfo.stream().collect(Collectors.toMap(DepartureInfo::getXm,d->d.getLzrq()));
|
// Map<Integer, Date> map = departureInfo.stream().collect(Collectors.toMap(DepartureInfo::getXm,d->d.getLzrq()));
|
||||||
departureTemp.stream().forEach(i-> {
|
// departureTemp.stream().forEach(i-> {
|
||||||
// 离职日期
|
// // 离职日期
|
||||||
Date date = map.get(Integer.valueOf(i.getXm()));
|
// Date date = map.get(Integer.valueOf(i.getXm()));
|
||||||
Date kqyf = i.getKqyf();
|
// Date kqyf = i.getKqyf();
|
||||||
if( date.getMonth() == kqyf.getMonth()){
|
// if( date.getMonth() == kqyf.getMonth()){
|
||||||
// 是离职所在月份,获取离职日期重新计算该月缺勤日期以及绩效
|
// // 是离职所在月份,获取离职日期重新计算该月缺勤日期以及绩效
|
||||||
Calendar deparLastDay = Calendar.getInstance();
|
// Calendar deparLastDay = Calendar.getInstance();
|
||||||
deparLastDay.setTime(date);
|
// deparLastDay.setTime(date);
|
||||||
deparLastDay.add(Calendar.DATE,1);
|
// deparLastDay.add(Calendar.DATE,1);
|
||||||
Calendar deaprAttendEndDay = BjcjCommonUtils.getEndAttendanceCal(kqyf);
|
// Calendar deaprAttendEndDay = BjcjCommonUtils.getEndAttendanceCal(kqyf);
|
||||||
double[] sqq={0.0};
|
// double[] sqq={0.0};
|
||||||
if(Math.abs(i.getYcq()-21.75) < 0.000000002){
|
// if(Math.abs(i.getYcq()-21.75) < 0.000000002){
|
||||||
int[] qq={0};
|
// int[] qq={0};
|
||||||
Calendar countCal = Calendar.getInstance();
|
// Calendar countCal = Calendar.getInstance();
|
||||||
countCal.setTime(deaprAttendEndDay.getTime());
|
// countCal.setTime(deaprAttendEndDay.getTime());
|
||||||
// 均为境内,取离职日后一天-考勤最后一天的工作日
|
// // 均为境内,取离职日后一天-考勤最后一天的工作日
|
||||||
while (deparLastDay.getTime().before(countCal.getTime()) || deparLastDay.getTime().equals(countCal.getTime())){
|
// while (deparLastDay.getTime().before(countCal.getTime()) || deparLastDay.getTime().equals(countCal.getTime())){
|
||||||
if( (countCal.get(Calendar.DAY_OF_WEEK) != 1) && (countCal.get(Calendar.DAY_OF_WEEK)!=7) ){
|
// if( (countCal.get(Calendar.DAY_OF_WEEK) != 1) && (countCal.get(Calendar.DAY_OF_WEEK)!=7) ){
|
||||||
qq[0]++;
|
// qq[0]++;
|
||||||
}
|
// }
|
||||||
countCal.add(Calendar.DATE,-1);
|
// countCal.add(Calendar.DATE,-1);
|
||||||
}
|
// }
|
||||||
sqq[0] = i.getQq()+qq[0];
|
// sqq[0] = i.getQq()+qq[0];
|
||||||
}else{
|
// }else{
|
||||||
// 存在境外,取离职日后一天-考勤最后一天的自然日
|
// // 存在境外,取离职日后一天-考勤最后一天的自然日
|
||||||
sqq[0] = i.getQq()+BjcjCommonUtils.getDays(deparLastDay.getTime(), deaprAttendEndDay.getTime());
|
// sqq[0] = i.getQq()+BjcjCommonUtils.getDays(deparLastDay.getTime(), deaprAttendEndDay.getTime());
|
||||||
}
|
// }
|
||||||
i.setQq(sqq[0]);
|
// DepartureInfo userRyInfo = rybsInfoMap.get(Integer.valueOf(i.getXm()));
|
||||||
// 重新计算1、实出勤天数 =应出勤天数-缺勤天数 2、奖金基数(考勤)= 月度绩效奖金基数-月度绩效基数/满勤*缺勤天数 3、奖金实发放额= 奖金基数(考勤)*个人绩效系数
|
// sqq[0] = i.getQq() + userRyInfo.getQtqqts();
|
||||||
double scqTemp =i.getYcq()-sqq[0];
|
//
|
||||||
if (scqTemp<0){
|
// i.setQq(sqq[0]);
|
||||||
scqTemp=0.0;
|
// // 重新计算1、实出勤天数 =应出勤天数-缺勤天数 2、奖金基数(考勤)= 月度绩效奖金基数-月度绩效基数/满勤*缺勤天数 3、奖金实发放额= 奖金基数(考勤)*个人绩效系数
|
||||||
}
|
// double scqTemp =i.getYcq()-sqq[0];
|
||||||
i.setScq(scqTemp);
|
// if (scqTemp<0){
|
||||||
double jjjskq = i.getYdjjjxjs() - i.getYdjjjxjs() / i.getYcq() * sqq[0];
|
// scqTemp=0.0;
|
||||||
i.setJjjskq(jjjskq);
|
// }
|
||||||
i.setYfje(i.getGrjxxs()*jjjskq);
|
// i.setScq(scqTemp);
|
||||||
}
|
// double jjjskq = i.getYdjjjxjs() - i.getYdjjjxjs() / i.getYcq() * sqq[0];
|
||||||
});
|
// i.setJjjskq(jjjskq);
|
||||||
|
// i.setYfje(i.getGrjxxs()*jjjskq);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
// 先删除建模中脏数据
|
// 先删除建模中脏数据
|
||||||
getMonthBonusDAO().clear(bonusMonth,bonusSendMonth,haveSendDepartureInfo);
|
getMonthBonusDAO().clear(bonusMonth,bonusSendMonth,haveSendDepartureInfo);
|
||||||
baseBean.writeLog("先删除建模中脏数据"+bonusMonth+bonusSendMonth+haveSendDepartureInfo);
|
baseBean.writeLog("先删除建模中脏数据"+bonusMonth+bonusSendMonth+haveSendDepartureInfo);
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
item.setGngzts( item.getGngzts() -gnRestDays );
|
item.setGngzts( item.getGngzts() -gnRestDays );
|
||||||
baseBean.writeLog(item.getUser() + "休息" + gnRestDays + "天");
|
// baseBean.writeLog(item.getUser() + "休息" + gnRestDays + "天");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -342,16 +342,23 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
||||||
* @date 2022/9/27 15:37
|
* @date 2022/9/27 15:37
|
||||||
*/
|
*/
|
||||||
public void getXcdjAndJwjtbz(List<JWJT> results ,Map<Integer, XcdjJwjtParam> usersXSDJ,Map<String, Object> kqDatas,Map<Integer, Integer> validGwhgAndCountWorkdays,List<JwCZInfo> jwCZInfos){
|
public void getXcdjAndJwjtbz(List<JWJT> results ,Map<Integer, XcdjJwjtParam> usersXSDJ,Map<String, Object> kqDatas,Map<Integer, Integer> validGwhgAndCountWorkdays,List<JwCZInfo> jwCZInfos){
|
||||||
|
try {
|
||||||
Map<String, List<JwCZInfoDetail>> czInfos = jwCZInfos.stream().collect(Collectors.toMap(JwCZInfo::getXm, JwCZInfo::getInfos));
|
Map<String, List<JwCZInfoDetail>> czInfos = jwCZInfos.stream().collect(Collectors.toMap(JwCZInfo::getXm, JwCZInfo::getInfos));
|
||||||
results.stream().forEach(item-> {
|
results.stream().forEach(item-> {
|
||||||
XcdjJwjtParam param = usersXSDJ.get(Integer.valueOf(item.getUser()));
|
XcdjJwjtParam param = usersXSDJ.get(Integer.valueOf(item.getUser()));
|
||||||
|
if(param != null){
|
||||||
item.setXcdj(param.getXcdj());
|
item.setXcdj(param.getXcdj());
|
||||||
item.setJwjtbz(param.getJwjtbz());
|
item.setJwjtbz(param.getJwjtbz());
|
||||||
item.setSxbzhjbz(param.getSxbzhj());
|
item.setSxbzhjbz(param.getSxbzhj());
|
||||||
|
}else{
|
||||||
|
item.setXcdj("");
|
||||||
|
item.setJwjtbz(0.0);
|
||||||
|
item.setSxbzhjbz(0.0);
|
||||||
|
}
|
||||||
// 方案一:
|
// 方案一:
|
||||||
// item.setSxbzhjrbz(param.getSxbzhj()/21.75);
|
// item.setSxbzhjrbz(param.getSxbzhj()/21.75);
|
||||||
// 方案二:不考虑公务回国工作日天数 四项补贴合计天标准:按照四项补贴合计÷(境外应常驻天数+国内应出勤天数)
|
// 方案二:不考虑公务回国工作日天数 四项补贴合计天标准:按照四项补贴合计÷(境外应常驻天数+国内应出勤天数)
|
||||||
if(!Objects.equals(param.getSxbzhj(),0.0)){
|
if(param != null && !Objects.equals(param.getSxbzhj(),0.0)){
|
||||||
item.setSxbzhjrbz(param.getSxbzhj() / (item.getJwycq() + item.getGngzts()));
|
item.setSxbzhjrbz(param.getSxbzhj() / (item.getJwycq() + item.getGngzts()));
|
||||||
}else {
|
}else {
|
||||||
item.setSxbzhjrbz(0.0);
|
item.setSxbzhjrbz(0.0);
|
||||||
|
|
@ -425,6 +432,10 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
|
||||||
// item.setGwhgWorkdays(workDays);
|
// item.setGwhgWorkdays(workDays);
|
||||||
// }
|
// }
|
||||||
});
|
});
|
||||||
|
}catch (Exception e){
|
||||||
|
baseBean.writeLog("eeeeeeeeeeeeeeee");
|
||||||
|
baseBean.writeLog(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setLastMinute(Calendar c){
|
private void setLastMinute(Calendar c){
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.engine.bjcj220907.utils;
|
package com.engine.bjcj220907.utils;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
|
@ -93,4 +94,45 @@ public class BjcjCommonUtils {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isBeforeMonth(Date a,Date b){
|
||||||
|
|
||||||
|
try {
|
||||||
|
if(a == null || b == null){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
|
||||||
|
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
|
Date formatA = sdf.parse(sdf2.format(a));
|
||||||
|
Date formatB = sdf.parse(sdf2.format(b));
|
||||||
|
if( formatA.before(formatB) ){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}catch (Exception e){
|
||||||
|
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isEqualsMonth(Date a,Date b){
|
||||||
|
|
||||||
|
try {
|
||||||
|
if(a == null || b == null){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
|
||||||
|
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
|
Date formatA = sdf.parse(sdf2.format(a));
|
||||||
|
Date formatB = sdf.parse(sdf2.format(b));
|
||||||
|
if( formatA.equals(formatB) ){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}catch (Exception e){
|
||||||
|
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,10 @@
|
||||||
<map>
|
<map>
|
||||||
<entry key="com.zeroturnaround.jrebel.FormatVersion" value="7.0.0" />
|
<entry key="com.zeroturnaround.jrebel.FormatVersion" value="7.0.0" />
|
||||||
<entry key="jrebelEnabled" value="true" />
|
<entry key="jrebelEnabled" value="true" />
|
||||||
<entry key="lastExternalPluginCheckTime" value="1672968433903" />
|
<entry key="lastExternalPluginCheckTime" value="1675584210944" />
|
||||||
</map>
|
</map>
|
||||||
</option>
|
</option>
|
||||||
<option name="version" value="11" />
|
<option name="version" value="13" />
|
||||||
</configuration>
|
</configuration>
|
||||||
</facet>
|
</facet>
|
||||||
</component>
|
</component>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue