Browse Source

Merge branch 'develop' of http://39.106.31.193:9211/mengff/jihe-dc into develop

# Conflicts:
#	zc-business/src/main/java/com/zc/business/service/impl/DcDeviceServiceImpl.java
develop
xiepufeng 1 year ago
parent
commit
dbde0da0c7
  1. 4
      ruoyi-admin/src/main/resources/application.yml
  2. 47
      ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
  3. 63
      zc-business/src/main/java/com/zc/business/controller/CodeScanningAlarmController.java
  4. 14
      zc-business/src/main/java/com/zc/business/controller/DcDeviceController.java
  5. 5
      zc-business/src/main/java/com/zc/business/controller/DcEmployeesController.java
  6. 41
      zc-business/src/main/java/com/zc/business/controller/DcWeatherMonitoringController.java
  7. 4
      zc-business/src/main/java/com/zc/business/domain/DcEvent.java
  8. 331
      zc-business/src/main/java/com/zc/business/domain/DcMeteorologicalDetectorData.java
  9. 5
      zc-business/src/main/java/com/zc/business/mapper/DcEmployeesMapper.java
  10. 61
      zc-business/src/main/java/com/zc/business/mapper/DcMeteorologicalDetectorDataMapper.java
  11. 26
      zc-business/src/main/java/com/zc/business/mapper/DcWeatherMonitoringMapper.java
  12. 31
      zc-business/src/main/java/com/zc/business/message/device/listener/DevicePropertyReportListener.java
  13. 3
      zc-business/src/main/java/com/zc/business/service/IDcDeviceService.java
  14. 2
      zc-business/src/main/java/com/zc/business/service/IDcEmployeesService.java
  15. 61
      zc-business/src/main/java/com/zc/business/service/IDcMeteorologicalDetectorDataService.java
  16. 24
      zc-business/src/main/java/com/zc/business/service/IDcWeatherMonitoringService.java
  17. 51
      zc-business/src/main/java/com/zc/business/service/impl/DcDeviceServiceImpl.java
  18. 15
      zc-business/src/main/java/com/zc/business/service/impl/DcEmployeesServiceImpl.java
  19. 93
      zc-business/src/main/java/com/zc/business/service/impl/DcMeteorologicalDetectorDataServiceImpl.java
  20. 14
      zc-business/src/main/java/com/zc/business/service/impl/DcPerceivedEventsWarningServiceImpl.java
  21. 4
      zc-business/src/main/java/com/zc/business/service/impl/DcWarningServiceImpl.java
  22. 88
      zc-business/src/main/java/com/zc/business/service/impl/DcWeatherMonitoringServiceImpl.java
  23. 10
      zc-business/src/main/resources/mapper/business/DcEmployeesMapper.xml
  24. 159
      zc-business/src/main/resources/mapper/business/DcMeteorologicalDetectorDataMapper.xml
  25. 2
      zc-business/src/main/resources/mapper/business/DcPerceivedEventsWarningMapper.xml
  26. 4
      zc-business/src/main/resources/mapper/business/DcWarningMapper.xml
  27. 22
      zc-business/src/main/resources/mapper/business/DcWeatherMinitoringMapper.xml

4
ruoyi-admin/src/main/resources/application.yml

@ -180,3 +180,7 @@ iot:
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# 允许访问的ip地址
allowed:
ips: 10.0.81.202,10.168.73.54,10.168.71.194

47
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java

