From 64efb660b2c119c00432434c0f651f8996483f18 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期五, 21 二月 2025 15:51:13 +0800 Subject: [PATCH] OSD大华数据格式+数据中心重点标签统计数 --- ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | 151 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 142 insertions(+), 9 deletions(-) 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 9fe4dc9..8a08b68 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 @@ -13,6 +13,7 @@ import com.ycl.platform.domain.entity.*; import com.ycl.platform.domain.form.*; import com.ycl.platform.domain.query.*; +import com.ycl.platform.domain.result.SYS.TMonitorResult; import com.ycl.platform.domain.vo.*; import com.ycl.platform.domain.vo.screen.ScreenWorkOrderVO; import com.ycl.platform.domain.vo.screen.WorkOrderRegionVO; @@ -34,6 +35,7 @@ import com.ycl.utils.http.HttpUtils; import com.ycl.utils.redis.RedisCache; import com.ycl.utils.uuid.IdUtils; +import constant.ApiConstants; import constant.Constants; import constant.RedisConstant; import enumeration.ErrorType; @@ -78,6 +80,9 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder> implements WorkOrderService { private final YwPointService ywPointService; + private final YwPointMapper ywPointMapper; + private final TMonitorMapper monitorMapper; + private final DynamicColumnMapper dynamicColumnMapper; private final WorkOrderAuditingRecordMapper workOrderAuditingRecordMapper; private final WorkOrderAuditingRecordService workOrderAuditingRecordService; private final WorkOrderYwConditionRecordMapper workOrderYwConditionRecordMapper; @@ -345,15 +350,15 @@ List<WorkOrderYwConditionRecord> willAddMsg = new ArrayList<>(48); // 鍗冲皢瑕佹坊鍔犵殑閿欒绫诲瀷 List<WorkOrderErrorType> willAddErrorType = new ArrayList<>(96); - if(!CollectionUtils.isEmpty(inDatabaseWorkOrderList)){ + if (!CollectionUtils.isEmpty(inDatabaseWorkOrderList)) { WorkOrder workOrderInDB = inDatabaseWorkOrderList.get(0); List<String> errorNameList = workOrderInDB.getErrorTypeList(); List<String> errorTypes = entity.getErrorTypeList(); - if(errorNameList.containsAll(errorTypes)){ + if (errorNameList.containsAll(errorTypes)) { return Result.error("宸叉湁鍚岀鏁呴殰绫诲瀷宸ュ崟"); - }else { + } else { for (String errorType : errorTypes) { - if(!errorNameList.contains(errorType)){ + if (!errorNameList.contains(errorType)) { // 閿欒绫诲瀷涓嶄竴鏍凤紝灏辨柊澧炰竴涓敊璇被鍨嬶紝骞朵笖閲嶇疆宸ュ崟鐘舵�佷负寰呭鐞� WorkOrderErrorType workOrderErrorType = new WorkOrderErrorType(); workOrderErrorType.setWorkOrderNo(workOrderInDB.getWorkOrderNo()); @@ -391,7 +396,7 @@ } } return Result.ok("娣诲姞鎴愬姛"); - }else { + } else { //鏁版嵁搴撴病鏈夋鍦ㄨ繘琛岀殑宸ュ崟 //鏌edis浠婃棩宸ュ崟鏁伴噺 int workOrderNum = 0; @@ -418,7 +423,7 @@ workOrderErrorTypeService.getBaseMapper().insertWorkOrderErrorTypeList(workOrderErrorTypes); if (baseMapper.insert(entity) > 0) { return Result.ok("娣诲姞鎴愬姛"); - }else { + } else { return Result.error("娣诲姞澶辫触"); } } @@ -467,10 +472,25 @@ UrgentLevelEnum.WARNING, workOrder.getWorkOrderNo()); notifyService.save(notify); + List<WorkOrderVO> workOrderVOS = workOrderErrorTypeMapper.getErrorListByNumbers(Arrays.asList(workOrder.getWorkOrderNo())); + // 鍚屾鐐逛綅鐘舵�� if (form.getAuditingResult() == WorkOrderStatusEnum.AUDITING_SUCCESS) { ywPointService.updateRecovery(Collections.singletonList(workOrder.getSerialNumber()), 0); + //濡傛灉宸ュ崟涓虹绾垮伐鍗曢偅涔堜慨鏀圭偣浣峱ingOnline涓哄湪绾� + if (!CollectionUtils.isEmpty(workOrderVOS)) { + List<String> ips = new ArrayList<>(); + for (WorkOrderVO workOrderVO : workOrderVOS) { + if(ErrorType.DEVICE_OFFLINE.getValue().equals(workOrderVO.getErrorType())){ + ips.add(workOrderVO.getIp()); + } + } + if(!CollectionUtils.isEmpty(ips)) { + monitorMapper.batchUpdateOnline(ips, new Date(), ApiConstants.UY_OnlineSite_Online); + } + } } + return Result.ok("鎿嶄綔鎴愬姛"); } @@ -510,11 +530,30 @@ workOrder.getWorkOrderNo()); notifies.add(notify); } + notifyService.saveBatch(notifies); // 鍚屾鐐逛綅鐘舵�� if (form.getAuditingResult() == WorkOrderStatusEnum.AUDITING_SUCCESS) { ywPointService.updateRecovery(serialNumbers, 0); + //绛涢�夊嚭绂荤嚎宸ュ崟ip骞朵慨鏀瑰湪绾跨姸鎬� + if (!CollectionUtils.isEmpty(serialNumbers)) { + Map<String, List<String>> errorTypes = workOrderErrorTypeMapper.getErrorListByNumbers(workOrderNoList).stream().collect(Collectors.groupingBy( + WorkOrderVO::getIp, + Collectors.mapping( + WorkOrderVO::getErrorType, + Collectors.toList() + ) + )); + List<String> ips = new ArrayList<>(); + errorTypes.forEach((key, value) -> { + if (!CollectionUtils.isEmpty(value) && value.contains(ErrorType.DEVICE_OFFLINE.getValue())) { + ips.add(key); + } + }); + if(!CollectionUtils.isEmpty(ips)) { + monitorMapper.batchUpdateOnline(ips, new Date(), ApiConstants.UY_OnlineSite_Online); + } + } } - notifyService.saveBatch(notifies); return Result.ok("鎿嶄綔鎴愬姛"); } @@ -657,6 +696,20 @@ } if (query.getStart() != null) query.setStart(DateUtils.getDayStart(query.getStart())); if (query.getEnd() != null) query.setEnd(DateUtils.getDayEnd(query.getEnd())); + if (query.getErrorType() != null) { + List<String> errorTypeList = new ArrayList<>(); + errorTypeList.add(query.getErrorType()); + if (ErrorType.ABNORMAL_PIC.getValue().equals(query.getErrorType())) { + //List娣诲姞涔嬪墠鍑犵宸ュ崟绫诲瀷 + errorTypeList.add(ErrorType.SIGNAL_LOSS.getValue()); + errorTypeList.add(ErrorType.SCREEN_COLOR_DEVIATION.getValue()); + errorTypeList.add(ErrorType.SNOW_STORM.getValue()); + errorTypeList.add(ErrorType.STRIPE_INTERFERENCE.getValue()); + errorTypeList.add(ErrorType.SCREEN_OCCLUSION.getValue()); + errorTypeList.add(ErrorType.ABNORMAL_CLARITY.getValue()); + } + query.setErrorTypeList(errorTypeList); + } baseMapper.page(page, query); if (!CollectionUtils.isEmpty(page.getRecords())) { page.getRecords().stream().forEach(item -> { @@ -1113,6 +1166,13 @@ return Result.ok().data(workOrder); } + /** + * 宸ュ崟瀵煎嚭鐨勯�昏緫 + * 鏍囩锛氬悓涓�涓猧p鏍囩鍚堝湪涓�璧凤紝閽堝绂荤嚎宸ュ崟锛坕p鐩稿悓灏变笉浼氱敓鎴愬伐鍗曪級锛屾柟渚胯繍缁村鐞� + * + * @param query + * @return + */ @Override public List<WorkOrderVO> export(WorkOrderExportQuery query) { if (query.getUnitId() == null) { @@ -1120,8 +1180,81 @@ } if (query.getStart() != null) query.setStart(query.getStart() + " 00:00:00"); if (query.getEnd() != null) query.setEnd(query.getEnd() + " 23:59:59"); - - return baseMapper.export(query); + if (query.getErrorType() != null) { + List<String> errorTypeList = new ArrayList<>(); + errorTypeList.add(query.getErrorType()); + if (ErrorType.ABNORMAL_PIC.getValue().equals(query.getErrorType())) { + //List娣诲姞涔嬪墠鍑犵宸ュ崟绫诲瀷 + errorTypeList.add(ErrorType.SIGNAL_LOSS.getValue()); + errorTypeList.add(ErrorType.SCREEN_COLOR_DEVIATION.getValue()); + errorTypeList.add(ErrorType.SNOW_STORM.getValue()); + errorTypeList.add(ErrorType.STRIPE_INTERFERENCE.getValue()); + errorTypeList.add(ErrorType.SCREEN_OCCLUSION.getValue()); + errorTypeList.add(ErrorType.ABNORMAL_CLARITY.getValue()); + } + query.setErrorTypeList(errorTypeList); + } + List<WorkOrderVO> export = baseMapper.export(query); + if (CollectionUtils.isEmpty(export)) return new ArrayList<WorkOrderVO>(); + List<String> ips = export.stream().map(WorkOrderVO::getIp).collect(Collectors.toList()); + //鏌ュ嚭鐩稿悓ip鐨勮澶囥�佸苟鏌ュ嚭鏍囩 + List<TMonitorResult> monitorVOS = monitorMapper.getByIp(ips); + //鑾峰彇鍔ㄦ�佸垪鏁版嵁 + List<Integer> pointIds = monitorVOS.stream().map(TMonitorResult::getPointId).collect(Collectors.toList()); + List<DynamicColumnVO> dynamics = dynamicColumnMapper.getDynamicsByIds("t_yw_point", pointIds); + //琛ュ厖鍔ㄦ�佸垪鏁版嵁 + if (!CollectionUtils.isEmpty(dynamics)) { + Map<Integer, List<DynamicColumnVO>> map = dynamics.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefId)); + for (TMonitorResult tMonitorResult : monitorVOS) { + Integer pointId = tMonitorResult.getPointId(); + tMonitorResult.setDynamicColumnList(map.get(pointId)); + } + } + export.forEach(result -> { + StringBuilder dynamicTag = new StringBuilder(""); + Boolean provinceTagVideo = false; + Boolean provinceTagCar = false; + Boolean provinceTagFace = false; + Boolean importantTag = false; + Boolean importantCommandImageTag = false; + Boolean deptTag = false; + List<String> dynamicTags = new ArrayList<>(); + for (TMonitorResult tagVO : monitorVOS) { + //鐪佸巺鏍囩閫氳繃ip鍒ゆ柇 (杩愮淮瑕佹眰) + if (tagVO.getIp().equals(result.getIp())) { + if (tagVO.getProvinceTagVideo()) provinceTagVideo = true; + if (tagVO.getProvinceTagCar()) provinceTagCar = true; + if (tagVO.getProvinceTagFace()) provinceTagFace = true; + if (tagVO.getImportantTag()) importantTag = true; + if (tagVO.getImportantCommandImageTag()) importantCommandImageTag = true; + if (tagVO.getDeptTag()) deptTag = true; + } + //鍔ㄦ�佸垪鏍规嵁鍥芥爣鍒ゆ柇 + if (tagVO.getNo().equals(result.getSerialNumber())) { + //鍔ㄦ�佸垪澶勭悊鍔犲湪鏍囩閲� + if (!CollectionUtils.isEmpty(tagVO.getDynamicColumnList())) { + List<DynamicColumnVO> dynamicColumnList = tagVO.getDynamicColumnList(); + for (DynamicColumnVO dynamicColumnVO : dynamicColumnList) { + if (!dynamicTags.contains(dynamicColumnVO.getColumnValue())) + dynamicTags.add(dynamicColumnVO.getColumnValue()); + } + } + } + } + for (String tag : dynamicTags) { + dynamicTag.append(tag).append("銆�"); + } + StringBuilder tag = new StringBuilder("" + (provinceTagVideo ? "鐪佸巺瑙嗛銆�" : "") + (provinceTagCar ? "鐪佸巺杞﹁締銆�" : "") + (provinceTagFace ? "鐪佸巺浜鸿劯銆�" : "") + (importantTag ? "閲嶇偣鐐逛綅銆�" : "") + (importantCommandImageTag ? "閲嶇偣鎸囨尌鍥惧儚銆�" : "") + (deptTag ? "閮ㄧ骇銆�" : "")); + if (tag.toString().endsWith("銆�")) { + tag = new StringBuilder(tag.substring(0, tag.length() - 1)); + } + if (dynamicTag.toString().endsWith("銆�")) { + dynamicTag = new StringBuilder(dynamicTag.substring(0, dynamicTag.length() - 1)); + } + result.setTag(tag.toString()); + result.setDynamicTag(dynamicTag.toString()); + }); + return export; } /** -- Gitblit v1.8.0