Merge remote-tracking branch 'origin/breach-zhy'

# Conflicts:
#	ruoyi-modules/hw-basic/src/main/java/com/ruoyi/basic/controller/LayoutConfigController.java
#	ruoyi-modules/hw-basic/src/main/java/com/ruoyi/basic/controller/LayoutDescController.java
#	ruoyi-modules/hw-basic/src/main/java/com/ruoyi/basic/domain/LayoutConfig.java
#	ruoyi-modules/hw-basic/src/main/java/com/ruoyi/basic/domain/LayoutDesc.java
#	ruoyi-modules/hw-basic/src/main/java/com/ruoyi/basic/mapper/LayoutConfigDao.java
#	ruoyi-modules/hw-basic/src/main/java/com/ruoyi/basic/mapper/LayoutDescDao.java
#	ruoyi-modules/hw-basic/src/main/resources/mapper/basic/LayoutConfigDao.xml
#	ruoyi-modules/hw-basic/src/main/resources/mapper/basic/LayoutDescDao.xml
#	ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwDevice.java
#	ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwElectronicFence.java
#	ruoyi-modules/hw-business/src/main/resources/mapper/business/HwDeviceMapper.xml
#	ruoyi-modules/hw-business/src/main/resources/mapper/business/HwElectronicFenceMapper.xml
#	ruoyi-ui/vue.config.js
master
xs 1 year ago
commit f4eb21a6c4

@ -49,7 +49,7 @@ public class SysRole extends BaseEntity
@Excel(name = "角色状态", readConverterExp = "0=正常,1=停用")
private String status;
/** 删除标志0代表存在 2代表删除 */
/** 删除标志0代表存在 2代表删除 */
private String delFlag;
/** 用户是否存在此角色标识 默认不存在 */

@ -14,10 +14,12 @@ spring:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
server-addr: 175.27.215.92:8848
namespace: jrm_iot_dev
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
server-addr: 175.27.215.92:8848
namespace: jrm_iot_dev
# 配置文件格式
file-extension: yml
# 共享配置

@ -0,0 +1,31 @@
package com.ruoyi.common.core.web.page;
import java.util.Map;
/**
* @ClassName : TableDataNameVo
* @Description :
* @Author :
* @Date: 2024-06-17 10:41
*/
public class TableDataNameVo {
private TableDataInfo tableDataInfo;
private Map<String, Object> mapName;
public TableDataInfo getTableDataInfo() {
return tableDataInfo;
}
public void setTableDataInfo(TableDataInfo tableDataInfo) {
this.tableDataInfo = tableDataInfo;
}
public Map<String, Object> getMapName() {
return mapName;
}
public void setMapName(Map<String, Object> mapName) {
this.mapName = mapName;
}
}

@ -148,7 +148,7 @@ public class DataScopeAspect {
StringBuilder sql = new StringBuilder();
Long tenantId = user.getTenantId();
if (!tenantId.equals(HwDictConstants.ADMINISTRATOR_TENANT_ID)) {
sql.append(StringUtils.format(" OR {}.tenant_id = {} ", tenantAlias, tenantId));
sql.append(StringUtils.format(" AND tenant_id = {} ", tenantId));
}
return sql;

@ -14,10 +14,12 @@ spring:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
server-addr: 175.27.215.92:8848
namespace: jrm_iot_dev
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
server-addr: 175.27.215.92:8848
namespace: jrm_iot_dev
# 配置文件格式
file-extension: yml
# 共享配置
@ -33,7 +35,8 @@ spring:
datasource:
ds1:
nacos:
server-addr: 127.0.0.1:8848
server-addr: 175.27.215.92:8848
namespace: jrm_iot_dev
dataId: sentinel-ruoyi-gateway
groupId: DEFAULT_GROUP
data-type: json

@ -117,4 +117,3 @@ public class LayoutConfig implements Serializable {
// }
}

@ -105,4 +105,3 @@ public class LayoutDesc implements Serializable {
// }
}

@ -85,4 +85,3 @@ public interface LayoutConfigDao {
List<LayoutDesc> selectAllScenes();
}

@ -19,4 +19,3 @@ public interface LayoutDescDao {
List<LayoutDesc> selectAllScenes();
}

@ -14,10 +14,12 @@ spring:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
server-addr: 175.27.215.92:8848
namespace: jrm_iot_dev
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
server-addr: 175.27.215.92:8848
namespace: jrm_iot_dev
# 配置文件格式
file-extension: yml
# 共享配置

@ -16,6 +16,24 @@
</description>
<dependencies>
<!-- 文件上传 -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.7</version>
</dependency>
<!-- JSON -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.41</version>
</dependency>
<!-- POI -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.16</version>
</dependency>
<!-- SpringCloud Alibaba Nacos -->
<dependency>
@ -111,6 +129,12 @@
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.26</version>
</dependency>
</dependencies>
<build>

@ -0,0 +1,112 @@
package com.ruoyi.business.controller;
import java.util.ArrayList;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.business.domain.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.business.service.IHwAlarmInfoService;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.core.web.page.TableDataInfo;
/**
* Controller
*
* @author zangch
* @date 2024-09-05
*/
@RestController
@RequestMapping("/alarmInformation")
public class HwAlarmInfomationController extends BaseController
{
@Autowired
private IHwAlarmInfoService hwAlarmInfoService;
/**
*
*/
@RequiresPermissions("business:alarmInformation:list")
@GetMapping("/list")
public TableDataInfo list(HwAlarmInfo hwAlarmInfo)
{
startPage();
List<HwAlarmInfo> list = hwAlarmInfoService.selectHwAlarmInfoList(hwAlarmInfo);
return getDataTable(list);
}
/**
*
*/
@RequiresPermissions("business:alarmInformation:export")
@Log(title = "报警信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, HwAlarmInfo hwAlarmInfo)
{
List<HwAlarmInfo> list = hwAlarmInfoService.selectHwAlarmInfoList(hwAlarmInfo);
ExcelUtil<HwAlarmInfo> util = new ExcelUtil<HwAlarmInfo>(HwAlarmInfo.class);
util.exportExcel(response, list, "报警信息数据");
}
/**
*
*/
@RequiresPermissions("business:alarmInformation:query")
@GetMapping(value = "/{alarmInfoId}")
public AjaxResult getInfo(@PathVariable("alarmInfoId") Long alarmInfoId)
{
return success(hwAlarmInfoService.selectHwAlarmInfoByAlarmInfoId(alarmInfoId));
}
/**
*
*/
@RequiresPermissions("business:alarmInformation:add")
@Log(title = "报警信息", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody HwAlarmInfo hwAlarmInfo)
{
return toAjax(hwAlarmInfoService.insertHwAlarmInfo(hwAlarmInfo));
}
/**
*
*/
@RequiresPermissions("business:alarmInformation:edit")
@Log(title = "报警信息", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody HwAlarmInfo hwAlarmInfo)
{
return toAjax(hwAlarmInfoService.updateHwAlarmInformation(hwAlarmInfo));
}
/**
*
*/
@RequiresPermissions("business:alarmInformation:remove")
@Log(title = "报警信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{alarmInfoIds}")
public AjaxResult remove(@PathVariable Long[] alarmInfoIds)
{
return toAjax(hwAlarmInfoService.deleteHwAlarmInfoByAlarmInfoIds(alarmInfoIds));
}
}

@ -138,14 +138,17 @@ public class HwAlarmRuleController extends BaseController {
alarmLevel.setSceneId(sceneId);
List<HwAlarmLevel> alarmLevels = hwAlarmLevelService.selectHwAlarmLevelList(alarmLevel);
HwDevice device = new HwDevice();
device.setSceneId(sceneId);
List<HwDevice> devices = hwDeviceService.selectHwDeviceListWithDeviceMode(device);
// HwDevice device = new HwDevice();
// device.setSceneId(sceneId);
// List<HwDevice> devices = hwDeviceService.selectHwDeviceListWithDeviceMode(device);
List<HwDeviceMode> models = hwDeviceModeService.selectModel(sceneId);
JSONObject result = new JSONObject();
result.put("alarmTypes", alarmTypes);
result.put("alarmLevels",alarmLevels);
result.put("devices",devices);
// result.put("devices",devices);
result.put("models",models);
return success(result);
}

@ -53,6 +53,7 @@ public class HwDeviceController extends BaseController {
@Autowired
private IHwSceneService hwSceneService;
/**
*
*/
@ -246,5 +247,15 @@ public class HwDeviceController extends BaseController {
public void computeOnlineDevicecCount(@PathVariable("days") int days) {
hwDeviceService.computeOnlineDevicecCount(days);
}
@GetMapping("/getDeviceByModel")
public AjaxResult getDeviceByModel(Long modelId){
return AjaxResult.success(hwDeviceModeService.getDeviceByModel(modelId));
}
@GetMapping("/getDeviceLocation")
private AjaxResult getDeviceLocation(Long deviceId){
Map deviceLocation = hwDeviceService.getDeviceLocation(deviceId);
return AjaxResult.success(deviceLocation);
}
}

@ -147,4 +147,6 @@ public class HwDeviceModeController extends BaseController {
public void rebuildTdSuperTables() {
hwDeviceModeService.rebuildTdSuperTables();
}
}

@ -1,23 +1,43 @@
package com.ruoyi.business.controller;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.Feature;
import com.ruoyi.business.domain.*;
import com.ruoyi.business.domain.VO.*;
import com.ruoyi.business.service.*;
import com.ruoyi.business.utils.ExcelUtils;
import com.ruoyi.business.utils.UnitExcelUtils;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.constant.HwDictConstants;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.core.web.page.TableDataNameVo;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.tdengine.api.domain.TdReturnDataVo;
import io.micrometer.core.instrument.util.StringEscapeUtils;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.Field;
import java.sql.*;
import java.util.*;
import java.util.Date;
import java.util.stream.Collectors;
@RestController
@RequestMapping("/monitorPlatform")
@ -35,6 +55,7 @@ public class HwMonitorPlatformController extends BaseController {
private IHwElectronicFenceService hwElectronicFenceService;
@Autowired
private IHwAlarmInfoService hwAlarmInfoService;
@Autowired HwMonitorUnitAttributeService hwMonitorUnitAttributeService;
@Autowired
private IHwMonitorPlatformService hwMonitorPlatformService;
@ -299,4 +320,242 @@ public class HwMonitorPlatformController extends BaseController {
return success(hwScenes);
}
/**
*
* */
@GetMapping("/selectDeviceLatitudeAndLongitude/{sceneId}")
public AjaxResult selectDeviceLatitudeAndLongitude(@PathVariable("sceneId") Long sceneId){
List<BeaconDevice> beaconDevices = hwDeviceService.selectDeviceLatitudeAndLongitude(sceneId);
return success(beaconDevices);
}
/**
* id
* */
@GetMapping("/selectBeaconDevicesHistory")
public TableDataInfo selectBeaconDevicesHistory(@RequestParam(required = false) Map map){
// List<BeaconDevice> beaconDevices = hwDeviceService.selectBeaconDevicesHistory(map);
List<Map<String, Object>> lists = hwDeviceService.selectBeaconDevicesHistory(map);
if(lists != null){
long total = Long.valueOf(lists.get(lists.size() - 1).get("total").toString());
lists.remove(lists.size() - 1);
TableDataInfo dataTable = getDataTable(lists);
dataTable.setTotal(total);
return dataTable;
}else {
return null;
}
}
/**
* id
* */
@GetMapping("/selectMonitorUnit/{deviceId}")
public AjaxResult selectMonitorUnit(@PathVariable("deviceId") Long deviceId){
HwMonitorUnit hwMonitorUnit = hwDeviceService.selectMonitorUnit(deviceId);
return success(hwMonitorUnit);
}
/**
* id
* */
@GetMapping("/selectMonitorElectronic/{deviceId}")
public AjaxResult selectMonitorElectronic(@PathVariable("deviceId") Long deviceId){
return success(hwDeviceService.selectMonitorElectronic(deviceId));
}
/**
*
* */
@GetMapping("/selectHistoryAndTrendAnalysis")
public TableDataNameVo selectHistoryDevice(@RequestParam(required = false) Map map){
List<Map<String, Object>> list = hwDeviceService.selectHistoryDevice(map);
TableDataInfo dataTable = getDataTable(list);
TableDataNameVo tableDataNameVo = new TableDataNameVo();
if (list.size()>1){
long total = Long.valueOf(list.get(list.size() - 1).get("total").toString());
Map<String, Object> mapName = new HashMap<>();
list.remove(list.size() - 1);
if (list.size()>0){
mapName = list.get(list.size() - 1);
list.remove(list.size() - 1);
}
Map<String, Object> mapTotal = new HashMap<String, Object>();
dataTable = getDataTable(list);
dataTable.setTotal(total);
tableDataNameVo.setTableDataInfo(dataTable);
tableDataNameVo.setMapName(mapName);
return tableDataNameVo;
}
else {
map.remove("startTime");
map.remove("endTime");
List<Map<String, Object>> listNull = hwDeviceService.selectHistoryDevice(map);
Map<String, Object> map1 = new HashMap<String, Object>();
if (listNull.size()>1){
map1 = listNull.get(listNull.size() - 2);
}
dataTable.setTotal(0);
list.get(0).remove("total");
tableDataNameVo.setMapName(map1);
tableDataNameVo.setTableDataInfo(dataTable);
return tableDataNameVo;
}
}
/**
*
* */
@GetMapping("/selectComparison")
public AjaxResult selectComparison(){
List<TreeDeviceVo> list = hwDeviceService.selectComparison();
return success(list);
}
/**
*
* */
@PostMapping("/export")
public void export(HttpServletResponse response,@RequestParam Map map)
{
List<Map<String, Object>> list = hwDeviceService.getExportDevice(map);
List<DeviceExport> exportList = new ArrayList<>();
for (int i = 0; i < list.size(); i++){
DeviceExport deviceExport = new DeviceExport();
if (list.get(i).containsKey("deviceId")){
deviceExport.setDeviceId(Long.valueOf(list.get(i).get("deviceId").toString()));
}
if (list.get(i).containsKey("value1")){
deviceExport.setValue1(list.get(i).get("value1").toString());
}
if (list.get(i).containsKey("voltage")){
deviceExport.setVoltage(list.get(i).get("voltage").toString());
}
if (list.get(i).containsKey("longitude")){
deviceExport.setLongitude(list.get(i).get("longitude").toString());
}
if (list.get(i).containsKey("latitude")){
deviceExport.setLatitude(list.get(i).get("latitude").toString());
}
if (list.get(i).containsKey("ts")){
deviceExport.setTs(list.get(i).get("ts").toString());
}
exportList.add(deviceExport);
}
ExcelUtil<DeviceExport> util = new ExcelUtil<DeviceExport>(DeviceExport.class);
System.out.println(exportList.size());
util.exportExcel(response,exportList,"历史数据导出");
}
/**
*
* */
@GetMapping("/getDeviceByAreaId/{tenantId}")
public AjaxResult getDeviceByAreaId(@PathVariable("tenantId") Long tenantId){
List<HwMonitorUnit> deviceList = hwDeviceService.getDeviceByAreaId(tenantId);
return success(deviceList);
}
/**
*
* */
@PostMapping("/AlarmInfosExport")
@RequiresPermissions("business:monitor:alarm")
public void AlarmInfosExport(HttpServletResponse response,Date startTime,Date endTime) throws IOException, NoSuchFieldException, IllegalAccessException {
List<Long> list1 = hwAlarmInfoService.selectUnitId();
HashMap<String, List<LinkedHashMap>> map = new HashMap<>();
for (Long unitId : list1) {
List<AlarmInfoExportVo> list2 = hwAlarmInfoService.selectAlarmInfoExport1(unitId,startTime,endTime);
List<HwMonitorUnitAttribute> attributes = hwMonitorUnitAttributeService.selectAttributes(unitId);
HwMonitorUnit hwMonitorUnit = hwMonitorUnitService.selectHwMonitorUnitByMonitorUnitId(unitId);
List<LinkedHashMap> excelMap = new ArrayList<LinkedHashMap>();
LinkedHashMap attributeMap = new LinkedHashMap();
for (HwMonitorUnitAttribute attribute : attributes) {
if (attribute!=null){
attributeMap.put(attribute.getAttributeName(),attribute.getAttributeValue());
}
}
for (AlarmInfoExportVo alarmInfo : list2) {
LinkedHashMap voMap = new LinkedHashMap<>();
Class<AlarmInfoExportVo> clazz = AlarmInfoExportVo.class;
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
Excel annotation = field.getAnnotation(Excel.class);
String name = annotation.name();
System.out.println(name);
field.setAccessible(true);
if (field.getName().equals("alarmInfoId")){
System.out.println(field);
// Long alarmInfoId =(Long)field.get(alarmInfo);
Long alarmInfoId = alarmInfo.getAlarmInfoId();
System.out.println(alarmInfoId);
voMap.put(name,alarmInfoId);
}else {
String value = null;
if (field.get(alarmInfo)!=null){
value = field.get(alarmInfo).toString();
}
voMap.put(name,value);
}
}
voMap.putAll(attributeMap);
excelMap.add(voMap);
}
if (CollectionUtil.isNotEmpty(excelMap)){
map.put(hwMonitorUnit.getMonitorUnitName(),excelMap);
}
}
UnitExcelUtils unitExcelUtils = new UnitExcelUtils();
unitExcelUtils.exportAlarmInfos(response,map);
// List<AlarmInfoExportVo> alarmInfoExportVos = hwAlarmInfoService.selectAlarmInfoExport(startTime,endTime);
// ExcelUtil<AlarmInfoExportVo> util = new ExcelUtil<AlarmInfoExportVo>(AlarmInfoExportVo.class);
// util.exportExcel(response,alarmInfoExportVos,"报警数据导出");
}
/**
* excelexcel
* */
@PostMapping("/import")
public JSONArray importUser(@RequestPart("file")MultipartFile file,Long tenantId) throws Exception {
JSONArray array = ExcelUtils.readMultipartFile(file);
// System.out.println("导入数据为:" + array);
hwDeviceService.insertRedis(array,tenantId);
return array;
}
/**
* idexcel
* */
@GetMapping("/getRedisFile/{tenantId}")
public JSONObject getRedisFile(@PathVariable("tenantId") Long tenantId)
{
JSONObject o = hwDeviceService.selectRedisFile(tenantId);
if (o!=null){
return o;
}
else{
return null;
}
}
/**
*
* */
@PostMapping("/selectDeviceByName")
public AjaxResult selectDeviceByName(@RequestBody Map map){
try {
List<HwDevice> deviceList = hwDeviceService.selectMonitorUnitAndDeviceByName(map);
return success(deviceList);
}catch (Exception ex){
return error(String.format("获取设备信息异常:%e",ex.getMessage()));
}
}
}

@ -0,0 +1,112 @@
package com.ruoyi.business.controller;
import com.ruoyi.business.domain.HwMonitorUnitAttribute;
import com.ruoyi.business.service.HwMonitorUnitAttributeService;
import com.ruoyi.common.core.web.domain.AjaxResult;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
/**
* (HwMonitorUnitAttribute)
*
* @author makejava
* @since 2024-09-04 13:20:30
*/
@RestController
@RequestMapping("hwMonitorUnitAttribute")
public class HwMonitorUnitAttributeController {
/**
*
*/
@Resource
private HwMonitorUnitAttributeService hwMonitorUnitAttributeService;
/**
*
*
* @param hwMonitorUnitAttribute
* @param pageRequest
* @return
*/
@GetMapping
public ResponseEntity<Page<HwMonitorUnitAttribute>> queryByPage(HwMonitorUnitAttribute hwMonitorUnitAttribute, PageRequest pageRequest) {
return ResponseEntity.ok(this.hwMonitorUnitAttributeService.queryByPage(hwMonitorUnitAttribute, pageRequest));
}
/**
*
*
* @param id
* @return
*/
@GetMapping("{id}")
public ResponseEntity<HwMonitorUnitAttribute> queryById(@PathVariable("id") Long id) {
return ResponseEntity.ok(this.hwMonitorUnitAttributeService.queryById(id));
}
/**
*
*
* @param hwMonitorUnitAttribute
* @return
*/
@PostMapping
public ResponseEntity<HwMonitorUnitAttribute> add(HwMonitorUnitAttribute hwMonitorUnitAttribute) {
return ResponseEntity.ok(this.hwMonitorUnitAttributeService.insert(hwMonitorUnitAttribute));
}
/**
*
*
* @param hwMonitorUnitAttribute
* @return
*/
@PutMapping
public ResponseEntity<HwMonitorUnitAttribute> edit(HwMonitorUnitAttribute hwMonitorUnitAttribute) {
return ResponseEntity.ok(this.hwMonitorUnitAttributeService.update(hwMonitorUnitAttribute));
}
/**
*
*
* @param id
* @return
*/
@DeleteMapping
public ResponseEntity<Boolean> deleteById(Long id) {
return ResponseEntity.ok(this.hwMonitorUnitAttributeService.deleteById(id));
}
@PostMapping("/addUnitAttribute")
public AjaxResult addUnitAttribute(@RequestBody HwMonitorUnitAttribute hwMonitorUnitAttribute){
int rows = hwMonitorUnitAttributeService.addUnitAttribute(hwMonitorUnitAttribute);
return AjaxResult.success(rows);
}
@GetMapping("/selectAttributeByUnitId")
public AjaxResult selectAttributeByUnitId(Long monitorUnitId){
List<HwMonitorUnitAttribute> attributes = hwMonitorUnitAttributeService.selectAttributeByUnitId(monitorUnitId);
if (attributes.size()==0){
return AjaxResult.success(Collections.emptyList());
}
return AjaxResult.success(attributes);
}
@PostMapping("/updateAttributeByUniitId")
public AjaxResult updateAttributeByUniitId(@RequestBody HwMonitorUnitAttribute hwMonitorUnitAttribute){
return AjaxResult.success(hwMonitorUnitAttributeService.updateAttributeByUniitId(hwMonitorUnitAttribute));
}
@DeleteMapping("/deleteAttributeByUniitId/{attributeId}")
public AjaxResult deleteAttributeByUniitId(@PathVariable Long attributeId){
return AjaxResult.success(hwMonitorUnitAttributeService.deleteAttributeByUniitId(attributeId));
}
}

@ -0,0 +1,42 @@
package com.ruoyi.business.controller;
import com.ruoyi.business.domain.HwOfflineRule;
import com.ruoyi.business.service.HwOfflineRuleService;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.page.TableDataInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/offlineRule")
public class HwOfflineRuleController extends BaseController {
@Autowired
private HwOfflineRuleService hwOfflineRuleService;
@GetMapping("list")
public TableDataInfo list(HwOfflineRule hwOfflineRule){
startPage();
List<HwOfflineRule> hwOfflineRules = hwOfflineRuleService.selectRuleList(hwOfflineRule);
return getDataTable(hwOfflineRules);
}
@GetMapping("/{offlineRuleId}")
public HwOfflineRule selectOfflineRuleById(@PathVariable("offlineRuleId") Long offlineRuleId){
HwOfflineRule hwOfflineRule = hwOfflineRuleService.selectOfflineRuleById(offlineRuleId);
return hwOfflineRule;
}
@DeleteMapping("/{offlineRuleId}")
public int deleteOfflineRuleById(@PathVariable("offlineRuleId") Long offlineRuleId){
return hwOfflineRuleService.deleteOfflineRuleById(offlineRuleId);
}
@PostMapping
public int addOfflineRule(@RequestBody HwOfflineRule hwOfflineRule){
return hwOfflineRuleService.addOfflineRule(hwOfflineRule);
}
}

@ -1,10 +1,13 @@
package com.ruoyi.business.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.http.HttpUtil;
import com.ruoyi.common.core.constant.HwDictConstants;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysUser;
@ -110,4 +113,13 @@ public class HwTenantController extends BaseController
{
return toAjax(hwTenantService.deleteHwTenantByTenantIds(tenantIds));
}
@GetMapping("/getAliArea")
public AjaxResult getAliArea(Long areaCode)
{
String url = "https://geo.datav.aliyun.com/areas_v3/bound/"+areaCode+"_full.json";
String result= HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8);
return success(result);
}
}

