终端运维日志功能

This commit is contained in:
2025-04-15 09:30:30 +08:00
parent e968e44440
commit 829488a680
11 changed files with 162 additions and 73 deletions

View File

@@ -1,5 +1,6 @@
package com.njcn.device.pq.pojo.param;
import com.njcn.web.pojo.param.BaseParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -11,12 +12,12 @@ import lombok.Data;
*/
@Data
@ApiModel
public class LogsListParam extends DeviceLogParam{
public class LogsListParam extends BaseParam {
/**
* 描述模糊匹配字段
* 日志类型
*/
@ApiModelProperty("描述模糊匹配字段")
private String searchValue;
@ApiModelProperty("日志类型")
private String type;
}

View File

@@ -20,7 +20,7 @@ import lombok.Setter;
@Getter
@Setter
@TableName("pqs_terminal_logs")
public class PqsTerminalLogs extends BaseEntity {
public class PqsTerminalLogs extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;

View File

@@ -1,34 +1,34 @@
package com.njcn.device.pq.pojo.po;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import org.influxdb.annotation.Column;
import org.influxdb.annotation.Measurement;
import java.time.Instant;
/**
* @version 1.0.0
* @author: chenchao
* @date: 2022/06/22 19:03
*/
@Data
@Measurement(name = "pqs_terminal_logs")
public class TerminalLogs {
@Column(name = "time")
private Instant timeId;
@Column(name = "line_id")
private String lineId;
@Column(name = "terminal_type")
private String terminalType;
@Column(name = "update_by")
private String updateBy;
@Column(name = "terminal_describe")
private String terminalDescribe;
}
//package com.njcn.device.pq.pojo.po;
//
//import com.baomidou.mybatisplus.annotation.TableId;
//import lombok.Data;
//import org.influxdb.annotation.Column;
//import org.influxdb.annotation.Measurement;
//
//import java.time.Instant;
//
///**
// * @version 1.0.0
// * @author: chenchao
// * @date: 2022/06/22 19:03
// */
//@Data
//@Measurement(name = "pqs_terminal_logs")
//public class TerminalLogs {
//
// @Column(name = "time")
// private Instant timeId;
//
// @Column(name = "line_id")
// private String lineId;
//
// @Column(name = "terminal_type")
// private String terminalType;
//
// @Column(name = "update_by")
// private String updateBy;
//
// @Column(name = "terminal_describe")
// private String terminalDescribe;
//
//}

View File

@@ -17,11 +17,44 @@ public class LogsListVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 日志类型
* 终端运维日志Id
*/
@ApiModelProperty("type")
private String type;
private String id;
/**
* 对象Id
*/
private String objIndex;
/**
* 对象类型 6.监测点 4.装置
*/
private Integer terminalType;
/**
* 新增,修改,删除
*/
private String operateType;
/**
* 运维日志类型
*/
@ApiModelProperty("logsType")
private String logsType;
/**
* 是否推送
*/
private Integer isPush;
/**
* 内容描述
*/
private String terminalDescribe;
/**
* 更改人员
@@ -41,4 +74,5 @@ public class LogsListVO implements Serializable {
@ApiModelProperty("描述")
private String remark;
}

View File

@@ -1,6 +1,7 @@
package com.njcn.device.pq.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
@@ -71,9 +72,9 @@ public class PqsTerminalLogsController extends BaseController {
@PostMapping("/getList")
@ApiOperation("运维日志页面展示")
@ApiImplicitParam(name = "logsListParam", value = "实体", required = true)
public HttpResult<List<LogsListVO>> getList(@RequestBody LogsListParam logsListParam) {
public HttpResult<Page<PqsTerminalLogs>> getList(@RequestBody LogsListParam logsListParam) {
String methodDescribe = getMethodDescribe("getList");
List<LogsListVO> result = iPqsTerminalLogsService.getList(logsListParam);
Page<PqsTerminalLogs> result = iPqsTerminalLogsService.getList(logsListParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
}

View File

@@ -30,20 +30,14 @@
</select>-->
<select id="getList" resultType="com.njcn.device.pq.pojo.vo.LogsListVO">
SELECT
sdd.Name "type",
ptl.Create_By "updateBy",
ptl.Create_Time "updateTime",
ptl.Terminal_Describe "remark"
logs.logs_type type,
ptl.Create_By updateBy,
ptl.Create_Time updateTime,
ptl.Terminal_Describe remark
FROM
pqs_terminal_logs ptl
LEFT JOIN sys_dict_data sdd ON sdd.Id = ptl.Terminal_Type
pqs_terminal_logs logs
<where>
<if test="logsListParam.searchBeginTime != null and logsListParam.searchBeginTime != ''">
and date_format(ptl.Create_Time,'%y%m%d') &gt;= date_format(#{logsListParam.searchBeginTime},'%y%m%d')
</if>
<if test="logsListParam.searchEndTime != null and logsListParam.searchEndTime != ''">
and date_format(ptl.Create_Time,'%y%m%d') &lt;= date_format(#{logsListParam.searchEndTime},'%y%m%d')
</if>
<if test="logsListParam.searchValue !=null and logsListParam.searchValue !=''">
and ptl.Terminal_Describe like CONCAT('%', #{logsListParam.searchValue},'%')
</if>

View File

@@ -1,5 +1,6 @@
package com.njcn.device.pq.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.device.pq.pojo.param.LogsListParam;
import com.njcn.device.pq.pojo.po.PqsTerminalLogs;
@@ -16,10 +17,10 @@ import java.util.List;
* @author hongawen
* @since 2023-04-13
*/
@Service
public interface IPqsTerminalLogsService extends IService<PqsTerminalLogs> {
boolean saveLogs(PqsTerminalLogs pqsTerminalLogs);
List<LogsListVO> getList(LogsListParam logsListParam);
Page<PqsTerminalLogs> getList(LogsListParam logsListParam);
}

View File

@@ -16,7 +16,6 @@ import com.njcn.device.pq.pojo.constant.DeviceValidMessage;
import com.njcn.device.pq.pojo.param.DeviceLogParam;
import com.njcn.device.pq.pojo.param.EventLogParam;
import com.njcn.device.pq.pojo.po.EventPushLogs;
import com.njcn.device.pq.pojo.po.TerminalLogs;
import com.njcn.device.pq.pojo.vo.AreaLineInfoVO;
import com.njcn.device.pq.pojo.vo.DeviceLogVO;
import com.njcn.device.pq.pojo.vo.EventLogVO;

View File

@@ -1,5 +1,9 @@
package com.njcn.device.pq.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.device.pq.mapper.PqsTerminalLogsMapper;
import com.njcn.device.pq.pojo.param.LogsListParam;
@@ -7,10 +11,19 @@ import com.njcn.device.pq.pojo.po.PqsTerminalLogs;
import com.njcn.device.pq.pojo.vo.LogsListVO;
import com.njcn.device.pq.service.IPqsTerminalLogsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.user.api.UserFeignClient;
import com.njcn.user.pojo.vo.UserVO;
import com.njcn.web.factory.PageFactory;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* <p>
@@ -21,11 +34,13 @@ import java.util.List;
* @since 2023-04-13
*/
@Service
@AllArgsConstructor
@RequiredArgsConstructor
public class PqsTerminalLogsServiceImpl extends ServiceImpl<PqsTerminalLogsMapper, PqsTerminalLogs> implements IPqsTerminalLogsService {
private final PqsTerminalLogsMapper pqsTerminalLogsMapper;
private final UserFeignClient userFeignClient;
@Override
public boolean saveLogs(PqsTerminalLogs pqsTerminalLogs) {
return this.save(pqsTerminalLogs);
@@ -38,8 +53,26 @@ public class PqsTerminalLogsServiceImpl extends ServiceImpl<PqsTerminalLogsMappe
* @date 2023/4/13
*/
@Override
public List<LogsListVO> getList(LogsListParam logsListParam) {
return pqsTerminalLogsMapper.getList(new Page<LogsListVO>(logsListParam.getPageNum(), logsListParam.getPageSize()),logsListParam);
public Page<PqsTerminalLogs> getList(LogsListParam logsListParam) {
Page<PqsTerminalLogs> page;
LambdaQueryWrapper<PqsTerminalLogs> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(StrUtil.isNotBlank(logsListParam.getType()),PqsTerminalLogs::getLogsType,logsListParam.getType())
.between(PqsTerminalLogs::getCreateTime, DateUtil.beginOfDay(DateUtil.parse(logsListParam.getSearchBeginTime())),DateUtil.endOfDay(DateUtil.parse(logsListParam.getSearchEndTime())))
.orderByDesc(PqsTerminalLogs::getCreateTime);
page = pqsTerminalLogsMapper.selectPage(new Page<>(PageFactory.getPageNum(logsListParam),PageFactory.getPageSize(logsListParam)),lambdaQueryWrapper);
if(CollUtil.isNotEmpty(page.getRecords())){
List<String> userIds = page.getRecords().stream().map(PqsTerminalLogs::getCreateBy).distinct().collect(Collectors.toList());
List<UserVO> userVOList = userFeignClient.getUserVOByIdList(userIds).getData();
Map<String,UserVO> userMap = userVOList.stream().collect(Collectors.toMap(UserVO::getId, Function.identity()));
page.getRecords().forEach(it->{
UserVO userVO = userMap.getOrDefault(it.getCreateBy(),null);
if(Objects.nonNull(userVO)){
it.setCreateBy(userVO.getName());
}else {
it.setCreateBy("/");
}
});
}
return page;
}
}

View File

@@ -529,7 +529,10 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
throw new BusinessException(CommonResponseEnum.FAIL);
}
terminalLogsCat(logsList,0);
if(CollUtil.isNotEmpty(logsList)){
DictData dataDic = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.LINE_PARAMETER.getCode(),DicDataTypeEnum.DEV_OPS.getCode()).getData();
terminalLogsCat(logsList,0,dataDic.getId());
}
}
return true;
}
@@ -688,7 +691,7 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
List<PqsTerminalLogs> pqsTerminalLogsList = new ArrayList<>();
Map<String,DictData> dictDataMap = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_TYPE.getCode()).getData().stream().collect(Collectors.toMap(DictData::getId, Function.identity()));
DictData dicDataByCode = dicDataFeignClient.getDicDataByCode(DicDataEnum.LINE_PARAMETER.getCode()).getData();
DictData dicDataByCode = dicDataFeignClient.getDicDataByCode(DicDataEnum.DEV_PARAMETER.getCode()).getData();
String userName= RequestUtil.getUserNickname();
for (DeviceParam updateDeviceParam : devList) {
@@ -1520,7 +1523,9 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
deptLineMapper.delete(wrapper);
}
private void deleteMonitoringPoint(Line point) {
private void deleteMonitoringPoint(Line point,List<Line> logsList) {
logsList.add(point);
this.removeById(point.getId());
lineDetailMapper.deleteById(point.getId());
overlimitMapper.deleteById(point.getId());
deptLineMapper.deleteById(point.getId());
@@ -1570,14 +1575,15 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
deleteBusbarAndChildren(obj.getId(),logsList);
break;
case LINE_LEVEL:
deleteMonitoringPoint(obj);
deleteMonitoringPoint(obj,logsList);
break;
default:
throw new BusinessException(CommonResponseEnum.FAIL);
}
if(CollUtil.isNotEmpty(logsList)){
terminalLogsCat(logsList,2);
DictData dataDic = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.DEV_PARAMETER.getCode(),DicDataTypeEnum.DEV_OPS.getCode()).getData();
terminalLogsCat(logsList,2,dataDic.getId());
}
return true;
}
@@ -3656,7 +3662,7 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
/**
* 终端日志记录
*/
private void terminalLogsCat(List<Line> logsList,Integer operateType){
private void terminalLogsCat(List<Line> logsList,Integer operateType,String logsType){
String op,operate;
switch (operateType){
case 0:
@@ -3678,11 +3684,31 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
}
String name = RequestUtil.getUserNickname();
if(CollUtil.isNotEmpty(logsList)){
List<String> lineSubIds = logsList.stream().filter(it->it.getLevel().equals(LINE_LEVEL.getCode())).map(it->it.getPids().split(StrUtil.COMMA)[SUB_LEVEL.getCode()]).distinct().collect(Collectors.toList());
List<String> devSubIds = logsList.stream().filter(it->it.getLevel().equals(DEVICE_LEVEL.getCode())).map(it->it.getPids().split(StrUtil.COMMA)[SUB_LEVEL.getCode()]).distinct().collect(Collectors.toList());
lineSubIds.addAll(devSubIds);
List<String> ids = lineSubIds.stream().distinct().collect(Collectors.toList());
List<Line> subList = this.listByIds(ids);
Map<String,Line> subMap = subList.stream().collect(Collectors.toMap(Line::getId,Function.identity()));
for(Line line : logsList){
PqsTerminalLogs pqsTerminalLogs = new PqsTerminalLogs();
pqsTerminalLogs.setLogsType(line.getId());
pqsTerminalLogs.setLogsType(logsType);
pqsTerminalLogs.setTerminalType(line.getLevel());
pqsTerminalLogs.setTerminalDescribe(name+"进行"+op+(Objects.equals(line.getLevel(), LineBaseEnum.LINE_LEVEL.getCode()) ? LineBaseEnum.LINE_LEVEL.getMessage():LineBaseEnum.DEVICE_LEVEL.getMessage())+"操作;监测点名称:"+line.getName());
String subName;
String levelOperate;
if(line.getLevel().equals(LINE_LEVEL.getCode())){
levelOperate = LINE_LEVEL.getMessage();
}else{
levelOperate = DEVICE_LEVEL.getMessage();
}
subName = subMap.get(line.getPids().split(StrUtil.COMMA)[SUB_LEVEL.getCode()]).getName();
String temLos = "%s进行%s%s操作; %s名称: %s";
String tem = String.format(temLos,name,op,levelOperate,levelOperate,subName+"_"+line.getName());
pqsTerminalLogs.setTerminalDescribe(tem);
pqsTerminalLogs.setState(DataStateEnum.ENABLE.getCode());
pqsTerminalLogs.setIsPush(DataStateEnum.ENABLE.getCode());
pqsTerminalLogs.setOperateType(operate);

View File

@@ -366,8 +366,8 @@ public enum DicDataEnum {
/**
* 日志字典类型
*/
LINE_PARAMETER("监测点参数修改", "Line_Parameter"),
DEV_PARAMETER("设备状态修改", "Dev_Parameter"),
LINE_PARAMETER("监测点日志", "Line_Parameter"),
DEV_PARAMETER("设备日志", "Dev_Parameter"),
WEB_ADD("web新增用户", "Web_Add"),
DATA_PLAN("流量套餐修改", "Data_Plan"),