From 9da24a8dfa3766cec565b092fc105f7f006de070 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期三, 21 八月 2024 11:52:25 +0800
Subject: [PATCH] 合同考核点位在线率记录
---
ycl-common/src/main/java/constant/RedisConstant.java | 3
ycl-server/src/main/java/com/ycl/task/ContractTask.java | 102 ++++++++++++
ycl-common/src/main/java/constant/CheckThreadConstants.java | 4
ycl-server/src/main/java/com/ycl/platform/mapper/ReportMapper.java | 4
ycl-server/src/main/resources/mapper/zgyw/ContractRuleRecordMapper.xml | 81 ++++++++++
ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java | 3
ycl-server/src/main/java/com/ycl/platform/mapper/ContractRuleRecordMapper.java | 65 ++++++++
ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java | 12 +
ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml | 21 ++
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleVO.java | 62 +++++++
ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java | 11
ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml | 6
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ContractRuleRecord.java | 38 ++++
ycl-server/src/main/java/com/ycl/task/MonitorTask.java | 33 +++
14 files changed, 416 insertions(+), 29 deletions(-)
diff --git a/ycl-common/src/main/java/constant/CheckThreadConstants.java b/ycl-common/src/main/java/constant/CheckThreadConstants.java
index 2f4335e..1099519 100644
--- a/ycl-common/src/main/java/constant/CheckThreadConstants.java
+++ b/ycl-common/src/main/java/constant/CheckThreadConstants.java
@@ -13,7 +13,5 @@
//杞﹁締銆佷汉鑴歌�冩牳锛岀偣浣嶅湪绾跨巼锛屽尯鍘夸笉灏戜簬40璺�
public final static Integer Check_Car_SiteOnline = 40;
public final static Integer Check_Face_SiteOnline = 40;
- //杞﹁締銆佷汉鑴稿湪绾跨巼 Redis 姣忔湀鏁版嵁涓柇娆℃暟 Hash key
- public final static String Check_Car_ViewConnect = "CarViewConnectNoData";
- public final static String Check_Face_ViewConnect = "FaceViewConnectNoData";
+
}
diff --git a/ycl-common/src/main/java/constant/RedisConstant.java b/ycl-common/src/main/java/constant/RedisConstant.java
index 2e024e8..b576a18 100644
--- a/ycl-common/src/main/java/constant/RedisConstant.java
+++ b/ycl-common/src/main/java/constant/RedisConstant.java
@@ -3,4 +3,7 @@
public class RedisConstant {
/** 涓�鏈轰竴妗g洰褰曚竴鑷寸巼 澶氬嚭鏉ョ殑璁惧 Set闆嗗悎 */
public static final String New_Monitor_Set="New_Monitor_Set";
+ //杞﹁締銆佷汉鑴稿湪绾跨巼 Redis 姣忔湀鏁版嵁涓柇娆℃暟 Hash key
+ public final static String Check_Car_ViewConnect = "CarViewConnectNoData";
+ public final static String Check_Face_ViewConnect = "FaceViewConnectNoData";
}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ContractRuleRecord.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ContractRuleRecord.java
new file mode 100644
index 0000000..96d83e9
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ContractRuleRecord.java
@@ -0,0 +1,38 @@
+package com.ycl.platform.domain.entity;
+
+import annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 鍚堝悓瑙勫垯璁板綍瀵硅薄 t_contract_rule_record
+ *
+ * @author ruoyi
+ * @date 2024-08-21
+ */
+@Data
+public class ContractRuleRecord
+{
+ private static final long serialVersionUID = 1L;
+
+ /** $column.columnComment */
+ private Long id;
+
+ /** 鍗曚綅id */
+ @Excel(name = "鍗曚綅id")
+ private Long unitId;
+
+ /** 鐐逛綅鍦ㄧ嚎鐜� */
+ @Excel(name = "鐐逛綅鍦ㄧ嚎鐜�")
+ private Integer siteOnline;
+
+ /** 鍒涘缓鏃堕棿 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+
+ private Long deleted;
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleVO.java
new file mode 100644
index 0000000..a1344e8
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleVO.java
@@ -0,0 +1,62 @@
+package com.ycl.platform.domain.vo;
+
+import enumeration.general.RuleDeductCategoryEnum;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class CalculateRuleVO {
+
+ /**
+ * id
+ */
+ private Integer id;
+
+ /**
+ * 鍚堝悓id
+ */
+ private Integer contractId;
+
+ /**
+ * 瑙勫垯鍚嶇О
+ */
+ private String ruleName;
+
+ /**
+ * 瑙勫垯鏉′欢
+ */
+ private String ruleCondition;
+
+ /**
+ * 杩濊鏈�灏忓��
+ */
+ private Double min;
+
+ /**
+ * 杩濊鏈�澶у��
+ */
+ private Double max;
+
+ /**
+ * 鎵e噺鏂瑰紡 鎵f寚瀹氬垎鏁�/鍒嗘暟涔樹互鏁伴噺/闄や互鏁伴噺鍚庝箻浠ュ垎鏁�
+ */
+ private RuleDeductCategoryEnum deductCategory;
+
+ /**
+ * 鎵i櫎鍒嗘暟
+ */
+ private Double calcFraction;
+
+ /**
+ * 褰撴柟寮忎负闄や互鏃讹紝闄や互褰撳墠瀛楁鏁伴噺
+ */
+ private Integer calcUnit;
+
+ private Date createTime;
+ private Date updateTime;
+
+ private Integer deleted;
+
+ private Integer unitId;
+}
diff --git a/ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java
index 716de5e..4abbad3 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java
@@ -11,6 +11,7 @@
import constant.ApiConstants;
import constant.CheckSnapCountConstants;
import constant.CheckThreadConstants;
+import constant.RedisConstant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
@@ -21,7 +22,10 @@
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -74,7 +78,7 @@
// 鍒ゆ柇浠婂ぉ鏄惁鏄湰鏈堢殑绗竴澶�
if (today.equals(firstDayOfMonth)) {
// 濡傛灉鏄紝鍒欐竻闄edis涓褰曚腑鏂鏁扮殑鏁版嵁
- redisTemplate.delete(CheckThreadConstants.Check_Car_ViewConnect);
+ redisTemplate.delete(RedisConstant.Check_Car_ViewConnect);
}
for (SnapshotDataMonitorResult result : list) {
TMonitorVO monitor = monitorMap.get(result.getExternalIndexCode());
@@ -156,7 +160,7 @@
}
//瑙嗗浘搴撳鎺ョǔ瀹氭��
//Redis璁板綍璇ュ尯鍘垮綋鏈堟棤鏁版嵁涓婁紶娆℃暟
- Integer noDateCount = (Integer) redisTemplate.opsForHash().get(CheckThreadConstants.Check_Car_ViewConnect, key);
+ Integer noDateCount = (Integer) redisTemplate.opsForHash().get(RedisConstant.Check_Car_ViewConnect, key);
// 濡傛灉鍊间负null锛屽垯鍒濆鍖栦负0
if (noDateCount == null) {
noDateCount = 0;
@@ -174,7 +178,7 @@
noDateCount++;
}
// 灏嗘柊鐨勫�兼斁鍥濰ash涓�
- redisTemplate.opsForHash().put(CheckThreadConstants.Check_Car_ViewConnect, key, noDateCount);
+ redisTemplate.opsForHash().put(RedisConstant.Check_Car_ViewConnect, key, noDateCount);
return checkIndexCar;
}
}
diff --git a/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java
index d9541ff..9ca280e 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java
@@ -11,10 +11,7 @@
import com.ycl.platform.service.ICheckIndexFaceService;
import com.ycl.platform.service.ITMonitorService;
import com.ycl.system.mapper.SysConfigMapper;
-import constant.ApiConstants;
-import constant.CheckConstants;
-import constant.CheckSnapCountConstants;
-import constant.CheckThreadConstants;
+import constant.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
@@ -79,7 +76,7 @@
// 鍒ゆ柇浠婂ぉ鏄惁鏄湰鏈堢殑绗竴澶�
if (today.equals(firstDayOfMonth)) {
// 濡傛灉鏄紝鍒欐竻闄edis涓褰曚腑鏂鏁扮殑鏁版嵁
- redisTemplate.delete(CheckThreadConstants.Check_Face_ViewConnect);
+ redisTemplate.delete(RedisConstant.Check_Face_ViewConnect);
}
for (SnapshotDataMonitorResult result : list) {
TMonitorVO monitor = monitorMap.get(result.getExternalIndexCode());
@@ -153,7 +150,7 @@
}
//瑙嗗浘搴撳鎺ョǔ瀹氭��
//Redis璁板綍璇ュ尯鍘垮綋鏈堟棤鏁版嵁涓婁紶娆℃暟
- Integer noDateCount = (Integer) redisTemplate.opsForHash().get(CheckThreadConstants.Check_Face_ViewConnect, key);
+ Integer noDateCount = (Integer) redisTemplate.opsForHash().get(RedisConstant.Check_Face_ViewConnect, key);
// 濡傛灉鍊间负null锛屽垯鍒濆鍖栦负0
if (noDateCount == null) {
noDateCount = 0;
@@ -171,7 +168,7 @@
noDateCount++;
}
// 灏嗘柊鐨勫�兼斁鍥濰ash涓�
- redisTemplate.opsForHash().put(CheckThreadConstants.Check_Face_ViewConnect, key, noDateCount);
+ redisTemplate.opsForHash().put(RedisConstant.Check_Face_ViewConnect, key, noDateCount);
return checkIndexFace;
}
}
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/ContractRuleRecordMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/ContractRuleRecordMapper.java
new file mode 100644
index 0000000..27a2ae8
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/ContractRuleRecordMapper.java
@@ -0,0 +1,65 @@
+package com.ycl.platform.mapper;
+
+import com.ycl.platform.domain.entity.ContractRuleRecord;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 鍚堝悓瑙勫垯璁板綍Mapper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2024-08-21
+ */
+public interface ContractRuleRecordMapper
+{
+ /**
+ * 鏌ヨ鍚堝悓瑙勫垯璁板綍
+ *
+ * @param id 鍚堝悓瑙勫垯璁板綍涓婚敭
+ * @return 鍚堝悓瑙勫垯璁板綍
+ */
+ public ContractRuleRecord selectContractRuleRecordById(Long id);
+
+ /**
+ * 鏌ヨ鍚堝悓瑙勫垯璁板綍鍒楄〃
+ *
+ * @param contractRuleRecord 鍚堝悓瑙勫垯璁板綍
+ * @return 鍚堝悓瑙勫垯璁板綍闆嗗悎
+ */
+ public List<ContractRuleRecord> selectContractRuleRecordList(ContractRuleRecord contractRuleRecord);
+
+ /**
+ * 鏂板鍚堝悓瑙勫垯璁板綍
+ *
+ * @param contractRuleRecord 鍚堝悓瑙勫垯璁板綍
+ * @return 缁撴灉
+ */
+ public int insertContractRuleRecord(ContractRuleRecord contractRuleRecord);
+
+ public void insertBatch(@Param("list") List<ContractRuleRecord> list);
+
+ /**
+ * 淇敼鍚堝悓瑙勫垯璁板綍
+ *
+ * @param contractRuleRecord 鍚堝悓瑙勫垯璁板綍
+ * @return 缁撴灉
+ */
+ public int updateContractRuleRecord(ContractRuleRecord contractRuleRecord);
+
+ /**
+ * 鍒犻櫎鍚堝悓瑙勫垯璁板綍
+ *
+ * @param id 鍚堝悓瑙勫垯璁板綍涓婚敭
+ * @return 缁撴灉
+ */
+ public int deleteContractRuleRecordById(Long id);
+
+ /**
+ * 鎵归噺鍒犻櫎鍚堝悓瑙勫垯璁板綍
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+ * @return 缁撴灉
+ */
+ public int deleteContractRuleRecordByIds(Long[] ids);
+}
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/ReportMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/ReportMapper.java
index aff5d13..1d574d4 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/ReportMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/ReportMapper.java
@@ -6,6 +6,8 @@
import com.ycl.platform.domain.query.ReportQuery;
import com.ycl.platform.domain.vo.ReportVO;
import com.ycl.platform.domain.form.ReportForm;
+
+import java.util.Date;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -29,4 +31,6 @@
* @return
*/
List<ReportVO> examineRecord(@Param("id") Integer id);
+
+ List<String> selectNumberList(String status, String date);
}
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java
index 5d73761..1ac8104 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java
@@ -5,9 +5,11 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ycl.platform.domain.entity.TContract;
import com.ycl.platform.domain.query.ContractQuery;
+import com.ycl.platform.domain.vo.CalculateRuleVO;
import com.ycl.platform.domain.vo.ContractVO;
import org.apache.ibatis.annotations.Param;
+import java.util.Date;
import java.util.List;
/**
@@ -21,4 +23,5 @@
IPage<ContractVO> getPage(IPage page, @Param("query") ContractQuery query);
+ List<CalculateRuleVO> selectByRuleName(String ruleName, String ruleCondition, Date date);
}
diff --git a/ycl-server/src/main/java/com/ycl/task/ContractTask.java b/ycl-server/src/main/java/com/ycl/task/ContractTask.java
index bb95a81..a07570c 100644
--- a/ycl-server/src/main/java/com/ycl/task/ContractTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/ContractTask.java
@@ -1,12 +1,36 @@
package com.ycl.task;
-import com.ycl.platform.mapper.TContractMapper;
-import com.ycl.platform.mapper.TMonitorMapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.mongodb.client.result.DeleteResult;
+import com.ycl.platform.domain.entity.ContractRuleRecord;
+import com.ycl.platform.domain.entity.Report;
+import com.ycl.platform.domain.entity.TMonitor;
+import com.ycl.platform.domain.entity.YwPoint;
+import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult;
+import com.ycl.platform.domain.result.UY.VideoOnlineResult;
+import com.ycl.platform.domain.vo.CalculateRuleVO;
+import com.ycl.platform.domain.vo.ContractVO;
+import com.ycl.platform.domain.vo.ReportVO;
+import com.ycl.platform.mapper.*;
+import com.ycl.utils.DateUtils;
+import constant.ApiConstants;
+import constant.RedisConstant;
+import enumeration.ContractRule;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import javax.management.monitor.Monitor;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* 鍚堝悓鑰冩牳瀹氭椂浠诲姟
@@ -17,20 +41,88 @@
@Autowired
private MongoTemplate mongoTemplate;
@Autowired
+ private RedisTemplate redisTemplate;
+ @Autowired
private TMonitorMapper monitorMapper;
@Autowired
private TContractMapper contractMapper;
+ @Autowired
+ private YwPointMapper ywPointMapper;
+ @Autowired
+ private ReportMapper reportMapper;
+ @Autowired
+ private ContractRuleRecordMapper recordMapper;
+
+ private static final Integer Online = 1;
+ private static final Integer Offline = -1;
+ private static final String AuditStatus_Pass = "1";
/**
* 鍚堝悓鑰冩牳 鍦ㄧ嚎鐜囨瘡鏃ヤ换鍔℃娴�
* 鏌ョ敓鏁堢殑鍚堝悓鍏宠仈鐨勫叕鍙革紝鑾峰彇unitId闆嗗悎
* 鏍规嵁unitId鏌ヨ瀵瑰簲鐐逛綅鑾峰彇鍚勪釜鍏徃绠$悊鐨勮澶嘔ds
* 鏌ヨ涓夌璁惧鍦ㄧ嚎涓嶅湪绾挎儏鍐碉紝灏佽涓轰竴涓猰ap<鍥芥爣鐮�,鍦ㄧ嚎鐘舵��>
- * 璁$畻姣忔棩姣忓鍏徃鐨勫湪绾跨巼瀛樺叆redis
+ * 璁$畻姣忔棩姣忓鍏徃鐨勫湪绾跨巼瀛樺叆mysql
* 鏈堝簳璁$畻骞冲潎鍊硷紝鏍规嵁鍦ㄧ嚎鐜囧拰鍚堝悓鏍囧噯鎵e噺鍒嗘暟
*/
public void onlineCheck() {
-// contractMapper.selectByRuleName();
+ List<CalculateRuleVO> ruleVos = contractMapper.selectByRuleName(ContractRule.CONTRACT_RULE_Online.getName(), null, new Date());
+ List<Integer> unitIds = ruleVos.stream().map(CalculateRuleVO::getUnitId).collect(Collectors.toList());
+ List<YwPoint> ywPoints = ywPointMapper.selectList(new QueryWrapper<YwPoint>().in("unitId", unitIds));
+ //key鏄痷nitId value鏄澶囩紪鐮侀泦鍚�
+ Map<Long, List<String>> unitMap = ywPoints.stream()
+ .collect(Collectors.groupingBy(
+ YwPoint::getUnitId,
+ Collectors.mapping(
+ YwPoint::getSerialNumber,
+ Collectors.toList()
+ )
+ ));
+ Map<String, Integer> onlineStatusMap = new HashMap<>();
+ //鏌ongo鑾峰彇璁惧鍦ㄧ嚎鎯呭喌
+ Date date = DateUtils.getDay(2024, 7, 13);
+ //杞﹁締銆佷汉鑴�
+ Query query = new Query();
+ query.addCriteria(Criteria
+ .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date)));
+ List<SnapshotDataMonitorResult> results = mongoTemplate.find(query, SnapshotDataMonitorResult.class);
+ for (SnapshotDataMonitorResult result : results) {
+ if (ApiConstants.HK_SnapCount_ResultType_Null != result.getResultType()) {
+ onlineStatusMap.put(result.getExternalIndexCode(), Online);
+ } else {
+ onlineStatusMap.put(result.getExternalIndexCode(), Offline);
+ }
+ }
+ //瑙嗛
+ Query videoQuery = new Query(Criteria
+ .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date)));
+ List<VideoOnlineResult> videoOnlineResults = mongoTemplate.find(videoQuery, VideoOnlineResult.class);
+ for (VideoOnlineResult videoOnlineResult : videoOnlineResults) {
+ onlineStatusMap.put(videoOnlineResult.getDeviceId(), videoOnlineResult.getStatus());
+ }
+ //鏌ヨ鎶ュ鍒楄〃
+ List<String> reportNumbers = reportMapper.selectNumberList(AuditStatus_Pass, DateUtils.getDate());
+ //璁$畻姣忎釜鍏徃鐨勭偣浣嶅湪绾跨巼
+ List<ContractRuleRecord> ruleRecordList = new ArrayList<>();
+ unitMap.forEach((unitId, serialNumberList) -> {
+ int totalSite = 0;
+ int onlineSite = 0;
+ for (String number : serialNumberList) {
+ //鎶ュ杩囦笉绾冲叆璁$畻
+ if (!CollectionUtils.isEmpty(reportNumbers) && reportNumbers.contains(number)) continue;
+ Integer status = onlineStatusMap.get(number);
+ totalSite++;
+ if (Online.equals(status)) {
+ onlineSite++;
+ }
+ }
+ ContractRuleRecord contractRuleRecord = new ContractRuleRecord();
+ contractRuleRecord.setSiteOnline( onlineSite / totalSite);
+ contractRuleRecord.setCreateTime(new Date());
+ contractRuleRecord.setUnitId(unitId);
+ ruleRecordList.add(contractRuleRecord);
+ });
+ //瀛樺偍缁撴灉
+ recordMapper.insertBatch(ruleRecordList);
}
-
}
diff --git a/ycl-server/src/main/java/com/ycl/task/MonitorTask.java b/ycl-server/src/main/java/com/ycl/task/MonitorTask.java
index 7941624..904cd0f 100644
--- a/ycl-server/src/main/java/com/ycl/task/MonitorTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/MonitorTask.java
@@ -21,6 +21,7 @@
import enumeration.general.AreaDeptEnum;
import enumeration.general.PointStatus;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
@@ -59,26 +60,28 @@
@Transactional(rollbackFor = Exception.class)
public void synchronize() {
log.info("寮�濮嬪悓姝ongodb涓�鏈轰竴妗e埌鏁版嵁搴�");
- Date date = DateUtils.getDay(2024,7,13);
+ Date date = DateUtils.getDay(2024, 7, 13);
Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date)));
// Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
List<MonitorQualifyResult> oneMachineFileResults = mongoTemplate.find(query, MonitorQualifyResult.class);
//鏁版嵁搴搈onitor琛ㄦ暟鎹�
Map<String, TMonitorVO> monitorVOMap = monitorMapper.selectMonitorVOList().stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
- //鍑嗗鎻掑叆璁惧琛ㄧ殑鏁版嵁
- List<TMonitor> monitorList = new ArrayList<>();
- //鍑嗗鎻掑叆鐐逛綅琛ㄧ殑鏁版嵁
- List<YwPoint> ywPointList = new ArrayList<>();
- //鏂扮殑鏁版嵁锛屽師鏁版嵁搴撲腑涓嶅瓨鍦ㄧ殑鏁版嵁
- Set<TMonitor> newMonitorList = new HashSet<>();
//鐐逛綅鏁版嵁
Map<String, YwPoint> pointMap = ywPointService.list(new QueryWrapper<YwPoint>()).stream().collect(Collectors.toMap(YwPoint::getSerialNumber, Function.identity()));
+
//閲嶇偣鐐逛綅闆嗗悎瀛楀吀(瑙f瀽SXJCJQY瀛楁)
SysDictData sysDictData = new SysDictData();
sysDictData.setDictType("platform_important_site");
List<SysDictData> DictDataList = dictDataService.selectDictDataList(sysDictData);
//閲囬泦鍖哄煙涓洪噸鐐圭偣浣嶇殑闆嗗悎
List<String> importantSite = DictDataList.stream().map(SysDictData::getDictValue).collect(Collectors.toList());
+
+ //鍑嗗鎻掑叆璁惧琛ㄧ殑鏁版嵁
+ List<TMonitor> monitorList = new ArrayList<>();
+ //鍑嗗鎻掑叆鐐逛綅琛ㄧ殑鏁版嵁
+ List<YwPoint> ywPointList = new ArrayList<>();
+ //鏂扮殑鏁版嵁锛屽師鏁版嵁搴撲腑涓嶅瓨鍦ㄧ殑鏁版嵁
+ Set<TMonitor> newMonitorList = new HashSet<>();
//鍏ㄥ勾鐣欏瓨
for (MonitorQualifyResult result : oneMachineFileResults) {
@@ -91,6 +94,22 @@
newMonitorList.add(monitor);
}
}
+ //娣诲姞鑰佹暟鎹�
+ List<String> numbers = CollectionUtils.isEmpty(monitorList) ? new ArrayList<>() : monitorList.stream().map(TMonitor::getSerialNumber).collect(Collectors.toList());
+ monitorVOMap.forEach((key, value) -> {
+ if (!numbers.contains(key)){
+ TMonitor monitor = new TMonitor();
+ BeanUtils.copyProperties(value,monitor);
+ monitorList.add(monitor);
+ }
+ });
+ List<String> points = CollectionUtils.isEmpty(ywPointList) ? new ArrayList<>() : ywPointList.stream().map(YwPoint::getSerialNumber).collect(Collectors.toList());
+ pointMap.forEach((key, value) -> {
+ if (!points.contains(key)){
+ ywPointList.add(value);
+ }
+ });
+
log.info("result闆嗗悎{},璁惧闆嗗悎{},鐐逛綅闆嗗悎{}", oneMachineFileResults.size(), monitorList.size(), ywPointList.size());
//鎻掑叆鏁版嵁搴�
if (!CollectionUtils.isEmpty(monitorList)) {
diff --git a/ycl-server/src/main/resources/mapper/zgyw/ContractRuleRecordMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/ContractRuleRecordMapper.xml
new file mode 100644
index 0000000..5ba17a2
--- /dev/null
+++ b/ycl-server/src/main/resources/mapper/zgyw/ContractRuleRecordMapper.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ycl.platform.mapper.ContractRuleRecordMapper">
+
+ <resultMap type="com.ycl.platform.domain.entity.ContractRuleRecord" id="ContractRuleRecordResult">
+ <result property="id" column="id"/>
+ <result property="unitId" column="unit_id"/>
+ <result property="siteOnline" column="site_online"/>
+ <result property="createTime" column="create_time"/>
+ <result property="deleted" column="deleted"/>
+ </resultMap>
+
+ <sql id="selectContractRuleRecordVo">
+ select id, unit_id, site_online, create_time, deleted
+ from t_contract_rule_record
+ </sql>
+
+ <select id="selectContractRuleRecordList" resultMap="ContractRuleRecordResult">
+ <include refid="selectContractRuleRecordVo"/>
+ <where>
+ <if test="unitId != null ">and unit_id = #{unitId}</if>
+ <if test="siteOnline != null ">and site_online = #{siteOnline}</if>
+ <if test="deleted != null ">and deleted = #{deleted}</if>
+ </where>
+ </select>
+
+ <select id="selectContractRuleRecordById" resultMap="ContractRuleRecordResult">
+ <include refid="selectContractRuleRecordVo"/>
+ where id = #{id}
+ </select>
+
+ <insert id="insertContractRuleRecord" useGeneratedKeys="true" keyProperty="id">
+ insert into t_contract_rule_record
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="unitId != null">unit_id,</if>
+ <if test="siteOnline != null">site_online,</if>
+ <if test="createTime != null">create_time,</if>
+ <if test="deleted != null">deleted,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="unitId != null">#{unitId},</if>
+ <if test="siteOnline != null">#{siteOnline},</if>
+ <if test="createTime != null">#{createTime},</if>
+ <if test="deleted != null">#{deleted},</if>
+ </trim>
+ </insert>
+
+ <insert id="insertBatch">
+ inner into t_contract_rule_record (unit_id,site_online,create_time)
+ values
+ <foreach collection="list" item="item" separator=",">
+ (#{item.unitId},#{item.siteOnline},#{item.createTime})
+ </foreach>
+ </insert>
+
+ <update id="updateContractRuleRecord">
+ update t_contract_rule_record
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="unitId != null">unit_id = #{unitId},</if>
+ <if test="siteOnline != null">site_online = #{siteOnline},</if>
+ <if test="createTime != null">create_time = #{createTime},</if>
+ <if test="deleted != null">deleted = #{deleted},</if>
+ </trim>
+ where id = #{id}
+ </update>
+
+ <delete id="deleteContractRuleRecordById">
+ delete
+ from t_contract_rule_record
+ where id = #{id}
+ </delete>
+
+ <delete id="deleteContractRuleRecordByIds">
+ delete from t_contract_rule_record where id in
+ <foreach item="id" collection="array" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </delete>
+</mapper>
diff --git a/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
index cc7b9e9..52bf32f 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
@@ -64,4 +64,10 @@
r.create_time DESC
</select>
+ <select id="selectNumberList" resultType="java.lang.String">
+ SELECT yp.serial_number FROM t_report r
+ LEFT JOIN t_yw_point yp ON r.point_id = yp.id
+ WHERE r.status = #{status} AND
+ #{date} between r.begin_create_time and r.end_create_time
+ </select>
</mapper>
diff --git a/ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml
index eec44b2..7c796e6 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml
@@ -15,7 +15,7 @@
<select id="getPage" resultType="com.ycl.platform.domain.vo.ContractVO">
select a.*, b.unit_name
from t_contract a
- left join t_yw_unit b on a.unit_id = b.id and b.deleted = 0
+ left join t_yw_unit b on a.unit_id = b.id and b.deleted = 0
where a.deleted = 0
<if test="query.name != null and query.name != ''">
and a.name like concat('%', #{query.name}, '%')
@@ -23,10 +23,10 @@
<if test="query.status != null and query.status != ''">
<choose>
<when test="query.status == 'ACTIVE'">
- and a.start_time < sysdate() and a.end_time > sysdate()
+ and a.start_time < sysdate() and a.end_time > sysdate()
</when>
<when test="query.status == 'NOT_START'">
- and a.start_time > sysdate()
+ and a.start_time > sysdate()
</when>
<when test="query.status == 'FINISHED'">
and a.end_time < sysdate()
@@ -36,4 +36,19 @@
order by create_time desc
</select>
+ <select id="selectByRuleName" resultType="com.ycl.platform.domain.vo.CalculateRuleVO">
+ select tc.unit_id ,tcr.*
+ from t_contract tc
+ left join t_calculate_rule tcr on tc.id = tcr.contract_id
+ <where>
+ tc.deleted =0 and #{time} between tc.start_time and tc.end_time
+ <if test="ruleName !=null and ruleName!=''">
+ tcr.rule_name = #{ruleName}
+ </if>
+ <if test="ruleCondition !=null and ruleCondition!=''">
+ tcr.rule_condition = #{ruleCondition}
+ </if>
+ </where>
+
+ </select>
</mapper>
--
Gitblit v1.8.0