@ -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 开 始 时 间