Merge remote-tracking branch 'origin/master'

dev
夜笙歌 1 year ago
commit 0599d0b418

@ -2,6 +2,8 @@ package com.ruoyi.tdengine.api.domain;
import com.ruoyi.common.core.web.domain.BaseEntity;
import java.util.List;
/**
* @Description:
* @ClassName: DeviceStatus
@ -26,6 +28,8 @@ public class DeviceStatus extends BaseEntity {
private Long startTime;
private Long endTime;
private List<TdField> schemaFields;
public Long getTs() {
return ts;
}
@ -89,4 +93,12 @@ public class DeviceStatus extends BaseEntity {
public void setEndTime(Long endTime) {
this.endTime = endTime;
}
public List<TdField> getSchemaFields() {
return schemaFields;
}
public void setSchemaFields(List<TdField> schemaFields) {
this.schemaFields = schemaFields;
}
}

@ -1,11 +1,7 @@
package com.ruoyi.system.api;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
@ -40,4 +36,17 @@ public interface RemoteUserService
*/
@PostMapping("/user/register")
public R<Boolean> registerUserInfo(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
/**
* @param: tenantId
* @description
* @author xins
* @date 2023-09-27 9:58
* @return R<Boolean>
*/
@PostMapping("/user/deleteUsersByTenantId/{tenantId}")
public R<Boolean> deleteUsersByTenantId(@PathVariable("tenantId") Long tenantId);
}

@ -36,6 +36,11 @@ public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserServ
{
return R.fail("注册用户失败:" + throwable.getMessage());
}
@Override
public R<Boolean> deleteUsersByTenantId(Long tenantId) {
return R.fail("删除用户失败:" + throwable.getMessage());
}
};
}
}

