出差餐补增加取卡范围

dev-zm
zhangming 11 months ago
parent 4754e06962
commit 2fc70db7c1

@ -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<String, Object>> lsCheckInfo = new HashMap<>();
List<Map<String, Object>> legWorkInfos = new ArrayList<>();
// 解析日期字符串为LocalDate对象
LocalDate date = LocalDate.parse(kqDateA, DateTimeFormatter.ISO_DATE);
// 获取后一天的日期
LocalDate nextDay = date.plusDays(1);
// 将后一天的日期转换为字符串
String kqDateB = nextDay.format(DateTimeFormatter.ISO_DATE);
String dateParamA = kqDateA + " 05:00:00";
String dateParamB = kqDateB + " 04:59:59";
if (isGoing) {
String acqLegWorkSignSql = "select operate_time, longitude, latitude,address from mobile_sign where operater = ? and operate_date = '" + kqDateA + "' order by operate_time asc ";
// String acqLegWorkSignSql = "select operate_time, longitude, latitude,address 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<String, Object> temp = lsCheckInfo.get(key);
String signInTime = Util.null2String(temp.get("signInTime"));
String signOutTime = Util.null2String(temp.get("signOutTime"));
String signInDateTime = Util.null2String(temp.get("signInDateTime"));
String signOutDateTime = Util.null2String(temp.get("signOutDateTime"));
String signDate = Util.null2String(temp.get("signDate"));
if (StringUtils.isNotBlank(signInTime) && StringUtils.isNotBlank(signOutTime) ) {
for (Map<String, String> me: MealMap) {
String startTime = me.get("startTime");
String startDateTime = "";
String endTime = me.get("endTime");
String endDateTime = "";
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) {
startTime = startTime + ":00";
endTime = endTime + ":00";
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 {

@ -2261,14 +2261,28 @@ public class KQFormatData extends BaseBean {
Map< String, Map<String, Object>> lsCheckInfo = new HashMap<>();
List<Map<String, Object>> legWorkInfos = new ArrayList<>();
// 解析日期字符串为LocalDate对象
LocalDate date = LocalDate.parse(kqDateA, DateTimeFormatter.ISO_DATE);
// 获取后一天的日期
LocalDate nextDay = date.plusDays(1);
// 将后一天的日期转换为字符串
String kqDateB = nextDay.format(DateTimeFormatter.ISO_DATE);
String dateParamA = kqDateA + " 05:00:00";
String dateParamB = kqDateB + " 04:59:59";
if (isGoing) {
String acqLegWorkSignSql = "select operate_time, longitude, latitude,address from mobile_sign where operater = ? and operate_date = '" + kqDateA + "' order by operate_time asc ";
// String acqLegWorkSignSql = "select operate_time, longitude, latitude,address 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<String, Object> temp = lsCheckInfo.get(key);
String signInTime = Util.null2String(temp.get("signInTime"));
String signOutTime = Util.null2String(temp.get("signOutTime"));
String signInDateTime = Util.null2String(temp.get("signInDateTime"));
String signOutDateTime = Util.null2String(temp.get("signOutDateTime"));
String signDate = Util.null2String(temp.get("signDate"));
if (StringUtils.isNotBlank(signInTime) && StringUtils.isNotBlank(signOutTime) ) {
for (Map<String, String> me: MealMap) {
String startTime = me.get("startTime");
String startDateTime = "";
String endTime = me.get("endTime");
String endDateTime = "";
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) {
startTime = startTime + ":00";
endTime = endTime + ":00";
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 {

Loading…
Cancel
Save