@ -1,6 +1,7 @@
package com.ruoyi.framework.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.http.HttpMethod;
import org.springframework.security.authentication.AuthenticationManager;
@ -13,18 +14,20 @@ import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.security.web.authentication.logout.LogoutFilter;
import org.springframework.security.web.util.matcher.RequestMatcher;
import org.springframework.web.filter.CorsFilter;
import com.ruoyi.framework.security.filter.JwtAuthenticationTokenFilter;
import com.ruoyi.framework.security.handle.AuthenticationEntryPointImpl;
import com.ruoyi.framework.security.handle.LogoutSuccessHandlerImpl;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
/**
* spring security配置
*
*/
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter
{
public class SecurityConfig extends WebSecurityConfigurerAdapter {
/**
* 自定义用户认证逻辑
*/
@ -55,6 +58,25 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
@Autowired
private CorsFilter corsFilter;
/**
* 允许访问的ip地址
*/
@Value("${allowed.ips}")
private String allowedIPs;
// 定义一个RequestMatcher
RequestMatcher requestMatcher = new RequestMatcher() {
@Override
public boolean matches(HttpServletRequest request) {
// 获取请求的IP
String requestIP = request.getRemoteAddr();
// 将配置文件中的IP字符串分割为数组
String[] ips = allowedIPs.split(",");
// 检查请求的IP是否在允许的IP数组中
return Arrays.asList(ips).contains(requestIP);
}
};
/**
* 解决 无法直接注入 AuthenticationManager
*
@ -63,8 +85,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
*/
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception
{
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
@ -84,8 +105,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
* authenticated | 用户登录后可访问
*/
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception
{
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity
// CSRF禁用,因为不使用session
.csrf().disable()
@ -117,11 +137,14 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
// 添加统一支付 回调接口
.antMatchers("/payment/wxPay/notify").anonymous()
// 滑块验证码
.antMatchers( "/captcha/get", "/captcha/check", "/captchaConfig").anonymous()
.antMatchers("/captcha/get", "/captcha/check", "/captchaConfig").anonymous()
// license
.antMatchers("/license/identityCode", "/license/authentication").anonymous()
// 第三方、小程序、APP
.antMatchers("/api/**").anonymous()
//.antMatchers("/api/**").anonymous()
// 对于满足requestMatcher的请求,允许所有用户访问。
.requestMatchers(requestMatcher).permitAll()
// 除上面外的所有请求全部需要鉴权认证
.anyRequest().authenticated()
@ -139,8 +162,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
* 强散列哈希加密实现
*/
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder()
{
public BCryptPasswordEncoder bCryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}
@ -148,8 +170,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
* 身份认证接口
*/
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception
{
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder());
}
}

63
zc-business/src/main/java/com/zc/business/controller/CodeScanningAlarmController.java

@ -0,0 +1,63 @@
package com.zc.business.controller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.zc.business.domain.DcWarning;
import com.zc.business.service.IDcWarningService;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.Objects;
/**
* License
*
* @author Athena-xiepufeng
*/
@Api(tags = "扫码报警")
@RestController
@RequestMapping("/codeScanningAlarm")
public class CodeScanningAlarmController extends BaseController {
@Resource
private IDcWarningService dcWarningService;
/**
* 扫码报警事件回调函数
*
* @param returnParameters 事件回参
* @return 结果
*/
@PostMapping(value = "/event")
public AjaxResult codeScanningAlarmControllerEvent(@RequestBody Map<String, Object> returnParameters) {
DcWarning dcWarning = new DcWarning();
//设置事件Id UUID无下划线格式32
String uuid = IdUtils.fastSimpleUUID();
dcWarning.setId(uuid);
dcWarning.setStakeMark(String.valueOf(returnParameters.get("stakeNum")));
String roadCode = String.valueOf(returnParameters.get("roadCode"));
dcWarning.setDirection(Objects.equals(roadCode, "1") ? "3" : "1");
String createTime = String.valueOf(returnParameters.get("createTime"));
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mmXXX");
try {
dcWarning.setWarningTime(format.parse(createTime));
} catch (ParseException e) {
dcWarning.setWarningTime(new Date());
}
dcWarning.setCreateTime(new Date());
int warningType = Integer.parseInt(String.valueOf(returnParameters.get("accidentType"))) >= 4 ? 10 : 11;
dcWarning.setWarningType(warningType);
String warningTitle = "济荷高速:" + (Objects.equals(roadCode, "1") ? "济南方向" : "菏泽方向") + "发生" + (warningType == 10 ? "交通事故事件" : "车辆故障事件");
dcWarning.setWarningTitle(warningTitle);
dcWarning.setOtherConfig(returnParameters.toString());
dcWarning.setWarningSource(5);
dcWarning.setWarningState(1);
return AjaxResult.success(dcWarningService.insertDcWarning(dcWarning));
}
}

14
zc-business/src/main/java/com/zc/business/controller/DcDeviceController.java

@ -26,6 +26,7 @@ import javax.validation.Valid;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 设备Controller
@ -83,6 +84,19 @@ public class DcDeviceController extends BaseController {
return AjaxResult.success(dcDeviceService.listDevice(dcDevice));
}
/**
* 无分页根据设备桩号查询设备列表
*
* @param parameter 请求参数
* @return 查询结果
*/
@ApiOperation("无分页根据设备桩号查询设备列表")
@PreAuthorize("@ss.hasPermi('iot:device:query')")
@PostMapping("pileNumberQuery")
public AjaxResult devicePileNumberQueryDevice(@RequestBody Map<String,List> parameter) {
return AjaxResult.success(dcDeviceService.devicePileNumberQueryDevice(parameter));
}
/**
* 根据id查询设备信息
*

5
zc-business/src/main/java/com/zc/business/controller/DcEmployeesController.java

@ -137,4 +137,9 @@ public class DcEmployeesController extends BaseController
return AjaxResult.success(dcEmployeesService.selectEmployeesPostAll());
}
//定时任务,获取值班信息定义人员归属岗位
@PostMapping("/personnelPositions")
public AjaxResult personnelPositions(){
return toAjax(dcEmployeesService.personnelPositions());
}
}

41
zc-business/src/main/java/com/zc/business/controller/DcWeatherMonitoringController.java

@ -0,0 +1,41 @@
package com.zc.business.controller;
import com.ruoyi.common.core.domain.AjaxResult;
import com.zc.business.service.IDcWeatherMonitoringService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description 交通气象检测
*
* @author liuwenge
* @date 2024/2/1 9:41
*/
@Api(tags = "交通气象检测")
@RestController
@RequestMapping("/business/weatherMonitoring")
public class DcWeatherMonitoringController {
@Autowired
private IDcWeatherMonitoringService weatherMonitoringService;
/**
* @Description 路网交通状况
*
* @author liuwenge
* @date 2024/2/1 10:10
* @param
* @return com.ruoyi.common.core.domain.AjaxResult
*/
@ApiOperation("路网交通状况")
@GetMapping("/getTrafficConditions")
public AjaxResult getTrafficConditions(){
return weatherMonitoringService.getTrafficConditions();
}
}

4
zc-business/src/main/java/com/zc/business/domain/DcEvent.java

@ -214,8 +214,8 @@ public class DcEvent extends BaseEntity {
@ApiModelProperty("是否是感知事件 0 表示 false,1 表示 true")
private Integer isPerceived;
@Excel(name = "影响车道")
@ApiModelProperty("影响车道")
private Long lang;
@ApiModelProperty("影响车道 车道占用:0-应急1-行1,2-行2,3-行3,4-行4")
private String lang;
@ApiModelProperty("高速名")
@TableField(exist = false)
private String roadName;

331
zc-business/src/main/java/com/zc/business/domain/DcMeteorologicalDetectorData.java

@ -0,0 +1,331 @@
package com.zc.business.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 气象检测器数据对象 dc_meteorological_detector_data
*
* @author ruoyi
* @date 2024-02-01
*/
public class DcMeteorologicalDetectorData extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 物联设备id */
@Excel(name = "物联设备id")
private String iotDeviceId;
/** 降雨量毫米 */
@Excel(name = "降雨量毫米")
private String rainfall;
/** 能见度类型 */
@Excel(name = "能见度类型")
private String visibilityType;
/** 能见度 */
@Excel(name = "能见度")
private String visibility;
/** 路面状况 */
@Excel(name = "路面状况")
private String roadSurfaceStatus;
/** 气压 */
@Excel(name = "气压")
private String atmosphericPressure;
/** 气温 */
@Excel(name = "气温")
private String temperature;
/** 湿度 */
@Excel(name = "湿度")
private String humidity;
/** 风向 */
@Excel(name = "风向")
private String windDirection;
/** 风速 */
@Excel(name = "风速")
private String windSpeed;
/** 冰点温度 */
@Excel(name = "冰点温度")
private String freezingPointTemperature;
/** 盐度值 */
@Excel(name = "盐度值")
private String salinityValue;
/** 路面温度 */
@Excel(name = "路面温度")
private String roadSurfaceTemperature;
/** 水膜厚度(GS1) */
@Excel(name = "水膜厚度(GS1)")
private String waterFilmThickness;
/** 降水类型 */
@Excel(name = "降水类型")
private String precipitationType;
/** 湿滑系数 */
@Excel(name = "湿滑系数")
private String wetSlipperyCoefficient;
/** 传感器温度 */
@Excel(name = "传感器温度")
private String sensorTemperature;
/** 远程路面温度 */
@Excel(name = "远程路面温度")
private String remoteRoadSurfaceTemperature;
/** 远程路面状态 */
@Excel(name = "远程路面状态")
private String remoteRoadSurfaceStatus;
/** 路基温度 */
@Excel(name = "路基温度")
private String subSurfaceTemperature;
/** 水膜厚度(GS2) */
@Excel(name = "水膜厚度(GS2)")
private String waterFilmIceSnowValue;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setIotDeviceId(String iotDeviceId)
{
this.iotDeviceId = iotDeviceId;
}
public String getIotDeviceId()
{
return iotDeviceId;
}
public void setRainfall(String rainfall)
{
this.rainfall = rainfall;
}
public String getRainfall()
{
return rainfall;
}
public void setVisibilityType(String visibilityType)
{
this.visibilityType = visibilityType;
}
public String getVisibilityType()
{
return visibilityType;
}
public void setVisibility(String visibility)
{
this.visibility = visibility;
}
public String getVisibility()
{
return visibility;
}
public void setRoadSurfaceStatus(String roadSurfaceStatus)
{
this.roadSurfaceStatus = roadSurfaceStatus;
}
public String getRoadSurfaceStatus()
{
return roadSurfaceStatus;
}
public void setAtmosphericPressure(String atmosphericPressure)
{
this.atmosphericPressure = atmosphericPressure;
}
public String getAtmosphericPressure()
{
return atmosphericPressure;
}
public void setTemperature(String temperature)
{
this.temperature = temperature;
}
public String getTemperature()
{
return temperature;
}
public void setHumidity(String humidity)
{
this.humidity = humidity;
}
public String getHumidity()
{
return humidity;
}
public void setWindDirection(String windDirection)
{
this.windDirection = windDirection;
}
public String getWindDirection()
{
return windDirection;
}
public void setWindSpeed(String windSpeed)
{
this.windSpeed = windSpeed;
}
public String getWindSpeed()
{
return windSpeed;
}
public void setFreezingPointTemperature(String freezingPointTemperature)
{
this.freezingPointTemperature = freezingPointTemperature;
}
public String getFreezingPointTemperature()
{
return freezingPointTemperature;
}
public void setSalinityValue(String salinityValue)
{
this.salinityValue = salinityValue;
}
public String getSalinityValue()
{
return salinityValue;
}
public void setRoadSurfaceTemperature(String roadSurfaceTemperature)
{
this.roadSurfaceTemperature = roadSurfaceTemperature;
}
public String getRoadSurfaceTemperature()
{
return roadSurfaceTemperature;
}
public void setWaterFilmThickness(String waterFilmThickness)
{
this.waterFilmThickness = waterFilmThickness;
}
public String getWaterFilmThickness()
{
return waterFilmThickness;
}
public void setPrecipitationType(String precipitationType)
{
this.precipitationType = precipitationType;
}
public String getPrecipitationType()
{
return precipitationType;
}
public void setWetSlipperyCoefficient(String wetSlipperyCoefficient)
{
this.wetSlipperyCoefficient = wetSlipperyCoefficient;
}
public String getWetSlipperyCoefficient()
{
return wetSlipperyCoefficient;
}
public void setSensorTemperature(String sensorTemperature)
{
this.sensorTemperature = sensorTemperature;
}
public String getSensorTemperature()
{
return sensorTemperature;
}
public void setRemoteRoadSurfaceTemperature(String remoteRoadSurfaceTemperature)
{
this.remoteRoadSurfaceTemperature = remoteRoadSurfaceTemperature;
}
public String getRemoteRoadSurfaceTemperature()
{
return remoteRoadSurfaceTemperature;
}
public void setRemoteRoadSurfaceStatus(String remoteRoadSurfaceStatus)
{
this.remoteRoadSurfaceStatus = remoteRoadSurfaceStatus;
}
public String getRemoteRoadSurfaceStatus()
{
return remoteRoadSurfaceStatus;
}
public void setSubSurfaceTemperature(String subSurfaceTemperature)
{
this.subSurfaceTemperature = subSurfaceTemperature;
}
public String getSubSurfaceTemperature()
{
return subSurfaceTemperature;
}
public void setWaterFilmIceSnowValue(String waterFilmIceSnowValue)
{
this.waterFilmIceSnowValue = waterFilmIceSnowValue;
}
public String getWaterFilmIceSnowValue()
{
return waterFilmIceSnowValue;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("iotDeviceId", getIotDeviceId())
.append("rainfall", getRainfall())
.append("visibilityType", getVisibilityType())
.append("visibility", getVisibility())
.append("roadSurfaceStatus", getRoadSurfaceStatus())
.append("atmosphericPressure", getAtmosphericPressure())
.append("temperature", getTemperature())
.append("humidity", getHumidity())
.append("windDirection", getWindDirection())
.append("windSpeed", getWindSpeed())
.append("freezingPointTemperature", getFreezingPointTemperature())
.append("salinityValue", getSalinityValue())
.append("roadSurfaceTemperature", getRoadSurfaceTemperature())
.append("waterFilmThickness", getWaterFilmThickness())
.append("precipitationType", getPrecipitationType())
.append("wetSlipperyCoefficient", getWetSlipperyCoefficient())
.append("sensorTemperature", getSensorTemperature())
.append("remoteRoadSurfaceTemperature", getRemoteRoadSurfaceTemperature())
.append("remoteRoadSurfaceStatus", getRemoteRoadSurfaceStatus())
.append("subSurfaceTemperature", getSubSurfaceTemperature())
.append("waterFilmIceSnowValue", getWaterFilmIceSnowValue())
.toString();
}
}

5
zc-business/src/main/java/com/zc/business/mapper/DcEmployeesMapper.java

@ -5,6 +5,7 @@ import java.util.List;
import java.util.Map;
import com.zc.business.domain.DcEmployees;
import org.apache.ibatis.annotations.Param;
/**
* 值班人员信息Mapper接口
@ -71,4 +72,8 @@ public interface DcEmployeesMapper
public List<HashMap<String,Object>> selectEmployeesPost();
//获取全部用户信息,以及所在岗位信息
public List<HashMap<String,Object>> selectEmployeesPostAll();
//查询当天的岗位信息
public List<HashMap<String,Object>> selectJobInformation(@Param("date")String date);
//循环改变人员岗位
public Integer updateJobInformation(@Param("employeesId")Long employeesId,@Param("station")Long station);
}

61
zc-business/src/main/java/com/zc/business/mapper/DcMeteorologicalDetectorDataMapper.java

@ -0,0 +1,61 @@
package com.zc.business.mapper;
import java.util.List;
import com.zc.business.domain.DcMeteorologicalDetectorData;
/**
* 气象检测器数据Mapper接口
*
* @author ruoyi
* @date 2024-02-01
*/
public interface DcMeteorologicalDetectorDataMapper
{
/**
* 查询气象检测器数据
*
* @param id 气象检测器数据主键
* @return 气象检测器数据
*/
public DcMeteorologicalDetectorData selectDcMeteorologicalDetectorDataById(Long id);
/**
* 查询气象检测器数据列表
*
* @param dcMeteorologicalDetectorData 气象检测器数据
* @return 气象检测器数据集合
*/
List<DcMeteorologicalDetectorData> selectDcMeteorologicalDetectorDataList(DcMeteorologicalDetectorData dcMeteorologicalDetectorData);
/**
* 新增气象检测器数据
*
* @param dcMeteorologicalDetectorData 气象检测器数据
* @return 结果
*/
int insertDcMeteorologicalDetectorData(DcMeteorologicalDetectorData dcMeteorologicalDetectorData);
/**
* 修改气象检测器数据
*
* @param dcMeteorologicalDetectorData 气象检测器数据
* @return 结果
*/
int updateDcMeteorologicalDetectorData(DcMeteorologicalDetectorData dcMeteorologicalDetectorData);
/**
* 删除气象检测器数据
*
* @param id 气象检测器数据主键
* @return 结果
*/
int deleteDcMeteorologicalDetectorDataById(Long id);
/**
* 批量删除气象检测器数据
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
int deleteDcMeteorologicalDetectorDataByIds(Long[] ids);
}

26
zc-business/src/main/java/com/zc/business/mapper/DcWeatherMonitoringMapper.java

@ -0,0 +1,26 @@
package com.zc.business.mapper;
import com.zc.business.domain.DcMeteorologicalDetectorData;
import java.util.List;
/**
* @Description 交通气象检测Mapper接口
*
* @author liuwenge
* @date 2024/2/1 9:46
*/
public interface DcWeatherMonitoringMapper {
/**
* @Description 查询当天每个设备最新的数据
*
* @author liuwenge
* @date 2024/2/4 9:33
* @param
* @return java.util.List<com.zc.business.domain.DcMeteorologicalDetectorData>
*/
List<DcMeteorologicalDetectorData> selectMeteorologicalDetectorData();
}

31
zc-business/src/main/java/com/zc/business/message/device/listener/DevicePropertyReportListener.java

@ -1,5 +1,10 @@
package com.zc.business.message.device.listener;
import com.alibaba.fastjson.JSON;
import com.google.gson.JsonObject;
import com.zc.business.domain.DcDevice;
import com.zc.business.domain.DcMeteorologicalDetectorData;
import com.zc.business.service.IDcMeteorologicalDetectorDataService;
import com.zc.common.core.redis.stream.RedisStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -7,8 +12,14 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.ObjectRecord;
import org.springframework.data.redis.connection.stream.RecordId;
import org.springframework.data.redis.stream.StreamListener;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 设备属性上报消息监听
*/
@ -19,12 +30,32 @@ public class DevicePropertyReportListener implements StreamListener<String, Obje
@Autowired
private RedisStream redisStream;
@Resource
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
@Autowired
private IDcMeteorologicalDetectorDataService meteorologicalDetectorDataService;
@Override
public void onMessage(ObjectRecord<String, String> message) {
String streamKay = message.getStream();
RecordId recordId = message.getId();
threadPoolTaskExecutor.execute(() -> {
Map data = JSON.parseObject(message.getValue(), HashMap.class);
Map<String,Object> headers = (Map<String, Object>) data.get("headers");
if (headers.get("productId") != null){
String productId = headers.get("productId").toString();
//气象检测器
if ("zc-meteorological".equals(productId)){
DcMeteorologicalDetectorData meteorologicalDetectorData = (DcMeteorologicalDetectorData) data.get("properties");
meteorologicalDetectorData.setIotDeviceId(data.get("deviceId").toString());
meteorologicalDetectorDataService.insertDcMeteorologicalDetectorData(meteorologicalDetectorData);
} else if ("zc-yzsqkdc-3131".equals(productId)){
//交调
}
}
});
// 消费完后直接删除消息
redisStream.del(streamKay, String.valueOf(recordId));
}

3
zc-business/src/main/java/com/zc/business/service/IDcDeviceService.java

@ -6,6 +6,7 @@ import com.zc.business.domain.DcDevice;
import com.zc.business.domain.DcStakeMark;
import java.util.List;
import java.util.Map;
/**
* 设备Service接口
@ -74,4 +75,6 @@ public interface IDcDeviceService extends IService<DcDevice> {
DcStakeMark exampleQueryTheAssociatedPileNumber(DcDevice dcDevice);
Long statisticalAnomalyDevice();
List<DcDevice> devicePileNumberQueryDevice(Map<String,List> parameter);
}

2
zc-business/src/main/java/com/zc/business/service/IDcEmployeesService.java

@ -69,4 +69,6 @@ public interface IDcEmployeesService
public Map<Object, List<Map<String, Object>>> selectEmployeesPost();
//获取全部用户信息,以及所在岗位信息
public List<HashMap<String,Object>> selectEmployeesPostAll();
//定时任务,获取值班信息定义人员归属岗位
public int personnelPositions();
}

61
zc-business/src/main/java/com/zc/business/service/IDcMeteorologicalDetectorDataService.java

@ -0,0 +1,61 @@
package com.zc.business.service;
import java.util.List;
import com.zc.business.domain.DcMeteorologicalDetectorData;
/**
* 气象检测器数据Service接口
*
* @author ruoyi
* @date 2024-02-01
*/
public interface IDcMeteorologicalDetectorDataService
{
/**
* 查询气象检测器数据
*
* @param id 气象检测器数据主键
* @return 气象检测器数据
*/
public DcMeteorologicalDetectorData selectDcMeteorologicalDetectorDataById(Long id);
/**
* 查询气象检测器数据列表
*
* @param dcMeteorologicalDetectorData 气象检测器数据
* @return 气象检测器数据集合
*/
List<DcMeteorologicalDetectorData> selectDcMeteorologicalDetectorDataList(DcMeteorologicalDetectorData dcMeteorologicalDetectorData);
/**
* 新增气象检测器数据
*
* @param dcMeteorologicalDetectorData 气象检测器数据
* @return 结果
*/
int insertDcMeteorologicalDetectorData(DcMeteorologicalDetectorData dcMeteorologicalDetectorData);
/**
* 修改气象检测器数据
*
* @param dcMeteorologicalDetectorData 气象检测器数据
* @return 结果
*/
int updateDcMeteorologicalDetectorData(DcMeteorologicalDetectorData dcMeteorologicalDetectorData);
/**
* 批量删除气象检测器数据
*
* @param ids 需要删除的气象检测器数据主键集合
* @return 结果
*/
int deleteDcMeteorologicalDetectorDataByIds(Long[] ids);
/**
* 删除气象检测器数据信息
*
* @param id 气象检测器数据主键
* @return 结果
*/
int deleteDcMeteorologicalDetectorDataById(Long id);
}

24
zc-business/src/main/java/com/zc/business/service/IDcWeatherMonitoringService.java

@ -0,0 +1,24 @@
package com.zc.business.service;
import com.ruoyi.common.core.domain.AjaxResult;
/**
* @Description 交通气象检测Service接口
*
* @author liuwenge
* @date 2024/2/1 9:42
*/
public interface IDcWeatherMonitoringService {
/**
* @Description 路网交通状况
*
* @author liuwenge
* @date 2024/2/1 10:36
* @param
* @return com.ruoyi.common.core.domain.AjaxResult
*/
AjaxResult getTrafficConditions();
}

51
zc-business/src/main/java/com/zc/business/service/impl/DcDeviceServiceImpl.java

@ -19,9 +19,9 @@ import org.springframework.util.StringUtils;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 设备Service业务层处理
@ -74,6 +74,7 @@ public class DcDeviceServiceImpl extends ServiceImpl<DcDeviceMapper, DcDevice> i
});
}
private static String REGEX_CHINESE = "[\u4e00-\u9fa5]";// 中文正则
public LambdaQueryWrapper<DcDevice> deviceQueryWrapper(DcDevice dcDevice) {
@ -314,8 +315,8 @@ public class DcDeviceServiceImpl extends ServiceImpl<DcDeviceMapper, DcDevice> i
public boolean batchUpdate(List<DcDevice> listDevice) {
for (DcDevice device : listDevice) {
LambdaQueryWrapper<DcDevice> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DcDevice::getIotDeviceId,device.getIotDeviceId());
update(device,queryWrapper);
queryWrapper.eq(DcDevice::getIotDeviceId, device.getIotDeviceId());
update(device, queryWrapper);
}
// 更新缓存
@ -358,5 +359,45 @@ public class DcDeviceServiceImpl extends ServiceImpl<DcDeviceMapper, DcDevice> i
lambdaQueryWrapper.eq(DcDevice::getDeviceState, 0).or().isNull(DcDevice::getDeviceState);
return (long) list(lambdaQueryWrapper).size();
}
@Override
public List<DcDevice> devicePileNumberQueryDevice(Map<String, List> parameter) {
ArrayList<DcDevice> dcDevices = new ArrayList<>();
Integer startStakeMark = Integer.parseInt(String.valueOf(parameter.get("startStakeMark").get(0)) + String.valueOf(parameter.get("startStakeMark").get(1)));
Integer endStakeMark = Integer.parseInt(String.valueOf(parameter.get("endStakeMark").get(0)) + String.valueOf(parameter.get("endStakeMark").get(1)));
LambdaQueryWrapper<DcDevice> lambdaQueryWrapper = new LambdaQueryWrapper<>();
ArrayList<Integer> integers = new ArrayList<>();
integers.add(6);
lambdaQueryWrapper.notIn(DcDevice::getDeviceType,integers);
List<DcDevice> list = list(lambdaQueryWrapper);
for (DcDevice dcDevice : list) {
String stakeMark = dcDevice.getStakeMark();
Pattern pat = Pattern.compile(REGEX_CHINESE);
Matcher mat = pat.matcher(stakeMark);
stakeMark = mat.replaceAll("");
if (stakeMark == null || stakeMark.equals("")) {
continue;
}
if (stakeMark.startsWith("-")) {
String[] split = stakeMark.replace("K", "").replace("k", "").split("-");
for (String s : split) {
String[] ks = s.split("\\+");
double integer = Double.parseDouble(ks[0] + ks[1]);
if (startStakeMark <= integer && endStakeMark >= integer) {
dcDevices.add(dcDevice);
}
}
} else {
String[] ks = stakeMark.replace("K", "").replace("k", "").split("\\+");
double integer = Double.parseDouble(ks[0] + ks[1]);
if (startStakeMark <= integer && endStakeMark >= integer) {
dcDevices.add(dcDevice);
}
}
}
return dcDevices;
}
}

15
zc-business/src/main/java/com/zc/business/service/impl/DcEmployeesServiceImpl.java

@ -120,4 +120,19 @@ public class DcEmployeesServiceImpl implements IDcEmployeesService {
return dcEmployeesMapper.selectEmployeesPostAll();
}
//定时任务,获取值班信息定义人员归属岗位
@Override
public int personnelPositions() {
String date = DateUtils.getDate();
List<HashMap<String, Object>> mapList = dcEmployeesMapper.selectJobInformation(date);
if (mapList==null){
return 1;
}
for (HashMap<String,Object>map:mapList){
Long employeesId = (Long) map.get("employeesId");
Long station = (Long) map.get("station");
dcEmployeesMapper.updateJobInformation(employeesId,station);
}
return 1;
}
}

93
zc-business/src/main/java/com/zc/business/service/impl/DcMeteorologicalDetectorDataServiceImpl.java

@ -0,0 +1,93 @@
package com.zc.business.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zc.business.mapper.DcMeteorologicalDetectorDataMapper;
import com.zc.business.domain.DcMeteorologicalDetectorData;
import com.zc.business.service.IDcMeteorologicalDetectorDataService;
/**
* 气象检测器数据Service业务层处理
*
* @author ruoyi
* @date 2024-02-01
*/
@Service
public class DcMeteorologicalDetectorDataServiceImpl implements IDcMeteorologicalDetectorDataService
{
@Autowired
private DcMeteorologicalDetectorDataMapper dcMeteorologicalDetectorDataMapper;
/**
* 查询气象检测器数据
*
* @param id 气象检测器数据主键
* @return 气象检测器数据
*/
@Override
public DcMeteorologicalDetectorData selectDcMeteorologicalDetectorDataById(Long id)
{
return dcMeteorologicalDetectorDataMapper.selectDcMeteorologicalDetectorDataById(id);
}
/**
* 查询气象检测器数据列表
*
* @param dcMeteorologicalDetectorData 气象检测器数据
* @return 气象检测器数据
*/
@Override
public List<DcMeteorologicalDetectorData> selectDcMeteorologicalDetectorDataList(DcMeteorologicalDetectorData dcMeteorologicalDetectorData)
{
return dcMeteorologicalDetectorDataMapper.selectDcMeteorologicalDetectorDataList(dcMeteorologicalDetectorData);
}
/**
* 新增气象检测器数据
*
* @param dcMeteorologicalDetectorData 气象检测器数据
* @return 结果
*/
@Override
public int insertDcMeteorologicalDetectorData(DcMeteorologicalDetectorData dcMeteorologicalDetectorData)
{
return dcMeteorologicalDetectorDataMapper.insertDcMeteorologicalDetectorData(dcMeteorologicalDetectorData);
}
/**
* 修改气象检测器数据
*
* @param dcMeteorologicalDetectorData 气象检测器数据
* @return 结果
*/
@Override
public int updateDcMeteorologicalDetectorData(DcMeteorologicalDetectorData dcMeteorologicalDetectorData)
{
return dcMeteorologicalDetectorDataMapper.updateDcMeteorologicalDetectorData(dcMeteorologicalDetectorData);
}
/**
* 批量删除气象检测器数据
*
* @param ids 需要删除的气象检测器数据主键
* @return 结果
*/
@Override
public int deleteDcMeteorologicalDetectorDataByIds(Long[] ids)
{
return dcMeteorologicalDetectorDataMapper.deleteDcMeteorologicalDetectorDataByIds(ids);
}
/**
* 删除气象检测器数据信息
*
* @param id 气象检测器数据主键
* @return 结果
*/
@Override
public int deleteDcMeteorologicalDetectorDataById(Long id)
{
return dcMeteorologicalDetectorDataMapper.deleteDcMeteorologicalDetectorDataById(id);
}
}

