插单和工单查询

parent bc529e67
This diff is collapsed.
...@@ -132,6 +132,16 @@ ...@@ -132,6 +132,16 @@
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
</exclude> </exclude>
</excludes> </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> </configuration>
</plugin> </plugin>
......
package com.aps.entity.common; package com.aps.entity.common;
import java.util.List;
import java.util.stream.Collectors;
public class ConditionEntity { public class ConditionEntity {
private String fieldName; private String fieldName;
...@@ -22,8 +25,16 @@ public class ConditionEntity { ...@@ -22,8 +25,16 @@ public class ConditionEntity {
String safe=fieldValue.replaceAll("(?i)(delete|drop|\\s|%|;|or|‘)",""); String safe=fieldValue.replaceAll("(?i)(delete|drop|\\s|%|;|or|‘)","");
return safe; return safe;
} }
public void setFieldValue(String fieldValue) { public void setFieldValue(Object fieldValue) {
this.fieldValue = 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() { public String getConditionalType() {
......
...@@ -2192,6 +2192,13 @@ public class ChromosomeDataService { ...@@ -2192,6 +2192,13 @@ public class ChromosomeDataService {
// 特殊处理时间类型字段 // 特殊处理时间类型字段
if (actualValue instanceof LocalDateTime) { if (actualValue instanceof LocalDateTime) {
LocalDateTime actualDateTime = (LocalDateTime) actualValue; 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); LocalDateTime inputDateTime = parseDateTimeString(fieldValue);
...@@ -2244,6 +2251,11 @@ public class ChromosomeDataService { ...@@ -2244,6 +2251,11 @@ public class ChromosomeDataService {
return compareValues(actualValueStr, fieldValue) < 0; return compareValues(actualValueStr, fieldValue) < 0;
case LessThanOrEqual: case LessThanOrEqual:
return compareValues(actualValueStr, fieldValue) <= 0; 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: case In:
return Arrays.asList(fieldValue.split(",")).contains(actualValueStr); return Arrays.asList(fieldValue.split(",")).contains(actualValueStr);
case NotIn: case NotIn:
...@@ -2261,6 +2273,33 @@ public class ChromosomeDataService { ...@@ -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) * 解析时间字符串为LocalDateTime(兼容Java 8)
* @param dateTimeStr 时间字符串 * @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