From 8b3793ac8072918f52201f5d54f1cdf49ce02299 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期一, 21 四月 2025 11:40:48 +0800
Subject: [PATCH] 录像可用率自定义列修改与导出
---
ycl-pojo/src/main/java/com/ycl/platform/domain/form/UpdateDynamicValueForm.java | 15 +
ycl-server/src/main/java/com/ycl/platform/controller/DynamicColumnController.java | 38 ++++
ycl-server/src/main/resources/mapper/zgyw/DynamicColumnMapper.xml | 30 +++
ycl-server/src/main/java/com/ycl/platform/mapper/DynamicColumnMapper.java | 2
ycl-server/src/main/java/com/ycl/platform/service/impl/DynamicColumnServiceImpl.java | 55 ++++++
ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java | 155 +++++++++++++++++++
ycl-server/src/main/java/com/ycl/platform/service/DynamicColumnService.java | 16 ++
ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/RecordMetaDSumResult.java | 8
ycl-pojo/src/main/java/com/ycl/platform/domain/excel/RecordingAvailabilityExport.java | 54 ++++++
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/DynamicColumnValue.java | 3
ycl-common/src/main/java/constant/RecordingAvailability.java | 22 ++
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DynamicColumnVO.java | 4
ycl-server/src/main/java/com/ycl/platform/controller/DataCenterController.java | 24 +++
ycl-server/src/main/java/com/ycl/platform/service/DataCenterService.java | 10 +
14 files changed, 430 insertions(+), 6 deletions(-)
diff --git a/ycl-common/src/main/java/constant/RecordingAvailability.java b/ycl-common/src/main/java/constant/RecordingAvailability.java
new file mode 100644
index 0000000..1dbfd35
--- /dev/null
+++ b/ycl-common/src/main/java/constant/RecordingAvailability.java
@@ -0,0 +1,22 @@
+package constant;
+
+public class RecordingAvailability {
+ public final static String arealayername = "琛屾斂鍖哄煙";
+
+ public final static String arealayerno = "琛屾斂鍖哄煙ID";
+
+ public final static String createTime = "鍒涘缓鏃堕棿";
+
+ public final static String deviceId = "鎽勫儚鏈篒D";
+
+ public final static String missDuration = "缂哄け鏃堕暱";
+
+ public final static String platId = "鍥芥爣骞冲彴ID";
+
+ public final static String recordDuration = "褰曞儚鏃堕暱";
+
+ public final static String recordStatusText = "褰曞儚瀹屾暣鐘舵��";
+
+ public final static String statTime = "缁熻鏃堕棿";
+
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/DynamicColumnValue.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/DynamicColumnValue.java
index 3f68e65..faab540 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/DynamicColumnValue.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/DynamicColumnValue.java
@@ -35,7 +35,8 @@
/** 鍏宠仈鐨勬暟鎹甶d */
private Integer refId;
-
+ @TableField("ref_String_id")
+ private String refStringId;
}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/excel/RecordingAvailabilityExport.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/excel/RecordingAvailabilityExport.java
new file mode 100644
index 0000000..7477ad7
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/excel/RecordingAvailabilityExport.java
@@ -0,0 +1,54 @@
+package com.ycl.platform.domain.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.format.DateTimeFormat;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ycl.platform.domain.vo.DynamicColumnVO;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class RecordingAvailabilityExport {
+ /** 琛屾斂鍖哄煙*/
+ @ColumnWidth(100)
+ @ExcelProperty("琛屾斂鍖哄煙")
+ private String arealayername;
+
+ /** 琛屾斂鍖哄煙id*/
+ @ColumnWidth(100)
+ @ExcelProperty("琛屾斂鍖哄煙ID")
+ private String arealayerno;
+
+ @ColumnWidth(100)
+ @DateTimeFormat("yyyy-MM-dd")
+ @ExcelProperty("鍒涘缓鏃堕棿")
+ private Date createTime;
+
+ @ColumnWidth(100)
+ @ExcelProperty("鎽勫儚鏈篒D")
+ private String deviceId;
+
+ @ColumnWidth(100)
+ @ExcelProperty("缂哄け鏃堕暱")
+ private Double missDuration;
+
+ @ColumnWidth(100)
+ @ExcelProperty("鍥芥爣骞冲彴ID")
+ private String platId;
+
+ @ColumnWidth(100)
+ @ExcelProperty("褰曞儚鏃堕暱")
+ private Double recordDuration;
+
+ @ColumnWidth(100)
+ @ExcelProperty("褰曞儚瀹屾暣鐘舵��")
+ private String recordStatusText;
+
+ @ColumnWidth(100)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @ExcelProperty("缁熻鏃堕棿")
+ private Date statTime;
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/form/UpdateDynamicValueForm.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/UpdateDynamicValueForm.java
new file mode 100644
index 0000000..db470f5
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/UpdateDynamicValueForm.java
@@ -0,0 +1,15 @@
+package com.ycl.platform.domain.form;
+
+import com.ycl.platform.domain.vo.DynamicColumnVO;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class UpdateDynamicValueForm {
+ @NotBlank(message = "id涓嶈兘涓虹┖")
+ private String id;
+ List<DynamicColumnVO> dynamicColumnVOList;
+
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/RecordMetaDSumResult.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/RecordMetaDSumResult.java
index f005ce1..0b06b83 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/RecordMetaDSumResult.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/RecordMetaDSumResult.java
@@ -2,6 +2,7 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycl.platform.domain.result.BaseResult;
+import com.ycl.platform.domain.vo.DynamicColumnVO;
import lombok.Data;
import org.springframework.data.mongodb.core.index.CompoundIndex;
import org.springframework.data.mongodb.core.index.CompoundIndexes;
@@ -10,6 +11,7 @@
import org.springframework.data.mongodb.core.mapping.Document;
import java.util.Date;
+import java.util.List;
import java.util.Objects;
/**
@@ -81,7 +83,6 @@
* 褰曞儚瀹屾暣鐘舵�侊紝1锛氬畬鏁达紝0锛氶棿姝囷紝-1锛氬紓甯�
*/
private String recordStatusText;
-
/**
* 缁熻鏃堕棿锛屾牸寮忎负鏃ユ湡瀛楃涓�
*/
@@ -90,6 +91,11 @@
private Date statTime;
/**
+ * 鍔ㄦ�佸垪
+ */
+ private List<DynamicColumnVO> dynamicColumnList;
+
+ /**
* 绉熸埛ID
*/
private String tenantId;
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DynamicColumnVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DynamicColumnVO.java
index b40dcaa..847e3fa 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DynamicColumnVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DynamicColumnVO.java
@@ -27,6 +27,10 @@
private String columnValue;
/** 鍏宠仈鏁版嵁鐨刬d */
private Integer refId;
+
+ /** 鍏宠仈鏁版嵁鐨刬d String绫诲瀷*/
+ private String refStringId;
+
/** value琛ㄧ殑id */
private Integer valueId;
public static DynamicColumnVO getVoByEntity(@NonNull DynamicColumn entity, DynamicColumnVO vo) {
diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/DataCenterController.java b/ycl-server/src/main/java/com/ycl/platform/controller/DataCenterController.java
index e1cd357..d7527f6 100644
--- a/ycl-server/src/main/java/com/ycl/platform/controller/DataCenterController.java
+++ b/ycl-server/src/main/java/com/ycl/platform/controller/DataCenterController.java
@@ -1,6 +1,7 @@
package com.ycl.platform.controller;
import annotation.Log;
+import com.ycl.platform.domain.form.UpdateDynamicValueForm;
import com.ycl.platform.domain.query.DataCenterQuery;
import com.ycl.platform.service.DataCenterService;
import com.ycl.platform.service.ITMonitorService;
@@ -12,6 +13,8 @@
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
/**
* 鏁版嵁涓績鎺ュ彛
@@ -147,6 +150,12 @@
return dataCenterService.deptVideoAvailabilityRate(query);
}
+ @PutMapping("/videoMinistryVideoAvailable/updateDynamicValue")
+ public Result updateDynamicValue(@RequestBody UpdateDynamicValueForm form){
+ return dataCenterService.updateDynamicValue(form);
+ }
+
+
/**
* 瑙嗛锛氬綍鍍忓彲鐢ㄧ巼
*
@@ -182,6 +191,21 @@
query.setTime();
return dataCenterService.videoImportantPointLabelingAccuracy(query);
}
+
+
+ @PostMapping("/recordingAvailability/export")
+ public void recordingAvailabilityExport(HttpServletResponse response,DataCenterQuery query) throws IOException {
+ query.setTime();
+ dataCenterService.recordingAvailabilityExport(response, query);
+ }
+
+ @PostMapping("/pointOnline/export")
+ public void pointOnlineExport(HttpServletResponse response,DataCenterQuery query) throws IOException {
+ query.setTime();
+ dataCenterService.pointOnlineExport(response,query);
+ }
+
+
/**
* 瑙嗛锛氬鍑洪噸鐐圭偣浣嶆爣娉ㄦ纭巼
*
diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/DynamicColumnController.java b/ycl-server/src/main/java/com/ycl/platform/controller/DynamicColumnController.java
index fe2b0be..6ff60ac 100644
--- a/ycl-server/src/main/java/com/ycl/platform/controller/DynamicColumnController.java
+++ b/ycl-server/src/main/java/com/ycl/platform/controller/DynamicColumnController.java
@@ -2,8 +2,8 @@
import com.ycl.system.Result;
import com.ycl.system.domain.group.Add;
-import com.ycl.system.domain.group.Update;
import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import lombok.RequiredArgsConstructor;
@@ -12,7 +12,6 @@
import io.swagger.annotations.ApiOperation;
import com.ycl.platform.service.DynamicColumnService;
import com.ycl.platform.domain.form.DynamicColumnForm;
-import com.ycl.platform.domain.query.DynamicColumnQuery;
import org.springframework.web.bind.annotation.*;
/**
@@ -54,4 +53,39 @@
public Result list() {
return dynamicColumnService.all();
}
+
+ @GetMapping("/listByTableName")
+ @ApiOperation(value = "鍒楄〃", notes = "鍒楄〃")
+ public Result listByTableName(@RequestParam @NotNull(message = "璺緞鍚嶄笉鑳戒负绌�")String pathName) {
+ String tableName = getTableNameByPathNane(pathName);
+ return dynamicColumnService.allByTableName(tableName);
+ }
+
+ @PostMapping("/addByTableName")
+ @ApiOperation(value = "娣诲姞", notes = "娣诲姞")
+ @PreAuthorize("@ss.hasPermi('dynamicColumn:add')")
+ public Result addByTableName(@RequestParam @NotNull(message = "璺緞鍚嶄笉鑳戒负绌�")String pathName,@RequestBody @Validated(Add.class) DynamicColumnForm form){
+ String tableName = getTableNameByPathNane(pathName);
+ return dynamicColumnService.addByTableName(tableName,form);
+ }
+
+ private final static String COLUMN_NAME_VIDEO = "uy_record_meta_d_sum";
+ private final static String COLUMN_NAME_POINT = "";
+
+ @PutMapping("/updateByTableName")
+ @ApiOperation(value = "淇敼", notes = "淇敼")
+ public Result updateByTableName(@RequestParam @NotNull(message = "璺緞鍚嶄笉鑳戒负绌�")String pathName, @RequestBody @NotEmpty(message = "鏁版嵁涓虹┖锛屾棤娉曚繚瀛�") List<DynamicColumnForm> columnList){
+ String tableName = getTableNameByPathNane(pathName);
+ return dynamicColumnService.updateByTableName(tableName,columnList);
+ }
+
+ private String getTableNameByPathNane(String pathName) {
+ String tableName = "";
+ if ("褰曞儚鍙敤鐜�".equals(pathName)){
+ tableName = COLUMN_NAME_VIDEO;
+ }else if("鐐逛綅鍦ㄧ嚎鐜�".equals(pathName)){
+ tableName = COLUMN_NAME_POINT;
+ }
+ return tableName;
+ }
}
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/DynamicColumnMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/DynamicColumnMapper.java
index f4afe13..a5c3ac4 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/DynamicColumnMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/DynamicColumnMapper.java
@@ -47,5 +47,7 @@
void deleteBatch(@Param("deleteList") List<Integer> deleteList);
+ List<DynamicColumnVO> getDynamicColumnByTable(@Param("tableName")String tableName,@Param("id")String id);
+ List<DynamicColumnVO> getDynamicColumnByTableName(@Param("tableName")String tableName);
}
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/DataCenterService.java b/ycl-server/src/main/java/com/ycl/platform/service/DataCenterService.java
index bad47b9..0bde438 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/DataCenterService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/DataCenterService.java
@@ -1,13 +1,17 @@
package com.ycl.platform.service;
+import com.ycl.platform.domain.entity.DynamicColumn;
+import com.ycl.platform.domain.form.UpdateDynamicValueForm;
import com.ycl.platform.domain.query.DataCenterQuery;
import com.ycl.platform.domain.result.HK.*;
import com.ycl.platform.domain.result.UY.MonitorQualifyResult;
import com.ycl.platform.domain.result.UY.OneMachineFileResult;
import com.ycl.platform.domain.result.UY.RecordMetaDSumResult;
+import com.ycl.platform.domain.vo.DynamicColumnVO;
import com.ycl.system.Result;
import jakarta.servlet.http.HttpServletResponse;
+import java.io.IOException;
import java.util.List;
/**
@@ -18,6 +22,12 @@
*/
public interface DataCenterService {
+ void recordingAvailabilityExport(HttpServletResponse response,DataCenterQuery query) throws IOException;
+
+ void pointOnlineExport(HttpServletResponse response,DataCenterQuery query) throws IOException ;
+
+ Result updateDynamicValue(UpdateDynamicValueForm form);
+
/**
* 瑙嗛锛氱偣浣嶅湪绾跨巼
*
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/DynamicColumnService.java b/ycl-server/src/main/java/com/ycl/platform/service/DynamicColumnService.java
index e42a08a..c4db5a8 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/DynamicColumnService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/DynamicColumnService.java
@@ -23,11 +23,25 @@
Result add(DynamicColumnForm form);
/**
+ * 娣诲姞
+ * @param form
+ * @return
+ */
+ Result addByTableName(String table,DynamicColumnForm form);
+
+ /**
* 淇敼
*
* @param columnList
*/
Result update(List<DynamicColumnForm> columnList);
+ /**
+ * 淇敼
+ *
+ * @param columnList
+ */
+ Result updateByTableName(String tableName,List<DynamicColumnForm> columnList);
+
/**
* id鍒犻櫎
@@ -41,4 +55,6 @@
* @return
*/
Result all();
+
+ Result allByTableName(String tableName);
}
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
index 3406bf0..65358a2 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
@@ -1,5 +1,7 @@
package com.ycl.platform.service.impl;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
@@ -9,7 +11,9 @@
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.ycl.platform.domain.entity.*;
+import com.ycl.platform.domain.excel.RecordingAvailabilityExport;
import com.ycl.platform.domain.excel.TMonitorExp;
+import com.ycl.platform.domain.form.UpdateDynamicValueForm;
import com.ycl.platform.domain.query.DataCenterQuery;
import com.ycl.platform.domain.result.HK.*;
import com.ycl.platform.domain.result.SYS.TMonitorResult;
@@ -17,8 +21,10 @@
import com.ycl.platform.domain.vo.DataCenter.BigPicUsefulVO;
import com.ycl.platform.domain.vo.DataCenter.MonitorQualifyResultVO;
import com.ycl.platform.domain.vo.DataCenter.SnapClockVO;
+import com.ycl.platform.domain.vo.DynamicColumnVO;
import com.ycl.platform.domain.vo.PointDetailVO;
import com.ycl.platform.domain.vo.home.HomeFaceVO;
+import com.ycl.platform.mapper.DynamicColumnMapper;
import com.ycl.platform.mapper.ImageResourceSecurityDetailMapper;
import com.ycl.platform.mapper.YwPointMapper;
import com.ycl.platform.service.*;
@@ -31,9 +37,11 @@
import com.ycl.utils.poi.ExcelUtil;
import constant.ApiConstants;
import constant.CheckConstants;
+import constant.RecordingAvailability;
import enumeration.general.AreaDeptEnum;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.bson.Document;
import org.springframework.data.domain.Sort;
@@ -44,6 +52,7 @@
import org.springframework.data.mongodb.core.query.TextCriteria;
import org.springframework.stereotype.Service;
+import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
@@ -60,6 +69,7 @@
*/
@Service
@RequiredArgsConstructor
+@Slf4j
public class DataCenterServiceImpl implements DataCenterService {
private final MongoTemplate mongoTemplate;
@@ -68,11 +78,139 @@
private final ICheckIndexVideoService checkIndexVideoService;
private final ICheckIndexCarService checkIndexCarService;
private final ICheckIndexFaceService checkIndexFaceService;
+ private final DynamicColumnMapper dynamicColumnMapper;
+
private final static String TIME_FIELD = "mongoCreateTime";
private static DecimalFormat DF = new DecimalFormat("#.####");
+
+ @Override
+ public void recordingAvailabilityExport(HttpServletResponse response,DataCenterQuery params) throws IOException {
+ List<String> likeFileds = Arrays.asList("deviceId", "deviceName");
+ Query query = MongoUtil.getQuery(params, "createTime", likeFileds, null);
+ //涓嬫媺妗嗗綍鍍忔儏鍐垫煡璇㈡潯浠�
+ if (params.getOption() != null) {
+ query.addCriteria(Criteria.where("recordStatus").is(params.getOption()));
+ }
+ List<RecordMetaDSumResult> resultList = mongoTemplate.find(query, RecordMetaDSumResult.class);
+ List<DynamicColumnVO> dynamicColumnVOList = dynamicColumnMapper.getDynamicColumnByTableName("uy_record_meta_d_sum");
+ //缈昏瘧琛屾斂鍖哄煙
+ resultList.forEach(item -> {
+ String areaCode = item.getArealayername().substring(0, 6);
+ AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode);
+ if (areaDeptEnum != null) item.setArealayername(areaDeptEnum.getName());
+ });
+ Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId));
+ //鎻愰偅瀹跺浐瀹氳〃澶�
+ LinkedHashSet<String> headers = new LinkedHashSet<>();
+ headers.add(RecordingAvailability.arealayername);
+ headers.add(RecordingAvailability.arealayerno);
+ headers.add(RecordingAvailability.createTime);
+ headers.add(RecordingAvailability.deviceId);
+ headers.add(RecordingAvailability.missDuration);
+ headers.add(RecordingAvailability.platId);
+ headers.add(RecordingAvailability.recordDuration);
+ headers.add(RecordingAvailability.recordStatusText);
+ headers.add(RecordingAvailability.statTime);
+
+ List<String> headersList = new LinkedList<>();
+ List<String> dynamicsHeaders = dynamicColumnMapper.getHeader("uy_record_meta_d_sum");
+
+ //娣诲姞鍔ㄦ�佽〃澶�
+ if (!org.springframework.util.CollectionUtils.isEmpty(dynamicsHeaders)) {
+ //浣跨敤閾捐〃淇濊瘉鍚庣画琛ュ厖鏁版嵁鏃惰幏鍙栨暟鎹『搴忎竴鑷�
+ headersList.addAll(dynamicsHeaders);
+ headers.addAll(headersList);
+ }
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+ SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ List<List<Object>> data = new ArrayList<>();
+ for (RecordMetaDSumResult result : resultList){
+ List<Object> row = new ArrayList<>();
+ row.add(result.getArealayername());
+ row.add(result.getArealayerno());
+ row.add(dateFormat2.format(result.getCreateTime()));
+ row.add(result.getDeviceId());
+ row.add(result.getMissDuration());
+ row.add(result.getPlatId());
+ row.add(result.getRecordDuration());
+ row.add(result.getRecordStatusText());
+ row.add(dateFormat2.format(result.getCreateTime()));
+ //娣诲姞鍔ㄦ�佸垪鏁版嵁
+ for (String header : headersList){
+ boolean flag = false;
+ List<DynamicColumnVO> columnVOS = groupByRefStringIdMap.get(result.getId());
+ if (!CollectionUtils.isEmpty(columnVOS)) {
+ for (DynamicColumnVO columnVO : columnVOS) {
+ if (header.equals(columnVO.getLabelValue())) {
+ row.add(columnVO.getColumnValue());
+ flag = true;
+ }
+ }
+ }
+ //娌℃壘鍒扮敤绌轰覆鍗犱綅
+ if (!flag) row.add("");
+ }
+ data.add(row);
+ }
+ List<List<String>> headList = new ArrayList<>();
+ for (String header : headers) {
+ headList.add(Collections.singletonList(header));
+ }
+ EasyExcel.write(response.getOutputStream())
+ .head(headList) // 璁剧疆琛ㄥご
+ .sheet("褰曞儚鍙敤鐜�") // 璁剧疆sheet鍚嶇О
+ .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+ .doWrite(data); // 鍐欏叆鏁版嵁
+ }
+
+ @Override
+ public void pointOnlineExport(HttpServletResponse response,DataCenterQuery query) throws IOException {
+
+ }
+
+ @Override
+ public Result updateDynamicValue(UpdateDynamicValueForm form) {
+ List<DynamicColumnVO> list = form.getDynamicColumnVOList();
+
+ if (CollectionUtils.isEmpty(list) || StringUtils.isEmpty(form.getId())) {
+ throw new RuntimeException("淇敼鑷畾涔夊垪鐨勪紶鍏ュ�间负null鎴栦紶鍏d涓簄ull");
+ }
+ List<DynamicColumnValue> updateList = new ArrayList<>();
+ List<DynamicColumnValue> addList = new ArrayList<>();
+
+ for (DynamicColumnVO dynamicColumnVO : list){
+ if(dynamicColumnVO.getColumnValue() == null){
+ continue;
+ }
+ DynamicColumnValue dynamicColumnValue = new DynamicColumnValue();
+ dynamicColumnValue.setColumnValue(dynamicColumnVO.getColumnValue());
+ dynamicColumnValue.setDynamicColumnId(dynamicColumnVO.getId());
+ dynamicColumnValue.setRefStringId(form.getId());
+ dynamicColumnValue.setRefId(0);
+ if(dynamicColumnVO.getValueId() == null){
+ addList.add(dynamicColumnValue);
+ }else {
+ dynamicColumnValue.setId(dynamicColumnVO.getValueId());
+ updateList.add(dynamicColumnValue);
+ }
+ }
+ log.error("addList:{}",addList);
+ log.error("updateList:{}",updateList);
+ if (CollectionUtils.isNotEmpty(addList)){
+ dynamicColumnMapper.saveBatch(addList);
+ }
+ if (CollectionUtils.isNotEmpty(updateList)) {
+ dynamicColumnMapper.updateBatch(updateList);
+ }
+ return Result.ok("淇敼鎴愬姛");
+
+
+
+ }
/**
* 瑙嗛锛氱偣浣嶅湪绾跨巼
@@ -798,6 +936,7 @@
* @return
*/
@Override
+
public Result videoAvailabilityRate(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("deviceId", "deviceName");
Query query = MongoUtil.getQuery(params, "createTime", likeFileds, null);
@@ -808,11 +947,18 @@
long total = mongoTemplate.count(query, RecordMetaDSumResult.class);
MongoUtil.setPage(query, params, "createTime");
List<RecordMetaDSumResult> resultList = mongoTemplate.find(query, RecordMetaDSumResult.class);
+ //鏌ヨ鍔ㄦ�佸垪鏁版嵁
+ //鏌ヨ鍔ㄦ�佸垪鏁版嵁鏇村叿id鏌ヨ
+// List<DynamicColumnVO> dynamicColumnNames = dynamicColumnMapper.getDynamicColumnByTableName("uy_record_meta_d_sum");
//缈昏瘧琛屾斂鍖哄煙
resultList.forEach(item -> {
String areaCode = item.getArealayername().substring(0, 6);
AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode);
if (areaDeptEnum != null) item.setArealayername(areaDeptEnum.getName());
+
+ List<DynamicColumnVO> list = dynamicColumnMapper.getDynamicColumnByTable("uy_record_meta_d_sum",item.getId());
+ item.setDynamicColumnList(list);
+
});
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
@@ -859,12 +1005,15 @@
resultCount.add(0, totalCount + "");
BigDecimal onlineRate = BigDecimal.ZERO;
+// 1锛氬畬鏁� 0锛氶棿姝� -1锛氬紓甯� |
if (!StringUtils.isEmpty(resultCount.get(0)) && !"0".equals(resultCount.get(0))) {
+ //resultCount.get(0)
onlineRate = new BigDecimal(resultCount.get(1)).divide(new BigDecimal(resultCount.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
resultCount.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
+ log.error("resultCount:{}",resultCount.get(3));
map.put("count", resultCount);
map.put("list", resultList);
return Result.ok().data(map).total(total);
@@ -2973,6 +3122,10 @@
sampleCount = doc.getInteger("sampleCount");
expCount = doc.getInteger("expCount");
}
+
+
+ //鏂版瀯寤鸿仛鍚堟煡璇㈢绾挎椂闂�
+
List<String> countList = new ArrayList<>();
// 缁熻鏁�
@@ -2995,6 +3148,8 @@
onlineRate = new BigDecimal(sampleCount-expCount).divide(new BigDecimal(sampleCount), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
countList.add(this.remove0(onlineRate));
+
+
HashMap<String, Object> map = new HashMap<>();
map.put("count", countList);
map.put("list", voList);
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/DynamicColumnServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/DynamicColumnServiceImpl.java
index b8bca5c..82e0c4d 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/DynamicColumnServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/DynamicColumnServiceImpl.java
@@ -33,6 +33,8 @@
private final static String TABLE_NAME = "t_yw_point";
+
+
/**
* 娣诲姞
* @param form
@@ -55,6 +57,23 @@
return Result.ok("娣诲姞鎴愬姛");
}
+ @Override
+ public Result addByTableName(String tableName,DynamicColumnForm form) {
+ Long num = new LambdaQueryChainWrapper<>(baseMapper)
+ .eq(DynamicColumn::getLabelValue, form.getLabelValue())
+ .eq(DynamicColumn::getTableName, tableName)
+ .count();
+ if (num > 0) {
+ throw new RuntimeException("鍒楀悕绉颁笉鑳介噸澶�");
+ }
+ DynamicColumn entity = DynamicColumnForm.getEntityByForm(form, null);
+ entity.setPropName(IdUtils.randomNO(new Date()));
+ entity.setCreateTime(new Date());
+ entity.setTableName(tableName);
+ baseMapper.insert(entity);
+ return Result.ok("娣诲姞鎴愬姛");
+ }
+
/**
* 淇敼
*
@@ -68,6 +87,28 @@
} else {
Long num = new LambdaQueryChainWrapper<>(baseMapper)
.eq(DynamicColumn::getTableName, TABLE_NAME)
+ .eq(DynamicColumn::getLabelValue, column.getLabelValue())
+ .ne(DynamicColumn::getId, column.getId())
+ .count();
+ if (num == 0) {
+ new LambdaUpdateChainWrapper<>(baseMapper)
+ .eq(DynamicColumn::getId, column.getId())
+ .set(DynamicColumn::getLabelValue, column.getLabelValue())
+ .update();
+ }
+ }
+ });
+ return Result.ok("淇濆瓨鎴愬姛");
+ }
+
+ @Override
+ public Result updateByTableName(String tableName, List<DynamicColumnForm> columnList) {
+ columnList.stream().filter(item -> StringUtils.hasText(item.getLabelValue())).forEach(column -> {
+ if (Objects.isNull(column.getId())) {
+ this.addByTableName(tableName,column);
+ } else {
+ Long num = new LambdaQueryChainWrapper<>(baseMapper)
+ .eq(DynamicColumn::getTableName, tableName)
.eq(DynamicColumn::getLabelValue, column.getLabelValue())
.ne(DynamicColumn::getId, column.getId())
.count();
@@ -102,6 +143,20 @@
public Result all() {
List<DynamicColumn> entities = new LambdaQueryChainWrapper<>(baseMapper)
.orderByAsc(DynamicColumn::getCreateTime)
+ .eq(DynamicColumn::getTableName,"t_yw_point")
+ .list();
+ List<DynamicColumnVO> vos = entities.stream()
+ .map(entity -> DynamicColumnVO.getVoByEntity(entity, null))
+ .collect(Collectors.toList());
+ return Result.ok().data(vos);
+ }
+
+
+ @Override
+ public Result allByTableName(String tableName) {
+ List<DynamicColumn> entities = new LambdaQueryChainWrapper<>(baseMapper)
+ .eq(DynamicColumn::getTableName,tableName)
+ .orderByAsc(DynamicColumn::getCreateTime)
.list();
List<DynamicColumnVO> vos = entities.stream()
.map(entity -> DynamicColumnVO.getVoByEntity(entity, null))
diff --git a/ycl-server/src/main/resources/mapper/zgyw/DynamicColumnMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/DynamicColumnMapper.xml
index 3a5bce8..2f1d912 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/DynamicColumnMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/DynamicColumnMapper.xml
@@ -60,9 +60,9 @@
</select>
<insert id="saveBatch">
- insert into t_dynamic_column_value (dynamic_column_id,column_value,ref_id) values
+ insert into t_dynamic_column_value (dynamic_column_id,column_value,ref_id,ref_string_id) values
<foreach collection="insertList" item="item" separator=",">
- (#{item.dynamicColumnId},#{item.columnValue},#{item.refId})
+ (#{item.dynamicColumnId},#{item.columnValue},#{item.refId},#{item.refStringId})
</foreach>
</insert>
<update id="updateBatch">
@@ -91,4 +91,30 @@
#{id}
</foreach>
</select>
+
+ <resultMap id="dynamicColumnMap" type="com.ycl.platform.domain.vo.DynamicColumnVO">
+ <result column="prop_name" property="propName"/>
+ <result column="label_value" property="labelValue"/>
+ <result column="column_value" property="columnValue"/>
+ <result column="ref_string_id" property="refStringId"/>
+ <result column="value_id" property="valueId"/>
+ </resultMap>
+
+ <select id="getDynamicColumnByTable" resultMap="dynamicColumnMap">
+ SELECT
+ *,
+ dcv.id as value_id
+ FROM
+ t_dynamic_column dc
+ LEFT JOIN t_dynamic_column_value dcv ON dc.id = dcv.dynamic_column_id and dcv.ref_String_id = #{id} WHERE dc.table_name = #{tableName}
+
+ </select>
+
+ <select id="getDynamicColumnByTableName" resultMap="dynamicColumnMap">
+ select *,dcv.id as value_id
+ from t_dynamic_column_value dcv
+ left join t_dynamic_column dc
+ on dc.id = dcv.dynamic_column_id
+ where dc.table_name =#{tableName}
+ </select>
</mapper>
--
Gitblit v1.8.0