From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master
---
jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsService/impl/LimsMessageLedgerService.java | 68 ++++++++++++++++++++++++++++++++++
1 files changed, 68 insertions(+), 0 deletions(-)
diff --git a/jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsService/impl/LimsMessageLedgerService.java b/jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsService/impl/LimsMessageLedgerService.java
new file mode 100644
index 0000000..f21e560
--- /dev/null
+++ b/jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsService/impl/LimsMessageLedgerService.java
@@ -0,0 +1,68 @@
+package jnpf.limsService.impl;
+
+import jnpf.limsEntity.LimsMessageDeliveryEntity;
+import jnpf.limsEntity.LimsMessageDeliveryStatus;
+import jnpf.limsEntity.LimsMessageEventEntity;
+import jnpf.limsEntity.LimsMessageEventStatus;
+import jnpf.limsEntity.LimsMessageLedger;
+import jnpf.limsEntity.LimsMessageRequest;
+import jnpf.limsMapper.LimsMessageDeliveryMapper;
+import jnpf.limsMapper.LimsMessageEventMapper;
+import jnpf.util.JsonUtil;
+import jnpf.util.RandomUtil;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class LimsMessageLedgerService {
+ private final LimsMessageEventMapper eventMapper;
+ private final LimsMessageDeliveryMapper deliveryMapper;
+
+ @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
+ public LimsMessageLedger initialize(LimsMessageRequest request, List<String> recipients) {
+ Date now = new Date();
+ LimsMessageEventEntity event = new LimsMessageEventEntity();
+ event.setId(RandomUtil.uuId());
+ event.setTenantId(request.getTenantId());
+ event.setEventCode(request.getEvent().getCode());
+ event.setBizId(request.getBizId());
+ event.setRemindStage(request.getRemindStage());
+ event.setOccurrenceKey(request.getOccurrenceKey());
+ event.setRecipientSnapshot(JsonUtil.getObjectToString(request.getRecipients()));
+ event.setParameterSnapshot(JsonUtil.getObjectToString(request.getParameters()));
+ event.setStatus(LimsMessageEventStatus.PENDING);
+ event.setRecipientCount(recipients.size());
+ event.setSentCount(0);
+ event.setFailedCount(0);
+ event.setRetryCount(0);
+ event.setCreatedTime(now);
+ event.setLastModifyTime(now);
+ if (eventMapper.insertIfAbsent(event) == 0) {
+ return LimsMessageLedger.duplicate();
+ }
+
+ List<LimsMessageDeliveryEntity> deliveries = new ArrayList<>(recipients.size());
+ for (String recipient : recipients) {
+ LimsMessageDeliveryEntity delivery = new LimsMessageDeliveryEntity();
+ delivery.setId(RandomUtil.uuId());
+ delivery.setEventId(event.getId());
+ delivery.setTenantId(event.getTenantId());
+ delivery.setRecipientUserId(recipient);
+ delivery.setDeliveryKey(event.getTenantId() + ":" + event.getId() + ":" + recipient);
+ delivery.setStatus(LimsMessageDeliveryStatus.PENDING);
+ delivery.setRetryCount(0);
+ delivery.setCreatedTime(now);
+ delivery.setLastModifyTime(now);
+ deliveryMapper.insert(delivery);
+ deliveries.add(delivery);
+ }
+ return new LimsMessageLedger(true, event, deliveries);
+ }
+}
--
Gitblit v1.8.0