From 8f2e8522daf081ad4da027c39a776fdd9483b97e Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期一, 15 九月 2025 15:20:51 +0800
Subject: [PATCH] 新需求
---
ycl-pojo/src/main/java/com/ycl/platform/domain/excel/CalculateExport.java | 2
ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java | 27 +++++++++
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckScore.java | 2
ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml | 11 +++
ycl-pojo/src/main/java/com/ycl/platform/domain/query/HomeQuery.java | 7 ++
ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java | 6 +-
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | 18 +++++
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml | 3 +
ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java | 52 +++++++++++++++++
9 files changed, 120 insertions(+), 8 deletions(-)
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckScore.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckScore.java
index 94b02f6..c3e06c5 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckScore.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckScore.java
@@ -12,7 +12,7 @@
import java.util.List;
/**
- * 鑰冩牳绉垎鏄庣粏瀵硅薄 t_check_score
+ * 鑰冩牳绉垎鏄庣粏瀵硅薄
*
* @author ruoyi
* @date 2024-04-22
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/excel/CalculateExport.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/excel/CalculateExport.java
index e8b6847..cd80c88 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/excel/CalculateExport.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/excel/CalculateExport.java
@@ -44,7 +44,7 @@
private Integer num;
/**
- * 鍒嗘暟
+ *
*/
@ExcelProperty({"鑷础甯傚叕鍏辫棰戠洃鎺х郴缁熺画缁村悎鍚�", "鍒嗘暟"})
private BigDecimal score;
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/HomeQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/HomeQuery.java
index 6edf28e..4f269a2 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/HomeQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/HomeQuery.java
@@ -40,4 +40,11 @@
* 鏁版嵁绫诲瀷1/2 绱鏁版嵁/姣忔棩鏁版嵁
*/
private Integer category;
+
+ /**
+ *
+ * 鍖哄煙
+ */
+ private String area;
+
}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java
index 2b76634..a825fc7 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java
@@ -1,11 +1,14 @@
package com.ycl.platform.domain.query;
+import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycl.platform.base.AbsQuery;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.util.Date;
import java.util.List;
/**
@@ -44,5 +47,29 @@
@ApiModelProperty("鏁呴殰绫诲瀷")
private List<String> errorTypeList;
+ /**
+ * 鎶ュ寮�濮嬫椂鏃�
+ */
+ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date reportTimeStart;
+ /**
+ * 鎶ュ缁撴潫鏃堕棿
+ */
+ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date reportTimeEnd;
+ /**
+ * 鏈夋晥寮�濮嬫椂闂�
+ */
+ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date effectTimeStart;
+ /**
+ * 鏈夋晥缁撴潫鏃堕棿
+ */
+ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date effectTimeEnd;
}
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
index 7e514d4..bf361f3 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
@@ -179,7 +179,7 @@
}
}
//鍒嗘暟淇濈暀涓�浣嶅皬鏁�
- checkScores.stream().forEach(item -> item.setScore(item.getScore().setScale(1, RoundingMode.HALF_UP)));
+ checkScores.stream().forEach(item -> item.setScore(item.getScore().setScale(3, RoundingMode.HALF_UP)));
Map<Long, List<CheckScore>> map = checkScores.stream().collect(Collectors.groupingBy(CheckScore::getDeptId));
for (Map.Entry<Long, List<CheckScore>> entry : map.entrySet()) {
List<CheckScore> tempList = getCheckScores(entry);
@@ -205,13 +205,13 @@
if (!hasCar){
CheckScore car = new CheckScore();
car.setExamineCategory((short) 2);
- car.setScore(new BigDecimal("0.0"));
+ car.setScore(new BigDecimal("0.00"));
tempList.add(car);
}
if (!hasFace){
CheckScore face = new CheckScore();
face.setExamineCategory((short) 3);
- face.setScore(new BigDecimal("0.0"));
+ face.setScore(new BigDecimal("0.00"));
tempList.add(face);
}
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
index e450615..625dd78 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
@@ -71,6 +71,7 @@
import java.util.*;
import java.util.concurrent.*;
import java.util.function.Function;
+import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
@@ -1269,6 +1270,7 @@
@Override
public Map<String, Object> videoHome(HomeQuery monitorQuery) throws ParseException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
List<HomeVideoVO> results = new ArrayList<>();
+
String month = monitorQuery.getDate();
if (StringUtils.isEmpty(month)) {
//濡傛灉涓虹┖鏌ユ湰鏈堢殑鏁版嵁
@@ -1295,13 +1297,30 @@
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("uy_record_meta_d_sum");
Integer examineTag = monitorQuery.getExamineTag();
+ String arealayerno = monitorQuery.getArea();
Document matchConditions = new Document("statTime", new Document("$gte", startDate).append("$lte", endDate));
// 鏍规嵁examineTag鐨勫�煎姩鎬佹坊鍔犻澶栫殑鏉′欢
if (examineTag != null && examineTag.equals(1)) {
matchConditions.append("provinceTag", true);
} else if (examineTag != null && examineTag.equals(2)) {
matchConditions.append("deptTag", true);
+ } else if(StringUtils.isNotBlank(arealayerno)){
+ matchConditions.append("arealayerno",
+ new Document("$regex", "^" + arealayerno));
}
+ Document noExpr = new Document("$and", Arrays.asList(
+ new Document("$gte", Arrays.asList(new Document("$strLenCP", "$no"), 3)),
+ new Document("$ne", Arrays.asList(
+ new Document("$substrCP", Arrays.asList(
+ "$no",
+ new Document("$subtract", Arrays.asList(new Document("$strLenCP", "$no"), 3)),
+ 1
+ )),
+ "3"
+ ))
+ ));
+// 姝g‘娣诲姞$expr鏉′欢锛堥敭涓�"$expr"锛屽�间负涓婇潰瀹氫箟鐨勬潯浠讹級
+ matchConditions.append("$expr", noExpr);
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
new Document("$match", matchConditions),
@@ -1337,6 +1356,7 @@
homeVideoVO.setIntegrityNum(doc.getInteger("normalCount"));
homeVideoVO.setLoseNum(doc.getInteger("loseCount"));
homeVideoVO.setErrNum(doc.getInteger("errCount"));
+
results.add(homeVideoVO);
}
@@ -1350,8 +1370,24 @@
onlineMatch.add(new Document("provinceTag", true));
} else if (examineTag != null && examineTag.equals(2)) {
onlineMatch.add(new Document("deptTag", true));
- }
+ } else if(StringUtils.isNotBlank(arealayerno)){
+ Document noStartsWith = new Document("no", new Document("$regex", "^" + arealayerno));
+ // 鏋勫缓鍊掓暟绗笁浣嶄笉鏄�3鐨勬潯浠�
+ Document noThirdLastNot3 = new Document("$expr", new Document("$and", Arrays.asList(
+ new Document("$gte", Arrays.asList(new Document("$strLenCP", "$no"), 3)),
+ new Document("$ne", Arrays.asList(
+ new Document("$substrCP", Arrays.asList(
+ "$no",
+ new Document("$subtract", Arrays.asList(new Document("$strLenCP", "$no"), 3)),
+ 1
+ )),
+ "3"
+ ))
+ )));
+ // 灏嗕袱涓潯浠剁敤$and缁勫悎鍚庢坊鍔犲埌鏉′欢鍒楄〃
+ onlineMatch.add(new Document("$and", Arrays.asList(noStartsWith, noThirdLastNot3)));
+ }
// 鏋勫缓鑱氬悎绠¢亾
List<Document> onlinePipeline = Arrays.asList(
new Document("$match", new Document("$and", onlineMatch)),
@@ -1365,6 +1401,10 @@
))
)
);
+ //鎺掗櫎鍗″彛闆嗗悎
+
+
+
// 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
AggregateIterable<Document> onlineResult = onlineCollection.aggregate(onlinePipeline);
for (Document doc : onlineResult) {
@@ -1496,10 +1536,13 @@
Integer examineTag = monitorQuery.getExamineTag();
// 鏋勫缓鍩烘湰鐨�$match鏉′欢
List<Document> matchConditions = new ArrayList<>();
+ String arealayerno = monitorQuery.getArea();
matchConditions.add(new Document("mongoCreateTime", new Document("$gte", startDate).append("$lte", endDate)));
matchConditions.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
if (examineTag != null && examineTag.equals(1)) {
matchConditions.add(new Document("provinceTag", true));
+ }else if(StringUtils.isNotBlank(arealayerno)){
+ matchConditions.add(new Document("orgCode",new Document("$eq", arealayerno)));
}
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -1524,6 +1567,8 @@
onlineMatch.add(new Document("monitorType", new Document("$regex", "2")));
if (examineTag != null && examineTag.equals(1)) {
onlineMatch.add(new Document("provinceTag", true));
+ }else if(StringUtils.isNotBlank(arealayerno)){
+ onlineMatch.add(new Document("no", new Document("$regex", "^" + arealayerno)));
}
// 鏋勫缓鑱氬悎绠¢亾
List<Document> onlinePipeline = Arrays.asList(
@@ -1602,6 +1647,7 @@
calendar.add(Calendar.DAY_OF_MONTH, -1);
// 鑾峰彇鏈堜唤鏈�鍚庝竴澶╃殑Date
Date endDate = calendar.getTime();
+ String arealayerno = monitorQuery.getArea();
//mongo鏌ユ姄鎷嶉噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("hk_snapshot_data_monitor");
@@ -1612,6 +1658,8 @@
matchConditions.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_FACE)));
if (examineTag != null && examineTag.equals(1)) {
matchConditions.add(new Document("provinceTag", true));
+ }else if(StringUtils.isNotBlank(arealayerno)){
+ matchConditions.add(new Document("orgCode",new Document("$eq", arealayerno)));
}
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -1638,6 +1686,8 @@
onlineMatch.add(new Document("monitorType", new Document("$regex", "3")));
if (examineTag != null && examineTag.equals(1)) {
onlineMatch.add(new Document("provinceTag", true));
+ }else if(StringUtils.isNotBlank(arealayerno)){
+ onlineMatch.add(new Document("no", new Document("$regex", "^" + arealayerno)));
}
// 鏋勫缓鑱氬悎绠¢亾
List<Document> onlinePipeline = Arrays.asList(
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
index cf248f7..a138de8 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -119,7 +119,14 @@
WorkOrderServiceImpl self = applicationContext.getBean(WorkOrderServiceImpl.class);
return self.batchAddWorkOrder(workOrderList);
}
-
+ private boolean isSameDay(Date date1, Date date2) {
+ if (date1 == null || date2 == null) {
+ return false;
+ }
+ LocalDate localDate1 = date1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+ LocalDate localDate2 = date2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+ return localDate1.isEqual(localDate2);
+ }
@Transactional(rollbackFor = Exception.class)
public Boolean batchAddWorkOrder(List<WorkOrder> workOrderList) {
int total = workOrderList.size();
@@ -164,6 +171,15 @@
for (WorkOrder workOrder : workOrderList) {
WorkOrder databaseWorkOrder = mapping.get(workOrder.getSerialNumber());
if (Objects.nonNull(databaseWorkOrder)) {
+ //鍒ゆ柇鏄惁鏄粖澶╃殑宸ュ崟
+ if (!isSameDay(databaseWorkOrder.getCreateTime(), now)) {
+ // 鑻ヤ负鍓嶄竴澶╃殑宸ュ崟锛屼笉鏇存柊锛岀洿鎺ュ綋浣滄柊宸ュ崟鏂板
+ workOrder.setCreateTime(now);
+ workOrder.setUpdateTime(now);
+ waitAddList.add(workOrder);
+ continue; // 璺宠繃鍚庣画鐨勬洿鏂伴�昏緫
+ }
+
List<String> errorNameList = databaseWorkOrder.getErrorTypeList();
List<String> errorTypes = workOrder.getErrorTypeList();
if (errorNameList.containsAll(errorTypes)) {
diff --git a/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
index 92adff2..814d354 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
@@ -37,7 +37,7 @@
LEFT JOIN t_yw_point pt ON r.serial_number = pt.serial_number and pt.deleted = 0
INNER JOIN t_report_error_type ret ON ret.report_id = r.id and ret.deleted = 0 <if test="query.errorTypeList != null and query.errorTypeList.size() > 0">
AND ret.error_type in <foreach collection="query.errorTypeList" open="(" separator="," close=")" item="errorType">#{errorType}</foreach>
- </if>
+ </if>
WHERE
r.deleted = 0
<if test="query.reportType != null and query.reportType != ''">
@@ -52,6 +52,15 @@
<if test="query.keyword != null and query.keyword != ''">
AND (pt.point_name like concat('%', #{query.keyword}, '%') OR p.yw_person_name like concat('%', #{query.keyword}, '%'))
</if>
+ <if test="query.reportTimeStart != null and query.reportTimeEnd != null">
+ AND r.create_time BETWEEN #{query.reportTimeStart} AND #{query.reportTimeEnd}
+ </if>
+ <if test="query.effectTimeStart != null">
+ AND r.begin_create_time >= #{query.effectTimeStart}
+ </if>
+ <if test="query.effectTimeEnd != null">
+ AND r.end_create_time <= #{query.effectTimeEnd}
+ </if>
GROUP BY
r.id, r.report_materials, r.create_time, r.report_type, r.report_content, r.status, r.serial_number,
r.begin_create_time,
diff --git a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
index 946e9e9..4d3f316 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -414,6 +414,9 @@
<if test="deptTag!=null">
and p.dept_tag = #{deptTag}
</if>
+ <if test="address != null">
+ and p.dept_id = #{address}
+ </if>
${params.dataScope}
</where>
</select>
--
Gitblit v1.8.0