From 233ff9e9e82c67ac33695b479fd31df6ffb77b22 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期一, 02 十二月 2024 15:44:30 +0800
Subject: [PATCH] #
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java | 51 ++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 44 insertions(+), 7 deletions(-)
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java
index cffcd15..de0feff 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java
@@ -1,17 +1,21 @@
package com.zy.acs.manager.core.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.acs.common.utils.GsonUtils;
import com.zy.acs.framework.common.Cools;
import com.zy.acs.framework.common.SnowflakeIdWorker;
import com.zy.acs.manager.core.domain.Lane;
import com.zy.acs.manager.manager.entity.Code;
import com.zy.acs.manager.manager.service.CodeService;
import com.zy.acs.manager.manager.service.RouteService;
+import com.zy.acs.manager.system.service.ConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
import java.util.*;
import java.util.stream.Collectors;
@@ -34,18 +38,20 @@
private RouteService routeService;
@Autowired
private SnowflakeIdWorker snowflakeIdWorker;
+ @Autowired
+ private ConfigService configService;
public Boolean isInitialized() {
return this.initialized;
}
- public List<String> getLanePoints(String codeData) {
+ public Lane search(String codeData) {
if (Cools.isEmpty(codeData) || !this.initialized) {
return null;
}
for (Lane lane : this.lanes) {
if (lane.getCodes().contains(codeData)) {
- return lane.getCodes();
+ return lane;
}
}
return null;
@@ -53,7 +59,7 @@
@PostConstruct
public synchronized void init() {
- log.info("the rcs system is starting to initialze lane data...");
+ log.info("the rcs system is starting to initialize lane data...");
List<Code> codeList = codeService.list(new LambdaQueryWrapper<Code>().eq(Code::getStatus, 1));
this.fillAdjacencyCodeMap(codeList);
@@ -62,12 +68,16 @@
this.mergeDeadEndLane();
- this.deadInteractionPoint();
+ this.deleteInteractionPoint();
this.filterLanesWithFewPoints();
+ this.generateLaneHash();
+
this.initialized = Boolean.TRUE;
- log.info("the lane data initialzation has been completed in rcs system.");
+ log.info("the lane data initialization has been completed in rcs system.");
+
+ System.out.println(GsonUtils.toJson(this.lanes));
}
private void fillAdjacencyCodeMap(List<Code> codeList) {
@@ -252,14 +262,41 @@
}
}
- private void deadInteractionPoint() {
+ private void deleteInteractionPoint() {
for (Lane lane : this.lanes) {
lane.removeInteraction(this.adjacencyCodeMap);
}
}
private void filterLanesWithFewPoints() {
- this.lanes.removeIf(next -> next.getCodes().size() <= 2);
+ Integer maxAgvCountInLane = configService.getVal("maxAgvCountInLane", Integer.class);
+ this.lanes.removeIf(next -> next.getCodes().size() <= Optional.ofNullable(maxAgvCountInLane).orElse(2));
+ }
+
+
+ private void generateLaneHash() {
+ for (Lane lane : this.lanes) {
+ String hashCode = generateDigest(lane.getCodes());
+ lane.setHashCode(hashCode);
+ }
+ }
+
+ public static String generateDigest(List<String> list) {
+ MessageDigest md = null;
+ try {
+ md = MessageDigest.getInstance("SHA-256");
+ } catch (NoSuchAlgorithmException e) {
+ log.error("generateDigest", e);
+ throw new RuntimeException(e);
+ }
+ String combined = list.stream().sorted().collect(Collectors.joining(","));
+ byte[] hashBytes = md.digest(combined.getBytes());
+
+ StringBuilder sb = new StringBuilder();
+ for (byte b : hashBytes) {
+ sb.append(String.format("%02x", b));
+ }
+ return sb.toString();
}
}
--
Gitblit v1.9.1