@ -8,6 +8,7 @@ import com.engine.jucailinkq.attendance.attendanceplan.service.impl.AttendancePl
import com.engine.jucailinkq.attendance.workflow.service.AllowanceService ;
import com.engine.jucailinkq.attendance.workflow.service.AllowanceService ;
import com.engine.jucailinkq.attendance.workflow.service.impl.AllowanceServiceImpl ;
import com.engine.jucailinkq.attendance.workflow.service.impl.AllowanceServiceImpl ;
import com.engine.common.util.* ;
import com.engine.common.util.* ;
import com.engine.jucailinkq.common.exception.AttendanceRunTimeException ;
import com.engine.jucailinkq.common.service.CommonService ;
import com.engine.jucailinkq.common.service.CommonService ;
import com.engine.jucailinkq.common.service.impl.CommonServiceImpl ;
import com.engine.jucailinkq.common.service.impl.CommonServiceImpl ;
import com.engine.jucailinkq.common.util.* ;
import com.engine.jucailinkq.common.util.* ;
@ -48,9 +49,9 @@ public class AttendanceanalysisAction {
log . info ( "********AttendanceanalysisAction start********" ) ;
log . info ( "********AttendanceanalysisAction start********" ) ;
Map < String , Object > paramMap = ParamUtil . request2Map ( request ) ;
Map < String , Object > paramMap = ParamUtil . request2Map ( request ) ;
// Map<String,Object> paramMap = Maps.newHashMap();
// Map<String,Object> paramMap = Maps.newHashMap();
// paramMap.put("startDate","2024-11- 05 ");
// paramMap.put("startDate","2024-11- 22 ");
// paramMap.put("endDate","2024-11- 05 ");
// paramMap.put("endDate","2024-11- 22 ");
// paramMap.put("userIds"," 8 2");
// paramMap.put("userIds"," 2 2");
String startDate = Util . null2String ( paramMap . get ( "startDate" ) ) ;
String startDate = Util . null2String ( paramMap . get ( "startDate" ) ) ;
String startBeforeDate = DateUtil . beforeDay ( startDate , 2 ) ;
String startBeforeDate = DateUtil . beforeDay ( startDate , 2 ) ;
@ -90,6 +91,7 @@ public class AttendanceanalysisAction {
if ( "" . equals ( userIds ) ) {
if ( "" . equals ( userIds ) ) {
log . info ( "********AttendanceanalysisAction prepare start******" ) ;
String queryDepartEmployeeSql = "select resourceid ,changedate,type_n from HRMSTATUSHISTORY where (type_n = 5 or type_n = 7) and changedate <> '' and changedate is not null" ;
String queryDepartEmployeeSql = "select resourceid ,changedate,type_n from HRMSTATUSHISTORY where (type_n = 5 or type_n = 7) and changedate <> '' and changedate is not null" ;
//获取离职日期
//获取离职日期
List < Map < String , Object > > departEmployeeList = DbTools . getSqlToList ( queryDepartEmployeeSql ) ;
List < Map < String , Object > > departEmployeeList = DbTools . getSqlToList ( queryDepartEmployeeSql ) ;
@ -133,16 +135,17 @@ public class AttendanceanalysisAction {
List < Map < String , Object > > attendaceResult = DbTools . getSqlToList ( sql , startBeforeDate , endAfterDate ) ;
List < Map < String , Object > > attendaceResult = DbTools . getSqlToList ( sql , startBeforeDate , endAfterDate ) ;
Map < String , List < Map < String , Object > > > attendaceGroupById = attendaceResult . stream ( ) . collect ( Collectors . groupingBy ( e - > e . get ( "ygid" ) . toString ( ) ) ) ;
Map < String , List < Map < String , Object > > > attendaceGroupById = attendaceResult . stream ( ) . collect ( Collectors . groupingBy ( e - > e . get ( "ygid" ) . toString ( ) ) ) ;
log . info ( "********AttendanceanalysisAction prepare end******" ) ;
int anyslsSize = 0 ;
for ( Map < String , Object > userMap : userList ) {
for ( Map < String , Object > userMap : userList ) {
anyslsSize + + ;
String userId = userMap . get ( "id" ) . toString ( ) ;
String userId = userMap . get ( "id" ) . toString ( ) ;
//入职日期
//入职日期
String companystartDate = Util . null2String ( userMap . get ( "companystartdate" ) ) ;
String companystartDate = Util . null2String ( userMap . get ( "companystartdate" ) ) ;
//离职日期
//离职日期
String terminationDate = Util . null2String ( departEmployeeMap . get ( userId ) ) ;
String terminationDate = Util . null2String ( departEmployeeMap . get ( userId ) ) ;
log . info ( "***********analysis userId:{} start***********", userId ) ;
log . info ( "***********analysis userId:{} ,anyslsSize:{},allsize:{} start***********", userId , anyslsSize , userList . size ( ) ) ;
//出勤结果,进出时间
//出勤结果,进出时间
Map < String , Map < String , Object > > clockInTimeMap = Maps . newHashMap ( ) ;
Map < String , Map < String , Object > > clockInTimeMap = Maps . newHashMap ( ) ;
@ -178,19 +181,30 @@ public class AttendanceanalysisAction {
if ( leaveAndEntry . equals ( "1" ) ) {
if ( leaveAndEntry . equals ( "1" ) ) {
if ( ( "" . equals ( companystartDate ) | | DateUtil . getTime ( date ) . compareTo ( DateUtil . getTime ( companystartDate ) ) > 0 )
if ( ( "" . equals ( companystartDate ) | | DateUtil . getTime ( date ) . compareTo ( DateUtil . getTime ( companystartDate ) ) > 0 )
& & ( "" . equals ( terminationDate ) | | DateUtil . getTime ( date ) . compareTo ( DateUtil . getTime ( terminationDate ) ) < 0 ) ) {
& & ( "" . equals ( terminationDate ) | | DateUtil . getTime ( date ) . compareTo ( DateUtil . getTime ( terminationDate ) ) < 0 ) ) {
try {
attendanceAnalysisService . attendanceAnalysisForApi ( userId , date , collect . get ( userId ) , analysisParam , clockInTimeMap , attendaceResultMap ) ;
attendanceAnalysisService . attendanceAnalysisForApi ( userId , date , collect . get ( userId ) , analysisParam , clockInTimeMap , attendaceResultMap ) ;
} catch ( Exception e ) {
log . info ( "***********analysis userId:{} date: {} error ***********" , userId , date ) ;
log . error ( "execute fail,catch error: [{}]" , e ) ;
}
}
}
} else {
} else {
if ( ( "" . equals ( companystartDate ) | | DateUtil . getTime ( date ) . compareTo ( DateUtil . getTime ( companystartDate ) ) > = 0 )
if ( ( "" . equals ( companystartDate ) | | DateUtil . getTime ( date ) . compareTo ( DateUtil . getTime ( companystartDate ) ) > = 0 )
& & ( "" . equals ( terminationDate ) | | DateUtil . getTime ( date ) . compareTo ( DateUtil . getTime ( terminationDate ) ) < = 0 ) ) {
& & ( "" . equals ( terminationDate ) | | DateUtil . getTime ( date ) . compareTo ( DateUtil . getTime ( terminationDate ) ) < = 0 ) ) {
try {
attendanceAnalysisService . attendanceAnalysisForApi ( userId , date , collect . get ( userId ) , analysisParam , clockInTimeMap , attendaceResultMap ) ;
attendanceAnalysisService . attendanceAnalysisForApi ( userId , date , collect . get ( userId ) , analysisParam , clockInTimeMap , attendaceResultMap ) ;
} catch ( Exception e ) {
log . info ( "***********analysis userId:{} date: {} error ***********" , userId , date ) ;
log . error ( "execute fail,catch error: [{}]" , e ) ;
}
}
}
}
}
}
}
allowanceService . addAllowanceRecords ( paramMap ) ;
allowanceService . addAllowanceRecords ( paramMap ) ;
}
}
} else {
} else {
log . info ( "********AttendanceanalysisAction prepare start******" ) ;
String queryDepartEmployeeSql = "select resourceid ,changedate,type_n from HRMSTATUSHISTORY where (type_n = 5 or type_n = 7) and changedate <> '' and changedate is not null and resourceid in (" + userIds + ")" ;
String queryDepartEmployeeSql = "select resourceid ,changedate,type_n from HRMSTATUSHISTORY where (type_n = 5 or type_n = 7) and changedate <> '' and changedate is not null and resourceid in (" + userIds + ")" ;
//获取离职日期
//获取离职日期
List < Map < String , Object > > departEmployeeList = DbTools . getSqlToList ( queryDepartEmployeeSql ) ;
List < Map < String , Object > > departEmployeeList = DbTools . getSqlToList ( queryDepartEmployeeSql ) ;
@ -239,6 +253,7 @@ public class AttendanceanalysisAction {
Map < String , List < Map < String , Object > > > attendaceGroupById = attendaceResult . stream ( ) . collect ( Collectors . groupingBy ( e - > e . get ( "ygid" ) . toString ( ) ) ) ;
Map < String , List < Map < String , Object > > > attendaceGroupById = attendaceResult . stream ( ) . collect ( Collectors . groupingBy ( e - > e . get ( "ygid" ) . toString ( ) ) ) ;
log . info ( "********AttendanceanalysisAction prepare end******" ) ;
for ( String userId : userIds . split ( "," ) ) {
for ( String userId : userIds . split ( "," ) ) {
//入职日期
//入职日期
String companystartDate = Util . null2String ( userGroupMap . get ( userId ) . get ( 0 ) . get ( "companystartdate" ) ) ;
String companystartDate = Util . null2String ( userGroupMap . get ( userId ) . get ( 0 ) . get ( "companystartdate" ) ) ;
@ -279,14 +294,30 @@ public class AttendanceanalysisAction {
if ( ( "" . equals ( companystartDate ) | | DateUtil . getTime ( date ) . compareTo ( DateUtil . getTime ( companystartDate ) ) > 0 )
if ( ( "" . equals ( companystartDate ) | | DateUtil . getTime ( date ) . compareTo ( DateUtil . getTime ( companystartDate ) ) > 0 )
& & ( "" . equals ( terminationDate ) | | DateUtil . getTime ( date ) . compareTo ( DateUtil . getTime ( terminationDate ) ) < 0 ) ) {
& & ( "" . equals ( terminationDate ) | | DateUtil . getTime ( date ) . compareTo ( DateUtil . getTime ( terminationDate ) ) < 0 ) ) {
log . info ( "***********analysis userId:{},analysisDate:{} start***********" , userId , date ) ;
log . info ( "***********analysis userId:{},analysisDate:{} start***********" , userId , date ) ;
try {
attendanceAnalysisService . attendanceAnalysisForApi ( userId , date , collect . get ( userId ) , analysisParam , clockInTimeMap , attendaceResultMap ) ;
attendanceAnalysisService . attendanceAnalysisForApi ( userId , date , collect . get ( userId ) , analysisParam , clockInTimeMap , attendaceResultMap ) ;
} catch ( Exception e ) {
log . info ( "***********analysis userId:{} date: {} error ***********" , userId , date ) ;
log . error ( "execute fail,catch error: [{}]" , e ) ;
if ( userIds . split ( "," ) . length = = 1 & & startDate . equals ( endDate ) ) {
throw new AttendanceRunTimeException ( "analysis error " ) ;
}
}
}
}
} else {
} else {
if ( ( "" . equals ( companystartDate ) | | DateUtil . getTime ( date ) . compareTo ( DateUtil . getTime ( companystartDate ) ) > = 0 )
if ( ( "" . equals ( companystartDate ) | | DateUtil . getTime ( date ) . compareTo ( DateUtil . getTime ( companystartDate ) ) > = 0 )
& & ( "" . equals ( terminationDate ) | | DateUtil . getTime ( date ) . compareTo ( DateUtil . getTime ( terminationDate ) ) < = 0 ) ) {
& & ( "" . equals ( terminationDate ) | | DateUtil . getTime ( date ) . compareTo ( DateUtil . getTime ( terminationDate ) ) < = 0 ) ) {
log . info ( "***********analysis userId:{},analysisDate:{} start***********" , userId , date ) ;
log . info ( "***********analysis userId:{},analysisDate:{} start***********" , userId , date ) ;
try {
attendanceAnalysisService . attendanceAnalysisForApi ( userId , date , collect . get ( userId ) , analysisParam , clockInTimeMap , attendaceResultMap ) ;
attendanceAnalysisService . attendanceAnalysisForApi ( userId , date , collect . get ( userId ) , analysisParam , clockInTimeMap , attendaceResultMap ) ;
} catch ( Exception e ) {
log . info ( "***********analysis userId:{} date: {} error ***********" , userId , date ) ;
log . error ( "execute fail,catch error: [{}]" , e ) ;
if ( userIds . split ( "," ) . length = = 1 & & startDate . equals ( endDate ) ) {
throw new AttendanceRunTimeException ( "analysis error " ) ;
}
}
}
}
}
}
}
}