From 153b891aea3fab7528d497e2ededf294fa016c3a Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Sun, 24 Dec 2017 21:51:38 +0800
Subject: [PATCH] Merge branch 'master' of ssh://blit.7drlb.com:29418/screen_api_v2

---
 src/main/java/com/moral/service/DeviceVersionService.java          |    8 
 src/main/java/com/moral/service/impl/DeviceVersionServiceImpl.java |   10 +
 src/main/java/com/moral/controller/MobileController.java           |    4 
 src/main/java/com/moral/common/util/MyBatisBaseMapUtil.java        |   31 +++
 src/main/java/com/moral/common/util/StringUtils.java               |   85 +++++++++
 src/main/java/com/moral/entity/DeviceVersion.java                  |    1 
 src/main/java/com/moral/common/util/ExampleUtil.java               |  115 ++++++++++++
 src/main/java/com/moral/entity/DeviceVersion.java.1                |   55 ++++++
 src/main/java/com/moral/controller/DeviceVersionController.java    |   18 +
 src/main/java/com/moral/entity/DeviceVersion.java.3                |   55 ++++++
 src/main/java/com/moral/common/bean/PageBean.java                  |    5 
 src/main/java/com/moral/entity/DeviceVersion.java.2                |   55 ++++++
 src/main/java/com/moral/entity/DeviceVersion.java.4                |   55 ++++++
 13 files changed, 489 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/moral/common/bean/PageBean.java b/src/main/java/com/moral/common/bean/PageBean.java
index 13fa623..60900df 100644
--- a/src/main/java/com/moral/common/bean/PageBean.java
+++ b/src/main/java/com/moral/common/bean/PageBean.java
@@ -1,6 +1,7 @@
 package com.moral.common.bean;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.List;
 
 import com.github.pagehelper.Page;
@@ -23,13 +24,13 @@
     private Integer pageIndex;    // ���������
     private Integer pageSize;    // ���������������
     private Integer pages;        // ���������
+    private String queryParams;
     private Integer size;        // ������������������ <= pageSize������������������ArrayList���size������
     
     /**
      * ������Page���������������������������Page������������JSON���������������������������������������List������������
      * ������������������������
      * @param list          page������
-     * @param navigatePages ������������
      */
     public PageBean(List<T> list) {
     	super();
@@ -39,7 +40,7 @@
             this.pageSize = page.getPageSize();
             this.total = page.getTotal();
             this.pages = page.getPages();
-            this.data = page;
+            this.data= new ArrayList<>(list);
             this.size = page.size();
         }
     }
