fix: 优化操作日志查询
This commit is contained in:
parent
56305b8f89
commit
26b1ca794d
@ -62,7 +62,7 @@ public class SecurityConfig {
|
|||||||
.requestMatchers("/system/user/auditUser").permitAll()
|
.requestMatchers("/system/user/auditUser").permitAll()
|
||||||
.requestMatchers("/register/accessToken").permitAll()
|
.requestMatchers("/register/accessToken").permitAll()
|
||||||
.requestMatchers("/sys/psbmodulelbb/**").permitAll()
|
.requestMatchers("/sys/psbmodulelbb/**").permitAll()
|
||||||
|
.requestMatchers("/base/operationLog/**").permitAll()
|
||||||
// .requestMatchers("/eng/**").permitAll()
|
// .requestMatchers("/eng/**").permitAll()
|
||||||
// .requestMatchers("/eq/**").permitAll()
|
// .requestMatchers("/eq/**").permitAll()
|
||||||
// .requestMatchers("/env/**").permitAll()
|
// .requestMatchers("/env/**").permitAll()
|
||||||
|
|||||||
@ -0,0 +1,46 @@
|
|||||||
|
package com.yfd.platform.qgc_base.controller;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.yfd.platform.common.DataSourceRequest;
|
||||||
|
import com.yfd.platform.config.ResponseResult;
|
||||||
|
import com.yfd.platform.qgc_base.domain.MsOperationLog;
|
||||||
|
import com.yfd.platform.qgc_base.domain.MsOperationLogDetail;
|
||||||
|
import com.yfd.platform.qgc_base.service.IMsOperationLogService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作日志控制器
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/base/operationLog")
|
||||||
|
@Tag(name = "操作日志管理")
|
||||||
|
public class MsOperationLogController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IMsOperationLogService msOperationLogService;
|
||||||
|
|
||||||
|
@PostMapping("/GetKendoListCust")
|
||||||
|
@Operation(summary = "分页查询操作日志(tableName必传,recordId可选)")
|
||||||
|
public ResponseResult getKendoList(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
Page<MsOperationLog> page = msOperationLogService.queryPageList(dataSourceRequest);
|
||||||
|
return ResponseResult.successData(page);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/getDetailByMainId")
|
||||||
|
@Operation(summary = "根据日志主表ID查询日志详情")
|
||||||
|
public ResponseResult getDetailByMainId(@RequestParam("mainId") String mainId) {
|
||||||
|
if (StringUtils.isBlank(mainId)) {
|
||||||
|
return ResponseResult.error("mainId 不能为空");
|
||||||
|
}
|
||||||
|
List<MsOperationLogDetail> list = msOperationLogService.getDetailByMainId(mainId);
|
||||||
|
return ResponseResult.successData(list);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,8 +1,15 @@
|
|||||||
package com.yfd.platform.qgc_base.service;
|
package com.yfd.platform.qgc_base.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.yfd.platform.common.DataSourceRequest;
|
||||||
|
import com.yfd.platform.qgc_base.domain.MsOperationLog;
|
||||||
|
import com.yfd.platform.qgc_base.domain.MsOperationLogDetail;
|
||||||
import com.yfd.platform.qgc_base.domain.SdEngInfoBH;
|
import com.yfd.platform.qgc_base.domain.SdEngInfoBH;
|
||||||
|
|
||||||
public interface IMsOperationLogService {
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface IMsOperationLogService extends IService<MsOperationLog> {
|
||||||
|
|
||||||
void recordEngAddLog(SdEngInfoBH engInfo, String source);
|
void recordEngAddLog(SdEngInfoBH engInfo, String source);
|
||||||
|
|
||||||
@ -58,4 +65,20 @@ public interface IMsOperationLogService {
|
|||||||
* @param <T> 实体类型
|
* @param <T> 实体类型
|
||||||
*/
|
*/
|
||||||
<T> void recordDeleteDetailLog(String recordId,String tableName, T entity, String source);
|
<T> void recordDeleteDetailLog(String recordId,String tableName, T entity, String source);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询操作日志
|
||||||
|
*
|
||||||
|
* @param request 请求参数(tableName 必传在 filter 中,recordId 可选)
|
||||||
|
* @return 分页结果
|
||||||
|
*/
|
||||||
|
Page<MsOperationLog> queryPageList(DataSourceRequest request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据日志主表ID查询日志详情
|
||||||
|
*
|
||||||
|
* @param mainId 日志主表ID
|
||||||
|
* @return 日志详情列表
|
||||||
|
*/
|
||||||
|
List<MsOperationLogDetail> getDetailByMainId(String mainId);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,28 +4,28 @@ import cn.hutool.core.date.DateUtil;
|
|||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.yfd.platform.common.DataSourceRequest;
|
||||||
import com.yfd.platform.qgc_base.domain.MsOperationLog;
|
import com.yfd.platform.qgc_base.domain.MsOperationLog;
|
||||||
import com.yfd.platform.qgc_base.domain.MsOperationLogDetail;
|
import com.yfd.platform.qgc_base.domain.MsOperationLogDetail;
|
||||||
import com.yfd.platform.qgc_base.domain.SdEngInfoBH;
|
import com.yfd.platform.qgc_base.domain.SdEngInfoBH;
|
||||||
import com.yfd.platform.qgc_base.mapper.MsOperationLogDetailMapper;
|
import com.yfd.platform.qgc_base.mapper.MsOperationLogDetailMapper;
|
||||||
import com.yfd.platform.qgc_base.mapper.MsOperationLogMapper;
|
import com.yfd.platform.qgc_base.mapper.MsOperationLogMapper;
|
||||||
import com.yfd.platform.qgc_base.service.IMsOperationLogService;
|
import com.yfd.platform.qgc_base.service.IMsOperationLogService;
|
||||||
|
import com.yfd.platform.utils.DataSourceRequestUtil;
|
||||||
import com.yfd.platform.utils.SecurityUtils;
|
import com.yfd.platform.utils.SecurityUtils;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.lang.reflect.Modifier;
|
import java.lang.reflect.Modifier;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class MsOperationLogServiceImpl implements IMsOperationLogService {
|
public class MsOperationLogServiceImpl extends ServiceImpl<MsOperationLogMapper, MsOperationLog> implements IMsOperationLogService {
|
||||||
|
|
||||||
private static final String ENG_TABLE_NAME = "SD_ENGINFO_B_H";
|
private static final String ENG_TABLE_NAME = "SD_ENGINFO_B_H";
|
||||||
|
|
||||||
@ -685,4 +685,48 @@ public class MsOperationLogServiceImpl implements IMsOperationLogService {
|
|||||||
}
|
}
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Page<MsOperationLog> queryPageList(DataSourceRequest request) {
|
||||||
|
Page<MsOperationLog> msOperationLogPage = DataSourceRequestUtil.executeQuery(request, MsOperationLog.class, this);
|
||||||
|
return msOperationLogPage;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<MsOperationLogDetail> getDetailByMainId(String mainId) {
|
||||||
|
if (StringUtils.isBlank(mainId)) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
LambdaQueryWrapper<MsOperationLogDetail> wrapper = new LambdaQueryWrapper<>();
|
||||||
|
wrapper.eq(MsOperationLogDetail::getMainId, mainId);
|
||||||
|
return msOperationLogDetailMapper.selectList(wrapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从 DataSourceRequest 过滤条件中提取指定字段的值
|
||||||
|
*/
|
||||||
|
private String getFilterFieldValue(DataSourceRequest request, String fieldName) {
|
||||||
|
if (request == null || request.getFilter() == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return findFilterValue(request.getFilter(), fieldName);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String findFilterValue(DataSourceRequest.FilterDescriptor filter, String fieldName) {
|
||||||
|
if (filter == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (fieldName.equals(filter.getField()) && filter.getValue() != null) {
|
||||||
|
return filter.getValue().toString();
|
||||||
|
}
|
||||||
|
if (filter.getFilters() != null) {
|
||||||
|
for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) {
|
||||||
|
String value = findFilterValue(child, fieldName);
|
||||||
|
if (value != null) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -387,7 +387,7 @@ public class MsWarnRuleBServiceImpl extends ServiceImpl<MsWarnRuleBMapper, MsWar
|
|||||||
.append("FROM MS_WARN_RULE_STBPRP_B t1\n")
|
.append("FROM MS_WARN_RULE_STBPRP_B t1\n")
|
||||||
.append("INNER JOIN MS_WARN_RULE_B t2 ON t1.RULE_ID = t2.ID\n")
|
.append("INNER JOIN MS_WARN_RULE_B t2 ON t1.RULE_ID = t2.ID\n")
|
||||||
.append("INNER JOIN V_MS_STBPRP_T t3 ON t1.STCD = t3.STCD\n")
|
.append("INNER JOIN V_MS_STBPRP_T t3 ON t1.STCD = t3.STCD\n")
|
||||||
.append("WHERE t2.RULE_CODE IN ('common','custom')\n")
|
.append("WHERE t2.RULE_CODE IN ('common','custom') AND t2.IS_DELETED=0 AND t3.IS_DELETED=0 AND t1.IS_DELETED=0 ORDER BY t1.RECORD_TIME DESC \n")
|
||||||
.append(") WHERE 1=1");
|
.append(") WHERE 1=1");
|
||||||
|
|
||||||
Map<String, Object> params = new HashMap<>();
|
Map<String, Object> params = new HashMap<>();
|
||||||
|
|||||||
@ -843,52 +843,86 @@ public class VdMonitorServiceImpl implements VdMonitorService {
|
|||||||
"AND src.LGTD IS NOT NULL " +
|
"AND src.LGTD IS NOT NULL " +
|
||||||
"AND src.LTTD IS NOT NULL ";
|
"AND src.LTTD IS NOT NULL ";
|
||||||
}
|
}
|
||||||
|
|
||||||
private String buildRunDataCoreSql() {
|
private String buildRunDataCoreSql() {
|
||||||
return "SELECT " +
|
return " SELECT\n" +
|
||||||
"run.ID AS id, " +
|
" a.ID,\n" +
|
||||||
"run.STCD AS stcd, " +
|
" a.STCD,\n" +
|
||||||
"run.TM AS tm, " +
|
" a.TM,\n" +
|
||||||
"NVL(run.FLNM, base.STNM || ' ' || TO_CHAR(run.TM, 'yyyy-mm-dd hh24')) AS flnm, " +
|
" b.stnm || ' ' || to_char(a.TM, 'yyyy-mm-dd hh24') AS FLNM,\n" +
|
||||||
"run.IMG_PATH AS imgPath, " +
|
" a.IMG_PATH,\n" +
|
||||||
"run.FLPTH AS flpth, " +
|
" a.FLPTH,\n" +
|
||||||
"run.DEVICEINFO AS deviceinfo, " +
|
" a.DEVICEINFO,\n" +
|
||||||
"run.DESCRIBE AS describe, " +
|
" a.DESCRIBE,\n" +
|
||||||
"run.FID AS fid, " +
|
" a.FID,\n" +
|
||||||
"run.THUMBNAIL AS thumbnail, " +
|
" a.THUMBNAIL,\n" +
|
||||||
"base.RSTCD AS rstcd, " +
|
" b.RSTCD,\n" +
|
||||||
"base.STNM AS stnm, " +
|
" b.stnm,\n" +
|
||||||
"eng.ENNM AS ennm, " +
|
" b.ennm,\n" +
|
||||||
"base.FHSTCD AS fhstcd, " +
|
" b.FHSTCD,\n" +
|
||||||
"fh.STNM AS fhstnm, " +
|
" b.FHSTNM,\n" +
|
||||||
"base.CSTCD AS stCode, " +
|
" b.STCODE AS stCode,\n" +
|
||||||
"cst.STNM AS stName, " +
|
" b.STNAME AS stName,\n" +
|
||||||
"NVL(eng.BASE_ID, base.BASE_ID) AS baseId, " +
|
" b.BASE_ID AS baseId,\n" +
|
||||||
"hb.BASENAME AS baseName, " +
|
" b.BASE_NAME AS baseName,\n" +
|
||||||
"base.STTP AS sttpCode, " +
|
" b.sttp_code AS sttpCode,\n" +
|
||||||
"sttp.STTP_NAME AS sttpName, " +
|
" b.sttp_name AS sttpName,\n" +
|
||||||
"base.STNM AS titleName, " +
|
" b.stnm AS titleName,\n" +
|
||||||
"NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " +
|
" b.basestepsort,\n" +
|
||||||
"NVL(hbrv.ORDER_INDEX, 999999) AS rvcdStepSort, " +
|
" b.rvcdstepsort,\n" +
|
||||||
"NVL(eng.ORDER_INDEX, 999999) AS rstcdStepSort, " +
|
" b.rstcdstepsort,\n" +
|
||||||
"NVL(base.ORDER_INDEX, 999999) AS siteStepSort, " +
|
" b.hbrvcd,\n" +
|
||||||
"NVL(eng.HBRVCD, base.HBRVCD) AS hbrvcd, " +
|
" b.hbrvcd_name\n" +
|
||||||
"hbrv.HBRVNM AS hbrvcdName " +
|
" FROM SD_VDINFO_R a\n" +
|
||||||
"FROM SD_VDINFO_R run " +
|
" INNER JOIN V_MS_STBPRP_T b\n" +
|
||||||
"INNER JOIN (" + buildVdDeviceBaseSql() + ") base ON run.STCD = base.STCD " +
|
" ON a.STCD = b.STCD\n" +
|
||||||
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = base.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " +
|
" AND b.IS_DELETED = 0";
|
||||||
"LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = NVL(eng.BASE_ID, base.BASE_ID) " +
|
|
||||||
" AND NVL(hb.IS_DELETED, 0) = 0 AND NVL(hb.ENABLED, 1) = 1 " +
|
|
||||||
"LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = NVL(eng.HBRVCD, base.HBRVCD) " +
|
|
||||||
" AND hbrv.BASEID = NVL(eng.BASE_ID, base.BASE_ID) " +
|
|
||||||
" AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " +
|
|
||||||
"LEFT JOIN SD_FHBT_B_H fh ON fh.STCD = base.FHSTCD AND NVL(fh.IS_DELETED, 0) = 0 " +
|
|
||||||
"LEFT JOIN (" + buildStationBaseSql() + ") cst ON cst.STCD = base.CSTCD " +
|
|
||||||
"LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = base.STTP " +
|
|
||||||
" AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 " +
|
|
||||||
"WHERE NVL(run.IS_DELETED, 0) = 0 ";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// private String buildRunDataCoreSql() {
|
||||||
|
// return "SELECT " +
|
||||||
|
// "run.ID AS id, " +
|
||||||
|
// "run.STCD AS stcd, " +
|
||||||
|
// "run.TM AS tm, " +
|
||||||
|
// "NVL(run.FLNM, base.STNM || ' ' || TO_CHAR(run.TM, 'yyyy-mm-dd hh24')) AS flnm, " +
|
||||||
|
// "run.IMG_PATH AS imgPath, " +
|
||||||
|
// "run.FLPTH AS flpth, " +
|
||||||
|
// "run.DEVICEINFO AS deviceinfo, " +
|
||||||
|
// "run.DESCRIBE AS describe, " +
|
||||||
|
// "run.FID AS fid, " +
|
||||||
|
// "run.THUMBNAIL AS thumbnail, " +
|
||||||
|
// "base.RSTCD AS rstcd, " +
|
||||||
|
// "base.STNM AS stnm, " +
|
||||||
|
// "eng.ENNM AS ennm, " +
|
||||||
|
// "base.FHSTCD AS fhstcd, " +
|
||||||
|
// "fh.STNM AS fhstnm, " +
|
||||||
|
// "base.CSTCD AS stCode, " +
|
||||||
|
// "cst.STNM AS stName, " +
|
||||||
|
// "NVL(eng.BASE_ID, base.BASE_ID) AS baseId, " +
|
||||||
|
// "hb.BASENAME AS baseName, " +
|
||||||
|
// "base.STTP AS sttpCode, " +
|
||||||
|
// "sttp.STTP_NAME AS sttpName, " +
|
||||||
|
// "base.STNM AS titleName, " +
|
||||||
|
// "NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " +
|
||||||
|
// "NVL(hbrv.ORDER_INDEX, 999999) AS rvcdStepSort, " +
|
||||||
|
// "NVL(eng.ORDER_INDEX, 999999) AS rstcdStepSort, " +
|
||||||
|
// "NVL(base.ORDER_INDEX, 999999) AS siteStepSort, " +
|
||||||
|
// "NVL(eng.HBRVCD, base.HBRVCD) AS hbrvcd, " +
|
||||||
|
// "hbrv.HBRVNM AS hbrvcdName " +
|
||||||
|
// "FROM SD_VDINFO_R run " +
|
||||||
|
// "INNER JOIN (" + buildVdDeviceBaseSql() + ") base ON run.STCD = base.STCD " +
|
||||||
|
// "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = base.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " +
|
||||||
|
// "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = NVL(eng.BASE_ID, base.BASE_ID) " +
|
||||||
|
// " AND NVL(hb.IS_DELETED, 0) = 0 AND NVL(hb.ENABLED, 1) = 1 " +
|
||||||
|
// "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = NVL(eng.HBRVCD, base.HBRVCD) " +
|
||||||
|
// " AND hbrv.BASEID = NVL(eng.BASE_ID, base.BASE_ID) " +
|
||||||
|
// " AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " +
|
||||||
|
// "LEFT JOIN SD_FHBT_B_H fh ON fh.STCD = base.FHSTCD AND NVL(fh.IS_DELETED, 0) = 0 " +
|
||||||
|
// "LEFT JOIN (" + buildStationBaseSql() + ") cst ON cst.STCD = base.CSTCD " +
|
||||||
|
// "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = base.STTP " +
|
||||||
|
// " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 " +
|
||||||
|
// "WHERE NVL(run.IS_DELETED, 0) = 0 ";
|
||||||
|
// }
|
||||||
|
|
||||||
private String buildLatestRunDataCoreSql() {
|
private String buildLatestRunDataCoreSql() {
|
||||||
return "SELECT " +
|
return "SELECT " +
|
||||||
"run.ID AS id, " +
|
"run.ID AS id, " +
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user