Bläddra i källkod

Merge branch 'v4.1.0' of
http://39.106.8.246:3003/apm/energy-alarm-service.git into v4.1.0

Administrator 2 år sedan
förälder
incheckning
48a44124c8

+ 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;
     }
 
     /**

+ 3 - 7
src/main/java/com/persagy/apm/alarmservice/group/alarmrule/controller/GroupAlarmRuleController.java

@@ -1,9 +1,5 @@
 package com.persagy.apm.alarmservice.group.alarmrule.controller;
 
-import com.persagy.apm.alarmservice.project.alarmcondition.model.AlarmCondition;
-import com.persagy.apm.alarmservice.project.alarmcondition.model.ConvertAlarmConditionTool;
-import com.persagy.apm.alarmservice.project.alarmcondition.model.vo.AlarmConditionItemVO;
-import com.persagy.apm.alarmservice.project.alarmcondition.service.IAlarmConditionService;
 import com.persagy.apm.alarmservice.group.alarmrule.dao.GroupAlarmRuleMapper;
 import com.persagy.apm.alarmservice.group.alarmrule.model.ConvertGroupAlarmRuleTool;
 import com.persagy.apm.alarmservice.group.alarmrule.model.GroupAlarmRule;
@@ -11,6 +7,7 @@ import com.persagy.apm.alarmservice.group.alarmrule.model.dto.*;
 import com.persagy.apm.alarmservice.group.alarmrule.model.vo.GroupAlarmRuleItemVO;
 import com.persagy.apm.alarmservice.group.alarmrule.model.vo.GroupAlarmRuleListItemVO;
 import com.persagy.apm.alarmservice.group.alarmrule.service.IGroupAlarmRuleService;
+import com.persagy.apm.alarmservice.project.alarmcondition.service.IAlarmConditionService;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.service.IProjectAlarmRuleObjRelService;
 import com.persagy.apm.common.model.vo.SimpleObjVO;
 import com.persagy.apm.common.response.ApmResponseUpsertVO;
@@ -39,7 +36,6 @@ import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -68,10 +64,10 @@ public class GroupAlarmRuleController {
     @ApiOperation(value = "创建集团报警规则")
     @PostMapping("/create")
     public CommonResult<ApmResponseUpsertVO> createGroupAlarmRule(
-            @Valid @RequestBody AddGroupAlarmRuleDTO addGroupAlarmRuleDTO,HttpServletRequest request) {
+            @Valid @RequestBody AddGroupAlarmRuleDTO addGroupAlarmRuleDTO) {
         String id = null;
         try {
-            id = groupAlarmRuleService.createGroupAlarmRule(addGroupAlarmRuleDTO,request.getRequestURI());
+            id = groupAlarmRuleService.createGroupAlarmRule(addGroupAlarmRuleDTO);
         } catch (Exception e) {
             e.printStackTrace();
             return ResultHelper.failure(ResponseCode.B0001.getCode(), e.getMessage());

+ 8 - 7
src/main/java/com/persagy/apm/alarmservice/group/alarmrule/service/IGroupAlarmRuleService.java

@@ -1,14 +1,15 @@
 package com.persagy.apm.alarmservice.group.alarmrule.service;
 
-import com.persagy.apm.alarmservice.group.alarmrule.model.*;
-import com.persagy.apm.alarmservice.group.alarmrule.model.dto.*;
-
 import java.io.IOException;
 import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.persagy.apm.alarmservice.group.alarmrule.model.GroupAlarmRule;
+import com.persagy.apm.alarmservice.group.alarmrule.model.dto.AddGroupAlarmRuleDTO;
+import com.persagy.apm.alarmservice.group.alarmrule.model.dto.DeleteGroupAlarmRuleDTO;
+import com.persagy.apm.alarmservice.group.alarmrule.model.dto.GetGroupAlarmRuleDTO;
+import com.persagy.apm.alarmservice.group.alarmrule.model.dto.PageQueryGroupAlarmRuleDTO;
+import com.persagy.apm.alarmservice.group.alarmrule.model.dto.QueryGroupAlarmRuleDTO;
+import com.persagy.apm.alarmservice.group.alarmrule.model.dto.UpdateGroupAlarmRuleDTO;
 import com.persagy.apm.alarmservice.group.management.model.equip.vo.EquipItem;
 
 /**
@@ -28,7 +29,7 @@ public interface IGroupAlarmRuleService  {
     * @version V1.0 2021-09-08 22:35:45
      * @param requestUri 
     */
-    public String createGroupAlarmRule(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO, String requestUri) throws Exception;
+    public String createGroupAlarmRule(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO) throws Exception;
     
     /**
     * 集团报警规则详情

+ 7 - 3
src/main/java/com/persagy/apm/alarmservice/group/alarmrule/service/impl/GroupAlarmRuleServiceImpl.java

@@ -45,6 +45,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import javax.servlet.http.HttpServletRequest;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -79,7 +80,9 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
 	@Autowired
 	private IProjectAlarmRuleObjRelService projectAlarmRuleObjRelService;
 	@Autowired
-	private DynamicDataSourceHandler dataSourceHandler;
+	private DynamicDataSourceHandler dynamicDataSourceHandler;
+	@Autowired
+	private HttpServletRequest request;
 
 	ExecutorService executor = ExecutorBuilder.create().setCorePoolSize(5).setMaxPoolSize(10)
 			.setHandler(new ThreadPoolExecutor.CallerRunsPolicy()).build();
@@ -93,7 +96,7 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
 	 */
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public String createGroupAlarmRule(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO, String requestUri) throws Exception {
+	public String createGroupAlarmRule(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO) throws Exception {
 		// 1、给某个设备分组创建集团报警
 		GroupAlarmRule groupAlarmRule = ConvertGroupAlarmRuleTool.INSTANCE.convertAddDto2Entity(addGroupAlarmRuleDTO);
 		AddAlarmConditionDTO alarmCondition = addGroupAlarmRuleDTO.getAlarmCondition();
@@ -108,10 +111,11 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
 		String projectId = PoemsContext.getContext().getProjectId();
 		String pd = PoemsContext.getContext().getPd();
 		String loginDevice = PoemsContext.getContext().getLoginDevice();
+		String requestUri = request.getRequestURI();
 		executor.execute(() -> {
 			// 切换线程需要重新设置线程中的通用变量
 			PoemsContext.setContext(userId, loginDevice, pd, groupCode, projectId);
-			dataSourceHandler.resetDataSource(requestUri);
+			dynamicDataSourceHandler.resetDataSource(requestUri);
 			projectAlarmRuleService.addProjectAlarmRules(addGroupAlarmRuleDTO);
 		});
 

+ 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