diff --git a/src/main/java/com/moral/common/util/ExampleUtil.java b/src/main/java/com/moral/common/util/ExampleUtil.java
new file mode 100644
index 0000000..d50d02a
--- /dev/null
+++ b/src/main/java/com/moral/common/util/ExampleUtil.java
@@ -0,0 +1,115 @@
+package com.moral.common.util;
+
+import lombok.extern.log4j.Log4j;
+import tk.mybatis.mapper.entity.Example;
+import java.beans.PropertyDescriptor;
+import java.io.UnsupportedEncodingException;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Log4j
+public class ExampleUtil {
+    private final static String OR_SPLIT = "or\\|";
+    private final static String CRITERIA_SPLIT = "\\|\\|\\|";
+    private final static String CONDITION_SPLIT = "\\|\\|";
+    private static Map<String, Method> criteriaMethodMap = null;
+
+    public static Example generateExample(Class clzz, String params) {
+        Example example = new Example(clzz);
+        try {
+            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) {
+                    if (!StringUtils.isNullOrEmpty(criterion)) {
+                        String[] conditions = criterion.trim().split(CRITERIA_SPLIT);
+                        for (String condition : conditions) {
+                            if (!StringUtils.isNullOrEmpty(condition)) {
+                                String[] conditionItems = condition.split(CONDITION_SPLIT);
+                                if (conditionItems != null && conditionItems.length > 1) {
+                                    //���������
+                                    String methodName = conditionItems[0];
+                                    //���������
+                                    String propertyName = conditionItems[1];
+                                    Method method = getMethod(methodName);
+                                    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]));
+                                            }
+                                        }
+                                        invokeMethod(criteriaOfExample,method,propertyName,values);
+                                    }
+
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        } catch (Exception ex) {
+            log.error(ex.getMessage());
+            ex.printStackTrace();
+        }
+        return example;
+    }
+
+    private static void invokeMethod(Object obj, Method method,String propertyName,List values) throws InvocationTargetException, IllegalAccessException {
+        int len = values.size();
+        switch (len) {
+            case 0:
+                if(method.getParameterCount()==1) {
+                    method.invoke(obj, propertyName);
+                }
+                break;
+            case 1:
+
+                if(method.getParameterCount()==2){
+                    method.invoke(obj,propertyName,values.get(0));
+                }
+                break;
+            //between ������
+            case 2:
+                if(method.getParameterCount()==3){
+                    method.invoke(obj,propertyName,values.toArray());
+                }
+                break;
+            //in ������
+            default:
+                if(method.getParameterCount()==2){
+                method.invoke(obj,propertyName,values);
+                }
+                break;
+        }
+    }
+
+    ;
+
+    private static boolean isPropertyOfClass(Class clzz, String propertyName) throws NoSuchFieldException {
+        return clzz.getDeclaredField(propertyName) != null;
+    }
+
+    private static Method getMethod(String methodName) {
+        if (criteriaMethodMap == null) {
+            criteriaMethodMap = new HashMap<>();
+            Method[] methods = Example.Criteria.class.getMethods();
+            for (Method m : methods) {
+                Method method = criteriaMethodMap.get(m.getName());
+                //���������������������������������
+                if (method==null||m.getParameterTypes().length>method.getParameterTypes().length){
+                    criteriaMethodMap.put(m.getName(),m);
+                }
+            }
+        }
+        return criteriaMethodMap.get(methodName);
+    }
+}
diff --git a/src/main/java/com/moral/common/util/MyBatisBaseMapUtil.java b/src/main/java/com/moral/common/util/MyBatisBaseMapUtil.java
new file mode 100644
index 0000000..c306d46
--- /dev/null
+++ b/src/main/java/com/moral/common/util/MyBatisBaseMapUtil.java
@@ -0,0 +1,31 @@
+package com.moral.common.util;
+
+import com.github.pagehelper.PageHelper;
+import com.moral.common.bean.PageBean;
+import com.moral.common.mapper.BaseMapper;
+import com.moral.entity.Account;
+import lombok.extern.log4j.Log4j;
+import tk.mybatis.mapper.entity.Example;
+import tk.mybatis.mapper.mapperhelper.MapperHelper;
+import tk.mybatis.mapper.mapperhelper.MapperTemplate;
+
+import java.io.UnsupportedEncodingException;
+import java.lang.reflect.Type;
+import java.util.List;
+
+@Log4j
+public class MyBatisBaseMapUtil {
+     public static PageBean queryPage(BaseMapper baseMapper, PageBean pageBean,Class clazz){
+          List page = null;
+          try {
+               Example example = ExampleUtil.generateExample(clazz,pageBean.getQueryParams());
+               PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize());
+               page = baseMapper.selectByExample(example);
+
+          }catch (Exception ex){
+               log.error(ex.getMessage());
+               ex.printStackTrace();
+          }
+          return  new PageBean(page);
+     }
+}
diff --git a/src/main/java/com/moral/common/util/StringUtils.java b/src/main/java/com/moral/common/util/StringUtils.java
new file mode 100644
index 0000000..4b2791b
--- /dev/null
+++ b/src/main/java/com/moral/common/util/StringUtils.java
@@ -0,0 +1,85 @@
+package com.moral.common.util;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class StringUtils {
+	public static final char UNDERLINE = '_';
+
+    /**
+     * ������������������������������������������������������
+     * 
+     * @param param
+     * @return
+     */
+    public static String camelToUnderline(String param) {
+        if (param == null || "".equals(param.trim())) {
+            return "";
+        }
+        int len = param.length();
+        StringBuilder sb = new StringBuilder(len);
+        for (int i = 0; i < len; i++) {
+            char c = param.charAt(i);
+            if (Character.isUpperCase(c)) {
+                sb.append(UNDERLINE);
+                sb.append(Character.toLowerCase(c));
+            } else {
+                sb.append(c);
+            }
+        }
+        return sb.toString();
+    }
+
+    
+    /**
+     * //������������������
+     * 
+     * @param s
+     * @return
+     */
+    public static String toUpperCaseFirstOne(String s){
+        StringBuilder sb = new StringBuilder(s);
+        sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
+        return sb.toString();
+    }
+	public static boolean isNullOrEmpty(String toTest) {
+		return toTest == null || toTest.length() == 0;
+	}
+	public static Object stringToObject4Type(Class<?> type,String value) throws Exception{
+		Object result = value;
+			
+		if (type == double.class || type == Double.class) {
+			result = Double.parseDouble(value);
+		} else if (type == float.class || type == Float.class) {
+			result = Float.parseFloat(value);
+		} else if (type == long.class || type == Long.class) {
+			result = Long.parseLong(value);
+		} else if (type == int.class || type == Integer.class) {
+			result = Integer.parseInt(value);
+		} else if (type == short.class || type == Short.class) {
+			result = Short.parseShort(value);
+		} else if (type == boolean.class || type == Boolean.class) {
+			result = Boolean.parseBoolean(value);
+		} else if (type == Date.class) {
+			value = value.replace("T", " ");
+			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+			try {
+				result = df.parse(value);
+			} catch (Exception e) {
+				df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+				try {
+					result = df.parse(value);
+				} catch (ParseException e1) {
+					df = new SimpleDateFormat("yyyy-MM-dd");
+					try {
+						result = df.parse(value);
+					} catch (ParseException e2) {
+					}
+				}
+			}
+		}
+		return result;
+	}
+
+}
diff --git a/src/main/java/com/moral/controller/DeviceVersionController.java b/src/main/java/com/moral/controller/DeviceVersionController.java
index 14bf960..e9c750b 100644
--- a/src/main/java/com/moral/controller/DeviceVersionController.java
+++ b/src/main/java/com/moral/controller/DeviceVersionController.java
@@ -1,12 +1,24 @@
 package com.moral.controller;
 
 
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.moral.common.bean.PageBean;
+import com.moral.common.bean.PageResult;
+import com.moral.entity.DeviceVersion;
+import com.moral.service.DeviceVersionService;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.io.UnsupportedEncodingException;
 
 @RestController
 @RequestMapping("device-version")
 @CrossOrigin(origins = "*", maxAge = 3600)
 public class DeviceVersionController {
+    @Resource
+    private DeviceVersionService deviceVersionService;
+
+    @GetMapping("page-list")
+    public PageBean<DeviceVersion> pageList(PageBean pageBean) throws NoSuchMethodException, UnsupportedEncodingException {
+        return deviceVersionService.queryByPageBean(pageBean);
+    }
 }
