diff --git a/visa/visa-server/pom.xml b/visa/visa-server/pom.xml
index 83ddc68f..47e16e9b 100644
--- a/visa/visa-server/pom.xml
+++ b/visa/visa-server/pom.xml
@@ -114,5 +114,13 @@
karma-api
2.0.0-SNAPSHOT
+
+
+ cn.axzo.platform
+ axzo-log-api
+ 1.0.0-SNAPSHOT
+
+
+
diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/LogApiGateway.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/LogApiGateway.java
new file mode 100644
index 00000000..3352f965
--- /dev/null
+++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/rpc/LogApiGateway.java
@@ -0,0 +1,50 @@
+package cn.axzo.nanopart.visa.server.rpc;
+
+/**
+ * @author xudawei@axzo.cn
+ * @date 2025/2/12
+ * @description 日志RPC
+ */
+
+import cn.axzo.log.platform.client.feign.LogApi;
+import cn.axzo.log.platform.client.model.req.LogAddReq;
+import cn.azxo.framework.common.model.CommonResponse;
+import cn.hutool.json.JSONUtil;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 日志RPC
+ * @author xudawei@axzo.cn
+ * @since 2025-02-05 15:08
+ */
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class LogApiGateway {
+
+ private final LogApi logApi;
+
+ public void addLog(LogAddReq req) {
+ try {
+ log.info("LogApiGateway-addLog, req: {}", JSONUtil.toJsonStr(req));
+ CommonResponse stringCommonResponse = logApi.addLog(req);
+ log.info("LogApiGateway-addLog, result: {}", JSONUtil.toJsonStr(stringCommonResponse));
+ } catch (Exception e) {
+ log.warn("LogApiGateway-addLog Exception", e);
+ }
+ }
+
+ public void addLog(String scene, String level, List tags, String msg) {
+ logApi.addLog(LogAddReq.builder()
+ .scene(scene)
+ .level(level)
+ .tags(tags)
+ .message(msg)
+ .build());
+ }
+
+}
diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java
index 33011562..9ab05daf 100644
--- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java
+++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/VisaHelper.java
@@ -12,9 +12,13 @@ import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto;
import cn.axzo.nanopart.visa.server.dto.VisaLogParam;
import cn.axzo.nanopart.visa.server.rpc.ApolloConstructionAreaGateway;
import cn.axzo.nanopart.visa.server.rpc.DrawingMajorGateway;
+import cn.axzo.nanopart.visa.server.rpc.LogApiGateway;
import cn.axzo.nanopart.visa.server.utils.Constants;
import cn.axzo.thor.client.model.DrawingMajorResp;
+import cn.hutool.core.lang.Pair;
+import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONArray;
+import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import lombok.extern.slf4j.Slf4j;
@@ -57,6 +61,9 @@ public class VisaHelper {
@Resource
private ChangeRecordConfirmService changeRecordConfirmService;
+ @Resource
+ private LogApiGateway logApiGateway;
+
/**
* 状态更新与添加日志,此时新增记录时状态没有维护
*/
@@ -74,6 +81,16 @@ public class VisaHelper {
//编辑时
if (Objects.nonNull(oldContext) && Objects.nonNull(newContext)) {
+
+ // 由[决策中|执行中] -> [审批中] 执行变更签证属性变更
+ if (Objects.nonNull(oldContext.getStatus()) && Objects.nonNull(newContext.getStatus())
+ && VisaStatusEnum.isEditForm(oldContext.getStatus())
+ && newContext.getStatus().equals(VisaStatusEnum.APPROVING)) {
+ logApiGateway.addLog(Constants.VISA_LOG_SNAPSHOT_SCENE
+ , Constants.VISA_LOG_SNAPSHOT_LEVEL
+ , Lists.newArrayList(Constants.VISA_LOG_SNAPSHOT_TAG_SNAPSHOT)
+ , JSONUtil.toJsonStr(Pair.of(oldContext, newContext)));
+ }
changeRecordService.changeStatus(ChangeStatusRequest.builder()
.visaId(newContext.getChangeRecord().getId())
.updateStatus(newContext.getStatus())
diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/Constants.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/Constants.java
index a77727a6..eebc1edb 100644
--- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/Constants.java
+++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/utils/Constants.java
@@ -50,4 +50,19 @@ public class Constants {
* 工程签证数据权限的code
*/
public static final String SPLIT_TREE_NODE_CHAT = "-";
+
+ /**
+ * 变更签证日志
+ */
+ public static final String VISA_LOG_SNAPSHOT_SCENE = "visa_log";
+
+ /**
+ * 变更签证日志-快照
+ */
+ public static final String VISA_LOG_SNAPSHOT_TAG_SNAPSHOT = "visa_log_snapshot";
+
+ /**
+ * 变更签证日志-快照
+ */
+ public static final String VISA_LOG_SNAPSHOT_LEVEL = "INFO";
}