Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Z
zhny
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王夏晖
zhny
Commits
56a572f3
Commit
56a572f3
authored
Jan 07, 2019
by
jichao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
改bug
parent
2348e964
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
8 additions
and
1226 deletions
+8
-1226
ZhnyLineRunner.java
src/main/java/org/rcisoft/ZhnyLineRunner.java
+0
-56
ProjectEvaluateServiceImpl.java
...uate/project/service/impl/ProjectEvaluateServiceImpl.java
+7
-1
AddressUtils.java
...va/org/rcisoft/business/mainte/adaptive/AddressUtils.java
+0
-294
AdaptiveServiceImpl.java
...ess/mainte/adaptive/service/impl/AdaptiveServiceImpl.java
+0
-88
OverViewServiceImpl.java
...t/business/overview/service/impl/OverViewServiceImpl.java
+0
-8
DecryptDBPasswordUtility.java
.../java/org/rcisoft/core/util/DecryptDBPasswordUtility.java
+0
-10
QRCodeUtils.java
src/main/java/org/rcisoft/core/util/QRCodeUtils.java
+0
-2
RegexValidateUtil.java
src/main/java/org/rcisoft/core/util/RegexValidateUtil.java
+1
-4
ZipCompress.java
src/main/java/org/rcisoft/core/util/ZipCompress.java
+0
-19
ClientMQTT.java
src/main/java/org/rcisoft/mqttclient/ClientMQTT.java
+0
-63
MqttClient.java
src/main/java/org/rcisoft/mqttclient/MqttClient.java
+0
-419
PushCallback.java
src/main/java/org/rcisoft/mqttclient/PushCallback.java
+0
-42
ReceiveDataHandle.java
src/main/java/org/rcisoft/mqttclient/ReceiveDataHandle.java
+0
-130
Test.java
src/main/java/org/rcisoft/mqttclient/Test.java
+0
-26
CityCodeTest.java
src/main/java/org/rcisoft/test/CityCodeTest.java
+0
-61
WechatRedirectController.java
...ain/java/org/rcisoft/wechat/WechatRedirectController.java
+0
-2
WxPortalService.java
...main/java/org/rcisoft/wechat/service/WxPortalService.java
+0
-1
No files found.
src/main/java/org/rcisoft/ZhnyLineRunner.java
deleted
100644 → 0
View file @
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());
});
}
}
src/main/java/org/rcisoft/business/evaluate/project/service/impl/ProjectEvaluateServiceImpl.java
View file @
56a572f3
package
org
.
rcisoft
.
business
.
evaluate
.
project
.
service
.
impl
;
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.service.ProjectEvaluateService
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -33,8 +34,13 @@ public class ProjectEvaluateServiceImpl implements ProjectEvaluateService {
*/
@Override
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
);
Integer
start
=
pageSize
*
(
pageNum
-
1
);
Integer
end
=
pageSize
*
pageNum
;
...
...
src/main/java/org/rcisoft/business/mainte/adaptive/AddressUtils.java
deleted
100644 → 0
View file @
2348e964
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
src/main/java/org/rcisoft/business/mainte/adaptive/service/impl/AdaptiveServiceImpl.java
View file @
56a572f3
...
...
@@ -6,13 +6,6 @@ import lombok.extern.slf4j.Slf4j;
import
org.apache.commons.io.IOUtils
;
import
org.apache.commons.lang3.StringUtils
;
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.BusTemperatureRepository
;
import
org.rcisoft.business.mainte.adaptive.dao.TotalSensorRepository
;
...
...
@@ -37,7 +30,6 @@ import javax.servlet.http.HttpServletRequest;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.math.BigDecimal
;
import
java.net.HttpURLConnection
;
import
java.net.URL
;
import
java.net.URLConnection
;
import
java.text.SimpleDateFormat
;
...
...
@@ -223,11 +215,9 @@ public class AdaptiveServiceImpl implements AdaptiveService {
resultMap
.
put
(
"fs"
,
""
);
//获得ip
// String ip = IPUtils.getIpFromRequest(request);
// System.out.println("&&&&&&&&&&&&&&&&&&&&&&&" + ip + "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
try
{
//获得城市
String
cityName
=
StringUtils
.
isEmpty
(
city
)
?
null
:
StringUtils
.
substring
(
city
,
0
,
city
.
length
()
-
1
);
//AddressUtils.getAddress(ip, "utf-8");
System
.
out
.
println
(
"&&&&&&&&&&&&&&&&&&&&&&&"
+
cityName
+
"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"
);
//根据城市名称查找城市code
//如果城市为空,返回空值
if
(
cityName
==
null
)
return
resultMap
;
...
...
@@ -314,46 +304,6 @@ public class AdaptiveServiceImpl implements AdaptiveService {
* @return
*/
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
();
//得到小米天气信息
JSONObject
weather
=
this
.
getWeatherMessage
(
code
);
...
...
@@ -455,42 +405,4 @@ public class AdaptiveServiceImpl implements AdaptiveService {
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();
// }
// }
}
}
src/main/java/org/rcisoft/business/overview/service/impl/OverViewServiceImpl.java
View file @
56a572f3
...
...
@@ -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
)
{
switch
(
type
)
{
case
"1"
:
//水
...
...
@@ -531,7 +525,6 @@ public class OverViewServiceImpl implements OverViewService {
@Transactional
(
propagation
=
Propagation
.
REQUIRED
,
isolation
=
Isolation
.
DEFAULT
)
@Override
public
PersistModel
statEnergyMonthly
()
{
System
.
out
.
println
(
"---------------------start--------------------"
);
int
result
=
0
;
//需要更新或保存的list
List
<
BusProjectAreaStat
>
resultList
=
new
ArrayList
<
BusProjectAreaStat
>();
...
...
@@ -593,7 +586,6 @@ public class OverViewServiceImpl implements OverViewService {
}
result
+=
i
;
}
System
.
out
.
println
(
"---------------------end--------------------"
);
return
new
PersistModel
(
result
);
}
...
...
src/main/java/org/rcisoft/core/util/DecryptDBPasswordUtility.java
View file @
56a572f3
...
...
@@ -31,16 +31,6 @@ public class DecryptDBPasswordUtility {
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
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
{
return
decrypt
((
String
)
null
,
cipherText
);
}
...
...
src/main/java/org/rcisoft/core/util/QRCodeUtils.java
View file @
56a572f3
...
...
@@ -133,7 +133,6 @@ public class QRCodeUtils {
String
filepathStr
=
filePath
+
"/"
+
fileNameList
.
get
(
i
)+
"."
+
FORMAT_NAME
;
//开始写文件啦
ImageIO
.
write
(
QRCodeImage
,
FORMAT_NAME
,
new
File
(
filepathStr
));
System
.
out
.
println
(
"当前输出第"
+(
i
+
1
)+
"个,共计:"
+
dataList
.
size
()+
"个"
);
}
return
"SUCCESS"
;
}
else
{
...
...
@@ -190,7 +189,6 @@ public class QRCodeUtils {
String
filepathStr
=
filePath
+
"/"
+
fileNameList
.
get
(
i
)+
"."
+
FORMAT_NAME
;
//开始写文件啦
ImageIO
.
write
(
backGroundImage
,
FORMAT_NAME
,
new
File
(
filepathStr
));
System
.
out
.
println
(
"当前输出第"
+(
i
+
1
)+
"个,共计:"
+
dataList
.
size
()+
"个"
);
}
return
"SUCCESS"
;
}
else
{
...
...
src/main/java/org/rcisoft/core/util/RegexValidateUtil.java
View file @
56a572f3
...
...
@@ -12,10 +12,7 @@ import java.util.regex.Pattern;
*
*/
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
...
...
src/main/java/org/rcisoft/core/util/ZipCompress.java
View file @
56a572f3
...
...
@@ -41,23 +41,4 @@ public class ZipCompress implements Serializable {
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
();
}
}
}
src/main/java/org/rcisoft/mqttclient/ClientMQTT.java
deleted
100644 → 0
View file @
2348e964
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
();
}
}
src/main/java/org/rcisoft/mqttclient/MqttClient.java
deleted
100644 → 0
View file @
2348e964
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
(
0
f
);
original
.
setGasV
(
0
f
);
}
else
if
(
own_param
.
equalsIgnoreCase
(
"water"
)){
original
.
setElecV
(
0
f
);
original
.
setWaterV
(
ZhnyUtil
.
parseFloat
(
body
.
get
(
other_param
)));
original
.
setGasV
(
0
f
);
}
else
if
(
own_param
.
equalsIgnoreCase
(
"gas"
)){
original
.
setElecV
(
0
f
);
original
.
setWaterV
(
0
f
);
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
;
}
}
src/main/java/org/rcisoft/mqttclient/PushCallback.java
deleted
100644 → 0
View file @
2348e964
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
()));
}
}
src/main/java/org/rcisoft/mqttclient/ReceiveDataHandle.java
deleted
100644 → 0
View file @
2348e964
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();
}
}*/
}
src/main/java/org/rcisoft/mqttclient/Test.java
deleted
100644 → 0
View file @
2348e964
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
));
}
}
src/main/java/org/rcisoft/test/CityCodeTest.java
deleted
100644 → 0
View file @
2348e964
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
]
+
"条记录"
);
}
}
src/main/java/org/rcisoft/wechat/WechatRedirectController.java
View file @
56a572f3
...
...
@@ -61,8 +61,6 @@ public class WechatRedirectController {
try
{
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
();
}
catch
(
Exception
exception
)
{
exception
.
printStackTrace
();
...
...
src/main/java/org/rcisoft/wechat/service/WxPortalService.java
View file @
56a572f3
...
...
@@ -47,7 +47,6 @@ public class WxPortalService extends WxMpServiceImpl {
}
public
WxMpOAuth2AccessToken
oauth2AccessToken
(
String
code
)
throws
WxErrorException
{
WxMpOAuth2AccessToken
token
=
this
.
oauth2getAccessToken
(
code
);
System
.
out
.
println
(
"token:"
+
token
.
getAccessToken
()
+
"; code: "
+
code
);
return
token
;
}
public
WxMpUser
oauth2UserInfo
(
String
code
)
throws
WxErrorException
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment