Commit 64006e7e authored by zhuangzhuang's avatar zhuangzhuang

增加首页数据,增加博士专用预警接口,修改告警记录的接口

parent e7eae89e
......@@ -51,6 +51,7 @@ dependencies {
compile files('libs/javacsv-2.0.jar')
compile ('com.github.miwurster:spring-data-influxdb:1.6')
compile('org.springframework.boot:spring-boot-starter-mail')
compile('com.aliyun:aliyun-java-sdk-core:4.0.3')
}
jar {
......
......@@ -15,10 +15,10 @@ public class MyWebMvcConfigurer extends WebMvcConfigurerAdapter {
return new LoginInterceptor();
}
@Bean
public PermissionInterceptor permissionInterceptor(){
return new PermissionInterceptor();
}
// @Bean
// public PermissionInterceptor permissionInterceptor(){
// return new PermissionInterceptor();
// }
@Override
public void addInterceptors(InterceptorRegistry registry) {
......@@ -26,14 +26,14 @@ public class MyWebMvcConfigurer extends WebMvcConfigurerAdapter {
.excludePathPatterns("/alarmLog/addAlarmLog")
.excludePathPatterns("/login/**")
.excludePathPatterns("/getData");
registry.addInterceptor(permissionInterceptor())
.excludePathPatterns("/login/**")
.excludePathPatterns("/alarmLog/addAlarmLog")
.excludePathPatterns("/side/**")
.excludePathPatterns("/downLoad")
.excludePathPatterns("/getAddress")
.excludePathPatterns("/test")
.excludePathPatterns("/getData");
// registry.addInterceptor(permissionInterceptor())
// .excludePathPatterns("/login/**")
// .excludePathPatterns("/alarmLog/addAlarmLog")
// .excludePathPatterns("/side/**")
// .excludePathPatterns("/downLoad")
// .excludePathPatterns("/getAddress")
// .excludePathPatterns("/test")
// .excludePathPatterns("/getData");
super.addInterceptors(registry);
}
......
......@@ -67,6 +67,13 @@ public class ScheduleConfig {
}
@Scheduled(cron ="0 0 0 1 * ? ")
public void scheduler2(){
//获取每个仓库的历史数据并生成报表发给每个人
}
public String message(String warehouseNo,String startTime,String endTime,Integer tempCount,String tempTime,Integer humCount,String humTime){
String html="<!DOCTYPE html>\n" +
"<html lang=\"en\">\n" +
......
......@@ -13,6 +13,8 @@ public class AddAlarmLogVo {
private Long ts;
private Integer alarmno;
private List<AlarmData> alarm;
public static class AlarmData {
......@@ -121,6 +123,14 @@ public class AddAlarmLogVo {
this.ts = ts;
}
public Integer getAlarmno() {
return alarmno;
}
public void setAlarmno(Integer alarmno) {
this.alarmno = alarmno;
}
public List<AlarmData> getAlarm() {
return alarm;
}
......
package com.example.tdl.domain.vo;
public class AddBoschAlarmVo {
private String alarmType;
private Float temUpper;//温度上限
private Float temMax;//温度上限
private Float temMin;//温度下限
private Float temLower;//温度下限
private Float humidityUpper;//湿度上限
private Float humidityMax;//湿度上限
private Float humidityMin;//湿度下限
private Float humidityLower;//湿度下限
private Float tiltUpper;//倾斜度
private Float tilt;//倾斜度
private Integer shockUpper;//震度
private Integer shock;//震度
private String remark;
private String companyNo;
public String getAlarmType() {
return alarmType;
}
public void setAlarmType(String alarmType) {
this.alarmType = alarmType;
}
public Float getTemUpper() {
return temUpper;
}
public void setTemUpper(Float temUpper) {
this.temUpper = temUpper;
}
public Float getTemMax() {
return temMax;
}
public void setTemMax(Float temMax) {
this.temMax = temMax;
}
public Float getTemMin() {
return temMin;
}
public void setTemMin(Float temMin) {
this.temMin = temMin;
}
public Float getTemLower() {
return temLower;
}
public void setTemLower(Float temLower) {
this.temLower = temLower;
}
public Float getHumidityUpper() {
return humidityUpper;
}
public void setHumidityUpper(Float humidityUpper) {
this.humidityUpper = humidityUpper;
}
public Float getHumidityMax() {
return humidityMax;
}
public void setHumidityMax(Float humidityMax) {
this.humidityMax = humidityMax;
}
public Float getHumidityMin() {
return humidityMin;
}
public void setHumidityMin(Float humidityMin) {
this.humidityMin = humidityMin;
}
public Float getHumidityLower() {
return humidityLower;
}
public void setHumidityLower(Float humidityLower) {
this.humidityLower = humidityLower;
}
public Float getTiltUpper() {
return tiltUpper;
}
public void setTiltUpper(Float tiltUpper) {
this.tiltUpper = tiltUpper;
}
public Float getTilt() {
return tilt;
}
public void setTilt(Float tilt) {
this.tilt = tilt;
}
public Integer getShockUpper() {
return shockUpper;
}
public void setShockUpper(Integer shockUpper) {
this.shockUpper = shockUpper;
}
public Integer getShock() {
return shock;
}
public void setShock(Integer shock) {
this.shock = shock;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getCompanyNo() {
return companyNo;
}
public void setCompanyNo(String companyNo) {
this.companyNo = companyNo;
}
}
......@@ -4,9 +4,13 @@ public class AlarmRuleVo {
private String rule;
private String maxval;
private Double upperval;
private String minval;
private Double maxval;
private Double minval;
private Double lowerval;
private String mode;
......@@ -20,22 +24,38 @@ public class AlarmRuleVo {
this.rule = rule;
}
public String getMaxval() {
public Double getUpperval() {
return upperval;
}
public void setUpperval(Double upperval) {
this.upperval = upperval;
}
public Double getMaxval() {
return maxval;
}
public void setMaxval(String maxval) {
public void setMaxval(Double maxval) {
this.maxval = maxval;
}
public String getMinval() {
public Double getMinval() {
return minval;
}
public void setMinval(String minval) {
public void setMinval(Double minval) {
this.minval = minval;
}
public Double getLowerval() {
return lowerval;
}
public void setLowerval(Double lowerval) {
this.lowerval = lowerval;
}
public String getMode() {
return mode;
}
......
package com.example.tdl.domain.vo;
import java.util.List;
public class BoschHomepageVo {
private Integer sum;//总线路
private Integer onRoute;//在途线路数量
private Integer alarmed;//报警线路数量
private Integer delay;//迟到线路数量
private Integer total;//仓库总数
private Integer alert;//仓库报警数量
private List<CircuitVo> circuitList;
private List<ResultWarehouseVo> warehouseVoList;
private List<HistogramData> circuitHistogramDataList;
private List<HistogramData> warehouseHistogramDataList;
public Integer getSum() {
return sum;
}
public void setSum(Integer sum) {
this.sum = sum;
}
public Integer getOnRoute() {
return onRoute;
}
public void setOnRoute(Integer onRoute) {
this.onRoute = onRoute;
}
public Integer getAlarmed() {
return alarmed;
}
public void setAlarmed(Integer alarmed) {
this.alarmed = alarmed;
}
public Integer getDelay() {
return delay;
}
public void setDelay(Integer delay) {
this.delay = delay;
}
public Integer getTotal() {
return total;
}
public void setTotal(Integer total) {
this.total = total;
}
public Integer getAlert() {
return alert;
}
public void setAlert(Integer alert) {
this.alert = alert;
}
public List<CircuitVo> getCircuitList() {
return circuitList;
}
public void setCircuitList(List<CircuitVo> circuitList) {
this.circuitList = circuitList;
}
public List<ResultWarehouseVo> getWarehouseVoList() {
return warehouseVoList;
}
public void setWarehouseVoList(List<ResultWarehouseVo> warehouseVoList) {
this.warehouseVoList = warehouseVoList;
}
public List<HistogramData> getCircuitHistogramDataList() {
return circuitHistogramDataList;
}
public void setCircuitHistogramDataList(List<HistogramData> circuitHistogramDataList) {
this.circuitHistogramDataList = circuitHistogramDataList;
}
public List<HistogramData> getWarehouseHistogramDataList() {
return warehouseHistogramDataList;
}
public void setWarehouseHistogramDataList(List<HistogramData> warehouseHistogramDataList) {
this.warehouseHistogramDataList = warehouseHistogramDataList;
}
}
package com.example.tdl.domain.vo;
public class ResultBoschAlarmVo {
private String alarmType;
private Double temUpper;//温度上限
private Double temMax;//温度上限
private Double temMin;//温度下限
private Double temLower;//温度下限
private Double humidityUpper;//湿度上限
private Double humidityMax;//湿度上限
private Double humidityMin;//湿度下限
private Double humidityLower;//湿度下限
private Double tiltUpper;//倾斜度
private Double tilt;//倾斜度
private Integer shockUpper;//震度
private Integer shock;//震度
private String remark;
public String getAlarmType() {
return alarmType;
}
public void setAlarmType(String alarmType) {
this.alarmType = alarmType;
}
public Double getTemUpper() {
return temUpper;
}
public void setTemUpper(Double temUpper) {
this.temUpper = temUpper;
}
public Double getTemMax() {
return temMax;
}
public void setTemMax(Double temMax) {
this.temMax = temMax;
}
public Double getTemMin() {
return temMin;
}
public void setTemMin(Double temMin) {
this.temMin = temMin;
}
public Double getTemLower() {
return temLower;
}
public void setTemLower(Double temLower) {
this.temLower = temLower;
}
public Double getHumidityUpper() {
return humidityUpper;
}
public void setHumidityUpper(Double humidityUpper) {
this.humidityUpper = humidityUpper;
}
public Double getHumidityMax() {
return humidityMax;
}
public void setHumidityMax(Double humidityMax) {
this.humidityMax = humidityMax;
}
public Double getHumidityMin() {
return humidityMin;
}
public void setHumidityMin(Double humidityMin) {
this.humidityMin = humidityMin;
}
public Double getHumidityLower() {
return humidityLower;
}
public void setHumidityLower(Double humidityLower) {
this.humidityLower = humidityLower;
}
public Double getTiltUpper() {
return tiltUpper;
}
public void setTiltUpper(Double tiltUpper) {
this.tiltUpper = tiltUpper;
}
public Double getTilt() {
return tilt;
}
public void setTilt(Double tilt) {
this.tilt = tilt;
}
public Integer getShockUpper() {
return shockUpper;
}
public void setShockUpper(Integer shockUpper) {
this.shockUpper = shockUpper;
}
public Integer getShock() {
return shock;
}
public void setShock(Integer shock) {
this.shock = shock;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
......@@ -13,6 +13,8 @@ public class ResultTDLDeviceVo {
private String warehouseName;
private String warehouseNo;
private String transportationNo;
private String gatewaySN;
......@@ -77,6 +79,14 @@ public class ResultTDLDeviceVo {
this.warehouseName = warehouseName;
}
public String getWarehouseNo() {
return warehouseNo;
}
public void setWarehouseNo(String warehouseNo) {
this.warehouseNo = warehouseNo;
}
public String getTransportationNo() {
return transportationNo;
}
......
package com.example.tdl.domain.vo;
public class ResultWarehouseDetailsVo {
private String warehouseNo;//仓库编号
private String img;
private String warehouseName;
private String country;
private String city;
private String regions;
private String addressDetail;
private String regionName;
private String property;//属性
private String type;//类型
private String hardwareLevel;//硬件等级
private Double areaIndoor;//室内平面面积
private Double areaRack;//货架面积
private Double areaOutdoor;//实际室内总面积
private Double areaPlanIndoor;//实际室内总面积
private String office;//办事处
private String timeZone;//时区
private String warehouseInfo;//基础描述
private String companyNo;
private String companyName;
private String temp;
private String humi;
private String alarmDesciption;
private String remark;
public String getWarehouseNo() {
return warehouseNo;
}
public void setWarehouseNo(String warehouseNo) {
this.warehouseNo = warehouseNo;
}
public String getImg() {
return img;
}
public void setImg(String img) {
this.img = img;
}
public String getWarehouseName() {
return warehouseName;
}
public void setWarehouseName(String warehouseName) {
this.warehouseName = warehouseName;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getRegions() {
return regions;
}
public void setRegions(String regions) {
this.regions = regions;
}
public String getAddressDetail() {
return addressDetail;
}
public void setAddressDetail(String addressDetail) {
this.addressDetail = addressDetail;
}
public String getRegionName() {
return regionName;
}
public void setRegionName(String regionName) {
this.regionName = regionName;
}
public String getProperty() {
return property;
}
public void setProperty(String property) {
this.property = property;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getHardwareLevel() {
return hardwareLevel;
}
public void setHardwareLevel(String hardwareLevel) {
this.hardwareLevel = hardwareLevel;
}
public Double getAreaIndoor() {
return areaIndoor;
}
public void setAreaIndoor(Double areaIndoor) {
this.areaIndoor = areaIndoor;
}
public Double getAreaRack() {
return areaRack;
}
public void setAreaRack(Double areaRack) {
this.areaRack = areaRack;
}
public Double getAreaOutdoor() {
return areaOutdoor;
}
public void setAreaOutdoor(Double areaOutdoor) {
this.areaOutdoor = areaOutdoor;
}
public Double getAreaPlanIndoor() {
return areaPlanIndoor;
}
public void setAreaPlanIndoor(Double areaPlanIndoor) {
this.areaPlanIndoor = areaPlanIndoor;
}
public String getOffice() {
return office;
}
public void setOffice(String office) {
this.office = office;
}
public String getTimeZone() {
return timeZone;
}
public void setTimeZone(String timeZone) {
this.timeZone = timeZone;
}
public String getWarehouseInfo() {
return warehouseInfo;
}
public void setWarehouseInfo(String warehouseInfo) {
this.warehouseInfo = warehouseInfo;
}
public String getCompanyNo() {
return companyNo;
}
public void setCompanyNo(String companyNo) {
this.companyNo = companyNo;
}
public String getCompanyName() {
return companyName;
}
public void setCompanyName(String companyName) {
this.companyName = companyName;
}
public String getTemp() {
return temp;
}
public void setTemp(String temp) {
this.temp = temp;
}
public String getHumi() {
return humi;
}
public void setHumi(String humi) {
this.humi = humi;
}
public String getAlarmDesciption() {
return alarmDesciption;
}
public void setAlarmDesciption(String alarmDesciption) {
this.alarmDesciption = alarmDesciption;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
package com.example.tdl.domain.vo;
public class UpdateBoschAlarmVo {
private String alarmType;
private Float temUpper;//温度上限
private Float temMax;//温度上限
private Float temMin;//温度下限
private Float temLower;//温度下限
private Float humidityUpper;//湿度上限
private Float humidityMax;//湿度上限
private Float humidityMin;//湿度下限
private Float humidityLower;//湿度下限
private Float tiltUpper;//倾斜度
private Float tilt;//倾斜度
private Integer shockUpper;//震度
private Integer shock;//震度
private String remark;
private String companyNo;
private String oldAlarmType;
public String getAlarmType() {
return alarmType;
}
public void setAlarmType(String alarmType) {
this.alarmType = alarmType;
}
public Float getTemUpper() {
return temUpper;
}
public void setTemUpper(Float temUpper) {
this.temUpper = temUpper;
}
public Float getTemMax() {
return temMax;
}
public void setTemMax(Float temMax) {
this.temMax = temMax;
}
public Float getTemMin() {
return temMin;
}
public void setTemMin(Float temMin) {
this.temMin = temMin;
}
public Float getTemLower() {
return temLower;
}
public void setTemLower(Float temLower) {
this.temLower = temLower;
}
public Float getHumidityUpper() {
return humidityUpper;
}
public void setHumidityUpper(Float humidityUpper) {
this.humidityUpper = humidityUpper;
}
public Float getHumidityMax() {
return humidityMax;
}
public void setHumidityMax(Float humidityMax) {
this.humidityMax = humidityMax;
}
public Float getHumidityMin() {
return humidityMin;
}
public void setHumidityMin(Float humidityMin) {
this.humidityMin = humidityMin;
}
public Float getHumidityLower() {
return humidityLower;
}
public void setHumidityLower(Float humidityLower) {
this.humidityLower = humidityLower;
}
public Float getTiltUpper() {
return tiltUpper;
}
public void setTiltUpper(Float tiltUpper) {
this.tiltUpper = tiltUpper;
}
public Float getTilt() {
return tilt;
}
public void setTilt(Float tilt) {
this.tilt = tilt;
}
public Integer getShockUpper() {
return shockUpper;
}
public void setShockUpper(Integer shockUpper) {
this.shockUpper = shockUpper;
}
public Integer getShock() {
return shock;
}
public void setShock(Integer shock) {
this.shock = shock;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getCompanyNo() {
return companyNo;
}
public void setCompanyNo(String companyNo) {
this.companyNo = companyNo;
}
public String getOldAlarmType() {
return oldAlarmType;
}
public void setOldAlarmType(String oldAlarmType) {
this.oldAlarmType = oldAlarmType;
}
}
......@@ -20,10 +20,12 @@ public class WarehouseAlarmLog {
private Integer alarmNo;
private String classify;
public WarehouseAlarmLog() {
}
public WarehouseAlarmLog(String warehouseNo, String gSN, String gType, String TDLSN, String description, Float data, Long alarmTime, String desp, Integer alarmNo) {
public WarehouseAlarmLog(String warehouseNo, String gSN, String gType, String TDLSN, String description, Float data, Long alarmTime, String desp, Integer alarmNo,String classify) {
this.warehouseNo = warehouseNo;
this.gSN = gSN;
this.gType = gType;
......@@ -33,6 +35,7 @@ public class WarehouseAlarmLog {
this.alarmTime = alarmTime;
this.desp = desp;
this.alarmNo = alarmNo;
this.classify = classify;
}
public String getWarehouseNo() {
......@@ -106,4 +109,12 @@ public class WarehouseAlarmLog {
public void setAlarmNo(Integer alarmNo) {
this.alarmNo = alarmNo;
}
public String getClassify() {
return classify;
}
public void setClassify(String classify) {
this.classify = classify;
}
}
package com.example.tdl.mapper;
import com.example.tdl.domain.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface BoschAlarmMapper {
List<ResultBoschAlarmVo> getAll(String companyNo);
List<ResultBoschAlarmVo> getAllByAlarmType(@Param("companyNo") String companyNo, @Param("alarmType") String alarmType);
int addAlarm(AddBoschAlarmVo addAlarmVo);
int updateAlarm(UpdateBoschAlarmVo updateAlarmVo);
int delAlarm(DelAlarmVo delAlarmVo);
ResultBoschAlarmVo getByType(@Param("alarmType") String alarmType,@Param("companyNo") String companyNo);
ResultBoschAlarmVo getAlarmByWarehouseNo(@Param("warehouseNo") String warehouseNo ,@Param("gatewaySN")String gatewaySN,@Param("TDLSN")String TDLSN);
}
......@@ -59,6 +59,8 @@ public interface CircuitMapper {
List<ResultCircuitVo> getByTime(String companyNo);
List<CircuitVo> getHomepageCircuit(String companyNo);
CircuitMessage getMessage(String transportationNo);
String getStartCity(String transportationNo);
......
......@@ -39,4 +39,6 @@ public interface GatewayMapper {
List<TypeVo> getGatewayType(@Param("companyNo") String companyNo);
Integer getModeByGateway(@Param("SN") String SN,@Param("type") String type);
}
package com.example.tdl.mapper;
import com.example.tdl.domain.vo.HistogramData;
import com.example.tdl.domain.vo.WarehouseAlarmLog;
import com.example.tdl.domain.vo.WarehouseCountVo;
import org.apache.ibatis.annotations.Mapper;
......@@ -15,5 +16,11 @@ public interface WarehouseAlarmLogMapper {
List<WarehouseCountVo> getCount(@Param("warehouseNo") String warehouseNo, @Param("startTime") Long startTime,@Param("endTime") Long endTime ,@Param("desp")String desp);
String getLastAlarm(String warehouseNo);
List<HistogramData> getByCount(@Param("time")String time, @Param("companyNo")String companyNo);
Integer getAlarmCount(@Param("time")String time, @Param("companyNo")String companyNo);
}
......@@ -56,4 +56,9 @@ public interface WarehouseMapper {
List<WarehouseNameVo> getWarehouseName(@Param("warehouseName") String warehouseName,@Param("companyNo") String companyNo );
List<String> getEmailByWarehouse(String warehouseNo);
ResultWarehouseDetailsVo getDetailsBywarehouseNo(String warehouseNo);
}
package com.example.tdl.service;
import com.example.tdl.domain.vo.*;
import com.example.tdl.mapper.AlarmMapper;
import com.example.tdl.mapper.BoschAlarmMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class BoschAlarmService {
@Autowired
private BoschAlarmMapper alarmMapper;
public List<ResultBoschAlarmVo> getAll(String companyNo){
return alarmMapper.getAll(companyNo);
}
public List<ResultBoschAlarmVo> getAllByAlarmType(String companyNo,String alarmType){
return alarmMapper.getAllByAlarmType(companyNo,alarmType);
}
public int addAlarm(AddBoschAlarmVo addAlarmVo){
return alarmMapper.addAlarm(addAlarmVo);
}
public int updateAlarm(UpdateBoschAlarmVo updateAlarmVo){
return alarmMapper.updateAlarm(updateAlarmVo);
}
public int delAlarm(DelAlarmVo delAlarmVo){
return alarmMapper.delAlarm(delAlarmVo);
}
public ResultBoschAlarmVo getByType(String alarmType,String companyNo){
return alarmMapper.getByType(alarmType,companyNo);
}
public ResultBoschAlarmVo getAlarmByWarehouseNo(String warehouseNo,String SN, String TDLSN){
return alarmMapper.getAlarmByWarehouseNo(warehouseNo,SN, TDLSN);
}
}
......@@ -116,6 +116,10 @@ public class CircuitService {
return circuitMapper.getByTime(companyNo);
}
public List<CircuitVo> getHomepageCircuit(String companyNo){
return circuitMapper.getHomepageCircuit(companyNo);
}
public CircuitMessage getMessage(String transportationNo){
return circuitMapper.getMessage(transportationNo);
......
......@@ -75,4 +75,9 @@ public class GatewayService {
public List<TypeVo> getGatewayType(String companyNo){
return gatewayMapper.getGatewayType(companyNo);
}
public Integer getModeByGateway(String SN,String type){
return gatewayMapper.getModeByGateway(SN,type);
}
}
package com.example.tdl.service;
import com.example.tdl.domain.vo.HistogramData;
import com.example.tdl.domain.vo.WarehouseAlarmLog;
import com.example.tdl.domain.vo.WarehouseCountVo;
import com.example.tdl.mapper.WarehouseAlarmLogMapper;
......@@ -23,4 +24,16 @@ public class WarehouseAlarmLogService {
public List<WarehouseCountVo> getCount(String warehouseNo, Long startTime, Long endTime,String desp ){
return warehouseAlarmLogMapper.getCount(warehouseNo,startTime,endTime,desp);
}
public String getLastAlarm(String warehouseNo){
return warehouseAlarmLogMapper.getLastAlarm(warehouseNo);
}
public List<HistogramData> getByCount(String time,String companyNo){
return warehouseAlarmLogMapper.getByCount(time,companyNo);
}
public Integer getAlarmCount(String time,String companyNo){
return warehouseAlarmLogMapper.getAlarmCount(time,companyNo);
}
}
......@@ -105,4 +105,8 @@ public class WarehouseService {
public List<String> getEmailByWarehouse(String warehouseNo){
return warehouseMapper.getEmailByWarehouse(warehouseNo);
}
public ResultWarehouseDetailsVo getDetailsBywarehouseNo(String warehouseNo){
return warehouseMapper.getDetailsBywarehouseNo(warehouseNo);
}
}
package com.example.tdl.shiro;
import org.apache.shiro.cache.ehcache.EhCacheManager;
import org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO;
import org.apache.shiro.session.mgt.eis.JavaUuidSessionIdGenerator;
import org.apache.shiro.spring.LifecycleBeanPostProcessor;
import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.filter.authc.LogoutFilter;
import org.apache.shiro.web.mgt.CookieRememberMeManager;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.apache.shiro.web.servlet.SimpleCookie;
import org.apache.shiro.web.session.mgt.DefaultWebSessionManager;
import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import javax.servlet.Filter;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* shiro配置类
* Created by cdyoue on 2016/10/21.
*/
@Configuration
public class ShiroConfiguration{
/**
* LifecycleBeanPostProcessor,这是个DestructionAwareBeanPostProcessor的子类,
* 负责org.apache.shiro.util.Initializable类型bean的生命周期的,初始化和销毁。
* 主要是AuthorizingRealm类的子类,以及EhCacheManager类。
*/
@Bean(name = "lifecycleBeanPostProcessor")
public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
return new LifecycleBeanPostProcessor();
}
/**
* HashedCredentialsMatcher,这个类是为了对密码进行编码的,
* 防止密码在数据库里明码保存,当然在登陆认证的时候,
* 这个类也负责对form里输入的密码进行编码。
*/
/*@Bean(name = "hashedCredentialsMatcher")
public HashedCredentialsMatcher hashedCredentialsMatcher() {
HashedCredentialsMatcher credentialsMatcher = new HashedCredentialsMatcher();
credentialsMatcher.setHashAlgorithmName("MD5");
credentialsMatcher.setHashIterations(2);
credentialsMatcher.setStoredCredentialsHexEncoded(true);
return credentialsMatcher;
}*/
@Bean(name="userCredentialsMatcher")
public UserCredentialsMatcher userCredentialsMatcher(){
UserCredentialsMatcher credentialsMatcher = new UserCredentialsMatcher();
return credentialsMatcher;
}
/**
* ShiroRealm,这是个自定义的认证类,继承自AuthorizingRealm,
* 负责用户的认证和权限的处理,可以参考JdbcRealm的实现。
*/
@Bean(name = "shiroRealm")
@DependsOn("lifecycleBeanPostProcessor")
public ShiroRealm shiroRealm() {
ShiroRealm realm = new ShiroRealm();
// realm.setCredentialsMatcher(hashedCredentialsMatcher());
return realm;
}
/**
* EhCacheManager,缓存管理,用户登陆成功后,把用户信息和权限信息缓存起来,
* 然后每次用户请求时,放入用户的session中,如果不设置这个bean,每个请求都会查询一次数据库。
*/
@Bean(name = "ehCacheManager")
@DependsOn("lifecycleBeanPostProcessor")
public EhCacheManager ehCacheManager() {
return new EhCacheManager();
}
/**
* SecurityManager,权限管理,这个类组合了登陆,登出,权限,session的处理,是个比较重要的类。
* //
*/
@Bean(name = "securityManager")
public DefaultWebSecurityManager securityManager() {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setRealm(shiroRealm());
securityManager.setCacheManager(ehCacheManager());
return securityManager;
}
/**
* ShiroFilterFactoryBean,是个factorybean,为了生成ShiroFilter。
* 它主要保持了三项数据,securityManager,filters,filterChainDefinitionManager。
*/
@Bean(name = "shiroFilter")
public ShiroFilterFactoryBean shiroFilterFactoryBean() {
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
shiroFilterFactoryBean.setSecurityManager(securityManager());
Map<String, Filter> filters = new LinkedHashMap<String, Filter>();
LogoutFilter logoutFilter = new LogoutFilter();
logoutFilter.setRedirectUrl("/login");
// filters.put("logout",null);
shiroFilterFactoryBean.setFilters(filters);
Map<String, String> filterChainDefinitionManager = new LinkedHashMap<String, String>();
filterChainDefinitionManager.put("/logout", "logout");
filterChainDefinitionManager.put("/demo/**", "authc");
//filterChainDefinitionManager.put("/user/**", "authc,roles[ROLE_USER]");
//filterChainDefinitionManager.put("/events/**", "authc,roles[ROLE_ADMIN]");
// filterChainDefinitionManager.put("/user/edit/**", "authc,perms[user:edit]");// 这里为了测试,固定写死的值,也可以从数据库或其他配置中读取
filterChainDefinitionManager.put("/**", "anon");
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionManager);
shiroFilterFactoryBean.setSuccessUrl("/demo/all");
shiroFilterFactoryBean.setUnauthorizedUrl("/demo/all");
return shiroFilterFactoryBean;
}
/**
* DefaultAdvisorAutoProxyCreator,Spring的一个bean,由Advisor决定对哪些类的方法进行AOP代理。
*/
@Bean
@ConditionalOnMissingBean
public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
DefaultAdvisorAutoProxyCreator defaultAAP = new DefaultAdvisorAutoProxyCreator();
defaultAAP.setProxyTargetClass(true);
return defaultAAP;
}
/**
* AuthorizationAttributeSourceAdvisor,shiro里实现的Advisor类,
* 内部使用AopAllianceAnnotationsAuthorizingMethodInterceptor来拦截用以下注解的方法。
*/
@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor() {
AuthorizationAttributeSourceAdvisor aASA = new AuthorizationAttributeSourceAdvisor();
aASA.setSecurityManager(securityManager());
return aASA;
}
/*
* cookie对象;
*
* @return*/
@Bean
public SimpleCookie rememberMeCookie() {
// 这个参数是cookie的名称,对应前端的checkbox 的name = rememberMe
SimpleCookie simpleCookie = new SimpleCookie("rememberMe");
//设置httpOnly为false
simpleCookie.setHttpOnly(false);
// <!-- 记住我cookie生效时间30天(259200) ,单位秒;-->
simpleCookie.setMaxAge(259200);
simpleCookie.setPath("/test/dist");
return simpleCookie;
}
/*
记住我管理器 cookie管理对象;*/
@Bean(name = "cookieRememberMeManager")
public CookieRememberMeManager rememberMeManager() {
CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager();
cookieRememberMeManager.setCookie(rememberMeCookie());
return cookieRememberMeManager;
}
@Bean
public DefaultWebSessionManager defaultWebSessionManager(){
DefaultWebSessionManager defaultWebSessionManager = new DefaultWebSessionManager();
defaultWebSessionManager.setGlobalSessionTimeout(-1000l);
defaultWebSessionManager.setDeleteInvalidSessions(true);
defaultWebSessionManager.setSessionDAO(sessionDAO());
defaultWebSessionManager.setSessionIdCookieEnabled(true);
return defaultWebSessionManager;
}
@Bean
public EnterpriseCacheSessionDAO sessionDAO(){
EnterpriseCacheSessionDAO sessionDAO = new EnterpriseCacheSessionDAO();
sessionDAO.setActiveSessionsCacheName("shiro-activeSessionCache");
sessionDAO.setSessionIdGenerator(new JavaUuidSessionIdGenerator());
return sessionDAO;
}
}
package com.example.tdl.shiro;
import com.example.tdl.domain.vo.UserVo;
import com.example.tdl.service.UserService;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.*;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.PrincipalCollection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import javax.annotation.PostConstruct;
import java.util.HashSet;
import java.util.Set;
/**
* Created by cdyoue on 2016/10/21.
*/
public class ShiroRealm extends AuthorizingRealm {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@PostConstruct
public void initCredentialsMatcher() {
setCredentialsMatcher(new UserCredentialsMatcher());
}
@Autowired
private UserService userService;
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
//授权
logger.info("doGetAuthorizationInfo+"+principalCollection.toString());
UserVo user = userService.getByUserName((String) principalCollection.getPrimaryPrincipal());
//把principals放session中 key=userId value=principals
SecurityUtils.getSubject().getSession().setAttribute(String.valueOf(user.getUserNumber()),SecurityUtils.getSubject().getPrincipals());
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
//赋予角色
// for(Role userRole:user.getRoles()){
// info.addRole(userRole.getName());
// }
//赋予权限
// for(Permission permission:permissionService.getByUserId(user.getId())){
//// if(StringUtils.isNotBlank(permission.getPermCode()))
// info.addStringPermission(permission.getName());
// }
//权限
Set<String> s = new HashSet<String>();
s.add("printer:print");
s.add("printer:query");
info.setStringPermissions(s);
//角色
Set<String> r = new HashSet<String>();
r.add("role1");
info.setRoles(r);
return info;
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
//认证
logger.info("doGetAuthenticationInfo +" + authenticationToken.toString());
UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken;
UserVo user = userService.getByUserName(token.getUsername());
if(user == null){
return null;
}
//设置用户session
Session session = SecurityUtils.getSubject().getSession();
session.setAttribute("user", user);
session.setTimeout(-1000l);
session.setAttribute("isLogin","true");
return new SimpleAuthenticationInfo(user,user.getPassword(),this.getName());
}
}
package com.example.tdl.shiro;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class UserCredentialsMatcher extends HashedCredentialsMatcher {
private Logger logger = LoggerFactory.getLogger(UserCredentialsMatcher.class);
//密码比较器
public boolean doCredentialsMatch(AuthenticationToken token,
AuthenticationInfo info){
UsernamePasswordToken upToken = (UsernamePasswordToken) token;
char[] pwd = upToken.getPassword();
//String newPwd = Encrypt.md5(new String(pwd), upToken.getUsername());
String newPwd = DigestUtils.sha256Hex(new String(pwd));
// logger.info(newPwd);
Object dbPwd = info.getCredentials();
Boolean boo = equals(newPwd, dbPwd);
return boo;
}
}
package com.example.tdl.util;
public class AlarmLogUtil {
public static String ALARM_NONE = "正常";
public static String ALARM_LMin = "过低";
public static String ALARM_EQMax = "等于最大值";
public static String ALARM_UEQMax = "不等于最大值";
public static String ALARM_UMax = "过高";
public static String ALARM_UUMax = "超高";
public static String ALARM_LLMin = "超低";
public static String ALARM_LMaxUMin = "上下限区间告警";
public static String ALARM_OFFLINE = "离线";
public static String getDescription(Integer alalrmNo){
String desp = "";
switch (alalrmNo){
case 0 :
desp = ALARM_NONE;
break;
case 1:
desp = ALARM_EQMax;
break;
case 2:
desp = ALARM_UEQMax;
break;
case 3:
desp = ALARM_UMax;
break;
case 4:
desp = ALARM_LMin;
break;
case 5:
desp = ALARM_LMaxUMin;
break;
case 6:
desp = ALARM_UUMax;
break;
case 7:
desp = ALARM_LLMin;
break;
case 99:
desp = ALARM_OFFLINE;
break;
default:
break;
}
return desp;
}
}
......@@ -2,7 +2,9 @@ package com.example.tdl.util;
import com.example.tdl.domain.vo.AlarmRuleVo;
import com.example.tdl.domain.vo.ResultAlarmVo;
import com.example.tdl.domain.vo.ResultBoschAlarmVo;
import com.example.tdl.service.AlarmService;
import com.example.tdl.service.BoschAlarmService;
import com.example.tdl.service.redis.AlarmRedisService;
import com.google.gson.Gson;
......@@ -13,37 +15,68 @@ public class AlarmRule {
private static Gson gson = new Gson();
private static List<String> list = new ArrayList<String>(){{
private static List<String> list = new ArrayList<String>(){{
add("T");
add("h");
add("a1");
add("ta");
}};
public static void saveAlarmRule(String topic, String TDLSN, String alarmType, String companyNo, AlarmService alarmService, AlarmRedisService alarmRedisService){
ResultAlarmVo alarmVo = alarmService.getByType(alarmType,companyNo);
public static void saveAlarmRule(String topic, String TDLSN, String alarmType, String companyNo, BoschAlarmService alarmService, AlarmRedisService alarmRedisService){
ResultBoschAlarmVo alarmVo = alarmService.getByType(alarmType,companyNo);
for(String alias :list){
List<AlarmRuleVo> alarmRuleVos = new ArrayList<>();
AlarmRuleVo alarmRuleVo = new AlarmRuleVo();
if(alias.equals("T")){
alarmRuleVo.setMinval(String.valueOf(alarmVo.getTemMin()));
alarmRuleVo.setMaxval(String.valueOf(alarmVo.getTemMax()));
alarmRuleVo.setMode("twoway");
alarmRuleVo.setPriority("1");
}else if(alias.equals("h")){
alarmRuleVo.setMinval(String.valueOf(alarmVo.getHumidityMin()));
alarmRuleVo.setMaxval(String.valueOf(alarmVo.getHumidityMax()));
alarmRuleVo.setMode("twoway");
alarmRuleVo.setPriority("1");
}else if(alias.equals("ta")){
alarmRuleVo.setMaxval(String.valueOf(alarmVo.getTilt()));
alarmRuleVo.setMode("greater");
alarmRuleVo.setPriority("1");
}else if(alias.equals("a1")){
alarmRuleVo.setMaxval(String.valueOf(alarmVo.getShock()));
alarmRuleVo.setMode("greater");
alarmRuleVo.setPriority("1");
alarmRuleVo.setPriority("1");
switch(alias) {
case "T" :
if(alarmVo.getTemLower() !=null && alarmVo.getTiltUpper() !=null){
alarmRuleVo.setLowerval(alarmVo.getTemLower());
alarmRuleVo.setUpperval(alarmVo.getTemUpper());
alarmRuleVo.setMaxval(alarmVo.getTemMax());
alarmRuleVo.setMinval(alarmVo.getTemMin());
alarmRuleVo.setMode("full_normal");
}else {
alarmRuleVo.setMaxval(alarmVo.getTemMax());
alarmRuleVo.setMinval(alarmVo.getTemMin());
alarmRuleVo.setMode("twoway");
}
break;
case "h":
if(alarmVo.getHumidityLower() !=null && alarmVo.getHumidityUpper() !=null){
alarmRuleVo.setLowerval(alarmVo.getHumidityUpper());
alarmRuleVo.setUpperval(alarmVo.getHumidityLower());
alarmRuleVo.setMaxval(alarmVo.getHumidityMax());
alarmRuleVo.setMinval(alarmVo.getHumidityMin());
alarmRuleVo.setMode("full_normal");
}else {
alarmRuleVo.setMaxval(alarmVo.getHumidityMax());
alarmRuleVo.setMinval(alarmVo.getHumidityMin());
alarmRuleVo.setMode("twoway");
}
break;
case "ta":
if(alarmVo.getTiltUpper() !=null ){
alarmRuleVo.setUpperval(alarmVo.getTiltUpper());
alarmRuleVo.setMaxval(alarmVo.getTilt());
alarmRuleVo.setMode("upper_half");
}else {
alarmRuleVo.setMaxval(alarmVo.getTilt());
alarmRuleVo.setMode("greater");
}
break;
case "a1":
if(alarmVo.getShockUpper() !=null ){
alarmRuleVo.setUpperval(alarmVo.getShockUpper().doubleValue());
alarmRuleVo.setMaxval(alarmVo.getShock().doubleValue());
alarmRuleVo.setMode("upper_half");
}else {
alarmRuleVo.setMaxval(alarmVo.getShock().doubleValue());
alarmRuleVo.setMode("greater");
}
break;
default:
break;
}
alarmRuleVos.add(alarmRuleVo);
//向redis中写入报警信息
......
package com.example.tdl.util;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class AlidayuUtils {
private static Logger logger = LoggerFactory.getLogger(AlidayuUtils.class);
static final String product = "Dysmsapi";
static final String domain = "dysmsapi.aliyuncs.com";
static final String accessKeyId = "LTAI6OYfcrwJ1LfV";
static final String accessKeySecret = "VxLAFqp0sdXjukhND4acGPTuDyrnyh";
public static CommonResponse sendMessage(String telList,String templateCode, String signName, String message){
CommonResponse response = null;
Gson gson = new Gson();
DefaultProfile profile = DefaultProfile.getProfile("default", accessKeyId, accessKeySecret);
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
//request.setProtocol(ProtocolType.HTTPS);
request.setMethod(MethodType.POST);
request.setDomain("dysmsapi.aliyuncs.com");
request.setVersion("2017-05-25");
request.setAction("SendSms");
request.putQueryParameter("PhoneNumbers", telList);
request.putQueryParameter("SignName", signName);
request.putQueryParameter("TemplateCode", templateCode);
request.putQueryParameter("TemplateParam", message);
try {
response = client.getCommonResponse(request);
System.out.println(response.getData());
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
return response;
}
public static void main(String[] args){
sendMessage("13584678050","SMS_166477417","辉泰云平台","{\"pool\":\"123\"}");
}
}
......@@ -16,12 +16,10 @@ import org.springframework.data.influxdb.InfluxDBTemplate;
import retrofit2.http.POST;
import javax.servlet.http.HttpServletRequest;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.*;
public class DataUtil {
......@@ -29,7 +27,7 @@ public class DataUtil {
private static Gson gson = new Gson();
private static CommFeedback fb = new CommFeedback();
private static CommFeedback fb = new CommFeedback();
public static String getData(String transportationNo, HttpServletRequest request, I18nController i18n, String companyNo, CircuitService circuitService, TDLLogService tdlLogService, InfluxDBTemplate influxDBTemplate, String database, String field, String event, AlarmLogService alarmLogService,String classify){
Long t1 = System.currentTimeMillis();
......@@ -94,7 +92,7 @@ public class DataUtil {
String sql = "";
if (count > 500) {
if (resultCircuitVo.getEndTime() != null && resultCircuitVo.getEndTime() != 0) {
sql = getSQL( gatewayVo.getgSN(),field, device, devList.get(i), event,startTime, resultCircuitVo.getEndTime() * 1000000l);
sql = getSQL( gatewayVo.getgSN(),field, device, devList.get(i), event,startTime, resultCircuitVo.getEndTime() * 1000000l);
} else {
sql = getSQL(gatewayVo.getgSN(), field, device, devList.get(i),event, startTime, System.currentTimeMillis() * 1000000l);
}
......@@ -248,5 +246,62 @@ public class DataUtil {
return String.valueOf(calendar.getTimeInMillis());
}
public static SimpleWarehouseVo dataData(QueryResult queryResult){
SimpleWarehouseVo simpleWarehouseVo = new SimpleWarehouseVo();
List<List<Object>> value = new ArrayList<>();
for(QueryResult.Result result : queryResult.getResults()){
if(result.getSeries() !=null){
for (QueryResult.Series series : result.getSeries()) {
if(series !=null){
value.add(series.getValues().get(0));
}else{
continue;
}
}
}else{
continue;
}
}
List<Double> tempList = new ArrayList<>();
List<Double> humList = new ArrayList<>();
for(int i = 0,length = value.size();i<length;i++){
DecimalFormat df = new DecimalFormat(".0");
tempList.add(value.get(i).get(1)==null ? 0 :Double.valueOf(df.format(Double.valueOf(value.get(i).get(1).toString()))));
humList.add(value.get(i).get(2)==null ? 0 :Double.valueOf(df.format(Double.valueOf(value.get(i).get(2).toString()))));
}
//设置数据
simpleWarehouseVo.setTemp(getValue(tempList));
simpleWarehouseVo.setHumidity(getValue(humList));
return simpleWarehouseVo;
}
public static String getValue(List<Double> data){
String s = "";
Collections.sort(data);
if(data.size() == 1){
if(data.get(0) == 0){
return "~";
}
return data.get(0) +"~" +data.get(0);
}else{
if(data.get(0)!=0 && data.get(data.size()-1)!=0){
return data.get(0) +"~" +data.get(data.size()-1);
}else{
for(int i=0;i<data.size();i++){
if(data.get(0)==0){
continue;
}else{
s=data.get(i).toString();
}
}
if(StringUtils.isEmpty(s)){
return "~";
}
return s+"~"+data.get(data.size()-1);
}
}
}
}
......@@ -62,9 +62,7 @@ public class AlarmController {
})
@RequestMapping(value="/getAll",method = RequestMethod.GET)
public Object getAll(HttpServletRequest request){
String token = request.getHeader("Account_token");
String datum = tokenRedisService.get("TOKEN_" +token);
UserRedisVo user = gson.fromJson(datum,UserRedisVo.class);
UserRedisVo user = gson.fromJson(tokenRedisService.get("TOKEN_" +request.getHeader("Account_token")),UserRedisVo.class);
return alarmService.getAll(user.getCompanyNo());
}
......@@ -84,9 +82,7 @@ public class AlarmController {
})
@RequestMapping(value="/getAllByAlarmType",method = RequestMethod.POST)
public Object getAllByAlarmType(@RequestBody String alarmType,HttpServletRequest request){
String token = request.getHeader("Account_token");
String datum = tokenRedisService.get("TOKEN_" +token);
UserRedisVo user = gson.fromJson(datum,UserRedisVo.class);
UserRedisVo user = gson.fromJson(tokenRedisService.get("TOKEN_" +request.getHeader("Account_token")),UserRedisVo.class);
JSONObject jsonObject= JSON.parseObject(alarmType);
alarmType=(String)jsonObject.get("alarmType");
return alarmService.getAllByAlarmType(user.getCompanyNo(),alarmType);
......@@ -108,10 +104,7 @@ public class AlarmController {
})
@RequestMapping(value="/addAlarm",method = RequestMethod.POST)
public Object addAlarm(@RequestBody AddAlarmVo addAlarmVo,HttpServletRequest request){
String port =request.getHeader("AccountLanguage");
String token = request.getHeader("Account_token");
String datum = tokenRedisService.get("TOKEN_" +token);
UserRedisVo user = gson.fromJson(datum,UserRedisVo.class);
UserRedisVo user = gson.fromJson(tokenRedisService.get("TOKEN_" +request.getHeader("Account_token")),UserRedisVo.class);
if (StringUtils.isEmpty(addAlarmVo.getAlarmType())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"alarmType"));
......@@ -221,10 +214,7 @@ public class AlarmController {
})
@RequestMapping(value="/updateAlarm",method = RequestMethod.POST)
public Object updateAlarm(@RequestBody UpdateAlarmVo updateAlarmVo,HttpServletRequest request){
String token = request.getHeader("Account_token");
String datum = tokenRedisService.get("TOKEN_" +token);
UserRedisVo user = gson.fromJson(datum,UserRedisVo.class);
String port = request.getHeader("AccountLanguage");
UserRedisVo user = gson.fromJson(tokenRedisService.get("TOKEN_" +request.getHeader("Account_token")),UserRedisVo.class);
if (StringUtils.isEmpty(updateAlarmVo.getOldAlarmType())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"modifiedAlarmType"));
......@@ -333,10 +323,7 @@ public class AlarmController {
})
@RequestMapping(value="/delAlarm",method = RequestMethod.POST)
public Object delAlarm(@RequestBody DelAlarmVo delAlarmVo,HttpServletRequest request){
String token = request.getHeader("Account_token");
String datum = tokenRedisService.get("TOKEN_" +token);
UserRedisVo user = gson.fromJson(datum,UserRedisVo.class);
String port = request.getHeader("AccountLanguage");
UserRedisVo user = gson.fromJson(tokenRedisService.get("TOKEN_" +request.getHeader("Account_token")),UserRedisVo.class);
if (StringUtils.isEmpty(delAlarmVo.getAlarmType())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"deletedAlarmType"));
......
......@@ -5,6 +5,7 @@ import com.example.tdl.domain.vo.*;
import com.example.tdl.entity.AlarmLog;
import com.example.tdl.service.*;
import com.example.tdl.service.redis.TokenRedisService;
import com.example.tdl.util.AlarmLogUtil;
import com.google.gson.Gson;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
......@@ -50,7 +51,7 @@ public class AlarmLogController {
private TokenRedisService tokenRedisService;
@Autowired
private CompanyService companyService;
private WarehouseService warehouseService;
@Autowired
private TDLLogService tdlLogService;
......@@ -75,12 +76,12 @@ public class AlarmLogController {
//获取报警信息
@ApiOperation(value = "获取报警信息",notes = "获取报警信息" +
" transportationNo:运输编号" +
" description:报警内容" +
" startCity:启运城市" +
" endCity:目的城市" +
" startTime:出发时间(时间戳)" +
" endTime:结束时间(时间戳)" +
" transportationNo:运输编号" +
" description:报警内容" +
" startCity:启运城市" +
" endCity:目的城市" +
" startTime:出发时间(时间戳)" +
" endTime:结束时间(时间戳)" +
"返回值: transportationNo:运输编号" +
" cargoNo:货号" +
" startCity:启运城市" +
......@@ -169,22 +170,20 @@ public class AlarmLogController {
fb.setCode(0);
fb.setMessage("网关类型不能为空");
}
if(addAlarmLogVo.getAlarm()==null){
fb.setCode(0);
fb.setMessage("报警数据不能为空");
}
if(addAlarmLogVo.getTs() == null){
fb.setCode(0);
fb.setMessage("时间不能为空");
}
Map<Integer,String> map = new HashMap<>();
map.put(0,"正常");
map.put(1,"等于最大值");
map.put(2,"不等于最大值");
map.put(3,"过高");
map.put(4,"过低");
map.put(5,"未知");
if(addAlarmLogVo.getMode() == 1){
//判断当前报警状态
if(addAlarmLogVo.getAlarmno() !=null){
//网关离线报警
}
//获取使用场景
Integer mode = gatewayService.getModeByGateway(addAlarmLogVo.getGsn(),addAlarmLogVo.getGtype());
if(mode == 1){
//根据gateway的信息获取线路信息
String transportationNo = gatewayService.getTransportationNo(addAlarmLogVo.getGsn(),addAlarmLogVo.getGtype());
//获取终点,起点
......@@ -193,20 +192,23 @@ public class AlarmLogController {
if(addAlarmLogVo.getAlarm().get(i).getAlarmno() !=null && addAlarmLogVo.getAlarm().get(i).getAlarmno() == 0){
continue;
}
String classify="";
String desp = "";
String classify;
String desp = AlarmLogUtil.getDescription(addAlarmLogVo.getAlarm().get(i).getAlarmno());
if(addAlarmLogVo.getAlarm().get(i).getAlias().contains("T")){
desp = "温度" +map.get(addAlarmLogVo.getAlarm().get(i).getAlarmno());
desp = "温度" + desp;
classify = "1";
} else if(addAlarmLogVo.getAlarm().get(i).getAlias().contains("h")){
desp = "湿度" +map.get(addAlarmLogVo.getAlarm().get(i).getAlarmno());
desp = "湿度" +desp;
classify = "2";
} else if(addAlarmLogVo.getAlarm().get(i).getAlias().contains("a1")){
desp = "震动" +map.get(addAlarmLogVo.getAlarm().get(i).getAlarmno());
desp = "震动" +desp;
classify = "3";
} else if(addAlarmLogVo.getAlarm().get(i).getAlias().contains("ta")) {
desp = "倾角" + map.get(addAlarmLogVo.getAlarm().get(i).getAlarmno());
desp = "倾角" + desp;
classify = "4";
}else{
desp = addAlarmLogVo.getAlarm().get(i).getTdlsn() +desp;
classify = "6";
}
Long time = addAlarmLogVo.getAlarm().get(i).getTs();
if(time.toString().length() == 10){
......@@ -224,33 +226,41 @@ public class AlarmLogController {
}
}else{
//根据gateway获取仓库编号
String warehouseNo = gatewayService.getWarehouseNo(addAlarmLogVo.getGsn(),addAlarmLogVo.getGtype());
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;
}
String desp = "";
if(addAlarmLogVo.getAlarm().get(i).getAlias().contains("T")){
desp = "温度" +map.get(addAlarmLogVo.getAlarm().get(i).getAlarmno());
} else if(addAlarmLogVo.getAlarm().get(i).getAlias().contains("h")){
desp = "湿度" +map.get(addAlarmLogVo.getAlarm().get(i).getAlarmno());
} else if(addAlarmLogVo.getAlarm().get(i).getAlias().contains("a1")){
desp = "震动" +map.get(addAlarmLogVo.getAlarm().get(i).getAlarmno());
} else if(addAlarmLogVo.getAlarm().get(i).getAlias().contains("ta")) {
desp = "倾角" + map.get(addAlarmLogVo.getAlarm().get(i).getAlarmno());
}
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());
int a = warehouseAlarmLogService.add(alarmLog);
if(a == 0){
fb.setCode(0);
fb.setMessage("添加失败");
}else{
fb.setCode(1);
fb.setMessage("添加成功");
}
}
String warehouseNo = gatewayService.getWarehouseNo(addAlarmLogVo.getGsn(),addAlarmLogVo.getGtype());
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;
}
String desp = AlarmLogUtil.getDescription(addAlarmLogVo.getAlarm().get(i).getAlarmno());
String classify;
if(addAlarmLogVo.getAlarm().get(i).getAlias().contains("T")){
desp = "温度" +desp;
classify = "1";
} else if(addAlarmLogVo.getAlarm().get(i).getAlias().contains("h")){
desp = "湿度" +desp;
classify = "2";
} else if(addAlarmLogVo.getAlarm().get(i).getAlias().contains("a1")){
desp = "震动" +desp;
classify = "3";
} else if(addAlarmLogVo.getAlarm().get(i).getAlias().contains("ta")) {
desp = "倾角" + desp;
classify = "4";
}else{
desp = addAlarmLogVo.getAlarm().get(i).getTdlsn() +desp;
classify = "6";
}
List<String> emailList = warehouseService.getEmailByWarehouse(warehouseNo);
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);
int a = warehouseAlarmLogService.add(alarmLog);
if(a == 0){
fb.setCode(0);
fb.setMessage("添加失败");
}else{
fb.setCode(1);
fb.setMessage("添加成功");
}
}
}
return gson.toJson(fb);
}
......
package com.example.tdl.web;
import com.alibaba.fastjson.JSON;
import com.example.tdl.domain.dto.CommFeedback;
import com.example.tdl.domain.vo.*;
import com.example.tdl.service.AlarmService;
import com.example.tdl.service.BoschAlarmService;
import com.example.tdl.service.TDLLogService;
import com.example.tdl.service.redis.TokenRedisService;
import com.google.gson.Gson;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
@RestController
@RequestMapping("/boschAlarm")
public class BoschAlarmController {
private Logger logger = LoggerFactory.getLogger(BoschAlarmController.class);
CommFeedback fb=new CommFeedback();
Gson gson=new Gson();
@Autowired
private BoschAlarmService alarmService;
@Autowired
private TokenRedisService tokenRedisService;
@Autowired
private TDLLogService tdlLogService;
@Autowired
private I18nController i18n;
//查询所有预警信息
@ApiOperation(value = "查询所有预警信息",notes = "查询所有预警信息,返回值说明:" +
" alarmType:预警类型," +
" temMax:温度上限," +
" temMin:温度下限," +
" humidityMax:湿度上限," +
" humidityMin:湿度下限," +
" tilt:倾斜度," +
" shock:震度," +
" remark:备注")
@ApiImplicitParams({
@ApiImplicitParam(paramType="header", name = "Account_token", value = "token", required = true, dataType = "String"),
@ApiImplicitParam(paramType="header", name = "AccountLanguage", value = "language", required = false, dataType = "String"),
})
@RequestMapping(value="/getAll",method = RequestMethod.GET)
public Object getAll(HttpServletRequest request){
UserRedisVo user = gson.fromJson(tokenRedisService.get("TOKEN_" +request.getHeader("Account_token")),UserRedisVo.class);
return alarmService.getAll(user.getCompanyNo());
}
//根据预警类型模糊查询
@ApiOperation(value = "根据预警类型模糊查询",notes = "查询所有预警信息,返回值说明:" +
" alarmType:预警类型," +
" temMax:温度上限," +
" temMin:温度下限," +
" humidityMax:湿度上限," +
" humidityMin:湿度下限," +
" tilt:倾斜度," +
" shock:震度," +
" remark:备注")
@ApiImplicitParams({
@ApiImplicitParam(paramType="header", name = "Account_token", value = "token", required = true, dataType = "String"),
@ApiImplicitParam(paramType="header", name = "AccountLanguage", value = "language", required = false, dataType = "String"),
})
@RequestMapping(value="/getAllByAlarmType",method = RequestMethod.POST)
public Object getAllByAlarmType(@RequestBody String alarmType, HttpServletRequest request){
UserRedisVo user = gson.fromJson(tokenRedisService.get("TOKEN_" +request.getHeader("Account_token")),UserRedisVo.class);
alarmType=(String) JSON.parseObject(alarmType).get("alarmType");
return alarmService.getAllByAlarmType(user.getCompanyNo(),alarmType);
}
//添加预警信息
@ApiOperation(value = "添加预警信息",notes = "添加预警信息,companyNo不用传,需要传递参数:" +
" alarmType:预警类型," +
" temMax:温度上限," +
" temMin:温度下限," +
" humidityMax:湿度上限," +
" humidityMin:湿度下限," +
" tilt:倾斜度," +
" shock:震度," +
" remark:备注")
@ApiImplicitParams({
@ApiImplicitParam(paramType="header", name = "Account_token", value = "token", required = true, dataType = "String"),
@ApiImplicitParam(paramType="header", name = "AccountLanguage", value = "language", required = false, dataType = "String"),
})
@RequestMapping(value="/addAlarm",method = RequestMethod.POST)
public Object addAlarm(@RequestBody AddBoschAlarmVo addAlarmVo, HttpServletRequest request){
UserRedisVo user = gson.fromJson(tokenRedisService.get("TOKEN_" +request.getHeader("Account_token")),UserRedisVo.class);
if (StringUtils.isEmpty(addAlarmVo.getAlarmType())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"alarmType"));
return gson.toJson(fb);
}
if (addAlarmVo.getTemMax()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"temMax"));
return gson.toJson(fb);
}
if (addAlarmVo.getTemMin()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"temMin"));
return gson.toJson(fb);
}
if (addAlarmVo.getHumidityMax()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"humidityMax"));
return gson.toJson(fb);
}
if (addAlarmVo.getHumidityMin()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"humidityMin"));
return gson.toJson(fb);
}
if (addAlarmVo.getTilt()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"tilt"));
return gson.toJson(fb);
}
if (addAlarmVo.getShock()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"shock"));
return gson.toJson(fb);
}
if (addAlarmVo.getTemLower()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"tempLower"));
return gson.toJson(fb);
}
if (addAlarmVo.getTemUpper()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"tempUpper"));
return gson.toJson(fb);
}
if (addAlarmVo.getHumidityLower()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"humidityLower"));
return gson.toJson(fb);
}
if (addAlarmVo.getHumidityUpper()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"humidityUpper"));
return gson.toJson(fb);
}
if (addAlarmVo.getTiltUpper()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"tiltUpper"));
return gson.toJson(fb);
}
if (addAlarmVo.getShockUpper()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"shockUpper"));
return gson.toJson(fb);
}
if (alarmService.getByType(addAlarmVo.getAlarmType(),user.getCompanyNo())!=null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"alarmExist"));
return gson.toJson(fb);
}
addAlarmVo.setCompanyNo(user.getCompanyNo());
int a=alarmService.addAlarm(addAlarmVo);
if (a>0){
fb.setCode(1);
fb.setMessage(i18n.getMessage(request,"addSuccess"));
}else{
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"addFailure"));
}
return gson.toJson(fb);
}
//修改预警信息
@ApiOperation(value = "修改预警信息",notes = "修改预警信息,companyNo不用传,需要传递参数:" +
" oldAlarmType:需要修改的预警类型," +
" alarmType:预警类型," +
" temMax:温度上限," +
" temMin:温度下限," +
" humidityMax:湿度上限," +
" humidityMin:湿度下限," +
" tilt:倾斜度," +
" shock:震度," +
" remark:备注")
@ApiImplicitParams({
@ApiImplicitParam(paramType="header", name = "Account_token", value = "token", required = true, dataType = "String"),
@ApiImplicitParam(paramType="header", name = "AccountLanguage", value = "language", required = false, dataType = "String"),
})
@RequestMapping(value="/updateAlarm",method = RequestMethod.POST)
public Object updateAlarm(@RequestBody UpdateBoschAlarmVo updateAlarmVo, HttpServletRequest request){
UserRedisVo user = gson.fromJson(tokenRedisService.get("TOKEN_" +request.getHeader("Account_token")),UserRedisVo.class);
if (StringUtils.isEmpty(updateAlarmVo.getOldAlarmType())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"modifiedAlarmType"));
return gson.toJson(fb);
}
if (StringUtils.isEmpty(updateAlarmVo.getAlarmType())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"alarmType"));
return gson.toJson(fb);
}
if (updateAlarmVo.getTemMax()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"temMax"));
return gson.toJson(fb);
}
if (updateAlarmVo.getTemMin()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"temMin"));
return gson.toJson(fb);
}
if (updateAlarmVo.getHumidityMax()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"humidityMax"));
return gson.toJson(fb);
}
if (updateAlarmVo.getHumidityMin()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"humidityMin"));
return gson.toJson(fb);
}
if (updateAlarmVo.getTilt()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"tilt"));
return gson.toJson(fb);
}
if (updateAlarmVo.getShock()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"shock"));
return gson.toJson(fb);
}
if (updateAlarmVo.getTemLower()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"tempLower"));
return gson.toJson(fb);
}
if (updateAlarmVo.getTemUpper()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"tempUpper"));
return gson.toJson(fb);
}
if (updateAlarmVo.getHumidityLower()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"humidityLower"));
return gson.toJson(fb);
}
if (updateAlarmVo.getHumidityUpper()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"humidityUpper"));
return gson.toJson(fb);
}
if (updateAlarmVo.getTiltUpper()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"tiltUpper"));
return gson.toJson(fb);
}
if (updateAlarmVo.getShockUpper()== null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"shockUpper"));
return gson.toJson(fb);
}
if (alarmService.getByType(updateAlarmVo.getAlarmType(),user.getCompanyNo())!=null&&!updateAlarmVo.getAlarmType().equals(updateAlarmVo.getAlarmType())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"modifiedAlarmExist"));
return gson.toJson(fb);
}
updateAlarmVo.setCompanyNo(user.getCompanyNo());
int a=alarmService.updateAlarm(updateAlarmVo);
if (a>0){
fb.setCode(1);
fb.setMessage(i18n.getMessage(request,"modifiedSuccess"));
}else{
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"modifiedFailure"));
}
return gson.toJson(fb);
}
//删除预警信息
@ApiOperation(value = "删除预警信息",notes = "删除预警信息,companyNo不用传,传值说明:" +
" alarmType:需要删除的预警类型" )
@ApiImplicitParams({
@ApiImplicitParam(paramType="header", name = "Account_token", value = "token", required = true, dataType = "String"),
@ApiImplicitParam(paramType="header", name = "AccountLanguage", value = "language", required = false, dataType = "String"),
})
@RequestMapping(value="/delAlarm",method = RequestMethod.POST)
public Object delAlarm(@RequestBody DelAlarmVo delAlarmVo, HttpServletRequest request){
UserRedisVo user = gson.fromJson(tokenRedisService.get("TOKEN_" +request.getHeader("Account_token")),UserRedisVo.class);
if (StringUtils.isEmpty(delAlarmVo.getAlarmType())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"deletedAlarmType"));
return gson.toJson(fb);
}
delAlarmVo.setCompanyNo(user.getCompanyNo());
if(tdlLogService.getByAlarm(delAlarmVo).size()>0){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"dusedAlarm"));
return gson.toJson(fb);
}
int a=alarmService.delAlarm(delAlarmVo);
if (a>0){
fb.setCode(1);
fb.setMessage(i18n.getMessage(request,"deletedSuccess"));
}else{
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"deletedFailure"));
}
return gson.toJson(fb);
}
}
package com.example.tdl.web;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.example.tdl.domain.dto.CommFeedback;
import com.example.tdl.domain.vo.*;
import com.example.tdl.service.*;
import com.example.tdl.service.redis.AlarmRedisService;
import com.example.tdl.service.redis.InfoRedisService;
import com.example.tdl.service.redis.TokenRedisService;
import com.example.tdl.util.AlarmRule;
import com.google.gson.Gson;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.influxdb.dto.Query;
import org.influxdb.dto.QueryResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.influxdb.InfluxDBTemplate;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
@RestController
@RequestMapping("/circuitABB")
public class CircuitABBController {
private Logger logger = LoggerFactory.getLogger(CircuitABBController.class);
CommFeedback fb=new CommFeedback();
Gson gson=new Gson();
@Autowired
private CircuitABBService circuitABBService;
@Autowired
private CircuitService circuitService;
@Autowired
private GatewayService gatewayService;
@Autowired
private TDLDeviceService tdlDeviceService;
@Autowired
private AlarmLogService alarmLogService;
@Autowired
private AlarmRedisService alarmRedisService;
@Autowired
private TokenRedisService tokenRedisService;
@Autowired
private AlarmService alarmService;
@Autowired
private TDLLogService tdlLogService;
@Autowired
private ConfigService configService;
@Autowired
private CompanyService companyService;
@Autowired
private InfoRedisService infoRedisService;
@Autowired
private InfluxDBTemplate influxDBTemplate;
@Autowired
private I18nController i18n;
@Autowired
private TopicService topicService;
@Autowired
private TopicConfigService topicConfigService;
private final static String database ="original";
//获取本公司的线路信息
@ApiOperation(value = "获取本公司的线路信息",notes = "获取本公司的线路信息,返回值说明:" +
" transportationNo:运输编号," +
" cargoNo:货物编号," +
" cargoName:货物别名" +
" circuitState:线路状态(0未开始,1运输中,2完成)," +
" alarmType:预警类型," +
" alarm:报警详情(1-温度,2-湿度,3-震动,4-倾角,5-延误,6-离线,7--在线)," +
" transportation:运输方式," +
" gSN:网关编号," +
" gType:网关类型。")
@ApiImplicitParams({
@ApiImplicitParam(paramType="header", name = "Account_token", value = "token", required = true, dataType = "String"),
@ApiImplicitParam(paramType="header", name = "AccountLanguage", value = "language", required = false, dataType = "String"),
})
@RequestMapping(value="/getAll",method = RequestMethod.GET)
public Object getAll(HttpServletRequest request){
String datum = tokenRedisService.get("TOKEN_" +request.getHeader("Account_token"));
UserRedisVo user = gson.fromJson(datum,UserRedisVo.class);
List<ResultCircuitForABBVo> list = circuitABBService.getAll(user.getCompanyNo());
for(int i = 0,length=list.size();i<length;i++){
if(list.get(i).getCircuitState() == 1){
//获取设备在线情况
Object data = infoRedisService.getHash("DeviceOnline",list.get(i).getgType()+"_"+list.get(i).getgSN());
if(data == null){
if(StringUtils.isEmpty(list.get(i).getAlarm())){
list.get(i).setAlarm("6");
}else{
list.get(i).setAlarm(list.get(i).getAlarm()+",6");
}
}else{
OnlineVo onlineVo = gson.fromJson(data.toString(),OnlineVo.class);
if(onlineVo.getOnline() == 0){
if(StringUtils.isEmpty(list.get(i).getAlarm())){
list.get(i).setAlarm("6");
}else{
list.get(i).setAlarm(list.get(i).getAlarm()+",6");
}
}else if(onlineVo.getOnline() == 1) {
if(StringUtils.isEmpty(list.get(i).getAlarm())){
list.get(i).setAlarm("7");
}else{
list.get(i).setAlarm(list.get(i).getAlarm()+",7");
}
}
}
}else{
continue;
}
}
return list;
}
//根据条件查询
@ApiOperation(value = "根据条件查询本公司的线路信息",notes = "companyName不用传,根据条件查询:" +
" cargoNo:货物编号" +
" startTime:出发时间,(时间戳)" +
" endTime:目的时间,(时间戳)" +
" circuitState:线路状态(0未开始,1运输中,2完成)," +
" time:日期"+
"返回值说明:" +
" transportationNo:运输编号," +
" cargoNo:货物编号," +
" cargoName:货物别名" +
" circuitState:线路状态(0未开始,1运输中,2完成)," +
" alarmType:预警类型," +
" alarm:报警详情(1-温度,2-湿度,3-震动,4-倾角,5-延误,6-离线,7--在线)," +
" transportation:运输方式," +
" gSN:网关编号," +
" gType:网关类型。")
@ApiImplicitParams({
@ApiImplicitParam(paramType="header", name = "Account_token", value = "token", required = true, dataType = "String"),
@ApiImplicitParam(paramType="header", name = "AccountLanguage", value = "language", required = false, dataType = "String"),
})
@RequestMapping(value="/getByTerm",method = RequestMethod.POST)
public Object getByTerm(@RequestBody CircuitTermVo circuitTermVo,HttpServletRequest request){
String datum = tokenRedisService.get("TOKEN_" +request.getHeader("Account_token"));
UserRedisVo user = gson.fromJson(datum,UserRedisVo.class);
if(StringUtils.isEmpty(circuitTermVo.getCargoNo())){
circuitTermVo.setCargoNo(null);
}
if(circuitTermVo.getCircuitState() == null || circuitTermVo.getCircuitState() == 3){
circuitTermVo.setCircuitState(null);
}
if(circuitTermVo.getStartTime()==null){
circuitTermVo.setStartTime(null);
}
if(circuitTermVo.getEndTime()==null){
circuitTermVo.setEndTime(null);
}
if(circuitTermVo.getStartTime()!=null && circuitTermVo.getEndTime()!=null && circuitTermVo.getStartTime()>circuitTermVo.getEndTime()){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"wrongTime"));
return gson.toJson(fb);
}
if(StringUtils.isEmpty(circuitTermVo.getTime())){
circuitTermVo.setTime(null);
}else{
circuitTermVo.setTime(circuitTermVo.getTime().replace("天","").trim());
}
circuitTermVo.setCompanyNo(user.getCompanyNo());
List<ResultCircuitForABBVo> list=circuitABBService.getByTerm(circuitTermVo);
for(int i = 0,length=list.size();i<length;i++){
if(list.get(i).getCircuitState() == 1){
//获取设备在线情况
Object data = infoRedisService.getHash("DeviceOnline",list.get(i).getgType()+"_"+list.get(i).getgSN());
if(data == null){
if(StringUtils.isEmpty(list.get(i).getAlarm())){
list.get(i).setAlarm("6");
}else{
list.get(i).setAlarm(list.get(i).getAlarm()+",6");
}
}else{
OnlineVo onlineVo = gson.fromJson(data.toString(),OnlineVo.class);
if(onlineVo.getOnline() == 0){
if(StringUtils.isEmpty(list.get(i).getAlarm())){
list.get(i).setAlarm("6");
}else{
list.get(i).setAlarm(list.get(i).getAlarm()+",6");
}
}else if(onlineVo.getOnline() == 1) {
if(StringUtils.isEmpty(list.get(i).getAlarm())){
list.get(i).setAlarm("7");
}else{
list.get(i).setAlarm(list.get(i).getAlarm()+",7");
}
}
}
}else{
continue;
}
}
return list;
}
//根据线路编号获取线路详细信息
@ApiOperation(value = "根据线路编号获取线路详细信息",notes = "根据线路编号获取线路详细信息,传值说明:" +
" transportationNo:运输编号; " +
"返回值说明:" +
" transportationNo:运输编号," +
" routeName:线路," +
" cargoName:货物别名," +
" transportation:运输方式," +
" alarmType:预警类型," +
" SN:gateway序列号," +
" tdlList:{" +
" tdlsn:TDLSN序列号" +
" batteryVoltage:电池电压}," +
" alarmLogList:{" +
" transportationNo:运输编号;" +
" TDLSN:tag序列号;" +
" description:报警描述;" +
" data:数值;" +
" alarmTime:报警时间;" +
" classify:分类}" +
" " )
@ApiImplicitParams({
@ApiImplicitParam(paramType="header", name = "Account_token", value = "token", required = true, dataType = "String"),
@ApiImplicitParam(paramType="header", name = "AccountLanguage", value = "language", required = false, dataType = "String"),
})
@PostMapping("/getDetails")
public Object getDetails(@RequestBody String transportationNo,HttpServletRequest request) {
if(StringUtils.isEmpty(transportationNo)){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"transportationNo"));
return gson.toJson(fb);
}
JSONObject jsonObject= JSON.parseObject(transportationNo);
transportationNo=(String)jsonObject.get("transportationNo");
//获取线路信息
CircuitMessage circuitVo = circuitService.getMessage(transportationNo);
if(circuitVo == null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"noCircuit"));
return gson.toJson(fb);
}
CircuitMessageForABBVo messageVo = new CircuitMessageForABBVo(circuitVo.getTransportationNo(),circuitVo.getCircuitState(),circuitVo.getRouteName(),circuitVo.getCargoName(),circuitVo.getTransportation(),circuitVo.getAlarmType());
//获取gateway信息
TDLLogVo gatewayVo = tdlLogService.getByTransportationNo(transportationNo);
List<String> TDL= tdlLogService.getTdlSN(transportationNo);
List<ResultAlarmLog> alarmLogList = new ArrayList<>();
List<CircuitMessageForABBVo.TDL> tdlList = new ArrayList<>();
if(gatewayVo == null || TDL.size() == 0){
messageVo.setSN("NA");
messageVo.setBattery("NA");
messageVo.setAlarmLogList(alarmLogList);
messageVo.setTdlList(tdlList);
return gson.toJson(messageVo);
}
messageVo.setSN(gatewayVo.getgSN());
alarmLogList= alarmLogService.getByTransportationNo(transportationNo);
messageVo.setAlarmLogList(alarmLogList);
String sql ="";
if (circuitVo.getEndTime() != null && circuitVo.getEndTime() != 0) {
sql = "SELECT \"battery\" FROM \"tdl_policy\".\"" + gatewayVo.getgType() + "_" + gatewayVo.getgSN() + "\" where time >=" + circuitVo.getStartTime() + " and time<=" + circuitVo.getEndTime() * 1000000l + " ORDER BY time desc limit 1";
} else {
sql = "SELECT \"battery\" FROM \"tdl_policy\".\"" + gatewayVo.getgType() + "_" + gatewayVo.getgSN() + "\" where time >=" + circuitVo.getStartTime() + " ORDER BY time desc limit 1";
}
QueryResult queryResult = influxDBTemplate.query(new Query(sql, database));
if (queryResult.getResults().get(0).getSeries() == null) {
messageVo.setBattery("NA");
}else{
DecimalFormat df = new DecimalFormat("######0.0");
String val = queryResult.getResults().get(0).getSeries().get(0).getValues().get(0).get(1) == null ? "" : queryResult.getResults().get(0).getSeries().get(0).getValues().get(0).get(1).toString();
Boolean boo = Double.valueOf(val) <0;
if(Double.valueOf(val) <0){
messageVo.setBattery("NA");
}else{
messageVo.setBattery(df.format(Double.valueOf(val)));
}
}
for(int i=0;i<TDL.size();i++){
CircuitMessageForABBVo.TDL tdl = new CircuitMessageForABBVo.TDL();
tdl.setTdlsn(TDL.get(i).replace("TDL-", "").trim());
if(circuitVo.getStartTime() == null || circuitVo.getStartTime() == 0){
tdl.setBatteryVoltage("NA");
}else {
String sql1 ="";
if (circuitVo.getEndTime() != null && circuitVo.getEndTime() != 0) {
sql1= "SELECT \"b\" FROM \"tdl_policy\".\"" + gatewayVo.getgType() + "_" + gatewayVo.getgSN() + "\" where \"tdl\"='" + TDL.get(i) + "' and time >=" + circuitVo.getStartTime() + " and time<=" + circuitVo.getEndTime() * 1000000l + " ORDER BY time desc limit 1";
} else {
sql1 = "SELECT \"b\" FROM \"tdl_policy\".\"" + gatewayVo.getgType() + "_" + gatewayVo.getgSN() + "\" where \"tdl\"='" + TDL.get(i) + "' and time >=" + circuitVo.getStartTime() + " ORDER BY time desc limit 1";
}
QueryResult queryResult1 = influxDBTemplate.query(new Query(sql1, database));
if (queryResult1.getResults().get(0).getSeries() == null) {
tdl.setBatteryVoltage("NA");
}else{
DecimalFormat df = new DecimalFormat("######0.0");
String value = queryResult1.getResults().get(0).getSeries().get(0).getValues().get(0).get(1) == null ? "" : queryResult1.getResults().get(0).getSeries().get(0).getValues().get(0).get(1).toString();
if(Double.valueOf(value) <0){
tdl.setBatteryVoltage("NA");
}else{
tdl.setBatteryVoltage(df.format(Double.valueOf(value)));
}
}
}
tdlList.add(tdl);
}
messageVo.setTdlList(tdlList);
return gson.toJson(messageVo);
}
//添加线路信息ABB
@ApiOperation(value = "添加线路信息ABB",notes = "添加线路信息ABB," +
" SN:网关编号," +
" tdlAlarmList: " +
" {" +
" TDLSN:tdl编号," +
" alarmType:报警类型," +
" }" +
" cargoNo:货物编号," +
" cargoName:货物别名," +
" remark:备注。")
@ApiImplicitParams({
@ApiImplicitParam(paramType="header", name = "Account_token", value = "token", required = true, dataType = "String"),
@ApiImplicitParam(paramType="header", name = "AccountLanguage", value = "language", required = false, dataType = "String"),
})
@RequestMapping(value="/addCircuitForABB",method = RequestMethod.POST)
public Object addCircuitForABB(@RequestBody AddCircuitForABBVo addCircuitForABBVo,HttpServletRequest request){
UserRedisVo user = gson.fromJson(tokenRedisService.get("TOKEN_" +request.getHeader("Account_token")),UserRedisVo.class);
ResultCompanyVo companyVo = companyService.getByCompanyNo(user.getCompanyNo());
if(StringUtils.isEmpty(addCircuitForABBVo.getSN())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"gateway"));
return gson.toJson(fb);
}
if (StringUtils.isEmpty(addCircuitForABBVo.getCargoNo())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"cargoNo"));
return gson.toJson(fb);
}
String type =gatewayService.getBySN(addCircuitForABBVo.getSN(),user.getCompanyNo());
//判断当前gateWay是否存在
if(StringUtils.isEmpty(type)){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"gatewayExist"));
return gson.toJson(fb);
}
ResultGatewayVo resultGatewayVo = gatewayService.getBySNAndType(addCircuitForABBVo.getSN(),type);
if(!resultGatewayVo.getState()){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"gatewayMounted"));
return gson.toJson(fb);
}
//获取gateway的场景
if(resultGatewayVo.getUseScene()!= 0){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"usedgateway"));
return gson.toJson(fb);
}
String alarmTypeVar="";
String TDLSNVar="";
List<String> devList = tdlDeviceService.getByGatewaySN(addCircuitForABBVo.getSN(),type);
List<Float> tempL = new ArrayList<>();
List<Float> tempH = new ArrayList<>();
List<Float> humiL = new ArrayList<>();
List<Float> humiH = new ArrayList<>();
List<Integer> pressL = new ArrayList<>();
List<Integer> pressH = new ArrayList<>();
List<Integer> sugEnergy = new ArrayList<>();
List<Float> accThreshold = new ArrayList<>();
List<Integer> timeThreshold = new ArrayList<>();
List<Integer> tiltThreshold = new ArrayList<>();
if (addCircuitForABBVo.getTdlAlarmList().size()==0){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"tdl"));
return gson.toJson(fb);
}
for(int j = 0,length =addCircuitForABBVo.getTdlAlarmList().size();j<length;j++){
if(StringUtils.isEmpty(addCircuitForABBVo.getTdlAlarmList().get(j).getTDLSN())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"tdl"));
return gson.toJson(fb);
}
//判断当前tdl是否存在
ResultTDLDeviceVo tdlDeviceVo = tdlDeviceService.getByTDLSN(addCircuitForABBVo.getTdlAlarmList().get(j).getTDLSN());
if(tdlDeviceVo == null){
fb.setCode(0);
Object[] args ={addCircuitForABBVo.getTdlAlarmList().get(j).getTDLSN()};
fb.setMessage(i18n.getMessage(request, args,"tdlExist"));
return gson.toJson(fb);
}
if(!StringUtils.isEmpty(tdlDeviceVo.getGatewaySN())){
fb.setCode(0);
Object[] args ={addCircuitForABBVo.getTdlAlarmList().get(j).getTDLSN()};
fb.setMessage(i18n.getMessage(request,args,"tdlUsed"));
return gson.toJson(fb);
}
if(StringUtils.isEmpty(addCircuitForABBVo.getTdlAlarmList().get(j).getAlarmType())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"alarmType"));
return gson.toJson(fb);
}
//获取阈值信息
ResultAlarmVo resultAlarmVo = alarmService.getByType(addCircuitForABBVo.getTdlAlarmList().get(j).getAlarmType(),user.getCompanyNo());
if (resultAlarmVo==null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"alarmTypeEmpty"));
return gson.toJson(fb);
}
tempL.add(resultAlarmVo.getTemMin());
tempH.add(resultAlarmVo.getTemMax());
humiL.add(resultAlarmVo.getHumidityMin());
humiH.add(resultAlarmVo.getHumidityMax());
pressL.add(255);
pressH.add(255);
sugEnergy.add(1);
accThreshold.add(Float.valueOf(resultAlarmVo.getShock()));
timeThreshold.add(5);
tiltThreshold.add((int)Double.parseDouble(resultAlarmVo.getTilt().toString()));
alarmTypeVar =alarmTypeVar + addCircuitForABBVo.getTdlAlarmList().get(j).getAlarmType() +"&";
TDLSNVar =TDLSNVar + addCircuitForABBVo.getTdlAlarmList().get(j).getTDLSN() +"&";
devList.add("TDL-"+addCircuitForABBVo.getTdlAlarmList().get(j).getTDLSN());
AlarmRule.saveAlarmRule("TDL/"+type+"/" +addCircuitForABBVo.getSN()+"/Data",addCircuitForABBVo.getTdlAlarmList().get(j).getTDLSN(),addCircuitForABBVo.getTdlAlarmList().get(j).getAlarmType(),user.getCompanyNo(),alarmService,alarmRedisService);
}
//根据sn获取type
ConfigCMDVo configCMDVo = new ConfigCMDVo("config",5,15,devList,tempL,tempH,humiL,humiH,pressL,pressH,sugEnergy,accThreshold,timeThreshold,tiltThreshold,1,System.currentTimeMillis()/1000l);
Map<Object,Object> map=new HashMap<>();
String transportation = "公路";
String transportationType="本地运输";
String transportationNo =getTransportNo(transportation,transportationType);
map.put("transportationNo",transportationNo);
map.put("cargoNo",addCircuitForABBVo.getCargoNo());
map.put("cargoName",addCircuitForABBVo.getCargoName());
map.put("deliveryAddress","站点");
map.put("transportation",transportation);
map.put("transportationType",transportationType);
map.put("createTime",System.currentTimeMillis());
map.put("remark",addCircuitForABBVo.getRemark());
map.put("companyNo",user.getCompanyNo());
map.put("SN",addCircuitForABBVo.getSN());
map.put("type",type);
map.put("TDLSNVar",TDLSNVar);
map.put("alarmTypeVar",alarmTypeVar);
map.put("TDLCounts",addCircuitForABBVo.getTdlAlarmList()== null ? 0 : addCircuitForABBVo.getTdlAlarmList().size());
map.put("message",configCMDVo == null ? "" :gson.toJson(configCMDVo));
map.put("flag",false);
map.put("untie",false);
circuitABBService.addCircuitForABB(map);
Map<Object,Object> msg=new HashMap<>();
msg.put("msg",map.get("msg"));
if (msg.get("msg").equals("添加线路成功")){
fb.setCode(1);
fb.setMessage(i18n.getMessage(request,"circuitSuccess"));
//增加配置(公司以及线路信息)
AlarmMqttConfig alarmMqttConfig = new AlarmMqttConfig(transportationNo,companyVo.getCompanyNo());
infoRedisService.hmSet("AlarmMqttConfig",type+"_"+addCircuitForABBVo.getSN(),gson.toJson(alarmMqttConfig));
List<ResultTopicVo> topicList = topicService.getByGateway(new GatewaySNAndTypeVo(addCircuitForABBVo.getSN(),type));
for (ResultTopicVo topic : topicList) {
infoRedisService.delHashKey("TopicConfig", topic.getTopicName());
//配置发布还是订阅
ProbesConfigVo channel_config = new ProbesConfigVo();
//根据设备的主题名,获取所有的通道
List<ResultTopicConfigVo> devChannelList = topicConfigService.getProbes(topic.getTopicName(),addCircuitForABBVo.getSN(),type);
List<ChannelConfigVo> channelConfigs = new ArrayList<>();
for (ResultTopicConfigVo devChannel : devChannelList) {
ChannelConfigVo channelConfig = new ChannelConfigVo(devChannel.getPort(),devChannel.getUnti(),devChannel.getDescription(),devChannel.getAlias());
channelConfigs.add(channelConfig);
}
channel_config.setIntervalTime(topic.getIntervalTime());
channel_config.setChannelConfigs(channelConfigs);
infoRedisService.hmSet("TopicConfig", topic.getTopicName(), channel_config.toString());
}
}else {
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"circuitFailure"));
}
return gson.toJson(fb);
}
//修改线路
@ApiOperation(value = "修改线路",notes = "修改线路,传值说明:" +
" transportationNo:运输编号," +
" cargoNo:货物编号," +
" cargoName:货物名称。" )
@ApiImplicitParams({
@ApiImplicitParam(paramType="header", name = "Account_token", value = "token", required = true, dataType = "String"),
@ApiImplicitParam(paramType="header", name = "AccountLanguage", value = "language", required = false, dataType = "String"),
})
@RequestMapping(value="/updateCircuitForABB",method = RequestMethod.POST)
public Object updateCircuitForABB(@RequestBody UpdateCircuitForABBVo updateCircuitForABBVo,HttpServletRequest request){
String datum = tokenRedisService.get("TOKEN_" +request.getHeader("Account_token"));
UserRedisVo user = gson.fromJson(datum,UserRedisVo.class);
if (StringUtils.isEmpty(updateCircuitForABBVo.getTransportationNo())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"transportationNo"));
return gson.toJson(fb);
}
if (StringUtils.isEmpty(updateCircuitForABBVo.getCargoNo())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"cargoNo"));
return gson.toJson(fb);
}
ResultCircuitForABBVo resultCircuitVo = circuitABBService.getByTransportationNo(updateCircuitForABBVo.getTransportationNo(),user.getCompanyNo());
if (resultCircuitVo==null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"noCircuit"));
return gson.toJson(fb);
}
if (resultCircuitVo.getCircuitState()==1){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"inTransit"));
return gson.toJson(fb);
}
int a = circuitABBService.updateCircuitForABB(updateCircuitForABBVo);
try {
if (a > 0) {
fb.setCode(1);
fb.setMessage(i18n.getMessage(request,"updateCircuitForABBSuccess"));
} else {
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"updateCircuitForABBFailure"));
}
} catch (Exception e){
e.printStackTrace();
logger.info(e.toString());
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"updateCircuitForABBFailure"));
}
return gson.toJson(fb);
}
//删除线路
@ApiOperation(value = "删除线路",notes = "删除线路,传值说明:" +
" transportationNo:运输编号" )
@ApiImplicitParams({
@ApiImplicitParam(paramType="header", name = "Account_token", value = "token", required = true, dataType = "String"),
@ApiImplicitParam(paramType="header", name = "AccountLanguage", value = "language", required = false, dataType = "String"),
})
@RequestMapping(value="/delCircuit",method = RequestMethod.POST)
public Object delCircuit(@RequestBody String transportationNo,HttpServletRequest request){
String datum = tokenRedisService.get("TOKEN_" +request.getHeader("Account_token"));
UserRedisVo user = gson.fromJson(datum,UserRedisVo.class);
if (StringUtils.isEmpty(transportationNo)){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"transportationNo"));
return gson.toJson(fb);
}
JSONObject jsonObject= JSON.parseObject(transportationNo);
transportationNo=(String)jsonObject.get("transportationNo");
ResultCircuitForABBVo resultCircuitVo = circuitABBService.getByTransportationNo(transportationNo,user.getCompanyNo());
if (resultCircuitVo==null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"noCircuit"));
return gson.toJson(fb);
}
if (resultCircuitVo.getCircuitState()==1){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"inTransit"));
return gson.toJson(fb);
}
TDLLogVo tdlLogVo = tdlLogService.getByTransportationNo(transportationNo);
if(tdlLogVo != null && resultCircuitVo.getCircuitState() == 0){
List<String> dev = tdlLogService.getTdlSN(transportationNo);
if(dev == null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"bindTDL"));
return gson.toJson(fb);
}
List<String> devList = tdlDeviceService.getByGatewaySN(tdlLogVo.getgSN(),tdlLogVo.getgType());
if(dev == null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"bindTDL"));
return gson.toJson(fb);
}
String tdl = tdlDeviceService.getTdl(tdlLogVo.getgSN(),tdlLogVo.getgType());
if(StringUtils.isEmpty(tdl)){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"bindTDL"));
return gson.toJson(fb);
}
ConfigCMDVo configCMDVo;
ConfigVo configVo =configService.getConfig(tdlLogVo.getgSN(),tdlLogVo.getgType());
if(configVo ==null ){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"bindGateway"));
return gson.toJson(fb);
}
if(StringUtils.isEmpty(configVo.getMessage())){
configCMDVo = new ConfigCMDVo();
}else{
ConfigCMDVo config = gson.fromJson(configVo.getMessage(),ConfigCMDVo.class);
if(tdl.equals(tdlLogVo.getTDLSN())){
configCMDVo = new ConfigCMDVo();
}else{
devList.removeAll(dev);
configCMDVo = new ConfigCMDVo("config",config.getGpsPeriod(),config.getGprsPeriod(),devList,config.getMode(),System.currentTimeMillis()/1000l);
}
}
//解绑gateway和tdl
Map<Object,Object> map=new HashMap<>();
map.put("transportationNo",transportationNo);
map.put("gSN",tdlLogVo.getgSN());
map.put("gType",tdlLogVo.getgType());
map.put("endTime",System.currentTimeMillis());
map.put("message",gson.toJson(configCMDVo));
circuitService.deleteCircuit(map);
Map<Object,Object> msg=new HashMap<>();
msg.put("msg",map.get("msg"));
if (msg.get("msg").equals("解除网关成功")){
fb.setCode(1);
fb.setMessage(i18n.getMessage(request,"circuitDeleteSuccess"));
String key ="TDL/"+tdlLogVo.getgType()+"/" +tdlLogVo.getgSN() +"/Data";
alarmRedisService.delKey(key);
infoRedisService.delHashKey("AlarmMqttConfig",tdlLogVo.getgType()+"_"+tdlLogVo.getgSN());
}else{
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"circuitDeleteFailure"));
}
}else {
int a = circuitABBService.delCircuit(transportationNo);
try {
if (a > 0) {
fb.setCode(1);
fb.setMessage(i18n.getMessage(request,"circuitDeleteSuccess"));
} else {
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"circuitDeleteFailure"));
}
} catch (Exception e){
e.printStackTrace();
logger.info(e.toString());
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"circuitDeleteFailure"));
}
}
return gson.toJson(fb);
}
//开始运输
@ApiOperation(value = "开始运输",notes = "开始运输" +
"startTime:开始时间(13位时间戳)" +
"transportationNo:运输编号")
@ApiImplicitParams({
@ApiImplicitParam(paramType="header", name = "Account_token", value = "token", required = true, dataType = "String"),
@ApiImplicitParam(paramType="header", name = "AccountLanguage", value = "language", required = false, dataType = "String"),
})
@PostMapping("/startTransportation")
public Object startTransportation(@RequestBody UpdateCircuitStartTimeVo updateCircuitStartTimeVo,HttpServletRequest request){
String datum = tokenRedisService.get("TOKEN_" +request.getHeader("Account_token"));
UserRedisVo user = gson.fromJson(datum,UserRedisVo.class);
if (StringUtils.isEmpty(updateCircuitStartTimeVo.getTransportationNo())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"transportationNo"));
return gson.toJson(fb);
}
if (circuitABBService.getByTransportationNo(updateCircuitStartTimeVo.getTransportationNo(),user.getCompanyNo())==null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"noCircuit"));
return gson.toJson(fb);
}
if (updateCircuitStartTimeVo.getStartTime()==null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"startTime"));
return gson.toJson(fb);
}
//判断该线路是否绑定
ResultGatewayVo gatewayVo = tdlLogService.getByNo(updateCircuitStartTimeVo.getTransportationNo());
if(gatewayVo == null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"notBound"));
return gson.toJson(fb);
}
int a=circuitABBService.startCircuitForABB(updateCircuitStartTimeVo);
if (a>=0){
fb.setCode(1);
fb.setMessage(i18n.getMessage(request,"startCircuitSuccess"));
}else {
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"startCircuitFailure"));
}
return gson.toJson(fb);
}
//修改线路结束时间
@ApiOperation(value = "修改线路结束时间",notes = "修改线路结束时间,传值说明:" +
" transportationNo:运输编号," +
" endTime:到达时间 " )
@ApiImplicitParams({
@ApiImplicitParam(paramType="header", name = "Account_token", value = "token", required = true, dataType = "String"),
@ApiImplicitParam(paramType="header", name = "AccountLanguage", value = "language", required = false, dataType = "String"),
})
@RequestMapping(value="/updateEndTime",method = RequestMethod.POST)
public Object updateEndTime(@RequestBody UpdateCircuitVo updateCircuitVo,HttpServletRequest request){
String datum = tokenRedisService.get("TOKEN_" +request.getHeader("Account_token"));
UserRedisVo user = gson.fromJson(datum,UserRedisVo.class);
if (StringUtils.isEmpty(updateCircuitVo.getTransportationNo())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"transportationNo"));
return gson.toJson(fb);
}
if (updateCircuitVo.getEndTime()==null){
updateCircuitVo.setEndTime(System.currentTimeMillis());
}
ResultCircuitForABBVo resultCircuitForABBVo=circuitABBService.getByTransportationNo(updateCircuitVo.getTransportationNo(),user.getCompanyNo());
if (resultCircuitForABBVo==null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"noCircuit"));
return gson.toJson(fb);
}
if (resultCircuitForABBVo.getCircuitState() ==0){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"notStarted"));
return gson.toJson(fb);
}
//获取当前线路的gateway 和tdl信息
TDLLogVo tdlLogVo = tdlLogService.getByTransportationNo(updateCircuitVo.getTransportationNo());
if(tdlLogVo == null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"notBound"));
return gson.toJson(fb);
}
List<String> dev = tdlLogService.getTdlSN(updateCircuitVo.getTransportationNo());
if(dev == null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"notBound"));
return gson.toJson(fb);
}
List<String> devList = tdlDeviceService.getByGatewaySN(tdlLogVo.getgSN(),tdlLogVo.getgType());
if(devList == null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"notBound"));
return gson.toJson(fb);
}
String tdl = tdlDeviceService.getTdl(tdlLogVo.getgSN(),tdlLogVo.getgType());
if(tdl == null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"notBound"));
return gson.toJson(fb);
}
ConfigCMDVo configCMDVo;
ConfigVo configVo =configService.getConfig(tdlLogVo.getgSN(),tdlLogVo.getgType());
if(configVo == null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"notBound"));
return gson.toJson(fb);
}
if(StringUtils.isEmpty(configVo.getMessage())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"notBound"));
return gson.toJson(fb);
}
ConfigCMDVo config = gson.fromJson(configVo.getMessage(),ConfigCMDVo.class);
Boolean untie = false;
if(tdl.equals(tdlLogVo.getTDLSN())){
configCMDVo =null;
untie = true;
}else{
devList.removeAll(dev);
configCMDVo = new ConfigCMDVo("config",config.getGpsPeriod(),config.getGprsPeriod(),devList,config.getMode(),System.currentTimeMillis()/1000l);
}
Map<Object,Object> map=new HashMap<>();
map.put("transportationNo",updateCircuitVo.getTransportationNo());
map.put("gSN",tdlLogVo.getgSN());
map.put("gType",tdlLogVo.getgType());
map.put("message",configCMDVo == null ? "" : gson.toJson(configCMDVo));
map.put("endTime",updateCircuitVo.getEndTime());
map.put("untie",untie);
circuitABBService.endCircuitForABB(map);
Map<Object,Object> msg=new HashMap<>();
msg.put("msg",map.get("msg"));
if (msg.get("msg").equals("修改成功")){
fb.setCode(1);
fb.setMessage(i18n.getMessage(request,"endCircuitSuccess"));
String key ="TDL/"+tdlLogVo.getgType()+"/" +tdlLogVo.getgSN() +"/Data";
alarmRedisService.delKey(key);
infoRedisService.delHashKey("AlarmMqttConfig",tdlLogVo.getgType()+"_"+tdlLogVo.getgSN());
}else{
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"endCircuitFailure"));
}
return gson.toJson(fb);
}
//生成运输编号
public String getTransportNo(String transportation,String transportationType){
String transportationNo="";
if(transportationType.equals("本地运输")){
transportationNo = transportationNo+"CHN";
}else{
transportationNo = transportationNo+"HUN";
}
transportationNo=transportationNo+new SimpleDateFormat("yyyyMMdd").format(new Date());
if(transportation.equals("公路")){
transportationNo = transportationNo +"G";
} else if (transportation.equals("铁路")){
transportationNo = transportationNo +"T";
}else if (transportation.equals("空运")){
transportationNo = transportationNo +"K";
}else if (transportation.equals("快递")){
transportationNo = transportationNo +"D";
}else if (transportation.equals("海运")){
transportationNo = transportationNo +"H";
}
transportationNo=transportationNo+((int)(Math.random()*(9999-1000+1))+1000);
if (circuitABBService.getNo(transportationNo)>0){
while (circuitABBService.getNo(transportationNo)>0){
transportationNo=transportationNo+((int)(Math.random()*(9999-1000+1))+1000);
}
}
return transportationNo;
}
//两个时间戳之间相差多少
public String getMistiming(Long startTime,Long arrivalTime,HttpServletRequest request){
long nd = 1000 * 24 * 60 * 60;
long nh = 1000 * 60 * 60;
long nm = 1000 * 60;
long ns = 1000;
// 获得两个时间的毫秒时间差异
long diff = startTime- arrivalTime;
// 计算差多少天
long day = diff / nd;
// 计算差多少小时
long hour = diff % nd / nh;
// 计算差多少分钟
long min = diff % nd % nh / nm;
// 计算差多少秒//输出结果
long sec = diff % nd % nh % nm / ns;
return day + i18n.getMessage(request,"day")+" " + hour + i18n.getMessage(request,"hour") +" " + min +i18n.getMessage(request,"min") ;
}
}
......@@ -58,6 +58,10 @@ public class CircuitController {
@Autowired
private AlarmLogService alarmLogService;
@Autowired
private BoschAlarmService boschAlarmService;
@Autowired
private AlarmRedisService alarmRedisService;
......@@ -889,7 +893,7 @@ public class CircuitController {
alarmTypeVar =alarmTypeVar + addCircuitVo.getTdlAlarmList().get(j).getAlarmType() +"&";
TDLSNVar =TDLSNVar + addCircuitVo.getTdlAlarmList().get(j).getTDLSN() +"&";
devList.add("TDL-"+addCircuitVo.getTdlAlarmList().get(j).getTDLSN());
AlarmRule.saveAlarmRule("TDL/"+type+"/" +addCircuitVo.getSN()+"/Data",addCircuitVo.getTdlAlarmList().get(j).getTDLSN(),addCircuitVo.getTdlAlarmList().get(j).getAlarmType(),user.getCompanyNo(),alarmService,alarmRedisService);
AlarmRule.saveAlarmRule("TDL/"+type+"/" +addCircuitVo.getSN()+"/Data",addCircuitVo.getTdlAlarmList().get(j).getTDLSN(),addCircuitVo.getTdlAlarmList().get(j).getAlarmType(),user.getCompanyNo(),boschAlarmService,alarmRedisService);
}
if(StringUtils.isEmpty(addCircuitVo.getCargoNo())){
fb.setCode(0);
......
......@@ -50,6 +50,9 @@ public class EquipmentBindingController {
@Autowired
private AlarmRedisService alarmRedisService;
@Autowired
private BoschAlarmService boschAlarmService;
@Autowired
private AlarmService alarmService;
......@@ -148,13 +151,8 @@ public class EquipmentBindingController {
fb.setMessage("该TDL已经被使用");
return gson.toJson(fb);
}
// if(StringUtils.isEmpty(bindingVo.getTransportationNo()) && !StringUtils.isEmpty(bindingVo.getWarehouseNo())){
// bindingVo.setTransportationNo("");
// }else if(StringUtils.isEmpty(bindingVo.getWarehouseNo()) && !StringUtils.isEmpty(bindingVo.getTransportationNo())){
// bindingVo.setWarehouseNo("");
// }
Integer gpsPeriod = null;
Integer gprsPeriod = null;
Integer gpsPeriod ;
Integer gprsPeriod ;
if(bindingVo.getMode() == 2){
gpsPeriod = 43200;
gprsPeriod= 60;
......@@ -225,7 +223,7 @@ public class EquipmentBindingController {
fb.setCode(1);
fb.setMessage("配置网关成功");
//根据报警类型货报警信息
AlarmRule.saveAlarmRule("TDL/"+bindingVo.getType()+"/" +bindingVo.getgSN()+"/Data",bindingVo.getTDLSN(),bindingVo.getAlarmType(),user.getCompanyNo(),alarmService,alarmRedisService);
AlarmRule.saveAlarmRule("TDL/"+bindingVo.getType()+"/" +bindingVo.getgSN()+"/Data",bindingVo.getTDLSN(),bindingVo.getAlarmType(),user.getCompanyNo(),boschAlarmService,alarmRedisService);
List<ResultTopicVo> topicList = topicService.getByGateway(new GatewaySNAndTypeVo(bindingVo.getgSN(),bindingVo.getType()));
for (ResultTopicVo topic : topicList) {
infoRedisService.delHashKey("TopicConfig", topic.getTopicName());
......@@ -270,7 +268,6 @@ public class EquipmentBindingController {
TDLSN=(String)jsonObject.get("TDLSN");
//判断当前tdl是否有网关在使用
ResultTDLDeviceVo resultTDLDeviceVo = tdlDeviceService.getByTDLSN(TDLSN);
// List<String> devList = tdlDeviceService.getByGatewaySN(resultTDLDeviceVo.getGatewaySN(),resultTDLDeviceVo.getGatewayType());
ConfigVo configVo =configService.getConfig(resultTDLDeviceVo.getGatewaySN(),resultTDLDeviceVo.getGatewayType());
ConfigCMDVo config = gson.fromJson(configVo.getMessage(),ConfigCMDVo.class);
ConfigCMDVo configCMDVo ;
......@@ -305,8 +302,7 @@ public class EquipmentBindingController {
}
}
configCMDVo = new ConfigCMDVo("config",config.getGpsPeriod(),config.getGprsPeriod(),devList,tempL,tempH,humiL,humiH,pressL,pressH,sugEnergy,accThreshold,timeThreshold,tiltThreshold,config.getMode(),System.currentTimeMillis()/1000l);
// configCMDVo = new ConfigCMDVo("config",config.getGpsPeriod(),config.getGprsPeriod(),devList,config.getMode(),System.currentTimeMillis()/1000l);
}else{
}else{
configCMDVo = null;
boo = true;
}
......
......@@ -8,10 +8,12 @@ import com.example.tdl.service.*;
import com.example.tdl.service.redis.InfoRedisService;
import com.example.tdl.service.redis.TokenRedisService;
import com.example.tdl.util.DataUtil;
import com.google.gson.Gson;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.influxdb.dto.Query;
import org.influxdb.dto.QueryResult;
import org.slf4j.Logger;
......@@ -60,6 +62,9 @@ public class HomePageController {
@Autowired
private WarehouseService warehouseService;
@Autowired
private WarehouseAlarmLogService warehouseAlarmLogService;
private final static String database ="original";
@Autowired
......@@ -109,7 +114,6 @@ public class HomePageController {
UserRedisVo user = gson.fromJson(tokenRedisService.get("TOKEN_" +request.getHeader("Account_token")),UserRedisVo.class);
time=(String) JSON.parseObject(time).get("time");
time = time.replace("天","").trim();
HomePageDataVo dataVo = new HomePageDataVo();
//总数量
dataVo.setSum(circuitService.getCount(time,System.currentTimeMillis()/1000l,user.getCompanyNo()));
......@@ -120,12 +124,10 @@ public class HomePageController {
dataVo.setAlarmed( alarmLogServcie.getCount(time,user.getCompanyNo()));
//获取颠簸数量
dataVo.setBump(alarmLogServcie.getBumpCount(time,user.getCompanyNo()));
// dataVo.setAlarmLogVoList(alarmLogServcie.getAlarmLog(time,user.getCompanyNo()));//报警列表
dataVo.setWarehouseVoList(warehouseService.getAll(user.getCompanyNo()));
//获取报警柱状图
List<HistogramData> list = alarmLogServcie.getByCount(time,user.getCompanyNo());
list.add(new HistogramData("5",delay));
//获取所有的仓库数据
for(int j = 0,length = list.size();j<length;j++){
if(list.get(j).getClassify().equals("5")){
Integer count = list.get(j).getCount() +delay;
......@@ -178,6 +180,170 @@ public class HomePageController {
return gson.toJson(dataVo);
}
//getAllForBosch
@ApiOperation(value = "bosch首页数据",notes = "bosch首页数据:" +
" sum:总数量;" +
" onRoute:在途数量;" +
" alarmed: 报警数量;" +
" bump:颠簸数量;" +
" alarmLogABBVos : {" +
" transportationNo:线路编号;" +
" description:报警描述;" +
" data:数值;" +
" alarmTime:报警时间;" +
" }" +
" circuitABBVos:{" +
" transportationNo:运输编号;" +
" gatewaySN:网关编号;" +
" TDLSN:传感器编号;" +
" cargoNo:货物编号;" +
" cargoName:货物名;" +
" lng:当前经度;" +
" lat:当前纬度;" +
" isAlarm:该线路是否发生过报警;" +
" time:当前时间;" +
" }" +
" warehouseVoList:{" +
" warehouseNo:仓库编号;" +
" img:仓库图片;" +
" warehouseName:仓库名;" +
" country:国家;" +
" city:城市;" +
" regions:区域;" +
" addressDetail:地址;" +
" regionName:区域名;" +
" lng:经度;" +
" lat:纬度;" +
" property:属性;" +
" type:类型;" +
" hardwareLevel:硬件等级;" +
" areaIndoor:室内平面面积;" +
" areaRack:货架面积;" +
" areaOutdoor:室外面积;" +
" areaPlanIndoor:实际室内面积;" +
" office:办事处;" +
" timeZone:时区;" +
" warehouseInfo:基础描述;" +
" companyNo:公司编号;" +
" companyName:公司名;" +
" remark:当前时间;" +
" }" +
" histogramDataList{" +
" classify: 种类(1-温度,2-湿度,3-震动,4-倾角,5-延误,6-离线)" +
" count:数量" +
" }")
@PostMapping("/getAllForBosch")
@ApiImplicitParams({
@ApiImplicitParam(paramType="header", name = "Account_token", value = "token", required = true, dataType = "String"),
@ApiImplicitParam(paramType="header", name = "AccountLanguage", value = "language", required = false, dataType = "String"),
})
public Object getAllForBosch(@RequestBody String time, HttpServletRequest request){
UserRedisVo user = gson.fromJson(tokenRedisService.get("TOKEN_" +request.getHeader("Account_token")),UserRedisVo.class);
time=((String) JSON.parseObject(time).get("time")).replace("天","").trim();
//获取数量
BoschHomepageVo boschHomepageVo = new BoschHomepageVo();
//总数量
boschHomepageVo.setSum(circuitService.getCount(time,System.currentTimeMillis()/1000l,user.getCompanyNo()));
//在途数量
boschHomepageVo.setOnRoute(circuitService.getOnRoute(user.getCompanyNo()));
Integer delay = circuitService.getDelayCount(System.currentTimeMillis(),time,user.getCompanyNo());
//报警数量
boschHomepageVo.setAlarmed( alarmLogServcie.getCount(time,user.getCompanyNo()));
List<ResultWarehouseVo> resultWarehouseList = warehouseService.getAll(user.getCompanyNo());
boschHomepageVo.setWarehouseVoList(resultWarehouseList);
boschHomepageVo.setTotal(resultWarehouseList.size());
List<HistogramData> list = alarmLogServcie.getByCount(time,user.getCompanyNo());
list.add(new HistogramData("5",delay));
for(int j = 0,length = list.size();j<length;j++){
if(list.get(j).getClassify().equals("5")){
Integer count = list.get(j).getCount() +delay;
list.get(j).setCount(count);
boschHomepageVo.setDelay(list.get(j).getCount());//延误数量
}
}
//获取设备的当前位置
List<CircuitVo> circuitList = circuitService.getHomepageCircuit(user.getCompanyNo());
Integer num = 0;
for(int i = 0;i<circuitList.size();i++){
ResultGatewayVo gatewayVo = tdlLogService.getByNo(circuitList.get(i).getTransportationNo());
String device = gatewayVo.getType() + "_" + gatewayVo.getSN();
Object data = infoRedisService.getHash("DeviceOnline",device);
if(data !=null){
OnlineVo onlineVo = gson.fromJson(data.toString(),OnlineVo.class);
if(onlineVo.getOnline() == 0){
num =num +1;
}
}
if(gatewayVo!=null){
String sql = "SELECT \"lng\",\"lat\" FROM \"tdl_policy\".\"" + device + "\" where time >= " + circuitList.get(i).getStartTime() * 1000000l + " ORDER BY time desc limit 1";
QueryResult queryResult = influxDBTemplate.query(new Query(sql, database));
if (queryResult.getResults().get(0).getSeries() != null) {
circuitList.get(i).setTime(parseTime(queryResult.getResults().get(0).getSeries().get(0).getValues().get(0).get(0).toString()));
circuitList.get(i).setLng(queryResult.getResults().get(0).getSeries().get(0).getValues().get(0).get(1).toString());
circuitList.get(i).setLat(queryResult.getResults().get(0).getSeries().get(0).getValues().get(0).get(2).toString());
}
}
}
list.add(new HistogramData("6",num));
boschHomepageVo.setCircuitHistogramDataList(list);
//获取仓库报警数量
boschHomepageVo.setAlert(warehouseAlarmLogService.getAlarmCount(time,user.getCompanyNo()));
//获取仓库图表数据
List<HistogramData> lists = warehouseAlarmLogService.getByCount(time,user.getCompanyNo());
lists.add(new HistogramData("5",0));
boschHomepageVo.setWarehouseHistogramDataList(lists);
boschHomepageVo.setCircuitList(circuitList);
return gson.toJson(boschHomepageVo);
}
//根据仓库标号获取温湿度以及报警信息
@ApiOperation(value = "根据仓库标号获取温湿度以及报警信息",notes = "根据仓库标号获取温湿度以及报警信息")
@ApiImplicitParams({
@ApiImplicitParam(paramType="header", name = "Account_token", value = "token", required = true, dataType = "String"),
@ApiImplicitParam(paramType="header", name = "AccountLanguage", value = "language", required = true, dataType = "String"),
})
@RequestMapping(value = "/getDataByWarehouseNo",method = RequestMethod.POST)
public Object getDataByWarehouseNo( HttpServletRequest request, @RequestBody WarehouseVo warehouseVo) {
UserRedisVo user = gson.fromJson(tokenRedisService.get("TOKEN_" +request.getHeader("Account_token")),UserRedisVo.class);
if(warehouseService.getWarehouseNo(warehouseVo.getWarehouseNo(),user.getCompanyNo()) ==0){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"Nonexistent"));
return gson.toJson(fb);
}
ResultWarehouseDetailsVo resultWarehouseDetailsVo = warehouseService.getDetailsBywarehouseNo(warehouseVo.getWarehouseNo());
List<DeviceVo> list = warehouseService.getDevice(warehouseVo.getWarehouseNo());
if(list.size() == 0){
resultWarehouseDetailsVo.setTemp("~");
resultWarehouseDetailsVo.setHumi("~");
}
String sql = "";
for(int j = 0,len=list.size();j<len;j++){
if( StringUtils.isEmpty(list.get(j).getTdl()))
continue;
String tdl = list.get(j).getTdl().replace(",","\' or \"tdl\" = \'");
sql = "SELECT \"T\",\"h\" FROM \"tdl_policy\".\""+list.get(j).getDevice()+"\" where \"tdl\" = \'"+ tdl +"\' and time >="+ list.get(j).getStartTime() +" GROUP BY \"tdl\" order by time desc limit 1";
}
if(StringUtils.isEmpty(sql)){
resultWarehouseDetailsVo.setTemp("~");
resultWarehouseDetailsVo.setHumi("~");
}
QueryResult queryResult = influxDBTemplate.query(new Query(sql,database));
if(queryResult.getResults().get(0).getSeries()== null){
resultWarehouseDetailsVo.setTemp("~");
resultWarehouseDetailsVo.setHumi("~");
}else{
SimpleWarehouseVo simpleWarehouseVo = DataUtil.dataData(queryResult);
resultWarehouseDetailsVo.setHumi(simpleWarehouseVo.getHumidity());
resultWarehouseDetailsVo.setTemp(simpleWarehouseVo.getTemp());
}
//获取仓库报警数据
String alarmDescription = warehouseAlarmLogService.getLastAlarm(warehouseVo.getWarehouseNo());
resultWarehouseDetailsVo.setAlarmDesciption( alarmDescription);
return resultWarehouseDetailsVo;
}
//获取当天所有的设备数据
@ApiOperation(value = "获取所有的运输数据",notes = "获取运输设备数据:" +
" sum:总数量;" +
......@@ -248,7 +414,6 @@ public class HomePageController {
dataVo.setOnRoute(circuitABBService.getOnRoute(user.getCompanyNo()));//在途数量
dataVo.setAlarmed(alarmLogServcie.getCount(time,user.getCompanyNo()));//报警数量
dataVo.setBump(alarmLogServcie.getBumpCount(time,user.getCompanyNo())); //获取颠簸数量
// dataVo.setAlarmLogVos(alarmLogServcie.getAlarmLog(time,user.getCompanyNo()));//报警列表
dataVo.setWarehouseVoList(warehouseService.getAll(user.getCompanyNo()));
//获取设备的当前位置
......@@ -269,12 +434,10 @@ public class HomePageController {
String sql = "SELECT \"bdlng\",\"bdlat\" FROM \"tdl_policy\".\"" + device + "\" where \"data_type\" = 'location' and time >= " + startTime + " ORDER BY time desc limit 1";
QueryResult queryResult = influxDBTemplate.query(new Query(sql, database));
if (queryResult.getResults().get(0).getSeries() != null) {
// circuitVos.get(i).setTime(parseTime(queryResult.getResults().get(0).getSeries().get(0).getValues().get(0).get(0).toString()));
circuitVos.get(i).setLng(queryResult.getResults().get(0).getSeries().get(0).getValues().get(0).get(1).toString());
circuitVos.get(i).setLat(queryResult.getResults().get(0).getSeries().get(0).getValues().get(0).get(2).toString());
}
}else {
// circuitVos.get(i).setTime(null);
circuitVos.get(i).setLng(null);
circuitVos.get(i).setLat(null);
}
......
......@@ -15,8 +15,6 @@ import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -73,8 +71,6 @@ public class LoginController {
}
try {
UserVo userVo=userService.getByUserName(loginUserVo.getUserName());
//将封装好的用户名和密码交给shiro安全框架并实现登陆
SecurityUtils.getSubject().login(new UsernamePasswordToken(loginUserVo.getUserName(), loginUserVo.getPassword()));
//生成token
String token = DigestUtils.md5Hex(System.currentTimeMillis() + userVo.getUserName());
UserRedisVo redisVo = new UserRedisVo(userVo.getUserName(),userVo.getUserNumber(),userVo.getNickName(),userVo.getEmail(),userVo.getPhone(),userVo.getRoleName(),userVo.getCompanyName(),userVo.getCompanyNo());
......
......@@ -3,6 +3,8 @@ package com.example.tdl.web;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.oss.OSSClient;
import com.example.tdl.common.WarehouseExcel;
import com.example.tdl.domain.dto.CommFeedback;
import com.example.tdl.domain.vo.*;
import com.example.tdl.entity.Alarm;
......@@ -10,11 +12,15 @@ import com.example.tdl.entity.Gateway;
import com.example.tdl.service.*;
import com.example.tdl.service.redis.InfoRedisService;
import com.example.tdl.service.redis.TokenRedisService;
import com.example.tdl.util.AliyunOSSClientUtil;
import com.example.tdl.util.DataUtil;
import com.example.tdl.util.ZipCompressUtil;
import com.google.gson.Gson;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.influxdb.dto.Query;
import org.influxdb.dto.QueryResult;
import org.slf4j.Logger;
......@@ -25,6 +31,11 @@ import org.springframework.expression.spel.ast.NullLiteral;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.crypto.Data;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
......@@ -41,7 +52,7 @@ public class WarehouseController {
Gson gson=new Gson();
@Autowired
private WarehouseService warehouseService=new WarehouseService();
private WarehouseService warehouseService;
@Autowired
private TokenRedisService tokenRedisService;
......@@ -70,6 +81,9 @@ public class WarehouseController {
@Autowired
private TDLLogService tdlLogService;
@Autowired
private WarehouseAlarmLogService warehouseAlarmLogService;
private final static String database ="original";
......@@ -241,10 +255,9 @@ public class WarehouseController {
continue;
}
//解析温湿度数据
SimpleWarehouseVo simpleWarehouseVo = dataData(queryResult);
SimpleWarehouseVo simpleWarehouseVo = DataUtil.dataData(queryResult);
simpleWarehouseVos.get(i).setHumidity(simpleWarehouseVo.getHumidity());
simpleWarehouseVos.get(i).setTemp(simpleWarehouseVo.getTemp());
}
return simpleWarehouseVos;
}
......@@ -989,9 +1002,7 @@ public class WarehouseController {
})
@PostMapping("/getWarehouseData")
public Object getWarehouseData(@RequestBody WarehouseVo warehouseVo,HttpServletRequest request){
String token = request.getHeader("Account_token");
String datum = tokenRedisService.get("TOKEN_" +token);
UserRedisVo user = gson.fromJson(datum,UserRedisVo.class);
UserRedisVo user = gson.fromJson(tokenRedisService.get("TOKEN_" +request.getHeader("Account_token")),UserRedisVo.class);
if(warehouseService.getWarehouseNo(warehouseVo.getWarehouseNo(),user.getCompanyNo()) ==0){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"Nonexistent"));
......@@ -1055,22 +1066,6 @@ public class WarehouseController {
if(queryResult3.getResults().get(0).getSeries() != null){
warehouseTDLDetailVos = getWarehouseData(queryResult3,warehouseVo.getOffset()==null ? "+8" : warehouseVo.getOffset(),resultAlarmVo,warehouseDataVo);
//解析数据
// WarehouseTDLDetailVo warehouseTDLDetailVo=new WarehouseTDLDetailVo();
// warehouseTimeAndDataVos = getData(queryResult3,warehouseVo.getOffset()==null ? "+8" : warehouseVo.getOffset());
// warehouseTDLDetailVo.setDescription("temperature");
// warehouseTDLDetailVo.setTimeAndValuesVos(warehouseTimeAndDataVos);
// warehouseTDLDetailVo.setMax(resultAlarmVo.getTemMax());
// warehouseTDLDetailVo.setMin(resultAlarmVo.getTemMin());
// warehouseTDLDetailVos.add(warehouseTDLDetailVo);
//
// WarehouseTDLDetailVo warehouseTDLDetailVo1=new WarehouseTDLDetailVo();
// warehouseTimeAndDataVos1 = getDatas(queryResult3,warehouseVo.getOffset()==null ? "+8" : warehouseVo.getOffset());
// warehouseTDLDetailVo1.setDescription("humidity");
// warehouseTDLDetailVo1.setTimeAndValuesVos(warehouseTimeAndDataVos1);
// warehouseTDLDetailVo1.setMax(resultAlarmVo.getHumidityMax());
// warehouseTDLDetailVo1.setMin(resultAlarmVo.getHumidityMin());
// warehouseTDLDetailVos.add(warehouseTDLDetailVo1);
}
warehouseDataVo.setWarehouseTDLDetailVos(warehouseTDLDetailVos);
warehouseDataVos.add(warehouseDataVo);
......@@ -1185,6 +1180,114 @@ public class WarehouseController {
}
//根据条件获取温湿度数据
@ApiOperation(value = "根据条件获取温湿度数据",notes = "根据条件获取温湿度数据")
@ApiImplicitParams({
@ApiImplicitParam(paramType="header", name = "Account_token", value = "token", required = true, dataType = "String"),
@ApiImplicitParam(paramType="header", name = "AccountLanguage", value = "language", required = true, dataType = "String"),
})
@RequestMapping(value = "/getDataByTime",method = RequestMethod.POST)
public String getDataByTime( HttpServletRequest request, @RequestBody DownloadForWarehouseVo downloadForWarehouseVo) {
String token = request.getHeader("Account_token");
String datum = tokenRedisService.get("TOKEN_" +token);
UserRedisVo user = gson.fromJson(datum,UserRedisVo.class);
if (downloadForWarehouseVo.getStartTime()==null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"downloadStartTime"));
return gson.toJson(fb);
}
if (downloadForWarehouseVo.getStopTime() ==null){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"downloadEndTime"));
return gson.toJson(fb);
}
if(downloadForWarehouseVo.getStopTime()<downloadForWarehouseVo.getStartTime()){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"downLoad"));
return gson.toJson(fb);
}
if (StringUtils.isEmpty(downloadForWarehouseVo.getWarehouseNo())){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"warehouseNo"));
return gson.toJson(fb);
}
if(warehouseService.getWarehouseNo(downloadForWarehouseVo.getWarehouseNo(),user.getCompanyNo()) ==0){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"Nonexistent"));
return gson.toJson(fb);
}
List<ResultWarehouseNoAndTDLSNAndTimeVo> resultWarehouseNoAndTDLSNAndTimeVos=tdlLogService.getByWarehouseNoAndTime(downloadForWarehouseVo);
if (resultWarehouseNoAndTDLSNAndTimeVos.size()==0){
fb.setCode(0);
fb.setMessage(i18n.getMessage(request,"noData"));
return gson.toJson(fb);
}
List<WarehouseGatewayDateVo> warehouseGatewayDateVoList=new ArrayList<>();
List<GatewayOnLineVo> gatewayOnLineVos=gatewayService.getByWarehouseNo(downloadForWarehouseVo.getWarehouseNo());
Long endTime = System.currentTimeMillis() +2*24*3600*1000l;
for (int a=0;a<gatewayOnLineVos.size();a++){
if(gatewayOnLineVos.get(a) == null){
continue;
}
WarehouseGatewayDateVo warehouseGatewayDateVo=new WarehouseGatewayDateVo();
warehouseGatewayDateVo.setgSN(gatewayOnLineVos.get(a).getgSN());
warehouseGatewayDateVo.setType(gatewayOnLineVos.get(a).getType());
String device = gatewayOnLineVos.get(a).getType() + "_" + gatewayOnLineVos.get(a).getgSN();
String sql ="SELECT \"battery\" FROM \"tdl_policy\".\""+device +"\" where time >="+ gatewayOnLineVos.get(a).getStartTime()*1000000l+" ORDER BY time DESC LIMIT 1";
QueryResult queryResult = influxDBTemplate.query(new Query(sql, database));
if (queryResult.getResults().get(0).getSeries() != null) {
if(Double.valueOf(queryResult.getResults().get(0).getSeries().get(0).getValues().get(0).get(1).toString())>0){
warehouseGatewayDateVo.setBattery(queryResult.getResults().get(0).getSeries().get(0).getValues().get(0).get(1)==null ? "NA" :queryResult.getResults().get(0).getSeries().get(0).getValues().get(0).get(1).toString());
}else{
warehouseGatewayDateVo.setBattery("NA");
}
}else {
warehouseGatewayDateVo.setBattery("NA");
}
Object data = infoRedisService.getHash("DeviceOnline", device );
if(data !=null){
OnlineVo onlineVo = gson.fromJson(data.toString(),OnlineVo.class);
if(onlineVo.getOnline() == 1){
warehouseGatewayDateVo.setState(7);
}else {
warehouseGatewayDateVo.setState(6);
}
}else{
warehouseGatewayDateVo.setState(6);
}
List<String> tdls=tdlDeviceService.getByGatewaySN(gatewayOnLineVos.get(a).getgSN(),gatewayOnLineVos.get(a).getType());
List<WarehouseDataVo> warehouseDataVos=new ArrayList<>();
for (int b=0;b<tdls.size();b++){
List<WarehouseTDLDetailVo> warehouseTDLDetailVos=new ArrayList<>();
WarehouseDataVo warehouseDataVo=new WarehouseDataVo();
warehouseDataVo.setTDLSN(tdls.get(b).replace("TDL-","").trim());
String sqls ="SELECT \"tdl\",\"b\",\"T\",\"h\" FROM \"tdl_policy\".\""+device+"\" WHERE \"tdl\" = '"+tdls.get(b)+"' AND time >="+ downloadForWarehouseVo.getStartTime()*1000000l+" and time <="+ downloadForWarehouseVo.getStopTime()*1000000l+" ORDER BY time desc limit 1 ";
QueryResult queryResults = influxDBTemplate.query(new Query(sqls, database));
ResultAlarmVo resultAlarmVo=alarmService.getAlarmByWarehouseNo(downloadForWarehouseVo.getWarehouseNo(),gatewayOnLineVos.get(a).getgSN(),tdls.get(b).replace("TDL-","").trim());
if (queryResults.getResults().get(0).getSeries() != null) {
warehouseDataVo.setTime(UTCToCST(queryResults.getResults().get(0).getSeries().get(0).getValues().get(0).get(0).toString(),downloadForWarehouseVo.getOffset()==null ? "+8" : downloadForWarehouseVo.getOffset()));
warehouseDataVo.setBatteryVoltage(queryResults.getResults().get(0).getSeries().get(0).getValues().get(0).get(2).toString());
warehouseDataVo.setTemperature(queryResults.getResults().get(0).getSeries().get(0).getValues().get(0).get(3).toString());
warehouseDataVo.setHumidity(queryResults.getResults().get(0).getSeries().get(0).getValues().get(0).get(4).toString());
}else{
warehouseDataVo.setTime("NA");
warehouseDataVo.setBatteryVoltage("NA");
warehouseDataVo.setTemperature("NA");
warehouseDataVo.setHumidity("NA");
}
String sql3 ="SELECT \"tdl\",\"T\",\"h\" FROM \"tdl_policy\".\""+device+"\" WHERE \"tdl\" = '"+tdls.get(b)+"' AND time >="+ downloadForWarehouseVo.getStartTime()*1000000l+" and time <="+ downloadForWarehouseVo.getStopTime()*1000000l+" ORDER BY time ";
QueryResult queryResult3 = influxDBTemplate.query(new Query(sql3, database));
if(queryResult3.getResults().get(0).getSeries() != null){
warehouseTDLDetailVos = getWarehouseData(queryResult3,downloadForWarehouseVo.getOffset()==null ? "+8" : downloadForWarehouseVo.getOffset(),resultAlarmVo,warehouseDataVo);
}
warehouseDataVo.setWarehouseTDLDetailVos(warehouseTDLDetailVos);
warehouseDataVos.add(warehouseDataVo);
}
warehouseGatewayDateVo.setWarehouseDataVos(warehouseDataVos);
warehouseGatewayDateVoList.add(warehouseGatewayDateVo);
}
return gson.toJson(warehouseGatewayDateVoList);
}
//生成仓库编号
public String getWarehouseNo(String companyNo){
......@@ -1215,10 +1318,6 @@ public class WarehouseController {
warehouseTimeAndDataVos.setValue(value.get(2)==null ? "" :value.get(2).toString());
historyDataLists.add(warehouseTimeAndDataVos);
}
// if(!warehouseDataVo.getTemperature().equals("NA")){
// historyDataLists.add(new WarehouseTimeAndDataVo(warehouseDataVo.getTime(),warehouseDataVo.getTemperature()));
// historyDataList.add(new WarehouseTimeAndDataVo(warehouseDataVo.getTime(),warehouseDataVo.getHumidity()));
// }
WarehouseTDLDetailVo warehouseTDLDetailVo=new WarehouseTDLDetailVo();
warehouseTDLDetailVo.setDescription("temperature");
warehouseTDLDetailVo.setTimeAndValuesVos(historyDataLists);
......@@ -1328,67 +1427,6 @@ public class WarehouseController {
}
public SimpleWarehouseVo dataData(QueryResult queryResult){
SimpleWarehouseVo simpleWarehouseVo = new SimpleWarehouseVo();
List<List<Object>> value = new ArrayList<>();
for(QueryResult.Result result : queryResult.getResults()){
if(result.getSeries() !=null){
for (QueryResult.Series series : result.getSeries()) {
if(series !=null){
value.add(series.getValues().get(0));
}else{
continue;
}
}
}else{
continue;
}
}
List<Double> tempList = new ArrayList<>();
List<Double> humList = new ArrayList<>();
for(int i = 0,length = value.size();i<length;i++){
DecimalFormat df = new DecimalFormat(".0");
tempList.add(value.get(i).get(1)==null ? 0 :Double.valueOf(df.format(Double.valueOf(value.get(i).get(1).toString()))));
humList.add(value.get(i).get(2)==null ? 0 :Double.valueOf(df.format(Double.valueOf(value.get(i).get(2).toString()))));
}
//设置数据
simpleWarehouseVo.setTemp(getValue(tempList));
simpleWarehouseVo.setHumidity(getValue(humList));
return simpleWarehouseVo;
}
public String getValue(List<Double> data){
String s = "";
Collections.sort(data);
if(data.size() == 1){
if(data.get(0) == 0){
return "~";
}
return data.get(0) +"~" +data.get(0);
}else{
if(data.get(0)!=0 && data.get(data.size()-1)!=0){
return data.get(0) +"~" +data.get(data.size()-1);
}else{
for(int i=0;i<data.size();i++){
if(data.get(0)==0){
continue;
}else{
s=data.get(i).toString();
}
}
if(StringUtils.isEmpty(s)){
return "~";
}
return s+"~"+data.get(data.size()-1);
}
}
}
public TdlDataVo parseData(QueryResult queryResult,String humidityMax,String humidityMin,String tempMax,String tempMin){
TdlDataVo tdlDataVo = new TdlDataVo();
List<List<Object>> values = new ArrayList<>();
......
spring.datasource.url=jdbc:mysql://172.16.1.200:3306/tdlcloud?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.url=jdbc:mysql://172.16.1.24:3306/tdlcloud?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=37774020
spring.redis.host=172.16.1.200
spring.redis.host=172.16.1.14
server.port=8092
tdl.influxdb.host=http://172.16.1.200:8086
tdl.influxdb.host=http://172.16.1.24:8086
spring.datasource.url=jdbc:mysql://47.97.184.225:3306/tdlcloud?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/tdlcloud?useUnicode=true&characterEncoding=utf-8&useSSL=false
#spring.datasource.url=jdbc:mysql://47.97.184.225:3306/tdlcloud?useUnicode=true&characterEncoding=utf-8&useSSL=false
#spring.datasource.password=37774020
#spring.datasource.url=jdbc:mysql://47.110.153.44:3306/tdlcloud?useUnicode=true&characterEncoding=utf-8&useSSL=false
#spring.datasource.url=jdbc:mysql://172.16.1.13:3306/tdlcloud?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=37774020
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
......@@ -68,8 +70,8 @@ spring.influxdb.write-timeout=10
spring.influxdb.gzip=true
tdl.core.add =http://172.16.1.52:8079/witium/addMount
tdl.core.delete =http://172.16.52:8079/witium/delMount
tdl.core.add =http://172.16.1.24:8079/witium/addMount
tdl.core.delete =http://172.16.24:8079/witium/delMount
mqtt.userName = ugen
mqtt.password = ugen
......
......@@ -13,10 +13,16 @@ humidityMin = \u6E7F\u5EA6\u4E0B\u9650\u4E0D\u80FD\u4E3A\u7A7A
humidityMaxLimit = \u6E7F\u5EA6\u4E0A\u9650\u4E0D\u80FD\u8D85\u8FC7100%
humidityMinLimit = \u6E7F\u5EA6\u4E0B\u9650\u4E0D\u80FD\u4F4E\u4E8E0%
wrongHumidity=\u6E7F\u5EA6\u4E0A\u9650\u4E0D\u80FD\u5C0F\u4E8E\u6E7F\u5EA6\u4E0B\u9650
tilt = \u503E\u659C\u5EA6\u4E0D\u80FD\u4E3A\u7A7A
tilt = \u503E\u659C\u5EA6\u4E0A\u9650\u4E0D\u80FD\u4E3A\u7A7A
tiltLimit = \u503E\u659C\u5EA6\u5FC5\u987B\u57280\u00B0-180\u00B0\u4E4B\u95F4\uFF0C\u4E14\u5FC5\u987B\u662F30\u7684\u500D\u6570
shock = \u9707\u5EA6\u4E0D\u80FD\u4E3A\u7A7A
shock = \u9707\u52A8\u4E0A\u9650\u4E0D\u80FD\u4E3A\u7A7A
shockLimit=\u9707\u52A8\u5FC5\u987B\u57281.5g-13.8g\u4E4B\u95F4
tempLower = \u6E29\u5EA6\u4E0B\u4E0B\u9650\u4E0D\u80FD\u4E3A\u7A7A
tempUpper = \u6E29\u5EA6\u4E0A\u4E0A\u9650\u4E0D\u80FD\u4E3A\u7A7A
humidityLower = \u6E7F\u5EA6\u4E0B\u4E0B\u9650\u4E0D\u80FD\u4E3A\u7A7A
humidityUpper = \u6E7F\u5EA6\u4E0A\u4E0A\u9650\u4E0D\u80FD\u4E3A\u7A7A
tiltUpper = \u503E\u659C\u89D2\u4E0A\u4E0A\u9650\u4E0D\u80FD\u4E3A\u7A7A
shockUpper = \u9707\u52A8\u4E0A\u4E0A\u9650\u4E0D\u80FD\u4E3A\u7A7A
alarmExist = \u6DFB\u52A0\u7684\u9884\u8B66\u7C7B\u578B\u5728\u8BE5\u573A\u666F\u4E2D\u5DF2\u5B58\u5728
addSuccess = \u6DFB\u52A0\u9884\u8B66\u4FE1\u606F\u6210\u529F
addFailure = \u6DFB\u52A0\u9884\u8B66\u4FE1\u606F\u5931\u8D25
......
......@@ -36,7 +36,8 @@
#{alarmTime,jdbcType=INTEGER},
#{classify,jdbcType=VARCHAR},
#{desp,jdbcType=VARCHAR},
#{alarmNo,jdbcType=VARCHAR}
#{alarmNo,jdbcType=VARCHAR},
0
)
</insert>
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.tdl.mapper.BoschAlarmMapper">
<!--查询所有预警信息-->
<select id="getAll" resultType="com.example.tdl.domain.vo.ResultBoschAlarmVo" parameterType="String">
SELECT alarmType,temUpper,temMax,temMin,temLower,humidityUpper,humidityMax,humidityMin,humidityLower,tilt,tiltUpper,shock,shockUpper,remark
from alarm a INNER JOIN company c ON a.company_id=c.id
WHERE c.companyNo=#{companyNo,jdbcType=VARCHAR}
</select>
<!--根据预警类型模糊查询-->
<select id="getAllByAlarmType" resultType="com.example.tdl.domain.vo.ResultBoschAlarmVo" parameterType="String">
SELECT alarmType,temUpper,temMax,temMin,temLower,humidityUpper,humidityMax,humidityMin,humidityLower,tilt,tiltUpper,shock,shockUpper,remark
from alarm a INNER JOIN company c ON a.company_id=c.id
WHERE c.companyNo=#{companyNo,jdbcType=VARCHAR}
AND alarmType LIKE CONCAT(CONCAT('%',#{alarmType,jdbcType=VARCHAR}), '%')
</select>
<!--添加预警信息-->
<insert id="addAlarm" parameterType="com.example.tdl.domain.vo.AddBoschAlarmVo">
INSERT INTO alarm VALUES (
NULL ,
#{alarmType,jdbcType=VARCHAR},
#{temUpper,jdbcType=FLOAT},
#{temMax,jdbcType=FLOAT},
#{temMin,jdbcType=FLOAT},
#{temLower,jdbcType=FLOAT},
#{humidityUpper,jdbcType=FLOAT},
#{humidityMax,jdbcType=FLOAT},
#{humidityMin,jdbcType=FLOAT},
#{humidityLower,jdbcType=FLOAT},
#{tiltUpper,jdbcType=FLOAT},
#{tilt,jdbcType=FLOAT},
#{shockUpper,jdbcType=INTEGER},
#{shock,jdbcType=INTEGER},
(SELECT id from company where companyNo=#{companyNo,jdbcType=VARCHAR}),
#{remark,jdbcType=VARCHAR}
)
</insert>
<!--修改预警信息-->
<update id="updateAlarm" parameterType="com.example.tdl.domain.vo.UpdateBoschAlarmVo">
UPDATE alarm SET
alarmType=#{alarmType,jdbcType=VARCHAR},
temUpper = #{temUpper,jdbcType=FLOAT},
temMax = #{temMax,jdbcType=FLOAT},
temMin = #{temMin,jdbcType=FLOAT},
temLower =#{temLower,jdbcType=FLOAT},
humidityUpper = #{humidityUpper,jdbcType=FLOAT},
humidityMax = #{humidityMax,jdbcType=FLOAT},
humidityMin =#{humidityMin,jdbcType=FLOAT},
humidityLower =#{humidityLower,jdbcType=FLOAT},
tiltUpper = #{tiltUpper,jdbcType=FLOAT},
tilt = #{tilt,jdbcType=FLOAT},
shockUpper = #{shockUpper,jdbcType=INTEGER},
shock = #{shock,jdbcType=INTEGER},
remark=#{remark,jdbcType=VARCHAR}
WHERE alarmType=#{oldAlarmType,jdbcType=VARCHAR}
AND company_id=(SELECT id from company where companyNo=#{companyNo,jdbcType=VARCHAR})
</update>
<!--删除预警信息-->
<delete id="delAlarm" parameterType="com.example.tdl.domain.vo.DelAlarmVo">
DELETE from alarm WHERE alarmType=#{alarmType,jdbcType=VARCHAR}
AND company_id=(SELECT id from company where companyNo=#{companyNo,jdbcType=VARCHAR})
</delete>
<!--根据预警类型和预警场景查询-->
<select id="getByType" parameterType="String" resultType="com.example.tdl.domain.vo.ResultBoschAlarmVo">
SELECT alarmType,temUpper,temMax,temMin,temLower,humidityUpper,humidityMax,humidityMin,humidityLower,tilt,tiltUpper,shock,shockUpper,remark
from alarm a INNER JOIN company c ON a.company_id=c.id
WHERE c.companyNo=#{companyNo,jdbcType=VARCHAR}
AND alarmType=#{alarmType,jdbcType=VARCHAR}
</select>
<select id="getAlarmByWarehouseNo" parameterType="String" resultType="com.example.tdl.domain.vo.ResultBoschAlarmVo">
SELECT DISTINCT alarmType,temUpper,temMax,temMin,temLower,humidityUpper,humidityMax,humidityMin,humidityLower,tilt,tiltUpper,shock,shockUpper,remark
FROM tdl_gateway_log tgl INNER JOIN alarm a ON tgl.alarm_id=a.id
where warehouseNo=#{warehouseNo,jdbcType=VARCHAR}
AND gatewaySN=#{gatewaySN,jdbcType=VARCHAR}
AND TDLSN=#{TDLSN,jdbcType=VARCHAR}
AND endTime is null
</select>
</mapper>
\ No newline at end of file
......@@ -349,6 +349,14 @@
AND company_id=(SELECT id from company where companyNo=#{companyNo,jdbcType=VARCHAR})
</select>
<select id="getHomepageCircuit" parameterType="java.lang.String" resultType="com.example.tdl.domain.vo.CircuitVo">
SELECT c.transportationNo,cargoNo,(SELECT city from city WHERE id =(SELECT city_id from circuit_transfer WHERE circuit_id=c.id ORDER BY sequence LIMIT 1)) startCity,startTime,
(SELECT city from city WHERE id =(SELECT city_id from circuit_transfer WHERE circuit_id=c.id ORDER BY sequence DESC LIMIT 1)) endCity,endTime
from circuit c where c.state=1
and c.circuitState = 1
AND company_id=(SELECT id from company where companyNo=#{companyNo,jdbcType=VARCHAR})
</select>
<select id="getDelay" resultType="java.lang.Integer">
select count(transportationNo) from circuit
where #{compTime,jdbcType=BIGINT}> compTime
......
......@@ -134,6 +134,10 @@
</if>
</select>
<select id="getModeByGateway" parameterType="String" resultType="java.lang.Integer">
SELECT useScene from gateway where SN=#{SN,jdbcType=VARCHAR} and type=#{type,jdbcType=VARCHAR}
</select>
<!-- <insert id="addGateway" parameterType="com.example.tdl.domain.vo.AddGatewayVo">
INSERT into gateway VALUES (
......
......@@ -12,7 +12,8 @@
#{data,jdbcType=FLOAT},
#{alarmTime,jdbcType=BIGINT},
#{desp,jdbcType=VARCHAR},
#{alarmNo,jdbcType=VARCHAR}
#{alarmNo,jdbcType=VARCHAR},
0
)
</insert>
......@@ -25,4 +26,39 @@
GROUP BY hours ,desp
</select>
<select id="getLastAlarm" resultType="String" parameterType="String">
select description from warehouse_alarmlog where warehouseNo=#{warehouseNo,jdbcType=VARCHAR}
and DATE_SUB(CURDATE(), INTERVAL 7 DAY) &lt;= date(FROM_UNIXTIME(alarmTime/1000,'%Y-%m-%d %H:%i:%s'))
</select>
<select id = "getByCount" parameterType="String" resultType="com.example.tdl.domain.vo.HistogramData" >
SELECT ifnull(classify,"1") classify,count(description) count FROM warehouse_alarmlog WHERE classify = "1"
and warehouseNo in (select warehouseNo from warehouse where company_id =(select id from company where companyNo =#{companyNo,jdbcType=VARCHAR}))
AND DATE_SUB(CURDATE(), INTERVAL #{time,jdbcType=VARCHAR} DAY) &lt;= date(FROM_UNIXTIME(alarmTime/1000,'%Y-%m-%d %H:%i:%s'))
UNION ALL
SELECT ifnull(classify,"2") classify,count(description) count FROM warehouse_alarmlog WHERE classify = "2"
and warehouseNo in (select warehouseNo from warehouse where company_id =(select id from company where companyNo =#{companyNo,jdbcType=VARCHAR}))
AND DATE_SUB(CURDATE(), INTERVAL #{time,jdbcType=VARCHAR} DAY) &lt;= date(FROM_UNIXTIME(alarmTime/1000,'%Y-%m-%d %H:%i:%s'))
UNION ALL
SELECT ifnull(classify,"3") classify,count(description) count FROM warehouse_alarmlog WHERE classify = "3"
and warehouseNo in (select warehouseNo from warehouse where company_id =(select id from company where companyNo =#{companyNo,jdbcType=VARCHAR}))
AND DATE_SUB(CURDATE(), INTERVAL #{time,jdbcType=VARCHAR} DAY) &lt;= date(FROM_UNIXTIME(alarmTime/1000,'%Y-%m-%d %H:%i:%s'))
UNION ALL
SELECT ifnull(classify,"4") classify,count(description) count FROM warehouse_alarmlog WHERE classify = "4"
and warehouseNo in (select warehouseNo from warehouse where company_id =(select id from company where companyNo =#{companyNo,jdbcType=VARCHAR}))
AND DATE_SUB(CURDATE(), INTERVAL #{time,jdbcType=VARCHAR} DAY) &lt;= date(FROM_UNIXTIME(alarmTime/1000,'%Y-%m-%d %H:%i:%s'))
UNION ALL
SELECT ifnull(classify,"6") classify,count(description) count FROM warehouse_alarmlog WHERE classify = "6"
and warehouseNo in (select warehouseNo from warehouse where company_id =(select id from company where companyNo =#{companyNo,jdbcType=VARCHAR}))
AND DATE_SUB(CURDATE(), INTERVAL #{time,jdbcType=VARCHAR} DAY) &lt;= date(FROM_UNIXTIME(alarmTime/1000,'%Y-%m-%d %H:%i:%s'))
</select>
<select id="getAlarmCount" parameterType="String" resultType="java.lang.Integer">
select count(DISTINCT warehouseNo) from warehouse_alarmlog
where warehouseNo in (select warehouseNo from circuit where company_id =(
select id from company where companyNo =#{companyNo,jdbcType=VARCHAR}))
and DATE_SUB(CURDATE(), INTERVAL #{time,jdbcType=VARCHAR} DAY) &lt;= date(FROM_UNIXTIME(alarmTime/1000,'%Y-%m-%d %H:%i:%s'))
</select>
</mapper>
\ No newline at end of file
......@@ -23,7 +23,7 @@
order by createTime desc
</select>
<!-- 根据条件查询仓库信息-->
<select id="getAllByTerm" resultType="com.example.tdl.domain.vo.ResultWarehouseVo" parameterType="com.example.tdl.domain.vo.WarehouseTermVo">
select warehouseNo,w.img,warehouseName,ct.country,ct.city,CONCAT_WS("-",ct.country,ct.city) regions ,w.addressDetail,r.regionName,lng,lat,property,
......@@ -290,4 +290,15 @@
and u.id = wu.user_id
and w.warehouseNo=#{warehouseNo,jdbcType=VARCHAR}
</select>
<select id="getDetailsBywarehouseNo" parameterType="String" resultType="com.example.tdl.domain.vo.ResultWarehouseDetailsVo">
select w.warehouseNo,w.img,warehouseName,ct.country,ct.city,CONCAT_WS("-",ct.country,ct.city) regions ,w.addressDetail,r.regionName,lng,lat,property,
type,hardwareLevel,areaIndoor,areaRack,areaOutdoor,areaPlanIndoor,office,timeZone,warehouseInfo,companyNo,companyName,w.remark
from warehouse w,region r,city ct ,company c
where c.id = w.company_id
and r.id = w.region_id
and ct.id = w.city_id
and w.warehouseNo=#{warehouseNo,jdbcType=VARCHAR}
</select>
</mapper>
\ No newline at end of file
......@@ -59,5 +59,6 @@
<mapper resource="mapper/CarMapper.xml"/>
<mapper resource="mapper/SideMapper.xml"/>
<mapper resource="mapper/WarehouseAlarmLogMapper.xml"/>
<mapper resource="mapper/BoschAlarmMapper.xml"/>
</mappers>
</configuration>
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