若依微服务1.3.8

1、电子围栏删除时连同区域一起删除
2、监控单元完善
3、设备管理修复bug
4、场景管理修复bug
master
xins 2 years ago
parent 562c96c91c
commit abab19b27a

@ -89,7 +89,8 @@ public class HwDictConstants {
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_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
@ -107,4 +108,8 @@ public class HwDictConstants {
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";//监控单元状态,删除
}

@ -47,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;
@ -66,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, "设备信息数据");
@ -94,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));
}
@ -105,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());
@ -120,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));
}
@ -131,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));
}
@ -157,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));
@ -166,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));
@ -175,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);
@ -190,8 +181,7 @@ 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.changeDeviceStatus(device));
@ -203,14 +193,13 @@ public class HwDeviceController extends BaseController
@RequiresPermissions("business:device:edit")
@Log(title = "下发设备控制指令", businessType = BusinessType.UPDATE)
@PutMapping("/publishControlCommand")
public AjaxResult publishControlCommand(@RequestBody DeviceControlVo deviceControlVo)
{
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);
}
}

@ -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));
}
@ -151,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);
}

@ -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);
}

@ -89,6 +89,14 @@ public interface IHwDeviceService
*/
public int deleteHwDeviceByDeviceIds(Long[] deviceIds);
/**
*
*
* @param releatedDeviceId ID
* @return true false
*/
public boolean checkExistSubDevice(Long releatedDeviceId);
/**
*
*
@ -97,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);

@ -446,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);
}

@ -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);
}

@ -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) {
@ -215,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;
}
/**
@ -243,15 +240,20 @@ public class HwSceneServiceImpl implements IHwSceneService {
public List<HwScene> selectHwSceneList4Select(HwScene hwScene) {
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser user = loginUser.getSysUser();
hwScene.setTenantId(user.getTenantId());
//如果不是管理租户,需要过滤
if(!user.getTenantId().equals(HwDictConstants.ADMINISTRATOR_TENANT_ID)){
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)) {
scenes.forEach(s -> {
if (!s.getTenantId().equals(user.getTenantId())) {
s.setSelectedDisable("1");
}
});
}
return scenes;
}
@ -268,7 +270,7 @@ public class HwSceneServiceImpl implements IHwSceneService {
List<HwScene> dbScenes = hwSceneMapper.selectHwSceneList(queryScene);
if (dbScenes != null && !dbScenes.isEmpty()) {
dbScenes.forEach(dbScene -> {
if (hwScene.getSceneId()==null || (hwScene.getSceneId() != null &&
if (hwScene.getSceneId() == null || (hwScene.getSceneId() != null &&
!hwScene.getSceneId().equals(dbScene.getSceneId()))) {
dbScene.setDefaultFlag(HwDictConstants.SCENE_DEFAULT_FLAG_NO);
hwSceneMapper.updateHwScene(dbScene);

@ -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">
@ -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>

@ -143,6 +143,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</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>

@ -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'
})
}

@ -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>
@ -296,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"
@ -439,6 +427,7 @@ export default {
sceneDisabled:true,
subDeviceVisible: false,//
deviceVisible: false,//
deviceModeDisabled:true,
DEVICE_TYPE_GATEWAY_DEVICE: "1",//
DEVICE_TYPE_GATEWAY_SUB_EQUIPMENT: "2",//
@ -618,6 +607,8 @@ export default {
});
this.deviceTypeDisabled = false;
this.sceneDisabled = false;
this.deviceModeDisabled = false;
this.confirmBtnVisible = true;
this.fileList = [];
this.reset();
this.open = true;
@ -625,6 +616,8 @@ export default {
},
/** 修改按钮操作 */
handleUpdate(row) {
this.deviceModeDisabled = true;
this.confirmBtnVisible = true;
getEditedScenes().then(response => {
this.editedScenes = response.data;
});
@ -709,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("删除成功");

@ -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"/>

@ -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" >

@ -329,6 +329,7 @@ export default {
editedSceneChange(sceneId) {
this.form.monitorUnitTypeId = null;
this.getEditedMonitorUnitTypes(sceneId);
this.getTreeselect(sceneId);
},
getMonitorUnitTypes(sceneId) {
@ -363,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;
});
},
//
@ -414,11 +417,12 @@ export default {
this.sceneDisable= false;
this.getEditedScenes();
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 = "添加监控单元";
@ -436,7 +440,6 @@ export default {
this.sceneDisable= true;
this.getEditedScenes();
this.reset();
this.getTreeselect();
if (row != null) {
this.form.parentId = row.monitorUnitId;
}
@ -445,7 +448,7 @@ export default {
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>

@ -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"
@ -199,7 +200,8 @@
</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,19 +338,16 @@ 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"}
],
preserveTime: [
{required: true, message: "保存周期(单位默认90天不能为空", trigger: "blur"}
{required: true, message: "保存周期不能为空", trigger: "blur"}
]
},
@ -439,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 => {
@ -482,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();

@ -134,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>

Loading…
Cancel
Save