插单和工单查询

parent bc529e67
This diff is collapsed.
......@@ -132,6 +132,16 @@
<artifactId>lombok</artifactId>
</exclude>
</excludes>
<requiresUnpack>
<dependency>
<groupId>com.google.ortools</groupId>
<artifactId>ortools-java</artifactId>
</dependency>
<dependency>
<groupId>com.google.ortools</groupId>
<artifactId>ortools-linux-x86-64</artifactId>
</dependency>
</requiresUnpack>
</configuration>
</plugin>
......@@ -155,4 +165,4 @@
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
</project>
package com.aps.entity.common;
import java.util.List;
import java.util.stream.Collectors;
public class ConditionEntity {
private String fieldName;
......@@ -22,8 +25,16 @@ public class ConditionEntity {
String safe=fieldValue.replaceAll("(?i)(delete|drop|\\s|%|;|or|‘)","");
return safe;
}
public void setFieldValue(String fieldValue) {
this.fieldValue = fieldValue;
public void setFieldValue(Object fieldValue) {
if (fieldValue == null) {
this.fieldValue = null;
} else if (fieldValue instanceof List) {
this.fieldValue = ((List<?>) fieldValue).stream()
.map(String::valueOf)
.collect(Collectors.joining(","));
} else {
this.fieldValue = String.valueOf(fieldValue);
}
}
public String getConditionalType() {
......
......@@ -2192,6 +2192,13 @@ public class ChromosomeDataService {
// 特殊处理时间类型字段
if (actualValue instanceof LocalDateTime) {
LocalDateTime actualDateTime = (LocalDateTime) actualValue;
if (conditionType == ConditionEnum.Between) {
LocalDateTime[] range = parseDateTimeRange(fieldValue);
if (range != null) {
// Between用于时间范围筛选时需要精确到时分秒,不能按日期截断。
return !actualDateTime.isBefore(range[0]) && !actualDateTime.isAfter(range[1]);
}
}
// 尝试解析输入的时间字符串
LocalDateTime inputDateTime = parseDateTimeString(fieldValue);
......@@ -2244,6 +2251,11 @@ public class ChromosomeDataService {
return compareValues(actualValueStr, fieldValue) < 0;
case LessThanOrEqual:
return compareValues(actualValueStr, fieldValue) <= 0;
case Between:
String[] range = splitBetweenValue(fieldValue);
return range != null
&& compareValues(actualValueStr, range[0]) >= 0
&& compareValues(actualValueStr, range[1]) <= 0;
case In:
return Arrays.asList(fieldValue.split(",")).contains(actualValueStr);
case NotIn:
......@@ -2261,6 +2273,33 @@ public class ChromosomeDataService {
}
}
private String[] splitBetweenValue(String fieldValue) {
if (fieldValue == null || fieldValue.trim().isEmpty()) {
return null;
}
String[] values = fieldValue.split(",", 2);
if (values.length != 2) {
return null;
}
return new String[]{values[0].trim(), values[1].trim()};
}
private LocalDateTime[] parseDateTimeRange(String fieldValue) {
String[] values = splitBetweenValue(fieldValue);
if (values == null) {
return null;
}
LocalDateTime start = parseDateTimeString(values[0]);
LocalDateTime end = parseDateTimeString(values[1]);
if (start == null || end == null) {
return null;
}
if (start.isAfter(end)) {
return new LocalDateTime[]{end, start};
}
return new LocalDateTime[]{start, end};
}
/**
* 解析时间字符串为LocalDateTime(兼容Java 8)
* @param dateTimeStr 时间字符串
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment