设备手工操作命令接口
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 com.das.common.constant.MeasType;
|
||||
import com.das.common.constant.SysAuthorityIds;
|
||||
import com.das.common.exceptions.ServiceException;
|
||||
import com.das.common.result.R;
|
||||
import com.das.modules.operation.domain.CommandInfoDto;
|
||||
import com.das.modules.operation.service.OperationService;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
@ -65,13 +67,14 @@ public class ManualOperatorController {
|
||||
@PostMapping("/manualCommand")
|
||||
public R<Void> deviceSetPointByMrid(HttpServletRequest request,@RequestBody CommandInfoDto cmdInfo) {
|
||||
cmdInfo.setMeasType(MeasType.TYPE_PSR_CALCULATED_VALUE);
|
||||
|
||||
//判断是否有权限
|
||||
boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_DEVICE_CTRL.toString());
|
||||
if(!hasPermission){
|
||||
return R.fail("没有设备遥控权限");
|
||||
}
|
||||
|
||||
if (cmdInfo.getDeviceId() ==null || StringUtils.isBlank(cmdInfo.getServiceCode())){
|
||||
throw new ServiceException("参数缺失");
|
||||
}
|
||||
optService.executeOperation(request,cmdInfo);
|
||||
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.constant.MeasType;
|
||||
import com.das.common.exceptions.ServiceException;
|
||||
import com.das.common.utils.AdminRedisTemplate;
|
||||
import com.das.modules.auth.domain.vo.SysUserVo;
|
||||
import com.das.modules.node.constant.NodeConstant;
|
||||
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.mapper.SysNodeMapper;
|
||||
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.node.ObjectNode;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
@ -22,6 +27,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -35,9 +41,22 @@ public class OperationService {
|
||||
|
||||
@Autowired
|
||||
private SysNodeMapper sysNodeMapper;
|
||||
|
||||
@Autowired
|
||||
private SysManualStatusMapper sysManualStatusMapper;
|
||||
|
||||
@Autowired
|
||||
private SysOperationLogMapper sysOperationLogMapper;
|
||||
|
||||
@Autowired
|
||||
TerminalMessageEventHandler terminalMessageEventHandler;
|
||||
|
||||
@Autowired
|
||||
AdminRedisTemplate adminRedisTemplate;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 执行操作命令
|
||||
* @param request HttpServletRequest
|
||||
@ -45,16 +64,36 @@ public class OperationService {
|
||||
*/
|
||||
public void executeOperation(HttpServletRequest request, CommandInfoDto cmdInfo) {
|
||||
SysUserVo sysUserVo = (SysUserVo) StpUtil.getTokenSession().get(SessionUtil.SESSION_USER_KEY);
|
||||
|
||||
if(cmdInfo.getMeasType().equals(MeasType.TYPE_PSR_CALCULATED_VALUE)){
|
||||
//TODO:待完善:人工置位,不需要下令
|
||||
if (cmdInfo.getMeasType().equals(MeasType.TYPE_PSR_CALCULATED_VALUE)) {
|
||||
//人工置位,不需要下令
|
||||
// 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实时数据值
|
||||
}else{
|
||||
String key = String.format("RT:%s:%s", cmdInfo.getDeviceId(), cmdInfo.getServiceCode().toLowerCase());
|
||||
// 存入redis
|
||||
adminRedisTemplate.set(key, cmdInfo.getOpValue());
|
||||
} else {
|
||||
sendCommand(cmdInfo); //发送命令消息
|
||||
}
|
||||
|
||||
//TODO:待完善,记录操作日志到数据库 表 sys_operation_log
|
||||
//记录操作日志到数据库 表 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{
|
||||
map.put("opValue", Float.valueOf(cmdInfo.getOpValue().toString()));
|
||||
}
|
||||
|
||||
//激活的node节点Id
|
||||
long activeNodeId = getActiveNodeId();
|
||||
if(activeNodeId==0){
|
||||
|
Loading…
Reference in New Issue
Block a user