计算出所有有常驻信息的境外应出勤天数、获取所有员工考勤所属月的薪酬等级及所对应的境外津贴标准

This commit is contained in:
Harryxzy 2022-09-27 10:36:21 +08:00
parent 5b541bbf35
commit bfd78019a9
3 changed files with 53 additions and 35 deletions

View File

@ -1,13 +1,11 @@
package com.engine.bjcj220907.dao;
import com.engine.bjcj220907.entity.XcdjJwjtParam;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* @author Harryxzy
@ -25,39 +23,23 @@ public class OverseasAllowanceDAO {
* @author Harryxzy
* @date 2022/9/26 17:43
*/
public Map<String, String> getXCDJByUsers(List<String> users,Calendar endAttendanceCal) {
public Map<Integer, XcdjJwjtParam> getXCDJByUsers(Calendar startAttendanceCal) {
RecordSet rs = new RecordSet();
StringBuilder sb =new StringBuilder();
if(users != null && users.size()>0){
sb = new StringBuilder("select z.xm,z.gj,z.xd,z.sxrq,d.xcdj,jxgz from uf_xczjbd z LEFT JOIN uf_xcdj d on d.gj=z.gj and d.xd=z.xd WHERE xm IN ( ");
for(int i=0;i<users.size();i++){
sb.append(users.get(i));
if(i+1 != users.size()){
sb.append(" , ");
}
}
sb.append(" ) order by sxrq desc");
}
rs.execute(sb.toString());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String sql ="select z.xm,z.gj,z.xd,z.sxrq,d.xcdj,jxgz from uf_xczjbd z LEFT JOIN uf_xcdj d on d.gj=z.gj and d.xd=z.xd where sxrq <= "
+sdf.format(startAttendanceCal.getTime())+" order by sxrq desc";
rs.execute(sql);
HashMap<Integer, XcdjJwjtParam> xcdj = new HashMap<>();
while (rs.next()){
try {
Date sxrq = sdf.parse(rs.getString("SXRQ"));
if(sxrq.before(endAttendanceCal.getTime())){
double jxgz = rs.getDouble("jxgz");
if(Math.abs(jxgz + 1.0) < 0.000000002){
jxgz=0.0;
}
// result.setYdjjjxjs(jxgz);
// result.setXcdj(rs.getString("xcdj"));
break;
}
}catch (Exception e){
baseBean.writeLog("计算考勤所属月员工的薪酬等级中日期parse失败");
int xm = rs.getInt("xm");
String xcdjStr = rs.getString("XCDJ");
double jwjtbz = rs.getDouble("jwjtbz");
if(!xcdj.containsKey(xm)){
XcdjJwjtParam build = XcdjJwjtParam.builder().xcdj(xcdjStr).jwjtbz(jwjtbz).build();
xcdj.put(xm,build);
}
}
return null;
return xcdj;
}

View File

@ -0,0 +1,33 @@
package com.engine.bjcj220907.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Harryxzy
* @date 2022/09/27 9:49
* @description 用于封装薪酬等级和对应的境外津贴
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class XcdjJwjtParam {
/**
* 用户名
*/
private Integer xm;
/**
* 薪酬等级
*/
private String xcdj;
/**
* 境外津贴标准
*/
private double jwjtbz;
}

View File

@ -5,6 +5,7 @@ import com.engine.bjcj220907.dao.OverseasAllowanceDAO;
import com.engine.bjcj220907.entity.JWJT;
import com.engine.bjcj220907.entity.JwCZInfo;
import com.engine.bjcj220907.entity.JwCZInfoDetail;
import com.engine.bjcj220907.entity.XcdjJwjtParam;
import com.engine.bjcj220907.service.OverseasAllowanceCountService;
import com.engine.bjcj220907.utils.BjcjCommonUtils;
import weaver.general.BaseBean;
@ -51,13 +52,15 @@ public class OverseasAllowanceCountServiceImpl implements OverseasAllowanceCount
Calendar startAttendanceCal = BjcjCommonUtils.getStartAttendanceCal(countCal.getTime());
// 考勤结束日期
Calendar endAttendanceCal = BjcjCommonUtils.getEndAttendanceCal(countCal.getTime());
baseBean.writeLog("将境外常驻信息格式化");
baseBean.writeLog("考勤开始日期:"+startAttendanceCal.getTime()+",考勤结束日期:"+endAttendanceCal);
// 如果用户在考勤周期内存在境外常驻信息则过滤出来并且计算当月应常驻天数
List<JWJT> results = getCZInfosAndCZDays(jwCZInfos, startAttendanceCal, endAttendanceCal);
baseBean.writeLog("如果用户在考勤周期内存在境外常驻信息则过滤出来,并且计算当月应常驻天数:"+results.size());
// 计算考勤所属月员工的薪酬等级
// 计算考勤所属月员工的薪酬等级获取相应的境外津贴标准
List<String> users = results.stream().map(i -> i.getUser()).collect(Collectors.toList());
Map<String,String> usersXSDJ = getOverseasAllowanceDAO().getXCDJByUsers(users,endAttendanceCal);
Map<Integer, XcdjJwjtParam> usersXSDJ = getOverseasAllowanceDAO().getXCDJByUsers(startAttendanceCal);
baseBean.writeLog("获取所有员工考勤所属月的薪酬等级及所对应的境外津贴标准:"+usersXSDJ.size());
//
}
/**