Browse Source

Merge branch 'v4.0.1' into v4.1.0

lixing 2 years ago
parent
commit
161496ee6c

+ 32 - 22
src/main/java/com/persagy/apm/alarmservice/group/alarmrecord/controller/AlarmRecordController.java

@@ -207,7 +207,7 @@ public class AlarmRecordController {
         String treatState = EnumAlarmTreatState.DONE.getType();
         List<String> recordIds = closeAlarmRecordDTO.getIds();
 
-        return updateAlarmRecordTreatState(treatMode, treatState,null,null, recordIds);
+        return updateAlarmRecordTreatState(treatMode, treatState, null, null, recordIds);
     }
 
     /**
@@ -220,7 +220,8 @@ public class AlarmRecordController {
      * @author lixing
      * @version V1.0 2021/9/20 7:25 下午
      */
-    private CommonResult<AlarmRecordIdsItem> updateAlarmRecordTreatState(String treatMode, String treatState,
+    private CommonResult<AlarmRecordIdsItem> updateAlarmRecordTreatState(
+            String treatMode, String treatState,
             String orderId, String orderState, List<String> recordIds) throws Exception {
         AlarmRecordIdsItem alarmRecordIdsItem = new AlarmRecordIdsItem();
 
@@ -234,10 +235,10 @@ public class AlarmRecordController {
             updateAlarmRecordDTO.setId(recordId);
             updateAlarmRecordDTO.setTreatMode(Integer.valueOf(treatMode));
             updateAlarmRecordDTO.setTreatState(Integer.valueOf(treatState));
-            if (!StringUtils.isEmpty(orderId)){
+            if (!StringUtils.isEmpty(orderId)) {
                 updateAlarmRecordDTO.setOrderId(orderId);
             }
-            if (!StringUtils.isEmpty(orderState)){
+            if (!StringUtils.isEmpty(orderState)) {
                 updateAlarmRecordDTO.setOrderState(orderState);
             }
             updateAlarmRecordDTOList.add(updateAlarmRecordDTO);
@@ -254,12 +255,21 @@ public class AlarmRecordController {
     @PostMapping("/convert_work_order")
     public CommonResult<AlarmRecordIdsItem> alarmRecordConvertWorkOrder(
             @Valid @RequestBody AlarmRecordConvertWorkOrderDTO alarmRecordConvertWorkOrderDTO) throws Exception {
+        // 判断报警是否已经转工单
+        List<String> recordIds = alarmRecordConvertWorkOrderDTO.getIds();
+        QueryAlarmRecordDTO queryAlarmRecordDTO = new QueryAlarmRecordDTO();
+        queryAlarmRecordDTO.setId(recordIds);
+        DmpResult<List<AlarmRecordItem>> queryResult = alarmRecordService.query(queryAlarmRecordDTO);
+        List<AlarmRecordItem> alarmRecordItems = queryResult.getData();
+        if (alarmRecordItems.stream().anyMatch(alarmRecordItem -> alarmRecordItem.getOrderId() != null)) {
+            throw new RuntimeException("报警已经转过工单");
+        }
+
         // 报警处理方式更新为转工单,报警状态更新为处理中
         String treatMode = EnumAlarmTreatMode.ORDER.getType();
         String treatState = EnumAlarmTreatState.HANDLING.getType();
-        List<String> recordIds = alarmRecordConvertWorkOrderDTO.getIds();
 
-        return updateAlarmRecordTreatState(treatMode, treatState,alarmRecordConvertWorkOrderDTO.getOrderId(),alarmRecordConvertWorkOrderDTO.getOrderState(), recordIds);
+        return updateAlarmRecordTreatState(treatMode, treatState, alarmRecordConvertWorkOrderDTO.getOrderId(), alarmRecordConvertWorkOrderDTO.getOrderState(), recordIds);
     }
 
 
@@ -272,7 +282,7 @@ public class AlarmRecordController {
         String treatState = EnumAlarmTreatState.DONE.getType();
         List<String> recordIds = ignoreAlarmRecordDTO.getIds();
 
-        return updateAlarmRecordTreatState(treatMode, treatState,null,null, recordIds);
+        return updateAlarmRecordTreatState(treatMode, treatState, null, null, recordIds);
     }
 
     @ApiOperation(value = "报警详情")
@@ -343,9 +353,9 @@ public class AlarmRecordController {
     /**
      * 下载报警记录列表
      *
-     * @param response            response对象
-     * @param enumDownloadAlarmListType   列表类型
-     * @param alarmRecordItemVOList 要下载的列表
+     * @param response                  response对象
+     * @param enumDownloadAlarmListType 列表类型
+     * @param alarmRecordItemVOList     要下载的列表
      * @author lixing
      * @version V1.0 2021/10/19 7:22 下午
      */
@@ -387,18 +397,18 @@ public class AlarmRecordController {
     @PostMapping("/test")
     public void test() {
         groupManagementService.getEquipList(null, "ACCCOT");
-//        AddAlarmRecordDTO addAlarmRecordDTO = new AddAlarmRecordDTO();
-//        addAlarmRecordDTO.setId("1234");
-//        addAlarmRecordDTO.setTriggerTime(new Date());
-//        addAlarmRecordDTO.setObjId("123");
-//        addAlarmRecordDTO.setName("test");
-//        addAlarmRecordDTO.setItemCode("123");
-//        addAlarmRecordDTO.setLevel("1");
-//        try {
-//            alarmRecordService.create(addAlarmRecordDTO);
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//        }
+        //        AddAlarmRecordDTO addAlarmRecordDTO = new AddAlarmRecordDTO();
+        //        addAlarmRecordDTO.setId("1234");
+        //        addAlarmRecordDTO.setTriggerTime(new Date());
+        //        addAlarmRecordDTO.setObjId("123");
+        //        addAlarmRecordDTO.setName("test");
+        //        addAlarmRecordDTO.setItemCode("123");
+        //        addAlarmRecordDTO.setLevel("1");
+        //        try {
+        //            alarmRecordService.create(addAlarmRecordDTO);
+        //        } catch (Exception e) {
+        //            e.printStackTrace();
+        //        }
     }
 }
 

+ 30 - 12
src/main/java/com/persagy/apm/alarmservice/group/alarmrecord/service/AlarmRecordWrapper.java

@@ -50,6 +50,9 @@ public class AlarmRecordWrapper {
     @Autowired
     AlarmRecordServiceImpl alarmRecordService;
 
+    // 因经常查询报警类型,将报警类型放入内存缓存中
+    Map<String, SimpleObjVO> alarmItemMap = new HashMap<>();
+
     /**
      * 获取报警类型编码和名称的映射
      *
@@ -60,20 +63,35 @@ public class AlarmRecordWrapper {
      * @version V1.0 2021/9/20 4:31 下午
      */
     public Map<String, SimpleObjVO> getAlarmItemMap(List<String> itemCodes) throws Exception {
-        Map<String, SimpleObjVO> alarmItemMap = new HashMap<>();
-        QueryAlarmItemDTO queryAlarmItemDTO = new QueryAlarmItemDTO();
-        queryAlarmItemDTO.setCode(itemCodes);
-        DmpResult<List<AlarmItem>> alarmItemsResult = alarmItemService.query(queryAlarmItemDTO);
-        List<AlarmItem> alarmItems = alarmItemsResult.getData();
-        if (CollectionUtils.isEmpty(alarmItems)) {
+        if (CollectionUtils.isEmpty(itemCodes)) {
+            return new HashMap<>();
+        }
 
+        Map<String, SimpleObjVO> resultMap = new HashMap<>();
+        List<String> unCachedItemCodes = new ArrayList<>();
+        for (String itemCode : itemCodes) {
+            if (alarmItemMap.containsKey(itemCode)) {
+                resultMap.put(itemCode, alarmItemMap.get(itemCode));
+            } else {
+                unCachedItemCodes.add(itemCode);
+            }
         }
-        alarmItemMap.putAll(alarmItems.stream().collect(Collectors.toMap(
-                AlarmItem::getId,
-                alarmItem -> new SimpleObjVO(alarmItem.getId(), alarmItem.getName()),
-                (k1, k2) -> k1
-        )));
-        return alarmItemMap;
+
+        if (!CollectionUtils.isEmpty(unCachedItemCodes)) {
+            QueryAlarmItemDTO queryAlarmItemDTO = new QueryAlarmItemDTO();
+            queryAlarmItemDTO.setCode(unCachedItemCodes);
+            DmpResult<List<AlarmItem>> alarmItemsResult = alarmItemService.query(queryAlarmItemDTO);
+            List<AlarmItem> alarmItems = alarmItemsResult.getData();
+            Map<String, SimpleObjVO> unCachedItems = alarmItems.stream().collect(Collectors.toMap(
+                    AlarmItem::getCode,
+                    alarmItem -> new SimpleObjVO(alarmItem.getId(), alarmItem.getName()),
+                    (k1, k2) -> k1
+            ));
+            alarmItemMap.putAll(unCachedItems);
+            resultMap.putAll(unCachedItems);
+        }
+
+        return resultMap;
     }
 
     /**

+ 1 - 1
src/main/java/com/persagy/apm/dmpalarm/dao/ShardingMapper.java

@@ -28,7 +28,7 @@ public interface ShardingMapper {
 	@Select("<script>SELECT TABLE_NAME tableName,suffix FROM ( "
 			+ "		SELECT TABLE_NAME, CONVERT(SUBSTRING_INDEX(TABLE_NAME,'_',-1),SIGNED) suffix "
 			+ "		FROM information_schema.tables  "
-			+ "		WHERE table_schema=(SELECT DATABASE()) AND TABLE_NAME LIKE CONCAT('%',#{tableNamePrefix},'%') "
+			+ "		WHERE table_schema=(SELECT DATABASE()) AND TABLE_NAME LIKE CONCAT(#{tableNamePrefix},'%') "
 			+ "		)ls "
 			+ "		<where> "
 			+ "			<if test=\"null!= startTime and startTime > 0\"> "

+ 7 - 1
src/main/java/com/persagy/apm/dmpalarm/service/impl/ShardingServiceImpl.java

@@ -9,6 +9,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 import org.apache.ibatis.type.TypeHandler;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -73,7 +74,12 @@ public class ShardingServiceImpl implements IShardingService {
 			log.error("getTableNameShardingList tableNamePrefix is empty");
 			return new ArrayList<>();
 		}
-		return shardingMapper.getTableNameShardingList(tableInfo.getTableName(), startTimeInterger, endTimeInterger);
+		List<ShardingEntity> tableNameShardingList = shardingMapper.getTableNameShardingList(tableInfo.getTableName(), startTimeInterger, endTimeInterger);
+		// 以日期结尾的表才是真正需要的表
+		tableNameShardingList = tableNameShardingList.stream().
+				filter(tableEntity -> tableEntity.getSuffix()!=0).
+				collect(Collectors.toList());
+		return tableNameShardingList;
 	}
 
 	@Override