Explorar o código

表单条件筛选,传入时间的时候考虑直接比较的情况

大数据与最优化研究所 hai 7 meses
pai
achega
ff5fa04f7b

+ 54 - 41
src/main/java/com/xjrsoft/module/form/service/impl/FormExecuteServiceImpl.java

@@ -1707,7 +1707,6 @@ public class FormExecuteServiceImpl implements IFormExecuteService {
             throw new MyException("主键不存在");
         }
 
-
         List<net.sf.jsqlparser.schema.Column> jsqlColumn = new ArrayList<>();
         for (String field : fieldsList) {
             jsqlColumn.add(new net.sf.jsqlparser.schema.Column(field));
@@ -1740,56 +1739,70 @@ public class FormExecuteServiceImpl implements IFormExecuteService {
                 String endTime = MapUtil.get(params, fieldName + GlobalConstant.END_TIME_SUFFIX, String.class);
 
                 //如果全都没有数据 则跳过
-                if (startTime == null && endTime == null) {
-                    continue;
-                }
-                Expression startRightExp = null;
-                Expression endRightExp = null;
-                Column queryColumn = columns.stream().filter(c -> StrUtil.equalsIgnoreCase(c.getName(), fieldName)).findFirst().get();
-                JdbcType type = queryColumn.getTypeEnum();
-                if (type == JdbcType.TIME) {
-                    if (StrUtil.isNotEmpty(startTime)) startRightExp = new StringValue(startTime);
-                    if (StrUtil.isNotEmpty(endTime)) endRightExp = new StringValue(endTime);
-                } else if (type == JdbcType.DATE || type == JdbcType.TIMESTAMP) {
-                    if (StrUtil.isNotEmpty(startTime))
-                        startRightExp = new TimestampValue().withValue(Timestamp.valueOf(LocalDateTimeUtil.parseDateByLength(startTime)));
-                    if (StrUtil.isNotEmpty(endTime))
-                        endRightExp = new TimestampValue().withValue(Timestamp.valueOf(LocalDateTimeUtil.parseDateByLength(endTime)));
-                } else if (StrUtil.equalsIgnoreCase(queryColumn.getTypeName(), OracleFieldsType.TIME.getType())) {
-                    // oracle时间字段处理
-                    if (StrUtil.isNotEmpty(startTime))
-                        startRightExp = new StringValue(StringPool.ZERO + StringPool.SPACE + startTime);
-                    if (StrUtil.isNotEmpty(endTime))
-                        endRightExp = new StringValue(StringPool.ZERO + StringPool.SPACE + endTime);
-                }
-                if (startTime != null) {
-                    GreaterThanEquals geq = new GreaterThanEquals(); // ">="
-                    geq.setLeftExpression(new net.sf.jsqlparser.schema.Column(fieldName));
-                    geq.setRightExpression(startRightExp == null ? new StringValue(startTime) : startRightExp);
+                if (StringUtils.isNotEmpty(startTime) || StringUtils.isNotEmpty(endTime)) {
+                    Expression startRightExp = null;
+                    Expression endRightExp = null;
+                    Column queryColumn = columns.stream().filter(c -> StrUtil.equalsIgnoreCase(c.getName(), fieldName)).findFirst().get();
+                    JdbcType type = queryColumn.getTypeEnum();
+                    if (type == JdbcType.TIME) {
+                        if (StrUtil.isNotEmpty(startTime)) startRightExp = new StringValue(startTime);
+                        if (StrUtil.isNotEmpty(endTime)) endRightExp = new StringValue(endTime);
+                    } else if (type == JdbcType.DATE || type == JdbcType.TIMESTAMP) {
+                        if (StrUtil.isNotEmpty(startTime))
+                            startRightExp = new TimestampValue().withValue(Timestamp.valueOf(LocalDateTimeUtil.parseDateByLength(startTime)));
+                        if (StrUtil.isNotEmpty(endTime))
+                            endRightExp = new TimestampValue().withValue(Timestamp.valueOf(LocalDateTimeUtil.parseDateByLength(endTime)));
+                    } else if (StrUtil.equalsIgnoreCase(queryColumn.getTypeName(), OracleFieldsType.TIME.getType())) {
+                        // oracle时间字段处理
+                        if (StrUtil.isNotEmpty(startTime))
+                            startRightExp = new StringValue(StringPool.ZERO + StringPool.SPACE + startTime);
+                        if (StrUtil.isNotEmpty(endTime))
+                            endRightExp = new StringValue(StringPool.ZERO + StringPool.SPACE + endTime);
+                    }
+                    if (startTime != null) {
+                        GreaterThanEquals geq = new GreaterThanEquals(); // ">="
+                        geq.setLeftExpression(new net.sf.jsqlparser.schema.Column(fieldName));
+                        geq.setRightExpression(startRightExp == null ? new StringValue(startTime) : startRightExp);
 
-                    //如果是第一个条件 直接赋值
-                    if (ObjectUtil.isNull(queryExpression)) {
-                        queryExpression = geq;
-                    } else {
-                        queryExpression = new AndExpression(queryExpression, geq);
+                        //如果是第一个条件 直接赋值
+                        if (ObjectUtil.isNull(queryExpression)) {
+                            queryExpression = geq;
+                        } else {
+                            queryExpression = new AndExpression(queryExpression, geq);
+                        }
                     }
-                }
 
-                if (endTime != null) {
-                    MinorThanEquals leq = new MinorThanEquals();// "<="
-                    leq.setLeftExpression(new net.sf.jsqlparser.schema.Column(fieldName));
-                    leq.setRightExpression(endRightExp == null ? new StringValue(endTime) : endRightExp);
+                    if (endTime != null) {
+                        MinorThanEquals leq = new MinorThanEquals();// "<="
+                        leq.setLeftExpression(new net.sf.jsqlparser.schema.Column(fieldName));
+                        leq.setRightExpression(endRightExp == null ? new StringValue(endTime) : endRightExp);
+
+                        //如果是第一个条件 直接赋值
+                        if (ObjectUtil.isNull(queryExpression)) {
+                            queryExpression = leq;
+                        } else {
+                            queryExpression = new AndExpression(queryExpression, leq);
+                        }
+                    }
+                }else{
+                    Object value = MapUtil.get(params, fieldName, Object.class);
+                    //如果没有数据 则跳过
+                    if (value == null || StrUtil.isEmpty(String.valueOf(value))) {
+                        continue;
+                    }
+
+                    EqualsTo eq = new EqualsTo();
+                    eq.setLeftExpression(new net.sf.jsqlparser.schema.Column(fieldName));
+                    eq.setRightExpression(new StringValue(String.valueOf(value)));
 
                     //如果是第一个条件 直接赋值
                     if (ObjectUtil.isNull(queryExpression)) {
-                        queryExpression = leq;
+                        queryExpression = eq;
                     } else {
-                        queryExpression = new AndExpression(queryExpression, leq);
+                        queryExpression = new AndExpression(queryExpression, eq);
                     }
                 }
-
             } else {
-
                 Object value = MapUtil.get(params, fieldName, Object.class);
                 //如果没有数据 则跳过
                 if (value == null || StrUtil.isEmpty(String.valueOf(value))) {