艰苦地区补贴-1

This commit is contained in:
Harryxzy 2022-09-28 17:36:07 +08:00
parent 2ff05c2063
commit 33a1122a78
6 changed files with 79 additions and 24 deletions

View File

@ -1,5 +1,6 @@
package com.engine.bjcj220907.dao;
import com.engine.bjcj220907.entity.JKDQBT;
import com.engine.bjcj220907.entity.JwCZInfoDetail;
import com.engine.bjcj220907.entity.XcdjJwjtParam;
import weaver.conn.RecordSet;
@ -26,8 +27,10 @@ public class OverseasAllowanceDAO {
*/
public List<JwCZInfoDetail> getCZInfo() {
RecordSet rs = new RecordSet();
String sql="select xm,jwgzksrq,jwgzjsrq,lx,jsglts,btbz " +
//TODO 修改sqluf_bjcjtestgl
String sql="select xm,jwgzksrq,jwgzjsrq,lx,jsglts,g.btbz,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 "+
"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";
@ -42,6 +45,11 @@ public class OverseasAllowanceDAO {
Date jwgzjsrq=null;
double jsglts = rs.getDouble("jsglts");
double btbz = rs.getDouble("btbz");
String jwgzdw1 = rs.getString("JWGZDW1");
double dqbtbz = rs.getDouble("DQBTBZ");
if(dqbtbz == -1){
dqbtbz =0.0;
}
if(btbz == -1){
// 境外工龄未满1年
btbz=0.0;
@ -52,6 +60,9 @@ public class OverseasAllowanceDAO {
if(jwgzjsrqStr!=null && jwgzjsrqStr.length()!=0){
jwgzjsrq = sdf.parse(jwgzjsrqStr);
}
// 如果lx=0则补助天数为 自然日 lx=1 补助天数为区间间隔
JKDQBT.builder().lx(rs.getInt("lx")).jkdqbtbz(dqbtbz).jkdq(Integer.valueOf(jwgzdw1)).build();
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){

View File

@ -0,0 +1,43 @@
package com.engine.bjcj220907.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Harryxzy
* @date 2022/09/28 15:58
* @description 艰苦地区补助
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class JKDQBT {
/**
* 天数
*/
private double days;
/**
* 类型 0开始常驻
*/
private Integer lx;
/**
* 艰苦地区补贴标准天标准
*/
private double jkdqbtbz;
/**
* 艰苦地区
*/
private Integer jkdq;
/**
* 艰苦地区补贴总和
*/
private double jkdqbt;
}

View File

@ -6,6 +6,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
/**
* @author Harryxzy
@ -88,8 +89,16 @@ public class JWJT {
*/
private double jwgl;
/**
* 艰苦地区补贴总和
*/
private double jkdqbtzh;
/**
* 艰苦地区补贴
*/
private List<JKDQBT> jkdqbts;
}

View File

@ -1,9 +0,0 @@
package com.engine.bjcj220907.entity;
/**
* @author Harryxzy
* @date 2022/09/28 15:58
* @description
*/
public class jkdqbt {
}

View File

@ -27,6 +27,6 @@ public interface OverseasAllowanceCountService {
* @author Harryxzy
* @date 2022/9/26 16:29
*/
List<JWJT> getCZInfosAndCZDays(List<JwCZInfo> jwCZInfos, Calendar startAttendanceCal, Calendar endAttendanceCal);
List<JwCZInfo> getCZInfosAndCZDays(List<JwCZInfo> jwCZInfos, Calendar startAttendanceCal, Calendar endAttendanceCal,List<JWJT> results);
}

View File

@ -22,6 +22,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
BaseBean baseBean = new BaseBean();
public MonthBonusDAO getMonthBonusDAO(){
return new MonthBonusDAO();
}
@ -56,7 +57,8 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
List<JwCZInfo> jwCZInfos = formatJwCZInfo(czInfos,startAttendanceCal,endAttendanceCal);
baseBean.writeLog("将境外常驻信息格式化");
// 如果用户在考勤周期内存在境外常驻信息则过滤出来并且计算当月应常驻天数
List<JWJT> results = getCZInfosAndCZDays(jwCZInfos, startAttendanceCal, endAttendanceCal);
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());
@ -82,16 +84,15 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
* @author Harryxzy
* @date 2022/9/26 16:29
*/
public List<JWJT> getCZInfosAndCZDays(List<JwCZInfo> jwCZInfos,Calendar startAttendanceCal,Calendar endAttendanceCal){
ArrayList<JWJT> results = new ArrayList<>();
jwCZInfos.stream().filter(czInfo -> {
public List<JwCZInfo> getCZInfosAndCZDays(List<JwCZInfo> jwCZInfos,Calendar startAttendanceCal,Calendar endAttendanceCal,List<JWJT> results ){
List<JwCZInfo> collect = jwCZInfos.stream().filter(czInfo -> {
List<JwCZInfoDetail> czDetails = czInfo.getInfos();
// 用于存储计算到哪一天的日期
Calendar c = Calendar.getInstance();
c.setTime(endAttendanceCal.getTime());
Calendar[] countDay = {c};
int[] ycq = {0};
int[] gnycq ={0};
int[] gnycq = {0};
List<Date> details = new ArrayList<>();
for (int i = 0; i < czDetails.size(); i++) {
JwCZInfoDetail detail = czDetails.get(i);
@ -131,22 +132,22 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
aCal.set(Calendar.MINUTE, 0);
aCal.set(Calendar.SECOND, 0);
aCal.set(Calendar.MILLISECOND, 0);
if(details.size()==0 && countDay[0].getTime().equals(endAttendanceCal.getTime())){
if (details.size() == 0 && countDay[0].getTime().equals(endAttendanceCal.getTime())) {
// 该考勤周期内员工没有境外常驻信息
return false;
}
while (startAttendanceCal.getTime().before(aCal.getTime()) || startAttendanceCal.getTime().equals(aCal.getTime())){
if(details.contains(aCal.getTime())){
while (startAttendanceCal.getTime().before(aCal.getTime()) || startAttendanceCal.getTime().equals(aCal.getTime())) {
if (details.contains(aCal.getTime())) {
// 存在境外记录
ycq[0]++;
aCal.add(Calendar.DATE,-1);
}else{
aCal.add(Calendar.DATE, -1);
} else {
// 没有境外记录判断是否是工作日
if( (aCal.get(Calendar.DAY_OF_WEEK) != 1) && (aCal.get(Calendar.DAY_OF_WEEK)!=7) ){
if ((aCal.get(Calendar.DAY_OF_WEEK) != 1) && (aCal.get(Calendar.DAY_OF_WEEK) != 7)) {
// 是工作日
gnycq[0]++;
}
aCal.add(Calendar.DATE,-1);
aCal.add(Calendar.DATE, -1);
}
}
JWJT build = JWJT.builder().user(czInfo.getXm()).jwycq(ycq[0]).gngzts(gnycq[0]).kqMonth(endAttendanceCal.getTime()).build();
@ -156,7 +157,7 @@ public class OverseasAllowanceCountServiceImpl extends Service implements Overse
}
return false;
}).collect(Collectors.toList());
return results;
return collect;
}
/**