Commit beeef87e authored by zhuangzhuang's avatar zhuangzhuang

修改根据时间查询仓库数据的返回值;修改预警返回值格式;修改报警记录的添加格式;增加每月仓库报表

parent 64006e7e
...@@ -36,6 +36,9 @@ public class WarehouseExcel { ...@@ -36,6 +36,9 @@ public class WarehouseExcel {
// private List<DownloadWarehouseVo> downloadWarehouseVos; // private List<DownloadWarehouseVo> downloadWarehouseVos;
public WarehouseExcel() {
}
public WarehouseExcel(String fileName, String userName, ResultWarehouseNoAndTDLSNAndTimeVo resultWarehouseNoAndTDLSNAndTimeVo, HttpServletRequest request, I18nController i18n) { public WarehouseExcel(String fileName, String userName, ResultWarehouseNoAndTDLSNAndTimeVo resultWarehouseNoAndTDLSNAndTimeVo, HttpServletRequest request, I18nController i18n) {
this.fileName = fileName; this.fileName = fileName;
this.userName = userName; this.userName = userName;
......
package com.example.tdl.config; package com.example.tdl.config;
import com.example.tdl.domain.vo.AlarmContactsVo; import com.aliyun.oss.OSSClient;
import com.example.tdl.domain.vo.ResultWarehouseVo; import com.example.tdl.common.WarehouseExcel;
import com.example.tdl.domain.vo.WarehouseAlarmLog; import com.example.tdl.domain.vo.*;
import com.example.tdl.domain.vo.WarehouseCountVo;
import com.example.tdl.service.TDLLogService; import com.example.tdl.service.TDLLogService;
import com.example.tdl.service.UserService;
import com.example.tdl.service.WarehouseAlarmLogService; import com.example.tdl.service.WarehouseAlarmLogService;
import com.example.tdl.service.WarehouseService; import com.example.tdl.service.WarehouseService;
import com.example.tdl.util.MailUtil; import com.example.tdl.util.*;
import com.example.tdl.web.I18nController;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.influxdb.dto.Query;
import org.influxdb.dto.QueryResult;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.influxdb.InfluxDBTemplate;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
...@@ -32,6 +42,26 @@ public class ScheduleConfig { ...@@ -32,6 +42,26 @@ public class ScheduleConfig {
@Autowired @Autowired
private WarehouseAlarmLogService warehouseAlarmLogService; private WarehouseAlarmLogService warehouseAlarmLogService;
@Autowired
private I18nController i18n;
@Autowired
private HttpServletRequest request;
@Autowired
private InfluxDBTemplate influxDBTemplate;
private final static String database ="original";
List<Object> head = new ArrayList<Object>(){{
add("时间");
add("压力(MPa)");
add("温度(℃)");
add("湿度(%RH)");
add("是否预警");
}};
@Scheduled(cron ="0 0 0/12 * * ?") //每隔一小时执行一次 @Scheduled(cron ="0 0 0/12 * * ?") //每隔一小时执行一次
public void scheduler() { public void scheduler() {
Long endTime = System.currentTimeMillis(); Long endTime = System.currentTimeMillis();
...@@ -62,16 +92,24 @@ public class ScheduleConfig { ...@@ -62,16 +92,24 @@ public class ScheduleConfig {
}catch (Exception e){ }catch (Exception e){
e.printStackTrace(); e.printStackTrace();
} }
} }
} }
@Scheduled(cron ="0 0 0 1 * ? ") @Scheduled(cron ="0 0 0 1 * ? ")
// @Scheduled(cron ="0/15 * * * * ? ")
public void scheduler2(){ public void scheduler2(){
//获取每个仓库的历史数据并生成报表发给每个人 //获取每个仓库的历史数据并生成报表发给每个人
List<ResultWarehouseVo> resultWarehouseList = warehouseService.getAllWarehouse();
for(int i =0,length = resultWarehouseList.size();i<length;i++){
//获取相关的报警联系人
List<String> emailList = warehouseService.getEmailByWarehouse(resultWarehouseList.get(i).getWarehouseNo());
if(emailList.size() == 0){
continue;
}
// sendEmail(emailList,resultWarehouseList.get(i).getWarehouseNo(),resultWarehouseList.get(i).getWarehouseName());
sendEmail(new ArrayList<String>(){{add("13584678050@163.com");}},resultWarehouseList.get(i).getWarehouseNo(),resultWarehouseList.get(i).getWarehouseName(), request);
}
} }
public String message(String warehouseNo,String startTime,String endTime,Integer tempCount,String tempTime,Integer humCount,String humTime){ public String message(String warehouseNo,String startTime,String endTime,Integer tempCount,String tempTime,Integer humCount,String humTime){
...@@ -155,4 +193,127 @@ public class ScheduleConfig { ...@@ -155,4 +193,127 @@ public class ScheduleConfig {
return time; return time;
} }
} }
public String sendEmail(List<String> emailList,String warehouseNo,String warehouseName,HttpServletRequest request) {
try {
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String gtimelast = sdf.format(c.getTime()); //上月
System.out.println(gtimelast);
int lastMonthMaxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println(lastMonthMaxDay);
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), lastMonthMaxDay, 23, 59, 59);
//按格式输出
String gtime = sdf.format(c.getTime()); //上月最后一天
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-01 00:00:00");
String gtime2 = sdf2.format(c.getTime()); //上月第一天
List<ResultWarehouseNoAndTDLSNAndTimeVo> resultWarehouseNoAndTDLSNAndTimeVos=tdlLogService.getByWarehouseNo(warehouseNo);
if (resultWarehouseNoAndTDLSNAndTimeVos.size()==0){
return null;
}
File zipFile = new File("./export/" +warehouseName+"仓库数据.zip");
File[] srcFiles = new File[resultWarehouseNoAndTDLSNAndTimeVos.size()];
String address = "./export/";
for (int a=0;a<resultWarehouseNoAndTDLSNAndTimeVos.size();a++) {
ResultWarehouseNoAndTDLSNAndTimeVo resultWarehouseNoAndTDLSNAndTimeVo=resultWarehouseNoAndTDLSNAndTimeVos.get(a);
Long startTime;
Long stopTime;
if(sdf.parse(gtime2).getTime() >=resultWarehouseNoAndTDLSNAndTimeVo.getCreateTime()){
startTime = sdf.parse(gtime2).getTime()*1000000l;
}else{
startTime = resultWarehouseNoAndTDLSNAndTimeVo.getCreateTime()*1000000l;
}
stopTime = sdf.parse(gtime).getTime()*1000000l;
String sqls = "SELECT \"b\", \"T\", \"h\" FROM \"tdl_policy\".\"" + resultWarehouseNoAndTDLSNAndTimeVo.getGatewayType() + "_" + resultWarehouseNoAndTDLSNAndTimeVo.getGatewaySN() + "\" WHERE (\"tdl\" = 'TDL-" + resultWarehouseNoAndTDLSNAndTimeVo.getTDLSN() + "') and time >= " + startTime + " and time<= " + stopTime + " ORDER BY time ";
QueryResult queryResults = influxDBTemplate.query(new Query(sqls, database));
if(queryResults.getResults().get(0).getSeries()==null){
continue;
}
File myPath = new File( "./export/" );
if ( !myPath.exists()){//若此目录不存在,则创建之
myPath.mkdir();
}
String fileName = warehouseNo + "仓库温湿度观测记录-"+resultWarehouseNoAndTDLSNAndTimeVo.getTDLSN();
List<DownloadWarehouseVo> downloadWarehouseVos = getWarehouseData(queryResults,"+8");
List<List<Object>> values = DataUtil.getValues(queryResults);
List<List<Object>> rows = new ArrayList<>();
for(List<Object> value:values){
List<Object> data = new ArrayList<>();
for (int j = 0; j < head.size(); j++) {
if(j ==0){
data.add(DataUtil.UTCToCST(String.valueOf(value.get(0)),"+8"));
}else if(j == (head.size() - 1)){
if (Float.valueOf(data.get(2).toString()) > resultWarehouseNoAndTDLSNAndTimeVos.get(a).getTemMax() ||
Float.valueOf(data.get(2).toString()) < resultWarehouseNoAndTDLSNAndTimeVos.get(a).getTemMin() ||
Float.valueOf(data.get(3).toString()) > resultWarehouseNoAndTDLSNAndTimeVos.get(a).getHumidityMax() ||
Float.valueOf(data.get(3).toString()) < resultWarehouseNoAndTDLSNAndTimeVos.get(a).getHumidityMin()) {
data.add("报警");
} else {
data.add("正常");
}
;
}else{
data.add(value.get(j) == null ? "-" :value.get(j).toString());
}
}
rows.add(data);
}
CSVUtils.createCSVFile(head,rows,address,fileName);
srcFiles[a]=new File("./export/"+fileName+".csv");
}
ZipCompressUtil.zipFiles(srcFiles,zipFile);
OSSClient ossClient = AliyunOSSClientUtil.getOSSClient();
String md5Key = AliyunOSSClientUtil.uploadObject2OSS(ossClient, zipFile);
if (md5Key != null) {
for(int a =0;a<srcFiles.length;a++){
if(srcFiles[a] == null){
continue;
} else{
srcFiles[a].delete();
}
}
zipFile.delete();
}
String html = "<!DOCTYPE html>\n" +
"<html lang=\"en\">\n" +
"<head>\n" +
" <meta charset=\"UTF-8\">\n" +
" <title>Title</title>\n" +
"</head>\n" +
"<body style=\"align-content: center;\">\n" +
" <div style=\"width: 800px;margin: 0px auto;\">\n" +
" <div style=\"font-size: 15px;\">\n" +
" <p>尊敬的用户,您好:</p>\n" +
" <p>&nbsp;&nbsp;&nbsp;&nbsp; 附件是上个月的仓库报表,请查收。</p>\n" +
" <br>\n" +
" <p>致好!</p>\n" +
" <br>\n" +
" </div>\n" +
" <br>\n" +
"</body>\n" +
"</html>";
MailUtil.sendAttachment(emailList,"仓库每月数据报表","./export/" +warehouseName+"仓库数据.zip",html);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public List<DownloadWarehouseVo> getWarehouseData(QueryResult queryResult,String offset){
List<List<Object>> values = DataUtil.getValues(queryResult);
List<DownloadWarehouseVo> downloadWarehouseVos = new ArrayList<>();
for(List<Object> value:values){
DownloadWarehouseVo downloadWarehouseVo = new DownloadWarehouseVo();
downloadWarehouseVo.setTime(DataUtil.UTCToCST(String.valueOf(value.get(0)),offset));
downloadWarehouseVo.setPressure(Float.parseFloat(value.get(1).toString()));
downloadWarehouseVo.setTemperature(Float.parseFloat(value.get(2).toString()));
downloadWarehouseVo.setHumidity(Float.parseFloat(value.get(3).toString()));
downloadWarehouseVos.add(downloadWarehouseVo);
}
return downloadWarehouseVos;
}
} }
...@@ -14,7 +14,7 @@ public class AddAlarmVo { ...@@ -14,7 +14,7 @@ public class AddAlarmVo {
private Float tilt;//倾斜度 private Float tilt;//倾斜度
private String shock;//震度 private Float shock;//震度
private String remark; private String remark;
...@@ -68,11 +68,11 @@ public class AddAlarmVo { ...@@ -68,11 +68,11 @@ public class AddAlarmVo {
this.tilt = tilt; this.tilt = tilt;
} }
public String getShock() { public Float getShock() {
return shock; return shock;
} }
public void setShock(String shock) { public void setShock(Float shock) {
this.shock = shock; this.shock = shock;
} }
......
...@@ -24,9 +24,9 @@ public class AddBoschAlarmVo { ...@@ -24,9 +24,9 @@ public class AddBoschAlarmVo {
private Float tilt;//倾斜度 private Float tilt;//倾斜度
private Integer shockUpper;//震度 private Float shockUpper;//震度
private Integer shock;//震度 private Float shock;//震度
private String remark; private String remark;
...@@ -120,19 +120,19 @@ public class AddBoschAlarmVo { ...@@ -120,19 +120,19 @@ public class AddBoschAlarmVo {
this.tilt = tilt; this.tilt = tilt;
} }
public Integer getShockUpper() { public Float getShockUpper() {
return shockUpper; return shockUpper;
} }
public void setShockUpper(Integer shockUpper) { public void setShockUpper(Float shockUpper) {
this.shockUpper = shockUpper; this.shockUpper = shockUpper;
} }
public Integer getShock() { public Float getShock() {
return shock; return shock;
} }
public void setShock(Integer shock) { public void setShock(Float shock) {
this.shock = shock; this.shock = shock;
} }
......
package com.example.tdl.domain.vo;
public class AlarmNoVo {
private Integer mode;
private String transportationNo;
private String warehouseNo;
private String warehouseName;
public Integer getMode() {
return mode;
}
public void setMode(Integer mode) {
this.mode = mode;
}
public String getTransportationNo() {
return transportationNo;
}
public void setTransportationNo(String transportationNo) {
this.transportationNo = transportationNo;
}
public String getWarehouseNo() {
return warehouseNo;
}
public void setWarehouseNo(String warehouseNo) {
this.warehouseNo = warehouseNo;
}
public String getWarehouseName() {
return warehouseName;
}
public void setWarehouseName(String warehouseName) {
this.warehouseName = warehouseName;
}
}
...@@ -14,7 +14,7 @@ public class ResultAlarmVo{ ...@@ -14,7 +14,7 @@ public class ResultAlarmVo{
private Float tilt;//倾斜度 private Float tilt;//倾斜度
private String shock;//震度 private Float shock;//震度
private String remark; private String remark;
...@@ -66,11 +66,11 @@ public class ResultAlarmVo{ ...@@ -66,11 +66,11 @@ public class ResultAlarmVo{
this.tilt = tilt; this.tilt = tilt;
} }
public String getShock() { public Float getShock() {
return shock; return shock;
} }
public void setShock(String shock) { public void setShock(Float shock) {
this.shock = shock; this.shock = shock;
} }
......
...@@ -24,9 +24,9 @@ public class ResultBoschAlarmVo { ...@@ -24,9 +24,9 @@ public class ResultBoschAlarmVo {
private Double tilt;//倾斜度 private Double tilt;//倾斜度
private Integer shockUpper;//震度 private Double shockUpper;//震度
private Integer shock;//震度 private Double shock;//震度
private String remark; private String remark;
...@@ -118,19 +118,19 @@ public class ResultBoschAlarmVo { ...@@ -118,19 +118,19 @@ public class ResultBoschAlarmVo {
this.tilt = tilt; this.tilt = tilt;
} }
public Integer getShockUpper() { public Double getShockUpper() {
return shockUpper; return shockUpper;
} }
public void setShockUpper(Integer shockUpper) { public void setShockUpper(Double shockUpper) {
this.shockUpper = shockUpper; this.shockUpper = shockUpper;
} }
public Integer getShock() { public Double getShock() {
return shock; return shock;
} }
public void setShock(Integer shock) { public void setShock(Double shock) {
this.shock = shock; this.shock = shock;
} }
......
...@@ -14,7 +14,7 @@ public class UpdateAlarmVo { ...@@ -14,7 +14,7 @@ public class UpdateAlarmVo {
private Float tilt;//倾斜度 private Float tilt;//倾斜度
private String shock;//震度 private Float shock;//震度
private String remark; private String remark;
...@@ -78,11 +78,11 @@ public class UpdateAlarmVo { ...@@ -78,11 +78,11 @@ public class UpdateAlarmVo {
this.tilt = tilt; this.tilt = tilt;
} }
public String getShock() { public Float getShock() {
return shock; return shock;
} }
public void setShock(String shock) { public void setShock(Float shock) {
this.shock = shock; this.shock = shock;
} }
......
...@@ -24,9 +24,9 @@ public class UpdateBoschAlarmVo { ...@@ -24,9 +24,9 @@ public class UpdateBoschAlarmVo {
private Float tilt;//倾斜度 private Float tilt;//倾斜度
private Integer shockUpper;//震度 private Float shockUpper;//震度
private Integer shock;//震度 private Float shock;//震度
private String remark; private String remark;
...@@ -122,19 +122,19 @@ public class UpdateBoschAlarmVo { ...@@ -122,19 +122,19 @@ public class UpdateBoschAlarmVo {
this.tilt = tilt; this.tilt = tilt;
} }
public Integer getShockUpper() { public Float getShockUpper() {
return shockUpper; return shockUpper;
} }
public void setShockUpper(Integer shockUpper) { public void setShockUpper(Float shockUpper) {
this.shockUpper = shockUpper; this.shockUpper = shockUpper;
} }
public Integer getShock() { public Float getShock() {
return shock; return shock;
} }
public void setShock(Integer shock) { public void setShock(Float shock) {
this.shock = shock; this.shock = shock;
} }
......
...@@ -22,10 +22,12 @@ public class WarehouseAlarmLog { ...@@ -22,10 +22,12 @@ public class WarehouseAlarmLog {
private String classify; private String classify;
private Integer delState;
public WarehouseAlarmLog() { public WarehouseAlarmLog() {
} }
public WarehouseAlarmLog(String warehouseNo, String gSN, String gType, String TDLSN, String description, Float data, Long alarmTime, String desp, Integer alarmNo,String classify) { public WarehouseAlarmLog(String warehouseNo, String gSN, String gType, String TDLSN, String description, Float data, Long alarmTime, String desp, Integer alarmNo,String classify,Integer delState) {
this.warehouseNo = warehouseNo; this.warehouseNo = warehouseNo;
this.gSN = gSN; this.gSN = gSN;
this.gType = gType; this.gType = gType;
...@@ -36,6 +38,7 @@ public class WarehouseAlarmLog { ...@@ -36,6 +38,7 @@ public class WarehouseAlarmLog {
this.desp = desp; this.desp = desp;
this.alarmNo = alarmNo; this.alarmNo = alarmNo;
this.classify = classify; this.classify = classify;
this.delState = delState;
} }
public String getWarehouseNo() { public String getWarehouseNo() {
...@@ -117,4 +120,12 @@ public class WarehouseAlarmLog { ...@@ -117,4 +120,12 @@ public class WarehouseAlarmLog {
public void setClassify(String classify) { public void setClassify(String classify) {
this.classify = classify; this.classify = classify;
} }
public Integer getDelState() {
return delState;
}
public void setDelState(Integer delState) {
this.delState = delState;
}
} }
...@@ -41,4 +41,6 @@ public interface GatewayMapper { ...@@ -41,4 +41,6 @@ public interface GatewayMapper {
Integer getModeByGateway(@Param("SN") String SN,@Param("type") String type); Integer getModeByGateway(@Param("SN") String SN,@Param("type") String type);
AlarmNoVo getByGateway(@Param("SN") String SN,@Param("type") String type);
} }
...@@ -31,4 +31,6 @@ public interface TDLLogMapper { ...@@ -31,4 +31,6 @@ public interface TDLLogMapper {
List<ResultWarehouseNoAndTDLSNAndTimeVo> getByWarehouseNoAndTime(DownloadForWarehouseVo downloadForWarehouseVo); List<ResultWarehouseNoAndTDLSNAndTimeVo> getByWarehouseNoAndTime(DownloadForWarehouseVo downloadForWarehouseVo);
List<ResultWarehouseNoAndTDLSNAndTimeVo> getByWarehouseNo(String warehouseNo);
} }
...@@ -22,5 +22,5 @@ public interface WarehouseAlarmLogMapper { ...@@ -22,5 +22,5 @@ public interface WarehouseAlarmLogMapper {
Integer getAlarmCount(@Param("time")String time, @Param("companyNo")String companyNo); Integer getAlarmCount(@Param("time")String time, @Param("companyNo")String companyNo);
Long getLastProcessedAlarm(String warehouseNo);
} }
...@@ -59,6 +59,6 @@ public interface WarehouseMapper { ...@@ -59,6 +59,6 @@ public interface WarehouseMapper {
ResultWarehouseDetailsVo getDetailsBywarehouseNo(String warehouseNo); ResultWarehouseDetailsVo getDetailsBywarehouseNo(String warehouseNo);
List<ResultUserVo> getUserByWarehouse(String warehouseNo);
} }
...@@ -80,4 +80,7 @@ public class GatewayService { ...@@ -80,4 +80,7 @@ public class GatewayService {
public Integer getModeByGateway(String SN,String type){ public Integer getModeByGateway(String SN,String type){
return gatewayMapper.getModeByGateway(SN,type); return gatewayMapper.getModeByGateway(SN,type);
} }
public AlarmNoVo getByGateway(String SN,String type){
return gatewayMapper.getByGateway(SN,type);
}
} }
...@@ -57,4 +57,8 @@ public class TDLLogService { ...@@ -57,4 +57,8 @@ public class TDLLogService {
public List<ResultWarehouseNoAndTDLSNAndTimeVo> getByWarehouseNoAndTime(DownloadForWarehouseVo downloadForWarehouseVo){ public List<ResultWarehouseNoAndTDLSNAndTimeVo> getByWarehouseNoAndTime(DownloadForWarehouseVo downloadForWarehouseVo){
return tdlLogMapper.getByWarehouseNoAndTime(downloadForWarehouseVo); return tdlLogMapper.getByWarehouseNoAndTime(downloadForWarehouseVo);
} }
public List<ResultWarehouseNoAndTDLSNAndTimeVo> getByWarehouseNo(String warehouseNo){
return tdlLogMapper.getByWarehouseNo(warehouseNo);
}
} }
...@@ -36,4 +36,8 @@ public class WarehouseAlarmLogService { ...@@ -36,4 +36,8 @@ public class WarehouseAlarmLogService {
public Integer getAlarmCount(String time,String companyNo){ public Integer getAlarmCount(String time,String companyNo){
return warehouseAlarmLogMapper.getAlarmCount(time,companyNo); return warehouseAlarmLogMapper.getAlarmCount(time,companyNo);
} }
public Long getLastProcessedAlarm(String warehouseNo){
return warehouseAlarmLogMapper.getLastProcessedAlarm(warehouseNo);
}
} }
...@@ -109,4 +109,8 @@ public class WarehouseService { ...@@ -109,4 +109,8 @@ public class WarehouseService {
public ResultWarehouseDetailsVo getDetailsBywarehouseNo(String warehouseNo){ public ResultWarehouseDetailsVo getDetailsBywarehouseNo(String warehouseNo){
return warehouseMapper.getDetailsBywarehouseNo(warehouseNo); return warehouseMapper.getDetailsBywarehouseNo(warehouseNo);
} }
public List<ResultUserVo> getUserByWarehouse(String warehouseNo){
return warehouseMapper.getUserByWarehouse(warehouseNo);
}
} }
...@@ -79,7 +79,7 @@ public class HttpRequester { ...@@ -79,7 +79,7 @@ public class HttpRequester {
logger.info(url+"url"); logger.info(url+"url");
URLConnection connection = realUrl.openConnection(); URLConnection connection = realUrl.openConnection();
connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("Accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("Content-Type", "application/json; charset=utf-8"); connection.setRequestProperty("Content-Type", "application/json; charset=utf-8");
connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
...@@ -156,5 +156,8 @@ public class HttpRequester { ...@@ -156,5 +156,8 @@ public class HttpRequester {
return result.toString(); return result.toString();
} }
} }
package com.example.tdl.util; package com.example.tdl.util;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session; import javax.mail.Session;
import javax.mail.Transport; import javax.mail.Transport;
import javax.mail.internet.InternetAddress; import javax.mail.internet.*;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType; import javax.mail.internet.MimeMessage.RecipientType;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Properties; import java.util.Properties;
public class MailUtil { public class MailUtil {
//发件人地址
public static String senderAddress = "postmaster@witium.com";
//发件人账户名
public static String senderAccount = "postmaster@witium.com";
//发件人账户密码
public static String senderPassword = "dJZU4LXZtpRc1Ybz";
public static void sendMail(List<String> toAddressStr, String subject, String text) throws Exception{ public static void sendMail(List<String> toAddressStr, String subject, String text) throws Exception{
//设置发送邮件需要的属性 //设置发送邮件需要的属性
...@@ -31,7 +42,7 @@ public class MailUtil { ...@@ -31,7 +42,7 @@ public class MailUtil {
//创建一封邮件 //创建一封邮件
MimeMessage mimeMessage = new MimeMessage(session); MimeMessage mimeMessage = new MimeMessage(session);
//设置发送地址 //设置发送地址
InternetAddress fromAddress = new InternetAddress("postmaster@witium.com"); InternetAddress fromAddress = new InternetAddress(senderAddress);
mimeMessage.setFrom(fromAddress); mimeMessage.setFrom(fromAddress);
//设置接收地址(多个) //设置接收地址(多个)
InternetAddress[] address = new InternetAddress[toAddressStr.size()]; InternetAddress[] address = new InternetAddress[toAddressStr.size()];
...@@ -49,7 +60,7 @@ public class MailUtil { ...@@ -49,7 +60,7 @@ public class MailUtil {
//发送:坐火箭 //发送:坐火箭
Transport transport = session.getTransport("smtp"); Transport transport = session.getTransport("smtp");
transport.connect("postmaster@witium.com", "dJZU4LXZtpRc1Ybz"); transport.connect(senderAccount, senderPassword);
//第一个参数:邮件 //第一个参数:邮件
//第二个参数:接收地址 //第二个参数:接收地址
transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients()); transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients());
...@@ -60,4 +71,93 @@ public class MailUtil { ...@@ -60,4 +71,93 @@ public class MailUtil {
} }
public static void sendAttachment(List<String> toAddressStr, String subject, String text,String html) throws Exception {
Properties props = new Properties();
//设置用户的认证方式
props.setProperty("mail.smtp.auth", "true");
//设置传输协议
props.setProperty("mail.transport.protocol", "smtp");
//设置发件人的SMTP服务器地址
props.setProperty("mail.smtp.host", "smtp.163.com");
//2、创建定义整个应用程序所需的环境信息的 Session 对象
Session session = Session.getInstance(props);
//设置调试信息在控制台打印出来
session.setDebug(true);
//3、创建邮件的实例对象
Message msg = getMimeMessage(session,toAddressStr,subject,text,html);
//4、根据session对象获取邮件传输对象Transport
Transport transport = session.getTransport();
//设置发件人的账户名和密码
transport.connect(senderAccount, senderPassword);
//发送邮件,并发送到所有收件人地址,message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人
transport.sendMessage(msg,msg.getAllRecipients());
//5、关闭邮件连接
transport.close();
}
public static MimeMessage getMimeMessage(Session session,List<String> toAddressStr, String subject, String addr,String html) throws Exception{
//1.创建一封邮件的实例对象
MimeMessage msg = new MimeMessage(session);
//2.设置发件人地址
msg.setFrom(new InternetAddress(senderAddress));
/**
* 3.设置收件人地址(可以增加多个收件人、抄送、密送),即下面这一行代码书写多行
* MimeMessage.RecipientType.TO:发送
* MimeMessage.RecipientType.CC:抄送
* MimeMessage.RecipientType.BCC:密送
*/
InternetAddress[] address = new InternetAddress[toAddressStr.size()];
for(int i = 0;i<toAddressStr.size();i++){
address[i] = new InternetAddress(toAddressStr.get(i)) ;
}
msg.setRecipients(RecipientType.TO, address);
msg.setSubject(subject,"UTF-8");
//下面是设置邮件正文
//msg.setContent("简单的纯文本邮件!", "text/html;charset=UTF-8");
// 5. 创建图片"节点"
MimeBodyPart image = new MimeBodyPart();
// 读取本地文件
DataHandler dh = new DataHandler(new FileDataSource("src\\mailTestPic.png"));
// 将图片数据添加到"节点"
image.setDataHandler(dh);
// 为"节点"设置一个唯一编号(在文本"节点"将引用该ID)
image.setContentID("mailTestPic");
// 6. 创建文本"节点"
MimeBodyPart text = new MimeBodyPart();
// 这里添加图片的方式是将整个图片包含到邮件内容中, 实际上也可以以 http 链接的形式添加网络图片
text.setContent(html, "text/html;charset=UTF-8");
// 9. 创建附件"节点"
MimeBodyPart attachment = new MimeBodyPart();
// 读取本地文件
DataHandler dh2 = new DataHandler(new FileDataSource(addr));
// 将附件数据添加到"节点"
attachment.setDataHandler(dh2);
// 设置附件的文件名(需要编码)
attachment.setFileName(MimeUtility.encodeText(dh2.getName()));
// 10. 设置(文本+图片)和 附件 的关系(合成一个大的混合"节点" / Multipart )
MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(text);
mm.addBodyPart(attachment); // 如果有多个附件,可以创建多个多次添加
mm.setSubType("related"); // 混合关系
// 11. 设置整个邮件的关系(将最终的混合"节点"作为邮件的内容添加到邮件对象)
msg.setContent(mm);
//设置邮件的发送时间,默认立即发送
msg.setSentDate(new Date());
return msg;
}
} }
package com.example.tdl.util; package com.example.tdl.util;
import java.net.URLDecoder;
import java.text.DecimalFormat; import java.text.DecimalFormat;
public class MapUtils { public class MapUtils {
...@@ -79,7 +80,7 @@ public class MapUtils { ...@@ -79,7 +80,7 @@ public class MapUtils {
double d = (double)37/44300; double d = (double)37/44300;
System.out.println("d:" + df.format(d)); System.out.println("d:" + df.format(d));
double p=1013.25* Math.pow((1 - Double.valueOf(df.format(d))),5.256); double p=1013.25* Math.pow((1 - Double.valueOf(df.format(d))),5.256);
System.out.println("pressure: "+ p); System.out.println(URLDecoder.decode("%5C"));
} }
......
...@@ -6,6 +6,8 @@ import com.example.tdl.entity.AlarmLog; ...@@ -6,6 +6,8 @@ import com.example.tdl.entity.AlarmLog;
import com.example.tdl.service.*; import com.example.tdl.service.*;
import com.example.tdl.service.redis.TokenRedisService; import com.example.tdl.service.redis.TokenRedisService;
import com.example.tdl.util.AlarmLogUtil; import com.example.tdl.util.AlarmLogUtil;
import com.example.tdl.util.AlidayuUtils;
import com.example.tdl.util.MailUtil;
import com.google.gson.Gson; import com.google.gson.Gson;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
...@@ -23,10 +25,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -23,10 +25,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController @RestController
...@@ -70,10 +69,13 @@ public class AlarmLogController { ...@@ -70,10 +69,13 @@ public class AlarmLogController {
@Value("${mqtt.userName}") @Value("${mqtt.userName}")
private String userName; private String userName;
@Value("${mqtt.password}") @Value("${mqtt.password}")
private String password; private String password;
@Value("${alarm.interval.time}")
private Long alarmIntervalTime;
//获取报警信息 //获取报警信息
@ApiOperation(value = "获取报警信息",notes = "获取报警信息" + @ApiOperation(value = "获取报警信息",notes = "获取报警信息" +
" transportationNo:运输编号" + " transportationNo:运输编号" +
...@@ -175,64 +177,84 @@ public class AlarmLogController { ...@@ -175,64 +177,84 @@ public class AlarmLogController {
fb.setMessage("时间不能为空"); fb.setMessage("时间不能为空");
} }
//判断当前报警状态 //判断当前报警状态
AlarmNoVo alarmNoVo = gatewayService.getByGateway(addAlarmLogVo.getGsn(),addAlarmLogVo.getGtype());
if(alarmNoVo.getMode() == 1){
ResultCircuitVo resultCircuitVo = circuitService.getCircuit(alarmNoVo.getTransportationNo());
if(addAlarmLogVo.getAlarmno() !=null){ if(addAlarmLogVo.getAlarmno() !=null){
//网关离线报警 //网关离线报警
String desp ="网关("+addAlarmLogVo.getGsn() +")"+ AlarmLogUtil.getDescription(addAlarmLogVo.getAlarmno());
String classify ="6";
Long time = addAlarmLogVo.getTs();
if(time.toString().length() == 10){
time=time*1000;
} }
AlarmLog alarmLog = new AlarmLog(alarmNoVo.getTransportationNo(),resultCircuitVo.getStartCity(),resultCircuitVo.getEndCity(),null,desp,null,time,classify,"offline",addAlarmLogVo.getAlarmno());
//获取使用场景 alarmLogServcie.addAlarmLog(alarmLog);
Integer mode = gatewayService.getModeByGateway(addAlarmLogVo.getGsn(),addAlarmLogVo.getGtype()); }
if(mode == 1){ if(addAlarmLogVo.getAlarm() !=null && addAlarmLogVo.getAlarm().size()>0){
//根据gateway的信息获取线路信息 for(int i = 0,length=addAlarmLogVo.getAlarm().size();i<length;i++) {
String transportationNo = gatewayService.getTransportationNo(addAlarmLogVo.getGsn(),addAlarmLogVo.getGtype()); if (addAlarmLogVo.getAlarm().get(i).getAlarmno() != null && addAlarmLogVo.getAlarm().get(i).getAlarmno() == 0) {
//获取终点,起点
ResultCircuitVo resultCircuitVo = circuitService.getCircuit(transportationNo);
for(int i = 0,length=addAlarmLogVo.getAlarm().size();i<length;i++){
if(addAlarmLogVo.getAlarm().get(i).getAlarmno() !=null && addAlarmLogVo.getAlarm().get(i).getAlarmno() == 0){
continue; continue;
} }
String classify; String classify = null;
String desp = AlarmLogUtil.getDescription(addAlarmLogVo.getAlarm().get(i).getAlarmno()); String desp = AlarmLogUtil.getDescription(addAlarmLogVo.getAlarm().get(i).getAlarmno());
if(addAlarmLogVo.getAlarm().get(i).getAlias().contains("T")){ if(addAlarmLogVo.getAlarm().get(i).getAlias()!=null){
if (addAlarmLogVo.getAlarm().get(i).getAlias().contains("T")) {
desp = "温度" + desp; desp = "温度" + desp;
classify = "1"; classify = "1";
} else if(addAlarmLogVo.getAlarm().get(i).getAlias().contains("h")){ } else if (addAlarmLogVo.getAlarm().get(i).getAlias().contains("h")) {
desp = "湿度" +desp; desp = "湿度" + desp;
classify = "2"; classify = "2";
} else if(addAlarmLogVo.getAlarm().get(i).getAlias().contains("a1")){ } else if (addAlarmLogVo.getAlarm().get(i).getAlias().contains("a1")) {
desp = "震动" +desp; desp = "震动" + desp;
classify = "3"; classify = "3";
} else if(addAlarmLogVo.getAlarm().get(i).getAlias().contains("ta")) { } else if (addAlarmLogVo.getAlarm().get(i).getAlias().contains("ta")) {
desp = "倾角" + desp; desp = "倾角" + desp;
classify = "4"; classify = "4";
}
}else{ }else{
desp = addAlarmLogVo.getAlarm().get(i).getTdlsn() +desp; desp = "TDL("+addAlarmLogVo.getAlarm().get(i).getTdlsn() +")"+desp;
classify = "6"; classify = "6";
} }
Long time = addAlarmLogVo.getAlarm().get(i).getTs(); Long time = addAlarmLogVo.getAlarm().get(i).getTs();
if(time.toString().length() == 10){ if(time.toString().length() == 10){
time=time*1000; time=time*1000;
} }
AlarmLog alarmLog = new AlarmLog(transportationNo,resultCircuitVo.getStartCity(),resultCircuitVo.getEndCity(),addAlarmLogVo.getAlarm().get(i).getTdlsn().replace("TDL-","").trim(),desp,addAlarmLogVo.getAlarm().get(i).getValue(),time,classify,addAlarmLogVo.getAlarm().get(i).getDesp(),addAlarmLogVo.getAlarm().get(i).getAlarmno()); AlarmLog alarmLog = new AlarmLog(alarmNoVo.getTransportationNo(),resultCircuitVo.getStartCity(),resultCircuitVo.getEndCity(),addAlarmLogVo.getAlarm().get(i).getTdlsn().replace("TDL-","").trim(),desp,addAlarmLogVo.getAlarm().get(i).getValue(),time,classify,addAlarmLogVo.getAlarm().get(i).getDesp(),addAlarmLogVo.getAlarm().get(i).getAlarmno());
int a = alarmLogServcie.addAlarmLog(alarmLog); alarmLogServcie.addAlarmLog(alarmLog);
if(a == 0){
fb.setCode(0);
fb.setMessage("添加失败");
}else{
fb.setCode(1);
fb.setMessage("添加成功");
} }
} }
}else{ }else {
//根据gateway获取仓库编号 //获取最后一条发送的报警时间
String warehouseNo = gatewayService.getWarehouseNo(addAlarmLogVo.getGsn(),addAlarmLogVo.getGtype()); Long alarmTime = warehouseAlarmLogService.getLastProcessedAlarm(alarmNoVo.getWarehouseNo());
//获取联系人信息
List<ResultUserVo> userList = warehouseService.getUserByWarehouse(alarmNoVo.getWarehouseNo());
if(addAlarmLogVo.getAlarmno() !=null && addAlarmLogVo.getAlarmno()!=0){
//网关离线报警
String desp = "网关("+addAlarmLogVo.getGsn() +")"+ AlarmLogUtil.getDescription(addAlarmLogVo.getAlarmno());
String classify ="6";
Long time = addAlarmLogVo.getTs();
if(time.toString().length() == 10){
time=time*1000;
}
//发送短信邮件
Integer delState = 0;
if(alarmTime == null || (time -alarmTime) >alarmIntervalTime){
sendMessage(alarmNoVo.getWarehouseName(),desp,userList);
delState = 1;
}
WarehouseAlarmLog alarmLog = new WarehouseAlarmLog(alarmNoVo.getWarehouseNo(),addAlarmLogVo.getGsn(),addAlarmLogVo.getGtype(),null,desp,null,time,"offline",addAlarmLogVo.getAlarmno(),classify,delState);
warehouseAlarmLogService.add(alarmLog);
}
if(addAlarmLogVo.getAlarm() !=null && addAlarmLogVo.getAlarm().size()>0){
for(int i = 0,length=addAlarmLogVo.getAlarm().size();i<length;i++){ for(int i = 0,length=addAlarmLogVo.getAlarm().size();i<length;i++){
if(addAlarmLogVo.getAlarm().get(i).getAlarmno() !=null && addAlarmLogVo.getAlarm().get(i).getAlarmno() == 0){ if(addAlarmLogVo.getAlarm().get(i).getAlarmno() !=null && addAlarmLogVo.getAlarm().get(i).getAlarmno() == 0){
continue; continue;
} }
String desp = AlarmLogUtil.getDescription(addAlarmLogVo.getAlarm().get(i).getAlarmno()); String desp = AlarmLogUtil.getDescription(addAlarmLogVo.getAlarm().get(i).getAlarmno());
String classify; String classify = null;
if(addAlarmLogVo.getAlarm().get(i).getAlias() !=null){
if(addAlarmLogVo.getAlarm().get(i).getAlias().contains("T")){ if(addAlarmLogVo.getAlarm().get(i).getAlias().contains("T")){
desp = "温度" +desp; desp = "温度" +desp;
classify = "1"; classify = "1";
...@@ -245,19 +267,34 @@ public class AlarmLogController { ...@@ -245,19 +267,34 @@ public class AlarmLogController {
} else if(addAlarmLogVo.getAlarm().get(i).getAlias().contains("ta")) { } else if(addAlarmLogVo.getAlarm().get(i).getAlias().contains("ta")) {
desp = "倾角" + desp; desp = "倾角" + desp;
classify = "4"; classify = "4";
}
}else{ }else{
desp = addAlarmLogVo.getAlarm().get(i).getTdlsn() +desp; desp = "TDL("+addAlarmLogVo.getAlarm().get(i).getTdlsn() +")"+desp;
classify = "6"; classify = "6";
} }
List<String> emailList = warehouseService.getEmailByWarehouse(warehouseNo); Long time = addAlarmLogVo.getTs();
WarehouseAlarmLog alarmLog = new WarehouseAlarmLog(warehouseNo,addAlarmLogVo.getGsn(),addAlarmLogVo.getGtype(),addAlarmLogVo.getAlarm().get(i).getTdlsn().replace("TDL-","").trim(),desp,addAlarmLogVo.getAlarm().get(i).getValue(),addAlarmLogVo.getAlarm().get(i).getTs()*1000,addAlarmLogVo.getAlarm().get(i).getDesp(),addAlarmLogVo.getAlarm().get(i).getAlarmno(),classify); if(time.toString().length() == 10){
int a = warehouseAlarmLogService.add(alarmLog); time=time*1000;
if(a == 0){ }
fb.setCode(0); Integer delState = 0;
fb.setMessage("添加失败"); if(alarmTime== null || (time -alarmTime) >alarmIntervalTime){
}else{ //发送短信邮件
fb.setCode(1); sendMessage(alarmNoVo.getWarehouseName(),desp,userList);
fb.setMessage("添加成功"); delState = 1;
}
WarehouseAlarmLog alarmLog = new WarehouseAlarmLog(
alarmNoVo.getWarehouseNo(),
addAlarmLogVo.getGsn(),
addAlarmLogVo.getGtype(),
addAlarmLogVo.getAlarm().get(i).getTdlsn(),
desp,
addAlarmLogVo.getAlarm().get(i).getValue(),
time,
addAlarmLogVo.getAlarm().get(i).getDesp(),
addAlarmLogVo.getAlarm().get(i).getAlarmno(),
classify,
delState);
warehouseAlarmLogService.add(alarmLog);
} }
} }
} }
...@@ -450,4 +487,71 @@ public class AlarmLogController { ...@@ -450,4 +487,71 @@ public class AlarmLogController {
} }
return String.valueOf(date.getTime()); return String.valueOf(date.getTime());
} }
public void sendMessage(String warehouseName,String desp,List<ResultUserVo> userList) {
for(int i = 0;i<userList.size();i++){
AlidayuUtils.sendMessage(userList.get(i).getPhone(),"SMS_173475190","辉泰云平台","{\"name\":\""+warehouseName+"\",\"desp\":\""+desp+"\"}");
int finalI = i;
try {
MailUtil.sendMail(new ArrayList<String>(){{add(userList.get(finalI).getEmail());}}, "辉度物流监测系统------仓库报警提醒",message(warehouseName,desp));
} catch (Exception e) {
e.printStackTrace();
}
}
}
public String message(String warehouseName,String desp){
String html="<!DOCTYPE html>\n" +
"<html lang=\"en\">\n" +
"<head>\n" +
" <meta charset=\"UTF-8\">\n" +
" <title>Title</title>\n" +
"</head>\n" +
"<body style=\"align-content: center;\">\n" +
" <div style=\"width: 800px;margin: 0px auto;\">\n" +
" <div style=\"font-size: 15px;\">\n" +
" <p>尊敬的用户,您好:</p>\n" +
" <p>&nbsp;&nbsp;&nbsp;&nbsp;,您所管理的"+warehouseName+"仓库发生异常:"+desp+",请及时处理</p>\n"+
" <br>\n" +
" <p>致好!</p>\n" +
" <br>\n" +
" </div>\n" +
" <br>\n" +
" <div style=\"background-image: url(http://211.161.200.169:38091/test/dist/assets/images/bg.jpg) ; width: 800px;height: 125px;background-repeat: no-repeat;\">\n" +
" <div style=\"float: left;\">\n" +
" <div style=\"width:240px;height:110px;padding-top:15px;margin-left: 45px;float: left\">\n" +
" <div style=\"width:85px; height:85px;float: right;padding-top: 5px;padding-right: 8px\">\n" +
" <img src=\"http://211.161.200.169:38091/test/dist/assets/images/WitiumGuan.png \" width=\"85\" height=\"85\">\n" +
" </div>\n" +
" <span style=\"display:block;font-size: small;font-family: Arial;margin-left: 13px;font-weight: 300;padding-top: 36px\">辉度官方网站</span>\n" +
" <a href=\"http://www.witium.cn\"><img src=\"http://211.161.200.169:38091/test/dist/assets/images/guan.png\" width=\"110\" height=\"35\" style=\"margin-top: 3px\"></a>\n" +
" </div>\n" +
" <div style=\"width:240px;height:110px;margin-top:-110px;margin-left: 310px;float: inherit;\" >\n" +
" <div style=\"width:85px; height:85px;float: right;padding-top: 5px;padding-right: 8px\">\n" +
" <img src=\"http://211.161.200.169:38091/test/dist/assets/images/WitCloud.png \" width=\"85\" height=\"85\">\n" +
" </div>\n" +
" <span style=\"display:block;font-size: small;font-family: Arial;margin-left: 15px;font-weight: 300;padding-top: 50px\">云平台网站</span>\n" +
" </div>\n" +
" <div style=\"width:240px;height:110px;margin-top: -110px;float: right;\">\n" +
" <div style=\"width:85px; height:85px;float: right;padding-top: 4px;padding-right: 8px\">\n" +
" <img src=\"http://211.161.200.169:38091/test/dist/assets/images/Witium.jpg \" width=\"85\" height=\"85\">\n" +
" </div>\n" +
" <span style=\"display:block;font-size: small;font-family: Arial;margin-left: 35px;font-weight: 300;padding-top: 50px\">辉度微信公众号</span>\n" +
" </div>\n" +
" </div>\n" +
" </div>\n" +
" <div style=\"width: 800px;height:40px;font-size: 14px;background-color: #2196F3;\">\n" +
" <span style=\"display:block;color: #f8f7ff;text-align: center;padding: 10px;\">\n" +
" TEL:086-21-37774020&nbsp;&nbsp;&nbsp;&nbsp;FAX:086-21-37774010&nbsp;&nbsp;&nbsp;&nbsp;Email:sales@witium.com\n" +
" </span>\n" +
" </div>\n" +
" </div>\n" +
"</body>\n" +
"</html>";
return html;
}
} }
...@@ -1187,7 +1187,7 @@ public class WarehouseController { ...@@ -1187,7 +1187,7 @@ public class WarehouseController {
@ApiImplicitParam(paramType="header", name = "AccountLanguage", value = "language", required = true, dataType = "String"), @ApiImplicitParam(paramType="header", name = "AccountLanguage", value = "language", required = true, dataType = "String"),
}) })
@RequestMapping(value = "/getDataByTime",method = RequestMethod.POST) @RequestMapping(value = "/getDataByTime",method = RequestMethod.POST)
public String getDataByTime( HttpServletRequest request, @RequestBody DownloadForWarehouseVo downloadForWarehouseVo) { public Object getDataByTime( HttpServletRequest request, @RequestBody DownloadForWarehouseVo downloadForWarehouseVo) {
String token = request.getHeader("Account_token"); String token = request.getHeader("Account_token");
String datum = tokenRedisService.get("TOKEN_" +token); String datum = tokenRedisService.get("TOKEN_" +token);
UserRedisVo user = gson.fromJson(datum,UserRedisVo.class); UserRedisVo user = gson.fromJson(datum,UserRedisVo.class);
...@@ -1286,7 +1286,7 @@ public class WarehouseController { ...@@ -1286,7 +1286,7 @@ public class WarehouseController {
warehouseGatewayDateVo.setWarehouseDataVos(warehouseDataVos); warehouseGatewayDateVo.setWarehouseDataVos(warehouseDataVos);
warehouseGatewayDateVoList.add(warehouseGatewayDateVo); warehouseGatewayDateVoList.add(warehouseGatewayDateVo);
} }
return gson.toJson(warehouseGatewayDateVoList); return warehouseGatewayDateVoList;
} }
//生成仓库编号 //生成仓库编号
......
...@@ -27,7 +27,7 @@ spring.messages.cache-seconds= 3600 ...@@ -27,7 +27,7 @@ spring.messages.cache-seconds= 3600
spring.messages.encoding=UTF-8 spring.messages.encoding=UTF-8
tdl.redis.host=172.16.1.24 tdl.redis.host=172.16.1.14
tdl.redis.index=0 tdl.redis.index=0
tdl.redis.port=6379 tdl.redis.port=6379
tdl.redis.password= tdl.redis.password=
...@@ -76,6 +76,8 @@ tdl.core.delete =http://172.16.24:8079/witium/delMount ...@@ -76,6 +76,8 @@ tdl.core.delete =http://172.16.24:8079/witium/delMount
mqtt.userName = ugen mqtt.userName = ugen
mqtt.password = ugen mqtt.password = ugen
alarm.interval.time = 14400000
......
...@@ -31,8 +31,8 @@ ...@@ -31,8 +31,8 @@
#{humidityLower,jdbcType=FLOAT}, #{humidityLower,jdbcType=FLOAT},
#{tiltUpper,jdbcType=FLOAT}, #{tiltUpper,jdbcType=FLOAT},
#{tilt,jdbcType=FLOAT}, #{tilt,jdbcType=FLOAT},
#{shockUpper,jdbcType=INTEGER}, #{shockUpper,jdbcType=FLOAT},
#{shock,jdbcType=INTEGER}, #{shock,jdbcType=FLOAT},
(SELECT id from company where companyNo=#{companyNo,jdbcType=VARCHAR}), (SELECT id from company where companyNo=#{companyNo,jdbcType=VARCHAR}),
#{remark,jdbcType=VARCHAR} #{remark,jdbcType=VARCHAR}
) )
...@@ -52,8 +52,8 @@ ...@@ -52,8 +52,8 @@
humidityLower =#{humidityLower,jdbcType=FLOAT}, humidityLower =#{humidityLower,jdbcType=FLOAT},
tiltUpper = #{tiltUpper,jdbcType=FLOAT}, tiltUpper = #{tiltUpper,jdbcType=FLOAT},
tilt = #{tilt,jdbcType=FLOAT}, tilt = #{tilt,jdbcType=FLOAT},
shockUpper = #{shockUpper,jdbcType=INTEGER}, shockUpper = #{shockUpper,jdbcType=FLOAT},
shock = #{shock,jdbcType=INTEGER}, shock = #{shock,jdbcType=FLOAT},
remark=#{remark,jdbcType=VARCHAR} remark=#{remark,jdbcType=VARCHAR}
WHERE alarmType=#{oldAlarmType,jdbcType=VARCHAR} WHERE alarmType=#{oldAlarmType,jdbcType=VARCHAR}
AND company_id=(SELECT id from company where companyNo=#{companyNo,jdbcType=VARCHAR}) AND company_id=(SELECT id from company where companyNo=#{companyNo,jdbcType=VARCHAR})
......
...@@ -138,6 +138,13 @@ ...@@ -138,6 +138,13 @@
SELECT useScene from gateway where SN=#{SN,jdbcType=VARCHAR} and type=#{type,jdbcType=VARCHAR} SELECT useScene from gateway where SN=#{SN,jdbcType=VARCHAR} and type=#{type,jdbcType=VARCHAR}
</select> </select>
<select id="getByGateway" resultType="com.example.tdl.domain.vo.AlarmNoVo" parameterType="String">
select DISTINCT g.useScene mode, transportationNo, warehouseNo from gateway g INNER JOIN tdldevice t on t.gateway_id = g.id
LEFT JOIN circuit c on c.id = t.circuit_id
LEFT JOIN warehouse w on w.id = t.warehouse_id
where g.SN=#{SN,jdbcType=VARCHAR} and g.type=#{type,jdbcType=VARCHAR}
</select>
<!-- <insert id="addGateway" parameterType="com.example.tdl.domain.vo.AddGatewayVo"> <!-- <insert id="addGateway" parameterType="com.example.tdl.domain.vo.AddGatewayVo">
INSERT into gateway VALUES ( INSERT into gateway VALUES (
......
...@@ -86,4 +86,12 @@ ...@@ -86,4 +86,12 @@
AND TDLSN IS NOT NULL AND TDLSN IS NOT NULL
AND endTime is NULL AND endTime is NULL
</select> </select>
<select id="getByWarehouseNo" parameterType="String" resultType="com.example.tdl.domain.vo.ResultWarehouseNoAndTDLSNAndTimeVo">
SELECT TDLSN,gatewaySN,gatewayType,warehouseNo,alarmType,temMax,temMin,humidityMax,humidityMin,t.createTime,t.endTime
from tdl_gateway_log t INNER JOIN alarm a ON t.alarm_id=a.id
where warehouseNo=#{warehouseNo,jdbcType=VARCHAR}
AND TDLSN IS NOT NULL
AND endTime is NULL
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -13,7 +13,8 @@ ...@@ -13,7 +13,8 @@
#{alarmTime,jdbcType=BIGINT}, #{alarmTime,jdbcType=BIGINT},
#{desp,jdbcType=VARCHAR}, #{desp,jdbcType=VARCHAR},
#{alarmNo,jdbcType=VARCHAR}, #{alarmNo,jdbcType=VARCHAR},
0 #{classify,jdbcType=VARCHAR},
#{delState,jdbcType=INTEGER}
) )
</insert> </insert>
...@@ -61,4 +62,9 @@ ...@@ -61,4 +62,9 @@
and DATE_SUB(CURDATE(), INTERVAL #{time,jdbcType=VARCHAR} DAY) &lt;= date(FROM_UNIXTIME(alarmTime/1000,'%Y-%m-%d %H:%i:%s')) and DATE_SUB(CURDATE(), INTERVAL #{time,jdbcType=VARCHAR} DAY) &lt;= date(FROM_UNIXTIME(alarmTime/1000,'%Y-%m-%d %H:%i:%s'))
</select> </select>
<select id="getLastProcessedAlarm" parameterType="String" resultType="java.lang.Long">
select alarmTime from warehouse_alarmlog where warehouseNo =#{warehouseNo,jdbcType=VARCHAR} and delState =1 order by alarmTime desc limit 1
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -301,4 +301,12 @@ ...@@ -301,4 +301,12 @@
and ct.id = w.city_id and ct.id = w.city_id
and w.warehouseNo=#{warehouseNo,jdbcType=VARCHAR} and w.warehouseNo=#{warehouseNo,jdbcType=VARCHAR}
</select> </select>
<select id="getUserByWarehouse" resultType="com.example.tdl.domain.vo.ResultUserVo" parameterType="String">
select userNumber,userName,u.email,u.phone
from warehouse w,warehouse_and_user wu,`user` u
where w.id = wu.warehouse_id
and u.id = wu.user_id
and w.warehouseNo=#{warehouseNo,jdbcType=VARCHAR}
</select>
</mapper> </mapper>
\ No newline at end of file
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