diff --git a/src/com/engine/hostar/thread/HandleCBDataThread.java b/src/com/engine/hostar/thread/HandleCBDataThread.java index 0ab9dd2..aed9677 100644 --- a/src/com/engine/hostar/thread/HandleCBDataThread.java +++ b/src/com/engine/hostar/thread/HandleCBDataThread.java @@ -26,10 +26,14 @@ import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.Set; import java.util.UUID; /** @@ -88,6 +92,9 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ } // 考勤二开--出差餐补 String mealAllowance = getMealAllowance(userId, kqDate); + if (!(StringUtils.equals(statAllowance, "0") && StringUtils.equals(otherStatAllowance, "0"))) { + mealAllowance = "0"; + } baseBean.writeLog("mealAllowance:" + mealAllowance); if (StringUtils.isEmpty(mealAllowance)) { mealAllowance = "0"; @@ -172,6 +179,8 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ value = rs.getString("zeropoint"); } } + } else { + value = "0"; } } } catch (Exception e) { @@ -195,10 +204,31 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ nightShiftList.add(shift); } } - if (nightShiftList != null & nightShiftList.size() > 0) { + //获取加班时长 + Map dailyFlowOverTimeData = getDailyFlowOverTimeDataAllowance(userId, kqDate); + + // 获取责任制、排班次班次 + Set zrzbcSet = new HashSet<>(); + Set 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 signminsMap = new HashMap<>(); Map attendanceMinsMap = new HashMap<>(); String acqAttenSql = " select resourceid, attendancemins, kqdate,signmins from kq_format_total where resourceid in (" + userId + ") and kqdate >='" + kqDate + "' and kqdate <='" + kqDate + "'"; rs.executeQuery(acqAttenSql); @@ -208,7 +238,10 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ Double signmins = Util.getDoubleValue(Util.null2String(rs.getString("signmins"))); String kqdate = Util.null2String(rs.getString("kqdate")); if (signmins >= 0.00 ) { - attendanceMinsMap.put(resourceid+"|"+kqdate, signmins); + signminsMap.put(resourceid+"|"+kqdate, signmins); + } + if (attendancemins >= 0.00 ) { + attendanceMinsMap.put(resourceid+"|"+kqdate, attendancemins); } } KQWorkTime kqWorkTime = new KQWorkTime(); @@ -221,11 +254,38 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ if ( !nightShiftList.contains(String.valueOf(serialid))) { return "0"; } + } else { + return "0"; } } - Double signmins = Util.getDoubleValue(Util.null2String(attendanceMinsMap.get(userId + "|" + kqDate))); - value = (( signmins / 60) >= 8.00 ) ? "1" : "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"; + } } } catch (Exception e) { bb.writeLog("get NightShiftSubsidy error:" + e.getMessage()); @@ -245,14 +305,30 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ } //获取加班时长 -// Map dailyFlowOverTimeData = getDailyFlowOverTimeDataAllowance(userId, kqDate); + Map dailyFlowOverTimeData = getDailyFlowOverTimeDataAllowance(userId, kqDate); + + // 获取责任制、排班次班次 + Set zrzbcSet = new HashSet<>(); + Set 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 resIds = new ArrayList<>(); sqlWhere += " and a.subcompanyid1 in (" + otherstatsub + ") "; - String acqResSql = "select a.id from hrmresource a where a.status in (0,1,2,3) " + sqlWhere; + String acqResSql = "select a.id from hrmresource a where 1=1 " + sqlWhere; bb.writeLog("acqResSql: " + acqResSql); rs.executeQuery(acqResSql); @@ -263,11 +339,13 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ } } // bb.writeLog("resIds: " + resIds); + KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo(); if (resIds != null && resIds.size() > 0 && StringUtils.isNotBlank(kqDate)) { HostarUtil houtil = new HostarUtil(); //先获取到实际打卡时长 + Map signminsMap = new HashMap<>(); Map 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 + "'"; rs.executeQuery(acqAttenSql); @@ -276,8 +354,13 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ 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) { - attendanceMinsMap.put(resourceid + "|" + kqdate, signmins); + 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); } } List removeRes = new ArrayList<>(); @@ -398,35 +481,57 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ 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; + } } } + + String groupId = kqGroupMemberComInfo.getKQGroupId(res, kqDate); + 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; -// -// 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; -// bb.writeLog("-=-temp:" + temp); - Double signmins = Util.getDoubleValue(Util.null2String(attendanceMinsMap.get(res + "|" + kqDate))); -// bb.writeLog("-=-attendanceMins:" + attendanceMins); - double v = Math.round ((signmins < 0.00) ? 0.00 : signmins) / 60.00; - value = "0"; - if (v >= 4.00 && v < 9.00) { - value = "1"; - } else if (v >= 9.00) { - value = "2"; + 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)); + } +// } } } @@ -515,7 +620,23 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ } //获取加班时长 -// Map dailyFlowOverTimeData = getDailyFlowOverTimeDataAllowance(userId, kqDate); + Map dailyFlowOverTimeData = getDailyFlowOverTimeDataAllowance(userId, kqDate); + + // 获取责任制、排班次班次 + Set zrzbcSet = new HashSet<>(); + Set 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 nightShiftList = new ArrayList<>(); @@ -533,7 +654,7 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ //查询该分部下的人员 List resIds = new ArrayList<>(); sqlWhere += " and a.subcompanyid1 in (" + nightshiftsub + ") "; - String acqResSql = "select a.id from hrmresource a where a.status in (0,1,2,3) " + sqlWhere; + String acqResSql = "select a.id from hrmresource a where 1=1 " + sqlWhere; bb.writeLog("acqResSql: " + acqResSql); rs.executeQuery(acqResSql); @@ -544,10 +665,12 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ } } // bb.writeLog("resIds: " + resIds); + KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo(); if (resIds != null && resIds.size() > 0) { HostarUtil houtil = new HostarUtil(); //先获取到出勤时长 + Map signminsMap = new HashMap<>(); Map 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 + "'"; rs.executeQuery(acqAttenSql); @@ -556,8 +679,13 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ 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) { - attendanceMinsMap.put(resourceid + "|" + kqdate, signmins); + 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); } } KQWorkTime kqWorkTime = new KQWorkTime(); @@ -570,28 +698,43 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ 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; -// -// 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; -// bb.writeLog("-=-temp:" + temp); - Double signmins = Util.getDoubleValue(Util.null2String(attendanceMinsMap.get(res + "|" + kqDate))); -// bb.writeLog("-=-attendanceMins:" + attendanceMins); - value = String.valueOf(Math.floor((signmins < 0.00 ? 0.00 : signmins) / 300)); + + Object groupIdObj = serialInfo.get("groupId"); + String groupId = null; + if (Objects.isNull(groupIdObj)) { + groupId = kqGroupMemberComInfo.getKQGroupId(res, kqDate); + } else { + groupId = groupIdObj.toString(); + } + + 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)); + } } } } @@ -615,7 +758,7 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ } //获取加班时长 -// Map dailyFlowOverTimeData = getDailyFlowOverTimeDataAllowance(userId, kqDate); + Map dailyFlowOverTimeData = getDailyFlowOverTimeDataAllowance(userId, kqDate); //首先去除指定不享有的分部 List subComoanyList = new ArrayList<>(); @@ -636,6 +779,22 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ sqlWhere += " and a.subcompanyid1 not in ("+subComoanys+") "; } + // 获取责任制、排班次班次 + Set zrzbcSet = new HashSet<>(); + Set 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 noRes = new ArrayList<>(); String acqNoResSql = "select resourceid from uf_NoStatAllRes where isdelete = 0 or isdelete is null"; @@ -652,7 +811,7 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ List resIds = new ArrayList<>(); - String acqResSql = "select a.id from hrmresource a where a.status in (0,1,2,3) " + sqlWhere; + String acqResSql = "select a.id from hrmresource a where 1=1 " + sqlWhere; bb.writeLog("acqResSql: " + acqResSql); rs.executeQuery(acqResSql); @@ -670,6 +829,7 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo(); // 先获取到实际打卡时长 + Map signminsMap = new HashMap<>(); Map 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 + "'"; rs.executeQuery(acqAttenSql); @@ -679,7 +839,12 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ Double signmins = Util.getDoubleValue(Util.null2String(rs.getString("signmins"))); String kqdate = Util.null2String(rs.getString("kqdate")); if (signmins >= 0.00 ) { - attendanceMinsMap.put(resourceid+"|"+kqdate, signmins); +// double signTemp = signmins / 60; +// int quotient = (int) (signTemp / 6); + signminsMap.put(resourceid+"|"+kqdate, signmins); + } + if (attendancemins >= 0.00 ) { + attendanceMinsMap.put(resourceid+"|"+kqdate, attendancemins); } } @@ -809,27 +974,42 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ 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; -// -// 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 signmins = Util.getDoubleValue(Util.null2String(attendanceMinsMap.get(res + "|" + kqDate))); - value = String.valueOf(Math.floor( (signmins < 0.00 ? 0.00 : signmins) / 300)); + 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)); + } } } } @@ -845,144 +1025,100 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ String value = "0"; RecordSet rs = new RecordSet(); String sql = ""; - String sqlWhere = " "; try { - KQLeaveRulesComInfo kqLeaveRulesComInfo = new KQLeaveRulesComInfo(); - - if(id.length()>0){ - sqlWhere +=" and b.id in("+id+") "; - } +// KQLeaveRulesComInfo kqLeaveRulesComInfo = new KQLeaveRulesComInfo(); // 首先获取出差公出流程信息 - Map evectionMap = new HashMap<>(); +// Map evectionMap = new HashMap<>(); String evectionTableName = Util.null2String(bb.getPropValue("project_hostar","evectionTableName")); - 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 " ; + 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"; bb.writeLog("sql: " + sql); - + boolean isGoing = false; rs.execute(sql); while (rs.next()) { - 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 ); + isGoing = true; } -// bb.writeLog("evectionMap: " + evectionMap); - - //获取外勤打卡数据 - KQWorkTime kqWorkTime = new KQWorkTime(); - kqWorkTime.setIsFormat(true); Map< String, Map> lsCheckInfo = new HashMap<>(); - for ( String key: evectionMap.keySet()) { - String[] split = key.split("\\|"); - String kqDate = split[0]; - String userId = split[1]; - WorkTimeEntity workTime = kqWorkTime.getWorkTime(userId, kqDate); - List lsSignTime = new ArrayList<>(); - List 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> legWorkInfos = new ArrayList<>(); - //获取允许打卡时间 - String signBeginTime = signTimeScope.getBeginTime(); - if (StringUtils.isNotBlank(signBeginTime)) { - signBeginTime = signBeginTime + ":00"; + List> legWorkInfos = new ArrayList<>(); + + if (isGoing) { + String acqLegWorkSignSql = "select operate_time, longitude, latitude,address from mobile_sign where operater = ? and operate_date = '" + kqDateA + "' order by operate_time asc "; + 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")); + + if ("hostar".equalsIgnoreCase(address) || "鸿仕达".equals(address) || "增善路".equals(address) + || "星圃路".equals(address) || "智慧新城".equals(address)) { + continue; } - //获取上班时间 - String workBeginTime = workTimeScope.getBeginTime(); - if (StringUtils.isNotBlank(workBeginTime)) { - workBeginTime = workBeginTime + ":00"; + if (StringUtils.isNotEmpty(address) && (address.contains("鸿仕达") || address.contains("增善路") + || address.contains("星圃路") || address.contains("智慧新城") || address.toLowerCase().contains("hostar"))) { + 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 temp = new HashMap<>(); - temp.put("operateTime", operateTime); - temp.put("longitude", longitude); - temp.put("latitude", latitude); - legWorkInfos.add(temp); - } + if (StringUtils.isNotEmpty(address) && (address.contains("台湾") || address.contains("越南") + || address.toLowerCase().contains("hostar") || address.toLowerCase().contains("vinh") || address.toLowerCase().contains("ha noi"))) { + continue; } - if (legWorkInfos != null && legWorkInfos.size() > 0 ) { - String tempSignIn = ""; - String tempSignInLatitude = ""; - String tempSignInLongitude = ""; - String tempSignOutLatitude = ""; - String tempSignOutLongitude = ""; - String tempSignOut = ""; - Map checkInfo = new HashMap<>(); - if ( legWorkInfos.size() == 1) {//只有一笔外勤卡直接算上班 - Map 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 temp = new HashMap<>(); + temp.put("operateTime", operateTime); + temp.put("longitude", longitude); + temp.put("latitude", latitude); + legWorkInfos.add(temp); + } + } + if (legWorkInfos != null && legWorkInfos.size() > 1 ) { + String tempSignIn = ""; + String tempSignInLatitude = ""; + String tempSignInLongitude = ""; + String tempSignOutLatitude = ""; + String tempSignOutLongitude = ""; + String tempSignOut = ""; + Map checkInfo = new HashMap<>(); + for ( Map temp : legWorkInfos) { + String operateTime = Util.null2String(temp.get("operateTime")); + String longitude = Util.null2String(temp.get("longitude")); + String latitude = Util.null2String(temp.get("latitude")); + if (StringUtils.isBlank(tempSignIn)) { + tempSignIn = operateTime; + tempSignInLatitude = latitude; + tempSignInLongitude = longitude; } else { - for ( Map 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; - } - } - } + if ( operateTime.compareTo(tempSignIn) < 0 ) { + tempSignIn = operateTime; + tempSignInLatitude = latitude; + tempSignInLongitude = longitude; + } + } + if (StringUtils.isBlank(tempSignOut)) { + 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("signInLatitude", tempSignInLatitude);//签到纬度 + checkInfo.put("signInLongitude", tempSignInLongitude);//签到经度 + checkInfo.put("signOutTime", tempSignOut);//签退时间 + checkInfo.put("signOutLatitude", tempSignOutLatitude);//签退纬度 + checkInfo.put("signOutLongitude", tempSignOutLongitude);//签退经度 + lsCheckInfo.put(id + "|" + kqDateA, checkInfo); } } @@ -993,6 +1129,7 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ //获取餐补判断时间 List> MealMap = new ArrayList<>(); String acqTimeSql = "select startTime, endTime from " + MealAlloTableName + " where (isDelete is null or isDelete = 0)"; +// bb.writeLog("acqTimeSql: " + acqTimeSql); rs.executeQuery(acqTimeSql); while (rs.next()) { String startTime = Util.null2String(rs.getString("startTime")); @@ -1002,17 +1139,17 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ temp.put("endTime",endTime); MealMap.add(temp); } +// bb.writeLog("MealMap: " + MealMap); //根据外勤打卡数据计算餐补数据 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 temp = lsCheckInfo.get(key); String signInTime = Util.null2String(temp.get("signInTime")); String signOutTime = Util.null2String(temp.get("signOutTime")); - if (StringUtils.isNotBlank(signInTime) && StringUtils.isNotBlank(signOutTime) ) { for (Map me: MealMap) { @@ -1029,7 +1166,8 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ if (StringUtils.isEmpty(value) || StringUtils.equals(value, "0")) { value = "1"; } else { - value = String.valueOf(Integer.parseInt(value)); + int valueT = Integer.parseInt(value) + 1; + value = String.valueOf(valueT); } } } diff --git a/src/com/engine/kq/biz/KQFormatData.java b/src/com/engine/kq/biz/KQFormatData.java index 09eeb62..c7a1101 100644 --- a/src/com/engine/kq/biz/KQFormatData.java +++ b/src/com/engine/kq/biz/KQFormatData.java @@ -273,6 +273,9 @@ 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"; @@ -1014,19 +1017,39 @@ public class KQFormatData extends BaseBean { // bb.writeLog("groupMap: " + groupMap); bb.writeLog("groupid: " + groupid); + //获取夜班班次 + List nightShiftList = new ArrayList<>(); + String acqNightShiftSql = "select shift from uf_nightshiftmanage where isdelete is null or isdelete = 0"; + rs.executeQuery(acqNightShiftSql); + while (rs.next()) { + String shift = Util.null2String(rs.getString("shift")); + if (StringUtils.isNotBlank(shift)) { + nightShiftList.add(shift); + } + } + boolean offGood = false; boolean inGood = false; - for (int j = 0; lsCheckInfo != null && j < lsCheckInfo.size(); j++) { - Map checkInfo = (Map) lsCheckInfo.get(j); - if ("2".equals(checkInfo.get("signType")) && !offGood) {//签退 - String signDate = Util.null2String(checkInfo.get("signDate")); - String signTime = Util.null2String(checkInfo.get("signTime")); + if (StringUtils.isEmpty(serialid)) { + serialid = "0"; + } + if (CollectionUtils.isEmpty(nightShiftList) || !nightShiftList.contains(serialid)) { + for (int j = 0; lsCheckInfo != null && j < lsCheckInfo.size(); j++) { + bb.writeLog("lsCheckInfo is:" + JSONObject.toJSONString(lsCheckInfo)); + Map checkInfo = (Map) lsCheckInfo.get(j); + if ("2".equals(checkInfo.get("signType")) && !offGood) {//签退 + String signStatus = Util.null2String(checkInfo.get("signStatus")); + if (StringUtils.isEmpty(signStatus) || !signStatus.equalsIgnoreCase(ButtonStatusEnum.NORMAL.getStatusCode())) { + continue; + } + String signDate = Util.null2String(checkInfo.get("signDate")); + String signTime = Util.null2String(checkInfo.get("signTime")); // bb.writeLog("signDate: " + signDate); // bb.writeLog("signTime: " + signTime); - if (groupMap != null && groupMap.size() > 0) { - for (String grouptype : groupMap.keySet()) { + if (groupMap != null && groupMap.size() > 0) { + for (String grouptype : groupMap.keySet()) { // bb.writeLog("grouptype: " + grouptype); // if ("0".equals(grouptype)) {//责任制--23点 // String kqgroups = Util.null2String(groupMap.get(grouptype)); @@ -1047,61 +1070,64 @@ public class KQFormatData extends BaseBean { // } // } // } - if ("0".equals(grouptype)) {//责任制--00点 - String kqgroups = Util.null2String(groupMap.get(grouptype)); + if ("0".equals(grouptype)) {//责任制--00点 + String kqgroups = Util.null2String(groupMap.get(grouptype)); // bb.writeLog("kqgroups: " + kqgroups); - List groupList = Arrays.asList(kqgroups.split(",")); + List groupList = Arrays.asList(kqgroups.split(",")); // bb.writeLog("groupList: " + groupList); - if(groupList.contains(groupid)) { - //00:00 - if (signTime.length() == 5) { - signTime = signTime + ":00"; - } - LocalDate date = LocalDate.parse(kqDate, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - LocalDate localDate = date.plusDays(1); - String kqDateNew = localDate.toString(); - String subsidyTime = kqDateNew + " 00:00:00"; - bb.writeLog("subsidyTime: " + subsidyTime); - String outTime = signDate + " " + signTime; - bb.writeLog("outTime: " + outTime); - if (outTime.compareTo(subsidyTime) > 0 ) { - offGood = true; - zeroPointSub = 1; + if (groupList.contains(groupid)) { + //00:00 + if (signTime.length() == 5) { + signTime = signTime + ":00"; + } +// LocalDate date = LocalDate.parse(kqDate, DateTimeFormatter.ofPattern("yyyy-MM-dd")); +// LocalDate localDate = date.plusDays(1); +// String kqDateNew = localDate.toString(); + String subsidyTime = kqDate + " 23:00:00"; + bb.writeLog("subsidyTime: " + subsidyTime); + String outTime = signDate + " " + signTime; + bb.writeLog("outTime: " + outTime); + if (outTime.compareTo(subsidyTime) > 0) { + offGood = true; + } } } } } } - } - if ("1".equals(checkInfo.get("signType")) && !inGood) {//签到 - String signDate = Util.null2String(checkInfo.get("signDate")); - String signTime = Util.null2String(checkInfo.get("signTime")); - bb.writeLog("signDate: " + signDate); - bb.writeLog("signTime: " + signTime); - - if (groupMap != null && groupMap.size() > 0) { - for (String grouptype : groupMap.keySet()) { - bb.writeLog("grouptype: " + grouptype); - if ("0".equals(grouptype)) {//责任制--23点 - String kqgroups = Util.null2String(groupMap.get(grouptype)); - bb.writeLog("kqgroups: " + kqgroups); - List groupList = Arrays.asList(kqgroups.split(",")); - bb.writeLog("groupList: " + groupList); - if(groupList.contains(groupid)) { - //23:00 - if (signTime.length() == 5) { - signTime = signTime + ":00"; - } - String subsidyTime = kqDate + " 23:00:00"; - bb.writeLog("subsidyTime: " + subsidyTime); - String inTime = signDate + " " + signTime; - bb.writeLog("inTime: " + inTime); - if (subsidyTime.compareTo(inTime) > 0 ) { - inGood = true; + if ("1".equals(checkInfo.get("signType")) && !inGood) {//签到 + String signStatus = Util.null2String(checkInfo.get("signStatus")); + if (StringUtils.isEmpty(signStatus) || !signStatus.equalsIgnoreCase(ButtonStatusEnum.NORMAL.getStatusCode())) { + continue; + } + String signDate = Util.null2String(checkInfo.get("signDate")); + String signTime = Util.null2String(checkInfo.get("signTime")); + bb.writeLog("signDate: " + signDate); + bb.writeLog("signTime: " + signTime); + + if (groupMap != null && groupMap.size() > 0) { + for (String grouptype : groupMap.keySet()) { + bb.writeLog("grouptype: " + grouptype); + if ("0".equals(grouptype)) {//责任制--23点 + String kqgroups = Util.null2String(groupMap.get(grouptype)); + bb.writeLog("kqgroups: " + kqgroups); + List groupList = Arrays.asList(kqgroups.split(",")); + bb.writeLog("groupList: " + groupList); + if (groupList.contains(groupid)) { + //23:00 + if (signTime.length() == 5) { + signTime = signTime + ":00"; + } + String subsidyTime = kqDate + " 08:30:00"; + bb.writeLog("subsidyTime: " + subsidyTime); + String inTime = signDate + " " + signTime; + bb.writeLog("inTime: " + inTime); + if (subsidyTime.compareTo(inTime) > 0) { + inGood = true; + } } } - } // if ("1".equals(grouptype)) {//排班制--00点 // String kqgroups = Util.null2String(groupMap.get(grouptype)); // bb.writeLog("kqgroups: " + kqgroups); @@ -1124,6 +1150,7 @@ public class KQFormatData extends BaseBean { // } // } // } + } } } } @@ -1398,10 +1425,32 @@ public class KQFormatData extends BaseBean { nightShiftList.add(shift); } } + + //获取加班时长 + Map dailyFlowOverTimeData = getDailyFlowOverTimeDataAllowance(userId, kqDate); + + // 获取责任制、排班次班次 + Set zrzbcSet = new HashSet<>(); + Set 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 signminsMap = new HashMap<>(); Map attendanceMinsMap = new HashMap<>(); String acqAttenSql = " select resourceid, attendancemins, kqdate,signmins from kq_format_total where resourceid in (" + userId + ") and kqdate >='" + kqDate + "' and kqdate <='" + kqDate + "'"; rs.executeQuery(acqAttenSql); @@ -1411,7 +1460,10 @@ public class KQFormatData extends BaseBean { Double signmins = Util.getDoubleValue(Util.null2String(rs.getString("signmins"))); String kqdate = Util.null2String(rs.getString("kqdate")); if (signmins >= 0.00 ) { - attendanceMinsMap.put(resourceid+"|"+kqdate, signmins); + signminsMap.put(resourceid+"|"+kqdate, signmins); + } + if (attendancemins >= 0.00 ) { + attendanceMinsMap.put(resourceid+"|"+kqdate, attendancemins); } } KQWorkTime kqWorkTime = new KQWorkTime(); @@ -1424,11 +1476,38 @@ public class KQFormatData extends BaseBean { if ( !nightShiftList.contains(String.valueOf(serialid))) { return "0"; } + } else { + return "0"; } } - Double signmins = Util.getDoubleValue(Util.null2String(attendanceMinsMap.get(userId + "|" + kqDate))); - value = (( signmins / 60) >= 8.00 ) ? "1" : "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"; + } } } catch (Exception e) { bb.writeLog("get NightShiftSubsidy error:" + e.getMessage()); @@ -1447,14 +1526,30 @@ public class KQFormatData extends BaseBean { } //获取加班时长 -// Map dailyFlowOverTimeData = getDailyFlowOverTimeDataAllowance(userId, kqDate); + Map dailyFlowOverTimeData = getDailyFlowOverTimeDataAllowance(userId, kqDate); + + // 获取责任制、排班次班次 + Set zrzbcSet = new HashSet<>(); + Set 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 resIds = new ArrayList<>(); sqlWhere += " and a.subcompanyid1 in (" + otherstatsub + ") "; - String acqResSql = "select a.id from hrmresource a where a.status in (0,1,2,3) " + sqlWhere; + String acqResSql = "select a.id from hrmresource a where 1=1 " + sqlWhere; bb.writeLog("acqResSql: " + acqResSql); rs.executeQuery(acqResSql); @@ -1465,11 +1560,13 @@ public class KQFormatData extends BaseBean { } } // bb.writeLog("resIds: " + resIds); + KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo(); if (resIds != null && resIds.size() > 0 && StringUtils.isNotBlank(kqDate)) { HostarUtil houtil = new HostarUtil(); //先获取到实际打卡时长 + Map signminsMap = new HashMap<>(); Map 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 + "'"; rs.executeQuery(acqAttenSql); @@ -1478,8 +1575,13 @@ public class KQFormatData extends BaseBean { 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) { - attendanceMinsMap.put(resourceid + "|" + kqdate, signmins); + 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); } } List removeRes = new ArrayList<>(); @@ -1600,34 +1702,55 @@ public class KQFormatData extends BaseBean { 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; + } } } + + String groupId = kqGroupMemberComInfo.getKQGroupId(res, kqDate); + 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; -// -// 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; -// bb.writeLog("-=-temp:" + temp); - Double signmins = Util.getDoubleValue(Util.null2String(attendanceMinsMap.get(res + "|" + kqDate))); -// bb.writeLog("-=-attendanceMins:" + attendanceMins); - double v = Math.round ((signmins < 0.00) ? 0.00 : signmins) / 60.00; - value = "0"; - if (v >= 4.00 && v < 9.00) { - value = "1"; - } else if (v >= 9.00) { - value = "2"; + 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)); } } } @@ -1715,7 +1838,23 @@ public class KQFormatData extends BaseBean { } //获取加班时长 -// Map dailyFlowOverTimeData = getDailyFlowOverTimeDataAllowance(userId, kqDate); + Map dailyFlowOverTimeData = getDailyFlowOverTimeDataAllowance(userId, kqDate); + + // 获取责任制、排班次班次 + Set zrzbcSet = new HashSet<>(); + Set 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 nightShiftList = new ArrayList<>(); @@ -1733,7 +1872,7 @@ public class KQFormatData extends BaseBean { //查询该分部下的人员 List resIds = new ArrayList<>(); sqlWhere += " and a.subcompanyid1 in (" + nightshiftsub + ") "; - String acqResSql = "select a.id from hrmresource a where a.status in (0,1,2,3) " + sqlWhere; + String acqResSql = "select a.id from hrmresource a where 1=1 " + sqlWhere; bb.writeLog("acqResSql: " + acqResSql); rs.executeQuery(acqResSql); @@ -1744,10 +1883,12 @@ public class KQFormatData extends BaseBean { } } // bb.writeLog("resIds: " + resIds); + KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo(); if (resIds != null && resIds.size() > 0) { HostarUtil houtil = new HostarUtil(); //先获取到出勤时长 + Map signminsMap = new HashMap<>(); Map 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 + "'"; rs.executeQuery(acqAttenSql); @@ -1756,8 +1897,13 @@ public class KQFormatData extends BaseBean { 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) { - attendanceMinsMap.put(resourceid + "|" + kqdate, signmins); + 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); } } KQWorkTime kqWorkTime = new KQWorkTime(); @@ -1770,28 +1916,43 @@ 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; -// -// 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; -// bb.writeLog("-=-temp:" + temp); - Double signmins = Util.getDoubleValue(Util.null2String(attendanceMinsMap.get(res + "|" + kqDate))); -// bb.writeLog("-=-attendanceMins:" + attendanceMins); - value = String.valueOf(Math.floor((signmins < 0.00 ? 0.00 : signmins) / 300)); + + Object groupIdObj = serialInfo.get("groupId"); + String groupId = null; + if (Objects.isNull(groupIdObj)) { + groupId = kqGroupMemberComInfo.getKQGroupId(res, kqDate); + } else { + groupId = groupIdObj.toString(); + } + + 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)); + } } } } @@ -1814,7 +1975,7 @@ public class KQFormatData extends BaseBean { } //获取加班时长 -// Map dailyFlowOverTimeData = getDailyFlowOverTimeDataAllowance(userId, kqDate); + Map dailyFlowOverTimeData = getDailyFlowOverTimeDataAllowance(userId, kqDate); //首先去除指定不享有的分部 List subComoanyList = new ArrayList<>(); @@ -1835,6 +1996,22 @@ public class KQFormatData extends BaseBean { sqlWhere += " and a.subcompanyid1 not in ("+subComoanys+") "; } + // 获取责任制、排班次班次 + Set zrzbcSet = new HashSet<>(); + Set 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 noRes = new ArrayList<>(); String acqNoResSql = "select resourceid from uf_NoStatAllRes where isdelete = 0 or isdelete is null"; @@ -1851,7 +2028,7 @@ public class KQFormatData extends BaseBean { List resIds = new ArrayList<>(); - String acqResSql = "select a.id from hrmresource a where a.status in (0,1,2,3) " + sqlWhere; + String acqResSql = "select a.id from hrmresource a where 1=1 " + sqlWhere; bb.writeLog("acqResSql: " + acqResSql); rs.executeQuery(acqResSql); @@ -1869,6 +2046,7 @@ public class KQFormatData extends BaseBean { KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo(); //先获取到实际打卡时长 + Map signminsMap = new HashMap<>(); Map 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 + "'"; rs.executeQuery(acqAttenSql); @@ -1878,7 +2056,12 @@ public class KQFormatData extends BaseBean { Double signmins = Util.getDoubleValue(Util.null2String(rs.getString("signmins"))); String kqdate = Util.null2String(rs.getString("kqdate")); if (signmins >= 0.00 ) { - attendanceMinsMap.put(resourceid+"|"+kqdate, signmins); +// double signTemp = signmins / 60; +// int quotient = (int) (signTemp / 6); + signminsMap.put(resourceid+"|"+kqdate, signmins); + } + if (attendancemins >= 0.00 ) { + attendanceMinsMap.put(resourceid+"|"+kqdate, attendancemins); } } @@ -2008,27 +2191,42 @@ public class KQFormatData extends BaseBean { 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; -// -// 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 signmins = Util.getDoubleValue(Util.null2String(attendanceMinsMap.get(res + "|" + kqDate))); - value = String.valueOf(Math.floor( (signmins < 0.00 ? 0.00 : signmins) / 300)); + 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)); + } } } } @@ -2043,75 +2241,48 @@ public class KQFormatData extends BaseBean { String value = "0"; RecordSet rs = new RecordSet(); String sql = ""; - String sqlWhere = " "; try { - KQLeaveRulesComInfo kqLeaveRulesComInfo = new KQLeaveRulesComInfo(); - - if(id.length()>0){ - sqlWhere +=" and b.id in("+id+") "; - } +// KQLeaveRulesComInfo kqLeaveRulesComInfo = new KQLeaveRulesComInfo(); // 首先获取出差公出流程信息 - Map evectionMap = new HashMap<>(); +// Map evectionMap = new HashMap<>(); String evectionTableName = Util.null2String(bb.getPropValue("project_hostar","evectionTableName")); - 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 " ; + 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"; bb.writeLog("sql: " + sql); - + boolean isGoing = false; rs.execute(sql); while (rs.next()) { - 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 ); + isGoing = true; } -// bb.writeLog("evectionMap: " + evectionMap); - - //获取外勤打卡数据 - KQWorkTime kqWorkTime = new KQWorkTime(); - kqWorkTime.setIsFormat(true); Map< String, Map> lsCheckInfo = new HashMap<>(); - for ( String key: evectionMap.keySet()) { - String[] split = key.split("\\|"); - String kqDate = split[0]; - String userId = split[1]; - WorkTimeEntity workTime = kqWorkTime.getWorkTime(userId, kqDate); - List lsSignTime = new ArrayList<>(); - List 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> legWorkInfos = new ArrayList<>(); - //获取允许打卡时间 - String signBeginTime = signTimeScope.getBeginTime(); - if (StringUtils.isNotBlank(signBeginTime)) { - signBeginTime = signBeginTime + ":00"; - } - //获取上班时间 - String workBeginTime = workTimeScope.getBeginTime(); - if (StringUtils.isNotBlank(workBeginTime)) { - workBeginTime = workBeginTime + ":00"; - } - 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); + List> legWorkInfos = new ArrayList<>(); + + if (isGoing) { + String acqLegWorkSignSql = "select operate_time, longitude, latitude,address from mobile_sign where operater = ? and operate_date = '" + kqDateA + "' order by operate_time asc "; + 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")); + + if ("hostar".equalsIgnoreCase(address) || "鸿仕达".equals(address) || "增善路".equals(address) + || "星圃路".equals(address) || "智慧新城".equals(address)) { + continue; + } + if (StringUtils.isNotEmpty(address) && (address.contains("鸿仕达") || address.contains("增善路") + || address.contains("星圃路") || address.contains("智慧新城") || address.toLowerCase().contains("hostar"))) { + continue; + } + if (StringUtils.isNotEmpty(address) && (address.contains("台湾") || address.contains("越南") + || address.toLowerCase().contains("hostar") || address.toLowerCase().contains("vinh") || address.toLowerCase().contains("ha noi"))) { + continue; + } + if ( StringUtils.isNotBlank(operateTime) && StringUtils.isNotBlank(longitude) && StringUtils.isNotBlank(latitude) ) { Map temp = new HashMap<>(); temp.put("operateTime", operateTime); @@ -2120,7 +2291,7 @@ public class KQFormatData extends BaseBean { legWorkInfos.add(temp); } } - if (legWorkInfos != null && legWorkInfos.size() > 0 ) { + if (legWorkInfos != null && legWorkInfos.size() > 1 ) { String tempSignIn = ""; String tempSignInLatitude = ""; String tempSignInLongitude = ""; @@ -2128,60 +2299,43 @@ public class KQFormatData extends BaseBean { String tempSignOutLongitude = ""; String tempSignOut = ""; Map checkInfo = new HashMap<>(); - if ( legWorkInfos.size() == 1) {//只有一笔外勤卡直接算上班 - Map temp = legWorkInfos.get(0); + for ( Map temp : legWorkInfos) { 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); - - } else { - for ( Map 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 (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; - } - } + } + if (StringUtils.isBlank(tempSignOut)) { + 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("signInLatitude", tempSignInLatitude);//签到纬度 + checkInfo.put("signInLongitude", tempSignInLongitude);//签到经度 + checkInfo.put("signOutTime", tempSignOut);//签退时间 + checkInfo.put("signOutLatitude", tempSignOutLatitude);//签退纬度 + checkInfo.put("signOutLongitude", tempSignOutLongitude);//签退经度 + lsCheckInfo.put(id + "|" + kqDateA, checkInfo); } - } } HostarUtil hostarUtil = new HostarUtil(); @@ -2205,14 +2359,13 @@ 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 temp = lsCheckInfo.get(key); String signInTime = Util.null2String(temp.get("signInTime")); String signOutTime = Util.null2String(temp.get("signOutTime")); - if (StringUtils.isNotBlank(signInTime) && StringUtils.isNotBlank(signOutTime) ) { for (Map me: MealMap) { @@ -2229,7 +2382,8 @@ public class KQFormatData extends BaseBean { if (StringUtils.isEmpty(value) || StringUtils.equals(value, "0")) { value = "1"; } else { - value = String.valueOf(Integer.parseInt(value)); + int valueT = Integer.parseInt(value) + 1; + value = String.valueOf(valueT); } } } @@ -2271,6 +2425,8 @@ public class KQFormatData extends BaseBean { value = rs.getString("zeropoint"); } } + } else { + value = "0"; } } } catch (Exception e) { diff --git a/src/com/engine/kq/cmd/attendanceButton/PunchOutButtonCmd.java b/src/com/engine/kq/cmd/attendanceButton/PunchOutButtonCmd.java index 05a4bce..7e491ee 100644 --- a/src/com/engine/kq/cmd/attendanceButton/PunchOutButtonCmd.java +++ b/src/com/engine/kq/cmd/attendanceButton/PunchOutButtonCmd.java @@ -300,24 +300,20 @@ public class PunchOutButtonCmd extends AbstractCommonCommand } else { sqlDate = signDate; } - String acqEvecAndOutSql = " select sum(a.number) as number " + - " from ( " + - " SELECT " + - " count(*) as number " + - " FROM " + - " workflow_requestbase " + - " WHERE " + - " requestid IN ( SELECT requestid FROM " + evectionTableName + " WHERE (sqr = '" + userId + "' or ','+CAST(nbtxr AS varchar(max))+',' like '%,'+CAST("+userId+" AS varchar(10))+',%') and ksrq <='" + sqlDate + "' and (((sjjsrq is null or sjjsrq = '') and yjjsrq >= '" + sqlDate + "') or (sjjsrq is not null and sjjsrq != '' and sjjsrq >= '" + sqlDate + "'))) " + + String acqEvecAndOutSql = " SELECT count(*) as number FROM workflow_requestbase WHERE requestid IN " + + "( SELECT requestid FROM " + evectionTableName + " WHERE (sjccr = '" + userId + "' or ','+CAST(nbtxr AS varchar(max))+',' like '%,'+CAST(" + +userId+" AS varchar(10))+',%') and ksrq <='" + sqlDate + "' and (((sjjsrq is null or sjjsrq = '') and yjjsrq >= '" + + sqlDate + "') or (sjjsrq is not null and sjjsrq != '' and sjjsrq >= '" + sqlDate + "'))) "; // " AND currentnodetype = 3 " + - " UNION all " + - " SELECT " + - " count(*) as number " + - " FROM " + - " workflow_requestbase " + - " WHERE " + - " requestid IN ( SELECT requestid FROM " + outTableName + " WHERE (sqr = '" + userId + "' or ','+CAST(nbtxr AS varchar(max))+',' like '%,'+CAST("+userId+" AS varchar(10))+',%') and ksrq <='" + sqlDate + "' and (((sjjsrq is null or sjjsrq = '') and yjjsrq >= '" + sqlDate + "') or (sjjsrq is not null and sjjsrq != '' and sjjsrq >= '" + sqlDate + "'))) " + -// " AND currentnodetype = 3 " + - ") a "; +// " UNION all " + +// " SELECT " + +// " count(*) as number " + +// " FROM " + +// " workflow_requestbase " + +// " WHERE " + +// " requestid IN ( SELECT requestid FROM " + outTableName + " WHERE (sjccr = '" + userId + "' or ','+CAST(nbtxr AS varchar(max))+',' like '%,'+CAST("+userId+" AS varchar(10))+',%') and ksrq <='" + sqlDate + "' and (((sjjsrq is null or sjjsrq = '') and yjjsrq >= '" + sqlDate + "') or (sjjsrq is not null and sjjsrq != '' and sjjsrq >= '" + sqlDate + "'))) " + +//// " AND currentnodetype = 3 " + +// ") a "; bb.writeLog("acqEvecAndOutSql: " + acqEvecAndOutSql); rs.executeQuery(acqEvecAndOutSql); @@ -413,9 +409,11 @@ public class PunchOutButtonCmd extends AbstractCommonCommand new KQFormatBiz().formatDate(""+userId,(belongdate.length() == 0 ? DateUtil.getCurrentDate() : belongdate)); //外勤签到转的考勤 处理加班规则 SplitActionUtil.pushOverTimeTasksAll(belongdate,belongdate,""+userId); + SplitActionUtil.pushOverTimeTasksAll(signDate,signDate,""+userId); } else { String acqSql = "select id from mobile_sign where operater = ? and operate_date = ? and operate_time = ? "; rs.executeQuery(acqSql, userId, signDate, signTime); + RecordSet rsTz = new RecordSet(); while (rs.next()) { String id = Util.null2String(rs.getString("id")); if (StringUtils.isNotBlank(id)) { @@ -467,13 +465,14 @@ public class PunchOutButtonCmd extends AbstractCommonCommand String abnUuid = UUID.randomUUID().toString(); String syncSql = "insert into uf_outsigntype (outsignid, signinfo, formmodeid, modedatacreater, " + "modedatacreatertype, modedatacreatedate, modedatacreatetime, MODEUUID) values (?, ?, ?, ?, ?, ?, ?, ?)"; - boolean b = rs.executeUpdate(syncSql, id, signInfoString, outSignTypeModeId, modedatacreater, modedatacreatertype, modedatacreatedate, modedatacreatetime, abnUuid); + boolean b = rsTz.executeUpdate(syncSql, id, signInfoString, outSignTypeModeId, modedatacreater, modedatacreatertype, modedatacreatedate, modedatacreatetime, abnUuid); if (b) { + RecordSet rsTz1 = new RecordSet(); String billid = "-1"; String acqModeIdSql = "select id from uf_outsigntype where MODEUUID = ?"; - rs.executeQuery(acqModeIdSql, abnUuid); - while (rs.next()) { - billid = Util.null2String(rs.getString("id")); + rsTz1.executeQuery(acqModeIdSql, abnUuid); + while (rsTz1.next()) { + billid = Util.null2String(rsTz1.getString("id")); } bb.writeLog("billid:" + billid); new HostarUtil().modePerRecon(modedatacreater, outSignTypeModeId, billid); diff --git a/src/weaver/interfaces/hostar/action/OutSignSyncAction.java b/src/weaver/interfaces/hostar/action/OutSignSyncAction.java index e47650f..303cf45 100644 --- a/src/weaver/interfaces/hostar/action/OutSignSyncAction.java +++ b/src/weaver/interfaces/hostar/action/OutSignSyncAction.java @@ -102,16 +102,17 @@ public class OutSignSyncAction implements Action { if ("true".equals(belongdateIsNull)) { //外勤签到没有归属日期,遇到跨天班次打卡可能归属前一天,需要格式化前一天考勤 bb.writeLog("PunchOutButtonCmd:userId:" + userId + ":belongdate:" + DateUtil.getYesterday()); - new KQFormatBiz().formatDate("" + userId, DateUtil.getYesterday()); + new KQFormatBiz().formatDate(userId, DateUtil.getYesterday()); } bb.writeLog("PunchOutButtonCmd:userId:" + userId + ":belongdate:" + (belongdate.length() == 0 ? DateUtil.getCurrentDate() : belongdate)); if (belongdate.length() == 0) { //外勤签到没有归属日期,遇到跨天班次打卡可能归属前一天,需要格式化前一天考勤 - new KQFormatBiz().formatDate("" + userId, DateUtil.getYesterday()); + new KQFormatBiz().formatDate(userId, DateUtil.getYesterday()); } - new KQFormatBiz().formatDate("" + userId, (belongdate.length() == 0 ? DateUtil.getCurrentDate() : belongdate)); +// new KQFormatBiz().formatDate(userId, (belongdate.length() == 0 ? DateUtil.getCurrentDate() : belongdate)); + new KQFormatBiz().formatDate(userId, signDate); //外勤签到转的考勤 处理加班规则 - SplitActionUtil.pushOverTimeTasksAll(belongdate, belongdate, "" + userId); + SplitActionUtil.pushOverTimeTasksAll(signDate, signDate, userId); } }