@ -37,206 +37,228 @@ public class AttendanceAnalysisWrapper extends Service {
/ * *
/ * *
* 考 勤 分 析 主 逻 辑 入 口
* 考 勤 分 析 主 逻 辑 入 口
* @param userId 人 员 id
*
* @param dataList 打 卡 数 据
* @param userId 人 员 id
* @param dataList 打 卡 数 据
* @param attendanceItems 考 勤 项 目
* @param attendanceItems 考 勤 项 目
* /
* /
public void attendanceAnalysis ( String userId , List< Map < String , Object > > dataList , List < Map < String , Object > > attendanceItems , List < Map < String , Object > > workHourItems , Map < String , Map < String , Object > > clockInTimeMap ){
public void attendanceAnalysis ( String userId , String analysisDate , List< Map < String , Object > > dataList , List < Map < String , Object > > attendanceItems , List < Map < String , Object > > workHourItems , Map < String , Map < String , Object > > clockInTimeMap , List < Map < String , Object > > attendaceResult ) {
log . info ( "***********analysis userId:{} start***********" , userId ) ;
log . info ( "***********analysis userId:{} start***********" , userId ) ;
log . info ( "clockInTimeDate : [{}]" , dataList ) ;
log . info ( "clockInTimeDate : [{}]" , dataList ) ;
String beforeFourDayDate = DateUtil . getCurrentDateMinusDay( 4 ) ;
String beforeFourDayDate = DateUtil . beforeDay( analysisDate , 4 ) ;
String beforeTwoDayDate = DateUtil . getCurrentDateMinusDay( 2 ) ;
String beforeTwoDayDate = DateUtil . beforeDay( analysisDate , 2 ) ;
String beforeOneDayDate = DateUtil . getCurrentDateMinusDay( 1 ) ;
String beforeOneDayDate = DateUtil . beforeDay( analysisDate , 1 ) ;
String nowDate = DateUtil. getCurrentDate ( ) ;
String nowDate = analysisDate ;
/** 打卡数据 */
/** 打卡数据 */
Map < String , List < Map < String , Object > > > collect = Maps . newHashMap ( ) ;
Map < String , List < Map < String , Object > > > collect = Maps . newHashMap ( ) ;
if ( dataList ! = null & & dataList . size ( ) > 0 ) {
if ( dataList ! = null & & dataList . size ( ) > 0 ) {
collect = dataList . stream ( ) . collect ( Collectors . groupingBy ( e - > Util . null2String ( e . get ( "signdate" ) ) ) ) ;
collect = dataList . stream ( ) . collect ( Collectors . groupingBy ( e - > Util . null2String ( e . get ( "signdate" ) ) ) ) ;
}
}
/** 获取人员班次*/
/** 获取人员班次*/
Map < String , Object > classesParamMap = Maps . newHashMap ( ) ;
Map < String , Object > classesParamMap = Maps . newHashMap ( ) ;
classesParamMap . put ( "tableName" , "uf_pbjg" ) ;
classesParamMap . put ( "tableName" , "uf_pbjg" ) ;
classesParamMap . put ( "startDate" , beforeFourDayDate ) ;
classesParamMap . put ( "startDate" , beforeFourDayDate ) ;
classesParamMap . put ( "endDate" , nowDate ) ;
classesParamMap . put ( "endDate" , nowDate ) ;
classesParamMap . put ( "pblx" , "0" ) ;
classesParamMap . put ( "pblx" , "0" ) ;
classesParamMap . put ( "pbdx" , userId ) ;
classesParamMap . put ( "pbdx" , userId ) ;
classesParamMap . put ( "current" , "1" ) ;
classesParamMap . put ( "current" , "1" ) ;
classesParamMap . put ( "pageSize" , 10 ) ;
classesParamMap . put ( "pageSize" , 10 ) ;
classesParamMap . put ( "recurrence" , 1 ) ;
classesParamMap . put ( "recurrence" , 1 ) ;
classesParamMap . put ( "clockInTimeMap" , clockInTimeMap ) ;
classesParamMap . put ( "clockInTimeMap" , clockInTimeMap ) ;
classesParamMap . put ( "attendanceItems" , attendanceItems ) ;
classesParamMap . put ( "attendanceItems" , attendanceItems ) ;
classesParamMap . put ( "clockInData" , dataList ) ;
classesParamMap . put ( "clockInData" , dataList ) ;
Map < String , Object > schedulMap = utilService . getSchedulingInFormation ( classesParamMap ) ;
Map < String , Object > schedulMap = utilService . getSchedulingInFormation ( classesParamMap ) ;
Map < String , List < Map < String , Object > > > schedulingResultsMap = ( Map < String , List < Map < String , Object > > > ) schedulMap . get ( "schedulingResultsMap" ) ;
Map < String , List < Map < String , Object > > > schedulingResultsMap = ( Map < String , List < Map < String , Object > > > ) schedulMap . get ( "schedulingResultsMap" ) ;
/**计算获取前一天和第二天打卡数据*/
/**计算获取前一天和第二天打卡数据*/
Map < String , Object > getClockTimeParam = Maps . newHashMap ( ) ;
Map < String , Object > getClockTimeParam = Maps . newHashMap ( ) ;
getClockTimeParam . put ( "date" , beforeOneDayDate ) ;
getClockTimeParam . put ( "date" , beforeOneDayDate ) ;
getClockTimeParam . put ( "clockInTimeList" , dataList ) ;
getClockTimeParam . put ( "clockInTimeList" , dataList ) ;
getClockTimeParam . put ( "clockInTimeCollect" , collect ) ;
getClockTimeParam . put ( "clockInTimeCollect" , collect ) ;
getClockTimeParam . put ( "schedulingResultCollect" , schedulingResultsMap ) ;
getClockTimeParam . put ( "schedulingResultCollect" , schedulingResultsMap ) ;
getClockTimeParam . put ( "clockInTimeMap" , clockInTimeMap ) ;
getClockTimeParam . put ( "clockInTimeMap" , clockInTimeMap ) ;
getClockTimeParam . put ( "userId" , userId ) ;
getClockTimeParam . put ( "userId" , userId ) ;
//前一天打卡数据
Map < String , List < Map < String , Object > > > attendaceResultMap = Maps . newHashMap ( ) ;
log . info ( "getClockTimeParam : [{}]" , getClockTimeParam ) ;
if ( attendaceResult ! = null & & attendaceResult . size ( ) > 0 ) {
List < Map < String , Object > > beforeOneDayClockInTimeList = utilService . getClockInTime ( getClockTimeParam ) ;
attendaceResultMap = attendaceResult . stream ( ) . collect ( Collectors . groupingBy ( e - > e . get ( "rq" ) . toString ( ) ) ) ;
log . info ( "beforeOneDayClockInTimeList : [{}]" , beforeOneDayClockInTimeList ) ;
}
//分析前一天考勤
List < Map < String , Object > > beforeOneDayDateattendaceResult = attendaceResultMap . get ( beforeOneDayDate ) ;
Map < String , Object > recordDataTime1 = analysis ( userId , beforeOneDayDate , beforeOneDayClockInTimeList , schedulingResultsMap . get ( beforeOneDayDate ) , attendanceItems , workHourItems ) ;
clockInTimeMap . put ( beforeOneDayDate , recordDataTime1 ) ;
if ( beforeOneDayDateattendaceResult = = null | | beforeOneDayDateattendaceResult . size ( ) = = 0 | | ( ! CheckBoxEnum . CHECKED . getKey ( ) . equals ( beforeOneDayDateattendaceResult . get ( 0 ) . get ( "sgsj" ) ) & &
getClockTimeParam . put ( "date" , beforeTwoDayDate ) ;
! "3" . equals ( beforeOneDayDateattendaceResult . get ( 0 ) . get ( "sjzt" ) ) ) ) {
//前第二天打卡数据
log . info ( "getClockTimeParam : [{}]" , getClockTimeParam ) ;
List < Map < String , Object > > beforeTwoDayClockInTimeList = utilService . getClockInTime ( getClockTimeParam ) ;
//前一天打卡数据
log . info ( "beforeTwoDayClockInTimeList : [{}]" , beforeTwoDayClockInTimeList ) ;
List < Map < String , Object > > beforeOneDayClockInTimeList = utilService . getClockInTime ( getClockTimeParam ) ;
//分析前第二天考勤
log . info ( "beforeOneDayClockInTimeList : [{}]" , beforeOneDayClockInTimeList ) ;
Map < String , Object > recordDataTime2 = analysis ( userId , beforeTwoDayDate , beforeTwoDayClockInTimeList , schedulingResultsMap . get ( beforeTwoDayDate ) , attendanceItems , workHourItems ) ;
//分析前一天考勤
clockInTimeMap . put ( beforeTwoDayDate , recordDataTime2 ) ;
Map < String , Object > recordDataTime1 = analysis ( userId , beforeOneDayDate , beforeOneDayClockInTimeList , schedulingResultsMap . get ( beforeOneDayDate ) , attendanceItems , workHourItems ) ;
clockInTimeMap . put ( beforeOneDayDate , recordDataTime1 ) ;
}
getClockTimeParam . put ( "date" , beforeTwoDayDate ) ;
List < Map < String , Object > > beforeTwoDayDateattendaceResult = attendaceResultMap . get ( beforeTwoDayDate ) ;
if ( beforeTwoDayDateattendaceResult = = null | | beforeTwoDayDateattendaceResult . size ( ) = = 0 | | ( ! CheckBoxEnum . CHECKED . getKey ( ) . equals ( beforeTwoDayDateattendaceResult . get ( 0 ) . get ( "sgsj" ) ) & &
! "3" . equals ( beforeTwoDayDateattendaceResult . get ( 0 ) . get ( "sjzt" ) ) ) ) {
//前第二天打卡数据
List < Map < String , Object > > beforeTwoDayClockInTimeList = utilService . getClockInTime ( getClockTimeParam ) ;
log . info ( "beforeTwoDayClockInTimeList : [{}]" , beforeTwoDayClockInTimeList ) ;
//分析前第二天考勤
Map < String , Object > recordDataTime2 = analysis ( userId , beforeTwoDayDate , beforeTwoDayClockInTimeList , schedulingResultsMap . get ( beforeTwoDayDate ) , attendanceItems , workHourItems ) ;
clockInTimeMap . put ( beforeTwoDayDate , recordDataTime2 ) ;
}
}
}
/ * *
/ * *
* 考 勤 分 析 主 逻 辑 入 口
* 考 勤 分 析 主 逻 辑 入 口
* @param userId 人 员 id
*
* @param analysisDate 分 析 日 期
* @param userId 人 员 id
* @param dataList 需 要 包 含 分 析 日 期 以 及 分 析 日 期 前 后 2 天 的 3 天 打 卡 数 据
* @param analysisDate 分 析 日 期
* @param dataList 需 要 包 含 分 析 日 期 以 及 分 析 日 期 前 后 2 天 的 3 天 打 卡 数 据
* @param attendanceItems 人 员 考 勤 项 目
* @param attendanceItems 人 员 考 勤 项 目
* /
* /
public void attendanceAnalysisForApi ( String userId , String analysisDate , List < Map < String , Object > > dataList , List < Map < String , Object > > attendanceItems , Map < String , Object > schedulMap , List < Map < String , Object > > workHourItems , Map < String , Map < String , Object > > clockInTimeMap ) {
public void attendanceAnalysisForApi ( String userId , String analysisDate , List < Map < String , Object > > dataList , List < Map < String , Object > > attendanceItems , Map < String , Object > schedulMap , List < Map < String , Object > > workHourItems , Map < String , Map < String , Object > > clockInTimeMap , List < Map < String , Object > > attendaceResult ) {
log . info ( "***********analysis userId:{},analysisDate:{} start***********" , userId , analysisDate ) ;
log . info ( "***********analysis userId:{},analysisDate:{} start***********" , userId , analysisDate ) ;
log . info ( "clockInTimeDate : [{}]" , dataList ) ;
log . info ( "clockInTimeDate : [{}]" , dataList ) ;
Map < String , List < Map < String , Object > > > collect = Maps . newHashMap ( ) ;
log . info ( "attendaceResult : [{}]" , attendaceResult ) ;
if ( dataList ! = null & & dataList . size ( ) > 0 ) {
if ( attendaceResult ! = null & & attendaceResult . size ( ) > 0 & & ( CheckBoxEnum . CHECKED . getKey ( ) . equals ( attendaceResult . get ( 0 ) . get ( "sgsj" ) ) | |
"3" . equals ( attendaceResult . get ( 0 ) . get ( "sjzt" ) ) ) ) {
return ;
}
Map < String , List < Map < String , Object > > > collect = Maps . newHashMap ( ) ;
if ( dataList ! = null & & dataList . size ( ) > 0 ) {
collect = dataList . stream ( ) . collect ( Collectors . groupingBy ( e - > Util . null2String ( e . get ( "signdate" ) ) ) ) ;
collect = dataList . stream ( ) . collect ( Collectors . groupingBy ( e - > Util . null2String ( e . get ( "signdate" ) ) ) ) ;
}
}
Map < String , List < Map < String , Object > > > schedulingResultsMap = ( Map < String , List < Map < String , Object > > > ) schedulMap . get ( "schedulingResultsMap" ) ;
Map < String , List < Map < String , Object > > > schedulingResultsMap = ( Map < String , List < Map < String , Object > > > ) schedulMap . get ( "schedulingResultsMap" ) ;
Map < String , Object > getClockTimeParam = Maps . newHashMap ( ) ;
Map < String , Object > getClockTimeParam = Maps . newHashMap ( ) ;
getClockTimeParam . put ( "date" , analysisDate ) ;
getClockTimeParam . put ( "date" , analysisDate ) ;
getClockTimeParam . put ( "clockInTimeList" , dataList ) ;
getClockTimeParam . put ( "clockInTimeList" , dataList ) ;
getClockTimeParam . put ( "schedulingResultCollect" , schedulingResultsMap ) ;
getClockTimeParam . put ( "schedulingResultCollect" , schedulingResultsMap ) ;
getClockTimeParam . put ( "clockInTimeMap" , clockInTimeMap ) ;
getClockTimeParam . put ( "clockInTimeMap" , clockInTimeMap ) ;
getClockTimeParam . put ( "clockInTimeCollect" , collect ) ;
getClockTimeParam . put ( "clockInTimeCollect" , collect ) ;
getClockTimeParam . put ( "userId" , userId ) ;
getClockTimeParam . put ( "userId" , userId ) ;
//打卡数据
//打卡数据
log . info ( "getClockTimeParam : [{}]" , getClockTimeParam ) ;
log . info ( "getClockTimeParam : [{}]" , getClockTimeParam ) ;
List < Map < String , Object > > clockInTimeList = utilService . getClockInTime ( getClockTimeParam ) ;
List < Map < String , Object > > clockInTimeList = utilService . getClockInTime ( getClockTimeParam ) ;
Map < String , Object > recordDataTime = analysis ( userId , analysisDate , clockInTimeList , schedulingResultsMap . get ( analysisDate ) , attendanceItems , workHourItems ) ;
Map < String , Object > recordDataTime = analysis ( userId , analysisDate , clockInTimeList , schedulingResultsMap . get ( analysisDate ) , attendanceItems , workHourItems ) ;
clockInTimeMap . put ( analysisDate , recordDataTime ) ;
clockInTimeMap . put ( analysisDate , recordDataTime ) ;
}
}
/ * *
/ * *
* 分 析 数 据
* 分 析 数 据
* @param userId 分 析 人 员
*
* @param analysisDate 分 析 日 期
* @param userId 分 析 人 员
* @param analysisDate 分 析 日 期
* @param clockInTimeList 打 卡 数 据
* @param clockInTimeList 打 卡 数 据
* @param scheduleResult 班 次
* @param scheduleResult 班 次
* @param attendanceItems 考 勤 项 目
* @param attendanceItems 考 勤 项 目
* /
* /
public Map < String , Object > analysis ( String userId , String analysisDate , List < Map < String , Object > > clockInTimeList , List < Map < String , Object > > scheduleResult , List < Map < String , Object > > attendanceItems , List < Map < String , Object > > workHourItems ) {
public Map < String , Object > analysis ( String userId , String analysisDate , List < Map < String , Object > > clockInTimeList , List < Map < String , Object > > scheduleResult , List < Map < String , Object > > attendanceItems , List < Map < String , Object > > workHourItems ) {
Map < String , Object > recordParam = Maps . newHashMap ( ) ;
Map < String , Object > recordParam = Maps . newHashMap ( ) ;
Map < String , String > formModeIdMap = Utils . getFormmodeIdMap ( ) ;
Map < String , String > formModeIdMap = Utils . getFormmodeIdMap ( ) ;
recordParam . put ( "userId" , userId ) ;
recordParam . put ( "userId" , userId ) ;
recordParam . put ( "analysisDate" , analysisDate ) ;
recordParam . put ( "analysisDate" , analysisDate ) ;
recordParam . put ( "classInfo" , scheduleResult ) ;
recordParam . put ( "classInfo" , scheduleResult ) ;
recordParam . put ( "formmodeIdMap" , formModeIdMap ) ;
recordParam . put ( "formmodeIdMap" , formModeIdMap ) ;
recordParam . put ( "attendanceDuration" , 0 ) ;
recordParam . put ( "attendanceDuration" , 0 ) ;
recordParam . put ( "modeId" , formModeIdMap . get ( "uf_jcl_kq_cqjg" ) ) ;
recordParam . put ( "modeId" , formModeIdMap . get ( "uf_jcl_kq_cqjg" ) ) ;
Map < String , Object > workingHourparam = Maps . newHashMap ( ) ;
Map < String , Object > workingHourparam = Maps . newHashMap ( ) ;
workingHourparam . put ( "clockInTimeCollect" , clockInTimeList ) ;
workingHourparam . put ( "clockInTimeCollect" , clockInTimeList ) ;
workingHourparam . put ( "analysisDate" , analysisDate ) ;
workingHourparam . put ( "analysisDate" , analysisDate ) ;
workingHourparam . put ( "userId" , userId ) ;
workingHourparam . put ( "userId" , userId ) ;
workingHourparam . put ( "attendanceItems" , attendanceItems ) ;
workingHourparam . put ( "attendanceItems" , attendanceItems ) ;
workingHourparam . put ( "scheduleResult" , scheduleResult ) ;
workingHourparam . put ( "scheduleResult" , scheduleResult ) ;
/ * *
/ * *
* 津 贴
* 津 贴
* /
* /
Map < String , Object > allowanceMap = updateAttendanceResultWrapper . allowanceHandle ( recordParam ) ;
Map < String , Object > allowanceMap = updateAttendanceResultWrapper . allowanceHandle ( recordParam ) ;
if ( workHourItems ! = null & & workHourItems . size ( ) > 0 ) {
if ( workHourItems ! = null & & workHourItems . size ( ) > 0 ) {
workingHourparam . put ( "workHourItem" , workHourItems . get ( 0 ) ) ;
workingHourparam . put ( "workHourItem" , workHourItems . get ( 0 ) ) ;
String ifPriority = Util . null2String ( workHourItems . get ( 0 ) . get ( "hlpbyxsyzhgs" ) ) ;
String ifPriority = Util . null2String ( workHourItems . get ( 0 ) . get ( "hlpbyxsyzhgs" ) ) ;
//核算工时的日期类型
//核算工时的日期类型
String hsgsdrqlx = Util . null2String ( workHourItems . get ( 0 ) . get ( "hsgsdrqlx" ) ) ;
String hsgsdrqlx = Util . null2String ( workHourItems . get ( 0 ) . get ( "hsgsdrqlx" ) ) ;
String rqlx = Utils . getDateType ( analysisDate , Util . null2String ( workHourItems . get ( 0 ) . get ( "qyrl" ) ) ) ;
String rqlx = Utils . getDateType ( analysisDate , Util . null2String ( workHourItems . get ( 0 ) . get ( "qyrl" ) ) ) ;
if ( CheckBoxEnum . CHECKED . getKey ( ) . equals ( ifPriority ) & & CommonUtil . ifContainStr ( hsgsdrqlx , rqlx , "," ) ) {
if ( CheckBoxEnum . CHECKED . getKey ( ) . equals ( ifPriority ) & & CommonUtil . ifContainStr ( hsgsdrqlx , rqlx , "," ) ) {
comprehensiveWorkingHourService . excuteByWorkHour ( workingHourparam ) ;
comprehensiveWorkingHourService . excuteByWorkHour ( workingHourparam ) ;
return null ;
return null ;
}
}
}
}
if ( scheduleResult = = null | | scheduleResult . size ( ) = = 0 ) {
if ( scheduleResult = = null | | scheduleResult . size ( ) = = 0 ) {
//没有排班
//没有排班
Map < String , Object > params = Maps . newHashMap ( ) ;
Map < String , Object > params = Maps . newHashMap ( ) ;
params . put ( "userId" , userId ) ;
params . put ( "userId" , userId ) ;
params . put ( "analysisDate" , analysisDate ) ;
params . put ( "analysisDate" , analysisDate ) ;
params . put ( "clockInTimeCollect" , clockInTimeList ) ;
params . put ( "clockInTimeCollect" , clockInTimeList ) ;
params . put ( "modeId" , formModeIdMap . get ( "uf_jcl_kq_cqjg" ) ) ;
params . put ( "modeId" , formModeIdMap . get ( "uf_jcl_kq_cqjg" ) ) ;
params . put ( "workHourItems" , workHourItems ) ;
params . put ( "workHourItems" , workHourItems ) ;
params . put ( "attendanceItems" , attendanceItems ) ;
params . put ( "attendanceItems" , attendanceItems ) ;
params . put ( "allowanceMap" , allowanceMap ) ;
params . put ( "allowanceMap" , allowanceMap ) ;
updateAttendanceResultWrapper . recordNoClass ( params ) ;
updateAttendanceResultWrapper . recordNoClass ( params ) ;
return null ;
return null ;
}
}
recordParam . put ( "rqlx" , scheduleResult . get ( 0 ) . get ( "rqlx" ) ) ;
recordParam . put ( "rqlx" , scheduleResult . get ( 0 ) . get ( "rqlx" ) ) ;
//休息班次,休息班打卡自动加班不算自动加班
//休息班次,休息班打卡自动加班不算自动加班
if ( scheduleResult . get ( 0 ) . get ( "sfxx" ) ! = null & & CheckBoxEnum . CHECKED . getKey ( ) . equals ( scheduleResult . get ( 0 ) . get ( "sfxx" ) ) & &
if ( scheduleResult . get ( 0 ) . get ( "sfxx" ) ! = null & & CheckBoxEnum . CHECKED . getKey ( ) . equals ( scheduleResult . get ( 0 ) . get ( "sfxx" ) ) & &
scheduleResult . get ( 0 ) . get ( "xxbdkzdjb" ) ! = null & & CheckBoxEnum . UNCHECKED . getKey ( ) . equals ( scheduleResult . get ( 0 ) . get ( "xxbdkzdjb" ) ) ) {
scheduleResult . get ( 0 ) . get ( "xxbdkzdjb" ) ! = null & & CheckBoxEnum . UNCHECKED . getKey ( ) . equals ( scheduleResult . get ( 0 ) . get ( "xxbdkzdjb" ) ) ) {
updateAttendanceResultWrapper . recordRest ( recordParam ) ;
updateAttendanceResultWrapper . recordRest ( recordParam ) ;
return null ;
return null ;
}
}
List < Map < String , Object > > askForLeaveAndEvctionSchedule = Lists . newArrayList ( ) ;
List < Map < String , Object > > askForLeaveAndEvctionSchedule = Lists . newArrayList ( ) ;
//请假记录
//请假记录
Map < String , Object > askForLeaveDataMap = updateAttendanceResultWrapper . getAskForLeave ( workingHourparam ) ;
Map < String , Object > askForLeaveDataMap = updateAttendanceResultWrapper . getAskForLeave ( workingHourparam ) ;
if ( askForLeaveDataMap . get ( "alldayVaction" ) ! = null ) {
if ( askForLeaveDataMap . get ( "alldayVaction" ) ! = null ) {
//全天请假
//全天请假
recordParam . put ( "cqzt" , CheckBoxEnum . UNCHECKED . getKey ( ) ) ;
recordParam . put ( "cqzt" , CheckBoxEnum . UNCHECKED . getKey ( ) ) ;
recordParam . put ( "recordData" , askForLeaveDataMap . get ( "alldayVaction" ) ) ;
recordParam . put ( "recordData" , askForLeaveDataMap . get ( "alldayVaction" ) ) ;
utilService . recordItem ( recordParam ) ;
utilService . recordItem ( recordParam ) ;
return null ;
return null ;
}
}
askForLeaveAndEvctionSchedule . addAll ( ( List < Map < String , Object > > ) askForLeaveDataMap . get ( "askForLeaveSchedule" ) ) ;
askForLeaveAndEvctionSchedule . addAll ( ( List < Map < String , Object > > ) askForLeaveDataMap . get ( "askForLeaveSchedule" ) ) ;
//出差记录
//出差记录
Map < String , Object > evectionDataMap = updateAttendanceResultWrapper . getEvection ( workingHourparam ) ;
Map < String , Object > evectionDataMap = updateAttendanceResultWrapper . getEvection ( workingHourparam ) ;
if ( evectionDataMap . get ( "alldayEvection" ) ! = null ) {
if ( evectionDataMap . get ( "alldayEvection" ) ! = null ) {
//全天出差
//全天出差
recordParam . put ( "cqzt" , CheckBoxEnum . UNCHECKED . getKey ( ) ) ;
recordParam . put ( "cqzt" , CheckBoxEnum . UNCHECKED . getKey ( ) ) ;
recordParam . put ( "recordData" , evectionDataMap . get ( "alldayEvection" ) ) ;
recordParam . put ( "recordData" , evectionDataMap . get ( "alldayEvection" ) ) ;
utilService . recordItem ( recordParam ) ;
utilService . recordItem ( recordParam ) ;
return null ;
return null ;
}
}
askForLeaveAndEvctionSchedule . addAll ( ( List < Map < String , Object > > ) evectionDataMap . get ( "evectionSchedule" ) ) ;
askForLeaveAndEvctionSchedule . addAll ( ( List < Map < String , Object > > ) evectionDataMap . get ( "evectionSchedule" ) ) ;
if ( askForLeaveAndEvctionSchedule . size ( ) > 0 ) {
if ( askForLeaveAndEvctionSchedule . size ( ) > 0 ) {
askForLeaveAndEvctionSchedule = mergeAskForLeaveAndEvctionSchedule ( askForLeaveAndEvctionSchedule , analysisDate ) ;
askForLeaveAndEvctionSchedule = mergeAskForLeaveAndEvctionSchedule ( askForLeaveAndEvctionSchedule , analysisDate ) ;
}
}
Map < String , Object > clcokInTimeDataParam = Maps . newHashMap ( ) ;
Map < String , Object > clcokInTimeDataParam = Maps . newHashMap ( ) ;
clcokInTimeDataParam . put ( "analysisDate" , analysisDate ) ;
clcokInTimeDataParam . put ( "analysisDate" , analysisDate ) ;
clcokInTimeDataParam . put ( "scheduleResult" , scheduleResult ) ;
clcokInTimeDataParam . put ( "scheduleResult" , scheduleResult ) ;
clcokInTimeDataParam . put ( "clockInTimeList" , clockInTimeList ) ;
clcokInTimeDataParam . put ( "clockInTimeList" , clockInTimeList ) ;
clcokInTimeDataParam . put ( "askForLeaveAndEvctionSchedule" , askForLeaveAndEvctionSchedule ) ;
clcokInTimeDataParam . put ( "askForLeaveAndEvctionSchedule" , askForLeaveAndEvctionSchedule ) ;
//打卡卡点以及匹配的打卡时间
//打卡卡点以及匹配的打卡时间
List < ClockPointDTO > clcokInTimeData = utilService . getClockInPointCmd ( clcokInTimeDataParam ) ;
List < ClockPointDTO > clcokInTimeData = utilService . getClockInPointCmd ( clcokInTimeDataParam ) ;
Map < String , Object > recordAbnormalParam = Maps . newHashMap ( ) ;
Map < String , Object > recordAbnormalParam = Maps . newHashMap ( ) ;
recordAbnormalParam . put ( "clcokInTimeData" , clcokInTimeData ) ;
recordAbnormalParam . put ( "clcokInTimeData" , clcokInTimeData ) ;
recordAbnormalParam . put ( "attendanceItems" , attendanceItems ) ;
recordAbnormalParam . put ( "attendanceItems" , attendanceItems ) ;
recordAbnormalParam . put ( "scheduleResult" , scheduleResult ) ;
recordAbnormalParam . put ( "scheduleResult" , scheduleResult ) ;
recordAbnormalParam . put ( "analysisDate" , analysisDate ) ;
recordAbnormalParam . put ( "analysisDate" , analysisDate ) ;
recordAbnormalParam . put ( "userId" , userId ) ;
recordAbnormalParam . put ( "userId" , userId ) ;
recordAbnormalParam . put ( "rqlx" , scheduleResult . get ( 0 ) . get ( "rqlx" ) ) ;
recordAbnormalParam . put ( "rqlx" , scheduleResult . get ( 0 ) . get ( "rqlx" ) ) ;
recordAbnormalParam . put ( "formmodeIdMap" , formModeIdMap ) ;
recordAbnormalParam . put ( "formmodeIdMap" , formModeIdMap ) ;
log . info ( "recordAbnormalParam clcokInTimeList:{},attendanceItems size :{},scheduleResult :{},analysisDate:[{}],userId:[{}],rqlx:[{}],modeId:[{}]" , clcokInTimeData ,
log . info ( "recordAbnormalParam clcokInTimeList:{},attendanceItems size :{},scheduleResult :{},analysisDate:[{}],userId:[{}],rqlx:[{}],modeId:[{}]" , clcokInTimeData ,
attendanceItems . size ( ) , scheduleResult , analysisDate , userId , scheduleResult . get ( 0 ) . get ( "rqlx" ) ) ;
attendanceItems . size ( ) , scheduleResult , analysisDate , userId , scheduleResult . get ( 0 ) . get ( "rqlx" ) ) ;
/ * *
/ * *
@ -244,33 +266,33 @@ public class AttendanceAnalysisWrapper extends Service {
*
*
* * /
* * /
recordAbnormalParam . put ( "askForLeaveList" , askForLeaveDataMap . get ( "askForLeaveList" ) ) ;
recordAbnormalParam . put ( "askForLeaveList" , askForLeaveDataMap . get ( "askForLeaveList" ) ) ;
recordAbnormalParam . put ( "askForLeaveItems" , askForLeaveDataMap . get ( "askForLeaveItems" ) ) ;
recordAbnormalParam . put ( "askForLeaveItems" , askForLeaveDataMap . get ( "askForLeaveItems" ) ) ;
recordAbnormalParam . put ( "evectionList" , evectionDataMap . get ( "evectionList" ) ) ;
recordAbnormalParam . put ( "evectionList" , evectionDataMap . get ( "evectionList" ) ) ;
recordAbnormalParam . put ( "evectionItems" , evectionDataMap . get ( "evectionItems" ) ) ;
recordAbnormalParam . put ( "evectionItems" , evectionDataMap . get ( "evectionItems" ) ) ;
List < Map < String , Object > > abnormalClockInList = updateAttendanceResultWrapper . recordAbnormalClockIn ( recordAbnormalParam ) ;
List < Map < String , Object > > abnormalClockInList = updateAttendanceResultWrapper . recordAbnormalClockIn ( recordAbnormalParam ) ;
//需要记录的异常卡点
//需要记录的异常卡点
List < Map < String , Object > > needRecordAbnormalClockInList = abnormalClockInList . stream ( ) . filter ( e - > ( boolean ) e . get ( "record" ) ) . collect ( Collectors . toList ( ) ) ;
List < Map < String , Object > > needRecordAbnormalClockInList = abnormalClockInList . stream ( ) . filter ( e - > ( boolean ) e . get ( "record" ) ) . collect ( Collectors . toList ( ) ) ;
//不需要记录的异常卡点
//不需要记录的异常卡点
List < Map < String , Object > > notRecordAbnormalClockInList = abnormalClockInList . stream ( ) . filter ( e - > ! ( boolean ) e . get ( "record" ) ) . collect ( Collectors . toList ( ) ) ;
List < Map < String , Object > > notRecordAbnormalClockInList = abnormalClockInList . stream ( ) . filter ( e - > ! ( boolean ) e . get ( "record" ) ) . collect ( Collectors . toList ( ) ) ;
/ * *
/ * *
* 出 勤 津 贴
* 出 勤 津 贴
* /
* /
recordAbnormalParam . put ( "abnormalClockInList" , needRecordAbnormalClockInList ) ;
recordAbnormalParam . put ( "abnormalClockInList" , needRecordAbnormalClockInList ) ;
recordAbnormalParam . put ( "notRecordAbnormalClockInList" , notRecordAbnormalClockInList ) ;
recordAbnormalParam . put ( "notRecordAbnormalClockInList" , notRecordAbnormalClockInList ) ;
String ifnotWork = Util . null2String ( allowanceMap . get ( "ifnotWork" ) ) ;
String ifnotWork = Util . null2String ( allowanceMap . get ( "ifnotWork" ) ) ;
if ( ! "" . equals ( ifnotWork ) ) {
if ( ! "" . equals ( ifnotWork ) ) {
//次日免班
//次日免班
recordParam . put ( "recordData" , Lists . newArrayList ( ) ) ;
recordParam . put ( "recordData" , Lists . newArrayList ( ) ) ;
recordParam . put ( "recordDataTime" , Maps . newHashMap ( ) ) ;
recordParam . put ( "recordDataTime" , Maps . newHashMap ( ) ) ;
recordParam . put ( "attendanceDuration" , scheduleResult . get ( 0 ) . get ( "edsc" ) . toString ( ) ) ;
recordParam . put ( "attendanceDuration" , scheduleResult . get ( 0 ) . get ( "edsc" ) . toString ( ) ) ;
recordParam . put ( "cqzt" , CheckBoxEnum . UNCHECKED . getKey ( ) ) ;
recordParam . put ( "cqzt" , CheckBoxEnum . UNCHECKED . getKey ( ) ) ;
utilService . recordItem ( recordParam ) ;
utilService . recordItem ( recordParam ) ;
return null ;
return null ;
}
}
if ( ! "" . equals ( Util . null2String ( allowanceMap . get ( "delayMinute" ) ) ) ) {
if ( ! "" . equals ( Util . null2String ( allowanceMap . get ( "delayMinute" ) ) ) ) {
recordAbnormalParam . put ( "delayMinute" , allowanceMap . get ( "delayMinute" ) ) ;
recordAbnormalParam . put ( "delayMinute" , allowanceMap . get ( "delayMinute" ) ) ;
updateAttendanceResultWrapper . removeAbnormal ( recordAbnormalParam ) ;
updateAttendanceResultWrapper . removeAbnormal ( recordAbnormalParam ) ;
}
}
@ -279,27 +301,26 @@ public class AttendanceAnalysisWrapper extends Service {
* /
* /
Map < String , Object > vactionMap = updateAttendanceResultWrapper . recordAskForLeave ( recordAbnormalParam ) ;
Map < String , Object > vactionMap = updateAttendanceResultWrapper . recordAskForLeave ( recordAbnormalParam ) ;
List < Map < String , Object > > abnormalClockInListByAskForLeave = ( List < Map < String , Object > > ) vactionMap . get ( "abnormalClockInList" ) ;
List < Map < String , Object > > abnormalClockInListByAskForLeave = ( List < Map < String , Object > > ) vactionMap . get ( "abnormalClockInList" ) ;
List < Map < String , Object > > vactionList = ( List < Map < String , Object > > ) vactionMap . get ( "resultList" ) ;
List < Map < String , Object > > vactionList = ( List < Map < String , Object > > ) vactionMap . get ( "resultList" ) ;
recordAbnormalParam . put ( "offsetAskForLeaveAnomaly" , vactionMap . get ( "offsetAskForLeaveAnomaly" ) ) ;
recordAbnormalParam . put ( "offsetAskForLeaveAnomaly" , vactionMap . get ( "offsetAskForLeaveAnomaly" ) ) ;
log . info ( "请假后消除的异常 : [{}]" , vactionMap . get ( "offsetAskForLeaveAnomaly" ) ) ;
log . info ( "请假后消除的异常 : [{}]" , vactionMap . get ( "offsetAskForLeaveAnomaly" ) ) ;
/ * *
/ * *
* 出 差 、 外 出
* 出 差 、 外 出
* /
* /
recordAbnormalParam . put ( "abnormalClockInList" , abnormalClockInListByAskForLeave ) ;
recordAbnormalParam . put ( "abnormalClockInList" , abnormalClockInListByAskForLeave ) ;
Map < String , Object > recordEvection = updateAttendanceResultWrapper . recordEvection ( recordAbnormalParam ) ;
Map < String , Object > recordEvection = updateAttendanceResultWrapper . recordEvection ( recordAbnormalParam ) ;
List < Map < String , Object > > abnormalClockInListByEvction = ( List < Map < String , Object > > ) recordEvection . get ( "abnormalClockInList" ) ;
List < Map < String , Object > > abnormalClockInListByEvction = ( List < Map < String , Object > > ) recordEvection . get ( "abnormalClockInList" ) ;
List < Map < String , Object > > evectionResultList = ( List < Map < String , Object > > ) recordEvection . get ( "resultList" ) ;
List < Map < String , Object > > evectionResultList = ( List < Map < String , Object > > ) recordEvection . get ( "resultList" ) ;
recordAbnormalParam . put ( "abnormalClockInList" , abnormalClockInListByEvction ) ;
recordAbnormalParam . put ( "abnormalClockInList" , abnormalClockInListByEvction ) ;
recordAbnormalParam . put ( "offsetEvectionAnomaly" , recordEvection . get ( "offsetEvectionAnomaly" ) ) ;
recordAbnormalParam . put ( "offsetEvectionAnomaly" , recordEvection . get ( "offsetEvectionAnomaly" ) ) ;
log . info ( "出差外出后消除的异常 : [{}]" , recordEvection . get ( "offsetEvectionAnomaly" ) ) ;
log . info ( "出差外出后消除的异常 : [{}]" , recordEvection . get ( "offsetEvectionAnomaly" ) ) ;
/ * *
/ * *
* 加 班
* 加 班
* /
* /
List < Map < String , Object > > recordWorkOverTime = updateAttendanceResultWrapper . recordWorkOverTime ( recordAbnormalParam ) ;
List < Map < String , Object > > recordWorkOverTime = updateAttendanceResultWrapper . recordWorkOverTime ( recordAbnormalParam ) ;
/ * *
/ * *
@ -310,54 +331,55 @@ public class AttendanceAnalysisWrapper extends Service {
/ * *
/ * *
* 入 库
* 入 库
* /
* /
List < Map < String , Object > > recordData = Lists . newArrayList ( ) ;
List < Map < String , Object > > recordData = Lists . newArrayList ( ) ;
recordData . addAll ( vactionList ) ;
recordData . addAll ( vactionList ) ;
recordData . addAll ( evectionResultList ) ;
recordData . addAll ( evectionResultList ) ;
abnormalClockInListByEvction = abnormalClockInListByEvction . stream ( ) . filter ( e - > ( boolean ) e . get ( "record" ) ) . collect ( Collectors . toList ( ) ) ;
abnormalClockInListByEvction = abnormalClockInListByEvction . stream ( ) . filter ( e - > ( boolean ) e . get ( "record" ) ) . collect ( Collectors . toList ( ) ) ;
recordData . addAll ( abnormalClockInListByEvction ) ;
recordData . addAll ( abnormalClockInListByEvction ) ;
recordData . addAll ( recordWorkOverTime ) ;
recordData . addAll ( recordWorkOverTime ) ;
recordParam . put ( "recordData" , recordData ) ;
recordParam . put ( "recordData" , recordData ) ;
recordParam . put ( "recordDataTime" , utilService . getNeedRecordClockInTime ( clcokInTimeData ) ) ;
recordParam . put ( "recordDataTime" , utilService . getNeedRecordClockInTime ( clcokInTimeData ) ) ;
recordParam . put ( "attendanceDuration" , attendanceDuration ) ;
recordParam . put ( "attendanceDuration" , attendanceDuration ) ;
log . info ( "recordParam : {}" , recordParam ) ;
log . info ( "recordParam : {}" , recordParam ) ;
if ( abnormalClockInListByEvction . size ( ) > 0 ) {
if ( abnormalClockInListByEvction . size ( ) > 0 ) {
recordParam . put ( "cqzt" , CheckBoxEnum . CHECKED . getKey ( ) ) ;
recordParam . put ( "cqzt" , CheckBoxEnum . CHECKED . getKey ( ) ) ;
} else {
} else {
recordParam . put ( "cqzt" , CheckBoxEnum . UNCHECKED . getKey ( ) ) ;
recordParam . put ( "cqzt" , CheckBoxEnum . UNCHECKED . getKey ( ) ) ;
}
}
//休息班次,休息班打卡自动加班不算自动加班,且为正常
//休息班次,休息班打卡自动加班不算自动加班,且为正常
if ( scheduleResult . get ( 0 ) . get ( "sfxx" ) ! = null & & CheckBoxEnum . CHECKED . getKey ( ) . equals ( scheduleResult . get ( 0 ) . get ( "sfxx" ) ) ) {
if ( scheduleResult . get ( 0 ) . get ( "sfxx" ) ! = null & & CheckBoxEnum . CHECKED . getKey ( ) . equals ( scheduleResult . get ( 0 ) . get ( "sfxx" ) ) ) {
recordParam . put ( "sfxx" , CheckBoxEnum . CHECKED . getKey ( ) ) ;
recordParam . put ( "sfxx" , CheckBoxEnum . CHECKED . getKey ( ) ) ;
recordParam . put ( "cqzt" , CheckBoxEnum . UNCHECKED . getKey ( ) ) ;
recordParam . put ( "cqzt" , CheckBoxEnum . UNCHECKED . getKey ( ) ) ;
recordParam . put ( "attendanceDuration" , 0 ) ;
recordParam . put ( "attendanceDuration" , 0 ) ;
}
}
utilService . recordItem ( recordParam ) ;
utilService . recordItem ( recordParam ) ;
return ( Map < String , Object > ) recordParam . get ( "recordDataTime" ) ;
return ( Map < String , Object > ) recordParam . get ( "recordDataTime" ) ;
}
}
/ * *
/ * *
* 合 并 请 假 或 出 差
* 合 并 请 假 或 出 差
*
* @param askForLeaveAndEvctionSchedule
* @param askForLeaveAndEvctionSchedule
* @param analysisDate
* @param analysisDate
* @return
* @return
* /
* /
public List < Map < String , Object > > mergeAskForLeaveAndEvctionSchedule ( List < Map < String , Object > > askForLeaveAndEvctionSchedule , String analysisDate ) {
public List < Map < String , Object > > mergeAskForLeaveAndEvctionSchedule ( List < Map < String , Object > > askForLeaveAndEvctionSchedule , String analysisDate ) {
askForLeaveAndEvctionSchedule = askForLeaveAndEvctionSchedule . stream ( ) . sorted ( Comparator . comparing ( e - > DateUtil . getTime ( Utils . getkssjTime ( e , analysisDate ) ) . toInstant ( ZoneOffset . of ( "+8" ) ) . toEpochMilli ( ) ) ) . collect ( Collectors . toList ( ) ) ;
askForLeaveAndEvctionSchedule = askForLeaveAndEvctionSchedule . stream ( ) . sorted ( Comparator . comparing ( e - > DateUtil . getTime ( Utils . getkssjTime ( e , analysisDate ) ) . toInstant ( ZoneOffset . of ( "+8" ) ) . toEpochMilli ( ) ) ) . collect ( Collectors . toList ( ) ) ;
for ( int i = 0 ; i < askForLeaveAndEvctionSchedule . size ( ) - 1 ; i + + ) {
for ( int i = 0 ; i < askForLeaveAndEvctionSchedule . size ( ) - 1 ; i + + ) {
String beforeDtkssj = askForLeaveAndEvctionSchedule . get ( i ) . get ( "dtkssj" ) . toString ( ) ;
String beforeDtkssj = askForLeaveAndEvctionSchedule . get ( i ) . get ( "dtkssj" ) . toString ( ) ;
String beforeDtjssj = askForLeaveAndEvctionSchedule . get ( i ) . get ( "dtjssj" ) . toString ( ) ;
String beforeDtjssj = askForLeaveAndEvctionSchedule . get ( i ) . get ( "dtjssj" ) . toString ( ) ;
for ( int j = i + 1 ; j < askForLeaveAndEvctionSchedule . size ( ) ; j + + ) {
for ( int j = i + 1 ; j < askForLeaveAndEvctionSchedule . size ( ) ; j + + ) {
String dtkssj = askForLeaveAndEvctionSchedule . get ( j ) . get ( "dtkssj" ) . toString ( ) ;
String dtkssj = askForLeaveAndEvctionSchedule . get ( j ) . get ( "dtkssj" ) . toString ( ) ;
String dtjssj = askForLeaveAndEvctionSchedule . get ( j ) . get ( "dtjssj" ) . toString ( ) ;
String dtjssj = askForLeaveAndEvctionSchedule . get ( j ) . get ( "dtjssj" ) . toString ( ) ;
if ( beforeDtjssj . equals ( dtkssj ) ) {
if ( beforeDtjssj . equals ( dtkssj ) ) {
askForLeaveAndEvctionSchedule . get ( i ) . put ( "dtjssj" , dtjssj ) ;
askForLeaveAndEvctionSchedule . get ( i ) . put ( "dtjssj" , dtjssj ) ;
askForLeaveAndEvctionSchedule . get ( i ) . put ( "jsdk" , askForLeaveAndEvctionSchedule . get ( j ) . get ( "jsdk" ) ) ;
askForLeaveAndEvctionSchedule . get ( i ) . put ( "jsdk" , askForLeaveAndEvctionSchedule . get ( j ) . get ( "jsdk" ) ) ;
askForLeaveAndEvctionSchedule . get ( i ) . put ( "thfghlfzs" , askForLeaveAndEvctionSchedule . get ( j ) . get ( "thfghlfzs" ) ) ;
askForLeaveAndEvctionSchedule . get ( i ) . put ( "thfghlfzs" , askForLeaveAndEvctionSchedule . get ( j ) . get ( "thfghlfzs" ) ) ;
askForLeaveAndEvctionSchedule . remove ( askForLeaveAndEvctionSchedule . get ( j ) ) ;
askForLeaveAndEvctionSchedule . remove ( askForLeaveAndEvctionSchedule . get ( j ) ) ;
j - - ;
j - - ;
i - - ;
i - - ;