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