@ -0,0 +1,131 @@
package com.ruoyi.business.domain;
/**
* @ClassName : BeaconDevice
* @Description :
* @Author :
* @Date: 2024-06-06 15:31
*/
public class BeaconDevice {
private Long deviceId;
private String deviceName;
private Double latitude;
private Double longitude;
private String remark;
private String deviceLocation;
private Long deviceModeId;
private String deviceStatus;
private String ifAlarm;
private String monitorUnitName;
private Boolean alarmElectronFence;
public Boolean getAlarmElectronFence() {
return alarmElectronFence;
}
public void setAlarmElectronFence(Boolean alarmElectronFence) {
this.alarmElectronFence = alarmElectronFence;
}
public String getIfAlarm() {
return ifAlarm;
}
public void setIfAlarm(String ifAlarm) {
this.ifAlarm = ifAlarm;
}
public String getDeviceStatus() {
return deviceStatus;
}
public void setDeviceStatus(String deviceStatus) {
this.deviceStatus = deviceStatus;
}
public Long getDeviceModeId() {
return deviceModeId;
}
public void setDeviceModeId(Long deviceModeId) {
this.deviceModeId = deviceModeId;
}
public String getDeviceLocation() {
return deviceLocation;
}
public void setDeviceLocation(String deviceLocation) {
this.deviceLocation = deviceLocation;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Long getDeviceId() {
return deviceId;
}
public void setDeviceId(Long deviceId) {
this.deviceId = deviceId;
}
public String getDeviceName() {
return deviceName;
}
public void setDeviceName(String deviceName) {
this.deviceName = deviceName;
}
public Double getLatitude() {
return latitude;
}
public void setLatitude(Double latitude) {
this.latitude = latitude;
}
public Double getLongitude() {
return longitude;
}
public void setLongitude(Double longitude) {
this.longitude = longitude;
}
public String getMonitorUnitName() {
return monitorUnitName;
}
public void setMonitorUnitName(String monitorUnitName) {
this.monitorUnitName = monitorUnitName;
}
@Override
public String toString() {
return "BeaconDevice{" +
"deviceId=" + deviceId +
", deviceName='" + deviceName + '\'' +
", latitude=" + latitude +
", longitude=" + longitude +
", remark='" + remark + '\'' +
", deviceLocation='" + deviceLocation + '\'' +
", deviceModeId=" + deviceModeId +
", deviceStatus='" + deviceStatus + '\'' +
'}';
}
}

@ -111,8 +111,8 @@ public class HwAlarmInfo extends BaseEntity {
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "实际报警时间", width = 30, dateFormat = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "实际报警时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date alarmTime;
/**
@ -125,6 +125,78 @@ public class HwAlarmInfo extends BaseEntity {
private String alarmLevelName;
private String alarmTypeName;
private String areaName;
private String monitorUnitTypeName;
/**
*
* */
private String ifDisposalAll;
private String deviceName;
private String tenantName;
private String sceneName;
private String alarmRuleName;
private String offlineRuleName;
private String electronicFenceName;
public String getDeviceName() {
return deviceName;
}
public void setDeviceName(String deviceName) {
this.deviceName = deviceName;
}
public String getTenantName() {
return tenantName;
}
public void setTenantName(String tenantName) {
this.tenantName = tenantName;
}
public String getSceneName() {
return sceneName;
}
public void setSceneName(String sceneName) {
this.sceneName = sceneName;
}
public String getAlarmRuleName() {
return alarmRuleName;
}
public void setAlarmRuleName(String alarmRuleName) {
this.alarmRuleName = alarmRuleName;
}
public String getOfflineRuleName() {
return offlineRuleName;
}
public void setOfflineRuleName(String offlineRuleName) {
this.offlineRuleName = offlineRuleName;
}
public String getElectronicFenceName() {
return electronicFenceName;
}
public void setElectronicFenceName(String electronicFenceName) {
this.electronicFenceName = electronicFenceName;
}
public String getIfDisposalAll() {
return ifDisposalAll;
}
public void setIfDisposalAll(String ifDisposalAll) {
this.ifDisposalAll = ifDisposalAll;
}
public void setAlarmInfoId(Long alarmInfoId) {
this.alarmInfoId = alarmInfoId;
}
@ -285,6 +357,22 @@ public class HwAlarmInfo extends BaseEntity {
this.alarmTypeName = alarmTypeName;
}
public String getAreaName() {
return areaName;
}
public void setAreaName(String areaName) {
this.areaName = areaName;
}
public String getMonitorUnitTypeName() {
return monitorUnitTypeName;
}
public void setMonitorUnitTypeName(String monitorUnitTypeName) {
this.monitorUnitTypeName = monitorUnitTypeName;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
@ -311,6 +399,16 @@ public class HwAlarmInfo extends BaseEntity {
.append("monitorUnitName", getMonitorUnitName())
.append("alarmLevelName", getAlarmLevelName())
.append("alarmTypeName", getAlarmTypeName())
.append("areaName", getAreaName())
.append("monitorUnitTypeName", getMonitorUnitTypeName())
.append("deviceName", getDeviceName())
.append("tenantName", getTenantName())
.append("sceneName", getSceneName())
.append("offlineRuleName", getOfflineRuleName())
.toString();
}
}

@ -93,6 +93,16 @@ public class HwAlarmRule extends BaseEntity
private Double triggerDataB;
/**
*
*/
private Long triggerTimeFrame;
/**
*
*/
private String phoneNumbers;
@Excel(name = "所属租户")
private String tenantName;
@ -384,6 +394,22 @@ public class HwAlarmRule extends BaseEntity
this.alarmInfoFlag = alarmInfoFlag;
}
public Long getTriggerTimeFrame() {
return triggerTimeFrame;
}
public void setTriggerTimeFrame(Long triggerTimeFrame) {
this.triggerTimeFrame = triggerTimeFrame;
}
public String getPhoneNumbers() {
return phoneNumbers;
}
public void setPhoneNumbers(String phoneNumbers) {
this.phoneNumbers = phoneNumbers;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

@ -47,6 +47,8 @@ public class HwDevice extends BaseEntity {
@Excel(name = "所属监控单元")
private Long monitorUnitId;
private String monitorUnitName;
/**
* 123
*/
@ -170,7 +172,24 @@ public class HwDevice extends BaseEntity {
// @Excel(name = "在线状态", readConverterExp = "1=在线,0离线")
private String onlineStatus;
private String monitorUnitName;
/**
*
* */
private Double longitude;
/**
*
* */
private Double latitude;
private String functionName;
public String getFunctionName() {
return functionName;
}
public void setFunctionName(String functionName) {
this.functionName = functionName;
}
private String sceneName;
private String deviceModeName;
@ -183,6 +202,43 @@ public class HwDevice extends BaseEntity {
private String deviceTypeStr;
private String publicTime;
//是否报警
private String ifAlarm;
public String getIfAlarm() {
return ifAlarm;
}
public void setIfAlarm(String ifAlarm) {
this.ifAlarm = ifAlarm;
}
public Double getLongitude() {
return longitude;
}
public void setLongitude(Double longitude) {
this.longitude = longitude;
}
public Double getLatitude() {
return latitude;
}
public void setLatitude(Double latitude) {
this.latitude = latitude;
}
public String getPublicTime() {
return publicTime;
}
public void setPublicTime(String publicTime) {
this.publicTime = publicTime;
}
public void setDeviceId(Long deviceId) {
this.deviceId = deviceId;
}

@ -98,6 +98,8 @@ public class HwDeviceMode extends BaseEntity {
private String sceneName;
private String deviceModelType;
/**
*
*/
@ -231,6 +233,14 @@ public class HwDeviceMode extends BaseEntity {
this.sceneName = sceneName;
}
public String getDeviceModelType() {
return deviceModelType;
}
public void setDeviceModelType(String deviceModelType) {
this.deviceModelType = deviceModelType;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)

@ -113,6 +113,8 @@ public class HwDeviceModeFunction extends BaseEntity
// @Excel(name = "预留字段")
private String propertyField;
private String deviceModelType;
private List<HwDeviceModeParameter> inputParameters;
private List<HwDeviceModeParameter> outputParameters;
@ -316,6 +318,14 @@ public class HwDeviceModeFunction extends BaseEntity
this.outputParameters = outputParameters;
}
public String getDeviceModelType() {
return deviceModelType;
}
public void setDeviceModelType(String deviceModelType) {
this.deviceModelType = deviceModelType;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

@ -64,6 +64,8 @@ public class HwDeviceModeParameter extends BaseEntity
@Excel(name = "预留字段,步长")
private BigDecimal propertyStep;
private String deviceModelType;
public void setModeParameterId(Long modeParameterId)
{
this.modeParameterId = modeParameterId;
@ -155,6 +157,14 @@ public class HwDeviceModeParameter extends BaseEntity
return propertyStep;
}
public String getDeviceModelType() {
return deviceModelType;
}
public void setDeviceModelType(String deviceModelType) {
this.deviceModelType = deviceModelType;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

@ -8,7 +8,7 @@ import com.ruoyi.common.core.web.domain.BaseEntity;
/**
* hw_electronic_fence
*
*
* @author xins
* @date 2023-09-19
*/
@ -76,42 +76,21 @@ public class HwElectronicFence extends BaseEntity
private String circleAreaListStr;
private String alarmInfoFlag;//是否有报警信息关联标识
//电子围栏区域信息
private List<HwFenceArea> hwFenceAreaList;
private String deviceModeName;
private String deviceName;
private Long deviceModeId;
private Long deviceId;
public String getDeviceModeName() {
return deviceModeName;
public List<HwFenceArea> getHwFenceAreaList() {
return hwFenceAreaList;
}
public void setDeviceModeName(String deviceModeName) {
this.deviceModeName = deviceModeName;
}
public String getDeviceName() {
return deviceName;
}
public void setDeviceName(String deviceName) {
this.deviceName = deviceName;
}
public Long getDeviceModeId() {
return deviceModeId;
}
public void setDeviceModeId(Long deviceModeId) {
this.deviceModeId = deviceModeId;
}
public Long getDeviceId() {
return deviceId;
}
public void setDeviceId(Long deviceId) {
this.deviceId = deviceId;
public void setHwFenceAreaList(List<HwFenceArea> hwFenceAreaList) {
this.hwFenceAreaList = hwFenceAreaList;
}
public void setElectronicFenceId(Long electronicFenceId)
@ -119,115 +98,115 @@ public class HwElectronicFence extends BaseEntity
this.electronicFenceId = electronicFenceId;
}
public Long getElectronicFenceId()
public Long getElectronicFenceId()
{
return electronicFenceId;
}
public void setElectronicFenceName(String electronicFenceName)
public void setElectronicFenceName(String electronicFenceName)
{
this.electronicFenceName = electronicFenceName;
}
public String getElectronicFenceName()
public String getElectronicFenceName()
{
return electronicFenceName;
}
public void setTenantId(Long tenantId)
public void setTenantId(Long tenantId)
{
this.tenantId = tenantId;
}
public Long getTenantId()
public Long getTenantId()
{
return tenantId;
}
public void setSceneId(Long sceneId)
public void setSceneId(Long sceneId)
{
this.sceneId = sceneId;
}
public Long getSceneId()
public Long getSceneId()
{
return sceneId;
}
public void setFenceType(String fenceType)
public void setFenceType(String fenceType)
{
this.fenceType = fenceType;
}
public String getFenceType()
public String getFenceType()
{
return fenceType;
}
public void setEffectiveTimeFlag(String effectiveTimeFlag)
public void setEffectiveTimeFlag(String effectiveTimeFlag)
{
this.effectiveTimeFlag = effectiveTimeFlag;
}
public String getEffectiveTimeFlag()
public String getEffectiveTimeFlag()
{
return effectiveTimeFlag;
}
public void setTimeZone(String timeZone)
public void setTimeZone(String timeZone)
{
this.timeZone = timeZone;
}
public String getTimeZone()
public String getTimeZone()
{
return timeZone;
}
public void setEffectiveTime(String effectiveTime)
public void setEffectiveTime(String effectiveTime)
{
this.effectiveTime = effectiveTime;
}
public String getEffectiveTime()
public String getEffectiveTime()
{
return effectiveTime;
}
public void setTriggerStatus(String triggerStatus)
public void setTriggerStatus(String triggerStatus)
{
this.triggerStatus = triggerStatus;
}
public String getTriggerStatus()
public String getTriggerStatus()
{
return triggerStatus;
}
public void setFencePushFlag(String fencePushFlag)
public void setFencePushFlag(String fencePushFlag)
{
this.fencePushFlag = fencePushFlag;
}
public String getFencePushFlag()
public String getFencePushFlag()
{
return fencePushFlag;
}
public void setFencePushContent(String fencePushContent)
public void setFencePushContent(String fencePushContent)
{
this.fencePushContent = fencePushContent;
}
public String getFencePushContent()
public String getFencePushContent()
{
return fencePushContent;
}
public void setFenceRecoverContent(String fenceRecoverContent)
public void setFenceRecoverContent(String fenceRecoverContent)
{
this.fenceRecoverContent = fenceRecoverContent;
}
public String getFenceRecoverContent()
public String getFenceRecoverContent()
{
return fenceRecoverContent;
}
public void setFenceField(String fenceField)
public void setFenceField(String fenceField)
{
this.fenceField = fenceField;
}
public String getFenceField()
public String getFenceField()
{
return fenceField;
}
@ -274,6 +253,38 @@ public class HwElectronicFence extends BaseEntity
this.alarmInfoFlag = alarmInfoFlag;
}
public String getDeviceModeName() {
return deviceModeName;
}
public void setDeviceModeName(String deviceModeName) {
this.deviceModeName = deviceModeName;
}
public String getDeviceName() {
return deviceName;
}
public void setDeviceName(String deviceName) {
this.deviceName = deviceName;
}
public Long getDeviceModeId() {
return deviceModeId;
}
public void setDeviceModeId(Long deviceModeId) {
this.deviceModeId = deviceModeId;
}
public Long getDeviceId() {
return deviceId;
}
public void setDeviceId(Long deviceId) {
this.deviceId = deviceId;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

@ -70,6 +70,16 @@ public class HwMonitorUnit extends BaseEntity
private String tenantName;
private boolean normalFlag;//是否正常(如果有报警未处理的则为异常)
private List<HwDevice> devicesList;
public List<HwDevice> getDevicesList() {
return devicesList;
}
public void setDevicesList(List<HwDevice> devicesList) {
this.devicesList = devicesList;
}
private List<HwMonitorUnit> child = new ArrayList<HwMonitorUnit>();
/** 子部门 */
@ -253,4 +263,4 @@ public class HwMonitorUnit extends BaseEntity
.append("monitorUnitField", getMonitorUnitField())
.toString();
}
}
}

@ -0,0 +1,114 @@
package com.ruoyi.business.domain;
import java.io.Serializable;
import java.util.Date;
/**
* (HwMonitorUnitAttribute)
*
* @author makejava
* @since 2024-09-04 13:20:33
*/
public class HwMonitorUnitAttribute implements Serializable {
private static final long serialVersionUID = -41167481835416588L;
/**
* ID
*/
private Long attributeId;
/**
* ID
*/
private Long monitorUnitId;
/**
*
*/
private String attributeName;
/**
*
*/
private String attributeValue;
/**
*
*/
private String createBy;
/**
*
*/
private Date createTime;
/**
*
*/
private String updateBy;
/**
*
*/
private Date updateTime;
public Long getAttributeId() {
return attributeId;
}
public void setAttributeId(Long attributeId) {
this.attributeId = attributeId;
}
public Long getMonitorUnitId() {
return monitorUnitId;
}
public void setMonitorUnitId(Long monitorUnitId) {
this.monitorUnitId = monitorUnitId;
}
public String getAttributeName() {
return attributeName;
}
public void setAttributeName(String attributeName) {
this.attributeName = attributeName;
}
public String getAttributeValue() {
return attributeValue;
}
public void setAttributeValue(String attributeValue) {
this.attributeValue = attributeValue;
}
public String getCreateBy() {
return createBy;
}
public void setCreateBy(String createBy) {
this.createBy = createBy;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getUpdateBy() {
return updateBy;
}
public void setUpdateBy(String updateBy) {
this.updateBy = updateBy;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}

@ -1,6 +1,8 @@
package com.ruoyi.business.domain;
import java.math.BigDecimal;
import java.util.List;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
@ -10,7 +12,7 @@ import javax.validation.constraints.NotNull;
/**
* hw_scene
*
*
* @author xins
* @date 2023-08-23
*/
@ -83,138 +85,148 @@ public class HwScene extends BaseEntity
private String selectedDisable;
public void setSceneId(Long sceneId)
private List<HwMonitorUnit> unitList;
public List<HwMonitorUnit> getUnitList() {
return unitList;
}
public void setUnitList(List<HwMonitorUnit> unitList) {
this.unitList = unitList;
}
public void setSceneId(Long sceneId)
{
this.sceneId = sceneId;
}
public Long getSceneId()
public Long getSceneId()
{
return sceneId;
}
public void setSceneName(String sceneName)
public void setSceneName(String sceneName)
{
this.sceneName = sceneName;
}
public String getSceneName()
public String getSceneName()
{
return sceneName;
}
public void setTenantId(Long tenantId)
public void setTenantId(Long tenantId)
{
this.tenantId = tenantId;
}
public Long getTenantId()
public Long getTenantId()
{
return tenantId;
}
public void setSceneModeId(Long sceneModeId)
public void setSceneModeId(Long sceneModeId)
{
this.sceneModeId = sceneModeId;
}
public Long getSceneModeId()
public Long getSceneModeId()
{
return sceneModeId;
}
public void setScenePic(String scenePic)
public void setScenePic(String scenePic)
{
this.scenePic = scenePic;
}
public String getScenePic()
public String getScenePic()
{
return scenePic;
}
public void setDefaultFlag(String defaultFlag)
public void setDefaultFlag(String defaultFlag)
{
this.defaultFlag = defaultFlag;
}
public String getDefaultFlag()
public String getDefaultFlag()
{
return defaultFlag;
}
public void setSceneStatus(String sceneStatus)
public void setSceneStatus(String sceneStatus)
{
this.sceneStatus = sceneStatus;
}
public String getSceneStatus()
public String getSceneStatus()
{
return sceneStatus;
}
public void setAuthMode(String authMode)
public void setAuthMode(String authMode)
{
this.authMode = authMode;
}
public String getAuthMode()
public String getAuthMode()
{
return authMode;
}
public void setModeAccount(String modeAccount)
public void setModeAccount(String modeAccount)
{
this.modeAccount = modeAccount;
}
public String getModeAccount()
public String getModeAccount()
{
return modeAccount;
}
public void setModeKey(String modeKey)
public void setModeKey(String modeKey)
{
this.modeKey = modeKey;
}
public String getModeKey()
public String getModeKey()
{
return modeKey;
}
public void setModeSecret(String modeSecret)
public void setModeSecret(String modeSecret)
{
this.modeSecret = modeSecret;
}
public String getModeSecret()
public String getModeSecret()
{
return modeSecret;
}
public void setPreserveTime(BigDecimal preserveTime)
public void setPreserveTime(BigDecimal preserveTime)
{
this.preserveTime = preserveTime;
}
public BigDecimal getPreserveTime()
public BigDecimal getPreserveTime()
{
return preserveTime;
}
public void setTestPreserveTime(BigDecimal testPreserveTime)
public void setTestPreserveTime(BigDecimal testPreserveTime)
{
this.testPreserveTime = testPreserveTime;
}
public BigDecimal getTestPreserveTime()
public BigDecimal getTestPreserveTime()
{
return testPreserveTime;
}
public void setSceneEnvironment(String sceneEnvironment)
public void setSceneEnvironment(String sceneEnvironment)
{
this.sceneEnvironment = sceneEnvironment;
}
public String getSceneEnvironment()
public String getSceneEnvironment()
{
return sceneEnvironment;
}
public void setSceneField(String sceneField)
public void setSceneField(String sceneField)
{
this.sceneField = sceneField;
}
public String getSceneField()
public String getSceneField()
{
return sceneField;
}

@ -104,6 +104,18 @@ public class HwTenant extends BaseEntity {
// @Excel(name = "预留字段")
private String tenantField;
/**
*
*/
private String tenantMapCode;
public String getTenantMapCode() {
return tenantMapCode;
}
public void setTenantMapCode(String tenantMapCode) {
this.tenantMapCode = tenantMapCode;
}
public void setTenantId(Long tenantId) {
this.tenantId = tenantId;

@ -0,0 +1,125 @@
package com.ruoyi.business.domain.VO;
import com.ruoyi.common.core.annotation.Excel;
import lombok.Data;
import javax.validation.constraints.Email;
/**
* @ClassName : AlarmInfoExportVo
* @Description :
* @Author :
* @Date: 2024-06-14 09:52
*/
@Data
public class AlarmInfoExportVo {
@Excel(name = "报警id")
private Long alarmInfoId;
@Excel(name = "报警位置")
private String monitorUnitName;
// @Excel(name = "报警级别名称")
// private String alarmLevelName;
@Excel(name = "报警类型名称")
private String alarmTypeName;
@Excel(name = "报警时间")
private String alarmTime;
@Excel(name = "ID")
private String monitorUnitId;
@Excel(name = "状态")
private String monitorUnitStatus;
@Excel(name = "类型")
private String monitorUnitTypeName;
@Excel(name = "报警区域")
private String areaName;
// public Long getAlarmInfoId() {
// return alarmInfoId;
// }
//
// public void setAlarmInfoId(Long alarmInfoId) {
// this.alarmInfoId = alarmInfoId;
// }
//
// public String getAreaName() {
// return areaName;
// }
//
// public void setAreaName(String areaName) {
// this.areaName = areaName;
// }
//
// public String getMonitorUnitName() {
// return monitorUnitName;
// }
//
// public void setMonitorUnitName(String monitorUnitName) {
// this.monitorUnitName = monitorUnitName;
// }
//
// public String getAlarmLevelName() {
// return alarmLevelName;
// }
//
// public void setAlarmLevelName(String alarmLevelName) {
// this.alarmLevelName = alarmLevelName;
// }
//
// public String getAlarmTypeName() {
// return alarmTypeName;
// }
//
// public void setAlarmTypeName(String alarmTypeName) {
// this.alarmTypeName = alarmTypeName;
// }
//
// public String getAlarmTime() {
// return alarmTime;
// }
//
// public void setAlarmTime(String alarmTime) {
// this.alarmTime = alarmTime;
// }
// public String getMonitor_unit_id() {
// return monitor_unit_id;
// }
//
// public void setMonitor_unit_id(String monitor_unit_id) {
// this.monitor_unit_id = monitor_unit_id;
// }
//
// public String getMonitor_unit_status() {
// return monitor_unit_status;
// }
//
// public void setMonitor_unit_status(String monitor_unit_status) {
// this.monitor_unit_status = monitor_unit_status;
// }
//
// public String getMonitor_unit_type_name() {
// return monitor_unit_type_name;
// }
//
// public void setMonitor_unit_type_name(String monitor_unit_type_name) {
// this.monitor_unit_type_name = monitor_unit_type_name;
// }
// @Override
// public String toString() {
// return "AlarmInfoExportVo{" +
// "alarmInfoId=" + alarmInfoId +
// ", monitorUnitName='" + monitorUnitName + '\'' +
// ", alarmLevelName='" + alarmLevelName + '\'' +
// ", alarmTypeName='" + alarmTypeName + '\'' +
// ", alarmTime='" + alarmTime + '\'' +
// '}';
// }
}

@ -9,6 +9,7 @@ import java.util.List;
* @Date: 2023-09-04 09:00
*/
public class AllNumsVo {
private Integer beaconDeviceSum;
private String sceneId;
private Integer subSum;
private Integer sum;
@ -37,6 +38,14 @@ public class AllNumsVo {
this.sum = sum;
}
public Integer getBeaconDeviceSum() {
return beaconDeviceSum;
}
public void setBeaconDeviceSum(Integer beaconDeviceSum) {
this.beaconDeviceSum = beaconDeviceSum;
}
@Override
public String toString() {
return "AllNumsVo{" +

@ -0,0 +1,85 @@
package com.ruoyi.business.domain.VO;
import com.ruoyi.common.core.annotation.Excel;
import org.springframework.web.bind.annotation.ExceptionHandler;
/**
* @ClassName : DeviceExport
* @Description :
* @Author :
* @Date: 2024-06-12 13:26
*/
public class DeviceExport {
@Excel(name = "设备ID")
private Long deviceId;
@Excel(name = "温度")
private String value1;
@Excel(name = "电压")
private String voltage;
@Excel(name = "经度")
private String longitude;
@Excel(name = "纬度")
private String latitude;
@Excel(name = "记录时间")
private String ts;
public Long getDeviceId() {
return deviceId;
}
public void setDeviceId(Long deviceId) {
this.deviceId = deviceId;
}
public String getValue1() {
return value1;
}
public void setValue1(String value1) {
this.value1 = value1;
}
public String getVoltage() {
return voltage;
}
public void setVoltage(String voltage) {
this.voltage = voltage;
}
public String getLongitude() {
return longitude;
}
public void setLongitude(String longitude) {
this.longitude = longitude;
}
public String getLatitude() {
return latitude;
}
public void setLatitude(String latitude) {
this.latitude = latitude;
}
public String getTs() {
return ts;
}
public void setTs(String ts) {
this.ts = ts;
}
@Override
public String toString() {
return "DeviceExport{" +
"deviceId=" + deviceId +
", value1='" + value1 + '\'' +
", voltage='" + voltage + '\'' +
", longitude='" + longitude + '\'' +
", latitude='" + latitude + '\'' +
", ts='" + ts + '\'' +
'}';
}
}

@ -1,6 +1,7 @@
package com.ruoyi.business.domain.VO;
import com.ruoyi.business.domain.HwDeviceModeFunction;
import com.ruoyi.common.core.web.domain.BaseEntity;
import lombok.Data;
import java.util.List;
@ -14,7 +15,7 @@ import java.util.Map;
* @Version :1.0
*/
@Data
public class HwDeviceVo {
public class HwDeviceVo extends BaseEntity {
private Long deviceId;

@ -0,0 +1,115 @@
package com.ruoyi.business.domain.VO;
import com.ruoyi.business.domain.HwDevice;
import com.ruoyi.business.domain.HwMonitorUnit;
import com.ruoyi.common.core.web.domain.BaseEntity;
import java.util.List;
/**
* @ClassName : TreeAreaVo
* @Description :
* @Author :
* @Date: 2024-06-13 10:20
*/
public class TreeAreaVo {
private Long areaId;
private String areaName;
// private String ancestors;
//
// private Long parentId;
//
// private String areaStatus;
//
// private Long orderNum;
private List<TreeAreaVo> listArea;
private List<HwDevice> deviceList;
private List<HwMonitorUnit> monitorUnitList;
public List<HwMonitorUnit> getMonitorUnitList() {
return monitorUnitList;
}
public void setMonitorUnitList(List<HwMonitorUnit> monitorUnitList) {
this.monitorUnitList = monitorUnitList;
}
public List<HwDevice> getDeviceList() {
return deviceList;
}
public void setDeviceList(List<HwDevice> deviceList) {
this.deviceList = deviceList;
}
public Long getAreaId() {
return areaId;
}
public void setAreaId(Long areaId) {
this.areaId = areaId;
}
public String getAreaName() {
return areaName;
}
public void setAreaName(String areaName) {
this.areaName = areaName;
}
//
// public String getAncestors() {
// return ancestors;
// }
//
// public void setAncestors(String ancestors) {
// this.ancestors = ancestors;
// }
//
// public Long getParentId() {
// return parentId;
// }
//
// public void setParentId(Long parentId) {
// this.parentId = parentId;
// }
//
// public String getAreaStatus() {
// return areaStatus;
// }
//
// public void setAreaStatus(String areaStatus) {
// this.areaStatus = areaStatus;
// }
//
// public Long getOrderNum() {
// return orderNum;
// }
//
// public void setOrderNum(Long orderNum) {
// this.orderNum = orderNum;
// }
public List<TreeAreaVo> getListArea() {
return listArea;
}
public void setListArea(List<TreeAreaVo> listArea) {
this.listArea = listArea;
}
@Override
public String toString() {
return "TreeAreaVo{" +
"areaId=" + areaId +
", areaName='" + areaName + '\'' +
", listArea=" + listArea +
'}';
}
}

@ -0,0 +1,73 @@
package com.ruoyi.business.domain.VO;
import java.util.List;
/**
* @ClassName : TreeDeviceVo
* @Description :
* @Author :
* @Date: 2024-06-11 17:47
*/
public class TreeDeviceVo {
private Long voId;
private String voName;
private Long parentId;
private List<TreeDeviceVo> voList;
private String prop;
public String getProp() {
return prop;
}
public void setProp(String prop) {
this.prop = prop;
}
public Long getVoId() {
return voId;
}
public void setVoId(Long voId) {
this.voId = voId;
}
public String getVoName() {
return voName;
}
public void setVoName(String voName) {
this.voName = voName;
}
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public List<TreeDeviceVo> getVoList() {
return voList;
}
public void setVoList(List<TreeDeviceVo> voList) {
this.voList = voList;
}
@Override
public String toString() {
return "TreeDeviceVo{" +
"voId=" + voId +
", voName='" + voName + '\'' +
", parentId=" + parentId +
", voList=" + voList +
", prop=" + prop +
'}';
}
}

@ -1,21 +1,29 @@
package com.ruoyi.business.mapper;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import com.ruoyi.business.domain.HwAlarmInfo;
import com.ruoyi.business.domain.VO.AlarmInfoExportVo;
import com.ruoyi.business.domain.VO.AlarmInfoVo;
import com.ruoyi.business.domain.VO.AlarmTypeVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* Mapper
*
*
* @author xins
* @date 2023-09-15
*/
public interface HwAlarmInfoMapper
@Mapper
public interface HwAlarmInfoMapper
{
/**
*
*
*
* @param alarmInfoId
* @return
*/
@ -23,7 +31,7 @@ public interface HwAlarmInfoMapper
/**
*
*
*
* @param hwAlarmInfo
* @return
*/
@ -31,7 +39,7 @@ public interface HwAlarmInfoMapper
/**
*
*
*
* @param hwAlarmInfo
* @return
*/
@ -39,15 +47,16 @@ public interface HwAlarmInfoMapper
/**
*
*
*
* @param hwAlarmInfo
* @return
*/
public int updateHwAlarmInfo(HwAlarmInfo hwAlarmInfo);
/**
*
*
*
* @param alarmInfoId
* @return
*/
@ -55,7 +64,7 @@ public interface HwAlarmInfoMapper
/**
*
*
*
* @param alarmInfoIds
* @return
*/
@ -74,4 +83,21 @@ public interface HwAlarmInfoMapper
* @return int
*/
public int selectAlarmCountByMonitorUnitId(Long monitorUnitId);
/**
*
* */
List<AlarmInfoExportVo> selectAlarmInfoExport(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
/**
*
* */
public int updateHwAlarmInfoAllByDevice(HwAlarmInfo hwAlarmInfo);
// List<AlarmInfoExportVo> selectAlarmInfoExport1(@Param("monitorUnitId")Long monitorUnitId);
List<AlarmInfoExportVo> selectAlarmInfoExport1(@Param("monitorUnitId")Long monitorUnitId,@Param("startTime") Date startTime, @Param("endTime") Date endTime);
List<Long> selectUnitId();
int updateHwAlarmInformation(HwAlarmInfo hwAlarmInformation);
}

@ -3,6 +3,8 @@ package com.ruoyi.business.mapper;
import java.util.List;
import com.ruoyi.business.domain.HwAlarmRule;
import com.ruoyi.business.domain.HwAlarmRuleLink;
import com.ruoyi.business.domain.HwDevice;
import com.ruoyi.business.domain.HwDeviceMode;
/**
* Mapper
@ -18,7 +20,7 @@ public interface HwAlarmRuleMapper
* @param alarmRuleId
* @return
*/
public HwAlarmRule selectHwAlarmRuleByAlarmRuleId(Long alarmRuleId);
public List<HwAlarmRule> selectHwAlarmRuleByAlarmRuleId(Long alarmRuleId);
/**
*
@ -92,4 +94,6 @@ public interface HwAlarmRuleMapper
* @return
*/
public int deleteHwAlarmRuleLinkByAlarmRuleId(Long alarmRuleId);
HwDeviceMode selectModeByDeviceId(Long deviceId);
}

@ -1,9 +1,15 @@
package com.ruoyi.business.mapper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.ruoyi.business.domain.HwDevice;
import com.ruoyi.business.domain.VO.DeviceModeVo;
import com.ruoyi.business.domain.VO.HwMonitorUnitVo;
import com.ruoyi.business.domain.VO.TreeAreaVo;
import com.ruoyi.business.domain.VO.TreeDeviceVo;
import org.apache.ibatis.annotations.Param;
/**
* Mapper
@ -26,7 +32,7 @@ public interface HwDeviceMapper
/**
* 3.
* */
public List<DeviceModeVo> selectDeviceModeNameVo();
public List<DeviceModeVo> selectDeviceModeNameVo(Long tenantId);
/**
*
*
@ -108,9 +114,9 @@ public interface HwDeviceMapper
* @return HwDevice
*/
public HwDevice selectHwDeviceByDeviceCode(String deviceCode);
public int selectDeviceNumCount(HwDevice hwDevice);
public int selectAbnormalDeviceNumCount(HwDevice hwDevice);
@ -134,4 +140,40 @@ public interface HwDeviceMapper
* @return List<HwDevice>
*/
public List<HwDevice> selectUnallocatedList(HwDevice hwDevice);
/**
*
* */
List<TreeDeviceVo> selectDeviceList();
/**
*
* */
public String selectPropBydeviceIdAndFunctionName(@Param(value = "deviceModeId") Long deviceModeId,@Param(value = "functionName") String functionName);
/**
*
* */
List<HwDevice> getDeviceByAreaId(@Param(value = "tenantId") Long tenantId,@Param(value = "areaId") Long areaId);
List<TreeAreaVo> getTreeArea(Long areaId);
/**
*
* */
List<HwDevice> getDeviceListInMonitorUnit(Long monitorUnitId);
/**
*
* */
String selectFunctionNameByFunctionIdentifier(@Param("functionIdentifier") String functionIdentifier,@Param("modeId") Long modeId);
/**
* id
* */
Long selectDeviceIfAlarm(Long deviceId);
List<HwDevice> getDeviceByModel(Long modelId);
Long selectDeviceIfAlarmElectronFence(Long deviceId);
Long selectModeIdByDeviceId(String deviceId);
}

@ -2,6 +2,7 @@ package com.ruoyi.business.mapper;
import java.util.List;
import com.ruoyi.business.domain.HwDeviceModeFunction;
import org.apache.ibatis.annotations.Param;
/**
* Mapper
@ -58,4 +59,7 @@ public interface HwDeviceModeFunctionMapper
* @return
*/
public int deleteHwDeviceModeFunctionByModeFunctionIds(Long[] modeFunctionIds);
String selectUbitByIdAndName(@Param("dataFunctionIdentifier") String dataFunctionIdentifier,@Param("modeId") Long modeId);
}

@ -143,4 +143,6 @@ public interface HwDeviceModeMapper
* @return
*/
public List<HwDeviceMode> selectHwDeviceModeJoinList(HwDeviceMode hwDeviceMode);
List<HwDeviceMode> selectModel(Long sceneId);
}

@ -114,4 +114,10 @@ public interface HwElectronicFenceMapper
* @return
*/
public int deleteHwFenceAreaByElectronicFenceId(Long electronicFenceId);
/**
* id
* */
List<HwElectronicFence> selectMonitorElectronic(Long deviceId);
}

@ -58,4 +58,6 @@ public interface HwFenceTargetMapper
* @return
*/
public int deleteHwFenceTargetByTargetIds(Long[] targetIds);
public int deleteHwFenceTargetByFenceId(Long[] electronicFenceIds);
}

@ -0,0 +1,92 @@
package com.ruoyi.business.mapper;
import com.ruoyi.business.domain.HwMonitorUnitAttribute;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable;
import java.util.List;
/**
* (HwMonitorUnitAttribute)访
*
* @author makejava
* @since 2024-09-04 13:20:30
*/
public interface HwMonitorUnitAttributeDao {
/**
* ID
*
* @param attributeId
* @return
*/
HwMonitorUnitAttribute queryById(Long attributeId);
/**
*
*
* @param hwMonitorUnitAttribute
* @param pageable
* @return
*/
List<HwMonitorUnitAttribute> queryAllByLimit(HwMonitorUnitAttribute hwMonitorUnitAttribute, @Param("pageable") Pageable pageable);
/**
*
*
* @param hwMonitorUnitAttribute
* @return
*/
long count(HwMonitorUnitAttribute hwMonitorUnitAttribute);
/**
*
*
* @param hwMonitorUnitAttribute
* @return
*/
int insert(HwMonitorUnitAttribute hwMonitorUnitAttribute);
/**
* MyBatisforeach
*
* @param entities List<HwMonitorUnitAttribute>
* @return
*/
int insertBatch(@Param("entities") List<HwMonitorUnitAttribute> entities);
/**
* MyBatisforeach
*
* @param entities List<HwMonitorUnitAttribute>
* @return
* @throws org.springframework.jdbc.BadSqlGrammarException ListSQL
*/
int insertOrUpdateBatch(@Param("entities") List<HwMonitorUnitAttribute> entities);
/**
*
*
* @param hwMonitorUnitAttribute
* @return
*/
int update(HwMonitorUnitAttribute hwMonitorUnitAttribute);
/**
*
*
* @param attributeId
* @return
*/
int deleteById(Long attributeId);
List<HwMonitorUnitAttribute> selectAttributeByUnitId(Long monitorUnitId);
int updateAttributeByUniitId(HwMonitorUnitAttribute hwMonitorUnitAttribute);
int deleteAttributeByUniitId(Long attributeId);
List<HwMonitorUnitAttribute> selectAttributes(Long unitId);
}

@ -1,11 +1,13 @@
package com.ruoyi.business.mapper;
import java.util.List;
import java.util.Map;
import com.alibaba.druid.support.http.MonitorClientContextListener;
import com.ruoyi.business.domain.HwMonitorUnit;
import com.ruoyi.business.domain.HwScene;
import com.ruoyi.business.domain.VO.*;
import org.apache.ibatis.annotations.Param;
/**
* Mapper
@ -25,22 +27,22 @@ public interface HwMonitorUnitMapper
/**
* ()
* */
public List<HwMonitorUnitVo> selectMonitorPercentage();
public List<HwMonitorUnitVo> selectMonitorPercentage(Long tenantId);
/**
*
* */
public List<AllNumsVo> selectAllNums();
public List<AllNumsVo> selectsum();
//查询id与name的结果集
List<HwMonitorUnitVo> selectSceneNameById();
Integer selectSubSetNums(Long sceneId);
List<HwMonitorUnitVo> selectSceneNameById(Long tenantId);
Integer selectSubSetNums(@Param("tenantId") Long tenantId,@Param("sceneId")Long sceneId);
/**
*
* */
public List<HwMonitorUnit> selectLimitSubMonitorUnit(HwMonitorUnit hwMonitorUnit);
Integer selectReleatedDeviceIdNums(Long deviceCode);
Integer selectDeviceNums(Long sceneId);
Integer selectDeviceNums(@Param("sceneId")Long sceneId,@Param("tenantId")Long tenantId);
Integer selectSubDeviceSum(Long sceneId);
/**
@ -155,4 +157,31 @@ public interface HwMonitorUnitMapper
*/
public int deleteMonitorUnitById(Long monitorUnitId);
}
/**
*
* */
Integer selectBeaconDeviceNums(Long sceneId);
/**
*
* */
Integer[] selectBeaconDeviceBySceneId(Long sceneId);
/**
* id
* */
HwMonitorUnit selectMonitorUnit(Long deviceId);
/**
* map
* */
List<TreeDeviceVo> selectMonitorUnitReturnMap();
/**
* id
* */
List<HwMonitorUnit> getMonitorUnitByAreaId(@Param(value = "tenantId") Long tenantId, @Param(value = "areaId") Long areaId);
List<HwMonitorUnit> selectMonitorUnitListHavAreaId(Long tenantId);
}

@ -0,0 +1,17 @@
package com.ruoyi.business.mapper;
import com.ruoyi.business.domain.HwOfflineRule;
import java.util.List;
public interface HwOfflineRuleMapper {
List<HwOfflineRule> selectHwOfflineRuleJoinList(HwOfflineRule hwOfflineRule);
HwOfflineRule selectOfflineRuleById(Long offlineRuleId);
int deleteOfflineRuleById(Long offlineRuleId);
int addOfflineRule(HwOfflineRule hwOfflineRule);
}

@ -1,8 +1,11 @@
package com.ruoyi.business.mapper;
import java.util.List;
import java.util.Map;
import com.ruoyi.business.domain.HwScene;
import com.ruoyi.business.domain.VO.HwSceneVo;
import com.ruoyi.business.domain.VO.TreeDeviceVo;
/**
* Mapper
@ -66,4 +69,9 @@ public interface HwSceneMapper
* @return
*/
public int deleteHwSceneBySceneIds(Long[] sceneIds);
/**
*
* */
public List<TreeDeviceVo> selectHwSceneListReturnMap();
}

@ -0,0 +1,68 @@
package com.ruoyi.business.service;
import com.ruoyi.business.domain.HwMonitorUnitAttribute;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import java.util.List;
/**
* (HwMonitorUnitAttribute)
*
* @author makejava
* @since 2024-09-04 13:20:34
*/
public interface HwMonitorUnitAttributeService {
/**
* ID
*
* @param attributeId
* @return
*/
HwMonitorUnitAttribute queryById(Long attributeId);
/**
*
*
* @param hwMonitorUnitAttribute
* @param pageRequest
* @return
*/
Page<HwMonitorUnitAttribute> queryByPage(HwMonitorUnitAttribute hwMonitorUnitAttribute, PageRequest pageRequest);
/**
*
*
* @param hwMonitorUnitAttribute
* @return
*/
HwMonitorUnitAttribute insert(HwMonitorUnitAttribute hwMonitorUnitAttribute);
/**
*
*
* @param hwMonitorUnitAttribute
* @return
*/
HwMonitorUnitAttribute update(HwMonitorUnitAttribute hwMonitorUnitAttribute);
/**
*
*
* @param attributeId
* @return
*/
boolean deleteById(Long attributeId);
int addUnitAttribute(HwMonitorUnitAttribute hwMonitorUnitAttribute);
List<HwMonitorUnitAttribute> selectAttributeByUnitId(Long monitorUnitId);
int updateAttributeByUniitId(HwMonitorUnitAttribute hwMonitorUnitAttribute);
int deleteAttributeByUniitId(Long attributeId);
List<HwMonitorUnitAttribute> selectAttributes(Long unitId);
}

@ -0,0 +1,15 @@
package com.ruoyi.business.service;
import com.ruoyi.business.domain.HwOfflineRule;
import java.util.List;
public interface HwOfflineRuleService {
List<HwOfflineRule> selectRuleList(HwOfflineRule hwOfflineRule);
HwOfflineRule selectOfflineRuleById(Long offlineRuleId);
int deleteOfflineRuleById(Long offlineRuleId);
int addOfflineRule(HwOfflineRule hwOfflineRule);
}

@ -1,20 +1,25 @@
package com.ruoyi.business.service;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import com.ruoyi.business.domain.HwAlarmInfo;
import com.ruoyi.business.domain.VO.AlarmInfoExportVo;
import com.ruoyi.business.domain.VO.AlarmTypeVo;
/**
* Service
*
*
* @author xins
* @date 2023-09-15
*/
public interface IHwAlarmInfoService
public interface IHwAlarmInfoService
{
/**
*
*
*
* @param alarmInfoId
* @return
*/
@ -22,7 +27,7 @@ public interface IHwAlarmInfoService
/**
*
*
*
* @param hwAlarmInfo
* @return
*/
@ -30,7 +35,7 @@ public interface IHwAlarmInfoService
/**
*
*
*
* @param hwAlarmInfo
* @return
*/
@ -38,7 +43,7 @@ public interface IHwAlarmInfoService
/**
*
*
*
* @param hwAlarmInfo
* @return
*/
@ -46,7 +51,7 @@ public interface IHwAlarmInfoService
/**
*
*
*
* @param alarmInfoIds
* @return
*/
@ -54,7 +59,7 @@ public interface IHwAlarmInfoService
/**
*
*
*
* @param alarmInfoId
* @return
*/
@ -68,4 +73,15 @@ public interface IHwAlarmInfoService
* @return List<AlarmTypeVo>
*/
public List<AlarmTypeVo> selectAlarmsByAlarmType(Long sceneId);
/**
*
* */
List<AlarmInfoExportVo> selectAlarmInfoExport(Date startTime, Date endTime);
List<AlarmInfoExportVo> selectAlarmInfoExport1(Long monitorUnitId,Date startTime, Date endTime);
List<Long> selectUnitId();
int updateHwAlarmInformation(HwAlarmInfo hwAlarmInformation);
}

@ -3,6 +3,7 @@ package com.ruoyi.business.service;
import java.util.List;
import java.util.Map;
import com.ruoyi.business.domain.HwDevice;
import com.ruoyi.business.domain.HwDeviceMode;
import com.ruoyi.business.domain.HwDeviceModeFunction;
import com.ruoyi.business.domain.HwDeviceModeParameter;
@ -134,4 +135,9 @@ public interface IHwDeviceModeService
*/
public HwDeviceMode selectHwDeviceModeByDeviceId(Long deviceId);
List<HwDeviceMode> selectModel(Long sceneId);
List<HwDevice> getDeviceByModel(Long modelId);
Map getDeviceLocation(Long deviceId);
}

@ -1,10 +1,12 @@
package com.ruoyi.business.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.business.domain.HwDevice;
import com.ruoyi.business.domain.*;
import com.ruoyi.business.domain.VO.*;
import com.ruoyi.common.datascope.annotation.DataScope;
@ -213,4 +215,54 @@ public interface IHwDeviceService {
*/
public List<HwDevice> selectUnallocatedList(HwDevice device);
/**
*
* */
public List<BeaconDevice> selectDeviceLatitudeAndLongitude(Long sceneId);
/**
*
* */
public List<Map<String, Object>> selectBeaconDevicesHistory(Map map);
/**
*
* */
public HwMonitorUnit selectMonitorUnit(Long deviceId);
/**
*
* */
public List<Map<String,Object>> selectHistoryDevice(Map map);
/**
*
* */
public List<TreeDeviceVo> selectComparison();
/**
*
* */
List<Map<String, Object>> getExportDevice(Map map);
/**
*
* */
List<HwMonitorUnit> getDeviceByAreaId(Long tenantId);
/**
* id
* */
List<HwElectronicFence> selectMonitorElectronic(Long deviceId);
/**
* redis
* */
void insertRedis(JSONArray jsonArray,Long tenantId);
JSONObject selectRedisFile(Long tenantId);
/**
* /
* */
List<HwDevice>selectMonitorUnitAndDeviceByName(Map map);
Map getDeviceLocation(Long deviceId);
}

@ -1,16 +1,18 @@
package com.ruoyi.business.service.impl;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
import com.ruoyi.business.domain.HwAlarmType;
import com.ruoyi.business.domain.VO.AlarmInfoExportVo;
import com.ruoyi.business.domain.VO.AlarmTypeVo;
import com.ruoyi.business.mapper.HwAlarmTypeMapper;
import com.ruoyi.common.core.constant.HwDictConstants;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.datascope.annotation.DataScope;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.business.mapper.HwAlarmInfoMapper;
@ -51,6 +53,10 @@ public class HwAlarmInfoServiceImpl implements IHwAlarmInfoService {
@Override
@DataScope(tenantAlias = "hai")
public List<HwAlarmInfo> selectHwAlarmInfoList(HwAlarmInfo hwAlarmInfo) {
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser();
Long tenantId = sysUser.getTenantId();
hwAlarmInfo.setTenantId(tenantId);
return hwAlarmInfoMapper.selectHwAlarmInfoList(hwAlarmInfo);
}
@ -76,7 +82,14 @@ public class HwAlarmInfoServiceImpl implements IHwAlarmInfoService {
public int updateHwAlarmInfo(HwAlarmInfo hwAlarmInfo) {
hwAlarmInfo.setUpdateTime(DateUtils.getNowDate());
hwAlarmInfo.setHandleStatus(HwDictConstants.ALARM_HANDLE_STATUS_YES);
return hwAlarmInfoMapper.updateHwAlarmInfo(hwAlarmInfo);
if (hwAlarmInfo.getIfDisposalAll().equals("0")){
return hwAlarmInfoMapper.updateHwAlarmInfo(hwAlarmInfo);
}
else {
return hwAlarmInfoMapper.updateHwAlarmInfoAllByDevice(hwAlarmInfo);
}
}
/**
@ -142,4 +155,25 @@ public class HwAlarmInfoServiceImpl implements IHwAlarmInfoService {
}
return list;
}
@Override
public List<AlarmInfoExportVo> selectAlarmInfoExport(Date startTime, Date endTime) {
return hwAlarmInfoMapper.selectAlarmInfoExport(startTime,endTime);
}
@Override
public List<AlarmInfoExportVo> selectAlarmInfoExport1(Long monitorUnitId,Date startTime, Date endTime) {
return hwAlarmInfoMapper.selectAlarmInfoExport1(monitorUnitId,startTime,endTime);
}
@Override
public List<Long> selectUnitId() {
return hwAlarmInfoMapper.selectUnitId();
}
/* int updateHwAlarmInformation(HwAlarmInfo hwAlarmInformation);*/
@Override
public int updateHwAlarmInformation(HwAlarmInfo hwAlarmInformation) {
return hwAlarmInfoMapper.updateHwAlarmInformation(hwAlarmInformation);
}
}

@ -3,6 +3,7 @@ package com.ruoyi.business.service.impl;
import com.ruoyi.business.domain.HwAlarmInfo;
import com.ruoyi.business.domain.HwAlarmRule;
import com.ruoyi.business.domain.HwAlarmRuleLink;
import com.ruoyi.business.domain.HwDeviceMode;
import com.ruoyi.business.mapper.HwAlarmInfoMapper;
import com.ruoyi.business.mapper.HwAlarmRuleMapper;
import com.ruoyi.business.service.IHwAlarmRuleService;
@ -12,6 +13,8 @@ import com.ruoyi.common.core.utils.RegexUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.datascope.annotation.DataScope;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -40,7 +43,17 @@ public class HwAlarmRuleServiceImpl implements IHwAlarmRuleService {
*/
@Override
public HwAlarmRule selectHwAlarmRuleByAlarmRuleId(Long alarmRuleId) {
HwAlarmRule alarmRule = hwAlarmRuleMapper.selectHwAlarmRuleByAlarmRuleId(alarmRuleId);
List<HwAlarmRule> alarmRules = hwAlarmRuleMapper.selectHwAlarmRuleByAlarmRuleId(alarmRuleId);
ArrayList<Long> ruleDeviceIds = new ArrayList<>();
for (HwAlarmRule rule : alarmRules) {
ruleDeviceIds.add(rule.getRuleDeviceId());
}
HwDeviceMode hwDeviceMode = hwAlarmRuleMapper.selectModeByDeviceId(ruleDeviceIds.get(0));
HwAlarmRule alarmRule = alarmRules.get(0);
alarmRule.setRuleDeviceIds(ruleDeviceIds);
alarmRule.setDeviceModeId(hwDeviceMode.getDeviceModeId());
alarmRule.setDeviceModeName(alarmRule.getDeviceModeName());
// HwAlarmRule alarmRule = hwAlarmRuleMapper.selectHwAlarmRuleByAlarmRuleId(alarmRuleId);
String triggerExpression = alarmRule.getTriggerExpression();
String triggerCondition = "";
if (triggerExpression.indexOf("and") > 0) {
@ -105,7 +118,12 @@ public class HwAlarmRuleServiceImpl implements IHwAlarmRuleService {
@DataScope(tenantAlias = "har")
public List<HwAlarmRule> selectHwAlarmRuleJoinList(HwAlarmRule hwAlarmRule) {
hwAlarmRule.setRuleType(HwDictConstants.ALARM_RULE_RULE_TYPE_DEVICE);
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser();
Long tenantId = sysUser.getTenantId();
hwAlarmRule.setTenantId(tenantId);
return hwAlarmRuleMapper.selectHwAlarmRuleJoinList(hwAlarmRule);
}
/**
@ -117,14 +135,22 @@ public class HwAlarmRuleServiceImpl implements IHwAlarmRuleService {
@Transactional
@Override
public int insertHwAlarmRule(HwAlarmRule hwAlarmRule) {
String triggerExpression = this.getTriggerExpression(hwAlarmRule);
hwAlarmRule.setTriggerExpression(triggerExpression);
hwAlarmRule.setAlarmPushFlag(HwDictConstants.ALARM_PUSH_FLAG_NO);
hwAlarmRule.setCreateTime(DateUtils.getNowDate());
hwAlarmRule.setTenantId(SecurityUtils.getTenantId());
hwAlarmRule.setCreateBy(SecurityUtils.getUsername());
int rows = hwAlarmRuleMapper.insertHwAlarmRule(hwAlarmRule);
insertHwAlarmRuleLink(hwAlarmRule);
List<Long> ruleDeviceIds = hwAlarmRule.getRuleDeviceIds();
int rows = 0;
for (Long ruleDeviceId : ruleDeviceIds) {
hwAlarmRule.setRuleDeviceId(ruleDeviceId);
String triggerExpression = this.getTriggerExpression(hwAlarmRule);
hwAlarmRule.setTriggerExpression(triggerExpression);
hwAlarmRule.setAlarmPushFlag(HwDictConstants.ALARM_PUSH_FLAG_NO);
hwAlarmRule.setCreateTime(DateUtils.getNowDate());
hwAlarmRule.setTenantId(SecurityUtils.getTenantId());
hwAlarmRule.setCreateBy(SecurityUtils.getUsername());
hwAlarmRule.setAlarmLevelId(hwAlarmRule.getAlarmTypeId());
int rowsAdd = hwAlarmRuleMapper.insertHwAlarmRule(hwAlarmRule);
insertHwAlarmRuleLink(hwAlarmRule);
rows += rowsAdd;
}
return rows;
}
@ -138,25 +164,32 @@ public class HwAlarmRuleServiceImpl implements IHwAlarmRuleService {
@Transactional
@Override
public int updateHwAlarmRule(HwAlarmRule hwAlarmRule) {
hwAlarmRule.setUpdateTime(DateUtils.getNowDate());
hwAlarmRule.setUpdateBy(SecurityUtils.getUsername());
List<Long> ruleDeviceIds = hwAlarmRule.getRuleDeviceIds();
int updateRows = 0;
for (Long ruleDeviceId : ruleDeviceIds) {
hwAlarmRule.setRuleDeviceId(ruleDeviceId);
hwAlarmRule.setUpdateTime(DateUtils.getNowDate());
hwAlarmRule.setUpdateBy(SecurityUtils.getUsername());
HwAlarmInfo queryAlarmInfo = new HwAlarmInfo();
queryAlarmInfo.setAlarmInfoType(HwDictConstants.ALARM_INFO_TYPE_DEVICE);
queryAlarmInfo.setAlarmReleatedId(hwAlarmRule.getAlarmRuleId());
List<HwAlarmInfo> alarmInfos = hwAlarmInfoMapper.selectHwAlarmInfoList(queryAlarmInfo);
if (alarmInfos == null || alarmInfos.isEmpty()) {//没有关联报警信息,才能修改表达式
String triggerExpression = this.getTriggerExpression(hwAlarmRule);
hwAlarmRule.setTriggerExpression(triggerExpression);
} else {
hwAlarmRule.setTriggerExpression(null);
}
HwAlarmInfo queryAlarmInfo = new HwAlarmInfo();
queryAlarmInfo.setAlarmInfoType(HwDictConstants.ALARM_INFO_TYPE_DEVICE);
queryAlarmInfo.setAlarmReleatedId(hwAlarmRule.getAlarmRuleId());
List<HwAlarmInfo> alarmInfos = hwAlarmInfoMapper.selectHwAlarmInfoList(queryAlarmInfo);
if (alarmInfos == null || alarmInfos.isEmpty()) {//没有关联报警信息,才能修改表达式
String triggerExpression = this.getTriggerExpression(hwAlarmRule);
hwAlarmRule.setTriggerExpression(triggerExpression);
} else {
hwAlarmRule.setTriggerExpression(null);
hwAlarmRuleMapper.deleteHwAlarmRuleLinkByAlarmRuleId(hwAlarmRule.getAlarmRuleId());
if (hwAlarmRule.getLinkFlag().equals(HwDictConstants.ALARM_RULE_LINK_FLAG_YES)) {
insertHwAlarmRuleLink(hwAlarmRule);
}
int row = hwAlarmRuleMapper.updateHwAlarmRule(hwAlarmRule);
updateRows += row;
}
hwAlarmRuleMapper.deleteHwAlarmRuleLinkByAlarmRuleId(hwAlarmRule.getAlarmRuleId());
if (hwAlarmRule.getLinkFlag().equals(HwDictConstants.ALARM_RULE_LINK_FLAG_YES)) {
insertHwAlarmRuleLink(hwAlarmRule);
}
return hwAlarmRuleMapper.updateHwAlarmRule(hwAlarmRule);
return updateRows;
}
/**

@ -10,6 +10,8 @@ import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.datascope.annotation.DataScope;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -61,6 +63,10 @@ public class HwAlarmTypeServiceImpl implements IHwAlarmTypeService {
@Override
@DataScope(tenantAlias = "hat")
public List<HwAlarmType> selectHwAlarmTypeJoinList(HwAlarmType hwAlarmType) {
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser();
Long tenantId = sysUser.getTenantId();
hwAlarmType.setTenantId(tenantId);
return hwAlarmTypeMapper.selectHwAlarmTypeJoinList(hwAlarmType);
}

@ -20,8 +20,11 @@ import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.datascope.annotation.DataScope;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.RemoteConfigService;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
import com.ruoyi.tdengine.api.RemoteTdEngineService;
import com.ruoyi.tdengine.api.domain.TdField;
import com.ruoyi.tdengine.api.domain.TdSelectDto;
import com.ruoyi.tdengine.api.domain.TdSuperTableVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -375,6 +378,10 @@ public class HwDeviceModeServiceImpl implements IHwDeviceModeService {
@Override
@DataScope(tenantAlias = "hdm")
public List<HwDeviceMode> selectHwDeviceModeJoinList(HwDeviceMode hwDeviceMode) {
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser();
Long tenantId = sysUser.getTenantId();
hwDeviceMode.setTenantId(tenantId);
return hwDeviceModeMapper.selectHwDeviceModeJoinList(hwDeviceMode);
}
@ -433,6 +440,25 @@ public class HwDeviceModeServiceImpl implements IHwDeviceModeService {
return deviceMode;
}
@Override
public List<HwDeviceMode> selectModel(Long sceneId) {
return hwDeviceModeMapper.selectModel(sceneId);
}
@Override
public List<HwDevice> getDeviceByModel(Long modelId) {
System.out.println(hwDeviceMapper.getDeviceByModel(modelId));
return hwDeviceMapper.getDeviceByModel(modelId);
}
public Map getDeviceLocation(Long deviceId) {
TdSelectDto tdSelectDto = new TdSelectDto();
tdSelectDto.setDatabaseName("db_hwsaas");
tdSelectDto.setTableName("t_device_"+deviceId);
R<Map<String, Object>> deviceLocation = remoteTdEngineService.getDeviceLocation(tdSelectDto, SecurityConstants.FROM_SOURCE);
Map<String, Object> data = deviceLocation.getData();
return data;
}
/**
* @param: hwDeviceModeFunction

@ -3,10 +3,12 @@ package com.ruoyi.business.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.Feature;
import com.ruoyi.business.domain.*;
import com.ruoyi.business.domain.VO.*;
import com.ruoyi.business.mapper.*;
import com.ruoyi.business.service.IHwDeviceService;
import com.ruoyi.business.utils.GpsCoordinateUtils;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.constant.HwDictConstants;
import com.ruoyi.common.core.constant.SecurityConstants;
@ -19,17 +21,30 @@ import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.NumberUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.datascope.annotation.DataScope;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
import com.ruoyi.tdengine.api.RemoteTdEngineService;
import com.ruoyi.tdengine.api.domain.*;
import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.data.redis.cache.RedisCache;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import sun.reflect.generics.tree.Tree;
import javax.annotation.Resource;
import java.io.File;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@ -56,7 +71,14 @@ public class HwDeviceServiceImpl implements IHwDeviceService {
private StringRedisTemplate redisTemplate;
@Autowired
private HwAlarmInfoMapper hwAlarmInfoMapper;
@Autowired
private HwElectronicFenceMapper hwElectronicFenceMapper;
@Autowired
private RedisService redisService;
@Autowired
private HwFenceAreaMapper hwFenceAreaMapper;
public static final String SEPARATOR_UNDERLINE = "_";
public static final String SEPARATOR_COMMA = ",";
/**
*
*
@ -65,7 +87,6 @@ public class HwDeviceServiceImpl implements IHwDeviceService {
*/
@Override
public HwDevice selectHwDeviceByDeviceId(Long deviceId) {
return hwDeviceMapper.selectHwDeviceByDeviceId(deviceId);
}
@ -97,6 +118,10 @@ public class HwDeviceServiceImpl implements IHwDeviceService {
// @DataScope(tenantAlias = "hd")
//todo 去掉上面注释
public List<HwDevice> selectHwDeviceList(HwDevice hwDevice) {
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser();
Long tenantId = sysUser.getTenantId();
hwDevice.setTenantId(tenantId);
return hwDeviceMapper.selectHwDeviceList(hwDevice);
}
@ -273,7 +298,10 @@ public class HwDeviceServiceImpl implements IHwDeviceService {
*/
@Override
public List<DeviceModeVo> selectDeviceModeNameVo() {
List<DeviceModeVo> list = hwDeviceMapper.selectDeviceModeNameVo();
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser();
Long tenantId = sysUser.getTenantId();
List<DeviceModeVo> list = hwDeviceMapper.selectDeviceModeNameVo(tenantId);
Integer value = 0;
if (list.size() > 10) {
for (int i = 9; i < list.size(); i++) {
@ -336,7 +364,7 @@ public class HwDeviceServiceImpl implements IHwDeviceService {
@Override
public int changeDeviceStatus(HwDevice hwDevice) {
HwDevice dbDevice = hwDeviceMapper.selectHwDeviceByDeviceId(hwDevice.getDeviceId());
if (dbDevice.getDeviceStatus().equals(HwDictConstants.DEVICE_STATUS_PUBLISH)) {
if (dbDevice.getDeviceStatus().equals(HwDictConstants.DEVICE_STATUS_PUBLISH) && !hwDevice.getDeviceStatus().equals("0")) {
throw new ServiceException("已发布状态不能修改");
}
hwDevice.setUpdateBy(SecurityUtils.getUsername());
@ -409,6 +437,27 @@ public class HwDeviceServiceImpl implements IHwDeviceService {
String databaseName = TdEngineConstants.getDatabaseName();
List<HwDevice> hwDevices = hwDeviceMapper.selectHwDeviceListByMonitor(queryHwDevice);
/* 获取该监控单元节点下的所有子孙节点的设备 */
//获取所有监控单元
List<HwMonitorUnit> hwMonitorUnits = hwMonitorUnitMapper.selectHwMonitorUnitList(new HwMonitorUnit());
Long targetNodeId = queryHwDevice.getMonitorUnitId();//目标节点,即父节点ID
//TODOzangch2024.10.16在hwDevices拼接子孙节点的设备列表数据库样本少未完全验证性能和有效性
//调用递归方法
List<HwMonitorUnit> descendants = getAllHwMonitorUnits(hwMonitorUnits,targetNodeId);
// 遍历所有监控单元
for (HwMonitorUnit hwMonitorUnit : descendants){
// 创建设备对象
HwDevice hwMonitorUnitDevice = new HwDevice();
// 设置监控单元ID
hwMonitorUnitDevice.setMonitorUnitId(hwMonitorUnit.getMonitorUnitId());
// 根据监控单元ID查询设备列表
List<HwDevice> hwDevicesByMonitor = hwDeviceMapper.selectHwDeviceListByMonitor(hwMonitorUnitDevice);
// 将查询到的设备列表添加到总列表中
hwDevices.addAll(hwDevicesByMonitor);
}
if (hwDevices.size()>0){
hwDevices.forEach(hwDevice -> {
Long deviceId = hwDevice.getDeviceId();
HwDeviceModeFunction queryDeviceModeFunction = new HwDeviceModeFunction();
@ -490,8 +539,20 @@ public class HwDeviceServiceImpl implements IHwDeviceService {
Set<String> functionIdentifiers = deviceLatestDataMap.keySet();
for (String dataFunctionIdentifier : functionIdentifiers) {
if (functionIndentifierNameMap.get(dataFunctionIdentifier) != null) {
String unit;
if (dataFunctionIdentifier.equals("value1")){
unit = hwDevieModeFunctionMapper.selectUbitByIdAndName("value",hwDevice.getDeviceModeId());
}else {
unit = hwDevieModeFunctionMapper.selectUbitByIdAndName(dataFunctionIdentifier,hwDevice.getDeviceModeId());
}
Object value;
if (unit == null){
value = deviceLatestDataMap.get(dataFunctionIdentifier);
}else {
value = deviceLatestDataMap.get(dataFunctionIdentifier) + unit;
}
ddValueMap.put(functionIndentifierNameMap.get(dataFunctionIdentifier),
deviceLatestDataMap.get(dataFunctionIdentifier));
value);
}
}
});
@ -505,9 +566,17 @@ public class HwDeviceServiceImpl implements IHwDeviceService {
hwDeviceVo.setDevicePic(hwDevice.getDevicePic());
hwDeviceVo.setDeviceType(HwDictConstants.ACQUISITION_DEVICE);
hwDeviceVo.setDeviceDataMap(ddValueMap);
if (deviceLatestDataMapList.size()>0){
String ts = deviceLatestDataMapList.get(0).get("ts").toString();
DateTimeFormatter dateTime = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
ZonedDateTime parse = ZonedDateTime.parse(ts, dateTime);
Date updateTime = Date.from(parse.toInstant());
hwDeviceVo.setUpdateTime(updateTime);
}
acquisitionDeviceVos.add(hwDeviceVo);
});
}
devicesMap.put(HwDictConstants.CONTROL_DEVICE_NAME, controlDeviceVos);
devicesMap.put(HwDictConstants.ACQUISITION_DEVICE_NAME, acquisitionDeviceVos);
@ -515,6 +584,26 @@ public class HwDeviceServiceImpl implements IHwDeviceService {
return devicesMap;
}
//TODOzangch2024.10.16:递归获取所有子孙节点,数据库数据太少没办法验证是否完全有效
/* 根据节点ID获取所有子孙节点*/
private List<HwMonitorUnit> getAllHwMonitorUnits(List<HwMonitorUnit> hwMonitorUnits,Long nodeId){
// 创建一个空的列表,用于存储所有子节点
List<HwMonitorUnit> hwMonitorUnitList = new ArrayList<>();
// 遍历所有节点
for(HwMonitorUnit node :hwMonitorUnits){
// 如果当前节点的父节点ID等于传入的节点ID
if (node.getParentId().equals(nodeId)){
// 当前节点是直接子节点,加入结果集并继续寻找其子孙节点
hwMonitorUnitList.add(node);
// 递归调用方法,获取当前节点的所有子孙节点
hwMonitorUnitList.addAll(getAllHwMonitorUnits(hwMonitorUnits, node.getMonitorUnitId()));
}
}
// 返回所有子节点
return hwMonitorUnitList;
}
/**
* ,join
*
@ -524,6 +613,10 @@ public class HwDeviceServiceImpl implements IHwDeviceService {
@Override
@DataScope(tenantAlias = "hd")
public List<HwDevice> selectHwDeviceJoinList(HwDevice hwDevice) {
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser();
Long tenantId = sysUser.getTenantId();
hwDevice.setTenantId(tenantId);
return hwDeviceMapper.selectHwDeviceJoinList(hwDevice);
}
@ -1124,4 +1217,504 @@ public class HwDeviceServiceImpl implements IHwDeviceService {
return hwDeviceMapper.selectUnallocatedList(device);
}
/**
*
*
* */
@Override
public List<BeaconDevice> selectDeviceLatitudeAndLongitude(Long sceneId) {
//根据场景查询下面的设备
HwDevice device = new HwDevice();
device.setSceneId(sceneId);
List<HwDevice> hwDevices = hwDeviceMapper.selectHwDeviceList(device);
Integer[] integers = hwMonitorUnitMapper.selectBeaconDeviceBySceneId(sceneId);
//调用tde查询每个设备的经纬度
if (integers.length!=0){
TdSelectDto tdSelectDto = new TdSelectDto();
tdSelectDto.setDatabaseName(TdEngineConstants.PLATFORM_DB_NAME);
TdField tdField = new TdField();
tdField.setFieldName("longitude");
TdField tdField1 = new TdField();
tdField1.setFieldName("latitude");
List<TdField> fields = new ArrayList<TdField>();
fields.add(tdField);
fields.add(tdField1);
tdSelectDto.setSchemaFieldValues(fields);
List<BeaconDevice> lists = new ArrayList<BeaconDevice>();
for (int i = 0;i<integers.length;i++){
tdSelectDto.setTableName(TdEngineConstants.DEFAULT_TABLE_NAME_PREFIX+integers[i]);
R<?> latestData = remoteTdEngineService.getLatestData(tdSelectDto, SecurityConstants.INNER);
Object data = latestData.getData();
String s = JSONObject.toJSONString(data);
if (latestData.getCode()!=500){
String substring = s.substring(1, s.length() - 1);
if (!substring.isEmpty()){
Map map = JSONObject.parseObject(substring, Map.class);
if (map.size()>0){
// BeaconDevice beaconDevice = new BeaconDevice();
// beaconDevice.setDeviceId(hwDevices.get(i).getDeviceId());
// beaconDevice.setDeviceName(hwDevices.get(i).getDeviceName());
// beaconDevice.setLatitude(Double.valueOf( map.get("latitude").toString()));
// beaconDevice.setLongitude(Double.valueOf( map.get("longitude").toString()));
// beaconDevice.setRemark(hwDevices.get(i).getRemark());
// beaconDevice.setDeviceLocation(hwDevices.get(i).getDeviceLocation());
// beaconDevice.setDeviceLocation("白银市");
// beaconDevice.setDeviceModeId(hwDevices.get(i).getDeviceModeId());
// beaconDevice.setMonitorUnitName(hwDevices.get(i).getMonitorUnitName());
// //查询是否报警
// Long integer = hwDeviceMapper.selectDeviceIfAlarm(hwDevices.get(i).getDeviceId());
// Long integer1 = hwDeviceMapper.selectDeviceIfAlarmElectronFence(hwDevices.get(i).getDeviceId());
String tableName = tdSelectDto.getTableName();
int underscoreIndex = tableName.lastIndexOf('_');
int deviceId = Integer.parseInt(tableName.substring(underscoreIndex + 1));
Optional<HwDevice> first = hwDevices.stream().filter(x -> x.getDeviceId() == deviceId).findFirst();
HwDevice hwDevice = new HwDevice();
if (first.isPresent()){
hwDevice = first.get();
}else {
continue;
}
// HwDevice hwDevice = hwDevices.stream().filter(x -> x.getDeviceId() == deviceId).findFirst().get();
// if(hwDevice == null){
// continue;
// }
BeaconDevice beaconDevice = new BeaconDevice();
beaconDevice.setDeviceId(hwDevice.getDeviceId());
beaconDevice.setDeviceName(hwDevice.getDeviceName());
beaconDevice.setLatitude(Double.valueOf( map.get("latitude").toString()));
beaconDevice.setLongitude(Double.valueOf( map.get("longitude").toString()));
beaconDevice.setRemark(hwDevice.getRemark());
beaconDevice.setDeviceLocation(hwDevice.getDeviceLocation());
beaconDevice.setDeviceLocation("白银市");
beaconDevice.setDeviceModeId(hwDevice.getDeviceModeId());
beaconDevice.setMonitorUnitName(hwDevice.getMonitorUnitName());
//查询是否报警
Long integer = hwDeviceMapper.selectDeviceIfAlarm(hwDevice.getDeviceId());
Long integer1 = hwDeviceMapper.selectDeviceIfAlarmElectronFence(hwDevice.getDeviceId());
Boolean alarmElectronFence = false;
String ifAlarm = new String();
if (integer>0){
//正常
ifAlarm="1";
}
else {
ifAlarm="0";
}
if (integer1>0){
alarmElectronFence = true;
}
beaconDevice.setIfAlarm(ifAlarm);
beaconDevice.setAlarmElectronFence(alarmElectronFence);
lists.add(beaconDevice);
}
}
}
}
return lists;
}
return null;
}
/**
* id
* */
@Override
public List<Map<String, Object>> selectBeaconDevicesHistory(Map map) {
try{
TdHistorySelectDto tdHistorySelectDto = new TdHistorySelectDto();
tdHistorySelectDto.setDatabaseName(TdEngineConstants.PLATFORM_DB_NAME);
tdHistorySelectDto.setTableName(TdEngineConstants.DEFAULT_TABLE_NAME_PREFIX+map.get("deviceId"));
tdHistorySelectDto.setFirstFieldName(TdEngineConstants.DEFAULT_FIRST_FIELD_NAME);
if (map.get("pageSize")!=null){
tdHistorySelectDto.setLimit(Integer.valueOf(map.get("pageSize").toString()));
}
if (map.get("pageSize")!=null&&map.get("pageNum")!=null){
tdHistorySelectDto.setOffset(Integer.valueOf(map.get("pageSize").toString())*(Integer.valueOf(map.get("pageNum").toString())-1));
}
tdHistorySelectDto.setOrderByFieldName(TdEngineConstants.DEFAULT_FIRST_FIELD_NAME);
tdHistorySelectDto.setSort(TdEngineConstants.DEFAULT_ORDER_BY_MODE);
if (map.containsKey("startTime")&&map.get("startTime")!=null){
tdHistorySelectDto.setStartTime(Timestamp.valueOf(map.get("startTime").toString()).getTime());
}
if (map.containsKey("endTime")&&map.get("endTime")!=null){
tdHistorySelectDto.setEndTime(Timestamp.valueOf(map.get("endTime").toString()).getTime());
}
R<TdReturnDataVo> historyData = remoteTdEngineService.getHistoryData(tdHistorySelectDto, SecurityConstants.INNER);
System.out.println("查询历史数据"+map.get("deviceId"));
List<Map<String, Object>> dataList = historyData.getData().dataList;
for (int i = 0; i < dataList.size(); i++){
dataList.get(i).put("deviceId",map.get("deviceId"));
}
int count = historyData.getData().count;
Map<String, Object> map1 = new HashMap<>();
map1.put("total",count);
dataList.add(map1);
return dataList;
}catch (Exception ex){
return null;
}
}
/**
* id
* */
@Override
public HwMonitorUnit selectMonitorUnit(Long deviceId) {
HwMonitorUnit hwMonitorUnit = hwMonitorUnitMapper.selectMonitorUnit(deviceId);
return hwMonitorUnit;
}
/**
*
* */
@Override
public List<Map<String, Object>> selectHistoryDevice(Map map) {
//1-趋势分析 2历史数据
//如果是趋势分析就删除分页
Long pageSize = 0l;
if (map.get("type")!=null){
if (map.get("type").toString().equals("1")){
map.remove("pageSize");
map.remove("pageNum");
}
else {
pageSize = Long.valueOf(map.get("pageSize").toString());
}
}
String deviceIds = map.get("deviceIds").toString();
String[] str = deviceIds.split(",");
map.replace("pageSize",pageSize/str.length);
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Long total = 0l;
for (int i = 0; i < str.length; i++) {
map.put("deviceId",str[i]);
if (i== str.length-2){
map.replace("pageSize",pageSize%str.length);
}
if (map.get("prop")!=null){
//查询类型的字段名
String s = hwDeviceMapper.selectPropBydeviceIdAndFunctionName(Long.valueOf(map.get("deviceId").toString())
, map.get("prop").toString());
map.put("functionIdentifier",s);
}
List<Map<String, Object>> list1 = this.selectBeaconDevicesHistory(map);
total = total+Long.valueOf(list1.get(list1.size()-1).get("total").toString());
list1.remove(list1.size()-1);
List<Map<String, Object>> list2 = new ArrayList<Map<String, Object>>();
//在弹出框中进行对比时,对历史数据进行过滤,根据传入的传感器类型
if (map.get("functionIdentifier")!=null) {
for (int x = 0; x < list1.size(); x++) {
//查看数据中是否拥有所需要的数据,没有进入下一循环
if (list1.get(i).get(map.get("functionIdentifier").toString())==null){
continue;
}
Map<String, Object> map2 = new HashMap<String, Object>();
//获取出需要的数据存入返回值中
map2.put("deviceId", list1.get(x).get("deviceId"));
map2.put("ts", list1.get(x).get("ts"));
map2.put("deviceName", list1.get(x).get("deviceName"));
map2.put("functionName", map.get("prop"));
map2.put("functionIdentifier",
list1.get(x).get(map.get("functionIdentifier").toString()));
list.add(map2);
}
}
else {
list.addAll(list1);
}
}
Long modeId = hwDeviceMapper.selectModeIdByDeviceId(deviceIds);
Map<String, Object> mapName = new HashMap<String, Object>();
if (list.size()>0){
Set<String> strings = list.get(0).keySet();
List<String> list2 = new ArrayList<String>();
list2.addAll(strings);
for (int i = 0; i < list2.size(); i++) {
//查询类型的字段名
String s = hwDeviceMapper.selectFunctionNameByFunctionIdentifier(list2.get(i),modeId);
mapName.put(list2.get(i),s);
}
list.add(mapName);
}
if (map.get("type")!=null&&map.get("type").equals("1") ){
for (int i = 0; i < list.size(); i++) {
if (list.get(i).containsKey("valid")){
list.get(i).remove("valid");
}
if (list.get(i).containsKey("acc")){
list.get(i).remove("acc");
}
if (list.get(i).containsKey("version")){
list.get(i).remove("version");
}
if (list.get(i).containsKey("speed")){
list.get(i).remove("speed");
}
}
}
Map<String, Object> mapTotal = new HashMap<String, Object>();
mapTotal.put("total", total);
list.add(mapTotal);
return list;
}
/**
*
* */
@Override
public List<TreeDeviceVo> selectComparison() {
List<TreeDeviceVo> sceneMap = hwSceneMapper.selectHwSceneListReturnMap();
List<TreeDeviceVo> unitMap = hwMonitorUnitMapper.selectMonitorUnitReturnMap();
List<TreeDeviceVo> deviceMap = hwDeviceMapper.selectDeviceList();
for (int i = 0; i < unitMap.size(); i++) {
List<TreeDeviceVo> list = new ArrayList<TreeDeviceVo>();
for (int j = 0; j < deviceMap.size(); j++) {
if (unitMap.get(i).getVoId().longValue() == deviceMap.get(j).getParentId().longValue()) {
list.add(deviceMap.get(j));
}
}
unitMap.get(i).setVoList(list);
}
for (int i = 0; i < sceneMap.size(); i++) {
List<TreeDeviceVo> list = new ArrayList<TreeDeviceVo>();
for (int j = 0; j < unitMap.size(); j++) {
if (sceneMap.get(i).getVoId().equals(unitMap.get(j).getParentId())) {
list.add(unitMap.get(j));
}
}
sceneMap.get(i).setVoList(list);
}
return sceneMap;
}
/**
* excel
* */
@Override
public List<Map<String, Object>> getExportDevice(Map map) {
map.remove("pageSize");
map.remove("pageNum");
String deviceIds = map.get("deviceIds").toString();
String[] str = deviceIds.split(",");
List<Map<String, Object>> exportList = new ArrayList<Map<String, Object>>();
for (int i = 0; i < str.length; i++) {
map.put("deviceId",str[i]);
List<Map<String, Object>> list1 = this.selectBeaconDevicesHistory(map);
list1.remove(list1.size()-1);
exportList.addAll(list1);
}
return exportList;
}
/**
*
* */
@Override
public List<HwMonitorUnit> getDeviceByAreaId(Long tenantId) {
//如果是管理员,则不对租户进行过滤,即可以看到城市下所有租户的设备信息
if (tenantId==1l)
{
tenantId = null;
}
/**
*
*id
*
* */
HwMonitorUnit hwMonitorUnit = new HwMonitorUnit();
hwMonitorUnit.setTenantId(tenantId);
List<HwMonitorUnit> unitList = hwMonitorUnitMapper.selectMonitorUnitListHavAreaId(tenantId);
for (int i = 0; i < unitList.size(); i++){
List<HwDevice> deviceList = this.getDeviceListInMonitorUnit(unitList.get(i).getMonitorUnitId());
unitList.get(i).setDevicesList(deviceList);
}
// List<TreeAreaVo> treeArea1 = hwDeviceMapper.getTreeArea(areaId);
// for (int i=0;i<treeArea1.size();i++){
// TreeAreaVo treeAreaVo = this.AreaRecursion(treeArea1.get(i),tenantId);
// treeArea.add(treeAreaVo);
// }
return unitList;
}
/**
*
* */
@Override
public List<HwElectronicFence> selectMonitorElectronic(Long deviceId) {
List<HwElectronicFence> hwElectronicFences = hwElectronicFenceMapper.selectMonitorElectronic(deviceId);
for (int i = 0; i < hwElectronicFences.size();i++){
HwFenceArea hwFenceArea = new HwFenceArea();
hwFenceArea.setElectronicFenceId(hwElectronicFences.get(i).getElectronicFenceId());
List<HwFenceArea> hwFenceAreaList = hwFenceAreaMapper.selectHwFenceAreaList(hwFenceArea);
// for (HwFenceArea fenceArea : hwFenceAreaList) {
// if (fenceArea.getAreaShapeFlag().equals("1")){
// String[] points = fenceArea.getAreaRange().split("_");
// StringBuilder areaRange = new StringBuilder();
// for (String point : points) {
// areaRange.append(SEPARATOR_UNDERLINE);
// String[] location = point.split(",");
// double longitude = Double.parseDouble(location[0]);
// double latitude = Double.parseDouble(location[1]);
// double[] doubles = GpsCoordinateUtils.calWGS84toGCJ02(latitude, longitude);
// areaRange.append(doubles[1]).append(SEPARATOR_COMMA)
// .append(doubles[0]);
// }
// fenceArea.setAreaRange(areaRange.toString().replaceFirst(SEPARATOR_UNDERLINE, ""));
// }
// if (fenceArea.getAreaShapeFlag().equals("2")){
// String areaRange = fenceArea.getAreaRange();
// String[] points = areaRange.split(",");
// double longitude = Double.parseDouble(points[0]);
// double latitude = Double.parseDouble(points[1]);
// double[] doubles = GpsCoordinateUtils.calWGS84toGCJ02(latitude, longitude);
// fenceArea.setAreaRange(longitude+","+latitude+","+points[2]);
// }
// }
hwElectronicFences.get(i).setHwFenceAreaList(hwFenceAreaList);
}
return hwElectronicFences;
}
//查询监控单元下的信标设备
public List<HwDevice> getDeviceListInMonitorUnit(Long monitorUnitId){
List<HwDevice> deviceListInMonitorUnit = hwDeviceMapper.getDeviceListInMonitorUnit(monitorUnitId);
Map<String, String> map = new HashMap<String, String>();
map.put("pageNum","1");
map.put("pageSize","1");
for (int i=0;i<deviceListInMonitorUnit.size();i++){
map.put("deviceId",deviceListInMonitorUnit.get(i).getDeviceId().toString());
//根据设备id查询该设备是否有报警信息
Long integer = hwDeviceMapper.selectDeviceIfAlarm(Long.valueOf(map.get("deviceId")));
String ifAlarm = new String();
if (integer>0){
//有未处理报警
ifAlarm="1";
}
else {
ifAlarm="0";
}
List<Map<String, Object>> list = this.selectBeaconDevicesHistory(map);
// list.remove(list.size()-1);
System.out.println(list);
for(int j=0;j<list.size();j++){
deviceListInMonitorUnit.get(i).setIfAlarm(ifAlarm);
// System.out.println(list.get(j).get("longitude"));
if (list.get(j).containsKey("longitude")){
System.out.println(deviceListInMonitorUnit.get(j).getDeviceId());
deviceListInMonitorUnit.get(i).setLongitude(Double.valueOf(list.get(j).get("longitude").toString()));
}
if (list.get(j).containsKey("latitude")){
deviceListInMonitorUnit.get(i).setLatitude(Double.valueOf(list.get(j).get("latitude").toString()));
}
}
}
return deviceListInMonitorUnit;
}
/**
* excel
* */
@Override
public void insertRedis(JSONArray jsonArray,Long tenantId){
// redisTemplate.opsForValue().set("test",jsonArray.toJSONString());
if (redisService.hasKey("file"+tenantId)) {
redisService.deleteObject("file"+tenantId);
}
redisService.setCacheObject("file"+tenantId,jsonArray.toJSONString(),99999l, TimeUnit.DAYS);
}
/**
* excel
* */
@Override
public JSONObject selectRedisFile(Long tenantId){
Object o = redisService.getCacheObject("file" + tenantId);
if (o == null){
return null;
}else {
JSONObject array = new JSONObject(true);
array.put("content",o.toString());
String s = o.toString();
String[] split = s.split("},\\{");
String s2 = split[0].substring(1) + "}";
Map<String, Object> map = JSON.parseObject(s2,LinkedHashMap.class, Feature.OrderedField);
Map<Long, String> linkedMap = new LinkedHashMap<Long, String>();
Long along = 1l;
for (String key : map.keySet()){
linkedMap.put(along, key);
along++;
}
array.put("Header",linkedMap);
return array;
}
}
@Override
public Map getDeviceLocation(Long deviceId) {
TdSelectDto tdSelectDto = new TdSelectDto();
tdSelectDto.setDatabaseName("db_hwsaas");
tdSelectDto.setTableName("t_device_"+deviceId);
R<Map<String, Object>> deviceLocation = remoteTdEngineService.getDeviceLocation(tdSelectDto, SecurityConstants.INNER);
Map<String, Object> data = deviceLocation.getData();
return data;
}
/**
*
* */
@Override
public List<HwDevice> selectMonitorUnitAndDeviceByName(Map map) {
String name = map.get("name").toString();
HwMonitorUnit hwMonitorUnit= new HwMonitorUnit();
// System.out.println(name);
hwMonitorUnit.setMonitorUnitName(name);
List<HwMonitorUnit> monitorUnits = hwMonitorUnitMapper.selectHwMonitorUnitList(hwMonitorUnit);
HwDevice hwDevice = new HwDevice();
hwDevice.setDeviceName(name);
List<HwDevice> deviceList = hwDeviceMapper.selectHwDeviceList(hwDevice);
List<Long> stringList = new ArrayList<Long>();
for (int i = 0; i < deviceList.size(); i++){
HwMonitorUnit hwMonitorUnit1 = hwMonitorUnitMapper.selectMonitorUnit(deviceList.get(i).getDeviceId());
monitorUnits.add(hwMonitorUnit1);
}
List<HwMonitorUnit> collect = monitorUnits.stream().collect(Collectors.collectingAndThen(
Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(HwMonitorUnit::getMonitorUnitId))
),ArrayList::new));
List<HwDevice> deviceListReturn = new ArrayList<HwDevice>();
for (int i = 0; i < collect.size(); i++){
deviceListReturn.addAll(this.getDeviceListInMonitorUnit(collect.get(i).getMonitorUnitId()));
}
return deviceListReturn;
}
}

@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import com.ruoyi.business.domain.HwAlarmInfo;
import com.ruoyi.business.domain.HwElectronicFence;
import com.ruoyi.business.domain.HwFenceArea;
import com.ruoyi.business.domain.HwFenceTarget;
import com.ruoyi.business.domain.VO.AlarmInfoVo;
import com.ruoyi.business.domain.VO.ElectronicFenceVo;
import com.ruoyi.business.mapper.HwAlarmInfoMapper;
@ -17,6 +18,8 @@ import com.ruoyi.common.core.constant.HwDictConstants;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.datascope.annotation.DataScope;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -218,7 +221,12 @@ public class HwElectronicFenceServiceImpl implements IHwElectronicFenceService {
hwElectronicFence.setFencePushFlag(HwDictConstants.FENCE_PUSH_FLAG_NO);
hwElectronicFence.setFenceType(HwDictConstants.FENCE_TYPE_SCENE);
hwElectronicFence.setCreateTime(DateUtils.getNowDate());
HwFenceTarget hwFenceTarget = new HwFenceTarget();
int rows = hwElectronicFenceMapper.insertHwElectronicFence(hwElectronicFence);
hwFenceTarget.setElectronicFenceId(hwElectronicFence.getElectronicFenceId());
hwFenceTarget.setTargetId(hwElectronicFence.getDeviceId());
hwFenceTarget.setTargetType("1");
hwFenceTargetMapper.insertHwFenceTarget(hwFenceTarget);
this.batchInsertFenceArea(hwElectronicFence);
return rows;
}
@ -331,6 +339,7 @@ public class HwElectronicFenceServiceImpl implements IHwElectronicFenceService {
public int deleteHwElectronicFenceByElectronicFenceIds(Long[] electronicFenceIds) {
//逻辑删除修改触发状态为9
int rows = hwElectronicFenceMapper.deleteHwElectronicFenceByElectronicFenceIds(electronicFenceIds);
int targetRows = hwFenceTargetMapper.deleteHwFenceTargetByFenceId(electronicFenceIds);
// hwElectronicFenceMapper.deleteHwFenceAreaByElectronicFenceIds(electronicFenceIds);
return rows;
}
@ -356,6 +365,10 @@ public class HwElectronicFenceServiceImpl implements IHwElectronicFenceService {
@Override
@DataScope(tenantAlias = "hef")
public List<HwElectronicFence> selectHwElectronicFenceJoinList(HwElectronicFence hwElectronicFence) {
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser();
Long tenantId = sysUser.getTenantId();
hwElectronicFence.setTenantId(tenantId);
return hwElectronicFenceMapper.selectHwElectronicFenceJoinList(hwElectronicFence);
}

@ -124,6 +124,11 @@ public class HwMonitorPlatformServiceImpl implements IHwMonitorPlatformService {
}
}
deviceDataColumnVos.remove(3);
DeviceDataColumnVo deviceDataColumnVo = deviceDataColumnVos.get(5);
DeviceDataColumnVo deviceDataColumnVo1 = deviceDataColumnVos.get(deviceDataColumnVos.size()-1);
deviceDataColumnVos.set(5,deviceDataColumnVo1);
deviceDataColumnVos.set(deviceDataColumnVos.size()-1,deviceDataColumnVo);
returnObj.put("deviceDataColumns", deviceDataColumnVos);
returnObj.put("latestData", latestDataMaps);
return returnObj;

@ -0,0 +1,116 @@
package com.ruoyi.business.service.impl;
import com.ruoyi.business.domain.HwMonitorUnitAttribute;
import com.ruoyi.business.mapper.HwMonitorUnitAttributeDao;
import com.ruoyi.business.service.HwMonitorUnitAttributeService;
import com.ruoyi.common.security.utils.SecurityUtils;
import org.springframework.stereotype.Service;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
* (HwMonitorUnitAttribute)
*
* @author makejava
* @since 2024-09-04 13:20:34
*/
@Service("hwMonitorUnitAttributeService")
public class HwMonitorUnitAttributeServiceImpl implements HwMonitorUnitAttributeService {
@Resource
private HwMonitorUnitAttributeDao hwMonitorUnitAttributeDao;
/**
* ID
*
* @param attributeId
* @return
*/
@Override
public HwMonitorUnitAttribute queryById(Long attributeId) {
return this.hwMonitorUnitAttributeDao.queryById(attributeId);
}
/**
*
*
* @param hwMonitorUnitAttribute
* @param pageRequest
* @return
*/
@Override
public Page<HwMonitorUnitAttribute> queryByPage(HwMonitorUnitAttribute hwMonitorUnitAttribute, PageRequest pageRequest) {
long total = this.hwMonitorUnitAttributeDao.count(hwMonitorUnitAttribute);
return new PageImpl<>(this.hwMonitorUnitAttributeDao.queryAllByLimit(hwMonitorUnitAttribute, pageRequest), pageRequest, total);
}
/**
*
*
* @param hwMonitorUnitAttribute
* @return
*/
@Override
public HwMonitorUnitAttribute insert(HwMonitorUnitAttribute hwMonitorUnitAttribute) {
this.hwMonitorUnitAttributeDao.insert(hwMonitorUnitAttribute);
return hwMonitorUnitAttribute;
}
/**
*
*
* @param hwMonitorUnitAttribute
* @return
*/
@Override
public HwMonitorUnitAttribute update(HwMonitorUnitAttribute hwMonitorUnitAttribute) {
this.hwMonitorUnitAttributeDao.update(hwMonitorUnitAttribute);
return this.queryById(hwMonitorUnitAttribute.getAttributeId());
}
/**
*
*
* @param attributeId
* @return
*/
@Override
public boolean deleteById(Long attributeId) {
return this.hwMonitorUnitAttributeDao.deleteById(attributeId) > 0;
}
@Override
public int addUnitAttribute(HwMonitorUnitAttribute hwMonitorUnitAttribute) {
hwMonitorUnitAttribute.setCreateBy(SecurityUtils.getUsername());
hwMonitorUnitAttribute.setCreateTime(new Date());
return hwMonitorUnitAttributeDao.insert(hwMonitorUnitAttribute);
}
@Override
public List<HwMonitorUnitAttribute> selectAttributeByUnitId(Long monitorUnitId) {
return hwMonitorUnitAttributeDao.selectAttributeByUnitId(monitorUnitId);
}
@Override
public int updateAttributeByUniitId(HwMonitorUnitAttribute hwMonitorUnitAttribute) {
return hwMonitorUnitAttributeDao.updateAttributeByUniitId(hwMonitorUnitAttribute);
}
@Override
public List<HwMonitorUnitAttribute> selectAttributes(Long aLong) {
return hwMonitorUnitAttributeDao.selectAttributes(aLong);
}
@Override
public int deleteAttributeByUniitId(Long unitId) {
return hwMonitorUnitAttributeDao.deleteAttributeByUniitId(unitId);
}
}

@ -7,6 +7,7 @@ import com.ruoyi.business.domain.VO.*;
import com.ruoyi.business.mapper.HwAlarmInfoMapper;
import com.ruoyi.business.mapper.HwDeviceMapper;
import com.ruoyi.business.mapper.HwElectronicFenceMapper;
import com.ruoyi.business.mapper.HwMonitorUnitMapper;
import com.ruoyi.business.service.IHwMonitorUnitService;
import com.ruoyi.common.core.constant.HwDictConstants;
@ -15,6 +16,9 @@ import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.NumberUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.datascope.annotation.DataScope;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
import com.ruoyi.tdengine.api.RemoteTdEngineService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -71,8 +75,11 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
// Integer value = monitorUnitMap.get(key);
// System.out.println(key+"\t"+value);
// }
List<HwMonitorUnitVo> list = hwMonitorUnitMapper.selectMonitorPercentage();
List<HwMonitorUnitVo> hwScenes = hwMonitorUnitMapper.selectSceneNameById();
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser();
Long tenantId = sysUser.getTenantId();
List<HwMonitorUnitVo> list = hwMonitorUnitMapper.selectMonitorPercentage(tenantId);
List<HwMonitorUnitVo> hwScenes = hwMonitorUnitMapper.selectSceneNameById(tenantId);
list.stream().forEach(l -> {
for (int i = 0; i < hwScenes.size(); i++) {
if (l.getSceneId().equals(hwScenes.get(i).getSceneId())) {
@ -125,13 +132,20 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
//获取总的设备数量与监控单元数量(标准场景使用)
@Override
public AllNumsVo selectAllNums(Long sceneId) {
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser();
Long tenantId = sysUser.getTenantId();
//监控单元数量
Integer monitor = hwMonitorUnitMapper.selectSubSetNums(sceneId) == null ? 0
: hwMonitorUnitMapper.selectSubSetNums(sceneId);
Integer monitor = hwMonitorUnitMapper.selectSubSetNums(tenantId,sceneId) == null ? 0
: hwMonitorUnitMapper.selectSubSetNums(tenantId,sceneId);
//查询设备数量(子设备和直连设备),不包括网关
Integer integer = hwMonitorUnitMapper.selectDeviceNums(sceneId) == null ? 0
: hwMonitorUnitMapper.selectDeviceNums(sceneId);
Integer integer = hwMonitorUnitMapper.selectDeviceNums(sceneId,tenantId) == null ? 0
: hwMonitorUnitMapper.selectDeviceNums(sceneId,tenantId);
//查询信标设备数量
Integer beaconNums = hwMonitorUnitMapper.selectBeaconDeviceNums(sceneId) ==null ? 0
:hwMonitorUnitMapper.selectBeaconDeviceNums(sceneId);
AllNumsVo vo = new AllNumsVo();
vo.setBeaconDeviceSum(beaconNums);
vo.setSubSum(monitor);
vo.setSum(integer);
return vo;
@ -175,10 +189,13 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
AllNumsVo numsVo = selectAllNums(sceneId);
//获取在线设备数量,获取已发布状态子设备并且关联网关为在线的数量以及在线状态发布状态的直连设备数量之和
int onlineDeviceNum = hwDeviceMapper.getOnlineDeviceNum(sceneId);
//查询信标设备数量
Integer beaconNums = hwMonitorUnitMapper.selectBeaconDeviceNums(sceneId) ==null ? 0
:hwMonitorUnitMapper.selectBeaconDeviceNums(sceneId);
SubDeviceSumVo subDeviceSumVo = new SubDeviceSumVo();
subDeviceSumVo.setSubSum(numsVo.getSubSum());//监控单元数量
subDeviceSumVo.setDeviceNum(numsVo.getSum());//设备数量
subDeviceSumVo.setDeviceNum(beaconNums);//信标设备数量
// subDeviceSumVo.setDeviceNum(numsVo.getSum());//设备数量
subDeviceSumVo.setOnlineDeviceNum(onlineDeviceNum);//在线设备数量
return subDeviceSumVo;
@ -421,6 +438,10 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
@DataScope(tenantAlias = "hmu")
public List<HwMonitorUnit> selectHwMonitorUnitJoinList(HwMonitorUnit hwMonitorUnit) {
hwMonitorUnit.setMonitorUnitStatus(HwDictConstants.MONITOR_UNIT_STATUS_NORMAL);
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser();
Long tenantId = sysUser.getTenantId();
hwMonitorUnit.setTenantId(tenantId);
return hwMonitorUnitMapper.selectHwMonitorUnitJoinList(hwMonitorUnit);
}

@ -8,6 +8,9 @@ import com.ruoyi.business.mapper.HwMonitorUnitMapper;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.datascope.annotation.DataScope;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.business.mapper.HwMonitorUnitTypeMapper;
@ -125,6 +128,9 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService {
@Override
@DataScope(tenantAlias = "hmut")
public List<HwMonitorUnitType> selectHwMonitorUnitTypeJoinList(HwMonitorUnitType hwMonitorUnitType) {
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser user = loginUser.getSysUser();
hwMonitorUnitType.setTenantId(user.getTenantId());
return hwMonitorUnitTypeMapper.selectHwMonitorUnitTypeJoinList(hwMonitorUnitType);
}

@ -0,0 +1,34 @@
package com.ruoyi.business.service.impl;
import com.ruoyi.business.domain.HwOfflineRule;
import com.ruoyi.business.mapper.HwOfflineRuleMapper;
import com.ruoyi.business.service.HwOfflineRuleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class HwOfflineRuleServiceImpl implements HwOfflineRuleService {
@Autowired
private HwOfflineRuleMapper hwOfflineRuleMapper;
@Override
public List<HwOfflineRule> selectRuleList(HwOfflineRule hwOfflineRule) {
List<HwOfflineRule> hwOfflineRules = hwOfflineRuleMapper.selectHwOfflineRuleJoinList(hwOfflineRule);
return hwOfflineRules;
}
@Override
public HwOfflineRule selectOfflineRuleById(Long offlineRuleId) {
return hwOfflineRuleMapper.selectOfflineRuleById(offlineRuleId);
}
@Override
public int deleteOfflineRuleById(Long offlineRuleId) {
return hwOfflineRuleMapper.deleteOfflineRuleById(offlineRuleId);
}
@Override
public int addOfflineRule(HwOfflineRule hwOfflineRule) {
return hwOfflineRuleMapper.addOfflineRule(hwOfflineRule);
}
}

@ -249,6 +249,9 @@ public class HwSceneServiceImpl implements IHwSceneService {
* @date 2023-09-26 18:19
*/
private void updateDefaultFlag(HwScene hwScene) {
if (hwScene.getDefaultFlag() == null){
hwScene.setDefaultFlag("0");
}
if (hwScene.getDefaultFlag().equals(HwDictConstants.SCENE_DEFAULT_FLAG_YES)) {
HwScene queryScene = new HwScene();
queryScene.setTenantId(hwScene.getTenantId());

@ -0,0 +1,77 @@
package com.ruoyi.business.utils;
import java.util.LinkedHashMap;
/**
* @author sunnyzyq
* @date 2021/12/17
*/
public class ExcelClassField {
/** 字段名称 */
private String fieldName;
/** 表头名称 */
private String name;
/** 映射关系 */
private LinkedHashMap<String, String> kvMap;
/** 示例值 */
private Object example;
/** 排序 */
private int sort;
/** 是否为注解字段0-否1-是 */
private int hasAnnotation;
public String getFieldName() {
return fieldName;
}
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public LinkedHashMap<String, String> getKvMap() {
return kvMap;
}
public void setKvMap(LinkedHashMap<String, String> kvMap) {
this.kvMap = kvMap;
}
public Object getExample() {
return example;
}
public void setExample(Object example) {
this.example = example;
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
public int getHasAnnotation() {
return hasAnnotation;
}
public void setHasAnnotation(int hasAnnotation) {
this.hasAnnotation = hasAnnotation;
}
}

@ -0,0 +1,28 @@
package com.ruoyi.business.utils;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author sunnyzyq
* @date 2021/12/17
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ExcelExport {
/** 字段名称 */
String value();
/** 导出排序先后: 数字越小越靠前默认按Java类字段顺序导出 */
int sort() default 0;
/** 导出映射格式如0-未知;1-男;2-女 */
String kv() default "";
/** 导出模板示例值(有值的话,直接取该值,不做映射) */
String example() default "";
}

@ -0,0 +1,31 @@
package com.ruoyi.business.utils;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author sunnyzyq
* @date 2021/12/17
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ExcelImport {
/** 字段名称 */
String value();
/** 导出映射格式如0-未知;1-男;2-女 */
String kv() default "";
/** 是否为必填字段(默认为非必填) */
boolean required() default false;
/** 最大长度默认255 */
int maxLength() default 255;
/** 导入唯一性验证(多个字段则取联合验证) */
boolean unique() default false;
}

@ -0,0 +1,89 @@
package com.ruoyi.business.utils;
import com.ruoyi.business.mapper.HwAlarmInfoMapper;
import com.ruoyi.common.core.utils.DateUtils;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.http.HttpServletResponse;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
public class UnitExcelUtils {
@Autowired
private HwAlarmInfoMapper hwAlarmInfoMapper;
public void exportAlarmInfos(HttpServletResponse response, HashMap<String, List<LinkedHashMap>> map) throws IOException {
Workbook bk = new XSSFWorkbook();
for (String aLong : map.keySet()) {
List<LinkedHashMap> list3 = map.get(aLong);
Sheet unitId = bk.createSheet(aLong);
int row = 0;
for (row = 0;row < list3.size();row++){
if (row == 0){
LinkedHashMap map1 = list3.get(row);
ArrayList list1 = new ArrayList<>(map1.keySet());
int size = map1.keySet().size();
int cellIndex = 0;
Row row1 = unitId.createRow(row);
Row row2 = unitId.createRow(1);
for (cellIndex = 0;cellIndex < size;cellIndex++){
String key = list1.get(cellIndex).toString();
row1.createCell(cellIndex).setCellValue(key);
Object value = map1.get(key);
if (value instanceof String){
row2.createCell(cellIndex).setCellValue((String) map1.get(key));
}else if (value instanceof Long){
row2.createCell(cellIndex).setCellValue((Long) map1.get(key));
}else if(value instanceof Date){
row2.createCell(cellIndex).setCellValue((Date) map1.get(key));
}else {
row2.createCell(cellIndex).setCellValue("");
}
}
}else {
LinkedHashMap map1 = list3.get(row);
ArrayList list1 = new ArrayList<>(map1.keySet());
int size = map1.keySet().size();
int cellIndex = 0;
Row row1 = unitId.createRow(row+1);
for (cellIndex = 0;cellIndex < size;cellIndex++){
String key = list1.get(cellIndex).toString();
Object value = map1.get(key);
if (value instanceof String){
row1.createCell(cellIndex).setCellValue((String) map1.get(key));
}else if (value instanceof Long){
row1.createCell(cellIndex).setCellValue((Long) map1.get(key));
}
else if(value instanceof Date){
row1.createCell(cellIndex).setCellValue((Date) map1.get(key));
}
else {
row1.createCell(cellIndex).setCellValue("");
}
}
}
}
}
try {
// FileOutputStream stream = new FileOutputStream("告警信息");
bk.write(response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
bk.close();
}
}

@ -3,7 +3,7 @@ server:
port: 9601
# Spring
spring:
spring:
application:
# 应用名称
name: hw-business
@ -14,10 +14,12 @@ spring:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
server-addr: 175.27.215.92:8848
namespace: jrm_iot_dev
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
server-addr: 175.27.215.92:8848
namespace: jrm_iot_dev
# 配置文件格式
file-extension: yml
# 共享配置

@ -3,7 +3,7 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.business.mapper.HwAlarmInfoMapper">
<resultMap type="HwAlarmInfo" id="HwAlarmInfoResult">
<result property="alarmInfoId" column="alarm_info_id" />
<result property="alarmInfoType" column="alarm_info_type" />
@ -29,6 +29,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="monitorUnitName" column="monitor_unit_name" />
<result property="alarmLevelName" column="alarm_level_name" />
<result property="alarmTypeName" column="alarm_type_name" />
<result property="areaName" column="area_name" />
<result property="monitorUnitTypeName" column="monitor_unit_type_name" />
<result property="deviceName" column="device_name"/>
<result property="areaName" column="area_name"/>
<result property="tenantName" column="tenant_name"/>
<result property="sceneName" column="scene_name"/>
<result property="alarmRuleName" column="alarm_rule_name"/>
<result property="offlineRuleName" column="offline_rule_name"/>
<result property="electronicFenceName" column="electronic_fence_name"/>
<result property="alarmReleatedId" column="alarm_releated_id"/>
</resultMap>
<resultMap type="AlarmTypeVo" id="AlarmTypeVoResult">
@ -41,9 +53,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="alarmCount" column="alarm_count" />
</resultMap>
<resultMap id="AlarmInfoExportVoResult" type="com.ruoyi.business.domain.VO.AlarmInfoExportVo">
<result property="alarmInfoId" column="alarm_info_id" />
<result property="areaName" column="area_name" />
<result property="monitorUnitName" column="monitor_unit_name" />
<result property="alarmLevelName" column="alarm_level_name" />
<result property="alarmTypeName" column="alarm_type_name" />
<result property="alarmTime" column="alarm_time" />
<result property="monitor_unit_id" column="monitor_unit_id" />
<result property="monitor_unit_status" column="monitor_unit_status" />
<result property="monitor_unit_type_name" column="monitor_unit_type_name" />
</resultMap>
<sql id="selectHwAlarmInfoVo">
select hai.alarm_info_id, hai.alarm_info_type, hai.alarm_releated_id, hai.device_id,
/*select hai.alarm_info_id, hai.alarm_info_type, hai.alarm_releated_id, hai.device_id,
hai.monitor_unit_id, hai.tenant_id, hai.scene_id, hai.alarm_level_id,
hai.alarm_type_id, hai.mode_function_id, hai.function_name, hai.function_identifier,
hai.function_value, hai.trigger_status, hai.handle_status, hai.alarm_time,
@ -51,17 +75,68 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
hmu.monitor_unit_name,hal.alarm_level_name,hat.alarm_type_name
from hw_alarm_info hai left join hw_monitor_unit hmu on hai.monitor_unit_id = hmu.monitor_unit_id
left join hw_alarm_level hal on hai.alarm_level_id=hal.alarm_level_id
left join hw_alarm_type hat on hai.alarm_type_id=hat.alarm_type_id
left join hw_alarm_type hat on hai.alarm_type_id=hat.alarm_type_id*/
select hai.alarm_info_id,
hai.alarm_info_type,
hai.alarm_releated_id,
hai.device_id,
hai.monitor_unit_id,
hai.tenant_id,
hai.scene_id,
hai.alarm_level_id,
hai.alarm_type_id,
hai.mode_function_id,
hai.function_name,
hai.function_identifier,
hai.function_value,
hai.trigger_status,
hai.handle_status,
hai.alarm_time,
hai.create_time,
hai.update_by,
hai.update_time,
hai.alarm_info_field,
hmu.monitor_unit_name,
hal.alarm_level_name,
hat.alarm_type_name,
ha.area_name,
hmut.monitor_unit_type_name,
hd.device_name,
ht.tenant_id,
ht.tenant_name as tenant_name,
hs.scene_name as scene_name,
har.alarm_rule_name as alarm_rule_name,
hor.offline_rule_name as offline_rule_name,
hef.electronic_fence_name as electronic_fence_name
from hw_alarm_info hai
left join hw_monitor_unit hmu on hai.monitor_unit_id = hmu.monitor_unit_id
left join hw_alarm_level hal on hai.alarm_level_id = hal.alarm_level_id
left join hw_alarm_type hat on hai.alarm_type_id = hat.alarm_type_id
left join hw_area ha on ha.area_id = hmu.area_id
left join hw_monitor_unit_type hmut on hmu.monitor_unit_type_id = hmut.monitor_unit_type_id
LEFT JOIN hw_fence_area hfa ON hai.fence_area_id = hfa.fence_area_id
LEFT JOIN hw_device hd ON hai.device_id = hd.device_id
LEFT JOIN hw_tenant ht ON hai.tenant_id = ht.tenant_id
LEFT JOIN hw_scene hs ON hai.scene_id = hs.scene_id
LEFT JOIN hw_alarm_rule har ON hai.alarm_releated_id = har.alarm_rule_id
LEFT JOIN hw_offline_rule hor ON hai.alarm_releated_id = hor.offline_rule_id
LEFT JOIN hw_electronic_fence hef ON hai.alarm_releated_id = hef.electronic_fence_id
</sql>
<select id="selectHwAlarmInfoList" parameterType="HwAlarmInfo" resultMap="HwAlarmInfoResult">
<include refid="selectHwAlarmInfoVo"/>
<where>
<where>
hai.handle_status = '0'
<if test="alarmInfoType != null and alarmInfoType != ''"> and alarm_info_type = #{alarmInfoType}</if>
<if test="alarmReleatedId != null "> and alarm_releated_id = #{alarmReleatedId}</if>
<if test="deviceId != null "> and device_id = #{deviceId}</if>
<if test="monitorUnitId != null "> and monitor_unit_id = #{monitorUnitId}</if>
<if test="tenantId != null "> and tenant_id = #{tenantId}</if>
<if test="tenantId != null and tenantId != 1"> and hai.tenant_id = #{tenantId}</if>
<if test="sceneId != null "> and hai.scene_id = #{sceneId}</if>
<if test="alarmLevelId != null "> and alarm_level_id = #{alarmLevelId}</if>
<if test="alarmTypeId != null "> and alarm_type_id = #{alarmTypeId}</if>
@ -73,17 +148,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="handleStatus != null and handleStatus != ''"> and handle_status = #{handleStatus}</if>
<if test="alarmTime != null "> and alarm_time = #{alarmTime}</if>
<if test="alarmInfoField != null and alarmInfoField != ''"> and alarm_info_field = #{alarmInfoField}</if>
<if test="deviceName != null and deviceName != ''"> and hd.device_name = #{deviceName}</if>
<if test="monitorUnitName != null and monitorUnitName != ''"> and hmu.monitor_unit_name = #{monitorUnitName}</if>
<if test="alarmLevelName != null and alarmLevelName != ''"> and hal.alarm_level_name = #{alarmLevelName}</if>
<if test="alarmTypeName != null and alarmTypeName != ''"> and hat.alarm_type_name = #{alarmTypeName}</if>
<if test="areaName != null and areaName != ''"> and ha.area_name = #{areaName}</if>
<if test="monitorUnitTypeName != null and monitorUnitTypeName != ''"> and hmut.monitor_unit_type_name = #{monitorUnitTypeName}</if>
<if test="tenantName != null and tenantName != ''"> and ht.tenant_name = #{tenantName}</if>
<if test="sceneName != null and sceneName != ''"> and hs.scene_name = #{sceneName}</if>
<if test="alarmRuleName != null and alarmRuleName != ''"> and har.alarm_rule_name = #{alarmRuleName}</if>
<if test="electronicFenceName != null and electronicFenceName != ''"> and hef.electronic_fence_name =</if>
<if test="offlineRuleName != null and offlineRuleName != ''"> and hor.offline_rule_name = #{offlineRuleName}</if>
<!-- 租户数据范围过滤 -->
${params.tenantDataScope}
-- ${params.tenantDataScope}
</where>
order by alarm_info_id desc,hal.level_number desc
</select>
<select id="selectHwAlarmInfoByAlarmInfoId" parameterType="Long" resultMap="HwAlarmInfoResult">
<include refid="selectHwAlarmInfoVo"/>
where alarm_info_id = #{alarmInfoId}
</select>
<insert id="insertHwAlarmInfo" parameterType="HwAlarmInfo" useGeneratedKeys="true" keyProperty="alarmInfoId">
insert into hw_alarm_info
<trim prefix="(" suffix=")" suffixOverrides=",">
@ -130,6 +218,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</trim>
</insert>
<update id="updateHwAlarmInfo" parameterType="HwAlarmInfo">
update hw_alarm_info
<trim prefix="SET" suffixOverrides=",">
@ -161,7 +251,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</delete>
<delete id="deleteHwAlarmInfoByAlarmInfoIds" parameterType="String">
delete from hw_alarm_info where alarm_info_id in
delete from hw_alarm_info where alarm_info_id in
<foreach item="alarmInfoId" collection="array" open="(" separator="," close=")">
#{alarmInfoId}
</foreach>
@ -183,5 +273,84 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
exists (select 1 from hw_device hd where hai.device_id=hd.device_id and hd.device_status='1'
and hd.monitor_unit_id=#{monitorUnitId})
</select>
<select id="selectAlarmInfoExport" parameterType="Date" resultMap="AlarmInfoExportVoResult">
select hai.alarm_info_id,
hai.alarm_time,
hmu.monitor_unit_name,
hal.alarm_level_name,
hat.alarm_type_name,
ha.area_name,
hmu.monitor_unit_id,
CASE hmu.monitor_unit_status when 1 then '正常' else '异常' end as monitor_unit_status,
hmu.monitor_unit_type_id,
hmut.monitor_unit_type_name
from hw_alarm_info hai
left join hw_monitor_unit hmu on hai.monitor_unit_id = hmu.monitor_unit_id
left join hw_alarm_level hal on hai.alarm_level_id = hal.alarm_level_id
left join hw_alarm_type hat on hai.alarm_type_id = hat.alarm_type_id
left join hw_area ha on ha.area_id = hmu.area_id
left join hw_monitor_unit_type hmut on hmu.monitor_unit_type_id = hmut.monitor_unit_type_id
where hai.alarm_time between #{startTime} and #{endTime}
</select>
<select id="selectAlarmInfoExport1" resultType="com.ruoyi.business.domain.VO.AlarmInfoExportVo">
select hai.monitor_unit_id,hai.alarm_info_id,
hai.alarm_time,
hmu.monitor_unit_name,
-- hal.alarm_level_name,
hat.alarm_type_name,
ha.area_name,
-- hmu.monitor_unit_id,
CASE hmu.monitor_unit_status when 1 then '正常' else '异常' end as monitor_unit_status,
hmu.monitor_unit_type_id,
hmut.monitor_unit_type_name
from hw_alarm_info hai
left join hw_monitor_unit hmu on hai.monitor_unit_id = hmu.monitor_unit_id
left join hw_alarm_level hal on hai.alarm_level_id = hal.alarm_level_id
left join hw_alarm_type hat on hai.alarm_type_id = hat.alarm_type_id
left join hw_area ha on ha.area_id = hmu.area_id
left join hw_monitor_unit_type hmut on hmu.monitor_unit_type_id = hmut.monitor_unit_type_id
where hai.alarm_time between #{startTime} and #{endTime}
and hai.monitor_unit_id = #{monitorUnitId}
</select>
<select id="selectUnitId" resultType="java.lang.Long">
select distinct monitor_unit_id monitorUnitId from hw_alarm_info
</select>
<update id="updateHwAlarmInfoAllByDevice" parameterType="HwAlarmInfo">
update hw_alarm_info
<trim prefix="SET" suffixOverrides=",">
<if test="handleStatus != null and handleStatus != ''">handle_status = #{handleStatus},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="alarmInfoField != null">alarm_info_field = #{alarmInfoField},</if>
</trim>
where device_id = (select t.device_id from (select device_id from hw_alarm_info hai where alarm_info_id = #{alarmInfoId})t) and handle_status = 0
</update>
</mapper>
<!--int updateHwAlarmInformation(HwAlarmInfo hwAlarmInformation);-->
<update id="updateHwAlarmInformation" parameterType="HwAlarmInfo">
update hw_alarm_info
<trim prefix="SET" suffixOverrides=",">
<if test="alarmInfoType != null and alarmInfoType != ''">alarm_info_type = #{alarmInfoType},</if>
<if test="alarmReleatedId != null">alarm_releated_id = #{alarmReleatedId},</if>
<if test="deviceId != null">device_id = #{deviceId},</if>
<if test="monitorUnitId != null">monitor_unit_id = #{monitorUnitId},</if>
<if test="tenantId != null">tenant_id = #{tenantId},</if>
<if test="sceneId != null">scene_id = #{sceneId},</if>
<if test="alarmLevelId != null">alarm_level_id = #{alarmLevelId},</if>
<if test="alarmTypeId != null">alarm_type_id = #{alarmTypeId},</if>
<if test="modeFunctionId != null">mode_function_id = #{modeFunctionId},</if>
<if test="functionName != null">function_name = #{functionName},</if>
<if test="functionIdentifier != null">function_identifier = #{functionIdentifier},</if>
<if test="functionValue != null">function_value = #{functionValue},</if>
<if test="triggerStatus != null">trigger_status = #{triggerStatus},</if>
<if test="handleStatus != null and handleStatus != ''">handle_status = #{handleStatus},</if>
<if test="alarmTime != null">alarm_time = #{alarmTime},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="alarmInfoField != null">alarm_info_field = #{alarmInfoField},</if>
</trim>
where alarm_info_id = #{alarmInfoId}
</update>
</mapper>

@ -32,6 +32,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="alarmTypeName" column="alarm_type_name" />
<result property="alarmLevelName" column="alarm_level_name" />
<result property="ruleDeviceName" column="device_name" />
<result property="triggerTimeFrame" column="trigger_time_frame"/>
<result property="phoneNumbers" column="phone_numbers"/>
</resultMap>
<resultMap id="HwAlarmRuleHwAlarmRuleLinkResult" type="HwAlarmRule" extends="HwAlarmRuleResult">
@ -52,7 +54,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectHwAlarmRuleVo">
select alarm_rule_id, alarm_rule_name, tenant_id, scene_id, language_code, alarm_level_id, alarm_type_id, rule_type, rule_device_id, rule_function_total, trigger_expression, link_flag, alarm_rule_status, alarm_push_flag, alarm_push_content, alarm_recover_content, remark, create_by, create_time, update_by, update_time, alarm_rule_field from hw_alarm_rule har
select alarm_rule_id, alarm_rule_name, tenant_id, scene_id, language_code, alarm_level_id, alarm_type_id, rule_type, rule_device_id, rule_function_total, trigger_expression, link_flag, alarm_rule_status, alarm_push_flag, alarm_push_content, alarm_recover_content, remark, create_by, create_time, update_by, update_time, alarm_rule_field,trigger_time_frame,phone_numbers from hw_alarm_rule har
</sql>
<select id="selectHwAlarmRuleList" parameterType="HwAlarmRule" resultMap="HwAlarmRuleResult">
@ -112,14 +114,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="alarmRuleField != null and alarmRuleField != ''"> and har.alarm_rule_field = #{alarmRuleField}</if>
<!-- 租户数据范围过滤 -->
${params.tenantDataScope}
-- ${params.tenantDataScope}
</where>
order by har.alarm_rule_id desc
</select>
<select id="selectHwAlarmRuleByAlarmRuleId" parameterType="Long" resultMap="HwAlarmRuleHwAlarmRuleLinkResult">
select a.alarm_rule_id, a.alarm_rule_name, a.tenant_id, a.scene_id, a.language_code, a.alarm_level_id, a.alarm_type_id, a.rule_type, a.rule_device_id, a.rule_function_total, a.trigger_expression, a.link_flag, a.alarm_rule_status, a.alarm_push_flag, a.alarm_push_content, a.alarm_recover_content, a.remark, a.create_by, a.create_time, a.update_by, a.update_time, a.alarm_rule_field,
select a.alarm_rule_id, a.alarm_rule_name, a.tenant_id, a.scene_id, a.language_code, a.alarm_level_id, a.alarm_type_id, a.rule_type, a.rule_device_id, a.rule_function_total, a.trigger_expression, a.link_flag, a.alarm_rule_status, a.alarm_push_flag, a.alarm_push_content, a.alarm_recover_content, a.remark, a.create_by, a.create_time, a.update_by, a.update_time, a.alarm_rule_field,a.trigger_time_frame,a.phone_numbers,
b.rule_link_id as sub_rule_link_id, b.alarm_rule_type as sub_alarm_rule_type, b.alarm_rule_id as sub_alarm_rule_id, b.link_type as sub_link_type, b.link_device_id as sub_link_device_id, b.link_device_function_id as sub_link_device_function_id, b.link_device_function_identifier as sub_link_device_function_identifier, b.link_device_function_data as sub_link_device_function_data, hd.device_name as sub_link_device_name,hdmf.function_name as sub_link_device_mode_function_name
from hw_alarm_rule a
left join hw_alarm_rule_link b on b.alarm_rule_id = a.alarm_rule_id and b.alarm_rule_type=1
@ -127,7 +129,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
left join hw_device_mode_function hdmf on b.link_device_function_id=hdmf.mode_function_id
where a.alarm_rule_id = #{alarmRuleId}
</select>
<select id="selectModeByDeviceId" resultType="com.ruoyi.business.domain.HwDeviceMode"
parameterType="java.lang.Long">
select b.device_mode_id device_mode_id,b.device_mode_name device_mode_name from hw_device a left join hw_device_mode b on a.device_mode_id = b.device_mode_id where a.device_id = #{deviceId}
</select>
<insert id="insertHwAlarmRule" parameterType="HwAlarmRule" useGeneratedKeys="true" keyProperty="alarmRuleId">
insert into hw_alarm_rule
<trim prefix="(" suffix=")" suffixOverrides=",">
@ -152,6 +159,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="alarmRuleField != null">alarm_rule_field,</if>
<if test="triggerTimeFrame != null">trigger_time_frame,</if>
<if test="phoneNumbers != null">phone_numbers,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="alarmRuleName != null and alarmRuleName != ''">#{alarmRuleName},</if>
@ -175,6 +184,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="alarmRuleField != null">#{alarmRuleField},</if>
<if test="triggerTimeFrame != null">#{triggerTimeFrame},</if>
<if test="phoneNumbers != null">#{phoneNumbers},</if>
</trim>
</insert>
@ -202,6 +213,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="alarmRuleField != null">alarm_rule_field = #{alarmRuleField},</if>
<if test="triggerTimeFrame != null">trigger_time_frame = #{triggerTimeFrame},</if>
<if test="phoneNumbers != null">phone_numbers = #{phoneNumbers},</if>
</trim>
where alarm_rule_id = #{alarmRuleId}
</update>

@ -131,7 +131,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="handleMode != null and handleMode != ''"> and hat.handle_mode = #{handleMode}</if>
<if test="typeStatus != null and typeStatus != ''"> and hat.type_status = #{typeStatus}</if>
<!-- 租户数据范围过滤 -->
${params.tenantDataScope}
-- ${params.tenantDataScope}
</where>
order by hat.scene_id,hat.alarm_type_id desc
</select>

@ -39,8 +39,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="tenantName" column="tenant_name" />
<result property="deviceModeName" column="device_mode_name" />
<result property="monitorUnitName" column="monitor_unit_name" />
<result property="functionName" column="function_name" />
</resultMap>
<resultMap id="TreeDeviceVoResult" type="com.ruoyi.business.domain.VO.TreeDeviceVo">
<result property="voId" column="vo_id" />
<result property="voName" column="vo_name" />
<result property="parentId" column="parent_id" />
<result property="prop" column="prop" />
</resultMap>
<resultMap id="TreeAreaVoResult" type="com.ruoyi.business.domain.VO.TreeAreaVo">
<result property="areaId" column="area_id" />
<result property="areaName" column="area_name" />
<!-- <result property="ancestors" column="ancestors" />-->
<!-- <result property="parentId" column="parent_id" />-->
<!-- <result property="areaStatus" column="area_status" />-->
<!-- <result property="orderNum" column="order_num" />-->
</resultMap>
<!--以下为监控平台接口所用-->
<resultMap id="DeviceModeVoResult" type="com.ruoyi.business.domain.VO.DeviceModeVo" >
<result property="deviceModeName" column="device_mode_name"/>
@ -48,10 +62,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="err" column="err"/>
</resultMap>
<select id="selectDeviceModeNameVo" resultMap="DeviceModeVoResult">
SELECT b.device_mode_name ,a.sum FROM hw_device_mode b
LEFT JOIN (SELECT device_mode_id,count(*) as sum FROM hw_device GROUP BY device_mode_id order by sum desc
) a on a.device_mode_id = b.device_mode_id
-- SELECT b.device_mode_name as device_mode_name ,a.sum as sum FROM hw_device_mode b
-- LEFT JOIN (SELECT device_mode_id,count(*) as sum FROM hw_device where device_status !=9 GROUP BY device_mode_id order by sum desc
-- ) a on a.device_mode_id = b.device_mode_id left join hw_scene c on b.scene_id = c.scene_id
select a.device_mode_name,sum(a.sum) sum from (select
b.device_mode_name as device_mode_name ,
a.sum as sum
from
hw_device_mode b
left join (
select
device_mode_id,
count(*) as sum
from
hw_device
where device_status !=9
group by
device_mode_id
order by
sum desc
) a on
a.device_mode_id = b.device_mode_id
left join hw_scene c on
b.scene_id = c.scene_id where b.tenant_id = #{tenantId}) a group by a.device_mode_name
</select>
<select id="selectDeviceByDeviceModeByDeviceModeFunction" parameterType="Long" resultType="String">
select count(*) from hw_device_mode_function where device_mode_id =
@ -62,11 +95,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="selectDeviceNum" parameterType="Long" resultMap="HwDeviceResult" >
<include refid="selectHwDeviceVo"/>
where scene_id = #{sceneId}
where hd.scene_id = #{sceneId}
</select>
<select id="selectDeviceByMonitorId" parameterType="Long" resultMap="HwDeviceResult">
<include refid="selectHwDeviceVo"/>
where monitor_unit_id = #{monitorUnitId}
where hd.monitor_unit_id = #{monitorUnitId}
</select>
<select id="selectDeviceByDeviceModeBySceneId" parameterType="Long" resultMap="HwDeviceResult">
select * from hw_device where device_mode_id = (
@ -79,13 +112,67 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<!--以上为监控平台接口所用-->
<sql id="selectHwDeviceVo">
select device_id, device_code, device_name, scene_id, monitor_unit_id, device_type, networking_mode, access_protocol, data_format, releated_device_id, device_mode_id, access_gw_protocol, active_status, device_status, active_time, device_pic, ip_address, area_id, device_location, current_module_version, current_singlechip_version, remark, create_by, create_time, update_by, update_time, device_field, tenant_id, online_status from hw_device hd
select hd.device_id,
hd.device_code,
hd.device_name,
hd.scene_id,
hd.monitor_unit_id,
hmu.monitor_unit_name,
hd.device_type,
hd.networking_mode,
hd.access_protocol,
hd.data_format,
hd.releated_device_id,
hd.device_mode_id,
hd.access_gw_protocol,
hd.active_status,
hd.device_status,
hd.active_time,
hd.device_pic,
hd.ip_address,
hd.area_id,
hd.device_location,
hd.current_module_version,
hd.current_singlechip_version,
hd.remark,
hd.create_by,
hd.create_time,
hd.update_by,
hd.update_time,
hd.device_field,
hd.tenant_id,
hd.online_status
from hw_device hd
left join hw_monitor_unit hmu on hmu.monitor_unit_id = hd.monitor_unit_id
</sql>
<select id="selectHwDeviceList" parameterType="HwDevice" resultMap="HwDeviceResult">
<include refid="selectHwDeviceVo"/>
<where>
and device_status !='9'
<if test="deviceCode != null and deviceCode != ''"> and hd.device_code like concat('%', #{deviceCode}, '%')</if>
<if test="deviceName != null and deviceName != ''"> and hd.device_name like concat('%', #{deviceName}, '%')</if>
<if test="sceneId != null "> and hd.scene_id = #{sceneId}</if>
<if test="monitorUnitId != null "> and hd.monitor_unit_id = #{monitorUnitId}</if>
<if test="deviceType != null and deviceType != ''"> and hd.device_type = #{deviceType}</if>
<if test="networkingMode != null and networkingMode != ''"> and hd.networking_mode = #{networkingMode}</if>
<if test="accessProtocol != null "> and hd.access_protocol = #{accessProtocol}</if>
<if test="dataFormat != null "> and hd.data_format = #{dataFormat}</if>
<if test="releatedDeviceId != null "> and hd.releated_device_id = #{releatedDeviceId}</if>
<if test="deviceModeId != null "> and hd.device_mode_id = #{deviceModeId}</if>
<if test="accessGwProtocol != null "> and hd.access_gw_protocol = #{accessGwProtocol}</if>
<if test="activeStatus != null and activeStatus != ''"> and hd.active_status = #{activeStatus}</if>
<if test="deviceStatus != null and deviceStatus != ''"> and hd.device_status = #{deviceStatus}</if>
<if test="activeTime != null "> and hd.active_time = #{activeTime}</if>
<if test="devicePic != null and devicePic != ''"> and hd.device_pic = #{devicePic}</if>
<if test="ipAddress != null and ipAddress != ''"> and hd.ip_address = #{ipAddress}</if>
<if test="areaId != null "> and hd.area_id = #{areaId}</if>
<if test="deviceLocation != null and deviceLocation != ''"> and hd.device_location = #{deviceLocation}</if>
<if test="currentModuleVersion != null and currentModuleVersion != ''"> and hd.current_module_version = #{currentModuleVersion}</if>
<if test="currentSinglechipVersion != null and currentSinglechipVersion != ''"> and hd.current_singlechip_version = #{currentSinglechipVersion}</if>
<if test="deviceField != null and deviceField != ''"> and hd.device_field = #{deviceField}</if>
<if test="tenantId != null "> and hd.tenant_id = #{tenantId}</if>
<if test="onlineStatus != null and onlineStatus != ''"> and hd.online_status = #{onlineStatus}</if>
<if test="deviceCode != null and deviceCode != ''"> and device_code like concat('%', #{deviceCode}, '%')</if>
<if test="deviceName != null and deviceName != ''"> and device_name like concat('%', #{deviceName}, '%')</if>
<if test="sceneId != null "> and scene_id = #{sceneId}</if>
@ -111,13 +198,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="onlineStatus != null and onlineStatus != ''"> and online_status = #{onlineStatus}</if>
<if test="deviceTypeStr != null and deviceTypeStr != ''"> and device_type in (${deviceTypeStr})</if>
<!-- 租户数据范围过滤 -->
-- ${params.tenantDataScope}
<!--${params.tenantDataScope}-->
</where>
</select>
<select id="selectHwDeviceByDeviceId" parameterType="Long" resultMap="HwDeviceResult">
<include refid="selectHwDeviceVo"/>
where device_id = #{deviceId}
where hd.device_id = #{deviceId}
</select>
<insert id="insertHwDevice" parameterType="HwDevice" useGeneratedKeys="true" keyProperty="deviceId">
@ -280,7 +368,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="releatedDeviceId != null "> and hd.releated_device_id = #{releatedDeviceId}</if>
<if test="onlineStatus != null and onlineStatus != ''"> and hd.online_status = #{onlineStatus}</if>
<!-- 租户数据范围过滤 -->
${params.tenantDataScope}
-- ${params.tenantDataScope}
</where>
order by hd.device_id desc
</select>
@ -291,7 +379,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectHwDeviceByDeviceCode" parameterType="String" resultMap="HwDeviceResult">
<include refid="selectHwDeviceVo"/>
where device_code = #{deviceCode} limit 1
where hd.device_code = #{deviceCode} limit 1
</select>
@ -314,10 +402,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectHwDeviceListByMonitor" parameterType="HwDevice" resultMap="HwDeviceResult">
<include refid="selectHwDeviceVo"/>
<where>
<if test="sceneId != null "> and scene_id = #{sceneId}</if>
<if test="monitorUnitId != null "> and monitor_unit_id = #{monitorUnitId}</if>
<if test="sceneId != null "> and hd.scene_id = #{sceneId}</if>
<if test="monitorUnitId != null "> and hd.monitor_unit_id = #{monitorUnitId}</if>
and device_status !='9' and (device_type='2' or device_type='3')
and hd.device_status !='9' and (device_type='2' or device_type='3')
<!-- 租户数据范围过滤 -->
${params.tenantDataScope}
</where>
@ -359,5 +447,87 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<!-- 租户数据范围过滤 -->
${params.tenantDataScope}
</select>
<select id="getOnlineDeviceNum1" resultType="java.lang.Integer" parameterType="java.lang.Long">
select count(1) from
(select
b.device_mode_name device_mode_name
from
hw_device hd left join hw_device_mode b on hd.device_mode_id = b.device_mode_id
where
hd.device_status = 1
and ((hd.device_type = 2
and exists (
select
1
from
hw_device hdd
where
hd.releated_device_id = hdd.device_id
and hdd.online_status = 1
and hdd.device_status = 1))
or (hd.device_type = 3
and hd.online_status = 1))
<if test="sceneId != null and sceneId!=0"> and hd.scene_id=#{sceneId}</if>) a where a.device_mode_name = '定位信标'
</select>
<select id="getDeviceByModel" resultType="com.ruoyi.business.domain.HwDevice"
parameterType="java.lang.Long">
select * from hw_device where device_mode_id = #{modeId}
</select>
<select id="selectDeviceList" resultMap="TreeDeviceVoResult">
select hd.device_id as vo_id ,hd.monitor_unit_id as parent_id ,hd.device_name as vo_name ,
group_concat(hdmf.function_name separator',') as prop
from hw_device hd
left join hw_device_mode hdm on hd.device_mode_id = hdm.device_mode_id
left join hw_device_mode_function hdmf on hdm.device_mode_id = hdmf.device_mode_id
where hd.device_status != 9
group by hd.device_id
</select>
<select id="selectPropBydeviceIdAndFunctionName" resultType="String">
select function_identifier from hw_device_mode_function hdmf
where function_name = #{functionName} and device_mode_id = (
select device_mode_id from hw_device hd where device_id = #{deviceModeId})
</select>
<select id="getDeviceByAreaId" parameterType="Long" resultMap="HwDeviceResult">
select * from hw_device hd
<where>
and area_id = #{areaId}
and device_status !=9
<if test="tenantId != null and tenantId != ''"> and tenant_id =#{tenantId}</if>
</where>
</select>
<select id="getTreeArea" parameterType="Long" resultMap="TreeAreaVoResult">
select ha2.area_id as area_id,ha2.area_name as area_name from hw_area ha,hw_area ha2
where ha.area_id = ha2.parent_id and ha.area_id = #{areaId}
</select>
<select id="getDeviceListInMonitorUnit" parameterType="Long" resultMap="HwDeviceResult">
SELECT hd.*, hmu.monitor_unit_name
FROM hw_device hd
LEFT JOIN hw_monitor_unit hmu ON hmu.monitor_unit_id = hd.monitor_unit_id
WHERE hd.device_mode_id IN (
SELECT hdmf.device_mode_id
FROM hw_device_mode_function hdmf
WHERE hdmf.function_identifier = 'latitude'
)
AND hd.device_status != 9
AND hd.monitor_unit_id = #{monitorUnitId}
</select>
<select id="selectFunctionNameByFunctionIdentifier" resultType="String">
select distinct function_name from hw_device_mode_function where function_identifier = #{functionIdentifier} and device_mode_id = #{modeId}
</select>
<select id="selectDeviceIfAlarm" parameterType="Long" resultType="Long">
select count(*) from
(select * from hw_alarm_info where device_id = #{deviceId} and handle_status = 0) as a
</select>
<select id="selectDeviceIfAlarmElectronFence" resultType="java.lang.Long" parameterType="java.lang.Long">
select count(*) from
(select * from hw_alarm_info where device_id = #{deviceId} and handle_status = 0 and alarm_info_type = 4) as a
</select>
<select id="selectModeIdByDeviceId" resultType="java.lang.Long" parameterType="java.lang.String">
select device_mode_id from hw_device where device_id = #{deviceId}
</select>
</mapper>

@ -61,7 +61,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectHwDeviceModeFunctionVo"/>
where mode_function_id = #{modeFunctionId}
</select>
<select id="selectUbitByIdAndName" resultType="java.lang.String">
SELECT x.property_unit property_unit FROM `hwsaas-cloud`.hw_device_mode_function x WHERE function_identifier like concat("%",#{dataFunctionIdentifier},"%") and x.device_mode_id = #{modeId}
</select>
<insert id="insertHwDeviceModeFunction" parameterType="HwDeviceModeFunction" useGeneratedKeys="true" keyProperty="modeFunctionId">
insert into hw_device_mode_function
<trim prefix="(" suffix=")" suffixOverrides=",">

@ -25,6 +25,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="deviceModeField" column="device_mode_field" />
<result property="sceneName" column="scene_name" />
<result property="tenantName" column="tenant_name" />
<result property="deviceModelType" column="device_model_type" />
</resultMap>
<resultMap id="HwDeviceModeHwDeviceModeFunctionResult" type="HwDeviceMode" extends="HwDeviceModeResult">
@ -53,6 +54,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="deviceRegister" column="sub_device_register" />
<result property="propertyStep" column="sub_property_step" />
<result property="propertyField" column="sub_property_field" />
<result property="deviceModelType" column="device_model_type" />
</resultMap>
<resultMap type="HwDeviceModeParameter" id="HwDeviceModeParameterResult">
@ -66,11 +68,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="dataDefinition" column="data_definition" />
<result property="propertyUnit" column="property_unit" />
<result property="propertyStep" column="property_step" />
<result property="deviceModelType" column="device_model_type" />
</resultMap>
<sql id="selectHwDeviceModeVo">
select device_mode_id, device_mode_name, tenant_id, scene_id, language_code, gps_flag, device_mode_status, common_flag, mode_classfication,mode_type, device_mode_pic, data_verify_level, remark, create_by, create_time, update_by, update_time, device_mode_field from hw_device_mode hdm
select device_mode_id, device_mode_name, tenant_id, scene_id, language_code, gps_flag, device_mode_status, common_flag, mode_classfication,mode_type, device_mode_pic, data_verify_level, remark, create_by, create_time, update_by, update_time, device_mode_field,device_model_type from hw_device_mode hdm
</sql>
<sql id="selectHwDeviceModeParameterVo">
@ -93,14 +96,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="dataVerifyLevel != null and dataVerifyLevel != ''"> and data_verify_level = #{dataVerifyLevel}</if>
<if test="deviceModeField != null and deviceModeField != ''"> and device_mode_field = #{deviceModeField}</if>
<!-- 租户数据范围过滤 -->
${params.tenantDataScope}
-- ${params.tenantDataScope}
</where>
order by device_mode_id desc
</select>
<select id="selectHwDeviceModeByDeviceModeId" parameterType="Long" resultMap="HwDeviceModeHwDeviceModeFunctionResult">
select a.device_mode_id, a.device_mode_name, a.tenant_id, a.scene_id, a.language_code, a.gps_flag, a.device_mode_status, a.common_flag, a.mode_classfication, a.device_mode_pic, a.data_verify_level, a.remark, a.create_by, a.create_time, a.update_by, a.update_time, a.device_mode_field,
b.mode_function_id as sub_mode_function_id, b.device_mode_id as sub_device_mode_id, b.function_mode as sub_function_mode, b.coordinate as sub_coordinate, b.function_name as sub_function_name, b.function_identifier as sub_function_identifier, b.function_type as sub_function_type, b.data_type as sub_data_type, b.data_definition as sub_data_definition, b.function_formula as sub_function_formula, b.property_unit as sub_property_unit, b.display_flag as sub_display_flag, b.rw_flag as sub_rw_flag, b.invoke_method as sub_invoke_method, b.event_type as sub_event_type, b.remark as sub_remark, b.acquisition_formula as sub_acquisition_formula, b.order_flag as sub_order_flag, b.device_register as sub_device_register, b.property_step as sub_property_step, b.property_field as sub_property_field
b.mode_function_id as sub_mode_function_id, a.device_model_type,b.device_mode_id as sub_device_mode_id, b.function_mode as sub_function_mode, b.coordinate as sub_coordinate, b.function_name as sub_function_name, b.function_identifier as sub_function_identifier, b.function_type as sub_function_type, b.data_type as sub_data_type, b.data_definition as sub_data_definition, b.function_formula as sub_function_formula, b.property_unit as sub_property_unit, b.display_flag as sub_display_flag, b.rw_flag as sub_rw_flag, b.invoke_method as sub_invoke_method, b.event_type as sub_event_type, b.remark as sub_remark, b.acquisition_formula as sub_acquisition_formula, b.order_flag as sub_order_flag, b.device_register as sub_device_register, b.property_step as sub_property_step, b.property_field as sub_property_field
from hw_device_mode a
left join hw_device_mode_function b on b.device_mode_id = a.device_mode_id
where a.device_mode_id = #{deviceModeId}
@ -126,6 +129,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="deviceModeField != null">device_mode_field,</if>
<if test="deviceModelType != null">device_model_type,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="deviceModeName != null and deviceModeName != ''">#{deviceModeName},</if>
@ -145,6 +149,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="deviceModeField != null">#{deviceModeField},</if>
<if test="deviceModelType != null">#{deviceModelType},</if>
</trim>
</insert>
@ -168,6 +173,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="deviceModeField != null">device_mode_field = #{deviceModeField},</if>
<if test="deviceModelType != null">device_model_type = #{deviceModelType},</if>
</trim>
where device_mode_id = #{deviceModeId}
</update>
@ -300,7 +306,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectHwDeviceModeJoinList" parameterType="HwDeviceMode" resultMap="HwDeviceModeResult">
select hdm.device_mode_id,hdm.device_mode_name,hdm.gps_flag,hdm.mode_classfication,
hs.scene_name,ht.tenant_name,hdm.tenant_id,hdm.scene_id,hdm.common_flag,hdm.device_mode_status,hdm.device_mode_pic
hs.scene_name,ht.tenant_name,hdm.tenant_id,hdm.scene_id,hdm.common_flag,hdm.device_mode_status,hdm.device_mode_pic,hdm.device_model_type
from hw_device_mode hdm
left join hw_scene hs on hdm.scene_id = hs.scene_id
left join hw_tenant ht on hdm.tenant_id=ht.tenant_id
@ -317,10 +323,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="dataVerifyLevel != null and dataVerifyLevel != ''"> and hdm.data_verify_level = #{dataVerifyLevel}</if>
<if test="deviceModeField != null and deviceModeField != ''"> and hdm.device_mode_field = #{deviceModeField}</if>
<!-- 租户数据范围过滤 -->
${params.tenantDataScope}
-- ${params.tenantDataScope}
</where>
order by hdm.device_mode_id desc
</select>
<select id="selectModel" parameterType="java.lang.Long">
select * from hw_device_mode where scene_id = #{sceneId}
</select>
</mapper>

@ -3,7 +3,7 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.business.mapper.HwElectronicFenceMapper">
<resultMap type="HwElectronicFence" id="HwElectronicFenceResult">
<result property="electronicFenceId" column="electronic_fence_id" />
<result property="electronicFenceName" column="electronic_fence_name" />
@ -41,64 +41,93 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectHwElectronicFenceVo">
select hwf.electronic_fence_id,
hwf.electronic_fence_name,
hwf.tenant_id,
hwf.scene_id,
hwf.fence_type,
hwf.effective_time_flag,
hwf.time_zone,
hwf.effective_time,
hwf.trigger_status,
hwf.fence_push_flag,
hwf.fence_push_content,
hwf.fence_recover_content,
hwf.remark,
hwf.create_by,
hwf.create_time,
hwf.update_by,
hwf.update_time,
hwf.fence_field,
select hef.electronic_fence_id,
hef.electronic_fence_name,
hef.tenant_id,
hef.scene_id,
hef.fence_type,
hef.effective_time_flag,
hef.time_zone,
hef.effective_time,
hef.trigger_status,
hef.fence_push_flag,
hef.fence_push_content,
hef.fence_recover_content,
hef.remark,
hef.create_by,
hef.create_time,
hef.update_by,
hef.update_time,
hef.fence_field,
hdm.device_mode_name,
hd.device_name,
hwf.device_mode_id,
hwf.device_id
from hw_electronic_fence hwf
left join hw_device_model hdm on hdm.device_mode_id = hwf.device_mode_id
left join hw_device hd on hd.device_id = hwf.device_id
hef.device_mode_id,
hef.device_id,
hs.scene_name
from hw_electronic_fence hef
left join hw_device_mode hdm on hdm.device_mode_id = hef.device_mode_id
left join hw_device hd on hd.device_id = hef.device_id
left join hw_scene hs on hs.scene_id = hef.scene_id
</sql>
<select id="selectHwElectronicFenceList" parameterType="HwElectronicFence" resultMap="HwElectronicFenceResult">
<include refid="selectHwElectronicFenceVo"/>
<where>
trigger_status !='9'
<if test="electronicFenceName != null and electronicFenceName != ''"> and electronic_fence_name like concat('%', #{electronicFenceName}, '%')</if>
<if test="tenantId != null "> and hwf.tenant_id = #{tenantId}</if>
<if test="sceneId != null "> and hwf.scene_id = #{sceneId}</if>
<if test="fenceType != null and fenceType != ''"> and hwf.fence_type = #{fenceType}</if>
<if test="effectiveTimeFlag != null and effectiveTimeFlag != ''"> and hwf.effective_time_flag = #{effectiveTimeFlag}</if>
<if test="timeZone != null and timeZone != ''"> and hwf.time_zone = #{timeZone}</if>
<if test="effectiveTime != null and effectiveTime != ''"> and hwf.effective_time = #{effectiveTime}</if>
<if test="triggerStatus != null and triggerStatus != ''"> and hwf.trigger_status = #{triggerStatus}</if>
<if test="fencePushFlag != null and fencePushFlag != ''"> and hwf.fence_push_flag = #{fencePushFlag}</if>
<if test="fencePushContent != null and fencePushContent != ''"> and hwf.fence_push_content = #{fencePushContent}</if>
<if test="fenceRecoverContent != null and fenceRecoverContent != ''"> and hwf.fence_recover_content = #{fenceRecoverContent}</if>
<if test="fenceField != null and fenceField != ''"> and hwf.fence_field = #{fenceField}</if>
<if test="deviceModeName != null and deviceModeName != ''"> and hdm.device_mode_name = #{deviceModeName}</if>
<if test="deviceName != null and deviceName != ''"> and hd.device_name = #{deviceName}</if>
<if test="deviceModeId != null "> and hwf.device_mode_id = #{deviceModeId}</if>
<if test="deviceId != null "> and hwf.device_id = #{deviceId}</if>
<if test="electronicFenceName != null and electronicFenceName != ''"> and hef.electronic_fence_name like concat('%', #{electronicFenceName}, '%')</if>
<if test="tenantId != null "> and hef.tenant_id = #{tenantId}</if>
<if test="sceneId != null "> and hef.scene_id = #{sceneId}</if>
<if test="fenceType != null and fenceType != ''"> and hef.fence_type = #{fenceType}</if>
<if test="effectiveTimeFlag != null and effectiveTimeFlag != ''"> and hef.effective_time_flag = #{effectiveTimeFlag}</if>
<if test="timeZone != null and timeZone != ''"> and hef.time_zone = #{timeZone}</if>
<if test="effectiveTime != null and effectiveTime != ''"> and hef.effective_time = #{effectiveTime}</if>
<if test="triggerStatus != null and triggerStatus != ''"> and hef.trigger_status = #{triggerStatus}</if>
<if test="fencePushFlag != null and fencePushFlag != ''"> and hef.fence_push_flag = #{fencePushFlag}</if>
<if test="fencePushContent != null and fencePushContent != ''"> and hef.fence_push_content = #{fencePushContent}</if>
<if test="fenceRecoverContent != null and fenceRecoverContent != ''"> and hef.fence_recover_content = #{fenceRecoverContent}</if>
<if test="fenceField != null and fenceField != ''"> and hef.fence_field = #{fenceField}</if>
<if test="deviceModeName != null and deviceModeName != ''"> and hef.device_mode_name = #{deviceModeName}</if>
<if test="deviceName != null and deviceName != ''"> and hd.device_name = #{deviceName}</if>
<if test="deviceModeId != null "> and hef.device_mode_id = #{deviceModeId}</if>
<if test="deviceId != null "> and hef.device_id = #{deviceId}</if>
<if test="sceneName != null ">and hs.scene_name = #{sceneName}</if>
</where>
</select>
<select id="selectHwElectronicFenceByElectronicFenceId" parameterType="Long" resultMap="HwElectronicFenceHwFenceTargetResult">
select a.electronic_fence_id, a.electronic_fence_name, a.tenant_id, a.scene_id, a.fence_type, a.effective_time_flag, a.time_zone, a.effective_time, a.trigger_status, a.fence_push_flag, a.fence_push_content, a.fence_recover_content, a.remark, a.create_by, a.create_time, a.update_by, a.update_time, a.fence_field,
b.electronic_fence_id as sub_electronic_fence_id, b.target_type as sub_target_type, b.target_id as sub_target_id
from hw_electronic_fence a
left join hw_fence_target b on b.electronic_fence_id = a.electronic_fence_id
where a.electronic_fence_id = #{electronicFenceId}
select hef.electronic_fence_id,
hef.electronic_fence_name,
hef.tenant_id,
hef.scene_id,
hef.fence_type,
hef.effective_time_flag,
hef.time_zone,
hef.effective_time,
hef.trigger_status,
hef.fence_push_flag,
hef.fence_push_content,
hef.fence_recover_content,
hef.remark,
hef.create_by,
hef.create_time,
hef.update_by,
hef.update_time,
hef.fence_field,
hft.electronic_fence_id as sub_electronic_fence_id,
hft.target_type as sub_target_type,
hft.target_id as sub_target_id,
hd.device_name ,
hef.device_id ,
hef.device_mode_id ,
hs.scene_name,
hdm.device_mode_name
from hw_electronic_fence hef
left join hw_fence_target hft on hft.electronic_fence_id = hef.electronic_fence_id
left join hw_device_mode hdm on hdm.device_mode_id = hef.device_mode_id
left join hw_device hd on hd.device_id = hef.device_id
left join hw_scene hs on hs.scene_id = hef.scene_id
where hef.electronic_fence_id = #{electronicFenceId}
</select>
<insert id="insertHwElectronicFence" parameterType="HwElectronicFence" useGeneratedKeys="true" keyProperty="electronicFenceId">
insert into hw_electronic_fence
<trim prefix="(" suffix=")" suffixOverrides=",">
@ -140,8 +169,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="fenceField != null">#{fenceField},</if>
<if test="deviceModeId != null">#{deviceModeId},</if>
<if test="deviceId != null">#{deviceId},</if>
<if test="deviceModeId != null">device_mode_id,</if>
<if test="deviceId != null">device_id,</if>
</trim>
</insert>
@ -190,7 +219,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</delete>
<delete id="deleteHwFenceTargetByElectronicFenceIds" parameterType="String">
delete from hw_fence_target where electronic_fence_id in
delete from hw_fence_target where electronic_fence_id in
<foreach item="electronicFenceId" collection="array" open="(" separator="," close=")">
#{electronicFenceId}
</foreach>
@ -231,6 +260,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
hs.scene_name
from hw_electronic_fence hef
left join hw_scene hs on hef.scene_id = hs.scene_id
left join hw_fence_target hft on hft.electronic_fence_id = hef.electronic_fence_id
left join hw_device_mode hdm on hdm.device_mode_id = hef.device_mode_id
left join hw_device hd on hd.device_id = hef.device_id
<where>
hef.trigger_status !='9'
<if test="electronicFenceName != null and electronicFenceName != ''"> and hef.electronic_fence_name like concat('%', #{electronicFenceName}, '%')</if>
@ -245,8 +277,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="fencePushContent != null and fencePushContent != ''"> and hef.fence_push_content = #{fencePushContent}</if>
<if test="fenceRecoverContent != null and fenceRecoverContent != ''"> and hef.fence_recover_content = #{fenceRecoverContent}</if>
<if test="fenceField != null and fenceField != ''"> and hef.fence_field = #{fenceField}</if>
<if test="deviceModeName != null and deviceModeName != ''"> and hdm.device_model_name like concat('%', #{deviceModeName}, '%')</if>
<if test="deviceName != null and deviceName != ''"> and hd.device_name like concat('%', #{deviceName}, '%')</if>
<if test="deviceId != null "> and hef.device_id = #{deviceId}</if>
<if test="deviceModeId != null "> and hef.device_mode_id = #{deviceModeId}</if>
<!-- 租户数据范围过滤 -->
${params.tenantDataScope}
-- ${params.tenantDataScope}
</where>
order by hef.electronic_fence_id desc
</select>
@ -262,4 +298,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
delete from hw_fence_area where electronic_fence_id = #{electronicFenceId}
</delete>
</mapper>
<select id="selectMonitorElectronic" parameterType="Long" resultMap="HwElectronicFenceResult">
select * from hw_electronic_fence hef
where electronic_fence_id =
(select electronic_fence_id from hw_fence_target hft where target_type = 1 and target_id = #{deviceId})
</select>
</mapper>

@ -60,4 +60,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{targetId}
</foreach>
</delete>
<delete id="deleteHwFenceTargetByFenceId" parameterType="java.lang.Long">
delete from hw_fence_target where electronic_fence_id in
<foreach item="electronicFenceId" collection="array" open="(" separator="," close=")">
#{electronicFenceId}
</foreach>
</delete>
</mapper>

@ -0,0 +1,193 @@
<?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.ruoyi.business.mapper.HwMonitorUnitAttributeDao">
<resultMap type="com.ruoyi.business.domain.HwMonitorUnitAttribute" id="HwMonitorUnitAttributeMap">
<result property="attributeId" column="attribute_id" jdbcType="INTEGER"/>
<result property="monitorUnitId" column="monitor_unit_id" jdbcType="INTEGER"/>
<result property="attributeName" column="attribute_name" jdbcType="VARCHAR"/>
<result property="attributeValue" column="attribute_value" jdbcType="VARCHAR"/>
<result property="createBy" column="create_by" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
</resultMap>
<!--查询单个-->
<select id="queryById" resultMap="HwMonitorUnitAttributeMap">
select
attribute_id, monitor_unit_id, attribute_name, attribute_value, create_by, create_time, update_by, update_time
from hw_monitor_unit_attribute
where attribute_id = #{attributeId}
</select>
<!--查询指定行数据-->
<select id="queryAllByLimit" resultMap="HwMonitorUnitAttributeMap">
select
attribute_id, monitor_unit_id, attribute_name, attribute_value, create_by, create_time, update_by, update_time
from hw_monitor_unit_attribute
<where>
<if test="attributeId != null">
and attribute_id = #{attributeId}
</if>
<if test="monitorUnitId != null">
and monitor_unit_id = #{monitorUnitId}
</if>
<if test="attributeName != null and attributeName != ''">
and attribute_name = #{attributeName}
</if>
<if test="attributeValue != null and attributeValue != ''">
and attribute_value = #{attributeValue}
</if>
<if test="createBy != null and createBy != ''">
and create_by = #{createBy}
</if>
<if test="createTime != null">
and create_time = #{createTime}
</if>
<if test="updateBy != null and updateBy != ''">
and update_by = #{updateBy}
</if>
<if test="updateTime != null">
and update_time = #{updateTime}
</if>
</where>
limit #{pageable.offset}, #{pageable.pageSize}
</select>
<!--统计总行数-->
<select id="count" resultType="java.lang.Long">
select count(1)
from hw_monitor_unit_attribute
<where>
<if test="attributeId != null">
and attribute_id = #{attributeId}
</if>
<if test="monitorUnitId != null">
and monitor_unit_id = #{monitorUnitId}
</if>
<if test="attributeName != null and attributeName != ''">
and attribute_name = #{attributeName}
</if>
<if test="attributeValue != null and attributeValue != ''">
and attribute_value = #{attributeValue}
</if>
<if test="createBy != null and createBy != ''">
and create_by = #{createBy}
</if>
<if test="createTime != null">
and create_time = #{createTime}
</if>
<if test="updateBy != null and updateBy != ''">
and update_by = #{updateBy}
</if>
<if test="updateTime != null">
and update_time = #{updateTime}
</if>
</where>
</select>
<select id="selectAttributeByUnitId" resultType="com.ruoyi.business.domain.HwMonitorUnitAttribute"
parameterType="java.lang.Long">
select * from hw_monitor_unit_attribute where monitor_unit_id = #{monitorUnitId}
</select>
<select id="selectAttributes" resultType="com.ruoyi.business.domain.HwMonitorUnitAttribute"
parameterType="java.lang.Long">
select * from hw_monitor_unit_attribute where monitor_unit_id = #{unitId}
</select>
<!--新增所有列-->
<insert id="insert" keyProperty="attributeId" useGeneratedKeys="true">
insert into hw_monitor_unit_attribute(monitor_unit_id, attribute_name, attribute_value, create_by, create_time, update_by, update_time)
values (#{monitorUnitId}, #{attributeName}, #{attributeValue}, #{createBy}, #{createTime}, #{updateBy}, #{updateTime})
</insert>
<insert id="insertBatch" keyProperty="attributeId" useGeneratedKeys="true">
insert into hw_monitor_unit_attribute(monitor_unit_id, attribute_name, attribute_value, create_by, create_time, update_by, update_time)
values
<foreach collection="entities" item="entity" separator=",">
(#{entity.monitorUnitId}, #{entity.attributeName}, #{entity.attributeValue}, #{entity.createBy}, #{entity.createTime}, #{entity.updateBy}, #{entity.updateTime})
</foreach>
</insert>
<insert id="insertOrUpdateBatch" keyProperty="attributeId" useGeneratedKeys="true">
insert into hw_monitor_unit_attribute(monitor_unit_id, attribute_name, attribute_value, create_by, create_time, update_by, update_time)
values
<foreach collection="entities" item="entity" separator=",">
(#{entity.monitorUnitId}, #{entity.attributeName}, #{entity.attributeValue}, #{entity.createBy}, #{entity.createTime}, #{entity.updateBy}, #{entity.updateTime})
</foreach>
on duplicate key update
monitor_unit_id = values(monitor_unit_id),
attribute_name = values(attribute_name),
attribute_value = values(attribute_value),
create_by = values(create_by),
create_time = values(create_time),
update_by = values(update_by),
update_time = values(update_time)
</insert>
<!--通过主键修改数据-->
<update id="update">
update hw_monitor_unit_attribute
<set>
<if test="monitorUnitId != null">
monitor_unit_id = #{monitorUnitId},
</if>
<if test="attributeName != null and attributeName != ''">
attribute_name = #{attributeName},
</if>
<if test="attributeValue != null and attributeValue != ''">
attribute_value = #{attributeValue},
</if>
<if test="createBy != null and createBy != ''">
create_by = #{createBy},
</if>
<if test="createTime != null">
create_time = #{createTime},
</if>
<if test="updateBy != null and updateBy != ''">
update_by = #{updateBy},
</if>
<if test="updateTime != null">
update_time = #{updateTime},
</if>
</set>
where attribute_id = #{attributeId}
</update>
<update id="updateAttributeByUniitId" parameterType="com.ruoyi.business.domain.HwMonitorUnitAttribute">
update hw_monitor_unit_attribute
<set>
<if test="monitorUnitId != null">
monitor_unit_id = #{monitorUnitId},
</if>
<if test="attributeName != null and attributeName != ''">
attribute_name = #{attributeName},
</if>
<if test="attributeValue != null and attributeValue != ''">
attribute_value = #{attributeValue},
</if>
<if test="createBy != null and createBy != ''">
create_by = #{createBy},
</if>
<if test="createTime != null">
create_time = #{createTime},
</if>
<if test="updateBy != null and updateBy != ''">
update_by = #{updateBy},
</if>
<if test="updateTime != null">
update_time = #{updateTime},
</if>
</set>
where attribute_id = #{attributeId}
</update>
<!--通过主键删除-->
<delete id="deleteById">
delete from hw_monitor_unit_attribute where attribute_id = #{attributeId}
</delete>
<delete id="deleteAttributeByUniitId" parameterType="java.lang.Long">
delete from hw_monitor_unit_attribute where attribute_id = #{attributeId}
</delete>
</mapper>

@ -60,6 +60,11 @@
<result property="monitorUnitId" column="monitor_unit_id"/>
<result property="num" column="num"/>
</resultMap>
<resultMap id="TreeDeviceVoResult" type="com.ruoyi.business.domain.VO.TreeDeviceVo">
<result property="voId" column="vo_id" />
<result property="voName" column="vo_name" />
<result property="parentId" column="parent_id" />
</resultMap>
<sql id="selectHwMonitorUnitVo">
select monitor_unit_id, monitor_unit_name, scene_id, parent_id, monitor_unit_type_id, area_id, monitor_address, monitor_pic, preserve_time, remark, monitor_unit_status, create_by, create_time, update_by, update_time, monitor_unit_field from hw_monitor_unit hmu
@ -111,14 +116,16 @@
where monitor_unit_id not in (select parent_id from hw_monitor_unit where parent_id is not null))as temp
GROUP BY scene_id
</select>
<select id="selectSubSetNums" resultType="Integer">
<select id="selectSubSetNums" resultType="java.lang.Integer">
select count(*)from hw_monitor_unit
where monitor_unit_status='1' and monitor_unit_id not in (select parent_id from hw_monitor_unit where parent_id is not null)
<if test="tenantId != null "> and tenant_id = #{tenantId} </if>
<if test="sceneId != null "> and scene_id = #{sceneId}</if>
</select>
<select id="selectDeviceNums" resultType="Integer">
select count(*) as sum from hw_device
where device_status = '1' and (device_type='2' or device_type='3')
<if test="tenantId != null and sceneId!=0">and tenant_id = #{tenantId}</if>
<if test="sceneId != null and sceneId!=0"> and scene_id = #{sceneId}</if>
</select>
<!-- 通过场景分组,查询设备数量 todo 已解决 -->
@ -146,7 +153,7 @@
</select>
<!--查询id与name的结果集通过id与selectMonitorPercentage相连-->
<select id="selectSceneNameById" resultMap="HwMonitorUnitVoResult">
select scene_id,scene_name from hw_scene
select scene_id,scene_name from hw_scene where tenant_id = #{tenantId} and scene_status != '9'
</select>
<!-- 分页查询在impl实现分页-->
<select id="selectLimitSubMonitorUnit" resultMap="HwMonitorUnitResult">
@ -159,7 +166,7 @@
<select id="selectMonitorPercentage" resultMap="HwMonitorUnitVoResult">
select scene_id,count(*) as sum from (select monitor_unit_id,scene_id
from hw_monitor_unit where monitor_unit_id not in
(select parent_id from hw_monitor_unit where parent_id is not null))as temp
(select parent_id from hw_monitor_unit where parent_id is not null) and tenant_id = #{tenantId})as temp
GROUP BY scene_id order by sum desc
</select>
<!-- 先通过报警信息表查询报警的监控单元id与数量在查询监控单元的名字-->
@ -234,6 +241,11 @@
<if test="monitorUnitField != null">#{monitorUnitField},</if>
</trim>
</insert>
<update id="addAttribute">
update hw_monitor_unit
set attribute = #{attribute}
where monitor_unit_id = #{monitorUnitId}
</update>
<update id="updateHwMonitorUnit" parameterType="HwMonitorUnit">
update hw_monitor_unit
@ -286,7 +298,7 @@
<if test="preserveTime != null "> and hmu.preserve_time = #{preserveTime}</if>
<if test="monitorUnitStatus != null "> and hmu.monitor_unit_status = #{monitorUnitStatus}</if>
<!-- 租户数据范围过滤 -->
${params.tenantDataScope}
-- ${params.tenantDataScope}
</where>
order by hmu.tenant_id,hmu.parent_id
</select>
@ -312,4 +324,39 @@
update hw_monitor_unit set monitor_unit_status = '9' where monitor_unit_id = #{monitorUnitId}
</delete>
</mapper>
<select id="selectBeaconDeviceNums" parameterType="Long" resultType="int">
select count(1) from hw_device where device_mode_id =
(select device_mode_id from hw_device_mode where gps_flag = 1 and scene_id = #{sceneId}
) and scene_id = #{sceneId}
</select>
<select id="selectBeaconDeviceBySceneId" parameterType="Long" resultType="int">
select * from hw_device where device_mode_id =
(select device_mode_id from hw_device_mode where gps_flag = 1 and scene_id = #{sceneId}
) and scene_id = #{sceneId} and device_status != 9
</select>
<select id="selectMonitorUnit" parameterType="Long" resultMap="HwMonitorUnitResult">
select * from hw_monitor_unit where monitor_unit_id = (
select monitor_unit_id from hw_device where device_id = #{deviceId})
</select>
<select id="selectMonitorUnitReturnMap" resultMap="TreeDeviceVoResult">
select scene_id as parent_id,monitor_unit_id as vo_id,monitor_unit_name as vo_name from hw_monitor_unit where monitor_unit_status =1
</select>
<select id="getMonitorUnitByAreaId" parameterType="Long" resultMap="HwMonitorUnitResult">
select * from hw_monitor_unit
<where>
and area_id = #{areaId}
and monitor_unit_status !=9
<if test="tenantId != null and tenantId != ''"> and tenant_id =#{tenantId}</if>
</where>
</select>
<select id="selectMonitorUnitListHavAreaId" parameterType="Long" resultMap="HwMonitorUnitResult">
select * from hw_monitor_unit
<where>
and monitor_unit_status !=9
-- and area_id is not null
<if test="tenantId != null and tenantId != ''"> and tenant_id=#{tenantId}</if>
</where>
</select>
</mapper>

@ -131,7 +131,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="unitTypeIcon != null and unitTypeIcon != ''"> and hmut.unit_type_icon = #{unitTypeIcon}</if>
<if test="unitTypeField != null and unitTypeField != ''"> and hmut.unit_type_field = #{unitTypeField}</if>
<!-- 租户数据范围过滤 -->
${params.tenantDataScope}
-- ${params.tenantDataScope}
</where>
order by hmut.monitor_unit_type_id desc
</select>

@ -195,6 +195,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<delete id="deleteHwAlarmRuleLinkByAlarmRuleId" parameterType="Long">
delete from hw_alarm_rule_link where alarm_rule_id = #{alarmRuleId}
</delete>
<delete id="deleteOfflineRuleById" parameterType="java.lang.Long">
update hw_offline_rule set deleted_flag = 1
</delete>
<insert id="batchHwAlarmRuleLink">
insert into hw_alarm_rule_link( rule_link_id, alarm_rule_type, alarm_rule_id, link_type, link_device_id, link_device_function_id, link_device_function_identifier, link_device_function_data) values
@ -202,7 +205,59 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
( #{item.ruleLinkId}, #{item.alarmRuleType}, #{item.alarmRuleId}, #{item.linkType}, #{item.linkDeviceId}, #{item.linkDeviceFunctionId}, #{item.linkDeviceFunctionIdentifier}, #{item.linkDeviceFunctionData})
</foreach>
</insert>
<insert id="addOfflineRule" parameterType="com.ruoyi.business.domain.HwOfflineRule">
insert into hw_offline_rule
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="offlineRuleName != null and offlineRuleName != ''">offline_rule_name,</if>
<if test="tenantId != null">tenant_id,</if>
<if test="sceneId != null">scene_id,</if>
<if test="alarmLevelId != null">alarm_level_id,</if>
<if test="ruleType != null and ruleType != ''">rule_type,</if>
<if test="offlineTime != null">offline_time,</if>
<if test="offlineNumberTime != null">offline_number_time,</if>
<if test="offlineNumber != null">offline_number,</if>
<if test="triggerTimeFrame != null">trigger_time_frame,</if>
<if test="consumeTraffic != null">consume_traffic,</if>
<if test="batteryLevel != null">battery_level,</if>
<if test="powerDownFlag != null">power_down_flag,</if>
<if test="linkFlag != null and linkFlag != ''">link_flag,</if>
<if test="alarmRuleStatus != null and alarmRuleStatus != ''">alarm_rule_status,</if>
<if test="alarmPushFlag != null and alarmPushFlag != ''">alarm_push_flag,</if>
<if test="alarmPushContent != null">alarm_push_content,</if>
<if test="alarmRecoverContent != null">alarm_recover_content,</if>
<if test="remark != null">remark,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="offlineRuleField != null">offline_rule_field,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="offlineRuleName != null and offlineRuleName != ''">#{offlineRuleName},</if>
<if test="tenantId != null">#{tenantId},</if>
<if test="sceneId != null">#{sceneId},</if>
<if test="alarmLevelId != null">#{alarmLevelId},</if>
<if test="ruleType != null and ruleType != ''">#{ruleType},</if>
<if test="offlineTime != null">#{offlineTime},</if>
<if test="offlineNumberTime != null">#{offlineNumberTime},</if>
<if test="offlineNumber != null">#{offlineNumber},</if>
<if test="triggerTimeFrame != null">#{triggerTimeFrame},</if>
<if test="consumeTraffic != null">#{consumeTraffic},</if>
<if test="batteryLevel != null">#{batteryLevel},</if>
<if test="powerDownFlag != null">#{powerDownFlag},</if>
<if test="linkFlag != null and linkFlag != ''">#{linkFlag},</if>
<if test="alarmRuleStatus != null and alarmRuleStatus != ''">#{alarmRuleStatus},</if>
<if test="alarmPushFlag != null and alarmPushFlag != ''">#{alarmPushFlag},</if>
<if test="alarmPushContent != null">#{alarmPushContent},</if>
<if test="alarmRecoverContent != null">#{alarmRecoverContent},</if>
<if test="remark != null">#{remark},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="offlineRuleField != null">#{offlineRuleField},</if>
</trim>
</insert>
<select id="selectHwOfflineRuleJoinList" parameterType="HwOfflineRule" resultMap="HwOfflineRuleResult">
@ -212,7 +267,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
left join hw_scene hs on hor.scene_id=hs.scene_id
left join hw_alarm_level hal on hor.alarm_level_id=hal.alarm_level_id
<where>
hor.deleted_flag = '0'
hor.deleted_flag = 0
<if test="offlineRuleName != null and offlineRuleName != ''">and hor.offline_rule_name like concat('%',
#{offlineRuleName}, '%')
</if>
@ -236,5 +291,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where>
order by hor.offline_rule_id desc
</select>
<select id="selectRuleList" resultType="com.ruoyi.business.domain.HwOfflineRule"
parameterType="com.ruoyi.business.domain.HwOfflineRule"></select>
<select id="selectOfflineRuleById" resultType="com.ruoyi.business.domain.HwOfflineRule"
parameterType="java.lang.Long">
select hor.offline_rule_id,hor.offline_rule_name,hor.tenant_id,hor.scene_id,hor.alarm_level_id,hor.rule_type,hor.link_flag,hor.alarm_rule_status,
ht.tenant_name,hs.scene_name,hal.alarm_level_name
from hw_offline_rule hor left join hw_tenant ht on hor.tenant_id = ht.tenant_id
left join hw_scene hs on hor.scene_id=hs.scene_id
left join hw_alarm_level hal on hor.alarm_level_id=hal.alarm_level_id
<where>
hor.deleted_flag = 0
and hor.offline_rule_id = #{offlineRuleId}
</where>
order by hor.offline_rule_id desc
</select>
</mapper>

@ -52,6 +52,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="contactName" column="contact_name" />
<result property="contactPhone" column="contact_phone" />
</resultMap>
<resultMap id="TreeDeviceVoResult" type="com.ruoyi.business.domain.VO.TreeDeviceVo">
<result property="voId" column="vo_id" />
<result property="voName" column="vo_name" />
<result property="parentId" column="parent_id" />
</resultMap>
<sql id="selectHwSceneVo">
select scene_id, scene_name, tenant_id, scene_mode_id, scene_pic, default_flag, scene_status, auth_mode, mode_account, mode_key, mode_secret, preserve_time, test_preserve_time, remark, create_by, create_time, update_by, update_time, scene_environment, scene_field from hw_scene hs
@ -75,6 +80,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectHwSceneList" parameterType="HwScene" resultMap="HwSceneResult">
<include refid="selectHwSceneVo"/>
<where>
scene_status != '9'
<if test="sceneName != null and sceneName != ''"> and scene_name like concat('%', #{sceneName}, '%')</if>
<if test="tenantId != null"> and tenant_id = #{tenantId}</if>
<if test="sceneModeId != null "> and scene_mode_id = #{sceneModeId}</if>
@ -198,4 +204,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{sceneId}
</foreach>
</delete>
<select id="selectHwSceneListReturnMap" resultMap="TreeDeviceVoResult">
select scene_id as vo_id,scene_name as vo_name from hw_scene hs where scene_status = 1
</select>
</mapper>

@ -25,10 +25,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="tenantBoardTopic" column="tenant_board_topic" />
<result property="tenantBoardPic" column="tenant_board_pic" />
<result property="tenantField" column="tenant_field" />
<result property="tenantMapCode" column="tenant_map_code" />
</resultMap>
<sql id="selectHwTenantVo">
select tenant_id, tenant_type, tenant_name, tenant_industry, contact_name, contact_phone, email, area_id, contact_address, remark, tenant_status, is_register, create_by, create_time, update_by, update_time,tenant_board_topic, tenant_board_pic,tenant_grade, tenant_field from hw_tenant ht
select tenant_id, tenant_type, tenant_name, tenant_industry, contact_name, contact_phone, email, area_id, contact_address, remark, tenant_status, is_register, create_by, create_time, update_by, update_time,tenant_board_topic, tenant_board_pic,tenant_grade, tenant_field ,tenant_map_code from hw_tenant ht
</sql>
<select id="selectHwTenantList" parameterType="HwTenant" resultMap="HwTenantResult">
@ -75,10 +76,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="tenanBoardTopic != null and tenantBoardTopic != ''">tenant_board_topic,</if>
<if test="tenantBoardTopic != null and tenantBoardTopic != ''">tenant_board_topic,</if>
<if test="tenantBoardPic != null and tenantBoardPic != ''">tenant_board_pic,</if>
<if test="tenantGrade != null">tenant_grade,</if>
<if test="tenantField != null">tenant_field,</if>
<if test="tenantMapCode != null">tenant_map_code,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="tenantType != null and tenantType != ''">#{tenantType},</if>
@ -96,10 +98,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="tenanBoardTopic != null and tenanBoardTopic != ''">#{tenanBoardTopic},</if>
<if test="tenantBoardTopic != null and tenantBoardTopic != ''">#{tenantBoardTopic},</if>
<if test="tenantBoardPic != null and tenantBoardPic != ''">#{tenantBoardPic},</if>
<if test="tenantGrade != null">#{tenantGrade},</if>
<if test="tenantField != null">#{tenantField},</if>
<if test="tenantMapCode != null">#{tenantMapCode},</if>
</trim>
</insert>
@ -121,10 +124,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="tenanBoardTopic != null and tenanBoardTopic != ''">tenant_board_topic = #{tenanBoardTopic},</if>
<if test="tenantBoardTopic != null and tenantBoardTopic != ''">tenant_board_topic = #{tenantBoardTopic},</if>
<if test="tenantBoardPic != null and tenantBoardPic != ''">tenant_board_pic = #{tenantBoardPic},</if>
<if test="tenantGrade != null">tenant_grade = #{tenantGrade},</if>
<if test="tenantField != null">tenant_field = #{tenantField},</if>
<if test="tenantMapCode != null">tenant_map_code = #{tenantMapCode},</if>
</trim>
where tenant_id = #{tenantId}
</update>

@ -102,6 +102,11 @@
<version>3.12.1</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>alibabacloud-dysmsapi20170525</artifactId>
<version>2.0.24</version>
</dependency>
</dependencies>

@ -0,0 +1,34 @@
package com.ruoyi.dataprocess.domain;
public class AlarmMsgTemplateParam {
private String parentname;
private String sensorID;
private String warning;
public String getParentname() {
return parentname;
}
public void setParentname(String parentname) {
this.parentname = parentname;
}
public String getSensorID() {
return sensorID;
}
public void setSensorID(String sensorID) {
this.sensorID = sensorID;
}
public String getWarning() {
return warning;
}
public void setWarning(String warning) {
this.warning = warning;
}
}

@ -109,6 +109,16 @@ public class HwAlarmRule extends BaseEntity
@Excel(name = "设备")
private String ruleDeviceName;
/**
*
*/
private Long triggerTimeFrame;
/**
*
*/
private String phoneNumbers;
public void setAlarmRuleId(Long alarmRuleId)
{
this.alarmRuleId = alarmRuleId;
@ -345,6 +355,22 @@ public class HwAlarmRule extends BaseEntity
this.ruleDeviceName = ruleDeviceName;
}
public Long getTriggerTimeFrame() {
return triggerTimeFrame;
}
public void setTriggerTimeFrame(Long triggerTimeFrame) {
this.triggerTimeFrame = triggerTimeFrame;
}
public String getPhoneNumbers() {
return phoneNumbers;
}
public void setPhoneNumbers(String phoneNumbers) {
this.phoneNumbers = phoneNumbers;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

@ -36,6 +36,8 @@ public class HwDevice extends BaseEntity
@Excel(name = "所属监控单元关联表hw_monitor_unit字段monitor_unit_id")
private Long monitorUnitId;
private String monitorUnitName;
/** 设备类型1网关设备2网关子设备3直连设备 */
@Excel(name = "设备类型", readConverterExp = "1=网关设备2网关子设备3直连设备")
private String deviceType;
@ -331,6 +333,14 @@ public class HwDevice extends BaseEntity
return onlineStatus;
}
public String getMonitorUnitName() {
return monitorUnitName;
}
public void setMonitorUnitName(String monitorUnitName) {
this.monitorUnitName = monitorUnitName;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

@ -21,6 +21,13 @@ public interface HwDeviceMapper
*/
public HwDevice selectHwDeviceByDeviceCode(String deviceCode);
/**
*
* @param deviceCode
* @return
*/
public HwDevice GetDeviceById(Long deviceCode);
/**
*
*

@ -3,6 +3,11 @@ package com.ruoyi.dataprocess.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.auth.credentials.Credential;
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
import com.aliyun.sdk.service.dysmsapi20170525.AsyncClient;
import com.aliyun.sdk.service.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.sdk.service.dysmsapi20170525.models.SendSmsResponse;
import com.ruoyi.common.core.constant.HwDictConstants;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.TdEngineConstants;
@ -21,9 +26,13 @@ import com.ruoyi.dataprocess.service.CommanHandleService;
import com.ruoyi.dataprocess.service.IDataProcessService;
import com.ruoyi.tdengine.api.RemoteTdEngineService;
import com.ruoyi.tdengine.api.domain.TdField;
import com.ruoyi.tdengine.api.domain.TdHistorySelectDto;
import com.ruoyi.tdengine.api.domain.TdReturnDataVo;
import com.ruoyi.tdengine.api.domain.TdTableVo;
import com.sun.org.apache.xpath.internal.operations.Bool;
import darabonba.core.client.ClientOverrideConfiguration;
import org.apache.commons.codec.binary.Base64;
import org.apache.poi.openxml4j.exceptions.InvalidOperationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -37,11 +46,11 @@ import javax.script.ScriptException;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
/**
* @Description:
@ -54,6 +63,10 @@ import java.util.concurrent.atomic.AtomicBoolean;
public class DataProcessServiceImpl extends CommanHandleService implements IDataProcessService {
private static final Logger logger = LoggerFactory.getLogger(DataProcessServiceImpl.class);
private final String AccessKeyId = "LTAI5tPoTQHh8HHst2toxtGa";
private final String AccessKeySecret = "K8OIuSNgsSnpGMJ2PdqIJFYyUqL38m";
@Resource
private RemoteTdEngineService remoteTdEngineService;
@ -102,6 +115,7 @@ public class DataProcessServiceImpl extends CommanHandleService implements IData
String dataType = paramJson.getString(TdEngineConstants.PAYLOAD_DATATYPE);
JSONObject dataValueJson = paramJson.getJSONObject(TdEngineConstants.PAYLOAD_DATAVALUE);
deviceCode = dataValueJson.getString(TdEngineConstants.PAYLOAD_DEVICE_CODE).toLowerCase();
//deviceCode = getUidByParam(json);
HwDevice hwDevice = hwDeviceMapper.selectHwDeviceByDeviceCode(deviceCode);
if (hwDevice == null) {
logger.error("此设备【deviceCode:{}】不存在", deviceCode);
@ -127,7 +141,9 @@ public class DataProcessServiceImpl extends CommanHandleService implements IData
//添加timestamp字段默认字段名称是ts协议上传的key是timestamp
TdField firstTdField = new TdField();
firstTdField.setFieldName(TdEngineConstants.DEFAULT_FIRST_FIELD_NAME);
firstTdField.setFieldValue(ts);
long currentTimeMillis = System.currentTimeMillis();
firstTdField.setFieldValue(currentTimeMillis);
// firstTdField.setFieldValue(ts);
schemaFields.add(firstTdField);
Object longitude = null;
@ -205,9 +221,9 @@ public class DataProcessServiceImpl extends CommanHandleService implements IData
tdTableVo.setTableName(tableName);
tdTableVo.setSchemaFields(schemaFields);
final R<?> insertResult = this.remoteTdEngineService.insertTable(tdTableVo, SecurityConstants.INNER);
final R<?> insertResult = this.remoteTdEngineService.insertTable(tdTableVo , SecurityConstants.INNER);
if (insertResult.getCode() == ResultEnums.SUCCESS.getCode()) {
logger.info("Insert data result: {}", insertResult.getMsg());
logger.info("Insert data result: {}", insertResult.getCode());
} else {
logger.error("Insert data Exception: {},data:{}", insertResult.getMsg(), jsonData);
}
@ -229,6 +245,27 @@ public class DataProcessServiceImpl extends CommanHandleService implements IData
return paramArr.size();
}
/**
* UID
* @param jsonStr
* @return
*/
private String getUidByParam(JSONObject jsonStr){
JSONObject jsonObject = new JSONObject(jsonStr);
JSONArray paramArray = jsonObject.getJSONArray("param");
JSONObject firstParamObject = paramArray.getJSONObject(0);
JSONObject datavalueObject = firstParamObject.getJSONObject("datavalue");
String uid = datavalueObject.getString("uid");
return uid;
}
private static String getImageFileName(String imagePath, String imageDomain, String imagePrefix, String valueStr, Long deviceId, String extension) {
try {
String imageFileName = ImageUtils.convertBase64ToImage(imagePath,
@ -350,73 +387,148 @@ public class DataProcessServiceImpl extends CommanHandleService implements IData
*/
private void checkAlarm(Long deviceId, List<TdField> alarmFields,
Long tenantId, Long sceneId, Long monitorUnitId, String topic, String subDeviceCode) {
HwAlarmRule queryAlarmRule = new HwAlarmRule();
queryAlarmRule.setRuleDeviceId(deviceId);
queryAlarmRule.setRuleType(HwDictConstants.ALARM_RULE_RULE_TYPE_DEVICE);
queryAlarmRule.setAlarmRuleStatus(HwDictConstants.ALARM_RULE_STATUS_ENABLE);
List<HwAlarmRule> alarmRules = hwAlarmRuleMapper.selectHwAlarmRulesWithLink(queryAlarmRule);
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
try {
HwAlarmRule queryAlarmRule = new HwAlarmRule();
queryAlarmRule.setRuleDeviceId(deviceId);
queryAlarmRule.setRuleType(HwDictConstants.ALARM_RULE_RULE_TYPE_DEVICE);
queryAlarmRule.setAlarmRuleStatus(HwDictConstants.ALARM_RULE_STATUS_ENABLE);
List<HwAlarmRule> alarmRules = hwAlarmRuleMapper.selectHwAlarmRulesWithLink(queryAlarmRule);
if (alarmRules != null) {
Date currentDate = new Date();
for (HwAlarmRule alarmRule : alarmRules) {
String triggerExpression = alarmRule.getTriggerExpression()
.replaceAll("and", "&&")
.replaceAll("or", "||");
AtomicBoolean isAlarmed = new AtomicBoolean(false);
List<HwAlarmDetail> alarmDetails = new ArrayList<HwAlarmDetail>();
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
for (TdField alarmField : alarmFields) {
String fieldName = alarmField.getFieldName();
Object filedValue = alarmField.getFieldValue();
if (triggerExpression.contains("{" + fieldName + "}")) {
isAlarmed.set(true);
triggerExpression = triggerExpression.replaceAll("\\{" + fieldName + "\\}", String.valueOf(filedValue));
HwAlarmDetail alarmDetail = new HwAlarmDetail();
alarmDetail.setDeviceId(deviceId);
alarmDetail.setFunctionIdentifier(fieldName);
alarmDetail.setFunctionValue(String.valueOf(filedValue));
alarmDetail.setMonitorTime(currentDate);
alarmDetails.add(alarmDetail);
if (alarmRules != null) {
Date currentDate = new Date();
for (HwAlarmRule alarmRule : alarmRules) {
String triggerExpression = alarmRule.getTriggerExpression()
.replaceAll("and", "&&")
.replaceAll("or", "||");
AtomicBoolean isAlarmed = new AtomicBoolean(false);
List<HwAlarmDetail> alarmDetails = new ArrayList<HwAlarmDetail>();
for (TdField alarmField : alarmFields) {
String fieldName = alarmField.getFieldName();
Object filedValue = alarmField.getFieldValue();
if (triggerExpression.contains("{" + fieldName + "}")) {
isAlarmed.set(true);
/**
* Add By WenJY 2024-07-03 14:13:21
*/
if(alarmRule.getTriggerTimeFrame() != null && alarmRule.getTriggerTimeFrame() > 0){
double difValue = FilterDeviceValue(deviceId, fieldName, alarmRule.getTriggerTimeFrame());
// if(difValue > 0){
// filedValue = difValue;
// }
filedValue = difValue;
}
/** End **/
triggerExpression = triggerExpression.replaceAll("\\{" + fieldName + "\\}", String.valueOf(filedValue));
HwAlarmDetail alarmDetail = new HwAlarmDetail();
alarmDetail.setDeviceId(deviceId);
alarmDetail.setFunctionIdentifier(fieldName);
alarmDetail.setFunctionValue(String.valueOf(filedValue));
alarmDetail.setMonitorTime(currentDate);
alarmDetails.add(alarmDetail);
}
}
}
if (isAlarmed.get() && !triggerExpression.contains("{")
&& RegexUtils.findSymbolInText(triggerExpression).size() > 0
&& RegexUtils.findNumberInText(triggerExpression).size() > 0) {
if (isAlarmed.get() && !triggerExpression.contains("{")
&& RegexUtils.findSymbolInText(triggerExpression).size() > 0
&& RegexUtils.findNumberInText(triggerExpression).size() > 0) {
Boolean triggerExpressionBool = null;
try {
triggerExpressionBool = (Boolean) engine.eval(triggerExpression);
} catch (ScriptException e) {
throw new RuntimeException(e);
}
if (triggerExpressionBool) {
HwAlarmInfo alarmInfo = new HwAlarmInfo();
alarmInfo.setAlarmInfoType(HwDictConstants.ALARM_INFO_TYPE_DEVICE);
alarmInfo.setAlarmReleatedId(alarmRule.getAlarmRuleId());
alarmInfo.setDeviceId(deviceId);
alarmInfo.setMonitorUnitId(monitorUnitId);
alarmInfo.setTenantId(tenantId);
alarmInfo.setSceneId(sceneId);
alarmInfo.setAlarmLevelId(alarmRule.getAlarmLevelId());
alarmInfo.setAlarmTypeId(alarmRule.getAlarmTypeId());
alarmInfo.setHwAlarmDetailList(alarmDetails);
alarmInfo.setHandleStatus(HwDictConstants.ALARM_HANDLE_STATUS_NO);
alarmInfo.setCreateTime(currentDate);
alarmInfo.setAlarmTime(currentDate);
hwAlarmInfoMapper.insertHwAlarmInfo(alarmInfo);
this.insertHwAlarmDetail(alarmInfo);
this.handleAlarmLink(alarmRule, topic, subDeviceCode);
break;
Boolean triggerExpressionBool = (Boolean) engine.eval(triggerExpression);
if (triggerExpressionBool) {
HwAlarmInfo alarmInfo = new HwAlarmInfo();
alarmInfo.setAlarmInfoType(HwDictConstants.ALARM_INFO_TYPE_DEVICE);
alarmInfo.setAlarmReleatedId(alarmRule.getAlarmRuleId());
alarmInfo.setDeviceId(deviceId);
alarmInfo.setMonitorUnitId(monitorUnitId);
alarmInfo.setTenantId(tenantId);
alarmInfo.setSceneId(sceneId);
alarmInfo.setAlarmLevelId(alarmRule.getAlarmLevelId());
alarmInfo.setAlarmTypeId(alarmRule.getAlarmTypeId());
alarmInfo.setHwAlarmDetailList(alarmDetails);
alarmInfo.setHandleStatus(HwDictConstants.ALARM_HANDLE_STATUS_NO);
alarmInfo.setCreateTime(currentDate);
alarmInfo.setAlarmTime(currentDate);
hwAlarmInfoMapper.insertHwAlarmInfo(alarmInfo);
this.insertHwAlarmDetail(alarmInfo);
this.handleAlarmLink(alarmRule, topic, subDeviceCode);
/**
* Add By WenJY
*/
if(StringUtils.isNotEmpty(alarmRule.getPhoneNumbers())){
SendAlarmInfoBySms(deviceId,alarmRule);
}else {
logger.warn("设备:{};报警信息发送失败,联系方式为空",deviceId);
}
break;
}
}
}
}
}catch (Exception e){
logger.error("设备:{};报警逻辑处理异常:{}",deviceId,e.getMessage());
}
}
/**
* 0
* @param deviceId
* @param fieldName
* @param triggerTimeFrame
* @return
*/
private double FilterDeviceValue(Long deviceId,String fieldName,long triggerTimeFrame){
double differenceValue = 0.00;
String databaseName = TdEngineConstants.getDatabaseName();
String tableName = TdEngineConstants.DEFAULT_TABLE_NAME_PREFIX + deviceId;
long currentTimeMillis = System.currentTimeMillis();
long fiveMinutesInMillis = triggerTimeFrame * 60 * 1000;
long beforeTimeMillis = currentTimeMillis - fiveMinutesInMillis;
TdHistorySelectDto tdHistorySelectDto = new TdHistorySelectDto();
tdHistorySelectDto.setDatabaseName(databaseName);
tdHistorySelectDto.setTableName(tableName);
tdHistorySelectDto.setStartTime(beforeTimeMillis);
tdHistorySelectDto.setEndTime(currentTimeMillis);
tdHistorySelectDto.setFirstFieldName("ts");
R<?> result = this.remoteTdEngineService.getHistoryData(tdHistorySelectDto , SecurityConstants.INNER);
if (result.getCode() == ResultEnums.SUCCESS.getCode()) {
logger.info("Get history data result: {}", result.getCode());
TdReturnDataVo data = (TdReturnDataVo) result.getData();
List<Map<String, Object>> dataList = data.getDataList();
List<Double> value = dataList.stream().map(map -> (Double)map.get("value1")).distinct().filter(x -> x > 0).collect(Collectors.toList());
System.out.println(triggerTimeFrame +"分钟内数据:"+JSONArray.toJSON(value) );
OptionalDouble maxOptional = value.stream().mapToDouble(Double::doubleValue).max();
OptionalDouble minOptional = value.stream().mapToDouble(Double::doubleValue).min();
if (maxOptional.isPresent() && minOptional.isPresent()) {
double maxValue = maxOptional.getAsDouble();
double minValue = minOptional.getAsDouble();
differenceValue = maxValue - minValue;
System.out.println("Difference between max and min values: " + differenceValue);
} else {
System.out.println("No values found to calculate difference.");
}
} else {
logger.error("Get history data Exception: {}", result.getMsg());
}
return differenceValue;
}
/**
*
*
@ -489,6 +601,63 @@ public class DataProcessServiceImpl extends CommanHandleService implements IData
}
}
/**
*
* @param deviceId
* @param alarmRule
*/
private void SendAlarmInfoBySms(Long deviceId,HwAlarmRule alarmRule){
try {
HwDevice hwDevice = hwDeviceMapper.GetDeviceById(deviceId);
if(hwDevice != null){
AlarmMsgTemplateParam alarmMsgTemplateParam = new AlarmMsgTemplateParam();
alarmMsgTemplateParam.setWarning(alarmRule.getAlarmRuleName());
alarmMsgTemplateParam.setParentname(hwDevice.getMonitorUnitName());
alarmMsgTemplateParam.setSensorID(deviceId.toString());
AliSmsHandle(alarmRule.getPhoneNumbers(),alarmMsgTemplateParam);
}
} catch (ExecutionException | InterruptedException e) {
throw new InvalidOperationException(String.format("报警信息发送异常:%e",e.getMessage()));
}
}
/**
*
* @param phoneNumbers
* @param alarmMsgTemplateParam
* @throws ExecutionException
* @throws InterruptedException
*/
private void AliSmsHandle(String phoneNumbers,AlarmMsgTemplateParam alarmMsgTemplateParam ) throws ExecutionException, InterruptedException {
StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
.accessKeyId(AccessKeyId)
.accessKeySecret(AccessKeySecret)
.build());
AsyncClient client = AsyncClient.builder()
.region("cn-shenzhen") // Region ID
.credentialsProvider(provider)
.overrideConfiguration(
ClientOverrideConfiguration.create()
.setEndpointOverride("dysmsapi.aliyuncs.com")
)
.build();
String jsonString = com.alibaba.fastjson2.JSONArray.toJSONString(alarmMsgTemplateParam);
SendSmsRequest sendSmsRequest = SendSmsRequest.builder()
.phoneNumbers(phoneNumbers)
.signName("深圳市金瑞铭科技")
.templateCode("SMS_468740027")
.templateParam(jsonString)
.build();
logger.info("向:{};发送报警信息:{}",phoneNumbers,jsonString);
CompletableFuture<SendSmsResponse> response = client.sendSms(sendSmsRequest);
SendSmsResponse resp = response.get();
client.close();
}
public static void main(String[] args) {
System.out.println(System.currentTimeMillis());

@ -33,10 +33,12 @@ spring:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
server-addr: 175.27.215.92:8848
namespace: jrm_iot_dev
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
server-addr: 175.27.215.92:8848
namespace: jrm_iot_dev
# 配置文件格式
file-extension: yml
# 共享配置

@ -32,6 +32,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="alarmTypeName" column="alarm_type_name" />
<result property="alarmLevelName" column="alarm_level_name" />
<result property="ruleDeviceName" column="device_name" />
<result property="triggerTimeFrame" column="trigger_time_frame" />
<result property="phoneNumbers" column="phone_numbers" />
</resultMap>
<resultMap id="HwAlarmRuleHwAlarmRuleLinkResult" type="HwAlarmRule" extends="HwAlarmRuleResult">
@ -51,13 +53,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectHwAlarmRuleVo">
select alarm_rule_id, alarm_rule_name, tenant_id, scene_id, language_code, alarm_level_id, alarm_type_id, rule_type, rule_device_id, rule_function_total, trigger_expression, link_flag, alarm_rule_status, alarm_push_flag, alarm_push_content, alarm_recover_content, remark, create_by, create_time, update_by, update_time, alarm_rule_field from hw_alarm_rule
select alarm_rule_id, alarm_rule_name, tenant_id, scene_id, language_code, alarm_level_id, alarm_type_id, rule_type, rule_device_id, rule_function_total, trigger_expression, link_flag, alarm_rule_status, alarm_push_flag, alarm_push_content, alarm_recover_content, remark, create_by, create_time, update_by, update_time, alarm_rule_field,trigger_time_frame,phone_numbers from hw_alarm_rule
</sql>
<select id="selectHwAlarmRulesWithLink" parameterType="HwAlarmRule" resultMap="HwAlarmRuleHwAlarmRuleLinkResult">
select a.alarm_rule_id, a.alarm_rule_name, a.tenant_id, a.scene_id, a.language_code, a.alarm_level_id, a.alarm_type_id, a.rule_type, a.rule_device_id, a.rule_function_total, a.trigger_expression, a.link_flag, a.alarm_rule_status, a.alarm_push_flag, a.alarm_push_content, a.alarm_recover_content, a.remark, a.create_by, a.create_time, a.update_by, a.update_time, a.alarm_rule_field,
b.rule_link_id as sub_rule_link_id, b.alarm_rule_id as sub_alarm_rule_id, b.link_type as sub_link_type, b.link_device_id as sub_link_device_id, b.link_device_function_id as sub_link_device_function_id, b.link_device_function_identifier as sub_link_device_function_identifier, b.link_device_function_data as sub_link_device_function_data
b.rule_link_id as sub_rule_link_id, b.alarm_rule_id as sub_alarm_rule_id, b.link_type as sub_link_type, b.link_device_id as sub_link_device_id, b.link_device_function_id as sub_link_device_function_id, b.link_device_function_identifier as sub_link_device_function_identifier, b.link_device_function_data as sub_link_device_function_data,a.trigger_time_frame,a.phone_numbers
from hw_alarm_rule a
left join hw_alarm_rule_link b on b.alarm_rule_id = a.alarm_rule_id and b.alarm_rule_type=1
<where>

@ -34,6 +34,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="deviceField" column="device_field" />
<result property="tenantId" column="tenant_id" />
<result property="onlineStatus" column="online_status" />
<result property="monitorUnitName" column="monitor_unit_name" />
</resultMap>
<sql id="selectHwDeviceVo">
@ -45,6 +46,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where device_code = #{deviceCode} limit 1
</select>
<select id="GetDeviceById" parameterType="Long" resultMap="HwDeviceResult">
select t1.device_code,
t1.device_name,
t2.monitor_unit_name,
t1.device_location,
t1.remark
from hw_device t1
left join hw_monitor_unit t2 on t1.monitor_unit_id = t2.monitor_unit_id
where t1.device_id = #{deviceCode} limit 1
</select>
<update id="updateHwDevice" parameterType="HwDevice">
update hw_device
<trim prefix="SET" suffixOverrides=",">

@ -29,7 +29,8 @@ spring:
nacos:
config:
# 配置中心地址
server-addr: 124.70.63.37:8848
server-addr: 175.27.215.92:8848
namespace: jrm_iot_dev
# 配置文件格式
file-extension: yml
# 共享配置

@ -329,6 +329,25 @@ public class TdEngineController {
return R.fail(e.getMessage());
}
}
@InnerAuth
@PostMapping("/getDeviceLocation")
public R<?> getDeviceLocation(@Validated @RequestBody TdSelectDto tdSelectDto) {
try {
return R.ok(this.tdEngineService.getDeviceLocation(tdSelectDto));
} catch (UncategorizedSQLException e) {
String message = e.getCause().getMessage();
try {
message = message.substring(message.lastIndexOf("invalid operation"));
} catch (Exception ex) {
}
log.error(message);
return R.fail(message);
} catch (Exception e) {
log.error(e.getMessage());
return R.fail(e.getMessage());
}
}
/**
* @return R<Map < String, Map < String, Object>>>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save