作者 钟来

初始提交

... ... @@ -77,6 +77,29 @@
<groupId>net.jodah</groupId>
<artifactId>expiringmap</artifactId>
</dependency>
<!-- 数据库 -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-dbutils</groupId>
<artifactId>commons-dbutils</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency>
</dependencies>
<build>
... ...
package com.zhonglai.luhui.mqtt.comm.dao;
import com.alibaba.fastjson.JSONArray;
import org.apache.commons.dbutils.*;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.apache.commons.lang3.StringUtils;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 数据库操作
* Created by zhonglai on 2016/12/15.
*/
public class BaseDao {
private DBFactory dBFactory = new DBFactoryImp();
public BaseDao(DBFactory dBFactory)
{
this.dBFactory = dBFactory;
}
public BaseDao()
{
}
/**
* 指定表名插入对象
* @param object 传值对象
*/
public void insert(Object object )
{
QueryRunner runner = new QueryRunner(dBFactory.getDataSource());
String sql = "insert into ";
sql += changTableNameFromObject(object) + "(";
Field[] fields = object.getClass().getDeclaredFields( );
String values = "(";
List<Object> valueList = new ArrayList<Object>();
for(Field field:fields)
{//
Method method;
try {
method = object.getClass().getMethod("get"+com.ruoyi.common.utils.StringUtils.getName(field.getName()));
Object value = method.invoke(object);
if(null != value)
{
if(!"(".equals(values) )
{
sql += ",";
values += ",";
}
sql += "`"+changTableNameFromObject(field.getName())+"`";
values += "?";
valueList.add(value);
}
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
sql += ")";
values += ")";
sql = sql+" values "+values;
try {
// 创建一个BeanProcessor对象
// GenerousBeanProcessor 仅仅重写了父类BeanProcessor的mapColumnsToProperties方法
BeanProcessor bean = new GenerousBeanProcessor();
// 将GenerousBeanProcessor对象传递给BasicRowProcessor
RowProcessor processor = new BasicRowProcessor(bean);
object = runner.insert(sql,new BeanHandler<Object>(Object.class,processor),valueList.toArray());
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 插入对象集合
* @param objectList
*/
public void insertList(List<Object> objectList)
{
insertList(objectList,null);
}
/**
* 指定表名插入对象集合
* @param objectList
*/
public void insertList(List<?> objectList ,String tableName)
{
QueryRunner runner = new QueryRunner(dBFactory.getDataSource());
Object object = objectList.get(0);
String sql = "insert into ";
if(StringUtils.isBlank(tableName))
{
tableName = changTableNameFromObject(object.getClass().getSimpleName());
}
List<Object> valueList = new ArrayList<Object>();
sql += tableName + msaicAttribute(object) + " values " +msaicValues(objectList,valueList);
try {
runner.update(sql,valueList.toArray());
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 拼接属性条件
* @param object
* @return
*/
private String msaicAttribute(Object object)
{
Field[] fields = object.getClass().getDeclaredFields( );
String attributeStr = "(";
List<Object> valueList = new ArrayList<Object>();
for(Field field:fields)
{//
if(!"(".equals(attributeStr) )
{
attributeStr += ",";
}
attributeStr += "`"+changTableNameFromObject(field.getName())+"`";
}
attributeStr += ")";
return attributeStr;
}
private String msaicValues(List<?> objectList,List<Object> valueList)
{
StringBuffer returnValues = new StringBuffer();
for(Object object:objectList)
{
Field[] fields = object.getClass().getDeclaredFields( );
String values = "(";
for(Field field:fields)
{//
Method method;
try {
method = object.getClass().getMethod("get"+com.ruoyi.common.utils.StringUtils.getName(field.getName()));
Object value = method.invoke(object);
if(!"(".equals(values) )
{
values += ",";
}
values += "?";
valueList.add(value);
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
values += ")";
if(returnValues.length()!=0)
{
returnValues.append(",");
}
returnValues.append(values);
}
return returnValues.toString();
}
/**
* 以主键id更新对象
* @param object
*/
public void update(Object object)
{
update(object,null);
}
/**
* 根据条件更新对象
* @param object 传值对象
* @param whereFieldNames 条件(多个用,分割)
*/
public void update(Object object,String whereFieldNames)
{
QueryRunner runner = new QueryRunner(dBFactory.getDataSource());
String sql = "update ";
sql += changTableNameFromObject(object);
Field[] fields = object.getClass().getDeclaredFields();
List<Object> valueList = new ArrayList<Object>();
if(null != fields && fields.length !=0 )
{
sql += " set ";
int j = 0;
for(int i=0;i<fields.length;i++)
{
Field field = fields[i];
try {
Method method = object.getClass().getMethod("get"+com.ruoyi.common.utils.StringUtils.getName(field.getName()));
Object value = method.invoke(object);
if(null != value)
{
if(j!=0)
{
sql += ",";
}
sql += "`"+changTableNameFromObject(field.getName())+"`"+"=?";
j++;
valueList.add(value);
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
sql += " where 1=1 ";
if(StringUtils.isNoneBlank(whereFieldNames))
{
String[] wheres = whereFieldNames.split(",");
if(StringUtils.isNotBlank(whereFieldNames))
{
for(int i =0;i<wheres.length;i++)
{
try {
Method method = object.getClass().getMethod("get"+com.ruoyi.common.utils.StringUtils.getName(wheres[i]));
Object value = method.invoke(object);
sql += " and ";
sql += changTableNameFromObject(wheres[i]) + "=?";
valueList.add(value);
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}else{
Method method = null;
try {
method = object.getClass().getMethod("get"+ com.ruoyi.common.utils.StringUtils.getName("id"));
Object value = method.invoke(object);
sql += " and ";
sql += "id=?";
valueList.add(value);
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
try {
runner.update(sql,valueList.toArray());
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 根据条件获取对象
* @param clas 对象
* @param where 条件
* @param <T>
* @return
*/
public <T> Object get(Class<T> clas,Map<String,Object> where)
{
QueryRunner runner = new QueryRunner(dBFactory.getDataSource());
String tableName = changTableNameFromObject(clas.getSimpleName());
String sql = "select * from "+tableName+" where 1=1 ";
try {
List<Object> valueList = new ArrayList<Object>();
sql += getCountFrommapWhere(where,valueList);
return runner.query(sql, new BeanHandler<T>(clas, getRowProcessor()),valueList.toArray());
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
/**
* 根据条件获取对象
* @param clas 对象
* @param where 条件
* @param <T>
* @return
*/
public <T> Object get(Class<T> clas,String where,String tableName)
{
QueryRunner runner = new QueryRunner(dBFactory.getDataSource());
String sql = "select * from "+tableName+" where 1=1 ";
try {
List<Object> valueList = new ArrayList<Object>();
sql += "and "+where;
return runner.query(sql, new BeanHandler<T>(clas, getRowProcessor()));
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
/**
* 根据id获取对象
* @param clas 对象
* @param id 主键id
* @param <T>
* @return
*/
public <T> Object get(Class<T> clas,Object id)
{
QueryRunner runner = new QueryRunner(dBFactory.getDataSource());
String tableName = changTableNameFromObject(clas.getSimpleName());
String sql = "select * from "+tableName+" where 1=1 ";
try {
sql += " and id=?";
Object[] params = {id};
return runner.query(sql, new BeanHandler<T>(clas, getRowProcessor()),params);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
/**
* 根据条件删除对象
* @param clas 对象
* @param where 条件
* @return
*/
public int delete(Class<?> clas, Map<String,Object> where)
{
QueryRunner runner = new QueryRunner(dBFactory.getDataSource());
String tableName = changTableNameFromObject(clas.getSimpleName());
String sql = "DELETE FROM "+tableName+" WHERE 1=1 ";
try {
List<Object> valueList = new ArrayList<Object>();
sql += getCountFrommapWhere(where,valueList);
return runner.update(sql,valueList.toArray());
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
/**
* 根据id删除对象
* @param clas 对象
* @param id 主键id
*/
public int delete(Class<?> clas,Object id)
{
return delete(clas,id,null);
}
/**
* 根据id删除对象
* @param clas 对象
* @param id 主键id
*/
public int delete(Class<?> clas,Object id,String tableName)
{
QueryRunner runner = new QueryRunner(dBFactory.getDataSource());
if(StringUtils.isBlank(tableName))
{
tableName = changTableNameFromObject(clas.getSimpleName());
}
String sql = "DELETE FROM "+tableName+" WHERE 1=1 ";
try {
sql += " and id=?";
Object[] params = {id};
return runner.update(sql,params);
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
/**
* 对象条件获取对象列表
* @param object 对象条件
* @param <T>
* @return
*/
public <T> T find(Object object)
{
return find(object,"*");
}
/**
* 对象条件获取对象指定属性值列表
* @param object 对象条件
* @param selectStr 指定属性值(用数据库表字段多个,分割)
* @param <T>
* @return
*/
public <T> T find(Object object,String selectStr)
{
return find(object,selectStr,null);
}
/**
* 对象条件的条件获取对象列表
* @param object 对象条件
* @param selectStr 指定属性值(用数据库表字段多个,分割)
* @param whereMap 对象条件的条件
* @param <T>
* @return
*/
public <T> T find(Object object,String selectStr,Map<String,String> whereMap)
{
return find(object,selectStr,whereMap,null);
}
/**
* 对象条件的条件按一定排序获取对象列表
* @param object 对象条件
* @param selectStr 指定属性值(用数据库表字段多个,分割)
* @param whereMap 对象条件的条件
* @param order 排序条件
* @param <T>
* @return
*/
public <T> T find(Object object,String selectStr,Map<String,String> whereMap,String order)
{
return find(object,selectStr,whereMap,order,0,0);
}
/**
* 对象条件获取对象列表
* @param object 对象条件
* @param selectStr 指定属性值(用数据库表字段多个,分割)
* @param whereMap 对象条件的条件
* @param order 排序条件
* @param pageSize 页面大小
* @param pageNo 页码
* @param <T>
* @return
*/
public <T> T find(Object object,String selectStr,Map<String,String> whereMap,String order,Integer pageSize,Integer pageNo )
{
QueryRunner runner = new QueryRunner(dBFactory.getDataSource());
if(StringUtils.isBlank(order))
{
order = "";
}
if(null == pageSize)
{
pageSize = 0;
}
if(null == pageNo)
{
pageNo = 0;
}
if(StringUtils.isBlank("selectStr"))
{
selectStr = "*";
}
List<Object> valueList = new ArrayList<Object>();
String sql = getFindSql(object,selectStr,whereMap,valueList);
if(StringUtils.isNotBlank(order))
{
sql += " order by "+order;
}
if(0 != pageSize && 0 != pageNo)
{
sql += " limit "+((pageNo-1)*pageSize)+","+pageSize;
}
try {
return (T) runner.
query(sql,new BeanListHandler(object.getClass(),getRowProcessor()),valueList.toArray());
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
/**
* sql执行查询
* @param sql
* @return
*/
public <T> T findBysql(String sql,Class type,Object... params)
{
QueryRunner runner = new QueryRunner(dBFactory.getDataSource());
try {
return (T) runner.
query(sql,new BeanListHandler(type,getRowProcessor()),params);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
/**
* 对象条件获取总数
* @param object 对象条件
* @return
*/
public Long getTotle(Object object )
{
QueryRunner runner = new QueryRunner(dBFactory.getDataSource());
List<Object> valueList = new ArrayList<Object>();
String sql = getFindSql(object,"count(*)",null,valueList);
try {
return runner.query(sql,new ScalarHandler<Long>(),valueList.toArray());
} catch (SQLException e) {
e.printStackTrace();
}
return 0l;
}
/**
* 对象条件的条件获取总数
* @param object 对象条件
* @param whereMap 对象条件的条件
* @return
*/
public Long getTotle(Object object,Map<String,String> whereMap)
{
QueryRunner runner = new QueryRunner(dBFactory.getDataSource());
List<Object> valueList = new ArrayList<Object>();
String sql = getFindSql(object,"count(*)",whereMap,valueList);
try {
return runner.query(sql,new ScalarHandler<Long>(),valueList.toArray());
} catch (SQLException e) {
e.printStackTrace();
}
return 0l;
}
/**
* sql执行查询
* @param sql
* @return
*/
public List findListBysql(String sql)
{
QueryRunner runner = new QueryRunner(dBFactory.getDataSource());
List list = null;
try {
list = runner.query(sql,new MapListHandler());
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
/**
* sql执行查询
* @param sql
* @return
*/
public JSONArray findBysql(String sql)
{
QueryRunner runner = new QueryRunner(dBFactory.getDataSource());
List list = null;
try {
list = runner.query(sql,new MapListHandler());
} catch (SQLException e) {
e.printStackTrace();
}
if(null != list)
{
return JSONArray.parseArray(JSONArray.toJSONString(list));
}
return null;
}
/**
* sql执行更新
* @param sql
* @param params
* @return
*/
public int updateBySql(String sql,Object... params)
{
QueryRunner runner = new QueryRunner(dBFactory.getDataSource());
try {
return runner.update(sql,params);
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
/**
* 生成查询条件
* @param object
* @param selectStr
* @param whereMap
* @param valueList
* @return
*/
private String getFindSql(Object object,String selectStr,Map<String,String> whereMap,List<Object> valueList )
{
String sql = null;
sql = "select "+selectStr+" from "+ changTableNameFromObject(object);
String where = " where 1=1 ";
String like = "";
Field[] fields = object.getClass().getDeclaredFields();
if(null != fields && fields.length !=0 )
{
for(int i=0;i<fields.length;i++)
{
Field field = fields[i];
try {
Method method;
method = object.getClass().getMethod("get"+ com.ruoyi.common.utils.StringUtils.getName(field.getName()));
Object value = method.invoke(object);
if(!(null == value))
{
String orther = "";
String s = "=";
if(!(null == whereMap || null == whereMap.get(field.getName())))
{
s = whereMap.get(field.getName());
if("like".equals(s))
{
value = "%"+value+"%";
like += " or " + "`"+changTableNameFromObject(field.getName())+"`"+s+" ?"+orther ;
valueList.add(value);
continue;
}
if("time".equals(s))
{
s = ">";
orther = " and `"+changTableNameFromObject(field.getName())+"`< '"+whereMap.get("end_"+field.getName())+"'";
}
}
where += " and `"+changTableNameFromObject(field.getName())+"`"+s+" ?"+orther;
valueList.add(value);
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
sql += where;
if(StringUtils.isNoneBlank(like))
{
sql += "and (1=2 "+like+")";
}
return sql;
}
/**
* 添加或更新对象
* INSERT INTO test(`in1`,`str1`) VALUES ('1','1');
* @param object 对象
* @return
*/
public void saveOrUpdateObject(Object object)
{
String sql = "insert into ";
sql += changTableNameFromObject(object) + "(";
Field[] fields = object.getClass().getDeclaredFields( );
String values = "(";
String update = "";
for(Field field:fields)
{//
Method method;
try {
method = object.getClass().getMethod("get"+com.ruoyi.common.utils.StringUtils.getName(field.getName()));
Object value = method.invoke(object);
if(null != value)
{
if(!"(".equals(values) )
{
sql += ",";
values += ",";
update += ",";
}
sql += "`"+changTableNameFromObject(field.getName())+"`";
values += "'"+ value+"'";
update += "`"+changTableNameFromObject(field.getName())+"`"+"=VALUES("+"`"+changTableNameFromObject(field.getName())+"`)";
}
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
sql += ")";
values += ")";
try {
QueryRunner runner = new QueryRunner(dBFactory.getDataSource());
runner.update(sql+" values "+values+" ON DUPLICATE KEY UPDATE "+update);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 添加或更新对象列表
* INSERT INTO `test` (`in1`,`str1`)VALUES ('1','2'),('2','2') ON DUPLICATE KEY UPDATE `in1`=VALUES(`in1`),`str1`=VALUES(`str1`);
* @param objectlist 对象列表
* @return
*/
public void saveOrUpdateObjectList(List<Object> objectlist)
{
StringBuffer sb =new StringBuffer();
String update = "";
for(int i = 0; i<objectlist.size();i++)
{
Object object = objectlist.get(i);
Field[] fields = object.getClass().getDeclaredFields( );
if(i==0)
{
sb.append("INSERT INTO `"+changTableNameFromObject(object)+"` ");
sb.append("(");
for(Field field:fields)
{
if(!"".equals(update) )
{
sb.append(",");
update += ",";
}
sb.append("`"+changTableNameFromObject(field.getName())+"`");
update += "`"+changTableNameFromObject(field.getName())+"`"+"=VALUES("+"`"+changTableNameFromObject(field.getName())+"`)";
}
sb.append(")");
sb.append("VALUES ");
}else{
sb.append(",");
}
for(int j=0;j<fields.length;j++)
{
Field field = fields[j];
Method method;
try {
method = object.getClass().getMethod("get"+com.ruoyi.common.utils.StringUtils.getName(field.getName()));
Object value = method.invoke(object);
if(null == value)
{
value = "";
}
if(j!=0)
{
sb.append(",");
}else{
sb.append("(");
}
sb.append("'"+ value+"'");
if(j==fields.length-1)
{
sb.append(")");
}
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
sb.append(" ON DUPLICATE KEY UPDATE ");
sb.append(update);
try {
QueryRunner runner = new QueryRunner(dBFactory.getDataSource());
runner.update(sb.toString());
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 将map条件转换成sql条件
* @param mapwhere map条件
* @param valueList sql条件参数
* @return
*/
private String getCountFrommapWhere(Map<String,Object> mapwhere,List<Object> valueList)
{
String where = "";
for(String key:mapwhere.keySet())
{
Object value = mapwhere.get(key);
where += " and ";
where += changTableNameFromObject(key) + "=?";
valueList.add(value);
}
return where;
}
/**
* 获取一个驼峰过滤规则类
* @return
*/
private RowProcessor getRowProcessor()
{
// 创建一个BeanProcessor对象
// GenerousBeanProcessor 仅仅重写了父类BeanProcessor的mapColumnsToProperties方法
BeanProcessor bean = new GenerousBeanProcessor();
// 将GenerousBeanProcessor对象传递给BasicRowProcessor
return new BasicRowProcessor(bean);
}
/**
* 对象转变数据库名
* @param object 对象
* @return
*/
public static String changTableNameFromObject(Object object) {
Class clas = object.getClass();
String tableNmae = clas.getSimpleName();
Method method = null; // 父类对象调用子类方法(反射原理)
try {
method = clas.getMethod("getTableName");
Object tObject = method.invoke(object);
if(null != tObject)
{
tableNmae = (String) tObject;
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
return com.ruoyi.common.utils.StringUtils.toUnderScoreCase(tableNmae);
}
}
... ...
/**
* @version 0.1
* @describe 数据库链接工厂
* @author yushigui
* @date 2014-1-19
*/
package com.zhonglai.luhui.mqtt.comm.dao;
import javax.sql.DataSource;
public interface DBFactory {
public DataSource getDataSource();
}
... ...
/**
* @version 0.1
* @describe 数据库链接工厂
* @author yushigui
* @date 2014-1-19
*/
package com.zhonglai.luhui.mqtt.comm.dao;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import javax.sql.DataSource;
import java.io.File;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
public class DBFactoryImp implements DBFactory{
private static DataSource ds = null;
static {
try {
if(null==ds )
{
String path = System.getProperty("user.dir")+"/configs/";
Properties p = new Properties();
p.load(new FileInputStream(new File(path+"dbcpconfig.properties")));
// p.load(DBFactory.class
// .getClassLoader().getResourceAsStream("configs/dbcpconfig.properties"));
ds = BasicDataSourceFactory.createDataSource(p);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
try {
return ds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
public DataSource getDataSource(){
return ds;
}
}
... ...
package com.zhonglai.luhui.mqtt.comm.dto;
/**
* 告警信息
* @author Administrator
*
*/
public class DeviceAlarmInfo {
private String deviceInfoId; //设备id
private String alarmCode; //告警代码
private Integer alarmTime; //告警时间
private Integer isSendNumber; //发送次数
private Integer alarmState; //告警状态(1发生告警,0结束告警)
public String getDeviceInfoId() {
return deviceInfoId;
}
public void setDeviceInfoId(String deviceInfoId) {
this.deviceInfoId = deviceInfoId;
}
public String getAlarmCode() {
return alarmCode;
}
public void setAlarmCode(String alarmCode) {
this.alarmCode = alarmCode;
}
public Integer getAlarmTime() {
return alarmTime;
}
public void setAlarmTime(Integer alarmTime) {
this.alarmTime = alarmTime;
}
public Integer getIsSendNumber() {
return isSendNumber;
}
public void setIsSendNumber(Integer isSendNumber) {
this.isSendNumber = isSendNumber;
}
public Integer getAlarmState() {
return alarmState;
}
public void setAlarmState(Integer alarmState) {
this.alarmState = alarmState;
}
}
... ...
package com.zhonglai.luhui.mqtt.comm.dto;
import com.luhui.domain.log.LogDeviceOperation;
/**
* 设备操作类型
*/
public enum DeviceOperationTypeEnum {
CUSTOM(-1,"自定义"),
DeviceUpgrade(0,"设备远程升级"),
DeviceReset(1,"设备远程复位"),
ControllerRemoteManualOpen(2,"远程手动开"),
ControllerRemoteManualClose(3,"远程手动关"),
ControllerRemoteAutomaticOpen(4,"远程自动开"),
ControllerRemoteAutomaticClose(5,"远程自动关"),
ControllerLocalManualOpen(6,"本地手动开"),
ControllerLocalManualClose(7,"本地手动关"),
ControllerLocalAutomaticOpen(8,"本地自动开"),
ControllerLocalAutomaticClose(9,"本地自动关"),
OnekeyAutomatic(10,"一键自动"),
ControllerAllOpen(11,"控制器全开"),
ControllerAllClose(12,"控制器全关"),
ControllerTimeSlotLocal(13,"控制器时间段本地设置"),
ControllerTimeSlotRemote(14,"控制器时间段远程设置"),
ControllerTimeIntervalLocal(15,"控制器时间间隔本地设置"),
ControllerTimeIntervalRemote(16,"控制器时间间隔远程设置"),
DeviceSensorRelationLocal(17,"传感器和控制器关系本地设置"),
DeviceSensorRelationRemote(18,"传感器和控制器关系远程设置"),
NoonOxygenRemote(19,"午间增氧时间远程设置"),
NoonOxygenLocal(20,"午间增氧时间本地设置"),
CODRemote(21,"COD远程设置"),
CODLocal(22,"COD本地设置"),
AmmoniaNitrogenRemote(23,"氨氮远程设置"),
AmmoniaNitrogenLocal(24,"氨氮本地设置"),
PHRemote(25,"PH远程设置"),
PHLocal(26,"PH本地设置"),
NitriteRemote(27,"亚硝酸盐远程设置"),
NitriteLocal(28,"亚硝酸盐本地设置"),
AlgaeRemote(29,"藻类远程设置"),
AlgaeLocal(30,"藻类本地设置"),
PipePressureRemote(31,"管道压力远程设置"),
PipePressureLocal(32,"管道压力本地设置"),
CurrentSpeedRemote(33,"流速远程设置"),
CurrentSpeedLocal(34,"流速本地设置"),
WaterLevelRemote(35,"水位远程设置"),
WaterLevelLocal(36,"水位本地设置"),
OxygenMeltingThresholdSettingRemote(37,"溶氧门限远程设置"),
OxygenMeltingThresholdSettingLocal(38,"溶氧门限本地设置"),
NightOxygenRemote(39,"夜间增氧时间远程设置"),
NightOxygenLocal(40,"夜间增氧时间本地设置"),
ContrastTimeRemote(41,"对表时间远程设置"),
ContrastTimeLocal(42,"对表时间本地设置"),
SalinityRemote(43,"盐度远程设置"),
SalinityLocal(44,"盐度本地设置"),
KBRemote(45,"KB值远程设置"),
KBLocal(46,"KB值本地设置"),
WaterTemperatureRemote(47,"水体温度门限远程设置"),
WaterTemperatureLocal(48,"水体温度门限本地设置"),
Device301SetWorkConfig(49,"301工作参数一建设置"),
Device301ReadWorkConfig(50,"301工作参数读取"),
DeviceSensorCalibrationLocal(51,"传感器本地校准"),
DeviceSensorCalibrationRemote(52,"传感器远程校准"),
DeviceTimeToTime(53,"主机对表"),
PLCWaterPushTimeSlotLocal(54,"PLC推水时段本地设置"),
PLCWaterPushTimeSlotRemote(55,"PLC推水时段远程设置"),
PLCFoulingTimeLocal(56,"PLC吸污时间段本地设置"),
PLCFoulingTimeRemote(57,"PLC吸污时间段远程设置"),
PLCOxygenIncreasingTimeLocal(58,"PLC增氧时间段本地设置"),
PLCOxygenIncreasingTimeRemote(59,"PLC增氧时间段远程设置"),
PLCFeedingTimeLocal(60,"PLC投饵时间段本地设置"),
PLCFeedingTimeRemote(61,"PLC投饵时间段远程设置"),
PLCSpareTimeLocal(62,"PLC备用时间段本地设置"),
PLCSpareTimeRemote(63,"PLC备用时间段远程设置"),
DeviceSensorchange(64,"传感器切换"),
DeviceHaveUpdatedVersion(65,"有更新版本"),
DeviceForcedUpdatesRequired(66,"需要强制更新版本"),
ControllerTypeLocal(67,"控制器类型本地设置"),
ControllerTypeRemote(68,"控制器类型远程设置"),
UnknownOperation(69,"未知操作"),
Voltage(70,"电压设置"),
LeakageCurrent(71,"漏电流设置"),
Power(72,"功率设置"),
AirTemperature(73,"气温设置"),
TemperatureStep(74,"温度步长设置"),
Current(75,"电流限制设置"),
LeakageDetectionTime(76,"漏电检测时间设置"),
LeakageDetectionInterval(77,"漏电检测间隔设置"),
PowerLimits(78,"功率限制设置"),
LeakageTest(79,"漏电测试"),
LedTest(80,"LED测试"),
ControllerTimeSlotRemoteGET(81,"控制器时间段远程获取"),
ManDunControllerSceneTime(82,"控制器场景时间段远程设置"),
ManDunControllerSceneTimeEXE(83,"执行场景预定义的开关控制序列"),
ManDunControllerRestartCommunication(84,"重启通讯模块"),
ManDunControllerDelTime(85,"删除定时操作"),
ManDunModifyLineName(86,"修改线路名称"),
ManDunModifyLeakageSelfTestTime(87,"修改漏电自检时间"),
ManDunSwitchRemoteControlBit(88,"开关远程控制位"),
ManDunModifySwitchDisplayBit(89,"修改开关显示位"),
ManDunModifySwitchWiringMode(90,"修改开关接线方式"),
ManDunModifyPowerLimit(91,"修改功率限额"),
ManDunModifyVoltageLimit(92,"修改电压限额"),
ManDunModifyCurrentLimit(93,"修改电流限额"),
ManDunModifyLeakageCurrentLimit(94,"修改漏电流限额"),
ManDunModifyTemperatureLimit(95,"修改温度限额"),
ManDunModifyElectricalAppliances(96,"修改电器"),
ManDunModifyRealTimeDataUploadInterval(97,"修改实时数据上传间隔 RTVI"),
ManDunModifyWiFiParameters(98,"修改开关显示位"),
ManDunModifyTimeZone(99,"修改时区"),
ManDunModifyDevicePassword(100,"修改开关显示位"),
ManDunModifyRealTimeDataUploadIntervalTemp(101,"临时修改实时数据间隔 RTVI(掉电不保存)"),
ManDunModifyServerPoint(102,"修改服务器指向"),
ManDunModifyNetworkAddress(103,"修改网络地址"),
ManDunModifyCurrentCalibrationFactor(104,"修改电流校准系数(仅 E9支持)"),
ManDunModifyServerPointDomain (105,"修改服务器指向(支持域名)"),
UP_CHANGE_ADDRESS(106,"修改编号"),
ControllerOperation(107,"远程操作开关"),
UP_R1(108,"修改节能模式的转速"),
UP_R2(109,"修改对流模式的转速"),
UP_R3(110,"修改增强模式的转速"),
UP_IS(111,"修改设置启停电流"),
UP_RP(112,"修改设置最大转速值"),
UP_FB(113,"修改使能异常检测及正反转"),
UP_RMR(114,"修改设置开机默认挡位"),
UP_RM(115,"修改开关模式挡位"),
QiYaRemote(116,"气压远程设置"),
CLOS(117,"链接关闭"),
ControllerTimeModeRemote(118,"控制器时间模式远程设置"),
;
public Integer type; //类型
public String name; //名称
DeviceOperationTypeEnum(Integer type, String name)
{
this.type = type;
this.name = name;
}
public void setDeviceOperationLog(LogDeviceOperation logDeviceOperation)
{
logDeviceOperation.setDeviceOperationType(type);
logDeviceOperation.setOperationDescribe(name);
}
}
... ...
package com.zhonglai.luhui.mqtt.comm.dto;
import lombok.Data;
@Data
public class LogDeviceOperation {
private Integer deviceOperationId; //设备操作日志id
private String deviceInfoId; //设备信息id
private Integer deviceOperationTime; //设备操作时间
private String operationInstruction; //设备操作指令
private String operationDescribe; //设备操作描述
private String deviceOldState; //设备操作前状态
private String deviceNewState; //设备操作后的状态
private Integer deviceOperationType; //设备操作类型
private String sensorOrController; //传感器或控制器编号(控制器以00_开头)
private Integer isStateChange; //是否有状态改变(0否,1是)
}
... ...
package com.zhonglai.luhui.mqtt.comm.dto;
import com.luhui.ly.service.comm.nio.util.TableUtil;
import java.util.Date;
public enum TableGenerateSqlEnum {
//设备传感器数据
DeviceSensorData("设备传感器数据数据库","ly_sensor_data",
"device_sensor_data",
3,
"CREATE TABLE IF NOT EXISTS `device_sensor_data` ("+
"`device_info_id` varchar(50) NOT NULL COMMENT '设备信息id',"+
"`data_type` varchar(50) NOT NULL COMMENT '数据类型',"+
"`data_value` varchar(50) NOT NULL COMMENT '数据值',"+
"`creat_time` int(11) NOT NULL COMMENT '创建时间',"+
"`device_model` varchar(10) DEFAULT NULL COMMENT '设备型号,(3,5,6,6_P)',"+
"KEY `device_info_id` (`device_info_id`,`data_type`,`creat_time`)"+
") ENGINE=InnoDB DEFAULT CHARSET=utf8"
),
//管理员操作日志
LogSysUserOperation("管理员操作日志数据库","ly_sys_user_operation",
"log_sys_user_operation",
2,
"CREATE TABLE IF NOT EXISTS `log_sys_user_operation` (" +
" `operation_name` varchar(50) NOT NULL COMMENT '操作名称'," +
" `operation_ip` varchar(50) DEFAULT NULL COMMENT '操作ip'," +
" `operation_url` varchar(200) DEFAULT NULL COMMENT '操作连接'," +
" `operation_value` text COMMENT '操作值'," +
" `user_id` int(11) DEFAULT NULL COMMENT '用户id'," +
" `user_login_name` varchar(50) DEFAULT NULL COMMENT '用户名称'," +
" `user_nickname` varchar(50) DEFAULT NULL COMMENT '用户昵称'," +
" `create_time` int(11) NOT NULL COMMENT '创建时间'," +
" `module` varchar(50) DEFAULT NULL COMMENT '操作模块'" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8"
),
//设备操作日志
LogDeviceOperation("设备操作日志数据库","ly_log_device_operation",
"log_device_operation",
3,
"CREATE TABLE IF NOT EXISTS `log_device_operation` (" +
" `device_operation_id` int(11) NOT NULL AUTO_INCREMENT," +
" `device_info_id` varchar(50) NOT NULL COMMENT '设备id'," +
" `device_operation_time` int(11) NOT NULL COMMENT '设备操作时间'," +
" `operation_instruction` text COMMENT '设备操作指令'," +
" `operation_describe` varchar(50) DEFAULT NULL COMMENT '设备操作描述'," +
" `device_old_state` text COMMENT '设备操作前状态'," +
" `device_new_state` text COMMENT '设备操作后的状态'," +
" `device_operation_type` varchar(11) DEFAULT NULL COMMENT '设备操作类型'," +
" `sensor_or_controller` varchar(50) DEFAULT '00' COMMENT '传感器或控制器编号(控制器以00_开头)'," +
" `is_state_change` int(11) DEFAULT '0' COMMENT '是否有状态改变(0否,1是)'," +
" PRIMARY KEY (`device_operation_id`)" +
") ENGINE=InnoDB AUTO_INCREMENT=3677 DEFAULT CHARSET=utf8"
),
//用户登录日志
UserLoginLog("用户登录日志数据库","ly_user_login",
"user_login_log",
2,
"CREATE TABLE IF NOT EXISTS `user_login_log` (" +
" `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id'," +
" `user_id` int(11) NOT NULL COMMENT '用户id'," +
" `user_login_name` varchar(50) NOT NULL COMMENT '用户登录名'," +
" `user_nickname` varchar(50) NOT NULL COMMENT '用户姓名'," +
" `user_type` int(11) NOT NULL DEFAULT '0' COMMENT '用户类型,默认0-普通用户,1-管理员,2客服'," +
" `login_province_id` varchar(50) DEFAULT NULL COMMENT '登录省份id'," +
" `login_city_id` varchar(50) DEFAULT NULL COMMENT '登录城市id'," +
" `login_province_name` varchar(50) DEFAULT NULL COMMENT '登录省份名'," +
" `login_city_name` varchar(50) DEFAULT NULL COMMENT '登录城市名'," +
" `login_address` varchar(50) DEFAULT NULL COMMENT '登陆地址'," +
" `login_ip` varchar(50) DEFAULT NULL COMMENT '登录ip'," +
" `create_time` int(11) NOT NULL COMMENT '登陆时间'," +
" PRIMARY KEY (`id`)" +
") ENGINE=InnoDB AUTO_INCREMENT=916 DEFAULT CHARSET=utf8"
),
//管理员登录日志
SysUserLoginLog("管理员登录日志数据库","ly_sys_user_login",
"sys_user_login_log",
1,
"CREATE TABLE IF NOT EXISTS `sys_user_login_log` (" +
" `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id'," +
" `user_login_name` varchar(50) NOT NULL COMMENT '用户登录名'," +
" `user_phone` varchar(50) NOT NULL COMMENT '用户电话'," +
" `login_province_id` varchar(50) DEFAULT NULL COMMENT '登录省份id'," +
" `login_city_id` varchar(50) DEFAULT NULL COMMENT '登录城市id'," +
" `login_province_name` varchar(50) DEFAULT NULL COMMENT '登录省份名'," +
" `login_city_name` varchar(50) DEFAULT NULL COMMENT '登录城市名'," +
" `login_address` varchar(50) DEFAULT NULL COMMENT '登陆地址'," +
" `login_ip` varchar(50) DEFAULT NULL COMMENT '登录ip'," +
" `create_time` int(11) NOT NULL COMMENT '登陆时间'," +
" PRIMARY KEY (`id`)" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8"
),
//用户操作日志
LogUserOperation("用户操作日志数据库","ly_user_operation",
"log_user_operation",
3,
"CREATE TABLE IF NOT EXISTS `log_user_operation` (" +
" `operation_name` varchar(50) NOT NULL COMMENT '操作名称'," +
" `operation_ip` varchar(50) DEFAULT NULL COMMENT '操作ip'," +
" `operation_url` varchar(200) DEFAULT NULL COMMENT '操作连接'," +
" `operation_value` text COMMENT '操作值'," +
" `user_id` int(11) DEFAULT NULL COMMENT '用户id'," +
" `user_login_name` varchar(50) DEFAULT NULL COMMENT '用户名称'," +
" `user_nickname` varchar(50) DEFAULT NULL COMMENT '用户昵称'," +
" `create_time` int(11) NOT NULL COMMENT '创建时间'," +
" `module` varchar(50) DEFAULT NULL COMMENT '操作模块'," +
" `my_user_id` varchar(45) DEFAULT NULL COMMENT '我的用户id'," +
" `my_user_login_name` varchar(45) DEFAULT NULL COMMENT '我的用户名称'," +
" `my_user_nickname` varchar(45) DEFAULT NULL COMMENT '我的用户昵称'" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8"
),
//用户积分信息记录
UserIntegral("用户积分信息记录数据库","ly_user_integral",
"user_integral",
2,
"CREATE TABLE IF NOT EXISTS `user_integral` (" +
" `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id'," +
" `user_id` int(11) DEFAULT NULL COMMENT '用户id'," +
" `integral_before` int(11) DEFAULT NULL COMMENT '操作前积分数'," +
" `integral_end` int(11) DEFAULT NULL COMMENT '操作后积分数'," +
" `integral_number` int(11) DEFAULT NULL COMMENT '积分数量'," +
" `integral_type` int(11) DEFAULT NULL COMMENT '积分类型'," +
" `integral_type_name` varchar(50) DEFAULT NULL COMMENT '积分信息'," +
" `create_time` int(11) DEFAULT NULL COMMENT '创建时间'," +
" `remark` varchar(50) DEFAULT NULL COMMENT '备注'," +
" PRIMARY KEY (`id`)" +
") ENGINE=InnoDB AUTO_INCREMENT=4559 DEFAULT CHARSET=utf8"
),
//告警信息
DeviceAlarmInfo("告警信息数据库","ly_device_alarm_info",
"device_alarm_info",
3,
"CREATE TABLE IF NOT EXISTS `device_alarm_info` (" +
" `alarm_info_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id'," +
" `device_info_id` varchar(50) NOT NULL COMMENT '设备id'," +
" `alarm_code` varchar(50) NOT NULL COMMENT '告警代码'," +
" `alarm_time` int(11) DEFAULT NULL COMMENT '告警时间'," +
" `is_send_number` int(11) DEFAULT '0' COMMENT '发送次数'," +
" `alarm_state` int(11) DEFAULT '0' COMMENT '告警状态(1发生告警,0结束告警)'," +
" PRIMARY KEY (`alarm_info_id`)" +
") ENGINE=InnoDB AUTO_INCREMENT=399144 DEFAULT CHARSET=utf8"
),
//用户分享
UserShare("用户分享数据库","ly_user_share",
"user_share",
2,
"CREATE TABLE IF NOT EXISTS `user_share` (" +
" `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id'," +
" `user_id` int(11) NOT NULL COMMENT '用户id'," +
" `user_login_name` varchar(50) NOT NULL COMMENT '用户登录名称'," +
" `share_content` text COMMENT '分享内容'," +
" `share_time` int(11) NOT NULL COMMENT '分享时间'," +
" `share_type` int(11) NOT NULL COMMENT '分享类型(注:1-首页分享,2-曲线分享,3-病害报表分享,4-多天曲线分享)'," +
" `random_number` int(11) DEFAULT NULL COMMENT '随机数'," +
" PRIMARY KEY (`id`)" +
") ENGINE=InnoDB AUTO_INCREMENT=1301 DEFAULT CHARSET=utf8"
),
//用户等级记录
UserLevel("用户等级记录","ly_user_level",
"log_user_level",
2,
"CREATE TABLE IF NOT EXISTS `log_user_level` (" +
" `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id'," +
" `user_id` int(11) NOT NULL COMMENT '用户id'," +
" `user_login_name` varchar(50) NOT NULL COMMENT '用户登录名称'," +
" `operation` varchar(50) NOT NULL COMMENT '操作描述'," +
" `create_time` int(11) NOT NULL COMMENT '创建时间'," +
" `level` int(11) NOT NULL COMMENT '积分(可以为负数)'," +
" `use_type` int(11) NOT NULL COMMENT '使用类型'," +
" `order_id` int(11) NOT NULL COMMENT '关联支付表id'," +
" PRIMARY KEY (`id`)" +
") ENGINE=InnoDB AUTO_INCREMENT=1301 DEFAULT CHARSET=utf8"
),
//用户货币记录
UserCurrency("用户货币记录","ly_user_currency",
"log_user_currency",
2,
"CREATE TABLE IF NOT EXISTS `log_user_currency` (" +
" `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id'," +
" `user_id` int(11) NOT NULL COMMENT '用户id'," +
" `user_login_name` varchar(50) NOT NULL COMMENT '用户登录名称'," +
" `operation` varchar(50) NOT NULL COMMENT '操作描述'," +
" `create_time` int(11) NOT NULL COMMENT '创建时间'," +
" `currency` int(11) NOT NULL COMMENT '货币数(可以为负数)'," +
" `use_type` int(11) NOT NULL COMMENT '使用类型'," +
" `order_id` int(11) NOT NULL COMMENT '关联支付表id'," +
" PRIMARY KEY (`id`)" +
") ENGINE=InnoDB AUTO_INCREMENT=1301 DEFAULT CHARSET=utf8"
),
Device301Sensitivity("301传感器灵敏度数据","ly_device301_sensitivity","device301_sensitivity",
2,
"CREATE TABLE IF NOT EXISTS `device301_sensitivity` (" +
" `device_info_id` varchar(50) NOT NULL COMMENT '设备信息表id'," +
" `pump_current` varchar(10) DEFAULT NULL COMMENT '水泵电流'," +
" `leakage_current` varchar(10) DEFAULT NULL COMMENT '泄露电流'," +
" `magnification` varchar(10) DEFAULT NULL COMMENT '放大倍数'," +
" `sensor_sensitivity` varchar(10) DEFAULT NULL COMMENT '传感器灵敏度'," +
" `sensor_accuracy` varchar(10) DEFAULT NULL COMMENT '传感器准确度'," +
" `create_time` int(11) NOT NULL COMMENT '添加时间'" +
" ) ENGINE=InnoDB DEFAULT CHARSET=utf8"),
LogSyswebErr("系统运行错误日志","ly_sysweb_err","log_sysweb_err",2,
"CREATE TABLE IF NOT EXISTS `log_sysweb_err` (" +
" `create_time` int(11) DEFAULT NULL COMMENT '创建时间'," +
" `url` varchar(200) DEFAULT NULL COMMENT '请求链接'," +
" `parameter_value` text COMMENT '参数'," +
" `err_message` text COMMENT '错误信息'" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8")
;
public String alias; //别名
public String dateBaseName; //数据库名称
public String tableName; //表名
public String generateSql; //创建sql
public int accuracy; //表类型(1年表,2月表,3日表)
TableGenerateSqlEnum(String alias, String dateBaseName, String tableName, int accuracy, String generateSql)
{
this.alias = alias;
this.dateBaseName = dateBaseName;
this.tableName = tableName;
this.accuracy = accuracy;
this.generateSql = generateSql;
}
public String getTableName(Date date)
{
return TableUtil.getTableName(date, dateBaseName, tableName,accuracy);
}
public String getNowTableName()
{
return TableUtil.getNowTableName( dateBaseName, tableName,accuracy);
}
public String getTableName(String date)
{
return TableUtil.getTableName( date,dateBaseName, tableName,accuracy);
}
public String getTableName(Integer date)
{
return getTableName(new Date(date*1000l));
}
}
... ...
package com.zhonglai.luhui.mqtt.comm.service;
import com.ruoyi.common.utils.DateUtils;
import com.zhonglai.luhui.mqtt.comm.dao.BaseDao;
import com.zhonglai.luhui.mqtt.comm.dto.*;
import com.zhonglai.luhui.mqtt.comm.factory.Topic;
import com.zhonglai.luhui.mqtt.comm.util.TableUtil;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
... ... @@ -31,7 +36,7 @@ public abstract class DataPersistenceService {
operateHis.setDeviceNewState(deviceNewState);
}
operateHis.setIsStateChange(1);
operateHis.setDeviceOperationTime(CommonUtil.getNowTimeMilly());
operateHis.setDeviceOperationTime(DateUtils.getNowTimeMilly());
operateHisList.add(operateHis);
baseDao.insertList(operateHisList, TableGenerateSqlEnum.LogDeviceOperation.getNowTableName());
... ... @@ -66,7 +71,7 @@ public abstract class DataPersistenceService {
{
DeviceAlarmInfo deviceAlarmInfo = new DeviceAlarmInfo();
deviceAlarmInfo.setDeviceInfoId(deviceInfoId);
deviceAlarmInfo.setAlarmTime(CommonUtil.getNowTimeMilly());
deviceAlarmInfo.setAlarmTime(DateUtils.getNowTimeMilly());
deviceAlarmInfo.setAlarmState(1);
deviceAlarmInfo.setAlarmCode("09");
deviceAlarmInfo.setIsSendNumber(0);
... ...
package com.zhonglai.luhui.mqtt.comm.util;
import com.google.gson.JsonObject;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
public class ChangUtil {
public static boolean changString(JsonObject oldData, String strName, String strValue)
public static boolean changString(JSONObject oldData, String strName, String strValue)
{
if(StringUtils.isNoneBlank(strValue))
{
if(!oldData.has(strName) || !strValue.equals(oldData.get(strName).getAsString()))
if(!oldData.containsKey(strName) || !strValue.equals(oldData.getString(strName)))
{
oldData.addProperty(strName,strValue);
oldData.put(strName,strValue);
return true;
}
}
return false;
}
public static boolean changInt(JsonObject oldData, String intName, Integer intValue)
public static boolean changInt(JSONObject oldData, String intName, Integer intValue)
{
if(null != intValue)
{
if(!oldData.has(intName) || intValue -oldData.get(intName).getAsInt() != 0 )
if(!oldData.containsKey(intName) || intValue -oldData.getInteger(intName) != 0 )
{
oldData.addProperty(intName,intValue);
oldData.put(intName,intValue);
return true;
}
}
return false;
}
public static boolean changFloat(JsonObject oldData, String intName, Float intValue)
public static boolean changFloat(JSONObject oldData, String intName, Float intValue)
{
if(null != intValue)
{
if(!oldData.has(intName) || intValue -oldData.get(intName).getAsFloat() != 0 )
if(!oldData.containsKey(intName) || intValue -oldData.getFloat(intName) != 0 )
{
oldData.addProperty(intName,intValue);
oldData.put(intName,intValue);
return true;
}
}
... ...
package com.zhonglai.luhui.mqtt.comm.util;
import com.ruoyi.common.utils.DateUtils;
import java.util.Date;
public class TableUtil {
public TableUtil() {
}
public static String getNowTableName(String dateBase, String tableName, int accuracy) {
return getTableName(getTimeToString(), dateBase, tableName, accuracy);
}
public static String getTableName(Date date, String dateBase, String tableName, int accuracy) {
return getTableName(getTimeToString(date), dateBase, tableName, accuracy);
}
public static String getTableName(String date, String dateBase, String tableName, int accuracy) {
String[] datas = date.split("-");
dateBase = dateBase + "_" + datas[0];
if (0 == accuracy) {
tableName = tableName + "";
} else if (1 == accuracy) {
tableName = tableName + "_" + datas[0];
} else if (2 == accuracy) {
tableName = tableName + "_" + datas[0] + datas[1];
} else if (3 == accuracy) {
tableName = tableName + "_" + datas[0] + datas[1] + datas[2];
} else {
tableName = tableName + "_" + datas[0] + datas[1] + datas[2];
}
return dateBase + "." + tableName;
}
public static String getTimeToString(long dateValue) {
return DateUtils.parseDateToStr( "yyyy-MM-dd",new Date(dateValue));
}
public static String getTimeToString(int dateValue) {
return DateUtils.parseDateToStr("yyyy-MM-dd",new Date((long)dateValue * 1000L));
}
public static String getTimeToString(Date dateValue) {
return DateUtils.parseDateToStr("yyyy-MM-dd",dateValue);
}
public static String getTimeToString() {
return DateUtils.parseDateToStr("yyyy-MM-dd",new Date());
}
}
... ...
package com.zhonglai.luhui.mqtt.service;
import com.luhui.ly.device.mqtt.comm.dto.ServerDto;
import com.luhui.ly.device.mqtt.comm.factory.Topic;
import com.luhui.ly.device.mqtt.comm.service.CacheService;
import com.zhonglai.luhui.mqtt.comm.dto.ServerDto;
import com.zhonglai.luhui.mqtt.comm.factory.Topic;
import com.zhonglai.luhui.mqtt.comm.service.CacheService;
import com.zhonglai.luhui.mqtt.dto.PutReqDto;
import org.springframework.stereotype.Service;
... ...
package com.zhonglai.luhui.mqtt.service;
import com.luhui.ly.device.mqtt.comm.dto.ServerDto;
import com.luhui.ly.device.mqtt.comm.factory.Topic;
import com.luhui.ly.device.mqtt.comm.service.DataPersistenceService;
import com.zhonglai.luhui.mqtt.comm.dto.ServerDto;
import com.zhonglai.luhui.mqtt.comm.factory.Topic;
import com.zhonglai.luhui.mqtt.comm.service.DataPersistenceService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
... ...
package com.zhonglai.luhui.mqtt.service;
import com.luhui.ly.device.mqtt.comm.service.TopicsService;
import com.zhonglai.luhui.mqtt.comm.service.TopicsService;
import org.springframework.stereotype.Service;
@Service
... ...
... ... @@ -576,4 +576,18 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
}
return sb.toString();
}
/**
* [简要描述]:首字母大写
*
* @author com.zhonglai
* @param str
* @return
*/
public static String getName(String str) {
char ch = str.toCharArray()[0];
ch = (char) ((ch - 97) + 'A');
str = ch + str.substring(1);
return str;
}
}
\ No newline at end of file
... ...