dev-zm-svn
zhangming 12 months ago
parent 4754e06962
commit 4b41d44113

@ -209,7 +209,7 @@ public class KQFormatData extends BaseBean {
lsParam.addAll(format(userId, kqDate, workTime, workFlowInfo,uuid)); lsParam.addAll(format(userId, kqDate, workTime, workFlowInfo,uuid));
} }
// bb.writeLog("lsParam: " + lsParam); bb.writeLog("lsParam: " + lsParam);
if (lsParam.size() > 0) { if (lsParam.size() > 0) {
sql = " insert into kq_format_detail( " + sql = " insert into kq_format_detail( " +
" resourceid,kqdate,groupid,serialid,serialnumber,workbegindate,workbegintime,workenddate,workendtime,workmins," + " resourceid,kqdate,groupid,serialid,serialnumber,workbegindate,workbegintime,workenddate,workendtime,workmins," +
@ -273,9 +273,6 @@ public class KQFormatData extends BaseBean {
} }
// 考勤二开--出差餐补 // 考勤二开--出差餐补
String mealAllowance = getMealAllowance(userId, kqDate); String mealAllowance = getMealAllowance(userId, kqDate);
if (!(StringUtils.equals(statAllowance, "0") && StringUtils.equals(otherStatAllowance, "0"))) {
mealAllowance = "0";
}
bb.writeLog("mealAllowance:" + mealAllowance); bb.writeLog("mealAllowance:" + mealAllowance);
if (StringUtils.isEmpty(mealAllowance)) { if (StringUtils.isEmpty(mealAllowance)) {
mealAllowance = "0"; mealAllowance = "0";
@ -514,7 +511,7 @@ public class KQFormatData extends BaseBean {
//取卡 //取卡
List<Object> lsCheckInfo = new KQFormatSignData().getSignInfo(userId,signTimeScope,workTimeScope,kqDate,preDate,nextDate,kqTimesArrayComInfo,hostIps,uuid,shiftCount,shiftI); 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); kqLog.info("lsCheckInfo" + JSONObject.toJSONString(lsCheckInfo)+"::userId" + userId + "kqDate==" + kqDate+":hostIps:"+hostIps+":uuid::"+uuid);
if(this.writeLog) { if(this.writeLog) {
logInfo.put(""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005297,weaver.general.ThreadVarLanguage.getLang())+"",signBeginDateTime); logInfo.put(""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005297,weaver.general.ThreadVarLanguage.getLang())+"",signBeginDateTime);
@ -527,7 +524,7 @@ public class KQFormatData extends BaseBean {
for (int j = 0; lsCheckInfo != null && j < lsCheckInfo.size(); j++) { for (int j = 0; lsCheckInfo != null && j < lsCheckInfo.size(); j++) {
Map<String, Object> checkInfo = (Map<String, Object>) lsCheckInfo.get(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 signStatus = Util.null2String(checkInfo.get("signStatus"));
String signId = Util.null2String(checkInfo.get("signId")); String signId = Util.null2String(checkInfo.get("signId"));
@ -725,10 +722,10 @@ public class KQFormatData extends BaseBean {
if (workFlowInfo.get(dateKey) != null) { if (workFlowInfo.get(dateKey) != null) {
workFlow = (List<Object>) workFlowInfo.get(dateKey); 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++) { for (int j = 0; workFlow != null && j < workFlow.size(); j++) {
Map<String, Object> data = (Map<String, Object>) workFlow.get(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 flowType = Util.null2String(data.get("flowtype"));
String newLeaveType = Util.null2String(data.get("newleavetype")); String newLeaveType = Util.null2String(data.get("newleavetype"));
String signtype = Util.null2String(data.get("signtype")); String signtype = Util.null2String(data.get("signtype"));
@ -1014,150 +1011,65 @@ public class KQFormatData extends BaseBean {
groupMap.put(grouptype, kqgroup); groupMap.put(grouptype, kqgroup);
} }
} }
// bb.writeLog("groupMap: " + groupMap); bb.writeLog("groupMap: " + groupMap);
bb.writeLog("groupid: " + groupid); bb.writeLog("groupid: " + groupid);
//获取夜班班次
List<String> 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;
if (StringUtils.isEmpty(serialid)) {
serialid = "0";
}
if (CollectionUtils.isEmpty(nightShiftList) || !nightShiftList.contains(serialid)) {
for (int j = 0; lsCheckInfo != null && j < lsCheckInfo.size(); j++) { for (int j = 0; lsCheckInfo != null && j < lsCheckInfo.size(); j++) {
bb.writeLog("lsCheckInfo is:" + JSONObject.toJSONString(lsCheckInfo));
Map<String, Object> checkInfo = (Map<String, Object>) lsCheckInfo.get(j); Map<String, Object> checkInfo = (Map<String, Object>) lsCheckInfo.get(j);
if ("2".equals(checkInfo.get("signType")) && !offGood) {//签退 if ("2".equals(checkInfo.get("signType"))) {//签退
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 signDate = Util.null2String(checkInfo.get("signDate"));
String signTime = Util.null2String(checkInfo.get("signTime")); String signTime = Util.null2String(checkInfo.get("signTime"));
// bb.writeLog("signDate: " + signDate); bb.writeLog("signDate: " + signDate);
// bb.writeLog("signTime: " + signTime); bb.writeLog("signTime: " + signTime);
if (groupMap != null && groupMap.size() > 0) { if (groupMap != null && groupMap.size() > 0) {
for (String grouptype : groupMap.keySet()) { for (String grouptype : groupMap.keySet()) {
// bb.writeLog("grouptype: " + grouptype); bb.writeLog("grouptype: " + grouptype);
// if ("0".equals(grouptype)) {//责任制--23点 if ("0".equals(grouptype)) {//责任制--23点
// String kqgroups = Util.null2String(groupMap.get(grouptype));
// bb.writeLog("kqgroups: " + kqgroups);
// List<String> 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 outTime = signDate + " " + signTime;
// bb.writeLog("outTime: " + outTime);
// if (outTime.compareTo(subsidyTime) > 0 ) {
// zeroPointSub = 1;
// }
// }
// }
if ("0".equals(grouptype)) {//责任制--00点
String kqgroups = Util.null2String(groupMap.get(grouptype)); String kqgroups = Util.null2String(groupMap.get(grouptype));
// bb.writeLog("kqgroups: " + kqgroups); bb.writeLog("kqgroups: " + kqgroups);
List<String> groupList = Arrays.asList(kqgroups.split(",")); List<String> groupList = Arrays.asList(kqgroups.split(","));
// bb.writeLog("groupList: " + groupList); bb.writeLog("groupList: " + groupList);
if (groupList.contains(groupid)) { if(groupList.contains(groupid)) {
//00:00 //23:00
if (signTime.length() == 5) { if (signTime.length() == 5) {
signTime = signTime + ":00"; 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"; String subsidyTime = kqDate + " 23:00:00";
bb.writeLog("subsidyTime: " + subsidyTime); bb.writeLog("subsidyTime: " + subsidyTime);
String outTime = signDate + " " + signTime; String outTime = signDate + " " + signTime;
bb.writeLog("outTime: " + outTime); bb.writeLog("outTime: " + outTime);
if (outTime.compareTo(subsidyTime) > 0) { if (outTime.compareTo(subsidyTime) > 0 ) {
offGood = true; zeroPointSub = 1;
}
}
}
}
} }
} }
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")); if ("1".equals(grouptype)) {//排班制--00点
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)); String kqgroups = Util.null2String(groupMap.get(grouptype));
bb.writeLog("kqgroups: " + kqgroups); bb.writeLog("kqgroups: " + kqgroups);
List<String> groupList = Arrays.asList(kqgroups.split(",")); List<String> groupList = Arrays.asList(kqgroups.split(","));
bb.writeLog("groupList: " + groupList); bb.writeLog("groupList: " + groupList);
if (groupList.contains(groupid)) { if(groupList.contains(groupid)) {
//23:00 //00:00
if (signTime.length() == 5) { if (signTime.length() == 5) {
signTime = signTime + ":00"; signTime = signTime + ":00";
} }
String subsidyTime = kqDate + " 08:30: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); bb.writeLog("subsidyTime: " + subsidyTime);
String inTime = signDate + " " + signTime; String outTime = signDate + " " + signTime;
bb.writeLog("inTime: " + inTime); bb.writeLog("outTime: " + outTime);
if (subsidyTime.compareTo(inTime) > 0) { if (outTime.compareTo(subsidyTime) > 0 ) {
inGood = true; zeroPointSub = 1;
} }
}
}
// if ("1".equals(grouptype)) {//排班制--00点
// String kqgroups = Util.null2String(groupMap.get(grouptype));
// bb.writeLog("kqgroups: " + kqgroups);
// List<String> 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 ) {
// zeroPointSub = 1;
// }
// }
// }
} }
} }
} }
} }
} }
if (offGood && inGood) {
zeroPointSub = 1;
} }
bb.writeLog("zeroPointSub: " + zeroPointSub); bb.writeLog("zeroPointSub: " + zeroPointSub);
/*考勤二开--零点补助end*/ /*考勤二开--零点补助end*/
@ -1199,7 +1111,7 @@ public class KQFormatData extends BaseBean {
params.add(zeroPointSub); params.add(zeroPointSub);
/*考勤二开--零点补助end*/ /*考勤二开--零点补助end*/
bb.writeLog("params end. "); bb.writeLog("params: " + params);
Map<String,Object> definedFieldInfo = new KQFormatBiz().getDefinedField(); Map<String,Object> definedFieldInfo = new KQFormatBiz().getDefinedField();
String[] definedFields = Util.splitString(Util.null2String(definedFieldInfo.get("definedField")),","); String[] definedFields = Util.splitString(Util.null2String(definedFieldInfo.get("definedField")),",");
@ -1425,43 +1337,17 @@ public class KQFormatData extends BaseBean {
nightShiftList.add(shift); 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) { if (nightShiftList != null & nightShiftList.size() > 0) {
KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo();
HostarUtil houtil = new HostarUtil(); HostarUtil houtil = new HostarUtil();
//先获取到出勤时长 //先获取到出勤时长
Map<String, Double> signminsMap = new HashMap<>();
Map<String, Double> attendanceMinsMap = 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); rs.executeQuery(acqAttenSql);
while (rs.next()) { while (rs.next()) {
String resourceid = Util.null2String(rs.getString("resourceid")); String resourceid = Util.null2String(rs.getString("resourceid"));
Double attendancemins = Util.getDoubleValue(Util.null2String(rs.getString("attendancemins"))); 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")); String kqdate = Util.null2String(rs.getString("kqdate"));
if (signmins >= 0.00 ) {
signminsMap.put(resourceid+"|"+kqdate, signmins);
}
if (attendancemins >= 0.00 ) { if (attendancemins >= 0.00 ) {
attendanceMinsMap.put(resourceid+"|"+kqdate, attendancemins); attendanceMinsMap.put(resourceid+"|"+kqdate, attendancemins);
} }
@ -1476,38 +1362,11 @@ public class KQFormatData extends BaseBean {
if ( !nightShiftList.contains(String.valueOf(serialid))) { if ( !nightShiftList.contains(String.valueOf(serialid))) {
return "0"; 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))); 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"; value = (( attendanceMins / 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) { } catch (Exception e) {
bb.writeLog("get NightShiftSubsidy error:" + e.getMessage()); bb.writeLog("get NightShiftSubsidy error:" + e.getMessage());
@ -1528,28 +1387,12 @@ public class KQFormatData extends BaseBean {
//获取加班时长 //获取加班时长
Map<String,Object> dailyFlowOverTimeData = getDailyFlowOverTimeDataAllowance(userId, kqDate); 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")); String otherstatsub = Util.null2String(bb.getPropValue("project_hostar", "otherstatsubcompany"));
if (StringUtils.isNotBlank(otherstatsub)) { if (StringUtils.isNotBlank(otherstatsub)) {
//查询该分部下的人员 //查询该分部下的人员
List<String> resIds = new ArrayList<>(); List<String> resIds = new ArrayList<>();
sqlWhere += " and a.subcompanyid1 in (" + otherstatsub + ") "; 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); bb.writeLog("acqResSql: " + acqResSql);
rs.executeQuery(acqResSql); rs.executeQuery(acqResSql);
@ -1559,29 +1402,21 @@ public class KQFormatData extends BaseBean {
resIds.add(id); resIds.add(id);
} }
} }
// bb.writeLog("resIds: " + resIds); bb.writeLog("resIds: " + resIds);
KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo();
if (resIds != null && resIds.size() > 0 && StringUtils.isNotBlank(kqDate)) { if (resIds != null && resIds.size() > 0 && StringUtils.isNotBlank(kqDate)) {
HostarUtil houtil = new HostarUtil(); HostarUtil houtil = new HostarUtil();
//先获取到实际打卡时长 //先获取到出勤时长
Map<String, Double> signminsMap = new HashMap<>();
Map<String, Double> attendanceMinsMap = 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); rs.executeQuery(acqAttenSql);
while (rs.next()) { while (rs.next()) {
String resourceid = Util.null2String(rs.getString("resourceid")); String resourceid = Util.null2String(rs.getString("resourceid"));
Double attendancemins = Util.getDoubleValue(Util.null2String(rs.getString("attendancemins"))); 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")); String kqdate = Util.null2String(rs.getString("kqdate"));
if (signmins >= 0.00 ) { if (attendancemins >= 0.00) {
// double signTemp = signmins / 60; attendanceMinsMap.put(resourceid + "|" + kqdate, attendancemins);
// int quotient = (int) (signTemp / 6);
signminsMap.put(resourceid+"|"+kqdate, signmins);
}
if (attendancemins >= 0.00 ) {
attendanceMinsMap.put(resourceid+"|"+kqdate, attendancemins);
} }
} }
List<String> removeRes = new ArrayList<>(); List<String> removeRes = new ArrayList<>();
@ -1683,42 +1518,18 @@ public class KQFormatData extends BaseBean {
} }
Integer signNumber = 0; Integer signNumber = 0;
if (signIdList !=null && signIdList.size() > 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); // bb.writeLog("acqShowAddress: " + acqShowAddress);
rs.executeQuery(acqShowAddress); rs.executeQuery(acqShowAddress);
while (rs.next()) { while (rs.next()) {
String showaddress = Util.null2String(rs.getString("showaddress")); 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")); String addr = Util.null2String(rs.getString("addr"));
if ("鸿仕达".equals(showaddress) || "hostar".equalsIgnoreCase(showaddress) || "鸿仕达".equals(addr) || "hostar".equalsIgnoreCase(addr)) { if ("鸿仕达".equals(showaddress) || "hostar".equalsIgnoreCase(showaddress) || "鸿仕达".equals(addr) || "hostar".equalsIgnoreCase(addr)) {
signNumber = signNumber + 1; 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;
} }
}
}
String groupId = kqGroupMemberComInfo.getKQGroupId(res, kqDate);
if (signNumber == 0) { 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"))); double workingDayOvertime_4leave = Util.getDoubleValue(Util.null2String(dailyFlowOverTimeData.get(res + "|" + kqDate + "|workingDayOvertime_4leave")));
workingDayOvertime_4leave = workingDayOvertime_4leave < 0 ? 0 : workingDayOvertime_4leave; workingDayOvertime_4leave = workingDayOvertime_4leave < 0 ? 0 : workingDayOvertime_4leave;
double restDayOvertime_4leave = Util.getDoubleValue(Util.null2String(dailyFlowOverTimeData.get(res + "|" + kqDate + "|restDayOvertime_4leave"))); double restDayOvertime_4leave = Util.getDoubleValue(Util.null2String(dailyFlowOverTimeData.get(res + "|" + kqDate + "|restDayOvertime_4leave")));
@ -1735,12 +1546,10 @@ public class KQFormatData extends BaseBean {
double temp = workingDayOvertime_4leave + restDayOvertime_4leave + holidayOvertime_4leave + double temp = workingDayOvertime_4leave + restDayOvertime_4leave + holidayOvertime_4leave +
workingDayOvertime_nonleave + restDayOvertime_nonleave + holidayOvertime_nonleave; workingDayOvertime_nonleave + restDayOvertime_nonleave + holidayOvertime_nonleave;
// bb.writeLog("-=-temp:" + temp);
Double attendanceMins = Util.getDoubleValue(Util.null2String(attendanceMinsMap.get(res + "|" + kqDate))); Double attendanceMins = Util.getDoubleValue(Util.null2String(attendanceMinsMap.get(res + "|" + kqDate)));
if (attendanceMins < 0.00) { // bb.writeLog("-=-attendanceMins:" + attendanceMins);
attendanceMins = 0.00; double v = Math.round (((attendanceMins < 0.00) ? 0.00 : attendanceMins) + temp) / 60.00;
}
minValue = attendanceMins + temp;
double v = Math.round (Math.max(minValue, 0.00)) / 60.00;
value = "0"; value = "0";
if (v >= 4.00 && v < 9.00) { if (v >= 4.00 && v < 9.00) {
value = "1"; value = "1";
@ -1748,11 +1557,6 @@ public class KQFormatData extends BaseBean {
value = "2"; 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));
}
}
} }
} }
} }
@ -1840,22 +1644,6 @@ public class KQFormatData extends BaseBean {
//获取加班时长 //获取加班时长
Map<String, Object> dailyFlowOverTimeData = getDailyFlowOverTimeDataAllowance(userId, kqDate); 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<>(); List<String> nightShiftList = new ArrayList<>();
String acqNightShiftSql = "select shift from uf_nightshiftmanage where isdelete is null or isdelete = 0"; String acqNightShiftSql = "select shift from uf_nightshiftmanage where isdelete is null or isdelete = 0";
@ -1872,7 +1660,7 @@ public class KQFormatData extends BaseBean {
//查询该分部下的人员 //查询该分部下的人员
List<String> resIds = new ArrayList<>(); List<String> resIds = new ArrayList<>();
sqlWhere += " and a.subcompanyid1 in (" + nightshiftsub + ") "; 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); bb.writeLog("acqResSql: " + acqResSql);
rs.executeQuery(acqResSql); rs.executeQuery(acqResSql);
@ -1882,28 +1670,20 @@ public class KQFormatData extends BaseBean {
resIds.add(id); resIds.add(id);
} }
} }
// bb.writeLog("resIds: " + resIds); bb.writeLog("resIds: " + resIds);
KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo();
if (resIds != null && resIds.size() > 0) { if (resIds != null && resIds.size() > 0) {
HostarUtil houtil = new HostarUtil(); HostarUtil houtil = new HostarUtil();
//先获取到出勤时长 //先获取到出勤时长
Map<String, Double> signminsMap = new HashMap<>();
Map<String, Double> attendanceMinsMap = 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); rs.executeQuery(acqAttenSql);
while (rs.next()) { while (rs.next()) {
String resourceid = Util.null2String(rs.getString("resourceid")); String resourceid = Util.null2String(rs.getString("resourceid"));
Double attendancemins = Util.getDoubleValue(Util.null2String(rs.getString("attendancemins"))); 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")); String kqdate = Util.null2String(rs.getString("kqdate"));
if (signmins >= 0.00 ) { if (attendancemins >= 0.00) {
// double signTemp = signmins / 60; attendanceMinsMap.put(resourceid + "|" + kqdate, attendancemins);
// int quotient = (int) (signTemp / 6);
signminsMap.put(resourceid+"|"+kqdate, signmins);
}
if (attendancemins >= 0.00 ) {
attendanceMinsMap.put(resourceid+"|"+kqdate, attendancemins);
} }
} }
KQWorkTime kqWorkTime = new KQWorkTime(); KQWorkTime kqWorkTime = new KQWorkTime();
@ -1916,20 +1696,8 @@ public class KQFormatData extends BaseBean {
if (!nightShiftList.contains(String.valueOf(serialid))) { if (!nightShiftList.contains(String.valueOf(serialid))) {
continue; continue;
} }
} else {
continue;
} }
} }
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"))); double workingDayOvertime_4leave = Util.getDoubleValue(Util.null2String(dailyFlowOverTimeData.get(res + "|" + kqDate + "|workingDayOvertime_4leave")));
workingDayOvertime_4leave = workingDayOvertime_4leave < 0 ? 0 : workingDayOvertime_4leave; workingDayOvertime_4leave = workingDayOvertime_4leave < 0 ? 0 : workingDayOvertime_4leave;
double restDayOvertime_4leave = Util.getDoubleValue(Util.null2String(dailyFlowOverTimeData.get(res + "|" + kqDate + "|restDayOvertime_4leave"))); double restDayOvertime_4leave = Util.getDoubleValue(Util.null2String(dailyFlowOverTimeData.get(res + "|" + kqDate + "|restDayOvertime_4leave")));
@ -1946,14 +1714,11 @@ public class KQFormatData extends BaseBean {
double temp = workingDayOvertime_4leave + restDayOvertime_4leave + holidayOvertime_4leave + double temp = workingDayOvertime_4leave + restDayOvertime_4leave + holidayOvertime_4leave +
workingDayOvertime_nonleave + restDayOvertime_nonleave + holidayOvertime_nonleave; workingDayOvertime_nonleave + restDayOvertime_nonleave + holidayOvertime_nonleave;
// bb.writeLog("-=-temp:" + temp);
Double attendanceMins = Util.getDoubleValue(Util.null2String(attendanceMinsMap.get(res + "|" + kqDate))); 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)); 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));
}
}
} }
} }
} }
@ -1996,22 +1761,6 @@ public class KQFormatData extends BaseBean {
sqlWhere += " and a.subcompanyid1 not in ("+subComoanys+") "; 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<>(); List<String> noRes = new ArrayList<>();
String acqNoResSql = "select resourceid from uf_NoStatAllRes where isdelete = 0 or isdelete is null"; String acqNoResSql = "select resourceid from uf_NoStatAllRes where isdelete = 0 or isdelete is null";
@ -2028,7 +1777,7 @@ public class KQFormatData extends BaseBean {
List<String> resIds = new ArrayList<>(); 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); bb.writeLog("acqResSql: " + acqResSql);
rs.executeQuery(acqResSql); rs.executeQuery(acqResSql);
@ -2038,28 +1787,21 @@ public class KQFormatData extends BaseBean {
resIds.add(id); resIds.add(id);
} }
} }
// bb.writeLog("resIds: " + resIds); bb.writeLog("resIds: " + resIds);
if (resIds != null && resIds.size() > 0 && StringUtils.isNotBlank(kqDate)) { if (resIds != null && resIds.size() > 0 && StringUtils.isNotBlank(kqDate)) {
HostarUtil houtil = new HostarUtil(); HostarUtil houtil = new HostarUtil();
KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo(); KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo();
//先获取到实际打卡时长 //先获取到出勤时长
Map<String, Double> signminsMap = new HashMap<>();
Map<String, Double> attendanceMinsMap = 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); rs.executeQuery(acqAttenSql);
while (rs.next()) { while (rs.next()) {
String resourceid = Util.null2String(rs.getString("resourceid")); String resourceid = Util.null2String(rs.getString("resourceid"));
Double attendancemins = Util.getDoubleValue(Util.null2String(rs.getString("attendancemins"))); 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")); 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 ) { if (attendancemins >= 0.00 ) {
attendanceMinsMap.put(resourceid+"|"+kqdate, attendancemins); attendanceMinsMap.put(resourceid+"|"+kqdate, attendancemins);
} }
@ -2168,42 +1910,22 @@ public class KQFormatData extends BaseBean {
} }
} }
} }
// bb.writeLog("signIdList " + signIdList); bb.writeLog("signIdList " + signIdList);
Integer signNumber = 0; Integer signNumber = 0;
if (signIdList !=null && signIdList.size() > 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); bb.writeLog("acqShowAddress: " + acqShowAddress);
rs.executeQuery(acqShowAddress); rs.executeQuery(acqShowAddress);
while (rs.next()) { while (rs.next()) {
String showaddress = Util.null2String(rs.getString("showaddress")); 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")); String addr = Util.null2String(rs.getString("addr"));
if ("鸿仕达".equals(showaddress) || "hostar".equalsIgnoreCase(showaddress) || "鸿仕达".equals(addr) || "hostar".equalsIgnoreCase(addr)) { if ("鸿仕达".equals(showaddress) || "hostar".equalsIgnoreCase(showaddress) || "鸿仕达".equals(addr) || "hostar".equalsIgnoreCase(addr)) {
signNumber = signNumber + 1; 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 (signNumber == 0 ) {
if ((!CollectionUtils.isEmpty(pbzbcSet)) && pbzbcSet.contains(groupId)) {
double workingDayOvertime_4leave = Util.getDoubleValue(Util.null2String(dailyFlowOverTimeData.get(res + "|" + kqDate + "|workingDayOvertime_4leave"))); double workingDayOvertime_4leave = Util.getDoubleValue(Util.null2String(dailyFlowOverTimeData.get(res + "|" + kqDate + "|workingDayOvertime_4leave")));
workingDayOvertime_4leave = workingDayOvertime_4leave < 0 ? 0 : workingDayOvertime_4leave; workingDayOvertime_4leave = workingDayOvertime_4leave < 0 ? 0 : workingDayOvertime_4leave;
double restDayOvertime_4leave = Util.getDoubleValue(Util.null2String(dailyFlowOverTimeData.get(res + "|" + kqDate + "|restDayOvertime_4leave"))); double restDayOvertime_4leave = Util.getDoubleValue(Util.null2String(dailyFlowOverTimeData.get(res + "|" + kqDate + "|restDayOvertime_4leave")));
@ -2221,12 +1943,7 @@ public class KQFormatData extends BaseBean {
double temp = workingDayOvertime_4leave + restDayOvertime_4leave + holidayOvertime_4leave + double temp = workingDayOvertime_4leave + restDayOvertime_4leave + holidayOvertime_4leave +
workingDayOvertime_nonleave + restDayOvertime_nonleave + holidayOvertime_nonleave; workingDayOvertime_nonleave + restDayOvertime_nonleave + holidayOvertime_nonleave;
Double attendanceMins = Util.getDoubleValue(Util.null2String(attendanceMinsMap.get(res + "|" + kqDate))); Double attendanceMins = Util.getDoubleValue(Util.null2String(attendanceMinsMap.get(res + "|" + kqDate)));
value = String.valueOf(Math.floor(((attendanceMins < 0.00 ? 0.00 : attendanceMins) + temp) / 300)); 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));
}
} }
} }
} }
@ -2241,48 +1958,75 @@ public class KQFormatData extends BaseBean {
String value = "0"; String value = "0";
RecordSet rs = new RecordSet(); RecordSet rs = new RecordSet();
String sql = ""; String sql = "";
String sqlWhere = " ";
try { 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")); String evectionTableName = Util.null2String(bb.getPropValue("project_hostar","evectionTableName"));
sql = " select a.* from (" + sql = " select d.resourceid, d.belongdate, d.longitude, d.latitude from ( " +
"select id, requestid, jd as longitude, wd as latitude from " + evectionTableName + " 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 " +
" WHERE (sjccr = '" + id + "' or ','+CAST(nbtxr AS varchar(max))+',' like '%,'+CAST("+id+" AS varchar(10))+',%') " + " left join hrmresource b " +
" and ksrq <='" + kqDateA + "' and (((sjjsrq is null or sjjsrq = '') and yjjsrq >= '" + kqDateA + "') or (sjjsrq is not null and sjjsrq != '' and sjjsrq >= '" + kqDateA + "'))" + " on b.id = a.resourceid " +
") a, workflow_requestbase b WHERE a.requestId = b.requestId and b.currentnodetype != 0"; " 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); bb.writeLog("sql: " + sql);
boolean isGoing = false;
rs.execute(sql); rs.execute(sql);
while (rs.next()) { 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<>(); Map< String, Map<String, Object>> lsCheckInfo = new HashMap<>();
List<Map<String, Object>> legWorkInfos = new ArrayList<>(); 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 (isGoing) { //只支持一天一次上下班
String acqLegWorkSignSql = "select operate_time, longitude, latitude,address from mobile_sign where operater = ? and operate_date = '" + kqDateA + "' order by operate_time asc "; if (lsWorkTime != null && lsWorkTime.size()==1 ) {
rs.executeQuery(acqLegWorkSignSql, id); 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";
}
//获取上班时间
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);
while ( rs.next()) { while ( rs.next()) {
String operateTime = Util.null2String(rs.getString("operate_time")); String operateTime = Util.null2String(rs.getString("operate_time"));
String longitude = Util.null2String(rs.getString("longitude")); String longitude = Util.null2String(rs.getString("longitude"));
String latitude = Util.null2String(rs.getString("latitude")); 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) ) { if ( StringUtils.isNotBlank(operateTime) && StringUtils.isNotBlank(longitude) && StringUtils.isNotBlank(latitude) ) {
Map<String, Object> temp = new HashMap<>(); Map<String, Object> temp = new HashMap<>();
temp.put("operateTime", operateTime); temp.put("operateTime", operateTime);
@ -2291,7 +2035,7 @@ public class KQFormatData extends BaseBean {
legWorkInfos.add(temp); legWorkInfos.add(temp);
} }
} }
if (legWorkInfos != null && legWorkInfos.size() > 1 ) { if (legWorkInfos != null && legWorkInfos.size() > 0 ) {
String tempSignIn = ""; String tempSignIn = "";
String tempSignInLatitude = ""; String tempSignInLatitude = "";
String tempSignInLongitude = ""; String tempSignInLongitude = "";
@ -2299,10 +2043,23 @@ public class KQFormatData extends BaseBean {
String tempSignOutLongitude = ""; String tempSignOutLongitude = "";
String tempSignOut = ""; String tempSignOut = "";
Map<String, Object> checkInfo = new HashMap<>(); 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);
} else {
for ( Map<String, Object> temp : legWorkInfos) { for ( Map<String, Object> temp : legWorkInfos) {
String operateTime = Util.null2String(temp.get("operateTime")); String operateTime = Util.null2String(temp.get("operateTime"));
String longitude = Util.null2String(temp.get("longitude")); String longitude = Util.null2String(temp.get("longitude"));
String latitude = Util.null2String(temp.get("latitude")); String latitude = Util.null2String(temp.get("latitude"));
if (operateTime.compareTo(workBeginTime) < 0) {//获取上班时间点之前最早的一笔卡
if (StringUtils.isBlank(tempSignIn)) { if (StringUtils.isBlank(tempSignIn)) {
tempSignIn = operateTime; tempSignIn = operateTime;
tempSignInLatitude = latitude; tempSignInLatitude = latitude;
@ -2314,7 +2071,9 @@ public class KQFormatData extends BaseBean {
tempSignInLongitude = longitude; tempSignInLongitude = longitude;
} }
} }
if (StringUtils.isBlank(tempSignOut)) { }
if ( operateTime.compareTo(workBeginTime) > 0) {//下班卡取最晚的一笔
if (StringUtils.isBlank(tempSignIn)) {
tempSignOut = operateTime; tempSignOut = operateTime;
tempSignOutLatitude = latitude; tempSignOutLatitude = latitude;
tempSignOutLongitude = longitude; tempSignOutLongitude = longitude;
@ -2326,15 +2085,17 @@ public class KQFormatData extends BaseBean {
} }
} }
} }
// } }
checkInfo.put("signDate", kqDateA);//签到签退日期 checkInfo.put("signDate", kqDate);//签到签退日期
checkInfo.put("signInTime", tempSignIn);//签到时间 checkInfo.put("signInTime", tempSignIn);//签到时间
checkInfo.put("signInLatitude", tempSignInLatitude);//签到纬度 checkInfo.put("signInLatitude", tempSignInLatitude);//签到纬度
checkInfo.put("signInLongitude", tempSignInLongitude);//签到经度 checkInfo.put("signInLongitude", tempSignInLongitude);//签到经度
checkInfo.put("signOutTime", tempSignOut);//签退时间 checkInfo.put("signOutTime", tempSignOut);//签退时间
checkInfo.put("signOutLatitude", tempSignOutLatitude);//签退纬度 checkInfo.put("signOutLatitude", tempSignOutLatitude);//签退纬度
checkInfo.put("signOutLongitude", tempSignOutLongitude);//签退经度 checkInfo.put("signOutLongitude", tempSignOutLongitude);//签退经度
lsCheckInfo.put(id + "|" + kqDateA, checkInfo); lsCheckInfo.put(userId + "|" + kqDate, checkInfo);
}
}
} }
} }
@ -2359,13 +2120,14 @@ public class KQFormatData extends BaseBean {
//根据外勤打卡数据计算餐补数据 //根据外勤打卡数据计算餐补数据
for (String key: lsCheckInfo.keySet()) { for (String key: lsCheckInfo.keySet()) {
// String[] split = key.split("\\|"); String[] split = key.split("\\|");
// String userId = split[0]; String userId = split[0];
// String kqDate = split[1]; String kqDate = split[1];
Map<String, Object> temp = lsCheckInfo.get(key); Map<String, Object> temp = lsCheckInfo.get(key);
String signInTime = Util.null2String(temp.get("signInTime")); String signInTime = Util.null2String(temp.get("signInTime"));
String signOutTime = Util.null2String(temp.get("signOutTime")); String signOutTime = Util.null2String(temp.get("signOutTime"));
if (StringUtils.isNotBlank(signInTime) && StringUtils.isNotBlank(signOutTime) ) { if (StringUtils.isNotBlank(signInTime) && StringUtils.isNotBlank(signOutTime) ) {
for (Map<String, String> me: MealMap) { for (Map<String, String> me: MealMap) {
@ -2382,8 +2144,7 @@ public class KQFormatData extends BaseBean {
if (StringUtils.isEmpty(value) || StringUtils.equals(value, "0")) { if (StringUtils.isEmpty(value) || StringUtils.equals(value, "0")) {
value = "1"; value = "1";
} else { } else {
int valueT = Integer.parseInt(value) + 1; value = String.valueOf(Integer.parseInt(value));
value = String.valueOf(valueT);
} }
} }
} }
@ -2411,6 +2172,10 @@ public class KQFormatData extends BaseBean {
nightShiftList.add(shift); 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(); KQWorkTime kqWorkTime = new KQWorkTime();
Map<String, Object> serialInfo = kqWorkTime.getSerialInfo(userId, kqDate, false); Map<String, Object> serialInfo = kqWorkTime.getSerialInfo(userId, kqDate, false);
@ -2419,15 +2184,8 @@ public class KQFormatData extends BaseBean {
if (serialid > 0) { if (serialid > 0) {
if ((!CollectionUtils.isEmpty(nightShiftList)) && nightShiftList.contains(String.valueOf(serialid))) { if ((!CollectionUtils.isEmpty(nightShiftList)) && nightShiftList.contains(String.valueOf(serialid))) {
value = "0"; 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) { } catch (Exception e) {
bb.writeLog("get ZeroBt error:" + e.getMessage()); bb.writeLog("get ZeroBt error:" + e.getMessage());

Loading…
Cancel
Save