feat(ops): 新增 trigger_data 字段存储触发详情

- OpsOrderDO: 新增 triggerData 字段(JSON 字符串)
- 存储触发时的详细信息:
  - 客流阈值:actualCount, baseValue, threshold, exceededCount
  - 蓝牙信标:rssi, beaconMac
  - 信号丢失:durationMs, timeoutSeconds
- CleanOrderServiceImpl: 序列化 triggerData 到 JSON 存储

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
lzh
2026-01-27 12:04:19 +08:00
parent 35c120d883
commit 767449dec4
2 changed files with 27 additions and 3 deletions

View File

@@ -19,6 +19,7 @@ import com.viewsh.module.ops.environment.dal.mysql.workorder.OpsOrderCleanExtMap
import com.viewsh.module.ops.environment.integration.listener.CleanOrderEventListener;
import com.viewsh.module.ops.infrastructure.code.OrderCodeGenerator;
import com.viewsh.module.ops.infrastructure.id.OrderIdGenerator;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -75,6 +76,9 @@ public class CleanOrderServiceImpl implements CleanOrderService {
@Resource
private CleanOrderEventListener cleanOrderEventListener;
@Resource
private ObjectMapper objectMapper;
// ==================== 工单创建 ====================
@Override
@@ -85,7 +89,7 @@ public class CleanOrderServiceImpl implements CleanOrderService {
String orderCode = orderCodeGenerator.generate("CLEAN");
// 2. 构建主表数据
OpsOrderDO order = OpsOrderDO.builder()
OpsOrderDO.OpsOrderDOBuilder orderBuilder = OpsOrderDO.builder()
.id(orderId)
.orderCode(orderCode)
.orderType("CLEAN")
@@ -100,8 +104,19 @@ public class CleanOrderServiceImpl implements CleanOrderService {
.triggerSource(createReq.getTriggerSource())
.triggerRuleId(createReq.getTriggerRuleId())
.triggerDeviceId(createReq.getTriggerDeviceId())
.triggerDeviceKey(createReq.getTriggerDeviceKey())
.build();
.triggerDeviceKey(createReq.getTriggerDeviceKey());
// 触发数据JSON 字符串)
if (createReq.getTriggerData() != null && !createReq.getTriggerData().isEmpty()) {
try {
String triggerDataJson = objectMapper.writeValueAsString(createReq.getTriggerData());
orderBuilder.triggerData(triggerDataJson);
} catch (Exception e) {
log.warn("[createAutoCleanOrder] 序列化 triggerData 失败: orderId={}", orderId, e);
}
}
OpsOrderDO order = orderBuilder.build();
// 3. 插入主表
opsOrderMapper.insert(order);

View File

@@ -140,6 +140,15 @@ public class OpsOrderDO extends BaseDO {
* 触发设备Key冗余便于查询
*/
private String triggerDeviceKey;
/**
* 触发数据JSON 格式)
* <p>
* 存储触发时的详细信息:
* - 客流阈值:{"actualCount":150,"baseValue":1000,"threshold":100,"exceededCount":50}
* - 蓝牙信标:{"rssi":-65,"beaconMac":"F0:C8:60:1D:10:BB"}
* - 信号丢失:{"durationMs":180000,"timeoutSeconds":300}
*/
private String triggerData;
/**
* 受理人工牌设备ID关联 iot_device.id
* <p>