@ -33,7 +33,7 @@ public class HwDictConstants {
public static final String FUNCTION_MODE_SERVICE = "2";//设备模型功能模式服务
public static final String FUNCTION_MODE_EVENT = "3";//设备模型功能模式事件
public static final String RW_FLAG_RW = "1";//读写
public static final String RW_FLAG_RW = "1";//读写
public static final String RW_FLAG_READ = "2";//只读
public static final String DEVICE_STATUS_PUBLISH = "1";//设备状态:已发布
@ -54,7 +54,7 @@ public class HwDictConstants {
public static final String DEVICE_DEFAULT_FLAG_YES = "1";//默认是
public static final String DEVICE_DEFAULT_FLAG_NO = "0";//默认否
public static final Long ADMINISTRATOR_TENANT_ID = 0L;//金瑞铭租户ID
public static final Long ADMINISTRATOR_TENANT_ID = 1L;//金瑞铭租户ID
public static final String DEVICE_TYPE_GATEWAY_DEVICE = "1";//网关设备
public static final String DEVICE_TYPE_GATEWAY_SUB_EQUIPMENT = "2";//网关子设备
@ -83,9 +83,33 @@ public class HwDictConstants {
SCENE_MODE_ROUTER_MAP.put(SCENE_MODE_GPS, ROUTER_GPS);
}
public static final String DEVICE_ONLINE_STATUS_ONLINE="1";//在线状态
public static final String DEVICE_ONLINE_STATUS_OFFLINE="0"; //离线状态
public static final String DEVICE_ONLINE_STATUS_ONLINE = "1";//在线状态
public static final String DEVICE_ONLINE_STATUS_OFFLINE = "0"; //离线状态
public static final String ALARM_HANDLE_STATUS_YES = "1";//已处理
public static final String ALARM_HANDLE_STATUS_NO = "0";//未处理
public static final String SCENE_STATUS_NORMAL = "1";//场景正常状态
public static final String SCENE_STATUS_DELETED = "9";//场景删除状态
public static final String CONTROL_COMMAND_REDIS_KEY = "mqtt:channel:down";//下发控制指令到redis的key
public static final String CONTROL_COMMAND_TOPIC_VALUE = "/v1/{}/device/command";//下发控制指令的topic
public static final String CONTROL_COMMAND_TOPIC_KEY = "TOPIC";
public static final String CONTROL_COMMAND_PAYLOAD_KEY = "Payload";
public static final String CONTROL_COMMAND_PAYLOAD_MID_KEY = "mid";
public static final String CONTROL_COMMAND_PAYLOAD_TIMESTAMP_KEY = "timestamp";
public static final String CONTROL_COMMAND_PAYLOAD_TYPE_KEY = "type";
public static final String CONTROL_COMMAND_PAYLOAD_PARAM_KEY = "param";
public static final String DEVICEMODE_GPS_FLAG_NO="0";//设备模型,非定位模型
public static final String TENANT_STATUS_NORMAL = "1";//租户状态:正常
public static final String TENANT_STATUS_DELETED = "9";//租户状态:正常
public static final String TENANT_IS_REGISTER_EXTERNAL = "0";//租户是否外部注册:否
public static final String MONITOR_UNIT_STATUS_NORMAL = "1";//监控单元状态:正常
public static final String MONITORY_UNIT_STATUS_DELETE = "9";//监控单元状态,删除
}

@ -130,8 +130,6 @@ public class DataScopeAspect {
sqlString.append(StringUtils.format(" OR {}.dept_id = 0 ", deptAlias));
}
System.out.println("---"+ sqlString.toString());
Object params = joinPoint.getArgs()[0];
if (StringUtils.isNotNull(params) && params instanceof BaseEntity) {
BaseEntity baseEntity = (BaseEntity) params;
@ -139,7 +137,6 @@ public class DataScopeAspect {
baseEntity.getParams().put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")");
}
StringBuilder tenantFilterSql = getTenantFilterSql(user, tenantAlias);
System.out.println("------"+tenantFilterSql.toString());
if (StringUtils.isNotBlank(tenantFilterSql.toString())) {
baseEntity.getParams().put(TENANT_DATA_SCOPE, " AND (" + tenantFilterSql.substring(4) + ")");
}

@ -4,6 +4,7 @@ package com.ruoyi.basic.service.impl;
import com.ruoyi.basic.api.domain.HwTenant;
import com.ruoyi.basic.mapper.HwTenantMapper;
import com.ruoyi.basic.service.IHwTenantService;
import com.ruoyi.common.core.constant.HwDictConstants;
import com.ruoyi.common.core.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -43,6 +44,7 @@ public class HwTenantServiceImpl implements IHwTenantService
@Override
public List<HwTenant> selectHwTenantList(HwTenant hwTenant)
{
hwTenant.setTenantStatus(HwDictConstants.TENANT_STATUS_NORMAL);
return hwTenantMapper.selectHwTenantList(hwTenant);
}

@ -8,6 +8,7 @@ import javax.servlet.http.HttpServletResponse;
import com.ruoyi.business.domain.HwDeviceMode;
import com.ruoyi.business.domain.HwMonitorUnit;
import com.ruoyi.business.domain.HwScene;
import com.ruoyi.business.domain.VO.DeviceControlVo;
import com.ruoyi.business.domain.VO.DeviceModeVo;
import com.ruoyi.business.domain.VO.HwMonitorUnitVo;
import com.ruoyi.business.service.IHwDeviceModeService;
@ -46,8 +47,7 @@ import com.ruoyi.common.core.web.page.TableDataInfo;
*/
@RestController
@RequestMapping("/device")
public class HwDeviceController extends BaseController
{
public class HwDeviceController extends BaseController {
@Autowired
private IHwDeviceService hwDeviceService;
@ -65,24 +65,20 @@ public class HwDeviceController extends BaseController
*/
@RequiresPermissions("business:device:list")
@GetMapping("/list")
public TableDataInfo list(HwDevice hwDevice)
{
public TableDataInfo list(HwDevice hwDevice) {
startPage();
List<HwDevice> list = hwDeviceService.selectHwDeviceJoinList(hwDevice);
return getDataTable(list);
}
/**
*
*/
@RequiresPermissions("business:device:export")
@Log(title = "设备信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, HwDevice hwDevice)
{
public void export(HttpServletResponse response, HwDevice hwDevice) {
List<HwDevice> list = hwDeviceService.selectHwDeviceJoinList(hwDevice);
ExcelUtil<HwDevice> util = new ExcelUtil<HwDevice>(HwDevice.class);
util.exportExcel(response, list, "设备信息数据");
@ -93,8 +89,7 @@ public class HwDeviceController extends BaseController
*/
@RequiresPermissions("business:device:query")
@GetMapping(value = "/{deviceId}")
public AjaxResult getInfo(@PathVariable("deviceId") Long deviceId)
{
public AjaxResult getInfo(@PathVariable("deviceId") Long deviceId) {
return success(hwDeviceService.selectHwDeviceByDeviceId(deviceId));
}
@ -104,8 +99,7 @@ public class HwDeviceController extends BaseController
@RequiresPermissions("business:device:add")
@Log(title = "设备信息", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody HwDevice hwDevice)
{
public AjaxResult add(@RequestBody HwDevice hwDevice) {
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser user = loginUser.getSysUser();
hwDevice.setTenantId(user.getTenantId());
@ -119,8 +113,7 @@ public class HwDeviceController extends BaseController
@RequiresPermissions("business:device:edit")
@Log(title = "设备信息", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody HwDevice hwDevice)
{
public AjaxResult edit(@RequestBody HwDevice hwDevice) {
hwDevice.setUpdateBy(SecurityUtils.getUsername());
return toAjax(hwDeviceService.updateHwDevice(hwDevice));
}
@ -130,24 +123,26 @@ public class HwDeviceController extends BaseController
*/
@RequiresPermissions("business:device:remove")
@Log(title = "设备信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{deviceIds}")
public AjaxResult remove(@PathVariable Long[] deviceIds)
{
return toAjax(hwDeviceService.deleteHwDeviceByDeviceIds(deviceIds));
@DeleteMapping("/{deviceId}/{deviceType}")
public AjaxResult remove(@PathVariable("deviceId") Long deviceId
, @PathVariable("deviceType") String deviceType) {
if (deviceType.equals(HwDictConstants.DEVICE_TYPE_GATEWAY_DEVICE)
&& hwDeviceService.checkExistSubDevice(deviceId)) {
return warn("存在子设备,不允许删除");
}
return toAjax(hwDeviceService.deleteHwDeviceByDeviceId(deviceId));
}
@RequiresPermissions("business:device:list")
@GetMapping("/getScenes")
public AjaxResult getScenes(HwScene scene)
{
public AjaxResult getScenes(HwScene scene) {
return success(hwSceneService.selectHwSceneList(scene));
}
@RequiresPermissions("business:device:list")
@GetMapping("/getEditedScenes")
public AjaxResult getEditedScenes(HwScene scene)
{
public AjaxResult getEditedScenes(HwScene scene) {
return success(hwSceneService.selectHwSceneList4Select(scene));
}
@ -156,8 +151,7 @@ public class HwDeviceController extends BaseController
*/
@RequiresPermissions("business:device:list")
@GetMapping(value = {"/monitorUnitTree/", "/monitorUnitTree/{sceneId}"})
public AjaxResult monitorUnitTree(@PathVariable(value = "sceneId", required = false) Long sceneId)
{
public AjaxResult monitorUnitTree(@PathVariable(value = "sceneId", required = false) Long sceneId) {
HwMonitorUnit queryMonitorUnit = new HwMonitorUnit();
queryMonitorUnit.setSceneId(sceneId);
return success(hwMonitorUnitService.selectMonitorTreeList(queryMonitorUnit));
@ -165,8 +159,7 @@ public class HwDeviceController extends BaseController
@RequiresPermissions("business:device:list")
@GetMapping(value = {"/getDeviceModes/", "/getDeviceModes/{sceneId}"})
public AjaxResult getDeviceModes(@PathVariable(value = "sceneId", required = false) Long sceneId)
{
public AjaxResult getDeviceModes(@PathVariable(value = "sceneId", required = false) Long sceneId) {
HwDeviceMode queryDeviceMode = new HwDeviceMode();
queryDeviceMode.setSceneId(sceneId);
return success(hwDeviceModeService.selectHwDeviceModeList(queryDeviceMode));
@ -174,8 +167,7 @@ public class HwDeviceController extends BaseController
@RequiresPermissions("business:device:list")
@GetMapping(value = {"/getGatewayDevices/", "/getGatewayDevices/{sceneId}"})
public AjaxResult getGatewayDevices(@PathVariable(value = "sceneId", required = false) Long sceneId)
{
public AjaxResult getGatewayDevices(@PathVariable(value = "sceneId", required = false) Long sceneId) {
HwDevice queryHwDevice = new HwDevice();
queryHwDevice.setSceneId(sceneId);
queryHwDevice.setDeviceType(HwDictConstants.DEVICE_TYPE_GATEWAY_DEVICE);
@ -189,15 +181,25 @@ public class HwDeviceController extends BaseController
@RequiresPermissions("business:device:edit")
@Log(title = "设备管理", businessType = BusinessType.UPDATE)
@PutMapping("/changeDeviceStatus")
public AjaxResult changeDeviceStatus(@RequestBody HwDevice device)
{
public AjaxResult changeDeviceStatus(@RequestBody HwDevice device) {
device.setUpdateBy(SecurityUtils.getUsername());
device.setUpdateTime(new Date());
return toAjax(hwDeviceService.updateHwDevice(device));
return toAjax(hwDeviceService.changeDeviceStatus(device));
}
/**
*
*/
@RequiresPermissions("business:device:edit")
@Log(title = "下发设备控制指令", businessType = BusinessType.UPDATE)
@PutMapping("/publishControlCommand")
public AjaxResult publishControlCommand(@RequestBody DeviceControlVo deviceControlVo) {
hwDeviceService.publishControlCommand(deviceControlVo);
return success();
}
@GetMapping("/computeOnlineDevicecCount/{days}")
public void computeOnlineDevicecCount(@PathVariable("days") int days){
public void computeOnlineDevicecCount(@PathVariable("days") int days) {
hwDeviceService.computeOnlineDevicecCount(days);
}
}

@ -5,7 +5,6 @@ import com.ruoyi.business.domain.*;
import com.ruoyi.business.domain.VO.*;
import com.ruoyi.business.service.*;
import com.ruoyi.common.core.constant.HwDictConstants;
import com.ruoyi.common.core.constant.TdEngineConstants;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
@ -16,10 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/monitorPlatform")

@ -113,10 +113,18 @@ public class HwMonitorUnitController extends BaseController
*/
@RequiresPermissions("business:monitorUnit:remove")
@Log(title = "监控单元", businessType = BusinessType.DELETE)
@DeleteMapping("/{monitorUnitIds}")
public AjaxResult remove(@PathVariable Long[] monitorUnitIds)
@DeleteMapping("/{monitorUnitId}")
public AjaxResult remove(@PathVariable Long monitorUnitId)
{
return toAjax(hwMonitorUnitService.deleteHwMonitorUnitByMonitorUnitIds(monitorUnitIds));
if (hwMonitorUnitService.hasChildByMonitorUnitId(monitorUnitId))
{
return warn("存在下级监单元,不允许删除");
}
if (hwMonitorUnitService.checkMonitorUnitExistDevice(monitorUnitId))
{
return warn("监控单元存在设备,不允许删除");
}
return toAjax(hwMonitorUnitService.deleteHwMonitorUnitByMonitorUnitId(monitorUnitId));
}
@ -136,22 +144,14 @@ public class HwMonitorUnitController extends BaseController
@RequiresPermissions("business:monitorUnit:list")
@GetMapping("/getMonitorUnitTypes")
public AjaxResult getMonitorUnitTypes(HwMonitorUnitType monitorUnitType)
@GetMapping(value = {"/getMonitorUnitTypes/", "/getMonitorUnitTypes/{sceneId}"})
public AjaxResult getMonitorUnitTypes(@PathVariable(value = "sceneId", required = false) Long sceneId)
{
HwMonitorUnitType monitorUnitType = new HwMonitorUnitType();
monitorUnitType.setSceneId(sceneId);
return success(monitorUnitTypeService.selectHwMonitorUnitTypeList(monitorUnitType));
}
@RequiresPermissions("business:monitorUnit:list")
@GetMapping("/getEditedMonitorUnitTypes")
public AjaxResult getEditedMonitorUnitTypes(HwMonitorUnitType monitorUnitType)
{
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser user = loginUser.getSysUser();
monitorUnitType.setTenantId(user.getTenantId());
return success(monitorUnitTypeService.selectHwMonitorUnitTypeList4Select(monitorUnitType));
}
/**
*
*/
@ -159,9 +159,10 @@ public class HwMonitorUnitController extends BaseController
@GetMapping("/getEditedMonitorUnits")
public AjaxResult getEditedMonitorUnits(HwMonitorUnit hwMonitorUnit)
{
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser user = loginUser.getSysUser();
hwMonitorUnit.setTenantId(user.getTenantId());
// LoginUser loginUser = SecurityUtils.getLoginUser();
// SysUser user = loginUser.getSysUser();
// hwMonitorUnit.setTenantId(user.getTenantId());
//前端传场景ID根据场景ID过滤
List<HwMonitorUnit> list = hwMonitorUnitService.selectHwMonitorUnitList(hwMonitorUnit);
return success(list);
}

@ -5,6 +5,7 @@ import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.core.constant.HwDictConstants;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
@ -47,12 +48,7 @@ public class HwTenantController extends BaseController
@GetMapping("/list")
public TableDataInfo list(HwTenant hwTenant)
{
List<HwTenant> list = new ArrayList<HwTenant>();
startPage();
//todo 放到add中
list = hwTenantService.selectHwTenantList(hwTenant);
return getDataTable(list);
return getDataTable(hwTenantService.selectHwTenantList(hwTenant));
}
/**
@ -86,10 +82,8 @@ public class HwTenantController extends BaseController
@PostMapping
public AjaxResult add(@RequestBody HwTenant hwTenant)
{
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser();
hwTenant.setIsRegister("0");
hwTenant.setCreateBy(sysUser.getNickName());
hwTenant.setIsRegister(HwDictConstants.TENANT_IS_REGISTER_EXTERNAL);
hwTenant.setCreateBy(SecurityUtils.getUsername());
return toAjax(hwTenantService.insertHwTenant(hwTenant));
}
@ -100,10 +94,8 @@ public class HwTenantController extends BaseController
@Log(title = "租户信息", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody HwTenant hwTenant)
{LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser();
hwTenant.setUpdateBy(sysUser.getNickName());
{
hwTenant.setUpdateBy(SecurityUtils.getUsername());
return toAjax(hwTenantService.updateHwTenant(hwTenant));
}

@ -168,6 +168,8 @@ public class HwDevice extends BaseEntity {
private String deviceModeName;
private String tenantName;
private String gpsFlag;
public void setDeviceId(Long deviceId) {
this.deviceId = deviceId;
@ -393,6 +395,14 @@ public class HwDevice extends BaseEntity {
this.tenantName = tenantName;
}
public String getGpsFlag() {
return gpsFlag;
}
public void setGpsFlag(String gpsFlag) {
this.gpsFlag = gpsFlag;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)

@ -59,7 +59,7 @@ public class HwMonitorUnit extends BaseEntity
/** 状态 */
@Excel(name = "状态")
private Long monitorUnitStatus;
private String monitorUnitStatus;
/** 预留字段 */
@Excel(name = "预留字段")
@ -181,12 +181,12 @@ public class HwMonitorUnit extends BaseEntity
{
return preserveTime;
}
public void setMonitorUnitStatus(Long monitorUnitStatus)
public void setMonitorUnitStatus(String monitorUnitStatus)
{
this.monitorUnitStatus = monitorUnitStatus;
}
public Long getMonitorUnitStatus()
public String getMonitorUnitStatus()
{
return monitorUnitStatus;
}

@ -58,7 +58,7 @@ public interface HwDeviceMapper
public int updateHwDevice(HwDevice hwDevice);
/**
*
* ()
*
* @param deviceId
* @return
@ -66,7 +66,7 @@ public interface HwDeviceMapper
public int deleteHwDeviceByDeviceId(Long deviceId);
/**
*
*
*
* @param deviceIds
* @return
@ -88,4 +88,14 @@ public interface HwDeviceMapper
* @return
*/
public List<HwDevice> selectHwDeviceJoinList(HwDevice hwDevice);
/**
* @param: releatedDeviceId
* @description
* @author xins
* @date 2023-09-27 15:29
* @return int
*/
public int checkExistSubDevice(Long releatedDeviceId);
}

@ -68,6 +68,14 @@ public interface HwElectronicFenceMapper
*/
public int deleteHwElectronicFenceByElectronicFenceId(Long electronicFenceId);
/**
* @param: electronicFenceIds
* @description fencearea
* @author xins
* @date 2023-09-27 16:10
* @return int
*/
public int deleteHwFenceAreaByElectronicFenceIds(Long[] electronicFenceIds);
/**
*
*

@ -138,4 +138,29 @@ public interface HwMonitorUnitMapper
*/
public HwMonitorUnit selectHwMonitorUnitJoinByMonitorUnitId(Long monitorUnitId);
/**
*
*
* @param monitorUnitId ID
* @return
*/
public int hasChildByMonitorUnitId(Long monitorUnitId);
/**
*
*
* @param monitorUnitId ID
* @return
*/
public int checkMonitorUnitExistDevice(Long monitorUnitId);
/**
*
*
* @param monitorUnitId ID
* @return
*/
public int deleteMonitorUnitById(Long monitorUnitId);
}

@ -73,6 +73,14 @@ public interface IHwDeviceService
*/
public int updateHwDevice(HwDevice hwDevice);
/**
*
*
* @param hwDevice
* @return
*/
public int changeDeviceStatus(HwDevice hwDevice);
/**
*
*
@ -81,6 +89,14 @@ public interface IHwDeviceService
*/
public int deleteHwDeviceByDeviceIds(Long[] deviceIds);
/**
*
*
* @param releatedDeviceId ID
* @return true false
*/
public boolean checkExistSubDevice(Long releatedDeviceId);
/**
*
*
@ -89,7 +105,6 @@ public interface IHwDeviceService
*/
public int deleteHwDeviceByDeviceId(Long deviceId);
/**
* @return Map<String,List<HwDeviceVo>>
* @description

@ -90,6 +90,30 @@ public interface IHwMonitorUnitService
*/
public int updateHwMonitorUnit(HwMonitorUnit hwMonitorUnit);
/**
*
*
* @param monitorUnitId ID
* @return
*/
public boolean hasChildByMonitorUnitId(Long monitorUnitId);
/**
*
*
* @param monitorUnitId ID
* @return true false
*/
public boolean checkMonitorUnitExistDevice(Long monitorUnitId);
/**
*
*
* @param monitorUnitId ID
* @return
*/
public int deleteMonitorUnitById(Long monitorUnitId);
/**
*
*

@ -20,9 +20,6 @@ public interface IHwSceneService
*/
public HwScene selectHwSceneBySceneId(Long sceneId);
public List<HwScene> selectHwSceneBySceneModeId(Long sceneModeId);
/**
*
*

@ -263,10 +263,12 @@ public class HwDeviceModeServiceImpl implements IHwDeviceModeService {
queryHwDevice.setDeviceStatus(HwDictConstants.DEVICE_STATUS_PUBLISH);
List<HwDevice> hwDevices = hwDeviceMapper.selectHwDeviceList(queryHwDevice);
if (hwDevices.size() > 0) {
throw new ServiceException("已有已发布状态设备关联,不能修改");
throw new ServiceException("此设备模型已存在设备,不能修改");
}
//校验有没有重复标识符
checkDuplicateIdentifiers(hwDeviceModeFunction);
hwDeviceModeMapper.deleteHwDeviceModeParameterByModeFunctionId(hwDeviceModeFunction.getModeFunctionId());
List<HwDeviceModeFunction> hwDeviceModeFunctions = new ArrayList<>();
hwDeviceModeFunctions.add(hwDeviceModeFunction);

@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.shaded.com.google.gson.JsonObject;
import com.ruoyi.business.domain.HwDevice;
import com.ruoyi.business.domain.HwDeviceMode;
import com.ruoyi.business.domain.HwDeviceModeFunction;
import com.ruoyi.business.domain.HwScene;
import com.ruoyi.business.domain.VO.DeviceControlVo;
@ -12,6 +13,7 @@ import com.ruoyi.business.domain.VO.DeviceModeVo;
import com.ruoyi.business.domain.VO.HwDeviceVo;
import com.ruoyi.business.mapper.HwDeviceMapper;
import com.ruoyi.business.mapper.HwDeviceModeFunctionMapper;
import com.ruoyi.business.mapper.HwDeviceModeMapper;
import com.ruoyi.business.mapper.HwSceneMapper;
import com.ruoyi.business.service.IHwDeviceService;
import com.ruoyi.common.core.constant.Constants;
@ -46,6 +48,8 @@ public class HwDeviceServiceImpl implements IHwDeviceService {
@Autowired
private HwDeviceMapper hwDeviceMapper;
@Autowired
private HwDeviceModeMapper hwDeviceModeMapper;
@Autowired
private HwSceneMapper hwSceneMapper;
@Autowired
private HwDeviceModeFunctionMapper hwDevieModeFunctionMapper;
@ -75,7 +79,13 @@ public class HwDeviceServiceImpl implements IHwDeviceService {
@Override
public HwDevice selectHwDeviceJoinByDeviceId(Long deviceId) {
return hwDeviceMapper.selectHwDeviceJoinByDeviceId(deviceId);
HwDevice device = hwDeviceMapper.selectHwDeviceJoinByDeviceId(deviceId);
Long deviceModeId = device.getDeviceModeId();
if (deviceModeId != null) {
HwDeviceMode mode = hwDeviceModeMapper.selectHwDeviceModeByDeviceModeId(deviceModeId);
device.setGpsFlag(mode != null ? mode.getGpsFlag() : HwDictConstants.DEVICEMODE_GPS_FLAG_NO);
}
return device;
}
/**
@ -317,6 +327,58 @@ public class HwDeviceServiceImpl implements IHwDeviceService {
return rows;
}
/**
*
*
* @param hwDevice
* @return
*/
@Override
public int changeDeviceStatus(HwDevice hwDevice) {
HwDevice dbDevice = hwDeviceMapper.selectHwDeviceByDeviceId(hwDevice.getDeviceId());
if (dbDevice.getDeviceStatus().equals(HwDictConstants.DEVICE_STATUS_PUBLISH)) {
throw new ServiceException("已发布状态不能修改");
}
hwDevice.setUpdateTime(DateUtils.getNowDate());
return hwDeviceMapper.updateHwDevice(hwDevice);
}
/**
* @param: deviceControlVo
* @description
* @author xins
* @date 2023-09-25 14:56
*/
@Override
public void publishControlCommand(DeviceControlVo deviceControlVo) {
JSONObject controlCommandJson = new JSONObject();
StringBuilder controlCommandTopic = new StringBuilder();
Long deviceId = deviceControlVo.getDeviceId();
HwDevice device = hwDeviceMapper.selectHwDeviceByDeviceId(deviceId);
String deviceType = device.getDeviceType();
if (deviceType.equals(HwDictConstants.DEVICE_TYPE_GATEWAY_SUB_EQUIPMENT)) {
Long gatewayDeviceId = device.getReleatedDeviceId();
HwDevice gatewayDevice = hwDeviceMapper.selectHwDeviceByDeviceId(gatewayDeviceId);
controlCommandTopic.append(StringUtils
.format(HwDictConstants.CONTROL_COMMAND_TOPIC_VALUE, gatewayDevice.getDeviceCode()));
} else {
controlCommandTopic.append(StringUtils
.format(HwDictConstants.CONTROL_COMMAND_TOPIC_VALUE, device.getDeviceCode()));
}
JSONObject payloadJson = new JSONObject();
payloadJson.put(HwDictConstants.CONTROL_COMMAND_PAYLOAD_MID_KEY, device.getDeviceCode());
payloadJson.put(HwDictConstants.CONTROL_COMMAND_PAYLOAD_TIMESTAMP_KEY, System.currentTimeMillis() / 1000);//单位s
payloadJson.put(HwDictConstants.CONTROL_COMMAND_PAYLOAD_TYPE_KEY, deviceControlVo.getType());
payloadJson.put(HwDictConstants.CONTROL_COMMAND_PAYLOAD_PARAM_KEY, "{}");
controlCommandJson.put(HwDictConstants.CONTROL_COMMAND_TOPIC_KEY, controlCommandTopic.toString());
controlCommandJson.put(HwDictConstants.CONTROL_COMMAND_PAYLOAD_KEY, payloadJson.toString());
System.out.println("---" + controlCommandJson.toString());
redisTemplate.convertAndSend(HwDictConstants.CONTROL_COMMAND_REDIS_KEY, controlCommandJson.toString());
}
/**
* @param: hwDevice
* @param: dbDevice
@ -384,13 +446,27 @@ public class HwDeviceServiceImpl implements IHwDeviceService {
}
/**
*
*
*
* @param releatedDeviceId ID
* @return true false
*/
@Override
public boolean checkExistSubDevice(Long releatedDeviceId)
{
int result = hwDeviceMapper.checkExistSubDevice(releatedDeviceId);
return result > 0;
}
/**
*
*
* @param deviceId
* @return
*/
@Override
public int deleteHwDeviceByDeviceId(Long deviceId) {
return hwDeviceMapper.deleteHwDeviceByDeviceId(deviceId);
}
@ -494,8 +570,6 @@ public class HwDeviceServiceImpl implements IHwDeviceService {
hwDeviceVo.setDeviceName(hwDevice.getDeviceName());
hwDeviceVo.setDeviceType(HwDictConstants.ACQUISITION_DEVICE);
hwDeviceVo.setDeviceDataMap(ddValueMap);
//TODO:去掉下边一行
ddValueMap.put("ii", "http://175.27.215.92:9665/statics/2023/09/23/6793e53d7418643c6ea9abe29be2bdce_20230923183352A001.jpg");
acquisitionDeviceVos.add(hwDeviceVo);
});
@ -553,50 +627,76 @@ public class HwDeviceServiceImpl implements IHwDeviceService {
}
private Map<Long, Integer> computeDeviceCountPerDay(Long startTime, Long endTime) {
//先增加需要查询的字段名称由于tdengine用last和last_row查询时字段显示有bug所以需要设置要查询的字段
List<TdField> schemaFields = new ArrayList<TdField>();
TdField deviceTypeField = new TdField();
deviceTypeField.setFieldName(TdEngineConstants.ST_TAG_DEVICETYPE);
TdField onlineStatusField = new TdField();
onlineStatusField.setFieldName(TdEngineConstants.ST_TAG_ONLINESTATUS);
schemaFields.add(deviceTypeField);
schemaFields.add(onlineStatusField);
DeviceStatus queryGroupStatus = new DeviceStatus();
queryGroupStatus.setStartTime(startTime);
queryGroupStatus.setEndTime(endTime);
queryGroupStatus.setSchemaFields(schemaFields);
DeviceStatus queryLastStatus = new DeviceStatus();
queryLastStatus.setEndTime(startTime);
queryLastStatus.setSchemaFields(schemaFields);
// System.out.println(DateUtils.dateTime(new Date(startTime)) + "----" + DateUtils.dateTime(new Date(endTime)));
Map<Long, Integer> onlineDeviceCountByDay = new HashMap<Long, Integer>();
//先获取starttime和endtime时间范围内在线的设备状态信息
Map<Long, List<DeviceStatus>> groupDeviceStatuMapList =
(Map<Long, List<DeviceStatus>>) this.remoteTdEngineService.getOnlineDevicesGroupByDay(queryGroupStatus).getData();
if (groupDeviceStatuMapList == null) {
groupDeviceStatuMapList = new HashMap<>();
}
//获取在endtime之前最后的设备状态信息有些设备会一直在线没有连续的上线下线记录所以要获取最近的设备状态信息来补齐后面的设备在线情况
List<Map<String, Object>> lastDeviceStatuMapList =
(List<Map<String, Object>>) this.remoteTdEngineService.getLastOnlineDevices(queryLastStatus).getData();
for (Map<String, Object> groupDeviceStatuMap : lastDeviceStatuMapList) {
DeviceStatus ds = new DeviceStatus();
for (Map.Entry<String, Object> entry : groupDeviceStatuMap.entrySet()) {
if (entry.getKey().equals(TdEngineConstants.ST_TAG_DEVICEID)) {
ds.setDeviceId((long) (Integer) entry.getValue());
} else if (entry.getKey().equals(TdEngineConstants.ST_TAG_DEVICETYPE)) {
ds.setDeviceType((Integer) entry.getValue());
} else if (entry.getKey().equals(TdEngineConstants.ST_TAG_ONLINESTATUS)) {
ds.setOnlineStatus((Integer) entry.getValue());
if (lastDeviceStatuMapList == null || lastDeviceStatuMapList.isEmpty()) {
onlineDeviceCountByDay.put(startTime, 0);
} else {
for (Map<String, Object> groupDeviceStatuMap : lastDeviceStatuMapList) {
DeviceStatus ds = new DeviceStatus();
for (Map.Entry<String, Object> entry : groupDeviceStatuMap.entrySet()) {
switch (entry.getKey()) {
case TdEngineConstants.ST_TAG_DEVICEID:
ds.setDeviceId((long) (Integer) entry.getValue());
break;
case TdEngineConstants.ST_TAG_DEVICETYPE:
ds.setDeviceType((Integer) entry.getValue());
break;
case TdEngineConstants.ST_TAG_ONLINESTATUS:
ds.setOnlineStatus((Integer) entry.getValue());
break;
default:
break;
}
}
}
List<DeviceStatus> dss = groupDeviceStatuMapList.get(ds.getDeviceId());
int count = 0;
if (dss == null) {
if (String.valueOf(ds.getOnlineStatus())
.equals(HwDictConstants.DEVICE_ONLINE_STATUS_ONLINE)) {
count = this.getDeviceCount(ds);
List<DeviceStatus> dss = groupDeviceStatuMapList.get(ds.getDeviceId());
int count = 0;
if (dss == null) {
if (String.valueOf(ds.getOnlineStatus())
.equals(HwDictConstants.DEVICE_ONLINE_STATUS_ONLINE)) {
count = this.getDeviceCount(ds);
}
} else {
count = this.getDeviceCount(dss.get(0));
}
} else {
count = this.getDeviceCount(dss.get(0));
}
if (onlineDeviceCountByDay.get(startTime) == null) {
onlineDeviceCountByDay.put(startTime, count);
} else {
onlineDeviceCountByDay.put(startTime, onlineDeviceCountByDay.get(startTime) + count);
if (onlineDeviceCountByDay.get(startTime) == null) {
onlineDeviceCountByDay.put(startTime, count);
} else {
onlineDeviceCountByDay.put(startTime, onlineDeviceCountByDay.get(startTime) + count);
}
}
}
@ -646,16 +746,4 @@ public class HwDeviceServiceImpl implements IHwDeviceService {
}
/**
* @param: deviceControlVo
* @description
* @author xins
* @date 2023-09-25 14:56
*/
@Override
public void publishControlCommand(DeviceControlVo deviceControlVo) {
String channel = "";
String message = "";
redisTemplate.convertAndSend(channel, message);
}
}

@ -312,8 +312,11 @@ public class HwElectronicFenceServiceImpl implements IHwElectronicFenceService {
* @return
*/
@Override
@Transactional
public int deleteHwElectronicFenceByElectronicFenceIds(Long[] electronicFenceIds) {
return hwElectronicFenceMapper.deleteHwElectronicFenceByElectronicFenceIds(electronicFenceIds);
int rows = hwElectronicFenceMapper.deleteHwElectronicFenceByElectronicFenceIds(electronicFenceIds);
hwElectronicFenceMapper.deleteHwFenceAreaByElectronicFenceIds(electronicFenceIds);
return rows;
}
/**

@ -9,6 +9,7 @@ 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;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.NumberUtils;
@ -172,6 +173,7 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
*/
@Override
public List<HwMonitorUnit> selectHwMonitorUnitList(HwMonitorUnit hwMonitorUnit) {
hwMonitorUnit.setMonitorUnitStatus(HwDictConstants.MONITOR_UNIT_STATUS_NORMAL);
return hwMonitorUnitMapper.selectHwMonitorUnitList(hwMonitorUnit);
}
@ -250,6 +252,9 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
public int insertHwMonitorUnit(HwMonitorUnit hwMonitorUnit) {
this.checkRelatedDevices(hwMonitorUnit);
hwMonitorUnit.setCreateTime(DateUtils.getNowDate());
if(hwMonitorUnit.getParentId()==null){
hwMonitorUnit.setParentId(0L);
}
return hwMonitorUnitMapper.insertHwMonitorUnit(hwMonitorUnit);
}
@ -266,6 +271,44 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
return hwMonitorUnitMapper.updateHwMonitorUnit(hwMonitorUnit);
}
/**
*
*
* @param monitorUnitId ID
* @return
*/
@Override
public boolean hasChildByMonitorUnitId(Long monitorUnitId)
{
int result = hwMonitorUnitMapper.hasChildByMonitorUnitId(monitorUnitId);
return result > 0;
}
/**
*
*
* @param monitorUnitId ID
* @return true false
*/
@Override
public boolean checkMonitorUnitExistDevice(Long monitorUnitId)
{
int result = hwMonitorUnitMapper.checkMonitorUnitExistDevice(monitorUnitId);
return result > 0;
}
/**
*
*
* @param monitorUnitId ID
* @return
*/
@Override
public int deleteMonitorUnitById(Long monitorUnitId)
{
return hwMonitorUnitMapper.deleteMonitorUnitById(monitorUnitId);
}
/**
*
*
@ -384,6 +427,7 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
@Override
@DataScope(tenantAlias = "hmu")
public List<HwMonitorUnit> selectHwMonitorUnitJoinList(HwMonitorUnit hwMonitorUnit) {
hwMonitorUnit.setMonitorUnitStatus(HwDictConstants.MONITOR_UNIT_STATUS_NORMAL);
return hwMonitorUnitMapper.selectHwMonitorUnitJoinList(hwMonitorUnit);
}

@ -2,7 +2,10 @@ package com.ruoyi.business.service.impl;
import java.util.List;
import com.ruoyi.business.domain.HwMonitorUnit;
import com.ruoyi.business.domain.VO.HwMonitorUnitVo;
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 org.springframework.beans.factory.annotation.Autowired;
@ -18,11 +21,13 @@ import com.ruoyi.business.service.IHwMonitorUnitTypeService;
* @date 2023-08-31
*/
@Service
public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService
{
public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService {
@Autowired
private HwMonitorUnitTypeMapper hwMonitorUnitTypeMapper;
@Autowired
private HwMonitorUnitMapper hwMonitorUnitMapper;
/**
*
*
@ -30,8 +35,7 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService
* @return
*/
@Override
public HwMonitorUnitType selectHwMonitorUnitTypeByMonitorUnitTypeId(Long monitorUnitTypeId)
{
public HwMonitorUnitType selectHwMonitorUnitTypeByMonitorUnitTypeId(Long monitorUnitTypeId) {
return hwMonitorUnitTypeMapper.selectHwMonitorUnitTypeByMonitorUnitTypeId(monitorUnitTypeId);
}
@ -43,8 +47,7 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService
*/
@Override
@DataScope(tenantAlias = "hmut")
public List<HwMonitorUnitType> selectHwMonitorUnitTypeList(HwMonitorUnitType hwMonitorUnitType)
{
public List<HwMonitorUnitType> selectHwMonitorUnitTypeList(HwMonitorUnitType hwMonitorUnitType) {
return hwMonitorUnitTypeMapper.selectHwMonitorUnitTypeList(hwMonitorUnitType);
}
@ -56,8 +59,7 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService
* @return
*/
@Override
public int insertHwMonitorUnitType(HwMonitorUnitType hwMonitorUnitType)
{
public int insertHwMonitorUnitType(HwMonitorUnitType hwMonitorUnitType) {
hwMonitorUnitType.setCreateTime(DateUtils.getNowDate());
return hwMonitorUnitTypeMapper.insertHwMonitorUnitType(hwMonitorUnitType);
}
@ -69,8 +71,7 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService
* @return
*/
@Override
public int updateHwMonitorUnitType(HwMonitorUnitType hwMonitorUnitType)
{
public int updateHwMonitorUnitType(HwMonitorUnitType hwMonitorUnitType) {
hwMonitorUnitType.setUpdateTime(DateUtils.getNowDate());
return hwMonitorUnitTypeMapper.updateHwMonitorUnitType(hwMonitorUnitType);
}
@ -82,8 +83,15 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService
* @return
*/
@Override
public int deleteHwMonitorUnitTypeByMonitorUnitTypeIds(Long[] monitorUnitTypeIds)
{
public int deleteHwMonitorUnitTypeByMonitorUnitTypeIds(Long[] monitorUnitTypeIds) {
for (Long monitorUnitTypeId : monitorUnitTypeIds) {
HwMonitorUnit queryMonitorUnit = new HwMonitorUnit();
queryMonitorUnit.setMonitorUnitTypeId(monitorUnitTypeId);
List<HwMonitorUnit> monitorUnits = hwMonitorUnitMapper.selectHwMonitorUnitList(queryMonitorUnit);
if (monitorUnits != null && monitorUnits.size() > 0) {
throw new ServiceException("所选择删除的监控单元类型已关联监控单元,不能删除");
}
}
return hwMonitorUnitTypeMapper.deleteHwMonitorUnitTypeByMonitorUnitTypeIds(monitorUnitTypeIds);
}
@ -94,8 +102,7 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService
* @return
*/
@Override
public int deleteHwMonitorUnitTypeByMonitorUnitTypeId(Long monitorUnitTypeId)
{
public int deleteHwMonitorUnitTypeByMonitorUnitTypeId(Long monitorUnitTypeId) {
return hwMonitorUnitTypeMapper.deleteHwMonitorUnitTypeByMonitorUnitTypeId(monitorUnitTypeId);
}
@ -105,7 +112,7 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService
* @param hwMonitorUnitType
* @return
*/
public List<HwMonitorUnitType> selectHwMonitorUnitTypeList4Select(HwMonitorUnitType hwMonitorUnitType){
public List<HwMonitorUnitType> selectHwMonitorUnitTypeList4Select(HwMonitorUnitType hwMonitorUnitType) {
return hwMonitorUnitTypeMapper.selectHwMonitorUnitTypeList(hwMonitorUnitType);
}
@ -117,8 +124,7 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService
*/
@Override
@DataScope(tenantAlias = "hmut")
public List<HwMonitorUnitType> selectHwMonitorUnitTypeJoinList(HwMonitorUnitType hwMonitorUnitType)
{
public List<HwMonitorUnitType> selectHwMonitorUnitTypeJoinList(HwMonitorUnitType hwMonitorUnitType) {
return hwMonitorUnitTypeMapper.selectHwMonitorUnitTypeJoinList(hwMonitorUnitType);
}

@ -64,12 +64,6 @@ public class HwSceneServiceImpl implements IHwSceneService {
return hwSceneMapper.selectHwSceneBySceneId(sceneId);
}
@Override
public List<HwScene> selectHwSceneBySceneModeId(Long sceneModeId) {
List<HwScene> hwScenes = hwSceneMapper.selectHwSceneBySceneModeId(sceneModeId);
return hwScenes;
}
/**
*
@ -80,6 +74,7 @@ public class HwSceneServiceImpl implements IHwSceneService {
@Override
@DataScope(tenantAlias = "hs")
public List<HwScene> selectHwSceneList(HwScene hwScene) {
hwScene.setSceneStatus(HwDictConstants.SCENE_STATUS_NORMAL);
List<HwScene> scenes = hwSceneMapper.selectHwSceneList(hwScene);
boolean defaultFlag = false;
for (HwScene scene : scenes) {
@ -97,6 +92,7 @@ public class HwSceneServiceImpl implements IHwSceneService {
@Override
public List<HwSceneVo> selectHwSceneJoinList(HwSceneVo hwScene) {
hwScene.setSceneStatus(HwDictConstants.SCENE_STATUS_NORMAL);
return hwSceneMapper.selectHwSceneVoList(hwScene);
}
@ -112,7 +108,6 @@ public class HwSceneServiceImpl implements IHwSceneService {
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser();
hwScene.setCreateBy(sysUser.getUserName());
hwScene.setTenantId(sysUser.getTenantId());
if (hwScene.getPreserveTime() == null) {
hwScene.setPreserveTime(new BigDecimal(90));
@ -120,13 +115,16 @@ public class HwSceneServiceImpl implements IHwSceneService {
if (hwScene.getTestPreserveTime() == null) {
hwScene.setTestPreserveTime(new BigDecimal(30));
}
// String randomKey = RandomStringUtils.random(12, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789");
// String randomSecret = RandomStringUtils.random(16, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789");
// hwScene.setModeKey(randomKey);
// hwScene.setModeSecret(randomSecret);
String randomAccount = RandomStringUtils.random(6, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789");
String randomKey = RandomStringUtils.random(12, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789");
hwScene.setModeAccount(randomAccount);
hwScene.setModeKey(randomKey);
hwScene.setCreateTime(DateUtils.getNowDate());
int rows = hwSceneMapper.insertHwScene(hwScene);
this.updateDefaultFlag(hwScene);
this.createTdDatabase(hwScene);
return rows;
}
@ -148,20 +146,10 @@ public class HwSceneServiceImpl implements IHwSceneService {
@Override
@Transactional
public int updateHwScene(HwScene hwScene) {
if (hwScene.getDefaultFlag().equals(HwDictConstants.SCENE_DEFAULT_FLAG_YES)) {
HwScene queryScene = new HwScene();
queryScene.setTenantId(hwScene.getTenantId());
List<HwScene> dbScenes = hwSceneMapper.selectHwSceneList(queryScene);
if (dbScenes != null && dbScenes.isEmpty()) {
dbScenes.forEach(dbScene -> {
dbScene.setDefaultFlag(HwDictConstants.SCENE_DEFAULT_FLAG_NO);
hwSceneMapper.updateHwScene(dbScene);
});
}
}
this.updateDefaultFlag(hwScene);
hwScene.setUpdateTime(DateUtils.getNowDate());
int rows = hwSceneMapper.updateHwScene(hwScene);
int rows = hwSceneMapper.updateHwScene(hwScene);
this.updateRedisAuth(hwScene);
return rows;
}
@ -222,11 +210,13 @@ public class HwSceneServiceImpl implements IHwSceneService {
*/
@Override
public int deleteHwSceneBySceneIds(Long[] sceneIds) {
List<Long> list = new ArrayList<>();
for (int i = 0; i < sceneIds.length; i++) {
list.add(sceneIds[i]);
for (Long sceneId : sceneIds) {
HwScene scene = hwSceneMapper.selectHwSceneBySceneId(sceneId);
scene.setSceneStatus(HwDictConstants.SCENE_STATUS_DELETED);
hwSceneMapper.updateHwScene(scene);
//TODO:后面可以增加更新redis的auth信息并且删除tdengine的database
}
return hwSceneMapper.deleteHwSceneBySceneIds(sceneIds);
return 1;
}
/**
@ -250,16 +240,44 @@ public class HwSceneServiceImpl implements IHwSceneService {
public List<HwScene> selectHwSceneList4Select(HwScene hwScene) {
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser user = loginUser.getSysUser();
hwScene.setTenantId(user.getTenantId());
List<HwScene> scenes = hwSceneMapper.selectHwSceneList(hwScene);
scenes.forEach(s ->{
if(!s.getTenantId().equals( user.getTenantId())){
s.setSelectedDisable("1");
}
});
//如果不是管理租户,需要过滤
if(!user.getTenantId().equals(HwDictConstants.ADMINISTRATOR_TENANT_ID)){
hwScene.setTenantId(user.getTenantId());
}
List<HwScene> scenes = hwSceneMapper.selectHwSceneList(hwScene);
//如果是管理员租户,则需要过滤不是自己的只能显示,不能选择
if(user.getTenantId().equals(HwDictConstants.ADMINISTRATOR_TENANT_ID)) {
scenes.forEach(s -> {
if (!s.getTenantId().equals(user.getTenantId())) {
s.setSelectedDisable("1");
}
});
}
return scenes;
}
/**
* @param: hwScene
* @description
* @author xins
* @date 2023-09-26 18:19
*/
private void updateDefaultFlag(HwScene hwScene) {
if (hwScene.getDefaultFlag().equals(HwDictConstants.SCENE_DEFAULT_FLAG_YES)) {
HwScene queryScene = new HwScene();
queryScene.setTenantId(hwScene.getTenantId());
List<HwScene> dbScenes = hwSceneMapper.selectHwSceneList(queryScene);
if (dbScenes != null && !dbScenes.isEmpty()) {
dbScenes.forEach(dbScene -> {
if (hwScene.getSceneId() == null || (hwScene.getSceneId() != null &&
!hwScene.getSceneId().equals(dbScene.getSceneId()))) {
dbScene.setDefaultFlag(HwDictConstants.SCENE_DEFAULT_FLAG_NO);
hwSceneMapper.updateHwScene(dbScene);
}
});
}
}
}
}

@ -1,96 +1,118 @@
package com.ruoyi.business.service.impl;
import java.util.List;
import com.ruoyi.business.domain.HwTenant;
import com.ruoyi.business.mapper.HwTenantMapper;
import com.ruoyi.business.service.IHwTenantService;
import com.ruoyi.common.core.constant.HwDictConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.datascope.annotation.DataScope;
import com.ruoyi.system.api.RemoteUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.business.mapper.HwTenantMapper;
import com.ruoyi.business.domain.HwTenant;
import com.ruoyi.business.service.IHwTenantService;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
* Service
*
*
* @author xins
* @date 2023-09-04
*/
@Service
public class HwTenantServiceImpl implements IHwTenantService
{
public class HwTenantServiceImpl implements IHwTenantService {
@Autowired
private HwTenantMapper hwTenantMapper;
@Resource
private RemoteUserService remoteUserService;
/**
*
*
*
* @param tenantId
* @return
*/
@Override
public HwTenant selectHwTenantByTenantId(Long tenantId)
{
public HwTenant selectHwTenantByTenantId(Long tenantId) {
return hwTenantMapper.selectHwTenantByTenantId(tenantId);
}
/**
*
*
*
* @param hwTenant
* @return
*/
@Override
public List<HwTenant> selectHwTenantList(HwTenant hwTenant)
{
@DataScope(tenantAlias = "ht")
public List<HwTenant> selectHwTenantList(HwTenant hwTenant) {
hwTenant.setTenantStatus(HwDictConstants.TENANT_STATUS_NORMAL);
return hwTenantMapper.selectHwTenantList(hwTenant);
}
/**
*
*
*
* @param hwTenant
* @return
*/
@Override
public int insertHwTenant(HwTenant hwTenant)
{
public int insertHwTenant(HwTenant hwTenant) {
hwTenant.setCreateTime(DateUtils.getNowDate());
return hwTenantMapper.insertHwTenant(hwTenant);
}
/**
*
*
*
* @param hwTenant
* @return
*/
@Override
public int updateHwTenant(HwTenant hwTenant)
{
public int updateHwTenant(HwTenant hwTenant) {
hwTenant.setUpdateTime(DateUtils.getNowDate());
return hwTenantMapper.updateHwTenant(hwTenant);
}
/**
*
*
*
* @param tenantIds
* @return
*/
@Override
public int deleteHwTenantByTenantIds(Long[] tenantIds)
{
return hwTenantMapper.deleteHwTenantByTenantIds(tenantIds);
@Transactional
public int deleteHwTenantByTenantIds(Long[] tenantIds) {
for (Long tenantId : tenantIds) {
if(tenantId.equals(HwDictConstants.ADMINISTRATOR_TENANT_ID)){
throw new ServiceException("管理租户不能删除");
}
R<?> deleteResult = this.remoteUserService.deleteUsersByTenantId(tenantId);
if (R.FAIL == deleteResult.getCode()) {
throw new ServiceException(deleteResult.getMsg());
}
HwTenant tenant = hwTenantMapper.selectHwTenantByTenantId(tenantId);
tenant.setTenantStatus(HwDictConstants.TENANT_STATUS_DELETED);
hwTenantMapper.updateHwTenant(tenant);
}
return 1;
}
/**
*
*
*
* @param tenantId
* @return
*/
@Override
public int deleteHwTenantByTenantId(Long tenantId)
{
public int deleteHwTenantByTenantId(Long tenantId) {
return hwTenantMapper.deleteHwTenantByTenantId(tenantId);
}
}

@ -217,7 +217,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</update>
<delete id="deleteHwDeviceByDeviceId" parameterType="Long">
delete from hw_device where device_id = #{deviceId}
update hw_device set device_status = '9' where device_id = #{deviceId}
</delete>
<delete id="deleteHwDeviceByDeviceIds" parameterType="String">
@ -233,7 +233,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<sql id="selectHwDeviceJoinVo">
select hd.device_code,hd.device_name, hd.device_status,hd.online_status, hd.device_pic,hd.active_time,
select hd.device_code,hd.device_name, hd.device_status,hd.online_status, hd.device_pic,hd.active_time,hd.device_mode_id,
hmu.monitor_unit_name
from hw_device hd left join hw_monitor_unit hmu on hd.monitor_unit_id = hmu.monitor_unit_id </sql>
@ -260,6 +260,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
left join hw_device_mode hdmf on hd.device_mode_id = hdmf.device_mode_id
left join hw_tenant ht on hd.tenant_id=ht.tenant_id
<where>
and hd.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>
@ -273,7 +274,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<!-- 租户数据范围过滤 -->
${params.tenantDataScope}
</where>
order by hd.device_id desc
</select>
<select id="checkExistSubDevice" parameterType="Long" resultType="int">
select count(1) from hw_device where releated_device_id = #{releatedDeviceId} and device_status != '9'
</select>
</mapper>

@ -142,7 +142,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{electronicFenceId}
</foreach>
</delete>
<delete id="deleteHwFenceAreaByElectronicFenceIds" parameterType="String">
delete from hw_fence_area where electronic_fence_id in
<foreach item="electronicFenceId" collection="array" open="(" separator="," close=")">
#{electronicFenceId}
</foreach>
</delete>
<delete id="deleteHwFenceTargetByElectronicFenceIds" parameterType="String">
delete from hw_fence_target where electronic_fence_id in
<foreach item="electronicFenceId" collection="array" open="(" separator="," close=")">
@ -201,6 +208,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<!-- 租户数据范围过滤 -->
${params.tenantDataScope}
</where>
order by hef.electronic_fence_id desc
</select>
</mapper>

@ -321,6 +321,17 @@
</select>
<select id="hasChildByMonitorUnitId" parameterType="Long" resultType="int">
select count(1) from hw_monitor_unit
where monitor_unit_status != '9' and parent_id = #{monitorUnitId} limit 1
</select>
<select id="checkMonitorUnitExistDevice" parameterType="Long" resultType="int">
select count(1) from hw_device where monitor_unit_id = #{monitorUnitId} and device_status != '9'
</select>
<delete id="deleteMonitorUnitById" parameterType="Long">
update hw_monitor_unit set monitor_unit_status = '9' where monitor_unit_id = #{monitorUnitId}
</delete>
</mapper>

@ -67,7 +67,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="contactPhone != null and contactPhone != ''"> and b.contact_phone like concat('%', #{contactPhone}, '%')</if>
<if test="sceneModeId != null and sceneModeId != ''"> and a.scene_mode_id = #{sceneModeId}</if>
<if test="defaultFlag != null and defaultFlag != ''"> and a.default_flag = #{defaultFlag}</if>
<if test="tenantId != null"> and a.tenant_id = #{tenantId}</if>
<if test="tenantId != null and tenantId != 0"> and a.tenant_id = #{tenantId}</if>
<if test="sceneStatus != null and sceneStatus != ''"> and scene_status = #{sceneStatus}</if>
</where>
order by a.scene_id desc
</select>
@ -75,7 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectHwSceneVo"/>
<where>
<if test="sceneName != null and sceneName != ''"> and scene_name like concat('%', #{sceneName}, '%')</if>
<if test="tenantId != null and tenantId != 0"> and tenant_id = #{tenantId}</if>
<if test="tenantId != null"> and tenant_id = #{tenantId}</if>
<if test="sceneModeId != null "> and scene_mode_id = #{sceneModeId}</if>
<if test="scenePic != null and scenePic != ''"> and scene_pic = #{scenePic}</if>
<if test="defaultFlag != null and defaultFlag != ''"> and default_flag = #{defaultFlag}</if>

@ -26,7 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</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_grade, tenant_field from hw_tenant
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_grade, tenant_field from hw_tenant ht
</sql>
<select id="selectHwTenantList" parameterType="HwTenant" resultMap="HwTenantResult">
@ -44,7 +44,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="isRegister != null and isRegister != ''"> and is_register = #{isRegister}</if>
<if test="tenantGrade != null "> and tenant_grade = #{tenantGrade}</if>
<if test="tenantField != null and tenantField != ''"> and tenant_field = #{tenantField}</if>
<!-- 租户数据范围过滤 -->
${params.tenantDataScope}
</where>
order by ht.tenant_id desc
</select>
<select id="selectHwTenantByTenantId" parameterType="Long" resultMap="HwTenantResult">

@ -85,9 +85,8 @@ public class MqttAuthHandler implements IMqttServerAuthHandler {
DeviceInfoDto deviceInfo = optionalDeviceInfoDto.get();
return checkDeviceInfo(deviceInfo,clientId,userName,password);
}
}else {
return NoDeviceInfoEvent(clientId,userName,password);
}
return NoDeviceInfoEvent(clientId,userName,password);
}catch (Exception ex){
logger.error("客户端认证逻辑处理异常:"+ex.getMessage());
}

@ -24,12 +24,12 @@ spring:
name: hw-mqtt-broker
profiles:
# 环境配置
active: dev
active: prod
cloud:
nacos:
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
server-addr: 124.70.63.37:8848
# 配置文件格式
file-extension: yml
# 共享配置

@ -7,10 +7,7 @@ import com.ruoyi.tdengine.service.IDeviceStatusService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -68,14 +65,18 @@ public class DeviceStatusServiceImpl implements IDeviceStatusService {
params.put("superTableName", TdEngineConstants.DEFAULT_DEVICE_STATUS_SUPER_TABLE_NAME);
List<Map<String, Object>> deviceStatusMap = deviceStatusMapper.getLastOnlineDevices(queryDeviceStatus);
List<Map<String, Object>> filterMaps = new ArrayList<>();
String i18nKey = "";//todo国际化看在哪处理
for (Map<String, Object> latestMap : deviceStatusMap) {
Set<String> kk = latestMap.keySet();
for(String k : kk){
System.out.println(k+"==="+latestMap.get(k));
}
Map<String, Object> filterMap = latestMap.entrySet()
.stream()
.filter(entry -> entry.getValue() != null)
.collect(HashMap::new, (m, v) ->
m.put(i18nKey + v.getKey().substring(v.getKey().indexOf("(") + 1,
m.put(v.getKey().substring(v.getKey().indexOf("(") + 1,
v.getKey().indexOf(")")), v.getValue()), HashMap::putAll);
filterMaps.add(filterMap);
}

@ -15,7 +15,8 @@
<select id="getLastOnlineDevices" parameterType="com.ruoyi.tdengine.api.domain.DeviceStatus" resultType="java.util.Map" >
select last_row(*),last_row(deviceid) from #{params.databaseName}.#{params.superTableName}
select <foreach item="item" collection="schemaFields" separator=","
index="">last_row(${item.fieldName})</foreach>,last_row(deviceid) from #{params.databaseName}.#{params.superTableName}
<where>
<if test="endTime!= null and endTime != 0">
and ts &lt;= #{endTime}

@ -29,7 +29,7 @@ public class RyTask {
}
public void computeOnlineDevicecCount(int days) {
public void computeOnlineDevicesCount(Integer days) {
this.remoteBusinessService.computeOnlineDevicecCount(days);
}
}

@ -1,26 +1,7 @@
package com.ruoyi.system.controller;
import java.io.IOException;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.basic.api.RemoteBasicService;
import com.ruoyi.system.domain.SysPost;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.core.constant.HwDictConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
@ -36,12 +17,20 @@ import com.ruoyi.system.api.domain.SysDept;
import com.ruoyi.system.api.domain.SysRole;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.ISysPermissionService;
import com.ruoyi.system.service.ISysPostService;
import com.ruoyi.system.service.ISysRoleService;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.system.domain.SysPost;
import com.ruoyi.system.service.*;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
*
@ -223,7 +212,8 @@ public class SysUserController extends BaseController {
user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser loginSysUser = loginUser.getSysUser();
if(!loginSysUser.getTenantId().equals(0L)){
//如果不是admin的租户则就保存为登录用户的租户id如果是adimin则需要保存admin在创建时选择的租户ID
if(!loginSysUser.getTenantId().equals(HwDictConstants.ADMINISTRATOR_TENANT_ID)){
user.setTenantId(loginSysUser.getTenantId());
}
@ -336,10 +326,32 @@ public class SysUserController extends BaseController {
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser user = loginUser.getSysUser();
Long tenantId = user.getTenantId();
if (tenantId.equals(0L)) {
if (tenantId.equals(HwDictConstants.ADMINISTRATOR_TENANT_ID)) {
return success(remoteBasicService.getTenants().getData());
} else {
return success();
}
}
/**
* ID
*/
@PostMapping("/deleteUsersByTenantId/{tenantId}")
public R<Boolean> deleteUsersByTenantId(@PathVariable Long tenantId) {
Long[] userIds = userService.getUserIdsByTenantId(tenantId);
if(userIds.length == 0) {
return R.ok();
}
if (ArrayUtils.contains(userIds, SecurityUtils.getUserId())) {
return R.fail("当前用户不能删除");
}
try{
userService.deleteUserByIds(userIds);
return R.ok();
}catch(Exception e){
return R.fail(e.getMessage());
}
}
}

@ -203,4 +203,13 @@ public interface ISysUserService
* @return
*/
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName);
/**
* @param: tenantId
* @description IDID
* @author xins
* @date 2023-09-27 10:08
* @return Long[]
*/
public Long[] getUserIdsByTenantId(Long tenantId);
}

@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import javax.validation.Validator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -32,12 +33,11 @@ import com.ruoyi.system.service.ISysUserService;
/**
*
*
*
* @author ruoyi
*/
@Service
public class SysUserServiceImpl implements ISysUserService
{
public class SysUserServiceImpl implements ISysUserService {
private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
@Autowired
@ -63,79 +63,72 @@ public class SysUserServiceImpl implements ISysUserService
/**
*
*
*
* @param user
* @return
*/
@Override
@DataScope(deptAlias = "d", userAlias = "u",tenantAlias = "u")
public List<SysUser> selectUserList(SysUser user)
{
@DataScope(deptAlias = "d", userAlias = "u", tenantAlias = "u")
public List<SysUser> selectUserList(SysUser user) {
return userMapper.selectUserList(user);
}
/**
*
*
*
* @param user
* @return
*/
@Override
@DataScope(deptAlias = "d", userAlias = "u")
public List<SysUser> selectAllocatedList(SysUser user)
{
public List<SysUser> selectAllocatedList(SysUser user) {
return userMapper.selectAllocatedList(user);
}
/**
*
*
*
* @param user
* @return
*/
@Override
@DataScope(deptAlias = "d", userAlias = "u")
public List<SysUser> selectUnallocatedList(SysUser user)
{
public List<SysUser> selectUnallocatedList(SysUser user) {
return userMapper.selectUnallocatedList(user);
}
/**
*
*
*
* @param userName
* @return
*/
@Override
public SysUser selectUserByUserName(String userName)
{
public SysUser selectUserByUserName(String userName) {
return userMapper.selectUserByUserName(userName);
}
/**
* ID
*
*
* @param userId ID
* @return
*/
@Override
public SysUser selectUserById(Long userId)
{
public SysUser selectUserById(Long userId) {
return userMapper.selectUserById(userId);
}
/**
*
*
*
* @param userName
* @return
*/
@Override
public String selectUserRoleGroup(String userName)
{
public String selectUserRoleGroup(String userName) {
List<SysRole> list = roleMapper.selectRolesByUserName(userName);
if (CollectionUtils.isEmpty(list))
{
if (CollectionUtils.isEmpty(list)) {
return StringUtils.EMPTY;
}
return list.stream().map(SysRole::getRoleName).collect(Collectors.joining(","));
@ -143,16 +136,14 @@ public class SysUserServiceImpl implements ISysUserService
/**
*
*
*
* @param userName
* @return
*/
@Override
public String selectUserPostGroup(String userName)
{
public String selectUserPostGroup(String userName) {
List<SysPost> list = postMapper.selectPostsByUserName(userName);
if (CollectionUtils.isEmpty(list))
{
if (CollectionUtils.isEmpty(list)) {
return StringUtils.EMPTY;
}
return list.stream().map(SysPost::getPostName).collect(Collectors.joining(","));
@ -160,17 +151,15 @@ public class SysUserServiceImpl implements ISysUserService
/**
*
*
*
* @param user
* @return
*/
@Override
public boolean checkUserNameUnique(SysUser user)
{
public boolean checkUserNameUnique(SysUser user) {
Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
SysUser info = userMapper.checkUserNameUnique(user.getUserName());
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
{
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
return UserConstants.NOT_UNIQUE;
}
return UserConstants.UNIQUE;
@ -183,12 +172,10 @@ public class SysUserServiceImpl implements ISysUserService
* @return
*/
@Override
public boolean checkPhoneUnique(SysUser user)
{
public boolean checkPhoneUnique(SysUser user) {
Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber());
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
{
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
return UserConstants.NOT_UNIQUE;
}
return UserConstants.UNIQUE;
@ -201,12 +188,10 @@ public class SysUserServiceImpl implements ISysUserService
* @return
*/
@Override
public boolean checkEmailUnique(SysUser user)
{
public boolean checkEmailUnique(SysUser user) {
Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
SysUser info = userMapper.checkEmailUnique(user.getEmail());
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
{
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
return UserConstants.NOT_UNIQUE;
}
return UserConstants.UNIQUE;
@ -214,33 +199,28 @@ public class SysUserServiceImpl implements ISysUserService
/**
*
*
*
* @param user
*/
@Override
public void checkUserAllowed(SysUser user)
{
if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin())
{
public void checkUserAllowed(SysUser user) {
if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) {
throw new ServiceException("不允许操作超级管理员用户");
}
}
/**
*
*
*
* @param userId id
*/
@Override
public void checkUserDataScope(Long userId)
{
if (!SysUser.isAdmin(SecurityUtils.getUserId()))
{
public void checkUserDataScope(Long userId) {
if (!SysUser.isAdmin(SecurityUtils.getUserId())) {
SysUser user = new SysUser();
user.setUserId(userId);
List<SysUser> users = SpringUtils.getAopProxy(this).selectUserList(user);
if (StringUtils.isEmpty(users))
{
if (StringUtils.isEmpty(users)) {
throw new ServiceException("没有权限访问用户数据!");
}
}
@ -248,14 +228,13 @@ public class SysUserServiceImpl implements ISysUserService
/**
*
*
*
* @param user
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int insertUser(SysUser user)
{
public int insertUser(SysUser user) {
// 新增用户信息
int rows = userMapper.insertUser(user);
// 新增用户岗位关联
@ -267,26 +246,24 @@ public class SysUserServiceImpl implements ISysUserService
/**
*
*
*
* @param user
* @return
*/
@Override
public boolean registerUser(SysUser user)
{
public boolean registerUser(SysUser user) {
return userMapper.insertUser(user) > 0;
}
/**
*
*
*
* @param user
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int updateUser(SysUser user)
{
public int updateUser(SysUser user) {
Long userId = user.getUserId();
// 删除用户与角色关联
userRoleMapper.deleteUserRoleByUserId(userId);
@ -301,104 +278,94 @@ public class SysUserServiceImpl implements ISysUserService
/**
*
*
* @param userId ID
*
* @param userId ID
* @param roleIds
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void insertUserAuth(Long userId, Long[] roleIds)
{
public void insertUserAuth(Long userId, Long[] roleIds) {
userRoleMapper.deleteUserRoleByUserId(userId);
insertUserRole(userId, roleIds);
}
/**
*
*
*
* @param user
* @return
*/
@Override
public int updateUserStatus(SysUser user)
{
public int updateUserStatus(SysUser user) {
return userMapper.updateUser(user);
}
/**
*
*
*
* @param user
* @return
*/
@Override
public int updateUserProfile(SysUser user)
{
public int updateUserProfile(SysUser user) {
return userMapper.updateUser(user);
}
/**
*
*
*
* @param userName
* @param avatar
* @param avatar
* @return
*/
@Override
public boolean updateUserAvatar(String userName, String avatar)
{
public boolean updateUserAvatar(String userName, String avatar) {
return userMapper.updateUserAvatar(userName, avatar) > 0;
}
/**
*
*
*
* @param user
* @return
*/
@Override
public int resetPwd(SysUser user)
{
public int resetPwd(SysUser user) {
return userMapper.updateUser(user);
}
/**
*
*
*
* @param userName
* @param password
* @return
*/
@Override
public int resetUserPwd(String userName, String password)
{
public int resetUserPwd(String userName, String password) {
return userMapper.resetUserPwd(userName, password);
}
/**
*
*
*
* @param user
*/
public void insertUserRole(SysUser user)
{
public void insertUserRole(SysUser user) {
this.insertUserRole(user.getUserId(), user.getRoleIds());
}
/**
*
*
*
* @param user
*/
public void insertUserPost(SysUser user)
{
public void insertUserPost(SysUser user) {
Long[] posts = user.getPostIds();
if (StringUtils.isNotEmpty(posts))
{
if (StringUtils.isNotEmpty(posts)) {
// 新增用户与岗位管理
List<SysUserPost> list = new ArrayList<SysUserPost>();
for (Long postId : posts)
{
for (Long postId : posts) {
SysUserPost up = new SysUserPost();
up.setUserId(user.getUserId());
up.setPostId(postId);
@ -410,18 +377,15 @@ public class SysUserServiceImpl implements ISysUserService
/**
*
*
* @param userId ID
*
* @param userId ID
* @param roleIds
*/
public void insertUserRole(Long userId, Long[] roleIds)
{
if (StringUtils.isNotEmpty(roleIds))
{
public void insertUserRole(Long userId, Long[] roleIds) {
if (StringUtils.isNotEmpty(roleIds)) {
// 新增用户与角色管理
List<SysUserRole> list = new ArrayList<SysUserRole>();
for (Long roleId : roleIds)
{
for (Long roleId : roleIds) {
SysUserRole ur = new SysUserRole();
ur.setUserId(userId);
ur.setRoleId(roleId);
@ -433,14 +397,13 @@ public class SysUserServiceImpl implements ISysUserService
/**
* ID
*
*
* @param userId ID
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int deleteUserById(Long userId)
{
public int deleteUserById(Long userId) {
// 删除用户与角色关联
userRoleMapper.deleteUserRoleByUserId(userId);
// 删除用户与岗位表
@ -450,16 +413,14 @@ public class SysUserServiceImpl implements ISysUserService
/**
*
*
*
* @param userIds ID
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int deleteUserByIds(Long[] userIds)
{
for (Long userId : userIds)
{
public int deleteUserByIds(Long[] userIds) {
for (Long userId : userIds) {
checkUserAllowed(new SysUser(userId));
checkUserDataScope(userId);
}
@ -472,17 +433,15 @@ public class SysUserServiceImpl implements ISysUserService
/**
*
*
* @param userList
*
* @param userList
* @param isUpdateSupport
* @param operName
* @param operName
* @return
*/
@Override
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName)
{
if (StringUtils.isNull(userList) || userList.size() == 0)
{
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName) {
if (StringUtils.isNull(userList) || userList.size() == 0) {
throw new ServiceException("导入用户数据不能为空!");
}
int successNum = 0;
@ -490,23 +449,18 @@ public class SysUserServiceImpl implements ISysUserService
StringBuilder successMsg = new StringBuilder();
StringBuilder failureMsg = new StringBuilder();
String password = configService.selectConfigByKey("sys.user.initPassword");
for (SysUser user : userList)
{
try
{
for (SysUser user : userList) {
try {
// 验证是否存在这个用户
SysUser u = userMapper.selectUserByUserName(user.getUserName());
if (StringUtils.isNull(u))
{
if (StringUtils.isNull(u)) {
BeanValidators.validateWithException(validator, user);
user.setPassword(SecurityUtils.encryptPassword(password));
user.setCreateBy(operName);
userMapper.insertUser(user);
successNum++;
successMsg.append("<br/>" + successNum + "、账号 " + user.getUserName() + " 导入成功");
}
else if (isUpdateSupport)
{
} else if (isUpdateSupport) {
BeanValidators.validateWithException(validator, user);
checkUserAllowed(u);
checkUserDataScope(u.getUserId());
@ -515,31 +469,43 @@ public class SysUserServiceImpl implements ISysUserService
userMapper.updateUser(user);
successNum++;
successMsg.append("<br/>" + successNum + "、账号 " + user.getUserName() + " 更新成功");
}
else
{
} else {
failureNum++;
failureMsg.append("<br/>" + failureNum + "、账号 " + user.getUserName() + " 已存在");
}
}
catch (Exception e)
{
} catch (Exception e) {
failureNum++;
String msg = "<br/>" + failureNum + "、账号 " + user.getUserName() + " 导入失败:";
failureMsg.append(msg + e.getMessage());
log.error(msg, e);
}
}
if (failureNum > 0)
{
if (failureNum > 0) {
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new ServiceException(failureMsg.toString());
}
else
{
} else {
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
}
return successMsg.toString();
}
/**
* @param: tenantId
* @description IDID
* @author xins
* @date 2023-09-27 10:08
* @return Long[]
*/
@Override
public Long[] getUserIdsByTenantId(Long tenantId) {
SysUser queryUser = new SysUser();
queryUser.setTenantId(tenantId);
List<SysUser> users = userMapper.selectUserList(queryUser);
if (users != null && !users.isEmpty()) {
return users.stream().
map(SysUser::getUserId).toArray(Long[]::new);
}
return new Long[0];
}
}

@ -66,6 +66,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="userId != null and userId != 0">
AND u.user_id = #{userId}
</if>
<if test="tenantId != null and tenantId != 0">
AND u.tenant_id = #{tenantId}
</if>
<if test="userName != null and userName != ''">
AND u.user_name like concat('%', #{userName}, '%')
</if>

@ -37,9 +37,9 @@ export function updateDevice(data) {
}
// 删除设备信息
export function delDevice(deviceId) {
export function delDevice(deviceId, deviceType) {
return request({
url: '/business/device/' + deviceId,
url: '/business/device/' + deviceId + "/" + deviceType,
method: 'delete'
})
}
@ -101,3 +101,15 @@ export function changeDeviceStatus(deviceId, deviceStatus) {
data: data
})
}
export function publishControlCommand(deviceId, type) {
const data = {
deviceId,
type
}
return request({
url: '/business/device/publishControlCommand',
method: 'put',
data: data
})
}

@ -1,4 +1,5 @@
import request from '@/utils/request'
import request from '@/utils/request';
import {parseStrEmpty} from "@/utils/ruoyi";
// 查询监控单元列表
export function listMonitorUnit(query) {
@ -63,20 +64,10 @@ export function getEditedScenes(query) {
}
// 查询监控单元类型供查询页面选择使用
export function getMonitorUnitTypes(query) {
export function getMonitorUnitTypes(sceneId) {
return request({
url: '/business/monitorUnit/getMonitorUnitTypes',
method: 'get',
params: query
})
}
// 查询监控单元类型供编辑页面选择使用
export function getEditedMonitorUnitTypes(query) {
return request({
url: '/business/monitorUnit/getEditedMonitorUnitTypes',
method: 'get',
params: query
url: '/business/monitorUnit/getMonitorUnitTypes/' + parseStrEmpty(sceneId),
method: 'get'
})
}

@ -28,7 +28,7 @@
</el-select>
</el-form-item>
<el-form-item label="所属场景" prop="sceneId">
<el-select v-model="queryParams.sceneId" placeholder="请选择" @input="sceneChange">
<el-select v-model="queryParams.sceneId" placeholder="请选择" @input="sceneChange" clearable>
<el-option
v-for="(scene, index) in scenes"
:key="index"
@ -57,17 +57,6 @@
</el-form-item>
<el-form-item label="激活状态" prop="activeStatus">
<el-select v-model="queryParams.activeStatus" placeholder="请选择" clearable>
<el-option
v-for="dict in dict.type.hw_device_active_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="设备状态" prop="deviceStatus">
<el-select v-model="queryParams.deviceStatus" placeholder="请选择" clearable>
<el-option
@ -91,7 +80,6 @@
</el-form-item-->
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
@ -166,6 +154,23 @@
</el-table-column-->
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-time"
@click="publishControlCommand(scope.row,'CMD_SYS_TIME_CHECK','设备对时')"
v-hasPermi="['business:device:edit']"
>设备对时
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-camera"
@click="publishControlCommand(scope.row,'CMD_SNAPSHOT','拍照')"
v-hasPermi="['business:device:edit']"
>拍照
</el-button>
<el-button
size="mini"
type="text"
@ -174,6 +179,10 @@
v-hasPermi="['business:device:edit']"
>修改
</el-button>
<el-button
size="mini"
type="text"
@ -275,7 +284,7 @@
</el-select>
</el-form-item>
<el-form-item label="设备模型" prop="deviceModeId" v-if="subDeviceVisible">
<el-select v-model="form.deviceModeId" placeholder="请选择">
<el-select v-model="form.deviceModeId" placeholder="请选择" :disabled="deviceModeDisabled">
<el-option
v-for="(editedDeviceMode, index) in editedDeviceModes"
:key="index"
@ -353,7 +362,8 @@ import {
getMonitorTree,
getDeviceModes,
getGatewayDevices,
changeDeviceStatus
changeDeviceStatus,
publishControlCommand
} from "@/api/business/device";
import {getToken} from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
@ -417,6 +427,7 @@ export default {
sceneDisabled:true,
subDeviceVisible: false,//
deviceVisible: false,//
deviceModeDisabled:true,
DEVICE_TYPE_GATEWAY_DEVICE: "1",//
DEVICE_TYPE_GATEWAY_SUB_EQUIPMENT: "2",//
@ -596,6 +607,8 @@ export default {
});
this.deviceTypeDisabled = false;
this.sceneDisabled = false;
this.deviceModeDisabled = false;
this.confirmBtnVisible = true;
this.fileList = [];
this.reset();
this.open = true;
@ -603,6 +616,8 @@ export default {
},
/** 修改按钮操作 */
handleUpdate(row) {
this.deviceModeDisabled = true;
this.confirmBtnVisible = true;
getEditedScenes().then(response => {
this.editedScenes = response.data;
});
@ -687,9 +702,11 @@ export default {
},
/** 删除按钮操作 */
handleDelete(row) {
const deviceIds = row.deviceId || this.ids;
this.$modal.confirm('是否确认删除设备信息编号为"' + deviceIds + '"的数据项?').then(function () {
return delDevice(deviceIds);
const deviceId = row.deviceId;
const deviceType = row.deviceType;
const deviceCode = row.deviceCode;
this.$modal.confirm('是否确认删除设备信息编号为"' + deviceCode + '"的数据项?').then(function () {
return delDevice(deviceId,deviceType);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
@ -888,6 +905,15 @@ export default {
row.deviceStatus = row.deviceStatus === "0" ? "1" : "0";
});
},
publishControlCommand(row,type,typeName){
this.$modal.confirm('确认要进行'+typeName+'么?').then(function () {
return publishControlCommand(row.deviceId, type);
}).then(() => {
this.$modal.msgSuccess("执行成功");
})
}
}
};
</script>

@ -308,8 +308,8 @@ export default {
functionIdentifier: [
{required: true, message: "请输入标识符", trigger: "blur"},
{
pattern: /^[a-z][a-z0-9_]+$/,
message: "2-20个字符小写字母、数字或下划线组成,开头必须为小写字母",
pattern: /^[a-zA-Z][a-z0-9_]+$/,
message: "2-20个字符小写字母、数字或下划线组成,开头必须为小写字母",
trigger: "blur"
}
],

@ -257,7 +257,7 @@
</el-form-item>
<el-form-item label="功能名称" prop="functionName">
<el-input v-model="form.functionName" placeholder="请输入功能名称"/>
<el-input v-model="form.functionName" placeholder="请输入功能名称" maxlength="30"/>
</el-form-item>
<el-form-item label="标识符" prop="functionIdentifier">
<el-input v-model="form.functionIdentifier" placeholder="请输入标识符" maxlength="20"/>
@ -598,7 +598,7 @@ export default {
remark: null,
};
this.resetForm("modeFunctionForm");
//this.resetForm("modeFunctionForm");
},
handleUpdateAttribute(row) {
// this.reset();

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="98px">
<el-form-item label="电子围栏名称" prop="electronicFenceName">
<el-input
v-model="queryParams.electronicFenceName"
@ -10,7 +10,7 @@
/>
</el-form-item>
<el-form-item label="所属场景" prop="sceneId">
<el-select v-model="queryParams.sceneId" placeholder="请选择" @input="sceneChange">
<el-select v-model="queryParams.sceneId" placeholder="请选择" clearable>
<el-option
v-for="(scene, index) in scenes"
:key="index"
@ -60,32 +60,13 @@
v-hasPermi="['business:electronicFence:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['business:electronicFence:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['business:electronicFence:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="electronicFenceList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="电子围栏编号" align="center" prop="electronicFenceId" />
<el-table-column label="电子围栏名称" align="center" prop="electronicFenceName" />
<el-table-column label="所属场景" align="center" prop="sceneName" />
<el-table-column label="规则类型" align="center" prop="fenceType" >

@ -10,7 +10,7 @@
/>
</el-form-item>
<el-form-item label="所属场景" prop="sceneId">
<el-select v-model="queryParams.sceneId" placeholder="请选择">
<el-select v-model="queryParams.sceneId" placeholder="请选择" clearable @input="sceneChange">
<el-option
v-for="(scene, index) in scenes"
:key="index"
@ -20,7 +20,7 @@
</el-select>
</el-form-item>
<el-form-item label="监控单元类型" prop="monitorUnitTypeId">
<el-select v-model="queryParams.monitorUnitTypeId" placeholder="请选择">
<el-select v-model="queryParams.monitorUnitTypeId" placeholder="请选择" clearable>
<el-option
v-for="(monitorUnitType, index) in monitorUnitTypes"
:key="index"
@ -70,6 +70,7 @@
:default-expand-all="isExpandAll"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
>
<el-table-column label="监控单元编号" prop="monitorUnitId"/>
<el-table-column label="监控单元名称" prop="monitorUnitName"/>
<el-table-column label="所属场景" align="center" prop="sceneName"/>
<el-table-column label="监控单元类型" align="center" prop="monitorUnitTypeName"/>
@ -110,7 +111,7 @@
<el-input v-model="form.monitorUnitName" placeholder="请输入监控单元名称"/>
</el-form-item>
<el-form-item label="所属场景" prop="sceneId">
<el-select v-model="form.sceneId" placeholder="请选择" :disabled="sceneDisable">
<el-select v-model="form.sceneId" placeholder="请选择" :disabled="sceneDisable" @input="editedSceneChange">
<el-option
v-for="(scene, index) in editedScenes"
:key="index"
@ -202,7 +203,7 @@
<script>
import {
listMonitorUnit, getMonitorUnit, delMonitorUnit, addMonitorUnit, updateMonitorUnit
, getMonitorUnitTypes, getEditedMonitorUnitTypes, getScenes, getEditedScenes,getEditedMonitorUnits
, getMonitorUnitTypes, getScenes, getEditedScenes,getEditedMonitorUnits
} from "@/api/business/monitorUnit";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
@ -320,14 +321,25 @@ export default {
});
},
getMonitorUnitTypes() {
getMonitorUnitTypes().then(response => {
sceneChange(sceneId) {
this.queryParams.monitorUnitTypeId = null;
this.getMonitorUnitTypes(sceneId);
},
editedSceneChange(sceneId) {
this.form.monitorUnitTypeId = null;
this.getEditedMonitorUnitTypes(sceneId);
this.getTreeselect(sceneId);
},
getMonitorUnitTypes(sceneId) {
getMonitorUnitTypes(sceneId).then(response => {
this.monitorUnitTypes = response.data;
});
},
getEditedMonitorUnitTypes() {
getEditedMonitorUnitTypes().then(response => {
getEditedMonitorUnitTypes(sceneId) {
getMonitorUnitTypes(sceneId).then(response => {
this.editedMonitorUnitTypes = response.data;
});
},
@ -352,12 +364,14 @@ export default {
};
},
/** 查询监控单元下拉树结构 */
getTreeselect() {
getEditedMonitorUnits().then(response => {
getTreeselect(sceneId) {
let query = {"sceneId": sceneId};
getEditedMonitorUnits(query).then(response => {
this.monitorUnitOptions = [];
const data = {monitorUnitId: 0, monitorUnitName: '顶级节点', children: []};
data.children = this.handleTree(response.data, "monitorUnitId", "parentId");
this.monitorUnitOptions.push(data);
this.form.parentId = 0;
});
},
//
@ -386,6 +400,8 @@ export default {
monitorUnitField: null
};
this.resetForm("form");
this.editedScenes = [];
this.editedMonitorUnitTypes = [];
},
/** 搜索按钮操作 */
handleQuery() {
@ -400,13 +416,13 @@ export default {
handleAdd(row) {
this.sceneDisable= false;
this.getEditedScenes();
this.getEditedMonitorUnitTypes();
this.reset();
this.getTreeselect();
if (row != null && row.monitorUnitId) {
this.form.parentId = row.monitorUnitId;
this.form.sceneId = row.sceneId;
this.getTreeselect(row.sceneId);
} else {
this.form.parentId = 0;
this.form.parentId = null;
}
this.open = true;
this.title = "添加监控单元";
@ -423,9 +439,7 @@ export default {
handleUpdate(row) {
this.sceneDisable= true;
this.getEditedScenes();
this.getEditedMonitorUnitTypes();
this.reset();
this.getTreeselect();
if (row != null) {
this.form.parentId = row.monitorUnitId;
}
@ -433,6 +447,8 @@ export default {
this.form = response.data;
this.open = true;
this.title = "修改监控单元";
this.getEditedMonitorUnitTypes(response.data.sceneId);
this.getTreeselect(response.data.sceneId);
if (response.data.monitorPic != null) {
let previewFile = {};
previewFile.url = response.data.monitorPic

@ -9,20 +9,8 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="所属场景" prop="sceneId">
<el-select v-model="queryParams.sceneId" placeholder="请选择">
<el-option
v-for="(scene, index) in scenes"
:key="index"
:label="scene.sceneName"
:value="scene.sceneId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="虚拟标识" prop="vitualFlag">
<el-select v-model="queryParams.vitualFlag" placeholder="请选择虚拟标识">
<el-select v-model="queryParams.vitualFlag" placeholder="请选择虚拟标识" clearable>
<el-option
v-for="dict in dict.type.hw_unit_type_vitual_flag"
:key="dict.value"
@ -32,6 +20,16 @@
</el-select>
</el-form-item>
<el-form-item label="所属场景" prop="sceneId">
<el-select v-model="queryParams.sceneId" placeholder="请选择" clearable>
<el-option
v-for="(scene, index) in scenes"
:key="index"
:label="scene.sceneName"
:value="scene.sceneId"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
@ -76,6 +74,7 @@
<el-table v-loading="loading" :data="monitorUnitTypeList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="编号" align="center" prop="monitorUnitTypeId" />
<el-table-column label="类型名称" align="center" prop="monitorUnitTypeName" />
<el-table-column label="虚拟标识" align="center" prop="vitualFlag" >
<template slot-scope="scope">

@ -10,7 +10,7 @@
/>
</el-form-item>
<el-form-item label="所属租户" prop="tenantId">
<el-select v-model="queryParams.tenantId" placeholder="请选择">
<el-select v-model="queryParams.tenantId" placeholder="请选择" clearable>
<el-option
v-for="(tenant, index) in tenants"
:key="index"
@ -21,7 +21,7 @@
</el-form-item>
<el-form-item label="场景类型" prop="sceneModeId">
<el-select v-model="queryParams.sceneModeId" placeholder="请选择">
<el-select v-model="queryParams.sceneModeId" placeholder="请选择" clearable>
<el-option
v-for="(sceneMode, index) in sceneModes"
:key="index"
@ -32,8 +32,8 @@
</el-form-item>
<el-form-item label="通用标识" prop="defaultFlag">
<el-select v-model="queryParams.defaultFlag" placeholder="请选择">
<el-form-item label="默认标识" prop="defaultFlag">
<el-select v-model="queryParams.defaultFlag" placeholder="请选择" clearable>
<el-option
v-for="dict in dict.type.hw_scene_default_flag"
:key="dict.value"
@ -106,12 +106,13 @@
<el-table-column label="场景名称" align="center" prop="sceneName"/>
<el-table-column label="所属租户" align="center" prop="tenantName"/>
<el-table-column label="场景类型" align="center" prop="sceneModeName"/>
<el-table-column label="是否默认" align="center" prop="defaultFlag">
<el-table-column label="默认标识" align="center" prop="defaultFlag">
<template slot-scope="scope">
<dict-tag :options="dict.type.hw_scene_default_flag" :value="scope.row.defaultFlag"/>
</template>
</el-table-column>
<el-table-column label="保存周期(天)" align="center" prop="preserveTime"/>
<el-table-column label="创建时间" align="center" prop="createTime"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
@ -146,7 +147,7 @@
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-form-item label="所属租户" prop="tenantId">
<el-select v-model="form.tenantId" placeholder="请选择">
<el-select v-model="form.tenantId" placeholder="请选择" :disabled="editedDisable">
<el-option
v-for="(tenant, index) in tenants"
:key="index"
@ -159,7 +160,7 @@
<el-input v-model="form.sceneName" placeholder="请输入场景名称"/>
</el-form-item>
<el-form-item label="场景类型" prop="sceneModeId">
<el-select v-model="form.sceneModeId" placeholder="请选择">
<el-select v-model="form.sceneModeId" placeholder="请选择" :disabled="editedDisable">
<el-option
v-for="(sceneMode, index) in sceneModes"
:key="index"
@ -169,7 +170,7 @@
</el-select>
</el-form-item>
<el-form-item label="是否默认" prop="defaultFlag">
<el-form-item label="默认标识" prop="defaultFlag">
<el-radio-group v-model="form.defaultFlag">
<el-radio
v-for="dict in dict.type.hw_scene_default_flag"
@ -192,14 +193,15 @@
</el-select>
</el-form-item>
<el-form-item label="场景账号" prop="modeAccount">
<el-input v-model="form.modeAccount" placeholder="请输入场景账号"/>
<el-input v-model="form.modeAccount" placeholder="自动生成" disabled/>
</el-form-item>
<el-form-item label="场景密码" prop="modeKey">
<el-input v-model="form.modeKey" placeholder="请输入场景key"/>
<el-input v-model="form.modeKey" placeholder="自动生成" disabled/>
</el-form-item>
<el-form-item label="保存周期(天)" prop="preserveTime">
<el-input v-model="form.preserveTime" placeholder="请输入保存周期(单位默认90天"/>
<el-input-number v-model="form.preserveTime" placeholder="请输入保存周期(单位默认90天" :min="1" :max="9999"
style="width:150px;"/>
</el-form-item>
<el-form-item label="场景描述" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容"/>
@ -307,6 +309,7 @@ export default {
open: false,
sceneModes: [],
tenants: [],
editedDisable:true,
//
queryParams: {
@ -335,29 +338,17 @@ export default {
{required: true, message: "场景名称不能为空", trigger: "blur"}
],
sceneModeId: [
{required: true, message: "场景类型关联表hw_scene_mode的scene_mode_id不能为空", trigger: "blur"}
{required: true, message: "场景类型不能为空", trigger: "blur"}
],
defaultFlag: [
{required: true, message: "是否默认不能为空", trigger: "blur"}
],
sceneStatus: [
{required: true, message: "状态不能为空", trigger: "change"}
{required: true, message: "默认标识不能为空", trigger: "blur"}
],
authMode: [
{required: true, message: "认证方式不能为空", trigger: "blur"}
],
modeKey: [
{required: true, message: "场景key不能为空", trigger: "blur"}
],
modeSecret: [
{required: true, message: "场景secret不能为空", trigger: "blur"}
],
preserveTime: [
{required: true, message: "保存周期(单位默认90天不能为空", trigger: "blur"}
],
testPreserveTime: [
{required: true, message: "测试环境保存周期(单位默认30天不能为空", trigger: "blur"}
],
{required: true, message: "保存周期不能为空", trigger: "blur"}
]
},
number: 0,
@ -448,12 +439,14 @@ export default {
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.editedDisable = false;
this.open = true;
this.title = "添加场景信息";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.editedDisable = true;
const sceneId = row.sceneId || this.ids
this.fileList = [];
getScene(sceneId).then(response => {
@ -491,7 +484,7 @@ export default {
/** 删除按钮操作 */
handleDelete(row) {
const sceneIds = row.sceneId || this.ids;
this.$modal.confirm('是否确认删除场景信息编号为"' + sceneIds + '"的数据项?').then(function () {
this.$modal.confirm('是否确认删除场景ID为"' + sceneIds + '"的数据项?').then(function () {
return delScene(sceneIds);
}).then(() => {
this.getList();

@ -1,17 +1,17 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="88px">
<!-- <el-form-item label="行业类型关联sys_dict_data的dict_type是hw_tenant_industry的dict_value" prop="tenantIndustry">-->
<!-- <el-input-->
<!-- v-model="queryParams.tenantIndustry"-->
<!-- placeholder="请输入行业类型关联sys_dict_data的dict_type是hw_tenant_industry的dict_value"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="租户名称" prop="tenantName">
<el-input
v-model="queryParams.tenantName"
placeholder="请输入租户名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="租户类型" prop="tenantType">
<el-select v-model="queryParams.tenantType" placeholder="租户类型">
<el-select v-model="queryParams.tenantType" placeholder="租户类型" clearable>
<el-option
v-for="dict in dict.type.hw_tenant_type"
:key ="dict.value"
@ -20,14 +20,7 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item label="租户名称" prop="tenantName">
<el-input
v-model="queryParams.tenantName"
placeholder="请输入租户名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="联系人姓名" prop="contactName">
<el-input
v-model="queryParams.contactName"
@ -44,54 +37,7 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="邮箱地址" prop="email">-->
<!-- <el-input-->
<!-- v-model="queryParams.email"-->
<!-- placeholder="请输入邮箱地址"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="区域ID管理区域hw_area" prop="areaId">-->
<!-- <el-input-->
<!-- v-model="queryParams.areaId"-->
<!-- placeholder="请输入区域ID管理区域hw_area"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="联系人地址" prop="contactAddress">-->
<!-- <el-input-->
<!-- v-model="queryParams.contactAddress"-->
<!-- placeholder="请输入联系人地址"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="是否外部注册" prop="isRegister">-->
<!-- <el-input-->
<!-- v-model="queryParams.isRegister"-->
<!-- placeholder="请输入是否外部注册"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="租户等级,预留字段" prop="tenantGrade">-->
<!-- <el-input-->
<!-- v-model="queryParams.tenantGrade"-->
<!-- placeholder="请输入租户等级,预留字段"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="预留字段" prop="tenantField">-->
<!-- <el-input-->
<!-- v-model="queryParams.tenantField"-->
<!-- placeholder="请输入预留字段"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
@ -146,7 +92,7 @@
<el-table v-loading="loading" :data="tenantList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="租户ID" align="center" prop="tenantId" />-->
<el-table-column label="租户ID" align="center" prop="tenantId" />
<el-table-column label="租户名称" align="center" prop="tenantName" />
<el-table-column label="租户类型" align="center" prop="tenantType">
<template slot-scope="scope">
@ -172,13 +118,7 @@
<el-table-column label="联系人姓名" align="center" prop="contactName" />
<el-table-column label="联系人电话" align="center" prop="contactPhone" />
<el-table-column label="邮箱地址" align="center" prop="email" />
<!-- <el-table-column label="区域ID管理区域hw_area" align="center" prop="areaId" />-->
<el-table-column label="联系人地址" align="center" prop="contactAddress" />
<!-- <el-table-column label="描述" align="center" prop="remark" />-->
<!-- <el-table-column label="状态" align="center" prop="tenantStatus" />-->
<!-- <el-table-column label="是否外部注册" align="center" prop="isRegister" />-->
<!-- <el-table-column label="租户等级,预留字段" align="center" prop="tenantGrade" />-->
<!-- <el-table-column label="预留字段" align="center" prop="tenantField" />-->
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
@ -194,6 +134,7 @@
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['business:tenant:remove']"
v-if="scope.row.tenantId!=1"
>删除</el-button>
</template>
</el-table-column>
@ -261,29 +202,10 @@
</el-col>
</el-row>
<!-- <el-form-item label="行业类型关联sys_dict_data的dict_type是hw_tenant_industry的dict_value" prop="tenantIndustry">-->
<!-- <el-input v-model="form.tenantIndustry" placeholder="请输入行业类型关联sys_dict_data的dict_type是hw_tenant_industry的dict_value" />-->
<!-- </el-form-item>-->
<!-- 区域ID管理区域hw_area-->
<el-form-item label="描述" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
<!-- <el-form-item label="是否外部注册" prop="isRegister">-->
<!-- <el-input v-model="form.isRegister" placeholder="请输入是否外部注册" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="租户等级,预留字段" prop="tenantGrade">-->
<!-- <el-input v-model="form.tenantGrade" placeholder="请输入租户等级,预留字段" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="预留字段" prop="tenantField">-->
<!-- <el-input v-model="form.tenantField" placeholder="请输入预留字段" />-->
<!-- </el-form-item>-->
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
@ -351,14 +273,20 @@ export default {
{ required: true, message: "联系人姓名不能为空", trigger: "blur" }
],
contactPhone: [
{ required: true, message: "联系人电话不能为空", trigger: "blur" }
{ required: true, message: "手机号码不能为空", trigger: "blur" },
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机号码",
trigger: "blur"
}
],
email: [
{
type: "email",
message: "请输入正确的邮箱地址",
trigger: ["blur", "change"]
}
],
// tenantStatus: [
// { required: true, message: "", trigger: "change" }
// ],
// isRegister: [
// { required: true, message: "", trigger: "blur" }
// ],
}
};
},
@ -366,8 +294,6 @@ export default {
this.getList();
},
methods: {
/** 查询租户信息列表 */
getList() {
this.loading = true;
@ -462,7 +388,7 @@ export default {
// /** */
handleDelete(row) {
const tenantIds = row.tenantId || this.ids;
this.$modal.confirm('是否确认删除租户名称为"' + row.tenantName + '"的数据项?').then(function() {
this.$modal.confirm('是否确认删除租户ID为"' + tenantIds + '"的数据项?').then(function() {
return delTenant(tenantIds);
}).then(() => {
this.getList();
@ -480,25 +406,3 @@ export default {
</script>
<a-form-item label="测站类型">
<a-select
allowClear
v-decorator="[
'typeId',
{ rules: [{ required: true, message: '请选择测站类型' }] },
]"
placeholder="请选择测站类型"
>
<a-select-option
v-for="(item, index) in $attrs.testList"
:value="String(item.id)"
:key="index"
>
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>

Loading…
Cancel
Save