@ -306,103 +306,6 @@ public class KQFormatData extends BaseBean {
List < Object > workFlow = null ;
bb . writeLog ( "format.groupId:" + workTime . getGroupId ( ) + "format.serialId:" + workTime . getSerialId ( ) ) ;
if ( ( workTime . getGroupId ( ) ! = null & & StringUtils . isNotBlank ( workTime . getGroupId ( ) ) ) & & LIST . contains ( workTime . getGroupId ( ) ) & & ( workTime . getSerialId ( ) = = null | | StringUtils . isBlank ( workTime . getSerialId ( ) ) ) ) {
bb . writeLog ( "start to Automatic shift alignment" + LIST ) ;
bb . writeLog ( "format.userId:" + userId + "format.kqDate:" + kqDate + "format.workTime:" + workTime + "format.workFlowInfo:" + workFlowInfo + "format.uuid:" + uuid ) ;
//责任制考勤组
//当天考勤标识
boolean kqFlag = false ;
boolean xxFlag = false ;
boolean ccFlag = false ;
boolean wqdkFlag = false ;
boolean qjFlag = false ;
String showaddress = "" ;
String dybc = "" ;
//1.查询该员工当天考勤地点(名称)
String sql = "select a.id as id ,a.longitude,a.latitude,a.showaddress,b.id as resourceid, b.lastname," +
" signdate, signtime from hrmschedulesign a left join hrmresource b on b.id = a.userid" +
" left join hrmdepartment c on c.id = b.departmentid" +
" where a.isincom = 1 and b.id = ? and a.signdate = ? order by a.signdate desc" ;
rt . executeQuery ( sql , userId , kqDate ) ;
if ( rt . next ( ) ) {
kqFlag = true ;
showaddress = Util . null2String ( rt . getString ( "showaddress" ) ) ;
}
bb . writeLog ( "sign showaddress:" + showaddress ) ;
//2.查询指定打卡地点的经纬度及范围的list
List < Map < String , String > > list2 = new ArrayList < > ( ) ;
//2.1查询出打卡地点经纬度建模list
String sql2 = "select kqdz,dybc from uf_jwdbj" ;
rt . execute ( sql2 ) ;
while ( rt . next ( ) ) {
Map < String , String > map = new HashMap < > ( ) ;
map . put ( "kqdz" , Util . null2String ( rt . getString ( "kqdz" ) ) ) ;
map . put ( "dybc" , Util . null2String ( rt . getString ( "dybc" ) ) ) ;
list2 . add ( map ) ;
}
bb . writeLog ( "uf_jwdbj.list2:" + list2 ) ;
//3.计算两点之间的距离是否大于范围值,小于则自动对班(白班)
for ( Map < String , String > map : list2 ) {
if ( map . get ( "kqdz" ) . equals ( showaddress ) ) {
dybc = map . get ( "dybc" ) ;
}
}
bb . writeLog ( "format.dybc:" + dybc ) ;
// 4.休息日或节假日给休息班次
int changeType = KQOvertimeRulesBiz . getChangeType ( userId , kqDate ) ;
bb . writeLog ( "format.changeType:" + changeType ) ;
//考勤当天是节假日或者休息日
if ( changeType = = 1 | | changeType = = 3 ) {
xxFlag = true ;
}
bb . writeLog ( "format.xxFlag:" + xxFlag ) ;
//5.外勤打卡(需要有打卡记录+对应的出差流程)
//5.1打卡记录查询
String wqSql = "select * from mobile_sign where operater = ? and operate_date = ? " ;
rt . executeQuery ( wqSql , userId , kqDate ) ;
if ( rt . next ( ) ) {
wqdkFlag = true ;
}
bb . writeLog ( "format.wqdkFlag:" + wqdkFlag ) ;
//5.2出差记录查询
String ccSql = "select currentnodetype from workflow_requestbase where requestid in " +
" (select requestId from formtable_main_61 where sqr = ? and " +
" (ksrq +' '+ kssj) <=? " +
" and (yjjsrq+' '+yjjssj) >=? " ;
rt . executeQuery ( ccSql , userId , kqDate , kqDate ) ;
if ( rt . next ( ) ) {
ccFlag = true ;
}
bb . writeLog ( "format.ccFlag:" + ccFlag ) ;
//6.查询该员工当天是否有已办结的请假流程(有:自动对班;否:不处理)
//6.1 查询当天是否有休假流程, 查询出流程requestid
String sql3 = "select currentnodetype from workflow_requestbase where requestid in (select requestid from kq_flow_split_leave where (fromdatedb +' '+ fromtimedb) <=? " +
"and (todatedb+' '+totimedb) >=?) and currentnodetype in ('1','3') " ;
//6.2 查询这些requestid是否在当天前( 包含当天) 已批准
rt . executeQuery ( sql3 , kqDate , kqDate ) ;
if ( rt . next ( ) ) {
qjFlag = true ;
}
bb . writeLog ( "format.qjFlag:" + qjFlag ) ;
//1.正常打卡给对应打卡地点对应班次
if ( kqFlag ) {
//指定白班
workTime . setSerialId ( dybc ) ;
}
if ( xxFlag ) {
//休息
workTime . setSerialId ( "-1" ) ;
}
if ( wqdkFlag & & ccFlag ) {
//外勤打卡+出差流程
workTime . setSerialId ( "9" ) ;
}
if ( qjFlag ) {
//请假流程指定白班
workTime . setSerialId ( "9" ) ;
}
bb . writeLog ( "format.serialIdLast:" + workTime . getSerialId ( ) ) ;
}
if ( workTime ! = null ) {
lsSignTime = workTime . getSignTime ( ) ; //允许打卡时间