diff --git a/src/com/engine/hostar/thread/HandleCBDataThread.java b/src/com/engine/hostar/thread/HandleCBDataThread.java index aed9677..19e7a6e 100644 --- a/src/com/engine/hostar/thread/HandleCBDataThread.java +++ b/src/com/engine/hostar/thread/HandleCBDataThread.java @@ -25,6 +25,8 @@ import weaver.general.Util; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; @@ -1045,14 +1047,27 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ Map< String, Map> lsCheckInfo = new HashMap<>(); List> legWorkInfos = new ArrayList<>(); + // 解析日期字符串为LocalDate对象 + LocalDate date = LocalDate.parse(kqDateA, DateTimeFormatter.ISO_DATE); + // 获取后一天的日期 + LocalDate nextDay = date.plusDays(1); + // 将后一天的日期转换为字符串 + String kqDateB = nextDay.format(DateTimeFormatter.ISO_DATE); + String dateParamA = kqDateA + " 05:00:00"; + String dateParamB = kqDateB + " 04:59:59"; + if (isGoing) { - String acqLegWorkSignSql = "select operate_time, longitude, latitude,address from mobile_sign where operater = ? and operate_date = '" + kqDateA + "' order by operate_time asc "; +// String acqLegWorkSignSql = "select operate_time, longitude, latitude,address from mobile_sign where operater = ? and operate_date = '" + kqDateA + "' order by operate_time asc "; + String acqLegWorkSignSql = "select operate_time, longitude, latitude,address,operate_date,CONCAT(operate_date, ' ', operate_time) as dateTimeNew from mobile_sign " + + "where operater = ? and CAST(operate_date + ' ' + operate_time AS datetime) >= CAST('" + dateParamA+ "' AS datetime) " + + "and CAST(operate_date + ' ' + operate_time AS datetime) <= CAST('" + dateParamB + "' AS datetime) "; rs.executeQuery(acqLegWorkSignSql, id); while ( rs.next()) { String operateTime = Util.null2String(rs.getString("operate_time")); String longitude = Util.null2String(rs.getString("longitude")); String latitude = Util.null2String(rs.getString("latitude")); String address = Util.null2String(rs.getString("address")); + String dateTimeNew = Util.null2String(rs.getString("dateTimeNew")); if ("hostar".equalsIgnoreCase(address) || "鸿仕达".equals(address) || "增善路".equals(address) || "星圃路".equals(address) || "智慧新城".equals(address)) { @@ -1072,11 +1087,14 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ temp.put("operateTime", operateTime); temp.put("longitude", longitude); temp.put("latitude", latitude); + temp.put("dateTimeNew", dateTimeNew); legWorkInfos.add(temp); } } if (legWorkInfos != null && legWorkInfos.size() > 1 ) { String tempSignIn = ""; + String tempSignInDateTime = ""; + String tempSignOutDateTime = ""; String tempSignInLatitude = ""; String tempSignInLongitude = ""; String tempSignOutLatitude = ""; @@ -1087,24 +1105,29 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ String operateTime = Util.null2String(temp.get("operateTime")); String longitude = Util.null2String(temp.get("longitude")); String latitude = Util.null2String(temp.get("latitude")); + String dateTimeNew = Util.null2String(temp.get("dateTimeNew")); if (StringUtils.isBlank(tempSignIn)) { tempSignIn = operateTime; tempSignInLatitude = latitude; tempSignInLongitude = longitude; + tempSignInDateTime = dateTimeNew; } else { - if ( operateTime.compareTo(tempSignIn) < 0 ) { + if ( dateTimeNew.compareTo(tempSignInDateTime) < 0 ) { tempSignIn = operateTime; tempSignInLatitude = latitude; tempSignInLongitude = longitude; + tempSignInDateTime = dateTimeNew; } } if (StringUtils.isBlank(tempSignOut)) { tempSignOut = operateTime; + tempSignOutDateTime = dateTimeNew; tempSignOutLatitude = latitude; tempSignOutLongitude = longitude; } else { - if ( operateTime.compareTo(tempSignOut) > 0 ) { + if ( dateTimeNew.compareTo(tempSignOutDateTime) > 0 ) { tempSignOut = operateTime; + tempSignOutDateTime = dateTimeNew; tempSignOutLatitude = latitude; tempSignOutLongitude = longitude; } @@ -1113,9 +1136,11 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ // } checkInfo.put("signDate", kqDateA);//签到签退日期 checkInfo.put("signInTime", tempSignIn);//签到时间 + checkInfo.put("signInDateTime", tempSignInDateTime);//签到日期时间 checkInfo.put("signInLatitude", tempSignInLatitude);//签到纬度 checkInfo.put("signInLongitude", tempSignInLongitude);//签到经度 checkInfo.put("signOutTime", tempSignOut);//签退时间 + checkInfo.put("signOutDateTime", tempSignOutDateTime);//签退日期时间 checkInfo.put("signOutLatitude", tempSignOutLatitude);//签退纬度 checkInfo.put("signOutLongitude", tempSignOutLongitude);//签退经度 lsCheckInfo.put(id + "|" + kqDateA, checkInfo); @@ -1149,20 +1174,27 @@ public class HandleCBDataThread extends BaseBean implements Runnable{ Map temp = lsCheckInfo.get(key); String signInTime = Util.null2String(temp.get("signInTime")); String signOutTime = Util.null2String(temp.get("signOutTime")); + String signInDateTime = Util.null2String(temp.get("signInDateTime")); + String signOutDateTime = Util.null2String(temp.get("signOutDateTime")); + String signDate = Util.null2String(temp.get("signDate")); if (StringUtils.isNotBlank(signInTime) && StringUtils.isNotBlank(signOutTime) ) { for (Map me: MealMap) { String startTime = me.get("startTime"); + String startDateTime = ""; String endTime = me.get("endTime"); + String endDateTime = ""; if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { startTime = startTime + ":00"; endTime = endTime + ":00"; + startDateTime = signDate + " " + startTime; + endDateTime = signDate + " " + endTime; } - if ( (signInTime.compareTo(startTime) <= 0) && (signOutTime.compareTo(endTime) >= 0) ) { + if ( (signInDateTime.compareTo(startDateTime) <= 0) && (signOutDateTime.compareTo(endDateTime) >= 0) ) { if (StringUtils.isEmpty(value) || StringUtils.equals(value, "0")) { value = "1"; } else { diff --git a/src/com/engine/kq/biz/KQFormatData.java b/src/com/engine/kq/biz/KQFormatData.java index c7a1101..8e30474 100644 --- a/src/com/engine/kq/biz/KQFormatData.java +++ b/src/com/engine/kq/biz/KQFormatData.java @@ -2261,14 +2261,28 @@ public class KQFormatData extends BaseBean { Map< String, Map> lsCheckInfo = new HashMap<>(); List> legWorkInfos = new ArrayList<>(); + // 解析日期字符串为LocalDate对象 + LocalDate date = LocalDate.parse(kqDateA, DateTimeFormatter.ISO_DATE); + // 获取后一天的日期 + LocalDate nextDay = date.plusDays(1); + // 将后一天的日期转换为字符串 + String kqDateB = nextDay.format(DateTimeFormatter.ISO_DATE); + String dateParamA = kqDateA + " 05:00:00"; + String dateParamB = kqDateB + " 04:59:59"; + if (isGoing) { - String acqLegWorkSignSql = "select operate_time, longitude, latitude,address from mobile_sign where operater = ? and operate_date = '" + kqDateA + "' order by operate_time asc "; +// String acqLegWorkSignSql = "select operate_time, longitude, latitude,address from mobile_sign where operater = ? " + +// "and operate_date = '" + kqDateA + "' order by operate_time asc "; + String acqLegWorkSignSql = "select operate_time, longitude, latitude,address,operate_date,CONCAT(operate_date, ' ', operate_time) as dateTimeNew from mobile_sign " + + "where operater = ? and CAST(operate_date + ' ' + operate_time AS datetime) >= CAST('" + dateParamA+ "' AS datetime) " + + "and CAST(operate_date + ' ' + operate_time AS datetime) <= CAST('" + dateParamB + "' AS datetime) "; rs.executeQuery(acqLegWorkSignSql, id); while ( rs.next()) { String operateTime = Util.null2String(rs.getString("operate_time")); String longitude = Util.null2String(rs.getString("longitude")); String latitude = Util.null2String(rs.getString("latitude")); String address = Util.null2String(rs.getString("address")); + String dateTimeNew = Util.null2String(rs.getString("dateTimeNew")); if ("hostar".equalsIgnoreCase(address) || "鸿仕达".equals(address) || "增善路".equals(address) || "星圃路".equals(address) || "智慧新城".equals(address)) { @@ -2288,11 +2302,14 @@ public class KQFormatData extends BaseBean { temp.put("operateTime", operateTime); temp.put("longitude", longitude); temp.put("latitude", latitude); + temp.put("dateTimeNew", dateTimeNew); legWorkInfos.add(temp); } } if (legWorkInfos != null && legWorkInfos.size() > 1 ) { String tempSignIn = ""; + String tempSignInDateTime = ""; + String tempSignOutDateTime = ""; String tempSignInLatitude = ""; String tempSignInLongitude = ""; String tempSignOutLatitude = ""; @@ -2303,24 +2320,29 @@ public class KQFormatData extends BaseBean { String operateTime = Util.null2String(temp.get("operateTime")); String longitude = Util.null2String(temp.get("longitude")); String latitude = Util.null2String(temp.get("latitude")); + String dateTimeNew = Util.null2String(temp.get("dateTimeNew")); if (StringUtils.isBlank(tempSignIn)) { tempSignIn = operateTime; tempSignInLatitude = latitude; tempSignInLongitude = longitude; + tempSignInDateTime = dateTimeNew; } else { - if ( operateTime.compareTo(tempSignIn) < 0 ) { + if ( dateTimeNew.compareTo(tempSignInDateTime) < 0 ) { tempSignIn = operateTime; tempSignInLatitude = latitude; tempSignInLongitude = longitude; + tempSignInDateTime = dateTimeNew; } } if (StringUtils.isBlank(tempSignOut)) { tempSignOut = operateTime; + tempSignOutDateTime = dateTimeNew; tempSignOutLatitude = latitude; tempSignOutLongitude = longitude; } else { - if ( operateTime.compareTo(tempSignOut) > 0 ) { + if ( dateTimeNew.compareTo(tempSignOutDateTime) > 0 ) { tempSignOut = operateTime; + tempSignOutDateTime = dateTimeNew; tempSignOutLatitude = latitude; tempSignOutLongitude = longitude; } @@ -2329,9 +2351,11 @@ public class KQFormatData extends BaseBean { // } checkInfo.put("signDate", kqDateA);//签到签退日期 checkInfo.put("signInTime", tempSignIn);//签到时间 + checkInfo.put("signInDateTime", tempSignInDateTime);//签到日期时间 checkInfo.put("signInLatitude", tempSignInLatitude);//签到纬度 checkInfo.put("signInLongitude", tempSignInLongitude);//签到经度 checkInfo.put("signOutTime", tempSignOut);//签退时间 + checkInfo.put("signOutDateTime", tempSignOutDateTime);//签退日期时间 checkInfo.put("signOutLatitude", tempSignOutLatitude);//签退纬度 checkInfo.put("signOutLongitude", tempSignOutLongitude);//签退经度 lsCheckInfo.put(id + "|" + kqDateA, checkInfo); @@ -2365,20 +2389,27 @@ public class KQFormatData extends BaseBean { Map temp = lsCheckInfo.get(key); String signInTime = Util.null2String(temp.get("signInTime")); String signOutTime = Util.null2String(temp.get("signOutTime")); + String signInDateTime = Util.null2String(temp.get("signInDateTime")); + String signOutDateTime = Util.null2String(temp.get("signOutDateTime")); + String signDate = Util.null2String(temp.get("signDate")); if (StringUtils.isNotBlank(signInTime) && StringUtils.isNotBlank(signOutTime) ) { for (Map me: MealMap) { String startTime = me.get("startTime"); + String startDateTime = ""; String endTime = me.get("endTime"); + String endDateTime = ""; if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { startTime = startTime + ":00"; endTime = endTime + ":00"; + startDateTime = signDate + " " + startTime; + endDateTime = signDate + " " + endTime; } - if ( (signInTime.compareTo(startTime) <= 0) && (signOutTime.compareTo(endTime) >= 0) ) { + if ( (signInDateTime.compareTo(startDateTime) <= 0) && (signOutDateTime.compareTo(endDateTime) >= 0) ) { if (StringUtils.isEmpty(value) || StringUtils.equals(value, "0")) { value = "1"; } else {