Commit 56a572f3 authored by jichao's avatar jichao

改bug

parent 2348e964
package org.rcisoft;
import org.rcisoft.business.device.assets.service.BusDeviceService;
import org.rcisoft.business.mainte.fault.service.BusDeviceFaultService;
import org.rcisoft.business.manage.dao.BusDevicetpParamRepository;
import org.rcisoft.business.manage.dao.ProjectRepository;
import org.rcisoft.business.manage.entity.BusProject;
import org.rcisoft.business.totaloriginal.service.TotalOriginalService;
import org.rcisoft.core.service.RcRedisService;
import org.rcisoft.mqttclient.MqttClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import tk.mybatis.mapper.entity.Example;
import java.util.List;
@Component
public class ZhnyLineRunner implements CommandLineRunner {
@Autowired
private RcRedisService rcRedisService;
@Autowired
private TotalOriginalService totalOriginalServiceImpl;
@Autowired
private ProjectRepository projectRepository;
@Autowired
private BusDevicetpParamRepository busDevicetpParamRepository;
@Autowired
BusDeviceFaultService busdeviceFaultServiceImpl;
@Autowired
BusDeviceService busDeviceServiceImpl;
@Override
public void run(String... var1) throws Exception{
// 查出所有项目的开关状态,放入redis
// this.searchProject();
System.out.println("MQTT 客户端启动++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
MqttClient client = new MqttClient(rcRedisService,totalOriginalServiceImpl, busDevicetpParamRepository, busdeviceFaultServiceImpl, busDeviceServiceImpl);
// client.start();
}
private void searchProject() {
Example example = new Example(BusProject.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("receiveData", 1);
List<BusProject> list = projectRepository.selectByExample(example);
list.forEach(busProject -> {
rcRedisService.set("proId-" + busProject.getProId(), busProject.getReceiveData().toString());
// list中放入需要接收数据的proId
// rcRedisService.setList("proIds", busProject.getProId());
});
}
}
package org.rcisoft.business.evaluate.project.service.impl; package org.rcisoft.business.evaluate.project.service.impl;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.rcisoft.business.evaluate.project.dao.ProjectEvaluateRepository; import org.rcisoft.business.evaluate.project.dao.ProjectEvaluateRepository;
import org.rcisoft.business.evaluate.project.service.ProjectEvaluateService; import org.rcisoft.business.evaluate.project.service.ProjectEvaluateService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -33,8 +34,13 @@ public class ProjectEvaluateServiceImpl implements ProjectEvaluateService { ...@@ -33,8 +34,13 @@ public class ProjectEvaluateServiceImpl implements ProjectEvaluateService {
*/ */
@Override @Override
public List<Map<String, Object>> listProjectInformationByYear(String year, Integer pageNum, Integer pageSize) { public List<Map<String, Object>> listProjectInformationByYear(String year, Integer pageNum, Integer pageSize) {
Calendar calendar = Calendar.getInstance();
int now = calendar.get(Calendar.YEAR);
// 当前月份 // 当前月份
int month = Calendar.getInstance().get(Calendar.MONTH) + 1; int month = calendar.get(Calendar.MONTH) + 1;
if (now > Integer.parseInt(year)) {
month = 13;
}
BigDecimal zero = new BigDecimal(0); BigDecimal zero = new BigDecimal(0);
Integer start = pageSize * (pageNum - 1); Integer start = pageSize * (pageNum - 1);
Integer end = pageSize * pageNum; Integer end = pageSize * pageNum;
......
package org.rcisoft.business.mainte.adaptive;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import org.json.JSONObject;
public class AddressUtils {
/**
* @param args
*/
public static void main(String[] args) {
AddressUtils addressUtils = new AddressUtils();
String ip = "125.36.118.195";
String address = "";
try {
address = addressUtils.getAddress("ip="+ip, "utf-8");
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(address);
}
/**
* 获取地址
* @param params
* @param encoding
* @return
* @throws Exception
*/
public static String getAddress(String params, String encoding) throws Exception{
String path = "http://ip.taobao.com/service/getIpInfo.php";
String returnStr = getRs(path, params, encoding);
JSONObject json=null;
if(returnStr != null){
json = new JSONObject(returnStr);
if("0".equals(json.get("code").toString())){
StringBuffer buffer = new StringBuffer();
//buffer.append(decodeUnicode(json.optJSONObject("data").getString("country")));//国家
//buffer.append(decodeUnicode(json.optJSONObject("data").getString("area")));//地区
// buffer.append(decodeUnicode(json.optJSONObject("data").getString("region")));//省份
buffer.append(decodeUnicode(json.optJSONObject("data").getString("city")));//市区
// buffer.append(decodeUnicode(json.optJSONObject("data").getString("county")));//地区
// buffer.append(decodeUnicode(json.optJSONObject("data").getString("isp")));//ISP公司
System.out.println(buffer.toString());
return buffer.toString();
}else{
return "获取地址失败";
}
}
return null;
}
/**
* 从url获取结果
* @param path
* @param params
* @param encoding
* @return
*/
public static String getRs(String path, String params, String encoding){
URL url = null;
HttpURLConnection connection = null;
try {
url = new URL(path);
connection = (HttpURLConnection)url.openConnection();// 新建连接实例
connection.setConnectTimeout(2000);// 设置连接超时时间,单位毫�?
connection.setReadTimeout(2000);// 设置读取数据超时时间,单位毫�?
connection.setDoInput(true);// 是否打开输出�? true|false
connection.setDoOutput(true);// 是否打开输入流true|false
connection.setRequestMethod("POST");// 提交方法POST|GET
connection.setUseCaches(false);// 是否缓存true|false
connection.connect();// 打开连接端口
DataOutputStream out = new DataOutputStream(connection.getOutputStream());
out.writeBytes(params);
out.flush();
out.close();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),encoding));
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = reader.readLine())!= null) {
buffer.append(line);
}
reader.close();
return buffer.toString();
} catch (Exception e) {
e.printStackTrace();
}finally{
connection.disconnect();// 关闭连接
}
return null;
}
/**
* 字符转码
* @param theString
* @return
*/
public static String decodeUnicode(String theString){
char aChar;
int len = theString.length();
StringBuffer buffer = new StringBuffer(len);
for (int i = 0; i < len;) {
aChar = theString.charAt(i++);
if(aChar == '\\'){
aChar = theString.charAt(i++);
if(aChar == 'u'){
int val = 0;
for(int j = 0; j < 4; j++){
aChar = theString.charAt(i++);
switch (aChar) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
val = (val << 4) + aChar - '0';
break;
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
val = (val << 4) + 10 + aChar - 'a';
break;
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
val = (val << 4) + 10 + aChar - 'A';
break;
default:
throw new IllegalArgumentException(
"Malformed encoding.");
}
}
buffer.append((char) val);
}else{
if(aChar == 't'){
aChar = '\t';
}
if(aChar == 'r'){
aChar = '\r';
}
if(aChar == 'n'){
aChar = '\n';
}
if(aChar == 'f'){
aChar = '\f';
}
buffer.append(aChar);
}
}else{
buffer.append(aChar);
}
}
return buffer.toString();
}
}
\ No newline at end of file
...@@ -6,13 +6,6 @@ import lombok.extern.slf4j.Slf4j; ...@@ -6,13 +6,6 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.lang3.time.DateUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.rcisoft.business.mainte.adaptive.AddressUtils;
import org.rcisoft.business.mainte.adaptive.dao.BusParamReferRepository; import org.rcisoft.business.mainte.adaptive.dao.BusParamReferRepository;
import org.rcisoft.business.mainte.adaptive.dao.BusTemperatureRepository; import org.rcisoft.business.mainte.adaptive.dao.BusTemperatureRepository;
import org.rcisoft.business.mainte.adaptive.dao.TotalSensorRepository; import org.rcisoft.business.mainte.adaptive.dao.TotalSensorRepository;
...@@ -37,7 +30,6 @@ import javax.servlet.http.HttpServletRequest; ...@@ -37,7 +30,6 @@ import javax.servlet.http.HttpServletRequest;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.net.URLConnection; import java.net.URLConnection;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
...@@ -223,11 +215,9 @@ public class AdaptiveServiceImpl implements AdaptiveService { ...@@ -223,11 +215,9 @@ public class AdaptiveServiceImpl implements AdaptiveService {
resultMap.put("fs", ""); resultMap.put("fs", "");
//获得ip //获得ip
// String ip = IPUtils.getIpFromRequest(request); // String ip = IPUtils.getIpFromRequest(request);
// System.out.println("&&&&&&&&&&&&&&&&&&&&&&&" + ip + "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
try { try {
//获得城市 //获得城市
String cityName = StringUtils.isEmpty(city) ? null : StringUtils.substring(city, 0, city.length() - 1);//AddressUtils.getAddress(ip, "utf-8"); String cityName = StringUtils.isEmpty(city) ? null : StringUtils.substring(city, 0, city.length() - 1);//AddressUtils.getAddress(ip, "utf-8");
System.out.println("&&&&&&&&&&&&&&&&&&&&&&&" + cityName + "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
//根据城市名称查找城市code //根据城市名称查找城市code
//如果城市为空,返回空值 //如果城市为空,返回空值
if (cityName == null) return resultMap; if (cityName == null) return resultMap;
...@@ -314,46 +304,6 @@ public class AdaptiveServiceImpl implements AdaptiveService { ...@@ -314,46 +304,6 @@ public class AdaptiveServiceImpl implements AdaptiveService {
* @return * @return
*/ */
private BusTemperature fromWeatherMi(String code) { private BusTemperature fromWeatherMi(String code) {
// log.info("---------------进入方法---------------");
// BusTemperature busTemp = new BusTemperature();
// CloseableHttpClient httpCilent2 = HttpClients.createDefault();
// RequestConfig requestConfig = RequestConfig.custom()
// .setConnectTimeout(5000) //设置连接超时时间
// .setConnectionRequestTimeout(5000) // 设置请求超时时间
// .setSocketTimeout(5000)
// .setRedirectsEnabled(true)//默认允许自动重定向
// .build();
// HttpGet httpGet2 = new HttpGet(String.format("http://weatherapi.market.xiaomi.com/wtr-v2/temp/realtime?cityId=%s", code));
// httpGet2.setConfig(requestConfig);
// try {
// HttpResponse httpResponse = httpCilent2.execute(httpGet2);
// log.info("---------------获得数据---------------");
// if(httpResponse.getStatusLine().getStatusCode() == 200){
// String srtResult = EntityUtils.toString(httpResponse.getEntity());//获得返回的结果
// System.out.println(srtResult);
// JSONObject jsonResult = JSONObject.parseObject(srtResult);
// JSONObject weather = (JSONObject) jsonResult.get("weatherinfo");
// //温度
// BigDecimal temp = new BigDecimal((String) weather.get("temp"));
// //时间
// Integer hour = Integer.parseInt(((String) weather.get("time")).split(":")[0]);
// Date time = DateUtils.setHours(new Date(), hour);
// time = DateUtils.setMinutes(time, 0);
// time = DateUtils.setSeconds(time, 0);
// //赋值对象
// busTemp.setCode(code);
// busTemp.setTm(time);
// busTemp.setTemperature(temp);
// }
// } catch (IOException e) {
// e.printStackTrace();
// }finally {
// try {
// httpCilent2.close();
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
BusTemperature busTemp = new BusTemperature(); BusTemperature busTemp = new BusTemperature();
//得到小米天气信息 //得到小米天气信息
JSONObject weather = this.getWeatherMessage(code); JSONObject weather = this.getWeatherMessage(code);
...@@ -455,42 +405,4 @@ public class AdaptiveServiceImpl implements AdaptiveService { ...@@ -455,42 +405,4 @@ public class AdaptiveServiceImpl implements AdaptiveService {
return ip; return ip;
} }
public static void main(String[] args) {
String aaa = "abcd";
System.out.println(StringUtils.substring(aaa, 0, aaa.length() - 1));
//
// List<BusTemperature> resultList = new ArrayList<>();
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// String apiUrl = String.format("http://weatherapi.market.xiaomi.com/wtr-v2/temp/realtime?cityId=%s", "101030100");
// URL url = null;
// URLConnection open = null;
// InputStream input = null;
// try {
// //开始请求
// url = new URL(apiUrl);
// open = url.openConnection();
// input = open.getInputStream();
// //变成string
// String result = IOUtils.toString(input);
// System.out.println(result);
// JSONObject jsonResult = JSONObject.parseObject(result);
// JSONObject weather = (JSONObject) jsonResult.get("weatherinfo");
// String time = (String) weather.get("time");
// Integer hour = Integer.parseInt(time.split(":")[0]);
// Date date = DateUtils.setHours(new Date(), hour);
// date = DateUtils.setMinutes(date, 0);
// date = DateUtils.setSeconds(date, 0);
// System.out.println(sdf.format(date));
// System.out.println(weather.get("temp"));
// } catch (Exception e) {
// e.printStackTrace();
// } finally {
// try {
// input.close();
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
}
} }
...@@ -124,12 +124,6 @@ public class OverViewServiceImpl implements OverViewService { ...@@ -124,12 +124,6 @@ public class OverViewServiceImpl implements OverViewService {
} }
} }
public static void main(String[] args){
OverViewServiceImpl o = new OverViewServiceImpl();
Map<String, String> time = o.getTime(2018, null, null, -1, 0, 0);
System.out.println(time.get("year") + "-" + time.get("month") + "-" + time.get("day"));
}
private String getType(String type) { private String getType(String type) {
switch (type) { switch (type) {
case "1": //水 case "1": //水
...@@ -531,7 +525,6 @@ public class OverViewServiceImpl implements OverViewService { ...@@ -531,7 +525,6 @@ public class OverViewServiceImpl implements OverViewService {
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT) @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
@Override @Override
public PersistModel statEnergyMonthly() { public PersistModel statEnergyMonthly() {
System.out.println("---------------------start--------------------");
int result = 0; int result = 0;
//需要更新或保存的list //需要更新或保存的list
List<BusProjectAreaStat> resultList = new ArrayList<BusProjectAreaStat>(); List<BusProjectAreaStat> resultList = new ArrayList<BusProjectAreaStat>();
...@@ -593,7 +586,6 @@ public class OverViewServiceImpl implements OverViewService { ...@@ -593,7 +586,6 @@ public class OverViewServiceImpl implements OverViewService {
} }
result += i; result += i;
} }
System.out.println("---------------------end--------------------");
return new PersistModel(result); return new PersistModel(result);
} }
......
...@@ -31,16 +31,6 @@ public class DecryptDBPasswordUtility { ...@@ -31,16 +31,6 @@ public class DecryptDBPasswordUtility {
private static final String DEFAULT_PRIVATE_KEY_STRING = "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAocbCrurZGbC5GArEHKlAfDSZi7gFBnd4yxOt0rwTqKBFzGyhtQLu5PRKjEiOXVa95aeIIBJ6OhC2f8FjqFUpawIDAQABAkAPejKaBYHrwUqUEEOe8lpnB6lBAsQIUFnQI/vXU4MV+MhIzW0BLVZCiarIQqUXeOhThVWXKFt8GxCykrrUsQ6BAiEA4vMVxEHBovz1di3aozzFvSMdsjTcYRRo82hS5Ru2/OECIQC2fAPoXixVTVY7bNMeuxCP4954ZkXp7fEPDINCjcQDywIgcc8XLkkPcs3Jxk7uYofaXaPbg39wuJpEmzPIxi3k0OECIGubmdpOnin3HuCP/bbjbJLNNoUdGiEmFL5hDI4UdwAdAiEAtcAwbm08bKN7pwwvyqaCBC//VnEWaq39DCzxr+Z2EIk="; private static final String DEFAULT_PRIVATE_KEY_STRING = "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAocbCrurZGbC5GArEHKlAfDSZi7gFBnd4yxOt0rwTqKBFzGyhtQLu5PRKjEiOXVa95aeIIBJ6OhC2f8FjqFUpawIDAQABAkAPejKaBYHrwUqUEEOe8lpnB6lBAsQIUFnQI/vXU4MV+MhIzW0BLVZCiarIQqUXeOhThVWXKFt8GxCykrrUsQ6BAiEA4vMVxEHBovz1di3aozzFvSMdsjTcYRRo82hS5Ru2/OECIQC2fAPoXixVTVY7bNMeuxCP4954ZkXp7fEPDINCjcQDywIgcc8XLkkPcs3Jxk7uYofaXaPbg39wuJpEmzPIxi3k0OECIGubmdpOnin3HuCP/bbjbJLNNoUdGiEmFL5hDI4UdwAdAiEAtcAwbm08bKN7pwwvyqaCBC//VnEWaq39DCzxr+Z2EIk=";
public static final String DEFAULT_PUBLIC_KEY_STRING = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKHGwq7q2RmwuRgKxBypQHw0mYu4BQZ3eMsTrdK8E6igRcxsobUC7uT0SoxIjl1WveWniCASejoQtn/BY6hVKWsCAwEAAQ=="; public static final String DEFAULT_PUBLIC_KEY_STRING = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKHGwq7q2RmwuRgKxBypQHw0mYu4BQZ3eMsTrdK8E6igRcxsobUC7uT0SoxIjl1WveWniCASejoQtn/BY6hVKWsCAwEAAQ==";
public static void main(String[] args) throws Exception {
String password = "root";
String decryptPassword= "P0yOB2GZpjo3ufAFp6K0eiJhoe2HJdenIV7ostZaSklUBpD9DN5Ffm/GZcsjc2GPnzYn2y/oHUKcqrMglgEf9Q==";
// String[] arr = genKeyPair(512);
// System.out.println("privateKey:" + arr[0]);
// System.out.println("publicKey:" + arr[1]);
System.out.println("encrypt-password:" + encrypt(DEFAULT_PRIVATE_KEY_STRING, password));
System.out.println("decrypt-password:" + decrypt(DEFAULT_PUBLIC_KEY_STRING,decryptPassword));
}
public static String decrypt(String cipherText) throws Exception { public static String decrypt(String cipherText) throws Exception {
return decrypt((String) null, cipherText); return decrypt((String) null, cipherText);
} }
......
...@@ -133,7 +133,6 @@ public class QRCodeUtils { ...@@ -133,7 +133,6 @@ public class QRCodeUtils {
String filepathStr=filePath+"/"+fileNameList.get(i)+"."+FORMAT_NAME; String filepathStr=filePath+"/"+fileNameList.get(i)+"."+FORMAT_NAME;
//开始写文件啦 //开始写文件啦
ImageIO.write(QRCodeImage, FORMAT_NAME, new File(filepathStr)); ImageIO.write(QRCodeImage, FORMAT_NAME, new File(filepathStr));
System.out.println("当前输出第"+(i+1)+"个,共计:"+dataList.size()+"个");
} }
return "SUCCESS"; return "SUCCESS";
}else{ }else{
...@@ -190,7 +189,6 @@ public class QRCodeUtils { ...@@ -190,7 +189,6 @@ public class QRCodeUtils {
String filepathStr=filePath+"/"+fileNameList.get(i)+"."+FORMAT_NAME; String filepathStr=filePath+"/"+fileNameList.get(i)+"."+FORMAT_NAME;
//开始写文件啦 //开始写文件啦
ImageIO.write(backGroundImage, FORMAT_NAME, new File(filepathStr)); ImageIO.write(backGroundImage, FORMAT_NAME, new File(filepathStr));
System.out.println("当前输出第"+(i+1)+"个,共计:"+dataList.size()+"个");
} }
return "SUCCESS"; return "SUCCESS";
}else{ }else{
......
...@@ -12,10 +12,7 @@ import java.util.regex.Pattern; ...@@ -12,10 +12,7 @@ import java.util.regex.Pattern;
* *
*/ */
public class RegexValidateUtil { public class RegexValidateUtil {
// public static void main(String[] args) {
// System.out.println(checkEmail("14_8@qw.df"));
// System.out.println(checkMobileNumber("071-3534452"));
// }
/** /**
* 验证邮箱 * 验证邮箱
* @param email * @param email
......
...@@ -41,23 +41,4 @@ public class ZipCompress implements Serializable { ...@@ -41,23 +41,4 @@ public class ZipCompress implements Serializable {
zip.execute(); zip.execute();
} }
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ZipCompress book = new ZipCompress();
try{
book.compressExe(
"/working/virtualDirectory/projectFiles/family/upload/codegenerate/0d76004eccb54b03ab9a07de145f520e/20170706224325/",
"/working/ZipTestCompressing.zip");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} }
package org.rcisoft.mqttclient;
import java.util.concurrent.ScheduledExecutorService;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttTopic;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
/**
* 模拟一个客户端接收消息
* @author rao
*
*/
public class ClientMQTT {
public static final String HOST = "tcp://106.2.4.91:61613";
public static final String TOPIC1 = "UPDATA";
private static final String clientid = "mqttjs_c3567e038c";
private MqttClient client;
private MqttConnectOptions options;
private String userName = "admin"; //非必须
private String passWord = "password"; //非必须
@SuppressWarnings("unused")
private ScheduledExecutorService scheduler;
public void start() {
try {
// host为主机名,clientid即连接MQTT的客户端ID,一般以唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存
client = new MqttClient(HOST, clientid, new MemoryPersistence());
// MQTT的连接设置
options = new MqttConnectOptions();
// 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,设置为true表示每次连接到服务器都以新的身份连接
options.setCleanSession(false);
// 设置连接的用户名
options.setUserName(userName);
// 设置连接的密码
options.setPassword(passWord.toCharArray());
// 设置超时时间 单位为秒
options.setConnectionTimeout(10);
// 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制
options.setKeepAliveInterval(60);
// 设置回调
client.setCallback(new PushCallback());
MqttTopic topic = client.getTopic(TOPIC1);
//setWill方法,如果项目中需要知道客户端是否掉线可以调用该方法。设置最终端口的通知消息
//遗嘱 options.setWill(topic, "close".getBytes(), 2, true);
client.connect(options);
//订阅消息
int[] Qos = {1};
String[] topic1 = {TOPIC1};
client.subscribe(topic1, Qos);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws MqttException {
ClientMQTT client = new ClientMQTT();
client.start();
}
}
package org.rcisoft.mqttclient;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.fusesource.hawtbuf.Buffer;
import org.fusesource.hawtbuf.UTF8Buffer;
import org.fusesource.hawtdispatch.Dispatch;
import org.fusesource.mqtt.client.Callback;
import org.fusesource.mqtt.client.CallbackConnection;
import org.fusesource.mqtt.client.Listener;
import org.fusesource.mqtt.client.MQTT;
import org.fusesource.mqtt.client.QoS;
import org.fusesource.mqtt.client.Topic;
import org.fusesource.mqtt.client.Tracer;
import org.fusesource.mqtt.codec.MQTTFrame;
import org.rcisoft.business.device.assets.service.BusDeviceService;
import org.rcisoft.business.mainte.fault.entity.BusDeviceFault;
import org.rcisoft.business.mainte.fault.service.BusDeviceFaultService;
import org.rcisoft.business.manage.dao.BusDevicetpParamRepository;
import org.rcisoft.business.totaloriginal.entity.TotalOriginal;
import org.rcisoft.business.totaloriginal.entity.TotalSensor;
import org.rcisoft.business.totaloriginal.service.TotalOriginalService;
import org.rcisoft.core.service.RcRedisService;
import org.rcisoft.core.util.DateUtil;
import org.rcisoft.core.util.ZhnyUtil;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class MqttClient {
RcRedisService rcRedisService;
TotalOriginalService totalService;
BusDevicetpParamRepository busDevicetpParamRepository;
BusDeviceFaultService busdeviceFaultServiceImpl;
BusDeviceService busDeviceServiceImpl;
public MqttClient(RcRedisService redis, TotalOriginalService ts, BusDevicetpParamRepository br, BusDeviceFaultService bfs, BusDeviceService bds){
this.rcRedisService = redis;
this.totalService = ts;
this.busDevicetpParamRepository = br;
this.busdeviceFaultServiceImpl = bfs;
this.busDeviceServiceImpl = bds;
}
public void HandleReceive(String content){
Map<String,Object> referMap = null;
String devStr = "";
try {
JSONObject jb = JSONArray.parseObject(content.substring(1,content.length()-1));
String jwnum = jb.getString("PHONE");//网关编号
//根据网关(proId)判断,如果不需要接收数据,直接退出
// Integer receiveData = totalService.findReceiveData(jwnum);
String receiveData = rcRedisService.get("proId-" + jwnum);
// 如果没有接收这个phone的数据
if (receiveData == null) {
return;
}
if (receiveData.equals("0")) {
System.out.println("--------------------------------------------------------当前项目不需要存储数据------------------------------------------------------------------");
return;
}
String time = jb.getString("TIME");//时间
JSONObject jbody = jb.getJSONObject("body");//数据体
//String time = DateUtil.getSimepleDate("yyyyMMddHHmmss",new Date());
if(DateUtil.getParseDate("yyyyMMddhhmmss",time)!=null){//时间格式正常
String minute = time.substring(10,12);
String sec = time.substring(12,14);
/* 10秒级的数据,存储缓存
* 缓存中始终保持最新两条网关数据
* 用作拓扑图点击设备查看实时参数及10秒级的能耗
*/
if(Integer.parseInt(sec)%10==0){
// 放入上一个10分钟的数据
rcRedisService.set(jwnum + "-old", rcRedisService.get(jwnum));
rcRedisService.set(jwnum, jbody.toJSONString());
//rcRedisService.set("old","old"+new Date() + rcRedisService.get("new"));
//rcRedisService.set("new","new"+new Date() + content);
}
System.out.println("++++++++++++++++++++++++++++++++++"+minute+"-----"+sec);
if(Integer.parseInt(minute)%10==0 && sec.equalsIgnoreCase("00")){//10分钟级的数据,进行存储
Map<String,Object> map = new HashMap<>();
map.put("pro_id",jwnum);
referMap = totalService.queryBusParamRefer(map);
devStr = totalService.queryDevByPro(jwnum);
List<String> list = new ArrayList<String>();
List<TotalOriginal> originalList = new ArrayList<>();
List<TotalSensor> sensorList = new ArrayList<>();
//遍历数据体内对象
for (Map.Entry<String, Object> entry : jbody.entrySet()) {
String key = entry.getKey();
JSONObject body = ((JSONObject)entry.getValue()).getJSONObject("REG_VAL");
String dev_num = jwnum+"_"+key;
//(【已配置的表具】/【设备】)
if(referMap.get(dev_num)!=null || devStr.contains(dev_num)){
TotalOriginal original = new TotalOriginal();
original.setProId(jwnum);
original.setTm(DateUtil.getParseDate("yyyyMMddHHmmss",time));
original.setDevNum(dev_num);
original.setOriginalStr(body.toJSONString());
// --------------判断是否有参数故障-----------------
this.deviceFault(body, dev_num, jwnum);
// -----------------------------------------------
/**
* 摘选水电气能耗,对于设备来说,都为null
*/
if(devStr.contains(dev_num)){//设备
original.setElecV(null);
original.setWaterV(null);
original.setGasV(null);
}else{//表具
String own_param = referMap.get(dev_num).toString().split(",")[0];
String other_param = referMap.get(dev_num).toString().split(",")[1];
if(own_param.equalsIgnoreCase("power")){
original.setElecV(ZhnyUtil.parseFloat(body.get(other_param)));
original.setWaterV(0f);
original.setGasV(0f);
}else if(own_param.equalsIgnoreCase("water")){
original.setElecV(0f);
original.setWaterV(ZhnyUtil.parseFloat(body.get(other_param)));
original.setGasV(0f);
}else if(own_param.equalsIgnoreCase("gas")){
original.setElecV(0f);
original.setWaterV(0f);
original.setGasV(ZhnyUtil.parseFloat(body.get(other_param)));
}
}
// int i=4;
// for (Map.Entry<String, Object> bt : body.entrySet()) {
// if(i==4){ original.setP4(bt.getKey());original.setP4V(ZhnyUtil.parseFloat(bt.getValue())); }
// if(i==5){ original.setP5(bt.getKey());original.setP5V(ZhnyUtil.parseFloat(bt.getValue())); }
// if(i==6){ original.setP6(bt.getKey());original.setP6V(ZhnyUtil.parseFloat(bt.getValue())); }
// if(i==7){ original.setP7(bt.getKey());original.setP7V(ZhnyUtil.parseFloat(bt.getValue())); }
// if(i==8){ original.setP8(bt.getKey());original.setP8V(ZhnyUtil.parseFloat(bt.getValue())); }
// if(i==9){ original.setP9(bt.getKey());original.setP9V(ZhnyUtil.parseFloat(bt.getValue())); }
// if(i==10){ original.setP10(bt.getKey());original.setP10V(ZhnyUtil.parseFloat(bt.getValue())); }
// if(i==11){ original.setP11(bt.getKey());original.setP11V(ZhnyUtil.parseFloat(bt.getValue())); }
// if(i==12){ original.setP12(bt.getKey());original.setP12V(ZhnyUtil.parseFloat(bt.getValue())); }
// if(i==13){ original.setP13(bt.getKey());original.setP13V(ZhnyUtil.parseFloat(bt.getValue())); }
// if(i==14){ original.setP14(bt.getKey());original.setP14V(ZhnyUtil.parseFloat(bt.getValue())); }
// if(i==15){ original.setP15(bt.getKey());original.setP15V(ZhnyUtil.parseFloat(bt.getValue())); }
// if(i==16){ original.setP16(bt.getKey());original.setP16V(ZhnyUtil.parseFloat(bt.getValue())); }
// if(i==17){ original.setP17(bt.getKey());original.setP17V(ZhnyUtil.parseFloat(bt.getValue())); }
// if(i==18){ original.setP18(bt.getKey());original.setP18V(ZhnyUtil.parseFloat(bt.getValue())); }
// if(i==19){ original.setP19(bt.getKey());original.setP19V(ZhnyUtil.parseFloat(bt.getValue())); }
// if(i==20){ original.setP20(bt.getKey());original.setP20V(ZhnyUtil.parseFloat(bt.getValue())); }
// i++;
// }
originalList.add(original);
}else{//【传感器】
TotalSensor sensor = new TotalSensor();
sensor.setTm(DateUtil.getParseDate("yyyyMMddHHmmss",time));
sensor.setSensorJson(body.toJSONString());
sensor.setProId(jwnum);
sensorList.add(sensor);
}
}
for(TotalOriginal t : originalList){
totalService.save(t);
}
for(TotalSensor s : sensorList){
totalService.saveSensor(s);
}
}
}
//System.out.println(jb);
}catch(Exception e){
e.printStackTrace();
}
}
public MqttClient(){};
public boolean isReceive(String content){
try {
if(!content.contains("jwnum")){
return false;
}
JSONObject jsonStr= JSONObject.parseObject(content);
return true;
} catch (Exception e) {
return false;
}
}
public void start(){
try {
MQTT mqtt=new MQTT();
//MQTT设置说明
mqtt.setHost("tcp://172.21.0.6:1883");
// mqtt.setHost("tcp://139.199.98.105:1883");
mqtt.setClientId("876543210"); //用于设置客户端会话的ID。在setCleanSession(false);被调用时,MQTT服务器利用该ID获得相应的会话。此ID应少于23个字符,默认根据本机地址、端口和时间自动生成
mqtt.setCleanSession(false); //若设为false,MQTT服务器将持久化客户端会话的主体订阅和ACK位置,默认为true
mqtt.setKeepAlive((short) 60);//定义客户端传来消息的最大时间间隔秒数,服务器可以据此判断与客户端的连接是否已经断开,从而避免TCP/IP超时的长时间等待
mqtt.setUserName("admin");//服务器认证用户名
mqtt.setPassword("public");//服务器认证密码
mqtt.setWillTopic("willTopic");//设置“遗嘱”消息的话题,若客户端与服务器之间的连接意外中断,服务器将发布客户端的“遗嘱”消息
mqtt.setWillMessage("willMessage");//设置“遗嘱”消息的内容,默认是长度为零的消息
mqtt.setWillQos(QoS.AT_LEAST_ONCE);//设置“遗嘱”消息的QoS,默认为QoS.ATMOSTONCE
mqtt.setWillRetain(true);//若想要在发布“遗嘱”消息时拥有retain选项,则为true
mqtt.setVersion("3.1.1");
//失败重连接设置说明
mqtt.setConnectAttemptsMax(10L);//客户端首次连接到服务器时,连接的最大重试次数,超出该次数客户端将返回错误。-1意为无重试上限,默认为-1
mqtt.setReconnectAttemptsMax(3L);//客户端已经连接到服务器,但因某种原因连接断开时的最大重试次数,超出该次数客户端将返回错误。-1意为无重试上限,默认为-1
mqtt.setReconnectDelay(10L);//首次重连接间隔毫秒数,默认为10ms
mqtt.setReconnectDelayMax(30000L);//重连接间隔毫秒数,默认为30000ms
mqtt.setReconnectBackOffMultiplier(2);//设置重连接指数回归。设置为1则停用指数回归,默认为2
//Socket设置说明
mqtt.setReceiveBufferSize(65536);//设置socket接收缓冲区大小,默认为65536(64k)
mqtt.setSendBufferSize(65536);//设置socket发送缓冲区大小,默认为65536(64k)
mqtt.setTrafficClass(8);//设置发送数据包头的流量类型或服务类型字段,默认为8,意为吞吐量最大化传输
//带宽限制设置说明
mqtt.setMaxReadRate(0);//设置连接的最大接收速率,单位为bytes/s。默认为0,即无限制
mqtt.setMaxWriteRate(0);//设置连接的最大发送速率,单位为bytes/s。默认为0,即无限制
//选择消息分发队列
mqtt.setDispatchQueue(Dispatch.createQueue("UPDATA"));//若没有调用方法setDispatchQueue,客户端将为连接新建一个队列。如果想实现多个连接使用公用的队列,显式地指定队列是一个非常方便的实现方法
//设置跟踪器
mqtt.setTracer(new Tracer(){
@Override
public void onReceive(MQTTFrame frame) {
System.out.println("recv: "+frame);
}
@Override
public void onSend(MQTTFrame frame) {
System.out.println("send: "+frame);
}
@Override
public void debug(String message, Object... args) {
System.out.println(String.format("debug: "+message, args));
}
});
//使用回调式API
final CallbackConnection callbackConnection=mqtt.callbackConnection();
//连接监听
callbackConnection.listener(new Listener() {
//接收订阅话题发布的消息
@Override
public void onPublish(UTF8Buffer topic, Buffer payload, Runnable onComplete) {
// System.out.println("=============receive msg================"+new String(payload.toByteArray()));
String content = new String(payload.toByteArray());
HandleReceive(content);
onComplete.run();
}
//连接失败
@Override
public void onFailure(Throwable value) {
System.out.println("===========connect failure===========");
callbackConnection.disconnect(null);
}
//连接断开
@Override
public void onDisconnected() {
System.out.println("====mqtt disconnected=====");
}
//连接成功
@Override
public void onConnected() {
System.out.println("====mqtt connected=====");
}
});
//连接
callbackConnection.connect(new Callback<Void>() {
//连接失败
public void onFailure(Throwable value) {
System.out.println("============连接失败:"+value.getLocalizedMessage()+"============");
}
// 连接成功
public void onSuccess(Void v) {
//订阅主题
Topic[] topics = {new Topic("UPDATA", QoS.EXACTLY_ONCE)};
callbackConnection.subscribe(topics, new Callback<byte[]>() {
//订阅主题成功
public void onSuccess(byte[] qoses) {
System.out.println("========订阅成功=======");
}
//订阅主题失败
public void onFailure(Throwable value) {
System.out.println("========订阅失败=======");
callbackConnection.disconnect(null);
}
});
//发布消息
/*callbackConnection.publish("UPDATA", ("Hello ").getBytes(), QoS.AT_LEAST_ONCE, true, new Callback<Void>() {
public void onSuccess(Void v) {
System.out.println("===========消息发布成功============");
}
public void onFailure(Throwable value) {
System.out.println("========消息发布失败=======");
callbackConnection.disconnect(null);
}
});*/
}
});
// while(true)
// {
//
// }
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 设备参数故障
* @param json
* @param devNum
* @param proId
* @return
*/
private Integer deviceFault(JSONObject json, String devNum, String proId) throws ParseException {
// 当前年月日
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String format = sdf.format(date);
Date now = sdf.parse(format);
// 待保存的bus_device_fault
List<BusDeviceFault> saveList = new ArrayList<>();
// 统计该设备下的错误参数数量
int[] faultCount = {0};
// 根据设备编号查询该设备下参数模板的判断条件
List<Map<String, Object>> faultList = busDevicetpParamRepository.selectFault(devNum);
// 如果不为空,循环
if (faultList != null) {
faultList.forEach(map -> {
// 是否需要保存的标志
boolean saveFlag = false;
String flag = (String) map.get("flag");
// 如果flag不为空,并且flag=1时,表明该参数需要判断故障状态
if (StringUtils.isNotEmpty(flag) && flag.equals("1")) {
// 取得参数code
String param = (String) map.get("param");
// 根据参数code去json字符串中查找对应的值
BigDecimal paramValue = (BigDecimal) json.get(param);
// 如果值不为空
if (paramValue != null) {
// 取得判断条件,1:小于 2:大于 3:区间
String symbol = (String) map.get("symbol");
// 取得最大值,最小值
BigDecimal min = (BigDecimal) map.get("min");
BigDecimal max = (BigDecimal) map.get("max");
// 小于:symbol = 1
if (symbol.equals("1")) {
// 如果值小于最小值,表示故障
if (paramValue.compareTo(min) < 0){
saveFlag = true;
faultCount[0]++;
}
} else if (symbol.equals("2")) {// 大于
// 如果大于最大值,表示故障
if (paramValue.compareTo(max) > 0) {
saveFlag = true;
faultCount[0]++;
}
} else if (symbol.equals("3")) {//区间
// 如果小于最小值或者大于最大值,表示故障
if (paramValue.compareTo(min) < 0 || paramValue.compareTo(max) > 0) {
saveFlag = true;
faultCount[0]++;
}
}
// 如果需要保存,存进待保存的list中
if (saveFlag) {
// 故障内容
String content = (String) map.get("content");
BusDeviceFault busDeviceFault = new BusDeviceFault(null, devNum, now, param, content, proId);
saveList.add(busDeviceFault);
}
}
}
});
}
// 保存bus_device_fault,bus_device(设备的故障参数数量)
busdeviceFaultServiceImpl.saveFault(saveList);
Integer update = busDeviceServiceImpl.update(devNum, faultCount[0]);
return update;
}
}
package org.rcisoft.mqttclient;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttMessage;
/**
* 发布消息的回调类
*
* 必须实现MqttCallback的接口并实现对应的相关接口方法CallBack 类将实现 MqttCallBack。
* 每个客户机标识都需要一个回调实例。在此示例中,构造函数传递客户机标识以另存为实例数据。
* 在回调中,将它用来标识已经启动了该回调的哪个实例。
* 必须在回调类中实现三个方法:
*
* public void messageArrived(MqttTopic topic, MqttMessage message)接收已经预订的发布。
*
* public void connectionLost(Throwable cause)在断开连接时调用。
*
* public void deliveryComplete(MqttDeliveryToken token))
* 接收到已经发布的 QoS 1 或 QoS 2 消息的传递令牌时调用。
* 由 MqttClient.connect 激活此回调。
*
*/
public class PushCallback implements MqttCallback {
public void connectionLost(Throwable cause) {
//mqtt.connect();
// 连接丢失后,一般在这里面进行重连
System.out.println("连接断开,可以做重连");
}
public void deliveryComplete(IMqttDeliveryToken token) {
System.out.println("deliveryComplete---------" + token.isComplete());
}
public void messageArrived(String topic, MqttMessage message) throws Exception {
// subscribe后得到的消息会执行到这里面
System.out.println("接收消息主题 : " + topic);
System.out.println("接收消息Qos : " + message.getQos());
System.out.println("接收消息内容 : " + new String(message.getPayload()));
}
}
package org.rcisoft.mqttclient;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.rcisoft.business.totaloriginal.entity.TotalOriginal;
import org.rcisoft.business.totaloriginal.entity.TotalSensor;
import org.rcisoft.business.totaloriginal.service.TotalOriginalService;
import org.rcisoft.core.service.RcRedisService;
import org.rcisoft.core.util.DateUtil;
import org.rcisoft.core.util.ZhnyUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
@Component
public class ReceiveDataHandle {
@Autowired
private RcRedisService rcRedisService;
@Autowired
private TotalOriginalService totalOriginalServiceImpl;
/*public void HandleReceive(String content){
Map<String,Object> referMap = totalOriginalServiceImpl.queryBusParamRefer(null);
String devStr = "";
try {
JSONObject jb = JSONArray.parseObject(content.substring(1,content.length()-1));
String jwnum = jb.getString("PHONE");//网关编号
devStr = totalOriginalServiceImpl.queryDevByPro(jwnum);
//String time = jb.getString("TIME");//时间
String time = DateUtil.getSimepleDate("yyyyMMddHHmmss",new Date());
if(DateUtil.getParseDate("yyyyMMddhhmmss",time)!=null){//时间格式正常
String minute = time.substring(10,12);
String sec = time.substring(12,14);
*//* 10秒级的数据,存储缓存
* 缓存中始终保持最新两条网关数据
* 用作拓扑图点击设备查看实时参数及10秒级的能耗
*//*
if(Integer.parseInt(sec)%10==0){
//rcRedisService.set("old","old"+new Date() + rcRedisService.get("new"));
//rcRedisService.set("new","new"+new Date() + content);
}
System.out.println("++++++++++++++++++++++++++++++++++"+minute+"-----"+sec);
if(Integer.parseInt(minute)%2==0 && sec.equalsIgnoreCase("00")){//10分钟级的数据,进行存储
List<String> list = new ArrayList<String>();
JSONObject jbody = jb.getJSONObject("body");//数据体
List<TotalOriginal> originalList = new ArrayList<>();
List<TotalSensor> sensorList = new ArrayList<>();
//遍历数据体内对象
for (Map.Entry<String, Object> entry : jbody.entrySet()) {
String key = entry.getKey();
JSONObject body = (JSONObject)entry.getValue();
String dev_num = jwnum+"_"+key;
//(【已配置的表具】/【设备】)
if(referMap.get(dev_num)!=null || devStr.contains(dev_num)){
TotalOriginal original = new TotalOriginal();
original.setProId(jwnum);
original.setTm(DateUtil.getParseDate("yyyy-MM-dd HH:mm:ss",time));
original.setDevNum(dev_num);
*//**
* 摘选水电气能耗,对于设备来说,都为null
*//*
if(devStr.contains(dev_num)){//设备
original.setElecV(null);
original.setWaterV(null);
original.setGasV(null);
}else{//表具
String own_param = referMap.get(dev_num).toString().split(",")[0];
String other_param = referMap.get(dev_num).toString().split(",")[1];
if(own_param.equalsIgnoreCase("power")){
original.setElecV(ZhnyUtil.parseFloat(body.get(other_param)));
original.setWaterV(0f);
original.setGasV(0f);
}else if(own_param.equalsIgnoreCase("water")){
original.setElecV(0f);
original.setWaterV(ZhnyUtil.parseFloat(body.get(other_param)));
original.setGasV(0f);
}else if(own_param.equalsIgnoreCase("gas")){
original.setElecV(0f);
original.setWaterV(0f);
original.setGasV(ZhnyUtil.parseFloat(body.get(other_param)));
}
}
int i=4;
for (Map.Entry<String, Object> bt : body.entrySet()) {
if(i==4){ original.setP4(bt.getKey());original.setP4V(ZhnyUtil.parseFloat(bt.getValue())); }
if(i==5){ original.setP5(bt.getKey());original.setP5V(ZhnyUtil.parseFloat(bt.getValue())); }
if(i==6){ original.setP6(bt.getKey());original.setP6V(ZhnyUtil.parseFloat(bt.getValue())); }
if(i==7){ original.setP7(bt.getKey());original.setP7V(ZhnyUtil.parseFloat(bt.getValue())); }
if(i==8){ original.setP8(bt.getKey());original.setP8V(ZhnyUtil.parseFloat(bt.getValue())); }
if(i==9){ original.setP9(bt.getKey());original.setP9V(ZhnyUtil.parseFloat(bt.getValue())); }
if(i==10){ original.setP10(bt.getKey());original.setP10V(ZhnyUtil.parseFloat(bt.getValue())); }
if(i==11){ original.setP11(bt.getKey());original.setP11V(ZhnyUtil.parseFloat(bt.getValue())); }
if(i==12){ original.setP12(bt.getKey());original.setP12V(ZhnyUtil.parseFloat(bt.getValue())); }
if(i==13){ original.setP13(bt.getKey());original.setP13V(ZhnyUtil.parseFloat(bt.getValue())); }
if(i==14){ original.setP14(bt.getKey());original.setP14V(ZhnyUtil.parseFloat(bt.getValue())); }
if(i==15){ original.setP15(bt.getKey());original.setP15V(ZhnyUtil.parseFloat(bt.getValue())); }
if(i==16){ original.setP16(bt.getKey());original.setP16V(ZhnyUtil.parseFloat(bt.getValue())); }
if(i==17){ original.setP17(bt.getKey());original.setP17V(ZhnyUtil.parseFloat(bt.getValue())); }
if(i==18){ original.setP18(bt.getKey());original.setP18V(ZhnyUtil.parseFloat(bt.getValue())); }
if(i==19){ original.setP19(bt.getKey());original.setP19V(ZhnyUtil.parseFloat(bt.getValue())); }
if(i==20){ original.setP20(bt.getKey());original.setP20V(ZhnyUtil.parseFloat(bt.getValue())); }
i++;
}
originalList.add(original);
}else{//【传感器】
TotalSensor sensor = new TotalSensor();
sensor.setTm(DateUtil.getParseDate("yyyy-MM-dd HH:mm:ss",time));
sensor.setSensorJson(body.toJSONString());
sensorList.add(sensor);
}
for(TotalOriginal t : originalList){
totalOriginalServiceImpl.save(t);
}
for(TotalSensor s : sensorList){
totalOriginalServiceImpl.saveSensor(s);
}
}
}
}
//System.out.println(jb);
}catch(Exception e){
e.printStackTrace();
}
}*/
}
package org.rcisoft.mqttclient;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.rcisoft.business.totaloriginal.entity.TotalOriginal;
import org.rcisoft.core.util.DateUtil;
import org.rcisoft.core.util.ZhnyUtil;
import java.lang.*;
import java.text.SimpleDateFormat;
import java.util.*;
public class Test {
public static void main(String[] args) throws Exception{
/* SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(simple.format(new Date()).substring(0,4));
System.out.println(ZhnyUtil.isNumeric("3.6"));
String param = "sensor_01";
System.out.println(param.substring(param.indexOf("_"),param.length()));*/
System.out.println(UUID.randomUUID().toString().replace("-",""));
System.out.println("2018-06-01 10:20:00".substring(11));
}
}
package org.rcisoft.test;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.junit.runner.RunWith;
import org.rcisoft.business.manage.dao.SysCityRepository;
import org.rcisoft.business.manage.entity.SysCity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
import java.io.*;
import java.util.List;
/**
* Created by JiChao on 2018/5/7.
*/
@SpringBootTest
@RunWith(SpringRunner.class)
public class CityCodeTest {
@Autowired
private SysCityRepository sysCityRepository;
@org.junit.Test
@Transactional
// @Rollback(false)
public void importCityCode() throws IOException {
int[] result = {0};
System.out.println("-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*");
//读取txt文件
String sb = FileUtils.readFileToString(new File("C:\\Users\\JiChao\\Desktop\\城市代码.txt"), "GB2312");
//json对象
JSONArray codeJsonArray = JSON.parseArray(sb);
//所有城市
List<SysCity> cityList = sysCityRepository.selectAll();
cityList.forEach(sysCity -> {
String cityName = sysCity.getName();
codeJsonArray.forEach(object -> {
JSONObject codeJsonObject = (JSONObject) object;
String codeName = (String) codeJsonObject.get("townName");
if (StringUtils.equals(cityName, codeName)) {
String code = (String) codeJsonObject.get("townID");
sysCity.setCode(code);
Example e = new Example(SysCity.class);
e.createCriteria().andEqualTo("id", sysCity.getId());
result[0] += sysCityRepository.updateByExample(sysCity, e);
return;
}
});
});
System.out.println("最终更新结果:" + result[0] + "条记录");
}
}
...@@ -61,8 +61,6 @@ public class WechatRedirectController { ...@@ -61,8 +61,6 @@ public class WechatRedirectController {
try { try {
WxMpUser wxUser = this.service.oauth2UserInfo(code); WxMpUser wxUser = this.service.oauth2UserInfo(code);
System.out.println("微信返回的code: " + code);
System.out.println("WxPortalController授权完毕后获取到的OpenId是:" + wxUser.getOpenId());
return "redirect:http://www.renew-cloud.com/wechat/login.html?openId=" + wxUser.getOpenId(); return "redirect:http://www.renew-cloud.com/wechat/login.html?openId=" + wxUser.getOpenId();
} catch (Exception exception) { } catch (Exception exception) {
exception.printStackTrace(); exception.printStackTrace();
......
...@@ -47,7 +47,6 @@ public class WxPortalService extends WxMpServiceImpl { ...@@ -47,7 +47,6 @@ public class WxPortalService extends WxMpServiceImpl {
} }
public WxMpOAuth2AccessToken oauth2AccessToken(String code) throws WxErrorException { public WxMpOAuth2AccessToken oauth2AccessToken(String code) throws WxErrorException {
WxMpOAuth2AccessToken token = this.oauth2getAccessToken(code); WxMpOAuth2AccessToken token = this.oauth2getAccessToken(code);
System.out.println("token:" + token.getAccessToken() + "; code: " + code);
return token; return token;
} }
public WxMpUser oauth2UserInfo(String code) throws WxErrorException { public WxMpUser oauth2UserInfo(String code) throws WxErrorException {
......
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