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