终端运维日志功能

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

View File

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

View File

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

View File

@@ -17,11 +17,44 @@ public class LogsListVO implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 日志类型 * 终端运维日志Id
*/ */
@ApiModelProperty("type") private String id;
private String type;
/**
* 对象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("描述") @ApiModelProperty("描述")
private String remark; private String remark;
} }

View File

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

View File

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

View File

@@ -1,5 +1,6 @@
package com.njcn.device.pq.service; package com.njcn.device.pq.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.device.pq.pojo.param.LogsListParam; import com.njcn.device.pq.pojo.param.LogsListParam;
import com.njcn.device.pq.pojo.po.PqsTerminalLogs; import com.njcn.device.pq.pojo.po.PqsTerminalLogs;
@@ -16,10 +17,10 @@ import java.util.List;
* @author hongawen * @author hongawen
* @since 2023-04-13 * @since 2023-04-13
*/ */
@Service
public interface IPqsTerminalLogsService extends IService<PqsTerminalLogs> { public interface IPqsTerminalLogsService extends IService<PqsTerminalLogs> {
boolean saveLogs(PqsTerminalLogs 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.DeviceLogParam;
import com.njcn.device.pq.pojo.param.EventLogParam; import com.njcn.device.pq.pojo.param.EventLogParam;
import com.njcn.device.pq.pojo.po.EventPushLogs; 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.AreaLineInfoVO;
import com.njcn.device.pq.pojo.vo.DeviceLogVO; import com.njcn.device.pq.pojo.vo.DeviceLogVO;
import com.njcn.device.pq.pojo.vo.EventLogVO; import com.njcn.device.pq.pojo.vo.EventLogVO;

View File

@@ -1,5 +1,9 @@
package com.njcn.device.pq.service.impl; 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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.device.pq.mapper.PqsTerminalLogsMapper; import com.njcn.device.pq.mapper.PqsTerminalLogsMapper;
import com.njcn.device.pq.pojo.param.LogsListParam; 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.pojo.vo.LogsListVO;
import com.njcn.device.pq.service.IPqsTerminalLogsService; import com.njcn.device.pq.service.IPqsTerminalLogsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
/** /**
* <p> * <p>
@@ -21,11 +34,13 @@ import java.util.List;
* @since 2023-04-13 * @since 2023-04-13
*/ */
@Service @Service
@AllArgsConstructor @RequiredArgsConstructor
public class PqsTerminalLogsServiceImpl extends ServiceImpl<PqsTerminalLogsMapper, PqsTerminalLogs> implements IPqsTerminalLogsService { public class PqsTerminalLogsServiceImpl extends ServiceImpl<PqsTerminalLogsMapper, PqsTerminalLogs> implements IPqsTerminalLogsService {
private final PqsTerminalLogsMapper pqsTerminalLogsMapper; private final PqsTerminalLogsMapper pqsTerminalLogsMapper;
private final UserFeignClient userFeignClient;
@Override @Override
public boolean saveLogs(PqsTerminalLogs pqsTerminalLogs) { public boolean saveLogs(PqsTerminalLogs pqsTerminalLogs) {
return this.save(pqsTerminalLogs); return this.save(pqsTerminalLogs);
@@ -38,8 +53,26 @@ public class PqsTerminalLogsServiceImpl extends ServiceImpl<PqsTerminalLogsMappe
* @date 2023/4/13 * @date 2023/4/13
*/ */
@Override @Override
public List<LogsListVO> getList(LogsListParam logsListParam) { public Page<PqsTerminalLogs> getList(LogsListParam logsListParam) {
return pqsTerminalLogsMapper.getList(new Page<LogsListVO>(logsListParam.getPageNum(), logsListParam.getPageSize()),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); 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; return true;
} }
@@ -688,7 +691,7 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
List<PqsTerminalLogs> pqsTerminalLogsList = new ArrayList<>(); List<PqsTerminalLogs> pqsTerminalLogsList = new ArrayList<>();
Map<String,DictData> dictDataMap = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_TYPE.getCode()).getData().stream().collect(Collectors.toMap(DictData::getId, Function.identity())); 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(); String userName= RequestUtil.getUserNickname();
for (DeviceParam updateDeviceParam : devList) { for (DeviceParam updateDeviceParam : devList) {
@@ -1520,7 +1523,9 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
deptLineMapper.delete(wrapper); 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()); lineDetailMapper.deleteById(point.getId());
overlimitMapper.deleteById(point.getId()); overlimitMapper.deleteById(point.getId());
deptLineMapper.deleteById(point.getId()); deptLineMapper.deleteById(point.getId());
@@ -1570,14 +1575,15 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
deleteBusbarAndChildren(obj.getId(),logsList); deleteBusbarAndChildren(obj.getId(),logsList);
break; break;
case LINE_LEVEL: case LINE_LEVEL:
deleteMonitoringPoint(obj); deleteMonitoringPoint(obj,logsList);
break; break;
default: default:
throw new BusinessException(CommonResponseEnum.FAIL); throw new BusinessException(CommonResponseEnum.FAIL);
} }
if(CollUtil.isNotEmpty(logsList)){ 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; 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; String op,operate;
switch (operateType){ switch (operateType){
case 0: case 0:
@@ -3678,11 +3684,31 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
} }
String name = RequestUtil.getUserNickname(); String name = RequestUtil.getUserNickname();
if(CollUtil.isNotEmpty(logsList)){ 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){ for(Line line : logsList){
PqsTerminalLogs pqsTerminalLogs = new PqsTerminalLogs(); PqsTerminalLogs pqsTerminalLogs = new PqsTerminalLogs();
pqsTerminalLogs.setLogsType(line.getId()); pqsTerminalLogs.setLogsType(logsType);
pqsTerminalLogs.setTerminalType(line.getLevel()); 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.setState(DataStateEnum.ENABLE.getCode());
pqsTerminalLogs.setIsPush(DataStateEnum.ENABLE.getCode()); pqsTerminalLogs.setIsPush(DataStateEnum.ENABLE.getCode());
pqsTerminalLogs.setOperateType(operate); pqsTerminalLogs.setOperateType(operate);

View File

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