1、调整实际工时时长

2、状态为锁定时,手动同步及定时任务更新均不改变原来的数据
3、增加出差时长统计
东方骏驰
Chengliang 1 year ago
parent 98b7843757
commit 0a9c52769d

@ -23,6 +23,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.stream.Collectors;
/** /**
* @Author liang.cheng * @Author liang.cheng
@ -42,6 +43,7 @@ public class SignDataSummaryServiceImpl extends Service implements SignDataSumma
Map<String,Object> data = new HashMap<>(4); Map<String,Object> data = new HashMap<>(4);
DecimalFormat decimalFormat = new DecimalFormat("0.00"); DecimalFormat decimalFormat = new DecimalFormat("0.00");
RecordSetTrans rst = new RecordSetTrans(); RecordSetTrans rst = new RecordSetTrans();
RecordSet rs = new RecordSet();
List<SignDataPO> list = buildSignData(signDataParams); List<SignDataPO> list = buildSignData(signDataParams);
ResourceComInfo rcom = new ResourceComInfo(); ResourceComInfo rcom = new ResourceComInfo();
int corePoolSize = 5; int corePoolSize = 5;
@ -56,13 +58,11 @@ public class SignDataSummaryServiceImpl extends Service implements SignDataSumma
String resourceId = String.valueOf(signDataPo.getResourceId()); String resourceId = String.valueOf(signDataPo.getResourceId());
Integer signMins = Util.getIntValue(signDataPo.getSignMins(),0); Integer signMins = Util.getIntValue(signDataPo.getSignMins(),0);
double hours = (double) signMins / 60; double hours = (double) signMins / 60;
double workHours = 0; double workHours;
if(hours>=4 && hours<8){ if (hours <= 4.0) {
workHours = 4; workHours = hours;
}else if(hours>=8 && hours<11){ } else {
workHours = 8; workHours = Math.floor(hours - 1.0);
}else if(hours>=11){
workHours = 11;
} }
signDataPo.setCompany(Integer.parseInt(rcom.getSubCompanyID(resourceId))); signDataPo.setCompany(Integer.parseInt(rcom.getSubCompanyID(resourceId)));
signDataPo.setDepartment(Integer.parseInt(rcom.getDepartmentID(resourceId))); signDataPo.setDepartment(Integer.parseInt(rcom.getDepartmentID(resourceId)));
@ -81,12 +81,24 @@ public class SignDataSummaryServiceImpl extends Service implements SignDataSumma
rst.setAutoCommit(false); rst.setAutoCommit(false);
if (CollectionUtils.isNotEmpty(signDataParams.getIds())) { if (CollectionUtils.isNotEmpty(signDataParams.getIds())) {
for (SignDataPO item : list) { for (SignDataPO item : list) {
rst.executeUpdate("update uf_kqgs set qdrq = ?,qdsj = ?,qtrq = ?,qtsj = ?,dkgssc = ?,sjgssc = ? where id = ?",item.getSignInDate(), rst.executeUpdate("update uf_kqgs set qdrq = ?,qdsj = ?,qtrq = ?,qtsj = ?,dkgssc = ?,sjgssc = ? where id = ? and zt = 0",item.getSignInDate(),
item.getSignInTime(),item.getSignOutDate(),item.getSignOutTime(),item.getSignHours(),item.getWorkHours(),item.getId()); item.getSignInTime(),item.getSignOutDate(),item.getSignOutTime(),item.getSignHours(),item.getWorkHours(),item.getId());
} }
}else { }else {
//同一考勤日期执行多次 //同一考勤日期执行多次
rst.executeUpdate("delete from uf_kqgs where kqrq = ?",signDataParams.getAttendanceDate()); rst.executeUpdate("delete from uf_kqgs where kqrq = ? and zt = 0",signDataParams.getAttendanceDate());
//获取锁定状态数据
List<Integer> idList = new ArrayList<>();
rs.executeQuery(" select xm from uf_kqgs where kqrq = ?",signDataParams.getAttendanceDate());
while (rs.next()) {
idList.add(Util.getIntValue(rs.getString("xm")));
}
list = list.stream()
.filter(p -> !idList.contains(p.getResourceId()))
.collect(Collectors.toList());
for (SignDataPO item : list) { for (SignDataPO item : list) {
rst.executeUpdate("insert into uf_kqgs(formmodeid,xm,kqy,kqrq,zt,fb,bm,gw,qdrq,qdsj,qtrq,qtsj,dkgssc,sjgssc) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)",signDataParams.getFormModeId(),item.getResourceId(), rst.executeUpdate("insert into uf_kqgs(formmodeid,xm,kqy,kqrq,zt,fb,bm,gw,qdrq,qdsj,qtrq,qtsj,dkgssc,sjgssc) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)",signDataParams.getFormModeId(),item.getResourceId(),
item.getAttendanceMonth(),item.getAttendanceDate(),item.getStatus(),item.getCompany(),item.getDepartment(), item.getAttendanceMonth(),item.getAttendanceDate(),item.getStatus(),item.getCompany(),item.getDepartment(),

@ -9,6 +9,23 @@ package test;
public class MainTest { public class MainTest {
public static void main(String[] args) { public static void main(String[] args) {
double punchInHours = 11.87; // 打卡工时时长为 11.87
double actualWorkHours = calculateActualWorkHours(punchInHours);
System.out.println("实际工时时长为:" + actualWorkHours + "小时");
double punchInHours2 = 3.57; // 打卡工时时长为 3.5
double actualWorkHours2 = calculateActualWorkHours(punchInHours2);
System.out.println("实际工时时长为:" + actualWorkHours2 + "小时");
}
public static double calculateActualWorkHours(double punchInHours) {
double adjustedHours;
if (punchInHours <= 4.0) {
adjustedHours = punchInHours;
} else {
adjustedHours = Math.floor(punchInHours - 1.0);
}
return adjustedHours;
} }
} }

@ -34,6 +34,9 @@ public class KqMonthDataPO {
private Double zgs; private Double zgs;
private Double ccxs;
} }

@ -55,23 +55,28 @@ public class KqMonthReportSynJob extends BaseCronJob {
Map<String,Object> signData = getSignData(fromDate,toDate); Map<String,Object> signData = getSignData(fromDate,toDate);
RecordSet rs = new RecordSet(); RecordSet rs = new RecordSet();
String sql = " select a.id,a.departmentid,a.jobtitle,a.status from hrmresource a,kq_format_total b " + String sql = " select a.id,a.departmentid,a.jobtitle,a.status, from hrmresource a,kq_format_total b " +
" where a.id= b.resourceid and b.kqdate >=? and b.kqdate <=? " + " where a.id= b.resourceid and b.kqdate >=? and b.kqdate <=? " +
" and a.subcompanyid1 =6 " + " and a.subcompanyid1 =6 " +
" group by a.id,a.departmentid,a.jobtitle,a.status "; " group by a.id,a.departmentid,a.jobtitle,a.status ";
rs.executeQuery(sql,fromDate,toDate); rs.executeQuery(sql,fromDate,toDate);
while(rs.next()){ while(rs.next()){
String userid = Util.null2String(rs.getString("id")); String userid = Util.null2String(rs.getString("id"));
String departmentid = Util.null2String(rs.getString("departmentid")); String departmentid = Util.null2String(rs.getString("departmentid"));
String jobtitle = Util.null2String(rs.getString("jobtitle")); String jobtitle = Util.null2String(rs.getString("jobtitle"));
String status = Util.null2String(rs.getString("status")); String status = Util.null2String(rs.getString("status"));
double psjbbdx = Util.getDoubleValue(KQDurationCalculatorUtil.getDurationRound(Util.null2String(flowData.get(userid+"|workingDayOvertime_nonleave"))),0); double psjbbdx = Util.getDoubleValue(KQDurationCalculatorUtil.getDurationRound(Util.null2String(flowData.get(userid+"|workingDayOvertime_nonleave"))),0);
double xxrjbbdx = Util.getDoubleValue(KQDurationCalculatorUtil.getDurationRound(Util.null2String(flowData.get(userid+"|restDayOvertime_nonleave"))),0); double xxrjbbdx = Util.getDoubleValue(KQDurationCalculatorUtil.getDurationRound(Util.null2String(flowData.get(userid+"|restDayOvertime_nonleave"))),0);
double jjrjbbdx = Util.getDoubleValue(KQDurationCalculatorUtil.getDurationRound(Util.null2String(flowData.get(userid+"|holidayOvertime_nonleave"))),0); double jjrjbbdx = Util.getDoubleValue(KQDurationCalculatorUtil.getDurationRound(Util.null2String(flowData.get(userid+"|holidayOvertime_nonleave"))),0);
double dkzgs = Util.getDoubleValue(Util.null2String(signData.get(userid)),0); double dkzgs = Util.getDoubleValue(Util.null2String(signData.get(userid)),0);
double zgs = psjbbdx+xxrjbbdx+jjrjbbdx+dkzgs; double zgs = psjbbdx+xxrjbbdx+jjrjbbdx+dkzgs;
//获取出差时长
double ccxs = Util.getDoubleValue(KQDurationCalculatorUtil.getDurationRound(Util.null2String(flowData.get(userid+"|businessLeave"))),0);
KqMonthDataPO kqMonthDataPO = KqMonthDataPO.builder() KqMonthDataPO kqMonthDataPO = KqMonthDataPO.builder()
.resourceId(userid) .resourceId(userid)
.status(status) .status(status)
@ -82,6 +87,7 @@ public class KqMonthReportSynJob extends BaseCronJob {
.jjrjbbdx(jjrjbbdx) .jjrjbbdx(jjrjbbdx)
.dkzgs(dkzgs) .dkzgs(dkzgs)
.zgs(zgs) .zgs(zgs)
.ccxs(ccxs)
.build(); .build();
log.writeLog("KqMonthReportSynJob==>"+JSON.toJSONString(kqMonthDataPO)); log.writeLog("KqMonthReportSynJob==>"+JSON.toJSONString(kqMonthDataPO));
@ -157,13 +163,15 @@ public class KqMonthReportSynJob extends BaseCronJob {
Double xxrjbbdx = kqMonthDataPO.getXxrjbbdx(); Double xxrjbbdx = kqMonthDataPO.getXxrjbbdx();
Double jjrjbbdx = kqMonthDataPO.getJjrjbbdx(); Double jjrjbbdx = kqMonthDataPO.getJjrjbbdx();
Double zgs = kqMonthDataPO.getZgs(); Double zgs = kqMonthDataPO.getZgs();
Double ccxs = kqMonthDataPO.getCcxs();
boolean exist = isExist(month,kqMonthDataPO.getResourceId()); boolean exist = isExist(month,kqMonthDataPO.getResourceId());
if(exist){ if(exist){
//更新 //更新
String updateSql = " update uf_ydgs set dkzgs=?, psjbbdx=?, xxrjbbdx=?, jjrjbbdx=?, zgs=?, zt=? where xm=? and kqy=? "; String updateSql = " update uf_ydgs set dkzgs=?, psjbbdx=?, xxrjbbdx=?, jjrjbbdx=?, zgs=?, zt=?, ccxs=? where xm=? and kqy=? ";
rs.executeUpdate(updateSql,new Object[]{dkzgs,psjbbdx,xxrjbbdx,jjrjbbdx,zgs,zt,xm,month}); rs.executeUpdate(updateSql,new Object[]{dkzgs,psjbbdx,xxrjbbdx,jjrjbbdx,zgs,zt,ccxs,xm,month});
}else{ }else{
//插入 //插入
@ -171,10 +179,10 @@ public class KqMonthReportSynJob extends BaseCronJob {
String modedatacreatedate = TimeUtil.getCurrentDateString(); String modedatacreatedate = TimeUtil.getCurrentDateString();
String modedatacreatetime = TimeUtil.getOnlyCurrentTimeString(); String modedatacreatetime = TimeUtil.getOnlyCurrentTimeString();
String insertSql = " insert into uf_ydgs(xm,bm,gw,kqy,dkzgs,psjbbdx,xxrjbbdx,jjrjbbdx,zgs,zt,"+ String insertSql = " insert into uf_ydgs(xm,bm,gw,kqy,dkzgs,psjbbdx,xxrjbbdx,jjrjbbdx,zgs,zt,ccxs"+
"formmodeid,modedatacreater,modedatacreatedate,modedatacreatetime,modeuuid) " + "formmodeid,modedatacreater,modedatacreatedate,modedatacreatetime,modeuuid) " +
" values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) "; " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ";
rs.executeUpdate(insertSql,new Object[]{xm,bm,gw,month,dkzgs,psjbbdx,xxrjbbdx,jjrjbbdx,zgs,zt, rs.executeUpdate(insertSql,new Object[]{xm,bm,gw,month,dkzgs,psjbbdx,xxrjbbdx,jjrjbbdx,zgs,zt,ccxs,
formmodeid,modedatacreater,modedatacreatedate,modedatacreatetime,modeuuid}); formmodeid,modedatacreater,modedatacreatedate,modedatacreatetime,modeuuid});
rs.executeQuery("select id from uf_ydgs where modeuuid=?",modeuuid); rs.executeQuery("select id from uf_ydgs where modeuuid=?",modeuuid);

Loading…
Cancel
Save