@ -23,7 +23,6 @@ import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols ;
import java.text.SimpleDateFormat ;
import java.time.LocalDate ;
import java.time.LocalTime ;
import java.time.format.DateTimeFormatter ;
import java.util.concurrent.ConcurrentHashMap ;
import org.apache.commons.lang3.StringUtils ;
@ -168,7 +167,7 @@ public class KQFormatData extends BaseBean {
for ( int i = 0 ; i < lsParam . size ( ) ; i + + ) {
List < Object > param = lsParam . get ( i ) ;
boolean isok = rs . executeUpdate ( sql , param ) ;
kqLog . info ( "插入记录 :userId:"+ userId + ":kqDate:" + kqDate + ":param:" + JSON . toJSONString ( param ) + ":isok:" + isok + "::uuid::" + uuid ) ;
kqLog . info ( "插入记录 新 :userId:"+ userId + ":kqDate:" + kqDate + ":param:" + JSON . toJSONString ( param ) + ":isok:" + isok + "::uuid::" + uuid ) ;
}
sql = " insert into kq_format_total(resourceid,kqdate,subcompanyid,departmentid,jobtitle,groupid,serialid,workdays,workmins," +
@ -194,7 +193,6 @@ public class KQFormatData extends BaseBean {
boolean isok2 = rs . executeUpdate ( sql , userId , kqDate ) ;
kqLog . info ( "插入记录2新:userId:" + userId + ":kqDate:" + kqDate + ":isok:" + isok2 ) ;
kqLog . info ( "sqlTotal:" + sql ) ;
}
} else {
Map < String , Object > definedFieldInfo = new KQFormatBiz ( ) . getDefinedField ( ) ;
@ -274,9 +272,6 @@ public class KQFormatData extends BaseBean {
// }
// // 考勤二开--出差餐补
// String mealAllowance = getMealAllowance(userId, kqDate);
// if (!(StringUtils.equals(statAllowance, "0") && StringUtils.equals(otherStatAllowance, "0"))) {
// mealAllowance = "0";
// }
// bb.writeLog("mealAllowance:" + mealAllowance);
// if (StringUtils.isEmpty(mealAllowance)) {
// mealAllowance = "0";
@ -515,7 +510,7 @@ public class KQFormatData extends BaseBean {
//取卡
List < Object > lsCheckInfo = new KQFormatSignData ( ) . getSignInfo ( userId , signTimeScope , workTimeScope , kqDate , preDate , nextDate , kqTimesArrayComInfo , hostIps , uuid , shiftCount , shiftI ) ;
// bb.writeLog("kqformatdata lscheckinfo: " + lsCheckInfo);
bb . writeLog ( "kqformatdata lscheckinfo: " + lsCheckInfo ) ;
kqLog . info ( "lsCheckInfo" + JSONObject . toJSONString ( lsCheckInfo ) + "::userId" + userId + "kqDate==" + kqDate + ":hostIps:" + hostIps + ":uuid::" + uuid ) ;
if ( this . writeLog ) {
logInfo . put ( "" + weaver . systeminfo . SystemEnv . getHtmlLabelName ( 10005297 , weaver . general . ThreadVarLanguage . getLang ( ) ) + "" , signBeginDateTime ) ;
@ -528,7 +523,7 @@ public class KQFormatData extends BaseBean {
for ( int j = 0 ; lsCheckInfo ! = null & & j < lsCheckInfo . size ( ) ; j + + ) {
Map < String , Object > checkInfo = ( Map < String , Object > ) lsCheckInfo . get ( j ) ;
// bb.writeLog("kqformatdata checkInfo: " + checkInfo);
bb . writeLog ( "kqformatdata checkInfo: " + checkInfo ) ;
String signStatus = Util . null2String ( checkInfo . get ( "signStatus" ) ) ;
String signId = Util . null2String ( checkInfo . get ( "signId" ) ) ;
@ -726,10 +721,10 @@ public class KQFormatData extends BaseBean {
if ( workFlowInfo . get ( dateKey ) ! = null ) {
workFlow = ( List < Object > ) workFlowInfo . get ( dateKey ) ;
}
// bb.writeLog("kqformatdata workFlow: " + workFlow);
bb . writeLog ( "kqformatdata workFlow: " + workFlow ) ;
for ( int j = 0 ; workFlow ! = null & & j < workFlow . size ( ) ; j + + ) {
Map < String , Object > data = ( Map < String , Object > ) workFlow . get ( j ) ;
// bb.writeLog("kqformatdata workFlow data: " + workFlow);
bb . writeLog ( "kqformatdata workFlow data: " + workFlow ) ;
String flowType = Util . null2String ( data . get ( "flowtype" ) ) ;
String newLeaveType = Util . null2String ( data . get ( "newleavetype" ) ) ;
String signtype = Util . null2String ( data . get ( "signtype" ) ) ;
@ -878,6 +873,7 @@ public class KQFormatData extends BaseBean {
kqShiftRuleEntity . setForgotBeginWorkCheckMins ( forgotBeginWorkCheckMins ) ;
kqShiftRuleEntity . setEarlyInMins ( earlyInMins ) ;
kqShiftRuleEntity . setLateOutMins ( lateOutMins ) ;
kqShiftRuleEntity . setNosign_is_absent ( nosign_is_absent ) ;
kqLog . info ( "人性化规则处理前数据" + JSONObject . toJSONString ( kqShiftRuleEntity ) ) ;
bb . writeLog ( "人性化规则处理前数据: " + JSONObject . toJSONString ( kqShiftRuleEntity ) ) ;
@ -979,6 +975,21 @@ public class KQFormatData extends BaseBean {
if ( beforeBegin | | attendanceMins < 0 ) { //还未到上班时间,不用计算任何状体
attendanceMins = 0 ;
}
/ * *
* 汇 总 报 表 的 日 历 显 示 是 有 旷 工 就 不 显 示 漏 签 了 , 如 果 这 里 还 统 计 漏 签 , 张 总 表 示 日 历 也 需 要 修 改 , 改 不 动 了
* 在 处 理 完 实 际 出 勤 之 后 , 将 漏 签 还 原
* /
String nosign_ishandle = Util . null2String ( kqShiftRuleEntity . getNosign_ishandle ( ) ) ;
if ( "1" . equals ( nosign_ishandle ) ) {
forgotCheckMins = 0 ;
} else if ( "2" . equals ( nosign_ishandle ) ) {
forgotCheckMins = 0 ;
forgotBeginWorkCheckMins = 0 ;
}
kqLog . info ( "实际出勤计算公式" + "实际出勤=应出勤- 旷工-请假-迟到-早退 userId" + userId + "kqDate==" + kqDate + ":hostIps:" + hostIps + ":uuid::" + uuid ) ;
kqLog . info ( "实际出勤计算结果" + attendanceMins + "=" + workMins + "- " + absenteeismMins + "-" + leaveMins + "-" + ( beLateMins + graveBeLateMins ) + "-" + ( leaveEarlyMins - graveLeaveEarlyMins ) + " userId" + userId + "kqDate==" + kqDate + ":hostIps:" + hostIps + ":uuid::" + uuid ) ;
bb . writeLog ( "实际出勤计算结果" + attendanceMins + "=" + workMins + "- " + absenteeismMins + "-" + leaveMins + "-" + ( beLateMins + graveBeLateMins ) + "-" + ( leaveEarlyMins - graveLeaveEarlyMins ) + " userId" + userId + "kqDate==" + kqDate + ":hostIps:" + hostIps ) ;
@ -1200,7 +1211,7 @@ public class KQFormatData extends BaseBean {
params . add ( zeroPointSub ) ;
/*考勤二开--零点补助end*/
bb . writeLog ( "params end. " ) ;
bb . writeLog ( "params : " + params ) ;
Map < String , Object > definedFieldInfo = new KQFormatBiz ( ) . getDefinedField ( ) ;
String [ ] definedFields = Util . splitString ( Util . null2String ( definedFieldInfo . get ( "definedField" ) ) , "," ) ;
@ -1426,43 +1437,17 @@ public class KQFormatData extends BaseBean {
nightShiftList . add ( shift ) ;
}
}
//获取加班时长
Map < String , Object > dailyFlowOverTimeData = getDailyFlowOverTimeDataAllowance ( userId , kqDate ) ;
// 获取责任制、排班次班次
Set < String > zrzbcSet = new HashSet < > ( ) ;
Set < String > pbzbcSet = new HashSet < > ( ) ;
String acqSql = "select kqgroup, grouptype from uf_ZeroPointSubSft" ;
rs . executeQuery ( acqSql ) ;
while ( rs . next ( ) ) {
String kqgroup = Util . null2String ( rs . getString ( "kqgroup" ) ) ;
String grouptype = Util . null2String ( rs . getString ( "grouptype" ) ) ;
if ( StringUtils . isNotBlank ( kqgroup ) & & StringUtils . equals ( grouptype , "0" ) ) {
zrzbcSet . addAll ( Arrays . asList ( kqgroup . split ( "," ) ) ) ;
}
if ( StringUtils . isNotBlank ( kqgroup ) & & StringUtils . equals ( grouptype , "1" ) ) {
pbzbcSet . addAll ( Arrays . asList ( kqgroup . split ( "," ) ) ) ;
}
}
if ( nightShiftList ! = null & nightShiftList . size ( ) > 0 ) {
KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo ( ) ;
HostarUtil houtil = new HostarUtil ( ) ;
//先获取到出勤时长
Map < String , Double > signminsMap = new HashMap < > ( ) ;
Map < String , Double > attendanceMinsMap = new HashMap < > ( ) ;
String acqAttenSql = " select resourceid, attendancemins, kqdate ,signmins from kq_format_total where resourceid in (" + userId + ") and kqdate >='" + kqDate + "' and kqdate <='" + kqDate + "'" ;
String acqAttenSql = " select resourceid, attendancemins, kqdate from kq_format_total where resourceid in (" + userId + ") and kqdate >='" + kqDate + "' and kqdate <='" + kqDate + "'" ;
rs . executeQuery ( acqAttenSql ) ;
while ( rs . next ( ) ) {
String resourceid = Util . null2String ( rs . getString ( "resourceid" ) ) ;
Double attendancemins = Util . getDoubleValue ( Util . null2String ( rs . getString ( "attendancemins" ) ) ) ;
Double signmins = Util . getDoubleValue ( Util . null2String ( rs . getString ( "signmins" ) ) ) ;
String kqdate = Util . null2String ( rs . getString ( "kqdate" ) ) ;
if ( signmins > = 0.00 ) {
signminsMap . put ( resourceid + "|" + kqdate , signmins ) ;
}
if ( attendancemins > = 0.00 ) {
attendanceMinsMap . put ( resourceid + "|" + kqdate , attendancemins ) ;
}
@ -1477,38 +1462,11 @@ public class KQFormatData extends BaseBean {
if ( ! nightShiftList . contains ( String . valueOf ( serialid ) ) ) {
return "0" ;
}
} else {
return "0" ;
}
}
String groupId = kqGroupMemberComInfo . getKQGroupId ( userId , kqDate ) ;
if ( ( ! CollectionUtils . isEmpty ( pbzbcSet ) ) & & pbzbcSet . contains ( groupId ) ) {
double workingDayOvertime_4leave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( userId + "|" + kqDate + "|workingDayOvertime_4leave" ) ) ) ;
workingDayOvertime_4leave = workingDayOvertime_4leave < 0 ? 0 : workingDayOvertime_4leave ;
double restDayOvertime_4leave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( userId + "|" + kqDate + "|restDayOvertime_4leave" ) ) ) ;
restDayOvertime_4leave = restDayOvertime_4leave < 0 ? 0 : restDayOvertime_4leave ;
double holidayOvertime_4leave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( userId + "|" + kqDate + "|holidayOvertime_4leave" ) ) ) ;
holidayOvertime_4leave = holidayOvertime_4leave < 0 ? 0 : holidayOvertime_4leave ;
double workingDayOvertime_nonleave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( userId + "|" + kqDate + "|workingDayOvertime_nonleave" ) ) ) ;
workingDayOvertime_nonleave = workingDayOvertime_nonleave < 0 ? 0 : workingDayOvertime_nonleave ;
double restDayOvertime_nonleave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( userId + "|" + kqDate + "|restDayOvertime_nonleave" ) ) ) ;
restDayOvertime_nonleave = restDayOvertime_nonleave < 0 ? 0 : restDayOvertime_nonleave ;
double holidayOvertime_nonleave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( userId + "|" + kqDate + "|holidayOvertime_nonleave" ) ) ) ;
holidayOvertime_nonleave = holidayOvertime_nonleave < 0 ? 0 : holidayOvertime_nonleave ;
double temp = workingDayOvertime_4leave + restDayOvertime_4leave + holidayOvertime_4leave +
workingDayOvertime_nonleave + restDayOvertime_nonleave + holidayOvertime_nonleave ;
Double attendanceMins = Util . getDoubleValue ( Util . null2String ( attendanceMinsMap . get ( userId + "|" + kqDate ) ) ) ;
value = ( Math . floor ( ( ( attendanceMins < 0.00 ? 0.00 : attendanceMins ) + temp ) / 60 ) > = 8.00 ) ? "1" : "0" ;
}
if ( ( ! CollectionUtils . isEmpty ( zrzbcSet ) ) & & zrzbcSet . contains ( groupId ) ) {
Double signmins = Util . getDoubleValue ( Util . null2String ( signminsMap . get ( userId + "|" + kqDate ) ) ) ;
value = ( ( signmins / 60 ) > = 9.00 ) ? "1" : "0" ;
}
Double attendanceMins = Util . getDoubleValue ( Util . null2String ( attendanceMinsMap . get ( userId + "|" + kqDate ) ) ) ;
value = ( ( attendanceMins / 60 ) > = 8.00 ) ? "1" : "0" ;
}
} catch ( Exception e ) {
bb . writeLog ( "get NightShiftSubsidy error:" + e . getMessage ( ) ) ;
@ -1529,28 +1487,12 @@ public class KQFormatData extends BaseBean {
//获取加班时长
Map < String , Object > dailyFlowOverTimeData = getDailyFlowOverTimeDataAllowance ( userId , kqDate ) ;
// 获取责任制、排班次班次
Set < String > zrzbcSet = new HashSet < > ( ) ;
Set < String > pbzbcSet = new HashSet < > ( ) ;
String acqSql = "select kqgroup, grouptype from uf_ZeroPointSubSft" ;
rs . executeQuery ( acqSql ) ;
while ( rs . next ( ) ) {
String kqgroup = Util . null2String ( rs . getString ( "kqgroup" ) ) ;
String grouptype = Util . null2String ( rs . getString ( "grouptype" ) ) ;
if ( StringUtils . isNotBlank ( kqgroup ) & & StringUtils . equals ( grouptype , "0" ) ) {
zrzbcSet . addAll ( Arrays . asList ( kqgroup . split ( "," ) ) ) ;
}
if ( StringUtils . isNotBlank ( kqgroup ) & & StringUtils . equals ( grouptype , "1" ) ) {
pbzbcSet . addAll ( Arrays . asList ( kqgroup . split ( "," ) ) ) ;
}
}
String otherstatsub = Util . null2String ( bb . getPropValue ( "project_hostar" , "otherstatsubcompany" ) ) ;
if ( StringUtils . isNotBlank ( otherstatsub ) ) {
//查询该分部下的人员
List < String > resIds = new ArrayList < > ( ) ;
sqlWhere + = " and a.subcompanyid1 in (" + otherstatsub + ") " ;
String acqResSql = "select a.id from hrmresource a where 1=1 " + sqlWhere ;
String acqResSql = "select a.id from hrmresource a where a.status in (0,1,2,3) " + sqlWhere ;
bb . writeLog ( "acqResSql: " + acqResSql ) ;
rs . executeQuery ( acqResSql ) ;
@ -1560,29 +1502,21 @@ public class KQFormatData extends BaseBean {
resIds . add ( id ) ;
}
}
// bb.writeLog("resIds: " + resIds);
KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo ( ) ;
bb . writeLog ( "resIds: " + resIds ) ;
if ( resIds ! = null & & resIds . size ( ) > 0 & & StringUtils . isNotBlank ( kqDate ) ) {
HostarUtil houtil = new HostarUtil ( ) ;
//先获取到实际打卡时长
Map < String , Double > signminsMap = new HashMap < > ( ) ;
//先获取到出勤时长
Map < String , Double > attendanceMinsMap = new HashMap < > ( ) ;
String acqAttenSql = " select resourceid, attendancemins, kqdate ,signmins from kq_format_total where resourceid in (" + String . join ( "," , resIds ) + ") and kqdate >='" + kqDate + "' and kqdate <='" + kqDate + "'" ;
String acqAttenSql = " select resourceid, attendancemins, kqdate from kq_format_total where resourceid in (" + String . join ( "," , resIds ) + ") and kqdate >='" + kqDate + "' and kqdate <='" + kqDate + "'" ;
rs . executeQuery ( acqAttenSql ) ;
while ( rs . next ( ) ) {
String resourceid = Util . null2String ( rs . getString ( "resourceid" ) ) ;
Double attendancemins = Util . getDoubleValue ( Util . null2String ( rs . getString ( "attendancemins" ) ) ) ;
Double signmins = Util . getDoubleValue ( Util . null2String ( rs . getString ( "signmins" ) ) ) ;
String kqdate = Util . null2String ( rs . getString ( "kqdate" ) ) ;
if ( signmins > = 0.00 ) {
// double signTemp = signmins / 60;
// int quotient = (int) (signTemp / 6);
signminsMap . put ( resourceid + "|" + kqdate , signmins ) ;
}
if ( attendancemins > = 0.00 ) {
attendanceMinsMap . put ( resourceid + "|" + kqdate , attendancemins ) ;
if ( attendancemins > = 0.00 ) {
attendanceMinsMap . put ( resourceid + "|" + kqdate , attendancemins ) ;
}
}
List < String > removeRes = new ArrayList < > ( ) ;
@ -1684,74 +1618,43 @@ public class KQFormatData extends BaseBean {
}
Integer signNumber = 0 ;
if ( signIdList ! = null & & signIdList . size ( ) > 0 ) {
String acqShowAddress = "select showaddress,addr ,signfrom from hrmschedulesign where id in (" + String . join ( "," , signIdList ) + ") " ;
String acqShowAddress = "select showaddress,addr from hrmschedulesign where id in (" + String . join ( "," , signIdList ) + ") " ;
// bb.writeLog("acqShowAddress: " + acqShowAddress);
rs . executeQuery ( acqShowAddress ) ;
while ( rs . next ( ) ) {
String showaddress = Util . null2String ( rs . getString ( "showaddress" ) ) ;
String signfrom = Util . null2String ( rs . getString ( "signfrom" ) ) ;
if ( StringUtils . isEmpty ( signfrom ) | | ! StringUtils . equals ( signfrom , "e9mobile" ) ) {
signNumber = signNumber + 1 ;
}
String addr = Util . null2String ( rs . getString ( "addr" ) ) ;
if ( "鸿仕达" . equals ( showaddress ) | | "hostar" . equalsIgnoreCase ( showaddress ) | | "鸿仕达" . equals ( addr ) | | "hostar" . equalsIgnoreCase ( addr ) ) {
signNumber = signNumber + 1 ;
}
if ( StringUtils . isNotEmpty ( showaddress ) & & ( showaddress . contains ( "鸿仕达" ) | | showaddress . toLowerCase ( ) . contains ( "hostar" ) ) ) {
signNumber = signNumber + 1 ;
}
if ( StringUtils . isNotEmpty ( addr ) & & ( addr . contains ( "鸿仕达" ) | | addr . toLowerCase ( ) . contains ( "hostar" ) ) ) {
signNumber = signNumber + 1 ;
}
if ( StringUtils . isNotEmpty ( showaddress ) & & ( showaddress . contains ( "台湾" ) | | showaddress . contains ( "越南" )
| | showaddress . toLowerCase ( ) . contains ( "hostar" ) | | showaddress . toLowerCase ( ) . contains ( "vinh" ) | | showaddress . toLowerCase ( ) . contains ( "ha noi" ) ) ) {
signNumber = signNumber + 1 ;
}
if ( StringUtils . isNotEmpty ( addr ) & & ( addr . contains ( "台湾" ) | | addr . contains ( "越南" )
| | addr . toLowerCase ( ) . contains ( "hostar" ) | | addr . toLowerCase ( ) . contains ( "vinh" ) | | addr . toLowerCase ( ) . contains ( "ha noi" ) ) ) {
signNumber = signNumber + 1 ;
}
}
}
if ( signNumber = = 0 ) {
double workingDayOvertime_4leave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|workingDayOvertime_4leave" ) ) ) ;
workingDayOvertime_4leave = workingDayOvertime_4leave < 0 ? 0 : workingDayOvertime_4leave ;
double restDayOvertime_4leave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|restDayOvertime_4leave" ) ) ) ;
restDayOvertime_4leave = restDayOvertime_4leave < 0 ? 0 : restDayOvertime_4leave ;
double holidayOvertime_4leave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|holidayOvertime_4leave" ) ) ) ;
holidayOvertime_4leave = holidayOvertime_4leave < 0 ? 0 : holidayOvertime_4leave ;
String groupId = kqGroupMemberComInfo . getKQGroupId ( res , kqDate ) ;
double workingDayOvertime_nonleave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|workingDayOvertime_nonleave" ) ) ) ;
workingDayOvertime_nonleave = workingDayOvertime_nonleave < 0 ? 0 : workingDayOvertime_nonleave ;
double restDayOvertime_nonleave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|restDayOvertime_nonleave" ) ) ) ;
restDayOvertime_nonleave = restDayOvertime_nonleave < 0 ? 0 : restDayOvertime_nonleave ;
double holidayOvertime_nonleave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|holidayOvertime_nonleave" ) ) ) ;
holidayOvertime_nonleave = holidayOvertime_nonleave < 0 ? 0 : holidayOvertime_nonleave ;
if ( signNumber = = 0 ) {
double minValue = 0.00 ;
if ( ( ! CollectionUtils . isEmpty ( pbzbcSet ) ) & & pbzbcSet . contains ( groupId ) ) {
double workingDayOvertime_4leave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|workingDayOvertime_4leave" ) ) ) ;
workingDayOvertime_4leave = workingDayOvertime_4leave < 0 ? 0 : workingDayOvertime_4leave ;
double restDayOvertime_4leave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|restDayOvertime_4leave" ) ) ) ;
restDayOvertime_4leave = restDayOvertime_4leave < 0 ? 0 : restDayOvertime_4leave ;
double holidayOvertime_4leave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|holidayOvertime_4leave" ) ) ) ;
holidayOvertime_4leave = holidayOvertime_4leave < 0 ? 0 : holidayOvertime_4leave ;
double workingDayOvertime_nonleave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|workingDayOvertime_nonleave" ) ) ) ;
workingDayOvertime_nonleave = workingDayOvertime_nonleave < 0 ? 0 : workingDayOvertime_nonleave ;
double restDayOvertime_nonleave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|restDayOvertime_nonleave" ) ) ) ;
restDayOvertime_nonleave = restDayOvertime_nonleave < 0 ? 0 : restDayOvertime_nonleave ;
double holidayOvertime_nonleave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|holidayOvertime_nonleave" ) ) ) ;
holidayOvertime_nonleave = holidayOvertime_nonleave < 0 ? 0 : holidayOvertime_nonleave ;
double temp = workingDayOvertime_4leave + restDayOvertime_4leave + holidayOvertime_4leave +
workingDayOvertime_nonleave + restDayOvertime_nonleave + holidayOvertime_nonleave ;
Double attendanceMins = Util . getDoubleValue ( Util . null2String ( attendanceMinsMap . get ( res + "|" + kqDate ) ) ) ;
if ( attendanceMins < 0.00 ) {
attendanceMins = 0.00 ;
}
minValue = attendanceMins + temp ;
double v = Math . round ( Math . max ( minValue , 0.00 ) ) / 60.00 ;
value = "0" ;
if ( v > = 4.00 & & v < 9.00 ) {
value = "1" ;
} else if ( v > = 9.00 ) {
value = "2" ;
}
}
if ( ( ! CollectionUtils . isEmpty ( zrzbcSet ) ) & & zrzbcSet . contains ( groupId ) ) {
minValue = Util . getDoubleValue ( Util . null2String ( signminsMap . get ( res + "|" + kqDate ) ) ) ;
value = String . valueOf ( Math . floor ( ( Math . max ( minValue , 0.00 ) ) / 360 ) ) ;
double temp = workingDayOvertime_4leave + restDayOvertime_4leave + holidayOvertime_4leave +
workingDayOvertime_nonleave + restDayOvertime_nonleave + holidayOvertime_nonleave ;
// bb.writeLog("-=-temp:" + temp);
Double attendanceMins = Util . getDoubleValue ( Util . null2String ( attendanceMinsMap . get ( res + "|" + kqDate ) ) ) ;
// bb.writeLog("-=-attendanceMins:" + attendanceMins);
double v = Math . round ( ( ( attendanceMins < 0.00 ) ? 0.00 : attendanceMins ) + temp ) / 60.00 ;
value = "0" ;
if ( v > = 4.00 & & v < 9.00 ) {
value = "1" ;
} else if ( v > = 9.00 ) {
value = "2" ;
}
}
}
@ -1841,22 +1744,6 @@ public class KQFormatData extends BaseBean {
//获取加班时长
Map < String , Object > dailyFlowOverTimeData = getDailyFlowOverTimeDataAllowance ( userId , kqDate ) ;
// 获取责任制、排班次班次
Set < String > zrzbcSet = new HashSet < > ( ) ;
Set < String > pbzbcSet = new HashSet < > ( ) ;
String acqSql = "select kqgroup, grouptype from uf_ZeroPointSubSft" ;
rs . executeQuery ( acqSql ) ;
while ( rs . next ( ) ) {
String kqgroup = Util . null2String ( rs . getString ( "kqgroup" ) ) ;
String grouptype = Util . null2String ( rs . getString ( "grouptype" ) ) ;
if ( StringUtils . isNotBlank ( kqgroup ) & & StringUtils . equals ( grouptype , "0" ) ) {
zrzbcSet . addAll ( Arrays . asList ( kqgroup . split ( "," ) ) ) ;
}
if ( StringUtils . isNotBlank ( kqgroup ) & & StringUtils . equals ( grouptype , "1" ) ) {
pbzbcSet . addAll ( Arrays . asList ( kqgroup . split ( "," ) ) ) ;
}
}
//获取夜班班次
List < String > nightShiftList = new ArrayList < > ( ) ;
String acqNightShiftSql = "select shift from uf_nightshiftmanage where isdelete is null or isdelete = 0" ;
@ -1873,7 +1760,7 @@ public class KQFormatData extends BaseBean {
//查询该分部下的人员
List < String > resIds = new ArrayList < > ( ) ;
sqlWhere + = " and a.subcompanyid1 in (" + nightshiftsub + ") " ;
String acqResSql = "select a.id from hrmresource a where 1=1 " + sqlWhere ;
String acqResSql = "select a.id from hrmresource a where a.status in (0,1,2,3) " + sqlWhere ;
bb . writeLog ( "acqResSql: " + acqResSql ) ;
rs . executeQuery ( acqResSql ) ;
@ -1883,28 +1770,20 @@ public class KQFormatData extends BaseBean {
resIds . add ( id ) ;
}
}
// bb.writeLog("resIds: " + resIds);
KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo ( ) ;
bb . writeLog ( "resIds: " + resIds ) ;
if ( resIds ! = null & & resIds . size ( ) > 0 ) {
HostarUtil houtil = new HostarUtil ( ) ;
//先获取到出勤时长
Map < String , Double > signminsMap = new HashMap < > ( ) ;
Map < String , Double > attendanceMinsMap = new HashMap < > ( ) ;
String acqAttenSql = " select resourceid, attendancemins, kqdate ,signmins from kq_format_total where resourceid in (" + String . join ( "," , resIds ) + ") and kqdate >='" + kqDate + "' and kqdate <='" + kqDate + "'" ;
String acqAttenSql = " select resourceid, attendancemins, kqdate from kq_format_total where resourceid in (" + String . join ( "," , resIds ) + ") and kqdate >='" + kqDate + "' and kqdate <='" + kqDate + "'" ;
rs . executeQuery ( acqAttenSql ) ;
while ( rs . next ( ) ) {
String resourceid = Util . null2String ( rs . getString ( "resourceid" ) ) ;
Double attendancemins = Util . getDoubleValue ( Util . null2String ( rs . getString ( "attendancemins" ) ) ) ;
Double signmins = Util . getDoubleValue ( Util . null2String ( rs . getString ( "signmins" ) ) ) ;
String kqdate = Util . null2String ( rs . getString ( "kqdate" ) ) ;
if ( signmins > = 0.00 ) {
// double signTemp = signmins / 60;
// int quotient = (int) (signTemp / 6);
signminsMap . put ( resourceid + "|" + kqdate , signmins ) ;
}
if ( attendancemins > = 0.00 ) {
attendanceMinsMap . put ( resourceid + "|" + kqdate , attendancemins ) ;
if ( attendancemins > = 0.00 ) {
attendanceMinsMap . put ( resourceid + "|" + kqdate , attendancemins ) ;
}
}
KQWorkTime kqWorkTime = new KQWorkTime ( ) ;
@ -1917,43 +1796,28 @@ public class KQFormatData extends BaseBean {
if ( ! nightShiftList . contains ( String . valueOf ( serialid ) ) ) {
continue ;
}
} else {
continue ;
}
}
double workingDayOvertime_4leave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|workingDayOvertime_4leave" ) ) ) ;
workingDayOvertime_4leave = workingDayOvertime_4leave < 0 ? 0 : workingDayOvertime_4leave ;
double restDayOvertime_4leave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|restDayOvertime_4leave" ) ) ) ;
restDayOvertime_4leave = restDayOvertime_4leave < 0 ? 0 : restDayOvertime_4leave ;
double holidayOvertime_4leave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|holidayOvertime_4leave" ) ) ) ;
holidayOvertime_4leave = holidayOvertime_4leave < 0 ? 0 : holidayOvertime_4leave ;
Object groupIdObj = serialInfo . get ( "groupId" ) ;
String groupId = null ;
if ( Objects . isNull ( groupIdObj ) ) {
groupId = kqGroupMemberComInfo . getKQGroupId ( res , kqDate ) ;
} else {
groupId = groupIdObj . toString ( ) ;
}
double workingDayOvertime_nonleave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|workingDayOvertime_nonleave" ) ) ) ;
workingDayOvertime_nonleave = workingDayOvertime_nonleave < 0 ? 0 : workingDayOvertime_nonleave ;
double restDayOvertime_nonleave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|restDayOvertime_nonleave" ) ) ) ;
restDayOvertime_nonleave = restDayOvertime_nonleave < 0 ? 0 : restDayOvertime_nonleave ;
double holidayOvertime_nonleave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|holidayOvertime_nonleave" ) ) ) ;
holidayOvertime_nonleave = holidayOvertime_nonleave < 0 ? 0 : holidayOvertime_nonleave ;
if ( ( ! CollectionUtils . isEmpty ( pbzbcSet ) ) & & pbzbcSet . contains ( groupId ) ) {
double workingDayOvertime_4leave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|workingDayOvertime_4leave" ) ) ) ;
workingDayOvertime_4leave = workingDayOvertime_4leave < 0 ? 0 : workingDayOvertime_4leave ;
double restDayOvertime_4leave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|restDayOvertime_4leave" ) ) ) ;
restDayOvertime_4leave = restDayOvertime_4leave < 0 ? 0 : restDayOvertime_4leave ;
double holidayOvertime_4leave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|holidayOvertime_4leave" ) ) ) ;
holidayOvertime_4leave = holidayOvertime_4leave < 0 ? 0 : holidayOvertime_4leave ;
double workingDayOvertime_nonleave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|workingDayOvertime_nonleave" ) ) ) ;
workingDayOvertime_nonleave = workingDayOvertime_nonleave < 0 ? 0 : workingDayOvertime_nonleave ;
double restDayOvertime_nonleave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|restDayOvertime_nonleave" ) ) ) ;
restDayOvertime_nonleave = restDayOvertime_nonleave < 0 ? 0 : restDayOvertime_nonleave ;
double holidayOvertime_nonleave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|holidayOvertime_nonleave" ) ) ) ;
holidayOvertime_nonleave = holidayOvertime_nonleave < 0 ? 0 : holidayOvertime_nonleave ;
double temp = workingDayOvertime_4leave + restDayOvertime_4leave + holidayOvertime_4leave +
workingDayOvertime_nonleave + restDayOvertime_nonleave + holidayOvertime_nonleave ;
Double attendanceMins = Util . getDoubleValue ( Util . null2String ( attendanceMinsMap . get ( res + "|" + kqDate ) ) ) ;
value = String . valueOf ( Math . floor ( ( ( attendanceMins < 0.00 ? 0.00 : attendanceMins ) + temp ) / 300 ) ) ;
}
if ( ( ! CollectionUtils . isEmpty ( zrzbcSet ) ) & & zrzbcSet . contains ( groupId ) ) {
Double signmins = Util . getDoubleValue ( Util . null2String ( signminsMap . get ( res + "|" + kqDate ) ) ) ;
value = String . valueOf ( Math . floor ( ( signmins < 0.00 ? 0.00 : signmins ) / 360 ) ) ;
}
double temp = workingDayOvertime_4leave + restDayOvertime_4leave + holidayOvertime_4leave +
workingDayOvertime_nonleave + restDayOvertime_nonleave + holidayOvertime_nonleave ;
// bb.writeLog("-=-temp:" + temp);
Double attendanceMins = Util . getDoubleValue ( Util . null2String ( attendanceMinsMap . get ( res + "|" + kqDate ) ) ) ;
// bb.writeLog("-=-attendanceMins:" + attendanceMins);
value = String . valueOf ( Math . floor ( ( ( attendanceMins < 0.00 ? 0.00 : attendanceMins ) + temp ) / 300 ) ) ;
}
}
}
@ -1997,22 +1861,6 @@ public class KQFormatData extends BaseBean {
sqlWhere + = " and a.subcompanyid1 not in (" + subComoanys + ") " ;
}
// 获取责任制、排班次班次
Set < String > zrzbcSet = new HashSet < > ( ) ;
Set < String > pbzbcSet = new HashSet < > ( ) ;
String acqSql = "select kqgroup, grouptype from uf_ZeroPointSubSft" ;
rs . executeQuery ( acqSql ) ;
while ( rs . next ( ) ) {
String kqgroup = Util . null2String ( rs . getString ( "kqgroup" ) ) ;
String grouptype = Util . null2String ( rs . getString ( "grouptype" ) ) ;
if ( StringUtils . isNotBlank ( kqgroup ) & & StringUtils . equals ( grouptype , "0" ) ) {
zrzbcSet . addAll ( Arrays . asList ( kqgroup . split ( "," ) ) ) ;
}
if ( StringUtils . isNotBlank ( kqgroup ) & & StringUtils . equals ( grouptype , "1" ) ) {
pbzbcSet . addAll ( Arrays . asList ( kqgroup . split ( "," ) ) ) ;
}
}
//指定人员不享受
List < String > noRes = new ArrayList < > ( ) ;
String acqNoResSql = "select resourceid from uf_NoStatAllRes where isdelete = 0 or isdelete is null" ;
@ -2029,7 +1877,7 @@ public class KQFormatData extends BaseBean {
List < String > resIds = new ArrayList < > ( ) ;
String acqResSql = "select a.id from hrmresource a where 1=1 " + sqlWhere ;
String acqResSql = "select a.id from hrmresource a where a.status in (0,1,2,3) " + sqlWhere ;
bb . writeLog ( "acqResSql: " + acqResSql ) ;
rs . executeQuery ( acqResSql ) ;
@ -2039,28 +1887,21 @@ public class KQFormatData extends BaseBean {
resIds . add ( id ) ;
}
}
// bb.writeLog("resIds: " + resIds);
bb . writeLog ( "resIds: " + resIds ) ;
if ( resIds ! = null & & resIds . size ( ) > 0 & & StringUtils . isNotBlank ( kqDate ) ) {
HostarUtil houtil = new HostarUtil ( ) ;
KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo ( ) ;
//先获取到实际打卡时长
Map < String , Double > signminsMap = new HashMap < > ( ) ;
//先获取到出勤时长
Map < String , Double > attendanceMinsMap = new HashMap < > ( ) ;
String acqAttenSql = " select resourceid, attendancemins, kqdate ,signmins from kq_format_total where resourceid in (" + String . join ( "," , resIds ) + ") and kqdate >='" + kqDate + "' and kqdate <='" + kqDate + "'" ;
String acqAttenSql = " select resourceid, attendancemins, kqdate from kq_format_total where resourceid in (" + String . join ( "," , resIds ) + ") and kqdate >='" + kqDate + "' and kqdate <='" + kqDate + "'" ;
rs . executeQuery ( acqAttenSql ) ;
while ( rs . next ( ) ) {
String resourceid = Util . null2String ( rs . getString ( "resourceid" ) ) ;
Double attendancemins = Util . getDoubleValue ( Util . null2String ( rs . getString ( "attendancemins" ) ) ) ;
Double signmins = Util . getDoubleValue ( Util . null2String ( rs . getString ( "signmins" ) ) ) ;
String kqdate = Util . null2String ( rs . getString ( "kqdate" ) ) ;
if ( signmins > = 0.00 ) {
// double signTemp = signmins / 60;
// int quotient = (int) (signTemp / 6);
signminsMap . put ( resourceid + "|" + kqdate , signmins ) ;
}
if ( attendancemins > = 0.00 ) {
attendanceMinsMap . put ( resourceid + "|" + kqdate , attendancemins ) ;
}
@ -2169,65 +2010,40 @@ public class KQFormatData extends BaseBean {
}
}
}
// bb.writeLog("signIdList: " + signIdList);
bb . writeLog ( "signIdList: " + signIdList ) ;
Integer signNumber = 0 ;
if ( signIdList ! = null & & signIdList . size ( ) > 0 ) {
String acqShowAddress = "select showaddress,addr ,signfrom from hrmschedulesign where id in (" + String . join ( "," , signIdList ) + ") " ;
// bb.writeLog("acqShowAddress: " + acqShowAddress);
String acqShowAddress = "select showaddress,addr from hrmschedulesign where id in (" + String . join ( "," , signIdList ) + ") " ;
bb . writeLog ( "acqShowAddress: " + acqShowAddress ) ;
rs . executeQuery ( acqShowAddress ) ;
while ( rs . next ( ) ) {
String showaddress = Util . null2String ( rs . getString ( "showaddress" ) ) ;
String signfrom = Util . null2String ( rs . getString ( "signfrom" ) ) ;
if ( StringUtils . isEmpty ( signfrom ) | | ! StringUtils . equals ( signfrom , "e9mobile" ) ) {
signNumber = signNumber + 1 ;
}
String addr = Util . null2String ( rs . getString ( "addr" ) ) ;
if ( "鸿仕达" . equals ( showaddress ) | | "hostar" . equalsIgnoreCase ( showaddress ) | | "鸿仕达" . equals ( addr ) | | "hostar" . equalsIgnoreCase ( addr ) ) {
signNumber = signNumber + 1 ;
}
if ( StringUtils . isNotEmpty ( showaddress ) & & ( showaddress . contains ( "鸿仕达" ) | | showaddress . toLowerCase ( ) . contains ( "hostar" ) ) ) {
signNumber = signNumber + 1 ;
}
if ( StringUtils . isNotEmpty ( addr ) & & ( addr . contains ( "鸿仕达" ) | | addr . toLowerCase ( ) . contains ( "hostar" ) ) ) {
signNumber = signNumber + 1 ;
}
if ( StringUtils . isNotEmpty ( showaddress ) & & ( showaddress . contains ( "台湾" ) | | showaddress . contains ( "越南" )
| | showaddress . toLowerCase ( ) . contains ( "hostar" ) | | showaddress . toLowerCase ( ) . contains ( "vinh" ) | | showaddress . toLowerCase ( ) . contains ( "ha noi" ) ) ) {
signNumber = signNumber + 1 ;
}
if ( StringUtils . isNotEmpty ( addr ) & & ( addr . contains ( "台湾" ) | | addr . contains ( "越南" )
| | addr . toLowerCase ( ) . contains ( "hostar" ) | | addr . toLowerCase ( ) . contains ( "vinh" ) | | addr . toLowerCase ( ) . contains ( "ha noi" ) ) ) {
signNumber = signNumber + 1 ;
}
}
}
if ( signNumber = = 0 ) {
if ( ( ! CollectionUtils . isEmpty ( pbzbcSet ) ) & & pbzbcSet . contains ( groupId ) ) {
double workingDayOvertime_4leave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|workingDayOvertime_4leave" ) ) ) ;
workingDayOvertime_4leave = workingDayOvertime_4leave < 0 ? 0 : workingDayOvertime_4leave ;
double restDayOvertime_4leave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|restDayOvertime_4leave" ) ) ) ;
restDayOvertime_4leave = restDayOvertime_4leave < 0 ? 0 : restDayOvertime_4leave ;
double holidayOvertime_4leave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|holidayOvertime_4leave" ) ) ) ;
holidayOvertime_4leave = holidayOvertime_4leave < 0 ? 0 : holidayOvertime_4leave ;
double workingDayOvertime_nonleave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|workingDayOvertime_nonleave" ) ) ) ;
workingDayOvertime_nonleave = workingDayOvertime_nonleave < 0 ? 0 : workingDayOvertime_nonleave ;
double restDayOvertime_nonleave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|restDayOvertime_nonleave" ) ) ) ;
restDayOvertime_nonleave = restDayOvertime_nonleave < 0 ? 0 : restDayOvertime_nonleave ;
double holidayOvertime_nonleave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|holidayOvertime_nonleave" ) ) ) ;
holidayOvertime_nonleave = holidayOvertime_nonleave < 0 ? 0 : holidayOvertime_nonleave ;
double temp = workingDayOvertime_4leave + restDayOvertime_4leave + holidayOvertime_4leave +
workingDayOvertime_nonleave + restDayOvertime_nonleave + holidayOvertime_nonleave ;
Double attendanceMins = Util . getDoubleValue ( Util . null2String ( attendanceMinsMap . get ( res + "|" + kqDate ) ) ) ;
value = String . valueOf ( Math . floor ( ( ( attendanceMins < 0.00 ? 0.00 : attendanceMins ) + temp ) / 300 ) ) ;
}
if ( ( ! CollectionUtils . isEmpty ( zrzbcSet ) ) & & zrzbcSet . contains ( groupId ) ) {
Double signmins = Util . getDoubleValue ( Util . null2String ( signminsMap . get ( res + "|" + kqDate ) ) ) ;
value = String . valueOf ( Math . floor ( ( signmins < 0.00 ? 0.00 : signmins ) / 360 ) ) ;
}
double workingDayOvertime_4leave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|workingDayOvertime_4leave" ) ) ) ;
workingDayOvertime_4leave = workingDayOvertime_4leave < 0 ? 0 : workingDayOvertime_4leave ;
double restDayOvertime_4leave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|restDayOvertime_4leave" ) ) ) ;
restDayOvertime_4leave = restDayOvertime_4leave < 0 ? 0 : restDayOvertime_4leave ;
double holidayOvertime_4leave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|holidayOvertime_4leave" ) ) ) ;
holidayOvertime_4leave = holidayOvertime_4leave < 0 ? 0 : holidayOvertime_4leave ;
double workingDayOvertime_nonleave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|workingDayOvertime_nonleave" ) ) ) ;
workingDayOvertime_nonleave = workingDayOvertime_nonleave < 0 ? 0 : workingDayOvertime_nonleave ;
double restDayOvertime_nonleave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|restDayOvertime_nonleave" ) ) ) ;
restDayOvertime_nonleave = restDayOvertime_nonleave < 0 ? 0 : restDayOvertime_nonleave ;
double holidayOvertime_nonleave = Util . getDoubleValue ( Util . null2String ( dailyFlowOverTimeData . get ( res + "|" + kqDate + "|holidayOvertime_nonleave" ) ) ) ;
holidayOvertime_nonleave = holidayOvertime_nonleave < 0 ? 0 : holidayOvertime_nonleave ;
double temp = workingDayOvertime_4leave + restDayOvertime_4leave + holidayOvertime_4leave +
workingDayOvertime_nonleave + restDayOvertime_nonleave + holidayOvertime_nonleave ;
Double attendanceMins = Util . getDoubleValue ( Util . null2String ( attendanceMinsMap . get ( res + "|" + kqDate ) ) ) ;
value = String . valueOf ( Math . floor ( ( ( attendanceMins < 0.00 ? 0.00 : attendanceMins ) + temp ) / 300 ) ) ;
}
}
}
@ -2242,136 +2058,150 @@ public class KQFormatData extends BaseBean {
String value = "0" ;
RecordSet rs = new RecordSet ( ) ;
String sql = "" ;
String sqlWhere = " " ;
try {
// KQLeaveRulesComInfo kqLeaveRulesComInfo = new KQLeaveRulesComInfo();
KQLeaveRulesComInfo kqLeaveRulesComInfo = new KQLeaveRulesComInfo ( ) ;
if ( id . length ( ) > 0 ) {
sqlWhere + = " and b.id in(" + id + ") " ;
}
// 首先获取出差公出流程信息
// Map<String, Object> evectionMap = new HashMap<>();
Map < String , Object > evectionMap = new HashMap < > ( ) ;
String evectionTableName = Util . null2String ( bb . getPropValue ( "project_hostar" , "evectionTableName" ) ) ;
sql = " select a.* from (" +
"select id, requestid, jd as longitude, wd as latitude from " + evectionTableName +
" WHERE (sjccr = '" + id + "' or ','+CAST(nbtxr AS varchar(max))+',' like '%,'+CAST(" + id + " AS varchar(10))+',%') " +
" and ksrq <='" + kqDateA + "' and (((sjjsrq is null or sjjsrq = '') and yjjsrq >= '" + kqDateA + "') or (sjjsrq is not null and sjjsrq != '' and sjjsrq >= '" + kqDateA + "'))" +
") a, workflow_requestbase b WHERE a.requestId = b.requestId and b.currentnodetype != 0" ;
sql = " select d.resourceid, d.belongdate, d.longitude, d.latitude from ( " +
" select a.belongdate, b.id as resourceid, b.subcompanyid1, b.departmentid, b.managerstr, b.managerid, b.loginid, c.jd as longitude, c.wd as latitude from kq_flow_split_evection a " +
" left join hrmresource b " +
" on b.id = a.resourceid " +
" left join " + evectionTableName + " c " +
" on c.requestid = a.requestid " +
" where a.belongdate >='" + kqDateA + "' and a.belongdate <='" + kqDateA + "' " + sqlWhere +
" ) d " +
" where 1=1 " ;
bb . writeLog ( "sql: " + sql ) ;
boolean isGoing = false ;
rs . execute ( sql ) ;
while ( rs . next ( ) ) {
isGoing = true ;
String resourceid = Util . null2String ( rs . getString ( "resourceid" ) ) ;
String belongdate = Util . null2String ( rs . getString ( "belongdate" ) ) ;
String longitude = Util . null2String ( rs . getString ( "longitude" ) ) ;
String latitude = Util . null2String ( rs . getString ( "latitude" ) ) ;
evectionMap . put ( belongdate + "|" + resourceid , longitude + "|" + latitude ) ;
}
bb . writeLog ( "evectionMap: " + evectionMap ) ;
//获取外勤打卡数据
KQWorkTime kqWorkTime = new KQWorkTime ( ) ;
kqWorkTime . setIsFormat ( true ) ;
Map < String , Map < String , Object > > lsCheckInfo = new HashMap < > ( ) ;
List < Map < String , Object > > legWorkInfos = new ArrayList < > ( ) ;
// 解析日期字符串为LocalDate对象
LocalDate date = LocalDate . parse ( kqDateA , DateTimeFormatter . ISO_DATE ) ;
// 获取后一天的日期
LocalDate nextDay = date . plusDays ( 1 ) ;
// 将后一天的日期转换为字符串
String kqDateB = nextDay . format ( DateTimeFormatter . ISO_DATE ) ;
String dateParamA = kqDateA + " 05:00:00" ;
String dateParamB = kqDateB + " 04:59:59" ;
if ( isGoing ) {
// String acqLegWorkSignSql = "select operate_time, longitude, latitude,address from mobile_sign where operater = ? " +
// "and operate_date = '" + kqDateA + "' order by operate_time asc ";
String acqLegWorkSignSql = "select operate_time, longitude, latitude,address,operate_date,CONCAT(operate_date, ' ', operate_time) as dateTimeNew from mobile_sign " +
"where operater = ? and CAST(operate_date + ' ' + operate_time AS datetime) >= CAST('" + dateParamA + "' AS datetime) " +
"and CAST(operate_date + ' ' + operate_time AS datetime) <= CAST('" + dateParamB + "' AS datetime) " ;
rs . executeQuery ( acqLegWorkSignSql , id ) ;
while ( rs . next ( ) ) {
String operateTime = Util . null2String ( rs . getString ( "operate_time" ) ) ;
String longitude = Util . null2String ( rs . getString ( "longitude" ) ) ;
String latitude = Util . null2String ( rs . getString ( "latitude" ) ) ;
String address = Util . null2String ( rs . getString ( "address" ) ) ;
String dateTimeNew = Util . null2String ( rs . getString ( "dateTimeNew" ) ) ;
if ( "hostar" . equalsIgnoreCase ( address ) | | "鸿仕达" . equals ( address ) | | "增善路" . equals ( address )
| | "星圃路" . equals ( address ) | | "智慧新城" . equals ( address ) ) {
continue ;
for ( String key : evectionMap . keySet ( ) ) {
String [ ] split = key . split ( "\\|" ) ;
String kqDate = split [ 0 ] ;
String userId = split [ 1 ] ;
WorkTimeEntity workTime = kqWorkTime . getWorkTime ( userId , kqDate ) ;
List < TimeScopeEntity > lsSignTime = new ArrayList < > ( ) ;
List < TimeScopeEntity > lsWorkTime = new ArrayList < > ( ) ;
if ( workTime ! = null ) {
lsSignTime = workTime . getSignTime ( ) ; //允许打卡时间
lsWorkTime = workTime . getWorkTime ( ) ; //工作时间
}
//只支持一天一次上下班
if ( lsWorkTime ! = null & & lsWorkTime . size ( ) = = 1 ) {
TimeScopeEntity signTimeScope = lsSignTime . get ( 0 ) ;
TimeScopeEntity workTimeScope = lsWorkTime . get ( 0 ) ;
List < Map < String , Object > > legWorkInfos = new ArrayList < > ( ) ;
//获取允许打卡时间
String signBeginTime = signTimeScope . getBeginTime ( ) ;
if ( StringUtils . isNotBlank ( signBeginTime ) ) {
signBeginTime = signBeginTime + ":00" ;
}
if ( StringUtils . isNotEmpty ( address ) & & ( address . contains ( "鸿仕达" ) | | address . contains ( "增善路" )
| | address . contains ( "星圃路" ) | | address . contains ( "智慧新城" ) | | address . toLowerCase ( ) . contains ( "hostar" ) ) ) {
continue ;
//获取上班时间
String workBeginTime = workTimeScope . getBeginTime ( ) ;
if ( StringUtils . isNotBlank ( workBeginTime ) ) {
workBeginTime = workBeginTime + ":00" ;
}
if ( StringUtils . isNotEmpty ( address ) & & ( address . contains ( "台湾" ) | | address . contains ( "越南" )
| | address . toLowerCase ( ) . contains ( "hostar" ) | | address . toLowerCase ( ) . contains ( "vinh" ) | | address . toLowerCase ( ) . contains ( "ha noi" ) ) ) {
continue ;
String acqLegWorkSignSql = "select operate_time, longitude, latitude from mobile_sign where operater = ? and operate_date = '" + kqDate + "' and operate_time >='" + signBeginTime + "' order by operate_time asc " ;
rs . executeQuery ( acqLegWorkSignSql , userId ) ;
while ( rs . next ( ) ) {
String operateTime = Util . null2String ( rs . getString ( "operate_time" ) ) ;
String longitude = Util . null2String ( rs . getString ( "longitude" ) ) ;
String latitude = Util . null2String ( rs . getString ( "latitude" ) ) ;
if ( StringUtils . isNotBlank ( operateTime ) & & StringUtils . isNotBlank ( longitude ) & & StringUtils . isNotBlank ( latitude ) ) {
Map < String , Object > temp = new HashMap < > ( ) ;
temp . put ( "operateTime" , operateTime ) ;
temp . put ( "longitude" , longitude ) ;
temp . put ( "latitude" , latitude ) ;
legWorkInfos . add ( temp ) ;
}
}
if ( legWorkInfos ! = null & & legWorkInfos . size ( ) > 0 ) {
String tempSignIn = "" ;
String tempSignInLatitude = "" ;
String tempSignInLongitude = "" ;
String tempSignOutLatitude = "" ;
String tempSignOutLongitude = "" ;
String tempSignOut = "" ;
Map < String , Object > checkInfo = new HashMap < > ( ) ;
if ( legWorkInfos . size ( ) = = 1 ) { //只有一笔外勤卡直接算上班
Map < String , Object > temp = legWorkInfos . get ( 0 ) ;
String operateTime = Util . null2String ( temp . get ( "operateTime" ) ) ;
String longitude = Util . null2String ( temp . get ( "longitude" ) ) ;
String latitude = Util . null2String ( temp . get ( "latitude" ) ) ;
checkInfo . put ( "signDate" , kqDate ) ; //签到签退日期
checkInfo . put ( "signInTime" , operateTime ) ; //签到时间
checkInfo . put ( "signInLatitude" , latitude ) ; //签到纬度
checkInfo . put ( "signInLongitude" , longitude ) ; //签到经度
lsCheckInfo . put ( userId + "|" + kqDate , checkInfo ) ;
if ( StringUtils . isNotBlank ( operateTime ) & & StringUtils . isNotBlank ( longitude ) & & StringUtils . isNotBlank ( latitude ) ) {
Map < String , Object > temp = new HashMap < > ( ) ;
temp . put ( "operateTime" , operateTime ) ;
temp . put ( "longitude" , longitude ) ;
temp . put ( "latitude" , latitude ) ;
temp . put ( "dateTimeNew" , dateTimeNew ) ;
legWorkInfos . add ( temp ) ;
}
}
if ( legWorkInfos ! = null & & legWorkInfos . size ( ) > 1 ) {
String tempSignIn = "" ;
String tempSignInDateTime = "" ;
String tempSignOutDateTime = "" ;
String tempSignInLatitude = "" ;
String tempSignInLongitude = "" ;
String tempSignOutLatitude = "" ;
String tempSignOutLongitude = "" ;
String tempSignOut = "" ;
Map < String , Object > checkInfo = new HashMap < > ( ) ;
for ( Map < String , Object > temp : legWorkInfos ) {
String operateTime = Util . null2String ( temp . get ( "operateTime" ) ) ;
String longitude = Util . null2String ( temp . get ( "longitude" ) ) ;
String latitude = Util . null2String ( temp . get ( "latitude" ) ) ;
String dateTimeNew = Util . null2String ( temp . get ( "dateTimeNew" ) ) ;
if ( StringUtils . isBlank ( tempSignIn ) ) {
tempSignIn = operateTime ;
tempSignInLatitude = latitude ;
tempSignInLongitude = longitude ;
tempSignInDateTime = dateTimeNew ;
} else {
if ( dateTimeNew . compareTo ( tempSignInDateTime ) < 0 ) {
tempSignIn = operateTime ;
tempSignInLatitude = latitude ;
tempSignInLongitude = longitude ;
tempSignInDateTime = dateTimeNew ;
}
}
if ( StringUtils . isBlank ( tempSignOut ) ) {
tempSignOut = operateTime ;
tempSignOutDateTime = dateTimeNew ;
tempSignOutLatitude = latitude ;
tempSignOutLongitude = longitude ;
} else {
if ( dateTimeNew . compareTo ( tempSignOutDateTime ) > 0 ) {
tempSignOut = operateTime ;
tempSignOutDateTime = dateTimeNew ;
tempSignOutLatitude = latitude ;
tempSignOutLongitude = longitude ;
for ( Map < String , Object > temp : legWorkInfos ) {
String operateTime = Util . null2String ( temp . get ( "operateTime" ) ) ;
String longitude = Util . null2String ( temp . get ( "longitude" ) ) ;
String latitude = Util . null2String ( temp . get ( "latitude" ) ) ;
if ( operateTime . compareTo ( workBeginTime ) < 0 ) { //获取上班时间点之前最早的一笔卡
if ( StringUtils . isBlank ( tempSignIn ) ) {
tempSignIn = operateTime ;
tempSignInLatitude = latitude ;
tempSignInLongitude = longitude ;
} else {
if ( operateTime . compareTo ( tempSignIn ) < 0 ) {
tempSignIn = operateTime ;
tempSignInLatitude = latitude ;
tempSignInLongitude = longitude ;
}
}
}
if ( operateTime . compareTo ( workBeginTime ) > 0 ) { //下班卡取最晚的一笔
if ( StringUtils . isBlank ( tempSignIn ) ) {
tempSignOut = operateTime ;
tempSignOutLatitude = latitude ;
tempSignOutLongitude = longitude ;
} else {
if ( operateTime . compareTo ( tempSignOut ) > 0 ) {
tempSignOut = operateTime ;
tempSignOutLatitude = latitude ;
tempSignOutLongitude = longitude ;
}
}
}
}
checkInfo . put ( "signDate" , kqDate ) ; //签到签退日期
checkInfo . put ( "signInTime" , tempSignIn ) ; //签到时间
checkInfo . put ( "signInLatitude" , tempSignInLatitude ) ; //签到纬度
checkInfo . put ( "signInLongitude" , tempSignInLongitude ) ; //签到经度
checkInfo . put ( "signOutTime" , tempSignOut ) ; //签退时间
checkInfo . put ( "signOutLatitude" , tempSignOutLatitude ) ; //签退纬度
checkInfo . put ( "signOutLongitude" , tempSignOutLongitude ) ; //签退经度
lsCheckInfo . put ( userId + "|" + kqDate , checkInfo ) ;
}
}
// }
checkInfo . put ( "signDate" , kqDateA ) ; //签到签退日期
checkInfo . put ( "signInTime" , tempSignIn ) ; //签到时间
checkInfo . put ( "signInDateTime" , tempSignInDateTime ) ; //签到日期时间
checkInfo . put ( "signInLatitude" , tempSignInLatitude ) ; //签到纬度
checkInfo . put ( "signInLongitude" , tempSignInLongitude ) ; //签到经度
checkInfo . put ( "signOutTime" , tempSignOut ) ; //签退时间
checkInfo . put ( "signOutDateTime" , tempSignOutDateTime ) ; //签退日期时间
checkInfo . put ( "signOutLatitude" , tempSignOutLatitude ) ; //签退纬度
checkInfo . put ( "signOutLongitude" , tempSignOutLongitude ) ; //签退经度
lsCheckInfo . put ( id + "|" + kqDateA , checkInfo ) ;
}
}
HostarUtil hostarUtil = new HostarUtil ( ) ;
String MealAlloTableName = Util . null2String ( bb . getPropValue ( "project_hostar" , "MealAllowanceTableName" ) ) ;
// 定义日期格式
DateTimeFormatter formatterRq = DateTimeFormatter . ofPattern ( "yyyy-MM-dd" ) ;
// 定义时间格式
DateTimeFormatter formatter = DateTimeFormatter . ofPattern ( "HH:mm:ss" ) ;
if ( StringUtils . isNotBlank ( MealAlloTableName ) ) {
//获取餐补判断时间
List < Map < String , String > > MealMap = new ArrayList < > ( ) ;
@ -2390,49 +2220,31 @@ public class KQFormatData extends BaseBean {
//根据外勤打卡数据计算餐补数据
for ( String key : lsCheckInfo . keySet ( ) ) {
// String[] split = key.split("\\|");
// String userId = split[0];
// String kqDate = split[1];
String [ ] split = key . split ( "\\|" ) ;
String userId = split [ 0 ] ;
String kqDate = split [ 1 ] ;
Map < String , Object > temp = lsCheckInfo . get ( key ) ;
String signInTime = Util . null2String ( temp . get ( "signInTime" ) ) ;
String signOutTime = Util . null2String ( temp . get ( "signOutTime" ) ) ;
String signInDateTime = Util . null2String ( temp . get ( "signInDateTime" ) ) ;
String signOutDateTime = Util . null2String ( temp . get ( "signOutDateTime" ) ) ;
String signDate = Util . null2String ( temp . get ( "signDate" ) ) ;
if ( StringUtils . isNotBlank ( signInTime ) & & StringUtils . isNotBlank ( signOutTime ) ) {
for ( Map < String , String > me : MealMap ) {
String startTime = me . get ( "startTime" ) ;
String startDateTime = "" ;
String endTime = me . get ( "endTime" ) ;
String endDateTime = "" ;
if ( StringUtils . isNotBlank ( startTime ) & & StringUtils . isNotBlank ( endTime ) ) {
startTime = startTime + ":00" ;
endTime = endTime + ":00" ;
String signDateNew = signDate ;
// 判断时间
LocalTime t1 = LocalTime . parse ( startTime , formatter ) ;
LocalTime t2 = LocalTime . parse ( endTime , formatter ) ;
if ( t2 . isBefore ( t1 ) ) {
LocalDate dateToday = LocalDate . parse ( signDateNew , formatterRq ) ;
// 加一天
LocalDate nextDayNew = dateToday . plusDays ( 1 ) ;
signDateNew = nextDayNew . format ( formatterRq ) ;
}
startDateTime = signDate + " " + startTime ;
endDateTime = signDateNew + " " + endTime ;
}
if ( ( signIn Date Time. compareTo ( start Date Time) < = 0 ) & & ( signOut Date Time. compareTo ( end Date Time) > = 0 ) ) {
if ( ( signInTime . compareTo ( startTime ) < = 0 ) & & ( signOutTime . compareTo ( endTime ) > = 0 ) ) {
if ( StringUtils . isEmpty ( value ) | | StringUtils . equals ( value , "0" ) ) {
value = "1" ;
} else {
int valueT = Integer . parseInt ( value ) + 1 ;
value = String . valueOf ( valueT ) ;
value = String . valueOf ( Integer . parseInt ( value ) ) ;
}
}
}
@ -2460,6 +2272,10 @@ public class KQFormatData extends BaseBean {
nightShiftList . add ( shift ) ;
}
}
rs . executeQuery ( "select zeropoint from kq_format_total where resourceid = ? and kqdate = ?" , userId , kqDate ) ;
if ( rs . next ( ) ) {
value = rs . getString ( "zeropoint" ) ;
}
//获取当天班次
KQWorkTime kqWorkTime = new KQWorkTime ( ) ;
Map < String , Object > serialInfo = kqWorkTime . getSerialInfo ( userId , kqDate , false ) ;
@ -2468,14 +2284,7 @@ public class KQFormatData extends BaseBean {
if ( serialid > 0 ) {
if ( ( ! CollectionUtils . isEmpty ( nightShiftList ) ) & & nightShiftList . contains ( String . valueOf ( serialid ) ) ) {
value = "0" ;
} else {
rs . executeQuery ( "select zeropoint from kq_format_total where resourceid = ? and kqdate = ?" , userId , kqDate ) ;
if ( rs . next ( ) ) {
value = rs . getString ( "zeropoint" ) ;
}
}
} else {
value = "0" ;
}
}
} catch ( Exception e ) {