diff --git a/src/main/java/com/moral/controller/MobileController.java b/src/main/java/com/moral/controller/MobileController.java
index ff56619..1f4e182 100644
--- a/src/main/java/com/moral/controller/MobileController.java
+++ b/src/main/java/com/moral/controller/MobileController.java
@@ -117,7 +117,7 @@
 	/**
 	 * Gets the monitor points by area name.
 	 *
-	 * @param areaName the area name
+	 * @param request the area name
 	 * @return the monitor points by area name
 	 */
 	@GetMapping("getMpointsByAreaName")
@@ -130,7 +130,7 @@
 	/**
 	 * Gets the organizations by area name.
 	 *
-	 * @param areaName the area name
+	 * @param request the area name
 	 * @return the organizations by area name
 	 */
 	@GetMapping("getOrgsByAreaName")
diff --git a/src/main/java/com/moral/entity/DeviceVersion.java b/src/main/java/com/moral/entity/DeviceVersion.java
index f11b731..8485a13 100644
--- a/src/main/java/com/moral/entity/DeviceVersion.java
+++ b/src/main/java/com/moral/entity/DeviceVersion.java
@@ -5,7 +5,6 @@
 import javax.persistence.Id;
 import java.util.Date;
 
-
 @Data
 public class DeviceVersion {
     @Id
diff --git a/src/main/java/com/moral/entity/DeviceVersion.java.1 b/src/main/java/com/moral/entity/DeviceVersion.java.1
new file mode 100644
index 0000000..d8633f0
--- /dev/null
+++ b/src/main/java/com/moral/entity/DeviceVersion.java.1
@@ -0,0 +1,55 @@
+package com.moral.entity;
+
+import java.util.Date;
+
+public class DeviceVersion {
+    private Integer id;
+
+    private String name;
+
+    private Integer version;
+
+    private Date createTime;
+
+    private String description;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name == null ? null : name.trim();
+    }
+
+    public Integer getVersion() {
+        return version;
+    }
+
+    public void setVersion(Integer version) {
+        this.version = version;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description == null ? null : description.trim();
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/moral/entity/DeviceVersion.java.2 b/src/main/java/com/moral/entity/DeviceVersion.java.2
new file mode 100644
index 0000000..d8633f0
--- /dev/null
+++ b/src/main/java/com/moral/entity/DeviceVersion.java.2
@@ -0,0 +1,55 @@
+package com.moral.entity;
+
+import java.util.Date;
+
+public class DeviceVersion {
+    private Integer id;
+
+    private String name;
+
+    private Integer version;
+
+    private Date createTime;
+
+    private String description;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name == null ? null : name.trim();
+    }
+
+    public Integer getVersion() {
+        return version;
+    }
+
+    public void setVersion(Integer version) {
+        this.version = version;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description == null ? null : description.trim();
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/moral/entity/DeviceVersion.java.3 b/src/main/java/com/moral/entity/DeviceVersion.java.3
new file mode 100644
index 0000000..d8633f0
--- /dev/null
+++ b/src/main/java/com/moral/entity/DeviceVersion.java.3
@@ -0,0 +1,55 @@
+package com.moral.entity;
+
+import java.util.Date;
+
+public class DeviceVersion {
+    private Integer id;
+
+    private String name;
+
+    private Integer version;
+
+    private Date createTime;
+
+    private String description;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name == null ? null : name.trim();
+    }
+
+    public Integer getVersion() {
+        return version;
+    }
+
+    public void setVersion(Integer version) {
+        this.version = version;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description == null ? null : description.trim();
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/moral/entity/DeviceVersion.java.4 b/src/main/java/com/moral/entity/DeviceVersion.java.4
new file mode 100644
index 0000000..d8633f0
--- /dev/null
+++ b/src/main/java/com/moral/entity/DeviceVersion.java.4
@@ -0,0 +1,55 @@
+package com.moral.entity;
+
+import java.util.Date;
+
+public class DeviceVersion {
+    private Integer id;
+
+    private String name;
+
+    private Integer version;
+
+    private Date createTime;
+
+    private String description;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name == null ? null : name.trim();
+    }
+
+    public Integer getVersion() {
+        return version;
+    }
+
+    public void setVersion(Integer version) {
+        this.version = version;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description == null ? null : description.trim();
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/moral/service/DeviceVersionService.java b/src/main/java/com/moral/service/DeviceVersionService.java
index d8d4209..7193821 100644
--- a/src/main/java/com/moral/service/DeviceVersionService.java
+++ b/src/main/java/com/moral/service/DeviceVersionService.java
@@ -1,4 +1,12 @@
 package com.moral.service;
 
+import com.moral.common.bean.PageBean;
+import com.moral.entity.DeviceVersion;
+
+import java.io.UnsupportedEncodingException;
+
 public interface DeviceVersionService {
+
+    public PageBean queryByPageBean(PageBean pageBean);
+
 }
diff --git a/src/main/java/com/moral/service/impl/DeviceVersionServiceImpl.java b/src/main/java/com/moral/service/impl/DeviceVersionServiceImpl.java
index c53e102..e5aaa1e 100644
--- a/src/main/java/com/moral/service/impl/DeviceVersionServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/DeviceVersionServiceImpl.java
@@ -1,13 +1,23 @@
 package com.moral.service.impl;
 
+import com.moral.common.bean.PageBean;
+import com.moral.common.util.ExampleUtil;
+import com.moral.common.util.MyBatisBaseMapUtil;
+import com.moral.entity.DeviceVersion;
 import com.moral.mapper.DeviceVersionMapper;
 import com.moral.service.DeviceVersionService;
 import org.springframework.stereotype.Service;
+import tk.mybatis.mapper.entity.Example;
 
 import javax.annotation.Resource;
+import java.io.UnsupportedEncodingException;
 
 @Service
 public class DeviceVersionServiceImpl implements DeviceVersionService {
       @Resource
       private DeviceVersionMapper deviceVersionMapper;
+      private static Class ENTITY_CLASS = DeviceVersion.class;
+      public PageBean queryByPageBean(PageBean pageBean){
+           return MyBatisBaseMapUtil.queryPage(deviceVersionMapper,pageBean,ENTITY_CLASS);
+      }
 }

--
Gitblit v1.8.0