Merge remote-tracking branch 'origin/main'

This commit is contained in:
2025-12-05 14:14:30 +08:00
5 changed files with 43 additions and 12 deletions

View File

@@ -17,6 +17,7 @@
package com.sdm.common.log.aspect;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSON;
import com.sdm.common.common.ThreadLocalContext;
import com.sdm.common.log.annotation.SysLog;
import com.sdm.common.log.dto.SysLogDTO;
@@ -72,9 +73,9 @@ public class SysLogAspect {
Long endTime = System.currentTimeMillis();
logVo.setTime(endTime - startTime);
logVo.setTenantId(ThreadLocalContext.getTenantId());
log.info("[SysLogAspect] logVo:{}", JSON.toJSONString(logVo));
SpringContextHolder.publishEvent(new SysLogEvent(logVo));
}
return obj;
}

View File

@@ -18,6 +18,7 @@ package com.sdm.common.log.event;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSON;
import com.fasterxml.jackson.annotation.JsonFilter;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ser.FilterProvider;
@@ -89,6 +90,7 @@ public class SysLogListener implements InitializingBean {
}
source.setBody(null);
log.info("[SysLogListener] saveLog params:{}", JSON.toJSONString(source));
sysLogFeignClient.saveLog(source);
}

View File

@@ -16,6 +16,7 @@
package com.sdm.common.log.utils;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.URLUtil;
@@ -28,6 +29,7 @@ import com.sdm.common.log.dto.SysLogDTO;
import com.sdm.common.utils.DateUtils;
import jakarta.servlet.http.HttpServletRequest;
import lombok.experimental.UtilityClass;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.expression.EvaluationContext;
@@ -38,6 +40,7 @@ import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
@@ -47,6 +50,7 @@ import java.util.Objects;
* @author L.cm
*/
@UtilityClass
@Slf4j
public class SysLogUtils {
public SysLogDTO getSysLog() {
@@ -59,13 +63,30 @@ public class SysLogUtils {
sysLog.setRemoteAddr(JakartaServletUtil.getClientIP(request));
sysLog.setUserAgent(request.getHeader(HttpHeaders.USER_AGENT));
sysLog.setCreateBy(ObjectUtils.isNotEmpty(ThreadLocalContext.getUserName()) ? ThreadLocalContext.getUserName() : "anonymousUser");
// 获取服务名称
sysLog.setServiceId("simulation-" + SpringUtil.getProperty("spring.application.name"));
try {
// 获取服务名称
sysLog.setServiceId("simulation-" + SpringUtil.getProperty("spring.application.name"));
// get 参数脱敏
SysLogProperties logProperties = SpringUtil.getBean(SysLogProperties.class);
Map<String, String[]> paramsMap = MapUtil.removeAny(request.getParameterMap(), ArrayUtil.toArray(logProperties.getExcludeFields(), String.class));
sysLog.setParams(HttpUtil.toParams(paramsMap));
// get 参数脱敏 - 创建副本而不是修改原Map
SysLogProperties logProperties = SpringUtil.getBean(SysLogProperties.class);
Map<String, String[]> originalParams = request.getParameterMap();
if (!originalParams.isEmpty()) {
// 创建可修改的副本
Map<String, String[]> filteredParams = new HashMap<>(originalParams);
// 移除需要排除的字段
if (logProperties != null && CollectionUtil.isNotEmpty(logProperties.getExcludeFields())) {
String[] excludeFields = ArrayUtil.toArray(logProperties.getExcludeFields(), String.class);
for (String field : excludeFields) {
filteredParams.remove(field);
}
}
sysLog.setParams(HttpUtil.toParams(filteredParams));
}
} catch (Exception e) {
// 如果发生异常,记录简化信息
log.warn("记录请求参数时发生异常: {}", e.getMessage());
sysLog.setParams("parameter count: " + request.getParameterMap().size());
}
return sysLog;
}

View File

@@ -3,6 +3,7 @@ package com.sdm.data.service.impl.dataFileHandle;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.sdm.common.entity.constants.NumberConstants;
import com.sdm.common.entity.enums.ApproveFileDataTypeEnum;
import com.sdm.common.entity.enums.ApproveTypeEnum;
import com.sdm.data.model.entity.*;
import com.sdm.data.service.*;
import lombok.extern.slf4j.Slf4j;
@@ -25,6 +26,7 @@ public class UploadApproveStrategy implements ApproveStrategy {
IFileUserPermissionService fileUserPermissionService = context.getFileUserPermissionService();
IFileStorageService fileStorageService = context.getFileStorageService();
IFileSimulationMappingService fileSimulationMappingService = context.getFileSimulationMappingService();
ISimulationParameterLibraryCategoryObjectService paramObjectService = context.getParamObjectService();
// 审批通过
if (NumberConstants.TWO == status) {
@@ -50,6 +52,11 @@ public class UploadApproveStrategy implements ApproveStrategy {
fileMetadataExtensionService.remove(new LambdaQueryWrapper<FileMetadataExtension>().in(FileMetadataExtension::getTFilemetaId, removeIds));
fileUserPermissionService.remove(new LambdaQueryWrapper<FileUserPermission>().in(FileUserPermission::getTFilemetaId, removeIds));
fileSimulationMappingService.remove(new LambdaQueryWrapper<FileSimulationMapping>().in(FileSimulationMapping::getFileId, removeIds));
// 如果是参数库审批 删除参数库对象 记录操作日志
if (ApproveTypeEnum.PARAM_APPROVE.getCode() == context.getApproveType()) {
paramObjectService.remove(new LambdaQueryWrapper<SimulationParameterLibraryCategoryObject>().in(SimulationParameterLibraryCategoryObject::getFileId, removeIds));
}
return true;
}
return false;

View File

@@ -35,10 +35,7 @@ import com.sdm.common.feign.impl.system.ApproveFeignClientImpl;
import com.sdm.common.feign.impl.system.SysUserFeignClientImpl;
import com.sdm.common.utils.PageUtils;
import com.sdm.common.utils.RandomUtil;
import com.sdm.project.common.KeyResultTypeEnum;
import com.sdm.project.common.MemberTypeEnum;
import com.sdm.project.common.RunPerformanceStatusEnum;
import com.sdm.project.common.TaskExeStatusEnum;
import com.sdm.project.common.*;
import com.sdm.project.dao.SimulationProjectMapper;
import com.sdm.project.dao.SimulationRunMapper;
import com.sdm.project.model.bo.ApprovalDeliverableContentsModel;
@@ -1202,7 +1199,10 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
// 启动流程实例 多次执行会生成多个流程实例id更新算例run表、同时更新flowable流程参数的流程实例id
SdmResponse<ProcessInstanceResp> sdmResponse = flowableFeignClient.startByProcessDefinitionId(simulationRun.getProcessDefinitionId(), Collections.emptyMap());
if (sdmResponse.getData() != null) {
this.lambdaUpdate().set(SimulationRun::getFlowInstanceId, sdmResponse.getData().getProcessInstanceId()).eq(SimulationRun::getUuid, req.getRunId()).update();
this.lambdaUpdate()
.set(SimulationRun::getFlowInstanceId, sdmResponse.getData().getProcessInstanceId())
.set(SimulationRun::getStatus, RunStatusEnum.RUNNING.getCode())
.eq(SimulationRun::getUuid, req.getRunId()).update();
flowableFeignClient.updateNodeParamProcessInstanceId(simulationRun.getProcessDefinitionId(), sdmResponse.getData().getProcessInstanceId());
} else {
return SdmResponse.failed("流程实例启动失败");