14
zc-business/src/main/java/com/zc/business/service/impl/DcPerceivedEventsWarningServiceImpl.java

@ -1,27 +1,17 @@
package com.zc.business.service.impl;
import cn.hutool.core.io.unit.DataUnit;
import cn.hutool.core.lang.hash.Hash;
import com.ruoyi.common.utils.DateUtils;
import com.zc.business.domain.DcEventType;
import com.zc.business.domain.DcWarning;
import com.zc.business.mapper.DcPerceivedEventsWarningMapper;
import com.zc.business.service.IDCPerceivedEventsWarningService;
import lombok.val;
import org.checkerframework.framework.qual.FromByteCode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @author 王思祥
@ -181,9 +171,9 @@ public class DcPerceivedEventsWarningServiceImpl implements IDCPerceivedEventsWa
public List<HashMap<String, Object>> selectSectionMark(DcWarning dcWarning) {
ArrayList numList = new ArrayList<>();
String type = dcWarning.getType();
HashMap<String, Object> mapNum = new HashMap<>();
List<HashMap<String, Object>> mapList = perceivedEventsWarningMapper.selectSectionMark(dcWarning);
for (HashMap<String,Object> list:mapList){
HashMap<String, Object> mapNum = new HashMap<>();
String markId = (String) list.get("stakeMark");
dcWarning.setStakeMark(markId);
String sectionNumber="";
@ -217,6 +207,8 @@ public class DcPerceivedEventsWarningServiceImpl implements IDCPerceivedEventsWa
}
return numList;
}
//预警事件,事件列表 查询状态为上报的感知事件
@Override
public List<HashMap<String, Object>> selectWarningEscalation(DcWarning dcWarning) {

4
zc-business/src/main/java/com/zc/business/service/impl/DcWarningServiceImpl.java

@ -3,6 +3,7 @@ package com.zc.business.service.impl;
import java.util.HashMap;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.zc.business.mapper.DcWarningMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -61,6 +62,9 @@ public class DcWarningServiceImpl implements IDcWarningService
public int insertDcWarning(DcWarning dcWarning)
{
dcWarning.setCreateTime(DateUtils.getNowDate());
//设置事件Id UUID无下划线格式32
String uuid = IdUtils.fastSimpleUUID();
dcWarning.setId(uuid);
return dcWarningMapper.insertDcWarning(dcWarning);
}

88
zc-business/src/main/java/com/zc/business/service/impl/DcWeatherMonitoringServiceImpl.java

@ -0,0 +1,88 @@
package com.zc.business.service.impl;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.StringUtils;
import com.zc.business.domain.DcMeteorologicalDetectorData;
import com.zc.business.mapper.DcWeatherMonitoringMapper;
import com.zc.business.service.IDcWeatherMonitoringService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Description 交通气象检测Service业务层处理
*
* @author liuwenge
* @date 2024/2/1 9:45
*/
@Service
public class DcWeatherMonitoringServiceImpl implements IDcWeatherMonitoringService {
@Autowired
private DcWeatherMonitoringMapper weatherMonitoringMapper;
/**
* @Description 路网交通状况
*
* @author liuwenge
* @date 2024/2/1 10:37
* @param
* @return com.ruoyi.common.core.domain.AjaxResult
*/
@Override
public AjaxResult getTrafficConditions(){
//正常路段里程
BigDecimal normalMileage = new BigDecimal("154.585");
//降水里程
BigDecimal rainfallMileage = BigDecimal.ZERO;
//团雾路段(处)
int heavyFogNum = 0;
//团雾里程
BigDecimal heavyFogMileage = BigDecimal.ZERO;
//异常数量
int anomalies = 0;
//设备数量
int deviceNum = 10;
//每个设备的检测范围
BigDecimal detectionRange = new BigDecimal("15.4585");
List<DcMeteorologicalDetectorData> dataList = weatherMonitoringMapper.selectMeteorologicalDetectorData();
for (DcMeteorologicalDetectorData meteorologicalDetectorData : dataList) {
//
if (StringUtils.isNotEmpty(meteorologicalDetectorData.getRainfall()) || StringUtils.isNotEmpty(meteorologicalDetectorData.getVisibilityType())){
BigDecimal rainfall = new BigDecimal(meteorologicalDetectorData.getRainfall());
if (rainfall.compareTo(BigDecimal.ZERO) > 0 || !"4".equals(meteorologicalDetectorData.getVisibilityType())){
normalMileage = normalMileage.subtract(detectionRange);
anomalies ++;
if (rainfall.compareTo(BigDecimal.ZERO) > 0){
rainfallMileage = rainfallMileage.add(detectionRange);
}
if (!"4".equals(meteorologicalDetectorData.getVisibilityType())){
heavyFogNum ++;
heavyFogMileage = heavyFogMileage.add(detectionRange);
}
}
}
}
Map<String,Object> result = new HashMap<>();
result.put("normalMileage",normalMileage);
result.put("rainfallMileage",rainfallMileage);
result.put("heavyFogNum",heavyFogNum);
result.put("heavyFogMileage",heavyFogMileage);
result.put("anomalies",anomalies);
result.put("deviceNum",deviceNum);
return AjaxResult.success(result);
}
}

10
zc-business/src/main/resources/mapper/business/DcEmployeesMapper.xml

@ -76,6 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where id = #{id}
</update>
<delete id="deleteDcEmployeesById" parameterType="Long">
delete from dc_employees where id = #{id}
</delete>
@ -108,4 +109,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
employees.contact_number contactNumber from dc_employees as employees
left join sys_post as post on employees.post_id=post.post_id
</select>
<select id="selectJobInformation" resultType="java.util.HashMap">
select ifnull(employees_id,"") employeesId,ifnull(station,"")station from dc_shifts
where date=#{date}
group by employees_id
order by create_time
</select>
<update id="updateJobInformation">
update dc_employees set organization_id=#{station} where employees_id=#{employeesId}
</update>
</mapper>

159
zc-business/src/main/resources/mapper/business/DcMeteorologicalDetectorDataMapper.xml

@ -0,0 +1,159 @@
<?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.zc.business.mapper.DcMeteorologicalDetectorDataMapper">
<resultMap type="DcMeteorologicalDetectorData" id="DcMeteorologicalDetectorDataResult">
<result property="id" column="id" />
<result property="iotDeviceId" column="iot_device_id" />
<result property="rainfall" column="rainfall" />
<result property="visibilityType" column="visibility_type" />
<result property="visibility" column="visibility" />
<result property="roadSurfaceStatus" column="road_surface_status" />
<result property="atmosphericPressure" column="atmospheric_pressure" />
<result property="temperature" column="temperature" />
<result property="humidity" column="humidity" />
<result property="windDirection" column="wind_direction" />
<result property="windSpeed" column="wind_speed" />
<result property="freezingPointTemperature" column="freezing_point_temperature" />
<result property="salinityValue" column="salinity_value" />
<result property="roadSurfaceTemperature" column="road_surface_temperature" />
<result property="waterFilmThickness" column="water_film_thickness" />
<result property="precipitationType" column="precipitation_type" />
<result property="wetSlipperyCoefficient" column="wet_slippery_coefficient" />
<result property="sensorTemperature" column="sensor_temperature" />
<result property="remoteRoadSurfaceTemperature" column="remote_road_surface_temperature" />
<result property="remoteRoadSurfaceStatus" column="remote_road_surface_status" />
<result property="subSurfaceTemperature" column="sub_surface_temperature" />
<result property="waterFilmIceSnowValue" column="water_film_ice_snow_value" />
<result property="createTime" column="create_time" />
</resultMap>
<sql id="selectDcMeteorologicalDetectorDataVo">
select id, iot_device_id, rainfall, visibility_type, visibility, road_surface_status, atmospheric_pressure, temperature, humidity, wind_direction, wind_speed, freezing_point_temperature, salinity_value, road_surface_temperature, water_film_thickness, precipitation_type, wet_slippery_coefficient, sensor_temperature, remote_road_surface_temperature, remote_road_surface_status, sub_surface_temperature, water_film_ice_snow_value,create_time from dc_meteorological_detector_data
</sql>
<select id="selectDcMeteorologicalDetectorDataList" parameterType="DcMeteorologicalDetectorData" resultMap="DcMeteorologicalDetectorDataResult">
<include refid="selectDcMeteorologicalDetectorDataVo"/>
<where>
<if test="iotDeviceId != null and iotDeviceId != ''"> and iot_device_id = #{iotDeviceId}</if>
<if test="rainfall != null and rainfall != ''"> and rainfall = #{rainfall}</if>
<if test="visibilityType != null and visibilityType != ''"> and visibility_type = #{visibilityType}</if>
<if test="visibility != null and visibility != ''"> and visibility = #{visibility}</if>
<if test="roadSurfaceStatus != null and roadSurfaceStatus != ''"> and road_surface_status = #{roadSurfaceStatus}</if>
<if test="atmosphericPressure != null and atmosphericPressure != ''"> and atmospheric_pressure = #{atmosphericPressure}</if>
<if test="temperature != null and temperature != ''"> and temperature = #{temperature}</if>
<if test="humidity != null and humidity != ''"> and humidity = #{humidity}</if>
<if test="windDirection != null and windDirection != ''"> and wind_direction = #{windDirection}</if>
<if test="windSpeed != null and windSpeed != ''"> and wind_speed = #{windSpeed}</if>
<if test="freezingPointTemperature != null and freezingPointTemperature != ''"> and freezing_point_temperature = #{freezingPointTemperature}</if>
<if test="salinityValue != null and salinityValue != ''"> and salinity_value = #{salinityValue}</if>
<if test="roadSurfaceTemperature != null and roadSurfaceTemperature != ''"> and road_surface_temperature = #{roadSurfaceTemperature}</if>
<if test="waterFilmThickness != null and waterFilmThickness != ''"> and water_film_thickness = #{waterFilmThickness}</if>
<if test="precipitationType != null and precipitationType != ''"> and precipitation_type = #{precipitationType}</if>
<if test="wetSlipperyCoefficient != null and wetSlipperyCoefficient != ''"> and wet_slippery_coefficient = #{wetSlipperyCoefficient}</if>
<if test="sensorTemperature != null and sensorTemperature != ''"> and sensor_temperature = #{sensorTemperature}</if>
<if test="remoteRoadSurfaceTemperature != null and remoteRoadSurfaceTemperature != ''"> and remote_road_surface_temperature = #{remoteRoadSurfaceTemperature}</if>
<if test="remoteRoadSurfaceStatus != null and remoteRoadSurfaceStatus != ''"> and remote_road_surface_status = #{remoteRoadSurfaceStatus}</if>
<if test="subSurfaceTemperature != null and subSurfaceTemperature != ''"> and sub_surface_temperature = #{subSurfaceTemperature}</if>
<if test="waterFilmIceSnowValue != null and waterFilmIceSnowValue != ''"> and water_film_ice_snow_value = #{waterFilmIceSnowValue}</if>
</where>
</select>
<select id="selectDcMeteorologicalDetectorDataById" parameterType="Long" resultMap="DcMeteorologicalDetectorDataResult">
<include refid="selectDcMeteorologicalDetectorDataVo"/>
where id = #{id}
</select>
<insert id="insertDcMeteorologicalDetectorData" parameterType="DcMeteorologicalDetectorData" useGeneratedKeys="true" keyProperty="id">
insert into dc_meteorological_detector_data
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="iotDeviceId != null">iot_device_id,</if>
<if test="rainfall != null">rainfall,</if>
<if test="visibilityType != null">visibility_type,</if>
<if test="visibility != null">visibility,</if>
<if test="roadSurfaceStatus != null">road_surface_status,</if>
<if test="atmosphericPressure != null">atmospheric_pressure,</if>
<if test="temperature != null">temperature,</if>
<if test="humidity != null">humidity,</if>
<if test="windDirection != null">wind_direction,</if>
<if test="windSpeed != null">wind_speed,</if>
<if test="freezingPointTemperature != null">freezing_point_temperature,</if>
<if test="salinityValue != null">salinity_value,</if>
<if test="roadSurfaceTemperature != null">road_surface_temperature,</if>
<if test="waterFilmThickness != null">water_film_thickness,</if>
<if test="precipitationType != null">precipitation_type,</if>
<if test="wetSlipperyCoefficient != null">wet_slippery_coefficient,</if>
<if test="sensorTemperature != null">sensor_temperature,</if>
<if test="remoteRoadSurfaceTemperature != null">remote_road_surface_temperature,</if>
<if test="remoteRoadSurfaceStatus != null">remote_road_surface_status,</if>
<if test="subSurfaceTemperature != null">sub_surface_temperature,</if>
<if test="waterFilmIceSnowValue != null">water_film_ice_snow_value,</if>
create_time
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="iotDeviceId != null">#{iotDeviceId},</if>
<if test="rainfall != null">#{rainfall},</if>
<if test="visibilityType != null">#{visibilityType},</if>
<if test="visibility != null">#{visibility},</if>
<if test="roadSurfaceStatus != null">#{roadSurfaceStatus},</if>
<if test="atmosphericPressure != null">#{atmosphericPressure},</if>
<if test="temperature != null">#{temperature},</if>
<if test="humidity != null">#{humidity},</if>
<if test="windDirection != null">#{windDirection},</if>
<if test="windSpeed != null">#{windSpeed},</if>
<if test="freezingPointTemperature != null">#{freezingPointTemperature},</if>
<if test="salinityValue != null">#{salinityValue},</if>
<if test="roadSurfaceTemperature != null">#{roadSurfaceTemperature},</if>
<if test="waterFilmThickness != null">#{waterFilmThickness},</if>
<if test="precipitationType != null">#{precipitationType},</if>
<if test="wetSlipperyCoefficient != null">#{wetSlipperyCoefficient},</if>
<if test="sensorTemperature != null">#{sensorTemperature},</if>
<if test="remoteRoadSurfaceTemperature != null">#{remoteRoadSurfaceTemperature},</if>
<if test="remoteRoadSurfaceStatus != null">#{remoteRoadSurfaceStatus},</if>
<if test="subSurfaceTemperature != null">#{subSurfaceTemperature},</if>
<if test="waterFilmIceSnowValue != null">#{waterFilmIceSnowValue},</if>
current_date
</trim>
</insert>
<update id="updateDcMeteorologicalDetectorData" parameterType="DcMeteorologicalDetectorData">
update dc_meteorological_detector_data
<trim prefix="SET" suffixOverrides=",">
<if test="iotDeviceId != null">iot_device_id = #{iotDeviceId},</if>
<if test="rainfall != null">rainfall = #{rainfall},</if>
<if test="visibilityType != null">visibility_type = #{visibilityType},</if>
<if test="visibility != null">visibility = #{visibility},</if>
<if test="roadSurfaceStatus != null">road_surface_status = #{roadSurfaceStatus},</if>
<if test="atmosphericPressure != null">atmospheric_pressure = #{atmosphericPressure},</if>
<if test="temperature != null">temperature = #{temperature},</if>
<if test="humidity != null">humidity = #{humidity},</if>
<if test="windDirection != null">wind_direction = #{windDirection},</if>
<if test="windSpeed != null">wind_speed = #{windSpeed},</if>
<if test="freezingPointTemperature != null">freezing_point_temperature = #{freezingPointTemperature},</if>
<if test="salinityValue != null">salinity_value = #{salinityValue},</if>
<if test="roadSurfaceTemperature != null">road_surface_temperature = #{roadSurfaceTemperature},</if>
<if test="waterFilmThickness != null">water_film_thickness = #{waterFilmThickness},</if>
<if test="precipitationType != null">precipitation_type = #{precipitationType},</if>
<if test="wetSlipperyCoefficient != null">wet_slippery_coefficient = #{wetSlipperyCoefficient},</if>
<if test="sensorTemperature != null">sensor_temperature = #{sensorTemperature},</if>
<if test="remoteRoadSurfaceTemperature != null">remote_road_surface_temperature = #{remoteRoadSurfaceTemperature},</if>
<if test="remoteRoadSurfaceStatus != null">remote_road_surface_status = #{remoteRoadSurfaceStatus},</if>
<if test="subSurfaceTemperature != null">sub_surface_temperature = #{subSurfaceTemperature},</if>
<if test="waterFilmIceSnowValue != null">water_film_ice_snow_value = #{waterFilmIceSnowValue},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteDcMeteorologicalDetectorDataById" parameterType="Long">
delete from dc_meteorological_detector_data where id = #{id}
</delete>
<delete id="deleteDcMeteorologicalDetectorDataByIds" parameterType="String">
delete from dc_meteorological_detector_data where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>

2
zc-business/src/main/resources/mapper/business/DcPerceivedEventsWarningMapper.xml

@ -15,7 +15,7 @@
</select>
<select id="selectWarningById" resultType="com.zc.business.domain.DcWarning">
SELECT DISTINCT warning.`id`,warning.`stake_mark`, warning.`direction`,
mark.longitude,mark.latitude,warning.lane,
mark.longitude,mark.latitude,warning.lane,warning.vehicle_type vehicleType,
warning.`dept_id`,warning.`warning_state`,warning.`warning_time`,
warning.`user_id`, warning.`warning_source`,warning.`warning_level`,
warning.`remark`, warning.`create_time`,warning.`update_time`,

4
zc-business/src/main/resources/mapper/business/DcWarningMapper.xml

@ -27,7 +27,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectDcWarningVo">
select id, stake_mark stakeMark, direction, dept_id deptId,
warning_state warningState,vehicle_type,
warning_state warningState,vehicle_type vehicleType,
DATE_FORMAT(warning_time,'%Y-%m-%d %H:%m:%s')warningTime,
user_id userId, warning_source warningSource, warning_level warningLevel,
remark, DATE_FORMAT(create_time,'%Y-%m-%d %H:%m:%s')createTime,
@ -61,7 +61,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="export" resultType="com.zc.business.domain.DcWarning">
SELECT warning.`id`,warning.`stake_mark`, warning.`direction`,
mark.longitude,mark.latitude,warning.lane,vehicle_type,
mark.longitude,mark.latitude,warning.lane,warning.vehicle_type,
warning.`dept_id`,warning.`warning_state`,warning.`warning_time`,
warning.`user_id`, warning.`warning_source`,warning.`warning_level`,
warning.`remark`, warning.`create_time`,warning.`update_time`,

22
zc-business/src/main/resources/mapper/business/DcWeatherMinitoringMapper.xml

@ -0,0 +1,22 @@
<?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.zc.business.mapper.DcWeatherMonitoringMapper">
<select id="selectMeteorologicalDetectorData"
resultType="com.zc.business.domain.DcMeteorologicalDetectorData">
SELECT *
FROM
dc_meteorological_detector_data
WHERE
id IN (
SELECT
MAX( id )
FROM dc_meteorological_detector_data
where DATE_FORMAT(create_time,'%Y-%m-%d') = DATE_FORMAT(now(),'%Y-%m-%d')
GROUP BY iot_device_id
)
</select>
</mapper>
Loading…
Cancel
Save