设备手工操作命令接口
This commit is contained in:
parent
8c137fcfb7
commit
accd64d879
@ -3,11 +3,13 @@ package com.das.modules.operation.controller;
|
|||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
import com.das.common.constant.MeasType;
|
import com.das.common.constant.MeasType;
|
||||||
import com.das.common.constant.SysAuthorityIds;
|
import com.das.common.constant.SysAuthorityIds;
|
||||||
|
import com.das.common.exceptions.ServiceException;
|
||||||
import com.das.common.result.R;
|
import com.das.common.result.R;
|
||||||
import com.das.modules.operation.domain.CommandInfoDto;
|
import com.das.modules.operation.domain.CommandInfoDto;
|
||||||
import com.das.modules.operation.service.OperationService;
|
import com.das.modules.operation.service.OperationService;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
@ -65,13 +67,14 @@ public class ManualOperatorController {
|
|||||||
@PostMapping("/manualCommand")
|
@PostMapping("/manualCommand")
|
||||||
public R<Void> deviceSetPointByMrid(HttpServletRequest request,@RequestBody CommandInfoDto cmdInfo) {
|
public R<Void> deviceSetPointByMrid(HttpServletRequest request,@RequestBody CommandInfoDto cmdInfo) {
|
||||||
cmdInfo.setMeasType(MeasType.TYPE_PSR_CALCULATED_VALUE);
|
cmdInfo.setMeasType(MeasType.TYPE_PSR_CALCULATED_VALUE);
|
||||||
|
|
||||||
//判断是否有权限
|
//判断是否有权限
|
||||||
boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_DEVICE_CTRL.toString());
|
boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_DEVICE_CTRL.toString());
|
||||||
if(!hasPermission){
|
if(!hasPermission){
|
||||||
return R.fail("没有设备遥控权限");
|
return R.fail("没有设备遥控权限");
|
||||||
}
|
}
|
||||||
|
if (cmdInfo.getDeviceId() ==null || StringUtils.isBlank(cmdInfo.getServiceCode())){
|
||||||
|
throw new ServiceException("参数缺失");
|
||||||
|
}
|
||||||
optService.executeOperation(request,cmdInfo);
|
optService.executeOperation(request,cmdInfo);
|
||||||
return R.success();
|
return R.success();
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,46 @@
|
|||||||
|
package com.das.modules.operation.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.das.common.constant.BaseEntity;
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 人工置位表;
|
||||||
|
*/
|
||||||
|
@TableName("sys_manual_status")
|
||||||
|
@Data
|
||||||
|
public class SysManualStatus extends BaseEntity {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
/**
|
||||||
|
* 记录id
|
||||||
|
*/
|
||||||
|
@TableId(value = "id", type = IdType.ASSIGN_ID)
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备id
|
||||||
|
*/
|
||||||
|
@TableField("device_id")
|
||||||
|
private Long deviceId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 属性编码
|
||||||
|
*/
|
||||||
|
@TableField("attribute_code")
|
||||||
|
private String attributeCode;
|
||||||
|
/**
|
||||||
|
* 状态值
|
||||||
|
*/
|
||||||
|
@TableField("status")
|
||||||
|
private Integer status;
|
||||||
|
}
|
@ -0,0 +1,80 @@
|
|||||||
|
package com.das.modules.operation.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.das.common.constant.BaseEntity;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@TableName("sys_operation_log")
|
||||||
|
@Data
|
||||||
|
public class SysOperationLog extends BaseEntity {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 记录id
|
||||||
|
*/
|
||||||
|
@TableId(value = "id", type = IdType.ASSIGN_ID)
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作人账号
|
||||||
|
*/
|
||||||
|
@TableField("user_id")
|
||||||
|
private String userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作人名称
|
||||||
|
*/
|
||||||
|
@TableField("user_name")
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作时间
|
||||||
|
*/
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@TableField("opt_time")
|
||||||
|
private Date optTime;
|
||||||
|
/**
|
||||||
|
* 操作人IP地址
|
||||||
|
*/
|
||||||
|
@TableField("ip_address")
|
||||||
|
private String ipAddress;
|
||||||
|
/**
|
||||||
|
* 操作设备id
|
||||||
|
*/
|
||||||
|
@TableField("device_id")
|
||||||
|
private Long deviceId;
|
||||||
|
/**
|
||||||
|
* 设备属性编码
|
||||||
|
*/
|
||||||
|
@TableField("attribute_code")
|
||||||
|
private String attributeCode;
|
||||||
|
/**
|
||||||
|
* 设备属性名称
|
||||||
|
*/
|
||||||
|
@TableField("attribute_name")
|
||||||
|
private String attributeName;
|
||||||
|
/**
|
||||||
|
* 操作描述
|
||||||
|
*/
|
||||||
|
@TableField("opt_desc")
|
||||||
|
private String optDesc;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package com.das.modules.operation.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.das.modules.operation.entity.SysManualStatus;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface SysManualStatusMapper extends BaseMapper<SysManualStatus> {
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package com.das.modules.operation.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.das.modules.operation.entity.SysOperationLog;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface SysOperationLogMapper extends BaseMapper<SysOperationLog> {
|
||||||
|
}
|
@ -5,6 +5,7 @@ import cn.hutool.core.util.IdUtil;
|
|||||||
import com.das.common.config.SessionUtil;
|
import com.das.common.config.SessionUtil;
|
||||||
import com.das.common.constant.MeasType;
|
import com.das.common.constant.MeasType;
|
||||||
import com.das.common.exceptions.ServiceException;
|
import com.das.common.exceptions.ServiceException;
|
||||||
|
import com.das.common.utils.AdminRedisTemplate;
|
||||||
import com.das.modules.auth.domain.vo.SysUserVo;
|
import com.das.modules.auth.domain.vo.SysUserVo;
|
||||||
import com.das.modules.node.constant.NodeConstant;
|
import com.das.modules.node.constant.NodeConstant;
|
||||||
import com.das.modules.node.disruptor.TerminalMessageEventHandler;
|
import com.das.modules.node.disruptor.TerminalMessageEventHandler;
|
||||||
@ -12,6 +13,10 @@ import com.das.modules.node.domain.bo.TerminalMessage;
|
|||||||
import com.das.modules.node.domain.vo.SysNodeVo;
|
import com.das.modules.node.domain.vo.SysNodeVo;
|
||||||
import com.das.modules.node.mapper.SysNodeMapper;
|
import com.das.modules.node.mapper.SysNodeMapper;
|
||||||
import com.das.modules.operation.domain.CommandInfoDto;
|
import com.das.modules.operation.domain.CommandInfoDto;
|
||||||
|
import com.das.modules.operation.entity.SysManualStatus;
|
||||||
|
import com.das.modules.operation.entity.SysOperationLog;
|
||||||
|
import com.das.modules.operation.mapper.SysManualStatusMapper;
|
||||||
|
import com.das.modules.operation.mapper.SysOperationLogMapper;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
@ -22,6 +27,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
|
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.net.UnknownHostException;
|
import java.net.UnknownHostException;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -35,9 +41,22 @@ public class OperationService {
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SysNodeMapper sysNodeMapper;
|
private SysNodeMapper sysNodeMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SysManualStatusMapper sysManualStatusMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SysOperationLogMapper sysOperationLogMapper;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
TerminalMessageEventHandler terminalMessageEventHandler;
|
TerminalMessageEventHandler terminalMessageEventHandler;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
AdminRedisTemplate adminRedisTemplate;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 执行操作命令
|
* 执行操作命令
|
||||||
* @param request HttpServletRequest
|
* @param request HttpServletRequest
|
||||||
@ -45,16 +64,36 @@ public class OperationService {
|
|||||||
*/
|
*/
|
||||||
public void executeOperation(HttpServletRequest request, CommandInfoDto cmdInfo) {
|
public void executeOperation(HttpServletRequest request, CommandInfoDto cmdInfo) {
|
||||||
SysUserVo sysUserVo = (SysUserVo) StpUtil.getTokenSession().get(SessionUtil.SESSION_USER_KEY);
|
SysUserVo sysUserVo = (SysUserVo) StpUtil.getTokenSession().get(SessionUtil.SESSION_USER_KEY);
|
||||||
|
if (cmdInfo.getMeasType().equals(MeasType.TYPE_PSR_CALCULATED_VALUE)) {
|
||||||
if(cmdInfo.getMeasType().equals(MeasType.TYPE_PSR_CALCULATED_VALUE)){
|
//人工置位,不需要下令
|
||||||
//TODO:待完善:人工置位,不需要下令
|
|
||||||
// 1、只需要把数据保存到数据库 sys_manual_status表中
|
// 1、只需要把数据保存到数据库 sys_manual_status表中
|
||||||
|
SysManualStatus sysManualStatus = new SysManualStatus();
|
||||||
|
sysManualStatus.setDeviceId(cmdInfo.getDeviceId());
|
||||||
|
sysManualStatus.setAttributeCode(cmdInfo.getServiceCode());
|
||||||
|
sysManualStatus.setStatus( Integer.valueOf(cmdInfo.getOpValue().toString()));
|
||||||
|
sysManualStatusMapper.insert(sysManualStatus);
|
||||||
// 2、更新redis RT实时数据值
|
// 2、更新redis RT实时数据值
|
||||||
}else{
|
String key = String.format("RT:%s:%s", cmdInfo.getDeviceId(), cmdInfo.getServiceCode().toLowerCase());
|
||||||
|
// 存入redis
|
||||||
|
adminRedisTemplate.set(key, cmdInfo.getOpValue());
|
||||||
|
} else {
|
||||||
sendCommand(cmdInfo); //发送命令消息
|
sendCommand(cmdInfo); //发送命令消息
|
||||||
}
|
}
|
||||||
|
//记录操作日志到数据库 表 sys_operation_log
|
||||||
//TODO:待完善,记录操作日志到数据库 表 sys_operation_log
|
SysOperationLog sysOperationLog = new SysOperationLog();
|
||||||
|
sysOperationLog.setUserId(String.valueOf(sysUserVo.getId()));
|
||||||
|
sysOperationLog.setUserName(sysUserVo.getUserName());
|
||||||
|
sysOperationLog.setOptTime(new Date());
|
||||||
|
sysOperationLog.setDeviceId(cmdInfo.getDeviceId());
|
||||||
|
sysOperationLog.setAttributeCode(cmdInfo.getServiceCode());
|
||||||
|
sysOperationLog.setAttributeName(cmdInfo.getServiceName());
|
||||||
|
sysOperationLog.setOptDesc(cmdInfo.getOptDesc());
|
||||||
|
try {
|
||||||
|
sysOperationLog.setIpAddress(getClientIp(request));
|
||||||
|
} catch (UnknownHostException e) {
|
||||||
|
log.error("获取客户端ip地址失败 ", e);
|
||||||
|
}
|
||||||
|
sysOperationLogMapper.insert(sysOperationLog);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -74,7 +113,6 @@ public class OperationService {
|
|||||||
}else{
|
}else{
|
||||||
map.put("opValue", Float.valueOf(cmdInfo.getOpValue().toString()));
|
map.put("opValue", Float.valueOf(cmdInfo.getOpValue().toString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
//激活的node节点Id
|
//激活的node节点Id
|
||||||
long activeNodeId = getActiveNodeId();
|
long activeNodeId = getActiveNodeId();
|
||||||
if(activeNodeId==0){
|
if(activeNodeId==0){
|
||||||
|
Loading…
Reference in New Issue
Block a user