接入ai,识别
This commit is contained in:
@ -36,6 +36,12 @@ snail-job:
|
|||||||
|
|
||||||
--- # 数据源配置
|
--- # 数据源配置
|
||||||
spring:
|
spring:
|
||||||
|
ai:
|
||||||
|
dashscope:
|
||||||
|
api-key: sk-8d8df92fcbac4bd2922edba30b0bb8fa
|
||||||
|
chat:
|
||||||
|
options:
|
||||||
|
model: qwen-plus
|
||||||
datasource:
|
datasource:
|
||||||
type: com.zaxxer.hikari.HikariDataSource
|
type: com.zaxxer.hikari.HikariDataSource
|
||||||
# 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
|
# 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
|
||||||
@ -56,9 +62,9 @@ spring:
|
|||||||
url: jdbc:mysql://192.168.110.2:13386/xinnengyuandev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
url: jdbc:mysql://192.168.110.2:13386/xinnengyuandev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||||
username: xinnengyuandev
|
username: xinnengyuandev
|
||||||
password: StRWCZdZirysNSs2
|
password: StRWCZdZirysNSs2
|
||||||
# url: jdbc:mysql://192.168.110.2:13386/xinnengyuan?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
# url: jdbc:mysql://192.168.110.2:13386/xinnengyuan?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||||
# username: xinnengyuan
|
# username: xinnengyuan
|
||||||
# password: mEZPC5Sdf3r2HENi
|
# password: mEZPC5Sdf3r2HENi
|
||||||
# 从库数据源
|
# 从库数据源
|
||||||
slave:
|
slave:
|
||||||
lazy: true
|
lazy: true
|
||||||
@ -81,13 +87,13 @@ spring:
|
|||||||
url: jdbc:mysql://192.168.110.2:13386/zmkgc?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
url: jdbc:mysql://192.168.110.2:13386/zmkgc?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||||
username: zmkgc
|
username: zmkgc
|
||||||
password: nWKDKRNRT48tFBdh
|
password: nWKDKRNRT48tFBdh
|
||||||
# slave:
|
# slave:
|
||||||
# lazy: true
|
# lazy: true
|
||||||
# type: ${spring.datasource.type}
|
# type: ${spring.datasource.type}
|
||||||
# driverClassName: com.mysql.cj.jdbc.Driver
|
# driverClassName: com.mysql.cj.jdbc.Driver
|
||||||
# url: jdbc:mysql://192.168.110.2:13386/zmkgprod?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
# url: jdbc:mysql://192.168.110.2:13386/zmkgprod?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||||
# username: zmkgprod
|
# username: zmkgprod
|
||||||
# password: MaY8nehwWkJriWPm
|
# password: MaY8nehwWkJriWPm
|
||||||
# oracle:
|
# oracle:
|
||||||
# type: ${spring.datasource.type}
|
# type: ${spring.datasource.type}
|
||||||
# driverClassName: oracle.jdbc.OracleDriver
|
# driverClassName: oracle.jdbc.OracleDriver
|
||||||
|
|||||||
@ -39,6 +39,12 @@ snail-job:
|
|||||||
|
|
||||||
--- # 数据源配置
|
--- # 数据源配置
|
||||||
spring:
|
spring:
|
||||||
|
ai:
|
||||||
|
dashscope:
|
||||||
|
api-key: xxx
|
||||||
|
chat:
|
||||||
|
options:
|
||||||
|
model: qwen-plus
|
||||||
datasource:
|
datasource:
|
||||||
type: com.zaxxer.hikari.HikariDataSource
|
type: com.zaxxer.hikari.HikariDataSource
|
||||||
# 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
|
# 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
|
||||||
|
|||||||
@ -39,6 +39,12 @@ snail-job:
|
|||||||
|
|
||||||
--- # 数据源配置
|
--- # 数据源配置
|
||||||
spring:
|
spring:
|
||||||
|
ai:
|
||||||
|
dashscope:
|
||||||
|
api-key: xxx
|
||||||
|
chat:
|
||||||
|
options:
|
||||||
|
model: qwen-plus
|
||||||
datasource:
|
datasource:
|
||||||
type: com.zaxxer.hikari.HikariDataSource
|
type: com.zaxxer.hikari.HikariDataSource
|
||||||
# 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
|
# 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
|
||||||
|
|||||||
@ -29,6 +29,8 @@ import org.dromara.manager.ys7manager.Ys7Constant;
|
|||||||
import org.dromara.manager.ys7manager.Ys7Manager;
|
import org.dromara.manager.ys7manager.Ys7Manager;
|
||||||
import org.dromara.manager.ys7manager.vo.Ys7ResponseVo;
|
import org.dromara.manager.ys7manager.vo.Ys7ResponseVo;
|
||||||
import org.dromara.other.domain.OthYs7Device;
|
import org.dromara.other.domain.OthYs7Device;
|
||||||
|
import org.dromara.other.domain.dto.ys7deviceimg.OthYs7DeviceImgCreateByCapture;
|
||||||
|
import org.dromara.other.service.IOthYs7DeviceImgService;
|
||||||
import org.dromara.other.service.IOthYs7DeviceService;
|
import org.dromara.other.service.IOthYs7DeviceService;
|
||||||
import org.dromara.out.domain.OutConstructionValue;
|
import org.dromara.out.domain.OutConstructionValue;
|
||||||
import org.dromara.out.domain.OutConstructionValueRange;
|
import org.dromara.out.domain.OutConstructionValueRange;
|
||||||
@ -55,6 +57,8 @@ import java.time.LocalDate;
|
|||||||
import java.time.temporal.TemporalAdjusters;
|
import java.time.temporal.TemporalAdjusters;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -112,6 +116,9 @@ public class DemoTest {
|
|||||||
@Resource
|
@Resource
|
||||||
private IOthYs7DeviceService ys7DeviceService;
|
private IOthYs7DeviceService ys7DeviceService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IOthYs7DeviceImgService ys7DeviceImgService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private Ys7Manager ys7Manager;
|
private Ys7Manager ys7Manager;
|
||||||
|
|
||||||
@ -547,4 +554,38 @@ public class DemoTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void capturePic() {
|
||||||
|
List<String> urlList = List.of(
|
||||||
|
"http://xny.yj-3d.com:9000/xinnengyuan-dev/2025/10/23/db8a379b456142459852b654f20d5f97.png",
|
||||||
|
"http://xny.yj-3d.com:9000/xinnengyuan-dev/2025/10/23/913dbcf0f7244c8b878e84b5525bec4b.png",
|
||||||
|
"http://xny.yj-3d.com:9000/xinnengyuan-dev/2025/10/23/2b904765f03f40b2ad0ddbf6ddeadb45.png"
|
||||||
|
);
|
||||||
|
for (String url : urlList) {
|
||||||
|
Pattern pattern = Pattern.compile(".*/device/img/([^/]+)/.*");
|
||||||
|
Matcher matcher = pattern.matcher(url);
|
||||||
|
OthYs7Device ys7Device = ys7DeviceService.lambdaQuery()
|
||||||
|
.eq(OthYs7Device::getDeviceSerial, "GA1730672")
|
||||||
|
.last("limit 1")
|
||||||
|
.one();
|
||||||
|
if (ys7Device == null) {
|
||||||
|
throw new ServiceException("设备不存在", HttpStatus.ERROR);
|
||||||
|
}
|
||||||
|
String deviceSerial = ys7Device.getDeviceSerial();
|
||||||
|
// 如果没有预置位,则直接对默认通道抓图
|
||||||
|
OthYs7DeviceImgCreateByCapture img = new OthYs7DeviceImgCreateByCapture();
|
||||||
|
img.setProjectId(ys7Device.getProjectId());
|
||||||
|
img.setDeviceSerial(deviceSerial);
|
||||||
|
img.setDeviceName(ys7Device.getDeviceName());
|
||||||
|
// String url = "http://xny.yj-3d.com:9000/xinnengyuan/ys7/device/img/GA1044315/2025-10-13_859fdfb7dde540608356f29cb9e3d63e.jpg";
|
||||||
|
// String url = "http://xny.yj-3d.com:9000/xinnengyuan/ys7/device/img/GA1044315/2025-10-12_2801707255b84004acb5fee2a75299b2.jpg";
|
||||||
|
img.setCreateTime(new Date());
|
||||||
|
img.setUrl(url);
|
||||||
|
log.info("图片:{},识别中", url);
|
||||||
|
ys7DeviceImgService.saveCapturePic(List.of(img));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,7 +23,7 @@ public class RecognizerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void test() {
|
void test() {
|
||||||
RecognizeVo recognize = recognizerManager.recognize("http://xny.yj-3d.com:7363/file/tif/20250625160218orthophoto.png", List.of(RecognizerTypeEnum.SOLAR));
|
RecognizeVo recognize = recognizerManager.recognize("http://xny.yj-3d.com:7363/file/tif/20250625160218orthophoto.png", List.of(RecognizerTypeEnum.PANEL));
|
||||||
log.info("recognize: {}", recognize);
|
log.info("recognize: {}", recognize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,16 +15,31 @@
|
|||||||
system系统模块
|
system系统模块
|
||||||
</description>
|
</description>
|
||||||
|
|
||||||
|
<dependencyManagement>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba.cloud.ai</groupId>
|
||||||
|
<artifactId>spring-ai-alibaba-bom</artifactId>
|
||||||
|
<version>1.0.0.2</version>
|
||||||
|
<type>pom</type>
|
||||||
|
<scope>import</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</dependencyManagement>
|
||||||
|
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba.cloud.ai</groupId>
|
||||||
|
<artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
|
||||||
|
</dependency>
|
||||||
<!-- Java WebSocket 标准API -->
|
<!-- Java WebSocket 标准API -->
|
||||||
<!-- <dependency>-->
|
<!-- <dependency>-->
|
||||||
<!-- <groupId>javax.websocket</groupId>-->
|
<!-- <groupId>javax.websocket</groupId>-->
|
||||||
<!-- <artifactId>javax.websocket-api</artifactId>-->
|
<!-- <artifactId>javax.websocket-api</artifactId>-->
|
||||||
<!-- <version>1.1</version>-->
|
<!-- <version>1.1</version>-->
|
||||||
<!-- <scope>provided</scope>-->
|
<!-- <scope>provided</scope>-->
|
||||||
<!-- </dependency>-->
|
<!-- </dependency>-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-websocket</artifactId>
|
<artifactId>spring-boot-starter-websocket</artifactId>
|
||||||
@ -36,18 +51,18 @@
|
|||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- <dependency>-->
|
<!-- <dependency>-->
|
||||||
<!-- <groupId>com.drewnoakes</groupId>-->
|
<!-- <groupId>com.drewnoakes</groupId>-->
|
||||||
<!-- <artifactId>metadata-extractor</artifactId>-->
|
<!-- <artifactId>metadata-extractor</artifactId>-->
|
||||||
<!-- <version>2.18.0</version>-->
|
<!-- <version>2.18.0</version>-->
|
||||||
<!-- </dependency>-->
|
<!-- </dependency>-->
|
||||||
|
|
||||||
|
|
||||||
<!-- <dependency>-->
|
<!-- <dependency>-->
|
||||||
<!-- <groupId>technology.tabula</groupId>-->
|
<!-- <groupId>technology.tabula</groupId>-->
|
||||||
<!-- <artifactId>tabula</artifactId>-->
|
<!-- <artifactId>tabula</artifactId>-->
|
||||||
<!-- <version>1.0.4</version>-->
|
<!-- <version>1.0.4</version>-->
|
||||||
<!-- </dependency>-->
|
<!-- </dependency>-->
|
||||||
|
|
||||||
|
|
||||||
<!-- JSON解析(FastJSON) -->
|
<!-- JSON解析(FastJSON) -->
|
||||||
@ -119,19 +134,18 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- 支持中文字体 -->
|
<!-- 支持中文字体 -->
|
||||||
<!-- <dependency>-->
|
<!-- <dependency>-->
|
||||||
<!-- <groupId>com.itextpdf</groupId>-->
|
<!-- <groupId>com.itextpdf</groupId>-->
|
||||||
<!-- <artifactId>itext-asian</artifactId>-->
|
<!-- <artifactId>itext-asian</artifactId>-->
|
||||||
<!-- <version>5.2.0</version>-->
|
<!-- <version>5.2.0</version>-->
|
||||||
<!-- </dependency>-->
|
<!-- </dependency>-->
|
||||||
<!-- <!– iText –>-->
|
<!-- <!– iText –>-->
|
||||||
<!-- <dependency>-->
|
<!-- <dependency>-->
|
||||||
<!-- <groupId>com.itextpdf</groupId>-->
|
<!-- <groupId>com.itextpdf</groupId>-->
|
||||||
<!-- <artifactId>itextpdf</artifactId>-->
|
<!-- <artifactId>itextpdf</artifactId>-->
|
||||||
<!-- <version>5.5.13.3</version>-->
|
<!-- <version>5.5.13.3</version>-->
|
||||||
<!-- </dependency>-->
|
<!-- </dependency>-->
|
||||||
<!-- ZXing -->
|
<!-- ZXing -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.google.zxing</groupId>
|
<groupId>com.google.zxing</groupId>
|
||||||
|
|||||||
@ -0,0 +1,51 @@
|
|||||||
|
package org.dromara.ai.controller;
|
||||||
|
|
||||||
|
import com.alibaba.cloud.ai.dashscope.chat.DashScopeChatOptions;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import org.springframework.ai.chat.client.ChatClient;
|
||||||
|
import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import reactor.core.publisher.Flux;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-10-23 11:32
|
||||||
|
*/
|
||||||
|
@Validated
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/ai")
|
||||||
|
public class AIController {
|
||||||
|
|
||||||
|
private static final String DEFAULT_PROMPT = "你是一个博学的智能聊天助手,请根据用户提问回答!";
|
||||||
|
|
||||||
|
private final ChatClient dashScopeChatClient;
|
||||||
|
|
||||||
|
public AIController(ChatClient.Builder chatClientBuilder) {
|
||||||
|
this.dashScopeChatClient = chatClientBuilder
|
||||||
|
.defaultSystem(DEFAULT_PROMPT)
|
||||||
|
// 实现 Logger 的 Advisor
|
||||||
|
.defaultAdvisors(
|
||||||
|
new SimpleLoggerAdvisor()
|
||||||
|
)
|
||||||
|
// 设置 ChatClient 中 ChatModel 的 Options 参数
|
||||||
|
.defaultOptions(
|
||||||
|
DashScopeChatOptions.builder()
|
||||||
|
.withTopP(0.7)
|
||||||
|
.build()
|
||||||
|
)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ChatClient 流式调用
|
||||||
|
*/
|
||||||
|
@GetMapping("/stream/chat")
|
||||||
|
public Flux<String> streamChat(@RequestParam(value = "query", defaultValue = "你好,很高兴认识你,能简单介绍一下自己吗?") String query, HttpServletResponse response) {
|
||||||
|
response.setCharacterEncoding("UTF-8");
|
||||||
|
return dashScopeChatClient.prompt(query).stream().content();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,39 +0,0 @@
|
|||||||
package org.dromara.facility.domain.vo.matrix;
|
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryStructureVo;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author lilemy
|
|
||||||
* @date 2025-08-23 01:17
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
public class FacMatrixStructureVo implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 7526403047030009646L;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 主键
|
|
||||||
*/
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 方阵名称
|
|
||||||
*/
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分项工程
|
|
||||||
*/
|
|
||||||
private List<PgsProgressCategoryStructureVo> children;
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -847,7 +847,7 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan
|
|||||||
// 根据类型,更新对应数据
|
// 根据类型,更新对应数据
|
||||||
if (type.equals(RecognizerTypeEnum.HOLE.getValue())) {
|
if (type.equals(RecognizerTypeEnum.HOLE.getValue())) {
|
||||||
photovoltaicPanelPointService.updateFinishNumberByCoordinate(projectIds, matchPoints);
|
photovoltaicPanelPointService.updateFinishNumberByCoordinate(projectIds, matchPoints);
|
||||||
} else if (type.equals(RecognizerTypeEnum.PILE.getValue())) {
|
} else if (type.equals(RecognizerTypeEnum.COLUMN.getValue())) {
|
||||||
photovoltaicPanelColumnService.updateFinishNumberByCoordinate(projectIds, matchPoints);
|
photovoltaicPanelColumnService.updateFinishNumberByCoordinate(projectIds, matchPoints);
|
||||||
} else if (type.equals(RecognizerTypeEnum.BRACKET.getValue())) {
|
} else if (type.equals(RecognizerTypeEnum.BRACKET.getValue())) {
|
||||||
photovoltaicPanelSupportService.updateFinishNumberByCoordinate(projectIds, matchPoints);
|
photovoltaicPanelSupportService.updateFinishNumberByCoordinate(projectIds, matchPoints);
|
||||||
@ -871,7 +871,7 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan
|
|||||||
return list.stream().map(point ->
|
return list.stream().map(point ->
|
||||||
new IdCoordinatePoint(point.getId(), point.getPositions())).toList();
|
new IdCoordinatePoint(point.getId(), point.getPositions())).toList();
|
||||||
}
|
}
|
||||||
} else if (type.equals(RecognizerTypeEnum.PILE.getValue())) {
|
} else if (type.equals(RecognizerTypeEnum.COLUMN.getValue())) {
|
||||||
List<FacPhotovoltaicPanelColumn> list = photovoltaicPanelColumnService.lambdaQuery()
|
List<FacPhotovoltaicPanelColumn> list = photovoltaicPanelColumnService.lambdaQuery()
|
||||||
.in(FacPhotovoltaicPanelColumn::getProjectId, projectIds)
|
.in(FacPhotovoltaicPanelColumn::getProjectId, projectIds)
|
||||||
.ne(FacPhotovoltaicPanelColumn::getStatus, FacFinishStatusEnum.FINISH.getValue())
|
.ne(FacPhotovoltaicPanelColumn::getStatus, FacFinishStatusEnum.FINISH.getValue())
|
||||||
|
|||||||
@ -21,6 +21,7 @@ import java.net.URI;
|
|||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.net.URLConnection;
|
import java.net.URLConnection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author lilemy
|
* @author lilemy
|
||||||
@ -82,7 +83,9 @@ public class RecognizerManager {
|
|||||||
// 画矩形框
|
// 画矩形框
|
||||||
g.drawRect(x, y, w, h);
|
g.drawRect(x, y, w, h);
|
||||||
// 写文字(类型 + 置信度)
|
// 写文字(类型 + 置信度)
|
||||||
String label = target.getType() + " (" + String.format("%.2f", target.getScore()) + ")";
|
RecognizerTypeEnum recognizerTypeEnum = RecognizerTypeEnum.fromValue(target.getType());
|
||||||
|
String label = recognizerTypeEnum != null ? Objects.requireNonNull(recognizerTypeEnum).getText() : target.getType()
|
||||||
|
+ " (" + String.format("%.2f", target.getScore()) + ")";
|
||||||
g.drawString(label, x, y - 5);
|
g.drawString(label, x, y - 5);
|
||||||
}
|
}
|
||||||
g.dispose();
|
g.dispose();
|
||||||
|
|||||||
@ -12,15 +12,17 @@ import java.util.stream.Collectors;
|
|||||||
@Getter
|
@Getter
|
||||||
public enum RecognizerTypeEnum {
|
public enum RecognizerTypeEnum {
|
||||||
|
|
||||||
HARDHAT("安全帽识别", "nohelmet", "1"),
|
WEARING_ALL("穿戴安全帽反光衣", "wearingall", ""),
|
||||||
VEST("反光背心识别", "novest", ""),
|
NO_EQUIPMENT("没穿安全帽反光衣", "noequipment", "1"),
|
||||||
SMOKING("吸烟识别", "smoking", "3"),
|
NO_HELMET("有反光衣没安全帽", "nohelmet", ""),
|
||||||
FIRE("火焰识别", "fire", "16"),
|
NO_VEST("有安全帽没反光衣", "novest", ""),
|
||||||
SMOKE("烟雾识别","smoke",""),
|
SMOKE("吸烟", "smoke", "3"),
|
||||||
SOLAR("光伏板识别", "solar", ""),
|
FIRE("火焰", "fire", "16"),
|
||||||
BRACKET("光伏板支架识别", "bracket", ""),
|
SMOGGY("烟雾", "smoggy", ""),
|
||||||
PILE("光伏板立柱识别", "pile", ""),
|
PANEL("光伏板", "solar", ""),
|
||||||
HOLE("洞", "hole", "");
|
BRACKET("光伏板支架", "bracket", ""),
|
||||||
|
COLUMN("光伏板桩", "column", ""),
|
||||||
|
HOLE("光伏板孔", "hole", "");
|
||||||
|
|
||||||
private final String text;
|
private final String text;
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import org.springframework.context.annotation.Configuration;
|
|||||||
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
|
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
|
||||||
|
|
||||||
|
|
||||||
@Configuration
|
//@Configuration
|
||||||
public class WebSocketConfig {
|
public class WebSocketConfig {
|
||||||
@Bean
|
@Bean
|
||||||
public ServerEndpointExporter serverEndpointExporter() {
|
public ServerEndpointExporter serverEndpointExporter() {
|
||||||
|
|||||||
@ -220,7 +220,17 @@ public class OthYs7DeviceImgServiceImpl extends ServiceImpl<OthYs7DeviceImgMappe
|
|||||||
othYs7DeviceImg.setDeviceName(img.getDeviceName());
|
othYs7DeviceImg.setDeviceName(img.getDeviceName());
|
||||||
othYs7DeviceImg.setUrl(ossUrl);
|
othYs7DeviceImg.setUrl(ossUrl);
|
||||||
// 将抓取的图片进行识别
|
// 将抓取的图片进行识别
|
||||||
List<RecognizerTypeEnum> recTypes = List.of(RecognizerTypeEnum.HARDHAT, RecognizerTypeEnum.SMOKING, RecognizerTypeEnum.FIRE);
|
// List<RecognizerTypeEnum> recTypes = List.of(RecognizerTypeEnum.NO_EQUIPMENT,
|
||||||
|
// RecognizerTypeEnum.NO_HELMET,
|
||||||
|
// RecognizerTypeEnum.NO_EQUIPMENT,
|
||||||
|
// RecognizerTypeEnum.NO_VEST,
|
||||||
|
// RecognizerTypeEnum.SMOKE,
|
||||||
|
// RecognizerTypeEnum.FIRE);
|
||||||
|
List<RecognizerTypeEnum> recTypes = List.of(
|
||||||
|
RecognizerTypeEnum.COLUMN,
|
||||||
|
RecognizerTypeEnum.PANEL,
|
||||||
|
RecognizerTypeEnum.BRACKET,
|
||||||
|
RecognizerTypeEnum.HOLE);
|
||||||
RecognizeVo recognizeVo = null;
|
RecognizeVo recognizeVo = null;
|
||||||
try {
|
try {
|
||||||
recognizeVo = recognizerManager.recognize(ossUrl, recTypes);
|
recognizeVo = recognizerManager.recognize(ossUrl, recTypes);
|
||||||
|
|||||||
@ -1,37 +0,0 @@
|
|||||||
package org.dromara.progress.domain.vo.progresscategory;
|
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author lilemy
|
|
||||||
* @date 2025-08-23 01:19
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
public class PgsProgressCategoryStructureVo implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = -8392912623299656962L;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 主键id
|
|
||||||
*/
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 类别名称
|
|
||||||
*/
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 子类别
|
|
||||||
*/
|
|
||||||
private List<PgsProgressCategoryStructureVo> children;
|
|
||||||
}
|
|
||||||
@ -1149,8 +1149,8 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl<PgsProgressPla
|
|||||||
}
|
}
|
||||||
List<Long> projectIds = projects.stream().map(BusProject::getId).distinct().toList();
|
List<Long> projectIds = projects.stream().map(BusProject::getId).distinct().toList();
|
||||||
// 识别类型:洞、桩、架、架子
|
// 识别类型:洞、桩、架、架子
|
||||||
List<RecognizerTypeEnum> enumList = List.of(RecognizerTypeEnum.HOLE, RecognizerTypeEnum.SOLAR,
|
List<RecognizerTypeEnum> enumList = List.of(RecognizerTypeEnum.HOLE, RecognizerTypeEnum.PANEL,
|
||||||
RecognizerTypeEnum.PILE, RecognizerTypeEnum.BRACKET);
|
RecognizerTypeEnum.COLUMN, RecognizerTypeEnum.BRACKET);
|
||||||
// 调用识别算法
|
// 调用识别算法
|
||||||
RecognizeVo recognizeVo = null;
|
RecognizeVo recognizeVo = null;
|
||||||
try {
|
try {
|
||||||
@ -1187,10 +1187,10 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl<PgsProgressPla
|
|||||||
}
|
}
|
||||||
log.info("类型:{},识别到的设施:{},转换坐标:{}", type, value, coordinateList);
|
log.info("类型:{},识别到的设施:{},转换坐标:{}", type, value, coordinateList);
|
||||||
// 处理对应设施
|
// 处理对应设施
|
||||||
if (type.equals(RecognizerTypeEnum.SOLAR.getValue())) {
|
if (type.equals(RecognizerTypeEnum.PANEL.getValue())) {
|
||||||
photovoltaicPanelService.updateFinishNumberByCoordinate(projectIds, coordinateList);
|
photovoltaicPanelService.updateFinishNumberByCoordinate(projectIds, coordinateList);
|
||||||
} else if (type.equals(RecognizerTypeEnum.HOLE.getValue())
|
} else if (type.equals(RecognizerTypeEnum.HOLE.getValue())
|
||||||
|| type.equals(RecognizerTypeEnum.PILE.getValue())
|
|| type.equals(RecognizerTypeEnum.COLUMN.getValue())
|
||||||
|| type.equals(RecognizerTypeEnum.BRACKET.getValue())) {
|
|| type.equals(RecognizerTypeEnum.BRACKET.getValue())) {
|
||||||
photovoltaicPanelPartsService.updateFinishNumberByCoordinate(projectIds, coordinateList, type);
|
photovoltaicPanelPartsService.updateFinishNumberByCoordinate(projectIds, coordinateList, type);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
package org.dromara.project.domain.vo.project;
|
package org.dromara.project.domain.vo.project;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
@ -11,6 +13,8 @@ import java.util.List;
|
|||||||
* @date 2025-08-23 01:14
|
* @date 2025-08-23 01:14
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
public class BusProjectStructureVo implements Serializable {
|
public class BusProjectStructureVo implements Serializable {
|
||||||
|
|
||||||
@Serial
|
@Serial
|
||||||
@ -29,5 +33,5 @@ public class BusProjectStructureVo implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 子项目列表
|
* 子项目列表
|
||||||
*/
|
*/
|
||||||
private List<BusSubProjectStructureVo> children;
|
private List<BusProjectStructureVo> children;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,38 +0,0 @@
|
|||||||
package org.dromara.project.domain.vo.project;
|
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import org.dromara.facility.domain.vo.matrix.FacMatrixStructureVo;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author lilemy
|
|
||||||
* @date 2025-08-23 01:15
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
public class BusSubProjectStructureVo implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 6993209784456857540L;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 项目主键
|
|
||||||
*/
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 项目名称
|
|
||||||
*/
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 方阵列表
|
|
||||||
*/
|
|
||||||
private List<FacMatrixStructureVo> children;
|
|
||||||
}
|
|
||||||
@ -38,14 +38,12 @@ import org.dromara.contractor.service.ISubContractorService;
|
|||||||
import org.dromara.design.service.IDesTechnicalStandardService;
|
import org.dromara.design.service.IDesTechnicalStandardService;
|
||||||
import org.dromara.facility.domain.FacMatrix;
|
import org.dromara.facility.domain.FacMatrix;
|
||||||
import org.dromara.facility.domain.vo.matrix.FacMatrixBySubProjectVo;
|
import org.dromara.facility.domain.vo.matrix.FacMatrixBySubProjectVo;
|
||||||
import org.dromara.facility.domain.vo.matrix.FacMatrixStructureVo;
|
|
||||||
import org.dromara.facility.service.IFacMatrixService;
|
import org.dromara.facility.service.IFacMatrixService;
|
||||||
import org.dromara.manager.weathermanager.WeatherConstant;
|
import org.dromara.manager.weathermanager.WeatherConstant;
|
||||||
import org.dromara.manager.weathermanager.WeatherManager;
|
import org.dromara.manager.weathermanager.WeatherManager;
|
||||||
import org.dromara.manager.weathermanager.vo.WeatherVo;
|
import org.dromara.manager.weathermanager.vo.WeatherVo;
|
||||||
import org.dromara.progress.domain.PgsProgressCategory;
|
import org.dromara.progress.domain.PgsProgressCategory;
|
||||||
import org.dromara.progress.domain.enums.PgsRelevancyStructureEnum;
|
import org.dromara.progress.domain.enums.PgsRelevancyStructureEnum;
|
||||||
import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryStructureVo;
|
|
||||||
import org.dromara.progress.service.IPgsProgressCategoryService;
|
import org.dromara.progress.service.IPgsProgressCategoryService;
|
||||||
import org.dromara.progress.service.IPgsProgressCategoryTemplateService;
|
import org.dromara.progress.service.IPgsProgressCategoryTemplateService;
|
||||||
import org.dromara.project.constant.BusProjectConstant;
|
import org.dromara.project.constant.BusProjectConstant;
|
||||||
@ -1023,8 +1021,8 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
|
|||||||
.list();
|
.list();
|
||||||
|
|
||||||
// 构造子项目结构
|
// 构造子项目结构
|
||||||
List<BusSubProjectStructureVo> subProjectStructures = subProjects.stream().map(subProject -> {
|
List<BusProjectStructureVo> subProjectStructures = new ArrayList<>(subProjects.stream().map(subProject -> {
|
||||||
BusSubProjectStructureVo subProjectVo = new BusSubProjectStructureVo();
|
BusProjectStructureVo subProjectVo = new BusProjectStructureVo();
|
||||||
subProjectVo.setId(subProject.getId());
|
subProjectVo.setId(subProject.getId());
|
||||||
subProjectVo.setName(subProject.getProjectName());
|
subProjectVo.setName(subProject.getProjectName());
|
||||||
|
|
||||||
@ -1054,22 +1052,22 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
|
|||||||
.collect(Collectors.groupingBy(PgsProgressCategory::getParentId));
|
.collect(Collectors.groupingBy(PgsProgressCategory::getParentId));
|
||||||
}
|
}
|
||||||
Map<Long, List<PgsProgressCategory>> finalSub3CategoryMap = sub3CategoryMap;
|
Map<Long, List<PgsProgressCategory>> finalSub3CategoryMap = sub3CategoryMap;
|
||||||
List<FacMatrixStructureVo> structureVoList = sub1Category.stream()
|
List<BusProjectStructureVo> structureVoList = sub1Category.stream()
|
||||||
.map(category -> {
|
.map(category -> {
|
||||||
FacMatrixStructureVo matrixVo = new FacMatrixStructureVo();
|
BusProjectStructureVo matrixVo = new BusProjectStructureVo();
|
||||||
Long id = category.getId();
|
Long id = category.getId();
|
||||||
matrixVo.setId(id);
|
matrixVo.setId(id);
|
||||||
matrixVo.setName(category.getName());
|
matrixVo.setName(category.getName());
|
||||||
if (CollUtil.isNotEmpty(finalSub2CategoryMap) && finalSub2CategoryMap.containsKey(id)) {
|
if (CollUtil.isNotEmpty(finalSub2CategoryMap) && finalSub2CategoryMap.containsKey(id)) {
|
||||||
matrixVo.setChildren(finalSub2CategoryMap.get(id).stream()
|
matrixVo.setChildren(finalSub2CategoryMap.get(id).stream()
|
||||||
.map(c -> {
|
.map(c -> {
|
||||||
PgsProgressCategoryStructureVo subSubCategoryVo = new PgsProgressCategoryStructureVo();
|
BusProjectStructureVo subSubCategoryVo = new BusProjectStructureVo();
|
||||||
subSubCategoryVo.setId(c.getId());
|
subSubCategoryVo.setId(c.getId());
|
||||||
subSubCategoryVo.setName(c.getName());
|
subSubCategoryVo.setName(c.getName());
|
||||||
if (CollUtil.isNotEmpty(finalSub3CategoryMap) && finalSub3CategoryMap.containsKey(c.getId())) {
|
if (CollUtil.isNotEmpty(finalSub3CategoryMap) && finalSub3CategoryMap.containsKey(c.getId())) {
|
||||||
subSubCategoryVo.setChildren(finalSub3CategoryMap.get(c.getId()).stream()
|
subSubCategoryVo.setChildren(finalSub3CategoryMap.get(c.getId()).stream()
|
||||||
.map(c3 -> {
|
.map(c3 -> {
|
||||||
PgsProgressCategoryStructureVo sub3CategoryVo = new PgsProgressCategoryStructureVo();
|
BusProjectStructureVo sub3CategoryVo = new BusProjectStructureVo();
|
||||||
sub3CategoryVo.setId(c3.getId());
|
sub3CategoryVo.setId(c3.getId());
|
||||||
sub3CategoryVo.setName(c3.getName());
|
sub3CategoryVo.setName(c3.getName());
|
||||||
return sub3CategoryVo;
|
return sub3CategoryVo;
|
||||||
@ -1097,8 +1095,8 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
|
|||||||
.list();
|
.list();
|
||||||
// 找到该子项目下的方阵
|
// 找到该子项目下的方阵
|
||||||
List<FacMatrix> matrices = matrixMap.getOrDefault(subProject.getId(), new ArrayList<>());
|
List<FacMatrix> matrices = matrixMap.getOrDefault(subProject.getId(), new ArrayList<>());
|
||||||
List<FacMatrixStructureVo> matrixVos = matrices.stream().map(matrix -> {
|
List<BusProjectStructureVo> matrixVos = matrices.stream().map(matrix -> {
|
||||||
FacMatrixStructureVo matrixVo = new FacMatrixStructureVo();
|
BusProjectStructureVo matrixVo = new BusProjectStructureVo();
|
||||||
matrixVo.setId(matrix.getId());
|
matrixVo.setId(matrix.getId());
|
||||||
matrixVo.setName(matrix.getMatrixName());
|
matrixVo.setName(matrix.getMatrixName());
|
||||||
|
|
||||||
@ -1108,19 +1106,26 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
|
|||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
// 构造分项工程树
|
// 构造分项工程树
|
||||||
List<PgsProgressCategoryStructureVo> categoryTree = buildCategoryTree(categories);
|
List<BusProjectStructureVo> categoryTree = buildCategoryTree(categories);
|
||||||
matrixVo.setChildren(categoryTree);
|
matrixVo.setChildren(categoryTree);
|
||||||
return matrixVo;
|
return matrixVo;
|
||||||
}).toList();
|
}).toList();
|
||||||
List<FacMatrixStructureVo> resultList = Stream.concat(
|
List<BusProjectStructureVo> resultList = Stream.concat(
|
||||||
structureVoList.stream(),
|
structureVoList.stream(),
|
||||||
matrixVos.stream()
|
matrixVos.stream()
|
||||||
).toList();
|
).toList();
|
||||||
subProjectVo.setChildren(resultList);
|
subProjectVo.setChildren(resultList);
|
||||||
}
|
}
|
||||||
return subProjectVo;
|
return subProjectVo;
|
||||||
}).toList();
|
}).toList());
|
||||||
|
|
||||||
|
// 获取分项工程
|
||||||
|
List<PgsProgressCategory> progressCategoryList = progressCategoryService.lambdaQuery()
|
||||||
|
.eq(PgsProgressCategory::getRelevancyStructure, PgsRelevancyStructureEnum.PROJECT.getValue())
|
||||||
|
.in(PgsProgressCategory::getProjectId, projectId)
|
||||||
|
.list();
|
||||||
|
List<BusProjectStructureVo> projectStructureVos = this.buildCategoryTree(progressCategoryList);
|
||||||
|
subProjectStructures.addAll(projectStructureVos);
|
||||||
vo.setChildren(subProjectStructures);
|
vo.setChildren(subProjectStructures);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
@ -1252,159 +1257,159 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
|
|||||||
// projectVos.add(create("台湾省", "台北", 25.0330, 121.5654, 1));
|
// projectVos.add(create("台湾省", "台北", 25.0330, 121.5654, 1));
|
||||||
|
|
||||||
// 1号项目
|
// 1号项目
|
||||||
projectVos.add(create("贵州省", "都匀市沙包堡匀东农业光伏电站项目", 26.2556, 107.5139, 1,"118.0452MWp"));
|
projectVos.add(create("贵州省", "都匀市沙包堡匀东农业光伏电站项目", 26.2556, 107.5139, 1, "118.0452MWp"));
|
||||||
|
|
||||||
// 2号项目
|
// 2号项目
|
||||||
projectVos.add(create("贵州省", "长顺县朝核农业光伏电站", 26.1833, 106.4522, 1,"99.84MW"));
|
projectVos.add(create("贵州省", "长顺县朝核农业光伏电站", 26.1833, 106.4522, 1, "99.84MW"));
|
||||||
|
|
||||||
// 3号项目
|
// 3号项目
|
||||||
projectVos.add(create("重庆市", "重庆无水港绿色低碳能源项目", 29.533155, 106.504962, 1,"2.598MW"));
|
projectVos.add(create("重庆市", "重庆无水港绿色低碳能源项目", 29.533155, 106.504962, 1, "2.598MW"));
|
||||||
|
|
||||||
// 4号项目
|
// 4号项目
|
||||||
projectVos.add(create("贵州省", "兴义市捧乍猪场坪农业光伏电站项目", 25.1467, 104.8925, 1,"100MW"));
|
projectVos.add(create("贵州省", "兴义市捧乍猪场坪农业光伏电站项目", 25.1467, 104.8925, 1, "100MW"));
|
||||||
|
|
||||||
// 5号项目
|
// 5号项目
|
||||||
projectVos.add(create("贵州省", "华能盘州市羊场高光村、松林农业光伏发电项目", 25.7833, 104.6583, 1,"200MW"));
|
projectVos.add(create("贵州省", "华能盘州市羊场高光村、松林农业光伏发电项目", 25.7833, 104.6583, 1, "200MW"));
|
||||||
|
|
||||||
// 6号项目
|
// 6号项目
|
||||||
projectVos.add(create("贵州省", "大唐(六盘水)新能源有限公司水城区化乐农业光伏电站项目", 26.5167, 104.8289, 1,"99.84MW"));
|
projectVos.add(create("贵州省", "大唐(六盘水)新能源有限公司水城区化乐农业光伏电站项目", 26.5167, 104.8289, 1, "99.84MW"));
|
||||||
|
|
||||||
// 7号项目
|
// 7号项目
|
||||||
projectVos.add(create("广西壮族自治区", "河池市宜州区北牙瑶族乡100MWp农光互补光伏发电项目", 24.6833, 108.6958, 1,"101.34MWp"));
|
projectVos.add(create("广西壮族自治区", "河池市宜州区北牙瑶族乡100MWp农光互补光伏发电项目", 24.6833, 108.6958, 1, "101.34MWp"));
|
||||||
|
|
||||||
// 8号项目
|
// 8号项目
|
||||||
projectVos.add(create("四川省", "凉山木里茶布朗光伏发电项目220kV升压站设计施工总承包项目", 27.9167, 100.3250, 1,"220kV"));
|
projectVos.add(create("四川省", "凉山木里茶布朗光伏发电项目220kV升压站设计施工总承包项目", 27.9167, 100.3250, 1, "220kV"));
|
||||||
|
|
||||||
// 9号项目
|
// 9号项目
|
||||||
projectVos.add(create("内蒙古自治区", "土默特右旗英能光伏电力开发有限公司100兆瓦光伏基地项目", 40.5333, 110.5489, 1,"100MWp"));
|
projectVos.add(create("内蒙古自治区", "土默特右旗英能光伏电力开发有限公司100兆瓦光伏基地项目", 40.5333, 110.5489, 1, "100MWp"));
|
||||||
|
|
||||||
// 10号项目
|
// 10号项目
|
||||||
projectVos.add(create("云南省", "云南沾益农业光伏项目", 25.5000, 103.8194, 1,"350MWp"));
|
projectVos.add(create("云南省", "云南沾益农业光伏项目", 25.5000, 103.8194, 1, "350MWp"));
|
||||||
|
|
||||||
// 11号项目
|
// 11号项目
|
||||||
projectVos.add(create("贵州省", "威宁县盐仓老鸦营30MW农业光伏电站项目", 26.8833, 104.2250, 1,"30MW"));
|
projectVos.add(create("贵州省", "威宁县盐仓老鸦营30MW农业光伏电站项目", 26.8833, 104.2250, 1, "30MW"));
|
||||||
|
|
||||||
// 12号项目
|
// 12号项目
|
||||||
projectVos.add(create("云南省", "大黑土光伏电站总承包工程项目", 25.0406, 102.7142, 1,"272.97MW"));
|
projectVos.add(create("云南省", "大黑土光伏电站总承包工程项目", 25.0406, 102.7142, 1, "272.97MW"));
|
||||||
|
|
||||||
// 13号项目
|
// 13号项目
|
||||||
projectVos.add(create("贵州省", "晴隆县碧痕新坪村风光火储一体化农业光伏电站", 25.5333, 105.1250, 1,"/"));
|
projectVos.add(create("贵州省", "晴隆县碧痕新坪村风光火储一体化农业光伏电站", 25.5333, 105.1250, 1, "/"));
|
||||||
|
|
||||||
// 15号项目
|
// 15号项目
|
||||||
projectVos.add(create("河北省", "怀安县风光储一体化项目", 40.6667, 114.5417, 1,"200MW"));
|
projectVos.add(create("河北省", "怀安县风光储一体化项目", 40.6667, 114.5417, 1, "200MW"));
|
||||||
|
|
||||||
// 16号项目
|
// 16号项目
|
||||||
projectVos.add(create("云南省", "保山市隆阳区黑岩洼光伏发电项目", 25.1250, 99.1667, 1,"100MW"));
|
projectVos.add(create("云南省", "保山市隆阳区黑岩洼光伏发电项目", 25.1250, 99.1667, 1, "100MW"));
|
||||||
|
|
||||||
// 17号项目
|
// 17号项目
|
||||||
projectVos.add(create("云南省", "白玉光伏发电项目", 25.1250, 99.1667, 1,"340MW"));
|
projectVos.add(create("云南省", "白玉光伏发电项目", 25.1250, 99.1667, 1, "340MW"));
|
||||||
|
|
||||||
// 20号项目
|
// 20号项目
|
||||||
projectVos.add(create("云南省", "云南省沾益区菱角农业光伏发电项目", 25.6000, 103.6833, 1,"350MWp"));
|
projectVos.add(create("云南省", "云南省沾益区菱角农业光伏发电项目", 25.6000, 103.6833, 1, "350MWp"));
|
||||||
|
|
||||||
// 21号项目
|
// 21号项目
|
||||||
projectVos.add(create("云南省", "云南省文山州砚山县平远光伏发电项目", 23.7500, 104.3333, 1,"120MW"));
|
projectVos.add(create("云南省", "云南省文山州砚山县平远光伏发电项目", 23.7500, 104.3333, 1, "120MW"));
|
||||||
|
|
||||||
// 22号项目
|
// 22号项目
|
||||||
projectVos.add(create("贵州省", "兴仁市大山能投农业光伏电站项目", 25.4000, 105.1833, 1,"100MW"));
|
projectVos.add(create("贵州省", "兴仁市大山能投农业光伏电站项目", 25.4000, 105.1833, 1, "100MW"));
|
||||||
|
|
||||||
// 23号项目
|
// 23号项目
|
||||||
projectVos.add(create("贵州省", "兴仁市潘家庄能投农业光伏电站项目", 25.5333, 104.9833, 1,"100MW"));
|
projectVos.add(create("贵州省", "兴仁市潘家庄能投农业光伏电站项目", 25.5333, 104.9833, 1, "100MW"));
|
||||||
|
|
||||||
// 47号项目
|
// 47号项目
|
||||||
projectVos.add(create("重庆市", "丰都许明寺镇100MW农牧光互补复合项目", 29.9333, 107.7500, 1,"100MW"));
|
projectVos.add(create("重庆市", "丰都许明寺镇100MW农牧光互补复合项目", 29.9333, 107.7500, 1, "100MW"));
|
||||||
|
|
||||||
// 48号项目
|
// 48号项目
|
||||||
projectVos.add(create("云南省", "文山市茂克光伏电站项目", 23.3667, 104.2000, 1,"90.2MW"));
|
projectVos.add(create("云南省", "文山市茂克光伏电站项目", 23.3667, 104.2000, 1, "90.2MW"));
|
||||||
|
|
||||||
// 50号项目
|
// 50号项目
|
||||||
projectVos.add(create("云南省", "文山市清水井光伏电站项目", 23.4500, 104.3333, 1,"120.25MW"));
|
projectVos.add(create("云南省", "文山市清水井光伏电站项目", 23.4500, 104.3333, 1, "120.25MW"));
|
||||||
|
|
||||||
// 52号项目(原序号1)
|
// 52号项目(原序号1)
|
||||||
projectVos.add(create("广西壮族自治区", "新铝电力新山站屋顶分布式光伏发电项目EPC总承包", 22.8241, 108.3178, 1,"0.3MWp"));
|
projectVos.add(create("广西壮族自治区", "新铝电力新山站屋顶分布式光伏发电项目EPC总承包", 22.8241, 108.3178, 1, "0.3MWp"));
|
||||||
|
|
||||||
// 53号项目(原序号2)
|
// 53号项目(原序号2)
|
||||||
projectVos.add(create("江西省", "江西省高速公路服务区分布式光伏项目EPC", 28.6764, 115.8922, 1,"120.12MWp"));
|
projectVos.add(create("江西省", "江西省高速公路服务区分布式光伏项目EPC", 28.6764, 115.8922, 1, "120.12MWp"));
|
||||||
|
|
||||||
// 54号项目(原序号3)
|
// 54号项目(原序号3)
|
||||||
projectVos.add(create("河南省", "龙佰集团股份有限公司7MWp分布式光伏发电项目EPC总承包", 34.7573, 113.6145, 1,"8.4MWp"));
|
projectVos.add(create("河南省", "龙佰集团股份有限公司7MWp分布式光伏发电项目EPC总承包", 34.7573, 113.6145, 1, "8.4MWp"));
|
||||||
|
|
||||||
// 55号项目(原序号4)
|
// 55号项目(原序号4)
|
||||||
projectVos.add(create("吉林省", "吉林热电检修安装工程有限公司吉林省南湖宾馆光储充一体化项目EPC总承包", 43.8868, 125.3245, 1,"400kW"));
|
projectVos.add(create("吉林省", "吉林热电检修安装工程有限公司吉林省南湖宾馆光储充一体化项目EPC总承包", 43.8868, 125.3245, 1, "400kW"));
|
||||||
|
|
||||||
// 56号项目(原序号5)
|
// 56号项目(原序号5)
|
||||||
projectVos.add(create("吉林省", "集安市瀚能风电场相关装备有限公司益盛汉参集团分布式光伏发电项目EPC", 41.1333, 126.1650, 1,"3.50784MW"));
|
projectVos.add(create("吉林省", "集安市瀚能风电场相关装备有限公司益盛汉参集团分布式光伏发电项目EPC", 41.1333, 126.1650, 1, "3.50784MW"));
|
||||||
|
|
||||||
// 57号项目(原序号6)
|
// 57号项目(原序号6)
|
||||||
projectVos.add(create("重庆市", "重庆潼南综合智慧零碳电厂耀辉环保单元项目", 30.1550, 106.2289, 1,"2.9MW"));
|
projectVos.add(create("重庆市", "重庆潼南综合智慧零碳电厂耀辉环保单元项目", 30.1550, 106.2289, 1, "2.9MW"));
|
||||||
|
|
||||||
// 58号项目(原序号7)
|
// 58号项目(原序号7)
|
||||||
projectVos.add(create("重庆市", "汇智能源公司重庆永川综合智慧零碳电厂", 29.4167, 105.7833, 1,"2MW"));
|
projectVos.add(create("重庆市", "汇智能源公司重庆永川综合智慧零碳电厂", 29.4167, 105.7833, 1, "2MW"));
|
||||||
|
|
||||||
// 59号项目(原序号8)
|
// 59号项目(原序号8)
|
||||||
projectVos.add(create("广西壮族自治区", "德保县乡村振兴光伏发电项目(第二批)EPC 总承包", 23.7167, 106.6833, 1,"44.775MW"));
|
projectVos.add(create("广西壮族自治区", "德保县乡村振兴光伏发电项目(第二批)EPC 总承包", 23.7167, 106.6833, 1, "44.775MW"));
|
||||||
|
|
||||||
// 60号项目(原序号9)
|
// 60号项目(原序号9)
|
||||||
projectVos.add(create("重庆市", "汇智能源公司重庆永川综合智慧零碳电厂升科精锻单元项目工程EPC总承包工程(一期)", 29.4167, 105.7833, 1,"/"));
|
projectVos.add(create("重庆市", "汇智能源公司重庆永川综合智慧零碳电厂升科精锻单元项目工程EPC总承包工程(一期)", 29.4167, 105.7833, 1, "/"));
|
||||||
|
|
||||||
// 62号项目(原序号11)
|
// 62号项目(原序号11)
|
||||||
projectVos.add(create("贵州省", "新铝电力莲塘、马隘变电站屋顶分布式光伏发电项目EPC工程总承包项目", 23.7833, 106.9500, 1,"0.788MW"));
|
projectVos.add(create("贵州省", "新铝电力莲塘、马隘变电站屋顶分布式光伏发电项目EPC工程总承包项目", 23.7833, 106.9500, 1, "0.788MW"));
|
||||||
|
|
||||||
// 63号项目(原序号12)
|
// 63号项目(原序号12)
|
||||||
projectVos.add(create("广西壮族自治区", "广西德保县乡村振兴光伏发电项目(第三批)EPC总承包", 23.7167, 106.6833, 1,"191MW(直流侧装机容量243.9007MWp)"));
|
projectVos.add(create("广西壮族自治区", "广西德保县乡村振兴光伏发电项目(第三批)EPC总承包", 23.7167, 106.6833, 1, "191MW(直流侧装机容量243.9007MWp)"));
|
||||||
|
|
||||||
// 64号项目(原序号13)
|
// 64号项目(原序号13)
|
||||||
projectVos.add(create("内蒙古自治区", "内蒙古自治区蒙西户用分布式200MW光伏发电项目EPC总承包四期", 40.6667, 109.8333, 1,"200MW"));
|
projectVos.add(create("内蒙古自治区", "内蒙古自治区蒙西户用分布式200MW光伏发电项目EPC总承包四期", 40.6667, 109.8333, 1, "200MW"));
|
||||||
|
|
||||||
// 65号项目(原序号14)
|
// 65号项目(原序号14)
|
||||||
projectVos.add(create("广东省", "惠来县50MWp居民屋顶分布式光伏项目", 23.0333, 116.2833, 1,"50MWp"));
|
projectVos.add(create("广东省", "惠来县50MWp居民屋顶分布式光伏项目", 23.0333, 116.2833, 1, "50MWp"));
|
||||||
|
|
||||||
// 66号项目(原序号15)
|
// 66号项目(原序号15)
|
||||||
projectVos.add(create("广西壮族自治区", "田东县乡村振兴分布式光伏发电项目(二期)EPC总承包", 23.6167, 106.9167, 1,"92MW"));
|
projectVos.add(create("广西壮族自治区", "田东县乡村振兴分布式光伏发电项目(二期)EPC总承包", 23.6167, 106.9167, 1, "92MW"));
|
||||||
|
|
||||||
// 67号项目(原序号16)
|
// 67号项目(原序号16)
|
||||||
projectVos.add(create("广西壮族自治区", "田东县乡村振兴分布式光伏发电项目(一期)EPC总承包", 23.6167, 106.9167, 1,"203MW"));
|
projectVos.add(create("广西壮族自治区", "田东县乡村振兴分布式光伏发电项目(一期)EPC总承包", 23.6167, 106.9167, 1, "203MW"));
|
||||||
|
|
||||||
// 68号项目(原序号17)
|
// 68号项目(原序号17)
|
||||||
projectVos.add(create("重庆市", "华能重庆华通电脑有限公司屋顶分布式光伏EPC项目合同", 29.533155, 106.504962, 1,"10.2245MWp"));
|
projectVos.add(create("重庆市", "华能重庆华通电脑有限公司屋顶分布式光伏EPC项目合同", 29.533155, 106.504962, 1, "10.2245MWp"));
|
||||||
|
|
||||||
// 69号项目(原序号18)
|
// 69号项目(原序号18)
|
||||||
projectVos.add(create("广东省", "大埔峡能白罗20MW、长兴20MW、洋门10MW、群丰10MW农光互补光伏发电项目", 24.3667, 116.7000, 1,"60MWp"));
|
projectVos.add(create("广东省", "大埔峡能白罗20MW、长兴20MW、洋门10MW、群丰10MW农光互补光伏发电项目", 24.3667, 116.7000, 1, "60MWp"));
|
||||||
|
|
||||||
// 70号项目(原序号19)
|
// 70号项目(原序号19)
|
||||||
projectVos.add(create("广东省", "化州区域分布式光伏项目", 21.7000, 110.6333, 1,"15MWp"));
|
projectVos.add(create("广东省", "化州区域分布式光伏项目", 21.7000, 110.6333, 1, "15MWp"));
|
||||||
|
|
||||||
// 71号项目(原序号20)
|
// 71号项目(原序号20)
|
||||||
projectVos.add(create("河北省", "兴隆县10MW分布式光伏项目", 40.4167, 117.4833, 1,"5.99MW"));
|
projectVos.add(create("河北省", "兴隆县10MW分布式光伏项目", 40.4167, 117.4833, 1, "5.99MW"));
|
||||||
|
|
||||||
// 75号项目(原序号24)
|
// 75号项目(原序号24)
|
||||||
projectVos.add(create("重庆市", "石柱发电公司厂区分布式光伏施工项目", 29.9333, 108.1333, 1,"0.9MW"));
|
projectVos.add(create("重庆市", "石柱发电公司厂区分布式光伏施工项目", 29.9333, 108.1333, 1, "0.9MW"));
|
||||||
|
|
||||||
// 76号项目(原序号25)
|
// 76号项目(原序号25)
|
||||||
projectVos.add(create("陕西省", "靖边燃气发电厂3.0MW光伏发电工程", 37.6167, 108.7833, 1,"3MWp"));
|
projectVos.add(create("陕西省", "靖边燃气发电厂3.0MW光伏发电工程", 37.6167, 108.7833, 1, "3MWp"));
|
||||||
|
|
||||||
// 77号项目(原序号26)
|
// 77号项目(原序号26)
|
||||||
projectVos.add(create("河北省", "河北兴隆 10MW分布式光伏项目", 40.4167, 117.4833, 1,"4MW"));
|
projectVos.add(create("河北省", "河北兴隆 10MW分布式光伏项目", 40.4167, 117.4833, 1, "4MW"));
|
||||||
|
|
||||||
// 79号项目(原序号28)
|
// 79号项目(原序号28)
|
||||||
projectVos.add(create("广东省", "茂名分公司化工区物资仓库屋顶光伏发电合同能源管理项目", 21.6833, 110.8667, 1,"1.855MWp"));
|
projectVos.add(create("广东省", "茂名分公司化工区物资仓库屋顶光伏发电合同能源管理项目", 21.6833, 110.8667, 1, "1.855MWp"));
|
||||||
|
|
||||||
// 88号项目(原序号37)
|
// 88号项目(原序号37)
|
||||||
projectVos.add(create("河北省", "怀安县风光储一体化项目", 40.6667, 114.5417, 1,"200MW"));
|
projectVos.add(create("河北省", "怀安县风光储一体化项目", 40.6667, 114.5417, 1, "200MW"));
|
||||||
|
|
||||||
// 91号项目(原序号2)
|
// 91号项目(原序号2)
|
||||||
projectVos.add(create("辽宁省", "鑫泰新能源大石桥市200MW风电场新建工程项目", 40.6333, 122.5333, 2,"200MW"));
|
projectVos.add(create("辽宁省", "鑫泰新能源大石桥市200MW风电场新建工程项目", 40.6333, 122.5333, 2, "200MW"));
|
||||||
|
|
||||||
// 92号项目(原序号3)
|
// 92号项目(原序号3)
|
||||||
projectVos.add(create("辽宁省", "大石桥市冠程新能源550MW风电场工程项目", 40.6333, 122.5333, 2,"550MW"));
|
projectVos.add(create("辽宁省", "大石桥市冠程新能源550MW风电场工程项目", 40.6333, 122.5333, 2, "550MW"));
|
||||||
|
|
||||||
// 96号项目(原序号7)
|
// 96号项目(原序号7)
|
||||||
projectVos.add(create("四川省", "阿坝公司运检大楼“风光油储型”微电网试点项目", 31.9500, 102.2167, 2,"0.6MW"));
|
projectVos.add(create("四川省", "阿坝公司运检大楼“风光油储型”微电网试点项目", 31.9500, 102.2167, 2, "0.6MW"));
|
||||||
|
|
||||||
// 老挝 - 万象
|
// 老挝 - 万象
|
||||||
projectVos.add(create("老挝", "巴塞", 15.110507, 105.817291, 1,"1000MW"));
|
projectVos.add(create("老挝", "巴塞", 15.110507, 105.817291, 1, "1000MW"));
|
||||||
// 老挝 - 琅勃拉邦
|
// 老挝 - 琅勃拉邦
|
||||||
projectVos.add(create("老挝", "波利坎塞", 18.39639, 103.65583, 1,"50.1MW"));
|
projectVos.add(create("老挝", "波利坎塞", 18.39639, 103.65583, 1, "50.1MW"));
|
||||||
Map<String, Map<String, Map<String, String>>> map = new HashMap<>();
|
Map<String, Map<String, Map<String, String>>> map = new HashMap<>();
|
||||||
for (SysDictDataVo projectType : projectTypes) {
|
for (SysDictDataVo projectType : projectTypes) {
|
||||||
Map<String, Map<String, String>> map1 = new HashMap<>();
|
Map<String, Map<String, String>> map1 = new HashMap<>();
|
||||||
@ -1486,21 +1491,21 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
|
|||||||
/**
|
/**
|
||||||
* 构造分项工程树
|
* 构造分项工程树
|
||||||
*/
|
*/
|
||||||
private List<PgsProgressCategoryStructureVo> buildCategoryTree(List<PgsProgressCategory> categories) {
|
private List<BusProjectStructureVo> buildCategoryTree(List<PgsProgressCategory> categories) {
|
||||||
Map<Long, PgsProgressCategoryStructureVo> map = new HashMap<>();
|
Map<Long, BusProjectStructureVo> map = new HashMap<>();
|
||||||
List<PgsProgressCategoryStructureVo> roots = new ArrayList<>();
|
List<BusProjectStructureVo> roots = new ArrayList<>();
|
||||||
|
|
||||||
for (PgsProgressCategory c : categories) {
|
for (PgsProgressCategory c : categories) {
|
||||||
PgsProgressCategoryStructureVo node = new PgsProgressCategoryStructureVo(c.getId(), c.getName(), new ArrayList<>());
|
BusProjectStructureVo node = new BusProjectStructureVo(c.getId(), c.getName(), new ArrayList<>());
|
||||||
map.put(c.getId(), node);
|
map.put(c.getId(), node);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (PgsProgressCategory c : categories) {
|
for (PgsProgressCategory c : categories) {
|
||||||
PgsProgressCategoryStructureVo node = map.get(c.getId());
|
BusProjectStructureVo node = map.get(c.getId());
|
||||||
if (c.getParentId() == 0) {
|
if (c.getParentId() == 0) {
|
||||||
roots.add(node);
|
roots.add(node);
|
||||||
} else {
|
} else {
|
||||||
PgsProgressCategoryStructureVo parent = map.get(c.getParentId());
|
BusProjectStructureVo parent = map.get(c.getParentId());
|
||||||
if (parent != null) {
|
if (parent != null) {
|
||||||
parent.getChildren().add(node);
|
parent.getChildren().add(node);
|
||||||
}
|
}
|
||||||
@ -1539,7 +1544,7 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
|
|||||||
* @param projectType 项目类型
|
* @param projectType 项目类型
|
||||||
* @return 项目信息
|
* @return 项目信息
|
||||||
*/
|
*/
|
||||||
private static BusProjectVo create(String province, String name, double lat, double lng, Integer projectType,String plan) {
|
private static BusProjectVo create(String province, String name, double lat, double lng, Integer projectType, String plan) {
|
||||||
BusProjectVo vo = new BusProjectVo();
|
BusProjectVo vo = new BusProjectVo();
|
||||||
vo.setId(IdWorker.getID());
|
vo.setId(IdWorker.getID());
|
||||||
vo.setProvince(province);
|
vo.setProvince(province);
|
||||||
|
|||||||
Reference in New Issue
Block a user