@ -274,6 +274,8 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
/**卡点集合*/
List < ClockPointDTO > clcokInTimeData = Lists . newArrayList ( ) ;
List < Map < String , Object > > restScheduleList = scheduleResult . stream ( ) . filter ( e - > ( ClassSegmentTypeEnum . REST_AND_DINE . getKey ( ) . equals ( e . get ( "bdlx" ) ) | | ClassSegmentTypeEnum . REST_PERIOD . getKey ( ) . equals ( e . get ( "bdlx" ) )
| | ClassSegmentTypeEnum . DINING_PERIOD . getKey ( ) . equals ( e . get ( "bdlx" ) ) ) & & CheckBoxEnum . CHECKED . getKey ( ) . equals ( e . get ( "dtsfdx" ) ) ) . collect ( Collectors . toList ( ) ) ;
for ( Map < String , Object > needClockIn : scheduleResult ) {
/**非请假外出开始打卡逻辑处理*/
@ -324,8 +326,7 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
/ * *
* 计 算 休 息 时 间 段 的 弹 性 上 下 班
* /
List < Map < String , Object > > restScheduleList = scheduleResult . stream ( ) . filter ( e - > ( ClassSegmentTypeEnum . REST_AND_DINE . getKey ( ) . equals ( e . get ( "bdlx" ) ) | | ClassSegmentTypeEnum . REST_PERIOD . getKey ( ) . equals ( e . get ( "bdlx" ) )
| | ClassSegmentTypeEnum . DINING_PERIOD . getKey ( ) . equals ( e . get ( "bdlx" ) ) ) & & CheckBoxEnum . CHECKED . getKey ( ) . equals ( e . get ( "dtsfdx" ) ) ) . collect ( Collectors . toList ( ) ) ;
if ( restScheduleList . size ( ) > 0 ) {
flexibleRestClass ( restScheduleList , clcokInTimeData , scheduleResult ) ;
}
@ -981,6 +982,7 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
//打卡时间大于等于最早打卡时间
timeType = ClockPointEnum . BEFORE ;
}
}
if ( ClockPointEnum . EMPTY . equals ( timeType ) & & ksdkNearestClcokInTime . get ( ClockPointEnum . AFTER ) ! = null ) {
String clockInTime = ksdkNearestClcokInTime . get ( ClockPointEnum . AFTER ) . get ( "signdate" ) + " " + ksdkNearestClcokInTime . get ( ClockPointEnum . AFTER ) . get ( "signtime" ) ;
@ -989,6 +991,7 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
//打卡时间小于结束时间
timeType = ClockPointEnum . AFTER ;
}
}
return timeType ;
}
@ -1015,16 +1018,39 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
}
if ( ClockPointEnum . EMPTY . equals ( timeType ) & & jsdkNearestClcokInTime . get ( ClockPointEnum . AFTER ) ! = null ) {
String clockInTime = jsdkNearestClcokInTime . get ( ClockPointEnum . AFTER ) . get ( "signdate" ) + " " + jsdkNearestClcokInTime . get ( ClockPointEnum . AFTER ) . get ( "signtime" ) ;
if ( DateUtil . getTime ( clockInTime ) . compareTo ( DateUtil . getTime ( DateUtil . AfterMinutes ( maxelasticTime , thdkfzs ) ) ) < = 0 & &
( getNextClockTime ( needClockDateList , dtjssj ) . equals ( "" ) | | DateUtil . getTime ( clockInTime ) . compareTo ( DateUtil . getTime ( getNextClockTime ( needClockDateList , dtjssj ) ) ) < 0 ) ) {
if ( dtjssj . equals ( maxelasticTime ) ) {
if ( DateUtil . getTime ( clockInTime ) . compareTo ( DateUtil . getTime ( DateUtil . AfterMinutes ( maxelasticTime , thdkfzs ) ) ) < = 0 & &
( getNextClockTime ( needClockDateList , dtjssj ) . equals ( "" ) | | DateUtil . getTime ( clockInTime ) . compareTo ( DateUtil . getTime ( getNextClockTime ( needClockDateList , dtjssj ) ) ) < 0 ) ) {
timeType = ClockPointEnum . AFTER ;
}
} else {
//弹性逻辑
if ( DateUtil . getTime ( clockInTime ) . compareTo ( DateUtil . getTime ( DateUtil . AfterMinutes ( maxelasticTime , thdkfzs ) ) ) < = 0 & &
( getNextClockTime ( needClockDateList , dtjssj ) . equals ( "" ) | | DateUtil . getTime ( clockInTime ) . compareTo ( DateUtil . getTime ( getNextClockTime ( needClockDateList , dtjssj ) ) ) < 0 | |
DateUtil . getTime ( maxelasticTime ) . compareTo ( DateUtil . getTime ( getNextClockTime ( needClockDateList , dtjssj ) ) ) > = 0 ) ) {
timeType = ClockPointEnum . AFTER ;
}
}
if ( DateUtil . getTime ( clockInTime ) . compareTo ( DateUtil . getTime ( DateUtil . AfterMinutes ( maxelasticTime , thdkfzs ) ) ) < = 0 ) {
timeType = ClockPointEnum . AFTER ;
}
}
if ( ClockPointEnum . EMPTY . equals ( timeType ) & & jsdkNearestClcokInTime . get ( ClockPointEnum . BEFORE ) ! = null ) {
String clockInTime = jsdkNearestClcokInTime . get ( ClockPointEnum . BEFORE ) . get ( "signdate" ) + " " + jsdkNearestClcokInTime . get ( ClockPointEnum . BEFORE ) . get ( "signtime" ) ;
if ( getBeforeClockTime ( needClockDateList , dtjssj ) . equals ( "" ) | | DateUtil . getTime ( clockInTime ) . compareTo ( DateUtil . getTime ( getBeforeClockTime ( needClockDateList , dtjssj ) ) ) > 0 ) {
timeType = ClockPointEnum . BEFORE ;
if ( dtjssj . equals ( maxelasticTime ) ) {
if ( getBeforeClockTime ( needClockDateList , dtjssj ) . equals ( "" ) | | DateUtil . getTime ( clockInTime ) . compareTo ( DateUtil . getTime ( getBeforeClockTime ( needClockDateList , dtjssj ) ) ) > 0 ) {
timeType = ClockPointEnum . BEFORE ;
}
} else {
int betweenTime = DateUtil . getBetWeenMinutes ( dtjssj , maxelasticTime ) ;
if ( getBeforeClockTime ( needClockDateList , dtjssj ) . equals ( "" ) | | DateUtil . getTime ( clockInTime ) . compareTo ( DateUtil . getTime ( getBeforeClockTime ( needClockDateList , dtjssj ) ) ) > 0
| | DateUtil . getTime ( clockInTime ) . compareTo ( DateUtil . getTime ( DateUtil . beforeMinutes ( dtjssj , betweenTime ) ) ) > = 0 ) {
timeType = ClockPointEnum . BEFORE ;
}
}
}
return timeType ;
}