From 8ea24dd5fb6e1b24d3a7ef62a0060ef516f8f759 Mon Sep 17 00:00:00 2001
From: xufenglei <xufenglei>
Date: Thu, 24 May 2018 08:58:16 +0800
Subject: [PATCH] 更新 监测点 数据

---
 src/main/java/com/moral/common/util/ExampleUtil.java |   38 ++++++++++++++++++++++++++++++++------
 1 files changed, 32 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/moral/common/util/ExampleUtil.java b/src/main/java/com/moral/common/util/ExampleUtil.java
index d50d02a..1852f44 100644
--- a/src/main/java/com/moral/common/util/ExampleUtil.java
+++ b/src/main/java/com/moral/common/util/ExampleUtil.java
@@ -1,5 +1,6 @@
 package com.moral.common.util;
 
+import com.moral.common.bean.PageBean;
 import lombok.extern.log4j.Log4j;
 import tk.mybatis.mapper.entity.Example;
 import java.beans.PropertyDescriptor;
@@ -18,15 +19,42 @@
     private final static String CRITERIA_SPLIT = "\\|\\|\\|";
     private final static String CONDITION_SPLIT = "\\|\\|";
     private static Map<String, Method> criteriaMethodMap = null;
+    private static void setOrderByClause(Example example,String orderByClause) throws UnsupportedEncodingException, NoSuchFieldException {
+           orderByClause = URLDecoder.decode(orderByClause,"UTF-8");
+           String[] orderBys = orderByClause.split(CRITERIA_SPLIT);
+           for(String orderBy : orderBys){
+               String[] items = orderBy.split(CONDITION_SPLIT);
+               if(items.length == 2){
+                   String property = items[0];
+                   String sort = items[1];
+                   if(isPropertyOfClass(example.getEntityClass(),property)){
 
-    public static Example generateExample(Class clzz, String params) {
-        Example example = new Example(clzz);
+                       if("asc".equals(sort)){
+                           example.orderBy(property).asc();
+                       }else{
+                           example.orderBy(property).desc();
+                       }
+                   }
+               }
+           }
+    }
+    public static Example generateExample(Class clzz, PageBean page) {
+        Example example = null;
         try {
+            String params = page.getQueryParams();
+            String orderByClause = page.getOrderByClause();
+            example = new Example(clzz);
+            if(!StringUtils.isNullOrEmpty(orderByClause)){
+                setOrderByClause(example,orderByClause);
+            }
+            if(StringUtils.isNullOrEmpty(params)){ return example;}
             params = URLDecoder.decode(params, "UTF-8");
             if (!StringUtils.isNullOrEmpty(params) && params.startsWith("or|")) {
                 String[] criteria = params.trim().split(OR_SPLIT);
-                Example.Criteria criteriaOfExample = example.or();
                 for (String criterion : criteria) {
+                    // criterion���null���""������
+                    if(StringUtils.isNullOrEmpty(criterion)) { continue;};
+                    Example.Criteria criteriaOfExample = example.or();
                     if (!StringUtils.isNullOrEmpty(criterion)) {
                         String[] conditions = criterion.trim().split(CRITERIA_SPLIT);
                         for (String condition : conditions) {
@@ -41,10 +69,8 @@
                                     if (method != null && isPropertyOfClass(clzz, propertyName)) {
                                         List values = new ArrayList<Object>();
                                         if (conditionItems.length > 2) {
-                                            //���������������
-                                            Class<?> valutType = new PropertyDescriptor(propertyName, clzz).getPropertyType();
                                             for (int index = 2; index < conditionItems.length; index++) {
-                                                values.add(StringUtils.stringToObject4Type(valutType, conditionItems[index]));
+                                                values.add(conditionItems[index]);
                                             }
                                         }
                                         invokeMethod(criteriaOfExample,method,propertyName,values);

--
Gitblit v1.8.0