From f09e6937bf52bdc3d87d29d1d5b3180735e39664 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期三, 17 十二月 2025 10:16:22 +0800
Subject: [PATCH] 最新版本541200007
---
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java | 242 +++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 229 insertions(+), 13 deletions(-)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
index 6dfe258..62cc0a3 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
@@ -45,8 +45,10 @@
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
+import javax.annotation.PostConstruct;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -95,6 +97,9 @@
private PlatformDeviceMapper platformDeviceMapper;
@Autowired
private CategoryMapper categoryMapper;
+
+ @Autowired
+ private RedisTemplate<String,Object> stringRedisTemplate;
@Value("${debug_model}")
private Boolean isDebug;
/**
@@ -216,6 +221,32 @@
*/
@Override
public List<PageRegionInfoResponse> getRegionTree(CarmeraListVO req){
+ List<PageRegionInfoResponse> allList =null;
+ if(req.getRefresh() == 0){
+ //榛樿鍙栫紦瀛樻暟鎹�
+ allList = (List<PageRegionInfoResponse>) stringRedisTemplate.opsForValue().get(Constants.RedisKeys.HK_REGIONS_TREE);
+ }
+ if(allList!=null && allList.size()>0){
+ return allList;
+ }
+ allList = getAllRegionList();
+ if(allList==null && allList.size()==0){
+ return allList;
+ }
+ if(Constants.equalsInteger(req.getWithCameras(),Constants.ONE)){
+ initReginCameralList(allList,req );//鑾峰彇鍏ㄩ儴鐩戞帶鐐规暟鎹�
+ }else if(Constants.equalsInteger(req.getWithCameras(),Constants.TWO)){
+ initReginCameralList(allList,req );//鑾峰彇鍏ㄩ儴鐩戞帶鐐规暟鎹�
+ initReginFireDeviveList(allList, req);//鑾峰彇鍏ㄩ儴鐩戞帶鐐规暟鎹�
+ initReginSensorList(allList,req);//鑾峰彇鍏ㄩ儴鐩戞帶鐐规暟鎹�
+ }
+ List<PageRegionInfoResponse> data = new RegionTreeVO(allList).buildTree();
+ //鍔犲叆缂撳瓨
+ stringRedisTemplate.opsForValue().set(Constants.RedisKeys.HK_REGIONS_TREE,data);
+ return data;
+ }
+
+ private List<PageRegionInfoResponse> getAllRegionList() {
List<PageRegionInfoResponse> allList = new ArrayList<>();
boolean hasNext = true;
int curTotal = 0;
@@ -242,13 +273,64 @@
}
curPage++;
}
- if(Constants.equalsInteger(req.getWithCameras(),Constants.ONE)){
- initReginCameralList(allList,req.getName());//鑾峰彇鍏ㄩ儴鐩戞帶鐐规暟鎹�
- }
- List<PageRegionInfoResponse> data = new RegionTreeVO(allList).buildTree();
- return data;
+ return allList;
}
- private void initReginCameralList(List<PageRegionInfoResponse> allList,String name) {
+
+ private void initReginFireDeviveList(List<PageRegionInfoResponse> allList,CarmeraListVO req) {
+ String name =req.getName();
+ List<CarmeraListVO> carmeraListVOList = fireDeviceList();
+ if(carmeraListVOList!=null && carmeraListVOList.size()>0){
+ for(PageRegionInfoResponse p : allList){
+ for(CarmeraListVO c : carmeraListVOList){
+ if(StringUtils.equals(p.getIndexCode(),c.getReginCode()) ){
+ if(p.getCarmeraList()==null){
+ p.setDeviceList(new ArrayList<>());
+ }
+ p.getDeviceList().add(c);
+ }
+ }
+ }
+ }
+ }
+ private void initReginSensorList(List<PageRegionInfoResponse> allList,CarmeraListVO req) {
+ String name =req.getName();
+ List<CarmeraListVO> carmeraListVOList = sensorList();
+ if(carmeraListVOList!=null && carmeraListVOList.size()>0){
+ for(PageRegionInfoResponse p : allList){
+ for(CarmeraListVO c : carmeraListVOList){
+ if(StringUtils.equals(p.getIndexCode(),c.getReginCode())){
+ if(p.getSensorList()==null){
+ p.setSensorList(new ArrayList<>());
+ }
+ p.getSensorList().add(c);
+ }
+ }
+ }
+ }
+ }
+ @PostConstruct
+ public void cacheRegionAndDeviceData(){
+ log.error("===============缂撳瓨娴峰悍骞冲彴鍖哄煙璁惧淇℃伅======寮�濮�============");
+ try {
+ CarmeraListVO param =new CarmeraListVO();
+ param.setWithCameras(2);
+ List<PageRegionInfoResponse> resultTree = getRegionTree(param);
+ List<PageRegionInfoResponse> result = getAllRegionList();
+ List<CarmeraListVO> carmeraListVOList = initAllReginCameralList(result);
+ List<CarmeraListVO> sensorList = sensorList();
+ List<CarmeraListVO> fireDeviceList = fireDeviceList();
+ stringRedisTemplate.opsForValue().set(Constants.RedisKeys.HK_REGIONS_TREE,resultTree);
+ stringRedisTemplate.opsForValue().set(Constants.RedisKeys.HK_REGIONS,result);//骞抽摵鍖哄煙鍒楄〃
+ stringRedisTemplate.opsForValue().set(Constants.RedisKeys.HK_CAMERAS,carmeraListVOList);//鎵�鏈夌洃鎺х偣鏁版嵁
+ stringRedisTemplate.opsForValue().set(Constants.RedisKeys.HK_FIRE_DEVICE,fireDeviceList);//鎵�鏈夋秷闃茶澶囨暟鎹�
+ stringRedisTemplate.opsForValue().set(Constants.RedisKeys.HK_SENSOR,sensorList);//鎵�鏈変紶鎰熷櫒
+ log.error("===============缂撳瓨娴峰悍骞冲彴鍖哄煙璁惧淇℃伅======鎴愬姛============");
+ }catch (Exception e){
+ log.error("===============缂撳瓨娴峰悍骞冲彴鍖哄煙璁惧淇℃伅澶辫触==================");
+ }
+ }
+ private void initReginCameralList(List<PageRegionInfoResponse> allList,CarmeraListVO req) {
+ String name = req.getName();
CarmeraListVO re = new CarmeraListVO();
re.setName(name);
List<CarmeraListVO> carmeraListVOList = cameraList(re);
@@ -260,11 +342,26 @@
if(p.getCarmeraList()==null){
p.setCarmeraList(new ArrayList<>());
}
+ c.setRegionName(p.getName());
p.getCarmeraList().add(c);
}
}
}
}
+ }
+ private List<CarmeraListVO> initAllReginCameralList(List<PageRegionInfoResponse> allList ) {
+ CarmeraListVO re = new CarmeraListVO();
+ List<CarmeraListVO> carmeraListVOList = cameraList(re);
+ if(carmeraListVOList!=null && carmeraListVOList.size()>0){
+ for(PageRegionInfoResponse p : allList){
+ for(CarmeraListVO c : carmeraListVOList){
+ if(StringUtils.equals(p.getIndexCode(),c.getReginCode())){
+ c.setRegionName(p.getName());
+ }
+ }
+ }
+ }
+ return carmeraListVOList;
}
/**
* 鑾峰彇鍖哄煙鏍戝舰缁撴瀯鏁版嵁
@@ -299,7 +396,7 @@
curPage++;
}
if(Constants.equalsInteger(req.getWithCameras(),Constants.ONE)){
- initReginCameralList(allList,req.getName());//鑾峰彇鍏ㄩ儴鐩戞帶鐐规暟鎹�
+ initReginCameralList(allList,req);//鑾峰彇鍏ㄩ儴鐩戞帶鐐规暟鎹�
}
return allList;
}
@@ -343,6 +440,114 @@
t.setStatusName(p.getStatusName());
data.add(t);
}
+ }
+ return data;
+ }
+ public List<CarmeraListVO> sensorList(){
+ List<SensorStatusListResponse> allList = new ArrayList<>();
+ boolean hasNext = true;
+ int curTotal = 0;
+ int curPage = 1;
+ while (hasNext){
+ //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
+ SensorStatusListRequest param = new SensorStatusListRequest();
+ param.setRegionIndexCode("-1");
+ param.setIncludeSubNode(1);
+ param.setPageSize(100);
+ param.setPageNo(curPage);
+ BaseResponse<BaseListPageResponse<SensorStatusListResponse>> response = HKService.sensorStatusSearch(param);
+ if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+ }
+ BaseListPageResponse<SensorStatusListResponse> r = response.getData();
+ curTotal += 100;
+ if(curTotal >= r.getTotal()){
+ hasNext = false;
+ }
+ if(r.getList() == null || r.getList().size()==0){
+ hasNext =false;
+ }else{
+ allList.addAll(r.getList());
+ }
+ curPage++;
+ }
+
+ List<CarmeraListVO> data = new ArrayList<>();
+ for(SensorStatusListResponse p : allList){
+ CarmeraListVO t = new CarmeraListVO();
+ t.setIndexCode(p.getIndexCode());
+ t.setReginCode(p.getRegionIndexCode());
+ t.setName(p.getCn());
+ t.setStatus(p.getUnitStatus());
+ t.setRegionName(p.getRegionName());
+ //0锛氭湭娉ㄥ唽 1锛氭甯� 2: 淇涓� 3锛氬紓甯哥姸鎬�
+ if(t.getStatus()!=null && t.getStatus() == 0){
+ t.setStatusName("鏈敞鍐�");
+ }
+ if(t.getStatus()!=null && t.getStatus() == 1){
+ t.setStatusName("姝e父");
+ }
+ if(t.getStatus()!=null && t.getStatus() == 2){
+ t.setStatusName("淇涓�");
+ }
+ if(t.getStatus()!=null && t.getStatus() == 3){
+ t.setStatusName("寮傚父鐘舵��");
+ }
+ data.add(t);
+ }
+ return data;
+ }
+ public List<CarmeraListVO> fireDeviceList(){
+ List<FireDeviceStatusListResponse> allList = new ArrayList<>();
+ boolean hasNext = true;
+ int curTotal = 0;
+ int curPage = 1;
+ while (hasNext){
+ //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
+ FireDeviceStatuslListRequest param = new FireDeviceStatuslListRequest();
+ param.setRegionIndexCode("-1");
+ param.setPageSize(100);
+ param.setIncludeSubNode(1);
+ param.setPageNo(curPage);
+ BaseResponse<BaseListPageResponse<FireDeviceStatusListResponse>> response = HKService.fireDeviceStatusSearch(param);
+ if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+ }
+ BaseListPageResponse<FireDeviceStatusListResponse> r = response.getData();
+ curTotal += 100;
+ if(curTotal >= r.getTotal()){
+ hasNext = false;
+ }
+ if(r.getList() == null || r.getList().size()==0){
+ hasNext =false;
+ }else{
+ allList.addAll(r.getList());
+ }
+ curPage++;
+ }
+
+ List<CarmeraListVO> data = new ArrayList<>();
+ for(FireDeviceStatusListResponse p : allList){
+ CarmeraListVO t = new CarmeraListVO();
+ t.setIndexCode(p.getIndexCode());
+ t.setReginCode(p.getRegionIndexCode());
+ t.setName(p.getCn());
+ t.setStatus(p.getUnitStatus());
+ t.setRegionName(p.getRegionName());
+ //0锛氭湭娉ㄥ唽 1锛氭甯� 2: 淇涓� 3锛氬紓甯哥姸鎬�
+ if(t.getStatus()!=null && t.getStatus() == 0){
+ t.setStatusName("鏈敞鍐�");
+ }
+ if(t.getStatus()!=null && t.getStatus() == 1){
+ t.setStatusName("姝e父");
+ }
+ if(t.getStatus()!=null && t.getStatus() == 2){
+ t.setStatusName("淇涓�");
+ }
+ if(t.getStatus()!=null && t.getStatus() == 3){
+ t.setStatusName("寮傚父鐘舵��");
+ }
+ data.add(t);
}
return data;
}
@@ -503,12 +708,15 @@
request.setFetchImg(true);
RuleEventFiledOptionsRequest file = new RuleEventFiledOptionsRequest();
file.setFieldName("event_type");
- file.setFieldValue("131588,131593");//瀹夐槻鍛婅鍜屼汉鍛樺憡璀�
+ //瀹夐槻浜嬩欢鍒掑垎鏂瑰紡锛�
+ //閲嶇偣鍖哄煙锛氶噸鐐逛汉鍛�-1644175361銆佸尯鍩熷叆渚�-1644175361銆侀檶鐢熶汉-1644171265銆佽溅杈嗚繚鍋�-1644171265
+ //鍗遍櫓琛屼负锛氫汉鍛樺�掑湴-1644171265銆佹湭甯﹀畨鍏ㄥ附-422000002銆佹娊鐑�-422000000銆佹墦鐢佃瘽-422000001銆佺潯宀�-422400001銆佺宀�-422400000
+ file.setFieldValue("131588,131593,1644171265,422000002,422000000,422000001,422400001,422400000,1644175361,1644175361,1644171265,1644171265");//瀹夐槻鍛婅鍜屼汉鍛樺憡璀�
file.setType("in");
if(type == 1){
- file.setFieldValue("131588");//瀹夐槻鍛婅 鍖哄煙鍏ヤ镜
+ file.setFieldValue("131588,1644175361,1644175361,1644171265,1644171265");//瀹夐槻鍛婅 鍖哄煙鍏ヤ镜
}else if(type == 2){
- file.setFieldValue("131593");//浜哄憳鍛婅 鍗遍櫓琛屼负
+ file.setFieldValue("131593,1644171265,422000002,422000000,422000001,422400001,422400000");//浜哄憳鍛婅 鍗遍櫓琛屼负
}
request.getFiledOptions().add(file);
@@ -525,7 +733,7 @@
request.getFiledOptions().add(fileGte);
RuleEventFiledOptionsRequest fileStatus = new RuleEventFiledOptionsRequest();
- fileStatus.setFieldName("happen_time");
+ fileStatus.setFieldName("handle_status");
fileStatus.setFieldValue("99");
fileStatus.setType("neq");
request.getFiledOptions().add(fileStatus);
@@ -1357,12 +1565,18 @@
List<Long> startTimeList = platformLogList.stream().filter(i->Objects.nonNull(i.getParam1()))
.filter(i->Objects.nonNull(i.getParam1())&&i.getParam1().indexOf(today)>=0)
.map(i->DateUtil.fromStringToDate("yyyy-MM-dd HH:mm:ss",i.getParam1()).getTime()).collect(Collectors.toList());
- Long startTime = Collections.min(startTimeList);
+ Long startTime = null ;
+ if(CollectionUtils.isNotEmpty(startTimeList)){
+ startTime = Collections.min(startTimeList);
+ }
//鑾峰彇缁撴潫鏃堕棿
List<Long> endTimeList = platformLogList.stream()
.filter(i->Objects.nonNull(i.getParam2())&&i.getParam2().indexOf(today)>=0)
.map(i->DateUtil.fromStringToDate("yyyy-MM-dd HH:mm:ss",i.getParam2()).getTime()).collect(Collectors.toList());
- Long endTime = Collections.max(endTimeList);
+ Long endTime = null ;
+ if(CollectionUtils.isNotEmpty(endTimeList)){
+ endTime = Collections.max(endTimeList);
+ }
if(Objects.isNull(startTime)
|| Objects.isNull(endTime) || (startTime>=endTime)){
return BigDecimal.ZERO;
@@ -2089,6 +2303,8 @@
data.setInParkCarTotal(
(int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)).count()
);
+ //2025骞�8鏈�4鏃�09:24:23 鏇存崲鏁版嵁婧� 涓嶄粠娴峰悍鍙�
+ data.setFreeParkingLot(data.getParkingLotTotal()<data.getInParkCarTotal()?Constants.ZERO:data.getParkingLotTotal() - data.getInParkCarTotal());
//褰撳墠鍦ㄥ洯璐ц溅鍙告満鎬绘暟
data.setInParkCarUserTotal(
(int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.FIVE)).count()
--
Gitblit v1.9.3