考勤-出勤结果分析过程,加班结果转假期余额时,只处理核算单位逻辑不处理核算量逻辑

main
sy 9 months ago
parent 9844354412
commit ab1fed4e44

@ -154,7 +154,9 @@ public class SaveWorkOverTimeCmd extends AbstractCommonCommand<Map<String,Object
log.debug("最终加班时长: {}",jbsc);
workOverTimeItems.put("item",workTimeBeLateItems.get(0).get("key"));
double itemduration = Utils.getItemdurationDown(workOverTimeHsl,workOverTimeHsdw,Long.valueOf(Math.round(jbsc)).intValue(),AccountingUnitEnum.MINUTES);
//20240914逻辑修改加班转调休中加班时长、转入假期时长不进行核算量相关逻辑处理
// double itemduration = Utils.getItemdurationDown(workOverTimeHsl,workOverTimeHsdw,Long.valueOf(Math.round(jbsc)).intValue(),AccountingUnitEnum.MINUTES);
double itemduration = Utils.getItemdurationDownWithoutHsl(workOverTimeHsdw,Long.valueOf(Math.round(jbsc)).intValue(),AccountingUnitEnum.MINUTES);
workOverTimeItems.put("itemduration",itemduration);
workOverTimeItems.put("jbsc",jbsc);
@ -199,8 +201,9 @@ public class SaveWorkOverTimeCmd extends AbstractCommonCommand<Map<String,Object
insertHoliDayParam.put("lylx","4");
insertHoliDayParam.put("lyjblx",workTimeBeLateItems.get(0).get("key"));
Map<String,Object> holidayItem = getHolidayItem(workTimeBeLateItems.get(0).get("zrdjb").toString(),attendanceItems);
double ktsc = Utils.getItemdurationDown(Double.valueOf(holidayItem.get("hsl").toString()),holidayItem.get("hsdw").toString(),Double.valueOf(jbsc).intValue(),AccountingUnitEnum.MINUTES);
//20240914逻辑修改加班转调休中加班时长、转入假期时长不进行核算量相关逻辑处理
// double ktsc = Utils.getItemdurationDown(Double.valueOf(holidayItem.get("hsl").toString()),holidayItem.get("hsdw").toString(),Double.valueOf(jbsc).intValue(),AccountingUnitEnum.MINUTES);
double ktsc = Utils.getItemdurationDownWithoutHsl(holidayItem.get("hsdw").toString(),Double.valueOf(jbsc).intValue(),AccountingUnitEnum.MINUTES);
insertHoliDayParam.put("ktsc",ktsc);
insertHoliDayParam.put("yxsc",0);

@ -35,7 +35,7 @@ public class GetAskForLeaveRecordListCmd extends AbstractCommonCommand<Map<Strin
String endDate = Util.null2String(params.get("endDate"));
log.debug("targetUserId : {}, businessTripsType : {}, startDate : {}, endDate : {}", targetUserId, businessTripsType, startDate, endDate);
String detailSql = "select a.id,a.cxqj,a.ksrq,a.kssj,a.jsrq,a.jssj,a.qjsc,a.qtj,a.btj,a.cxsm from uf_jcl_kq_qjjl_dt1 a where (a.cxqj is null or a.cxqj<>1) and a.qjry =? and a.ksrq >= ? and a.ksrq <= ? and a.jqlx=?";
String detailSql = "select a.id,a.cxqj,a.ksrq,a.kssj,a.jsrq,a.jssj,a.qjsc,a.qtj,a.btj,a.cxsm from uf_jcl_kq_qjjl_dt1 a left join uf_jcl_kq_qjjl b on a.mainid=b.id where b.jlzt = 1 and (a.cxqj is null or a.cxqj<>1) and a.qjry =? and a.ksrq >= ? and a.ksrq <= ? and a.jqlx=?";
List<Map<String, Object>> detailList = DbTools.getSqlToList(detailSql,targetUserId,startDate,endDate,businessTripsType);
if (detailList.size() > 0) {
retmap.put("result", detailList);

@ -330,7 +330,7 @@ public class Utils<T> {
double itemDuration = 0.0;
BigDecimal durationBig = new BigDecimal(duration);
BigDecimal hslBig = new BigDecimal(hsl);
if (AccountingUnitEnum.DAY.getKey().equals(hsdw) || AccountingUnitEnum.ONCE.getKey().equals(hsdw)){
if (AccountingUnitEnum.ONCE.getKey().equals(hsdw)){
itemDuration = hsl;
}else if (AccountingUnitEnum.HOUR.getKey().equals(hsdw)){
if (unit.equals(AccountingUnitEnum.MINUTES)){
@ -376,10 +376,74 @@ public class Utils<T> {
itemDuration = durationBig.multiply(hslBig).divide(hslBig,BigDecimal.ROUND_DOWN).doubleValue();
}
}
}else if (AccountingUnitEnum.DAY.getKey().equals(hsdw)){
//默认一天8小时
if (unit.equals(AccountingUnitEnum.MINUTES)){
double durationDay = duration/480.0;
durationBig = new BigDecimal(durationDay);
if ((durationDay/hsl) > Math.floor(durationDay/hsl)){
durationBig = new BigDecimal(Math.floor(durationDay/hsl));
itemDuration = durationBig.multiply(hslBig).doubleValue();
}else {
itemDuration = durationBig.multiply(hslBig).divide(hslBig,BigDecimal.ROUND_DOWN).doubleValue();
}
}else if (unit.equals(AccountingUnitEnum.HOUR)){
double durationDay = duration/8.0;
durationBig = new BigDecimal(durationDay);
if ((durationDay/hsl) > Math.floor(durationDay/hsl)){
durationBig = new BigDecimal(Math.floor(durationDay/hsl));
itemDuration=durationBig.multiply(hslBig).doubleValue();
}else {
itemDuration = durationBig.multiply(hslBig).divide(hslBig,BigDecimal.ROUND_DOWN).doubleValue();
}
}
}
return itemDuration;
}
/**
*
* @param hsdw
* @param duration
* @param unit
* @return
*/
public static double getItemdurationDownWithoutHsl(String hsdw,int duration, AccountingUnitEnum unit){
String itemDuration = "0.00";
if (AccountingUnitEnum.ONCE.getKey().equals(hsdw)){
itemDuration = "1";
}else if (AccountingUnitEnum.HOUR.getKey().equals(hsdw)){
if (unit.equals(AccountingUnitEnum.MINUTES)){
double durationHour = duration/60.0;
itemDuration = String.format("%.2f", durationHour);
}else if (unit.equals(AccountingUnitEnum.HOUR)){
itemDuration = String.valueOf(duration);
}
}else if (AccountingUnitEnum.MINUTES.getKey().equals(hsdw)){
if (unit.equals(AccountingUnitEnum.MINUTES)){
itemDuration = String.valueOf(duration);
}else if (unit.equals(AccountingUnitEnum.HOUR)){
int durationMinute = duration*60;
itemDuration = String.valueOf(durationMinute);
}
}else if (AccountingUnitEnum.DAY.getKey().equals(hsdw)){
//默认一天8小时
if (unit.equals(AccountingUnitEnum.MINUTES)){
double durationDay = duration/480.0;
itemDuration = String.format("%.2f", durationDay);
}else if (unit.equals(AccountingUnitEnum.HOUR)){
double durationDay = duration/8.0;
itemDuration = String.format("%.2f", durationDay);
}
}
return Double.parseDouble(itemDuration);
}
/**
*
* @param kssj

Loading…
Cancel
Save