Browse Source

风机报警和升压站报警功能修改优化

shilin 1 year ago
parent
commit
856dd14fa2
25 changed files with 1223 additions and 156 deletions
  1. 4 0
      alarm-custom/src/main/java/com/gyee/alarm/model/auto/ProEconAlarmRule.java
  2. 0 2
      alarm-custom/src/main/java/com/gyee/alarm/rule/AlarmFunction.java
  3. 31 30
      alarm-custom/src/main/java/com/gyee/alarm/service/AlarmCustomService.java
  4. 7 5
      alarm-custom/src/main/java/com/gyee/alarm/task/thread/AlarmThreadPool.java
  5. 1 1
      alarm-service/src/main/java/com/gyee/alarm/init/CacheContext.java
  6. 16 4
      alarm-service/src/main/java/com/gyee/alarm/model/auto/ProEconAlarmRule.java
  7. 41 5
      alarm-service/src/main/java/com/gyee/alarm/service/AlarmCtService.java
  8. 6 0
      alarm-web/pom.xml
  9. 17 0
      alarm-web/src/main/java/com/gyee/alarm/config/exception/LoginModeException.java
  10. 46 0
      alarm-web/src/main/java/com/gyee/alarm/config/interceptor/MyInterceptor.java
  11. 91 0
      alarm-web/src/main/java/com/gyee/alarm/config/interceptor/MyWebAppConfigurer.java
  12. 166 56
      alarm-web/src/main/java/com/gyee/alarm/controller/AlertRuleController.java
  13. 81 0
      alarm-web/src/main/java/com/gyee/alarm/controller/AuthController.java
  14. 0 20
      alarm-web/src/main/java/com/gyee/alarm/controller/ProEconAlarmRuleController.java
  15. 0 20
      alarm-web/src/main/java/com/gyee/alarm/controller/ProEconAlarmTypeController.java
  16. 72 12
      alarm-web/src/main/java/com/gyee/alarm/init/CacheContext.java
  17. 23 0
      alarm-web/src/main/java/com/gyee/alarm/mapper/auto/SysUserMapper.java
  18. 4 1
      alarm-web/src/main/java/com/gyee/alarm/model/auto/ProEconAlarmRule.java
  19. 119 0
      alarm-web/src/main/java/com/gyee/alarm/model/auto/SysUser.java
  20. 1 0
      alarm-web/src/main/java/com/gyee/alarm/model/vo/AlarmCustomType.java
  21. 17 0
      alarm-web/src/main/java/com/gyee/alarm/model/vo/TokenVo.java
  22. 418 0
      alarm-web/src/main/java/com/gyee/alarm/service/TokenService.java
  23. 20 0
      alarm-web/src/main/java/com/gyee/alarm/service/auto/ISysUserService.java
  24. 39 0
      alarm-web/src/main/java/com/gyee/alarm/service/auto/impl/SysUserServiceImpl.java
  25. 3 0
      alarm-web/src/main/resources/application-jn.yml

+ 4 - 0
alarm-custom/src/main/java/com/gyee/alarm/model/auto/ProEconAlarmRule.java

@@ -105,6 +105,10 @@ public class ProEconAlarmRule extends Model {
      * 是否启用
      * 是否启用
      */
      */
     private Boolean enable;
     private Boolean enable;
+    /**
+     * 统一识别码(如果通过uniformCode配置,则设备类型,场站,机型不能为空)
+     */
+    private String uniformCode;
 
 
 
 
 }
 }

+ 0 - 2
alarm-custom/src/main/java/com/gyee/alarm/rule/AlarmFunction.java

@@ -157,8 +157,6 @@ public class AlarmFunction {
             return null;
             return null;
         }
         }
 
 
-
-
     }
     }
 
 
 }
 }

+ 31 - 30
alarm-custom/src/main/java/com/gyee/alarm/service/AlarmCustomService.java

@@ -112,36 +112,37 @@ public class AlarmCustomService {
         str.append("设备读取总数:").append(alarmTags.size()).append(",线程数:").append(taskCount).append(",分块大小:").append(listNumber);
         str.append("设备读取总数:").append(alarmTags.size()).append(",线程数:").append(taskCount).append(",分块大小:").append(listNumber);
 
 
         System.out.println(str.toString());
         System.out.println(str.toString());
-        //读取场站测点
-        int wplen = 1;
-        List<ProBasicPowerstationPoint> wppols=new ArrayList<>();
-        listNumber=wpPointList.size()/readCount;
-        for(int i=0;i<wpPointList.size();i++)
-        {
-            wppols.add(wpPointList.get(i));
-            if(i!=0 && i%listNumber==0)
-            {
-                str.setLength(0);
-                str.append("场站读取线程号:").append(wplen);
-                new Thread(new ReadWpDataThread(executor, edosUtil, readRows,  wppols,interval,str)).start();
-                wppols=new ArrayList<>();
-                wplen++;
-            }
-        }
-
-        if(!wppols.isEmpty())
-        {
-            str.setLength(0);
-            str.append("场站读取线程号:").append(wplen);
-            new Thread(new ReadWpDataThread(executor, edosUtil, readRows,  wppols,interval,str)).start();
-            listNumber++;
-        }
-
-        str=new StringBuilder();
-        str.append("场站读取总数:").append(alarmTags.size()).append(",线程数:").append(taskCount).append(",分块大小:").append(listNumber);
-
-        System.out.println(str.toString());
-
+//        //读取场站测点
+//        int wplen = 1;
+//        List<ProBasicPowerstationPoint> wppols=new ArrayList<>();
+//        listNumber=wpPointList.size()/readCount;
+//        for(int i=0;i<wpPointList.size();i++)
+//        {
+//            wppols.add(wpPointList.get(i));
+//            if(i!=0 && i%listNumber==0)
+//            {
+//                str.setLength(0);
+//                str.append("场站读取线程号:").append(wplen);
+//                new Thread(new ReadWpDataThread(executor, edosUtil, readRows,  wppols,interval,str)).start();
+//                wppols=new ArrayList<>();
+//                wplen++;
+//            }
+//        }
+//
+//        if(!wppols.isEmpty())
+//        {
+//            str.setLength(0);
+//            str.append("场站读取线程号:").append(wplen);
+//            new Thread(new ReadWpDataThread(executor, edosUtil, readRows,  wppols,interval,str)).start();
+//            listNumber++;
+//        }
+//
+//        str=new StringBuilder();
+//        str.append("场站读取总数:").append(alarmTags.size()).append(",线程数:").append(taskCount).append(",分块大小:").append(listNumber);
+//
+//        System.out.println(str.toString());
+
+        str.setLength(0);
         //读取升压站测点
         //读取升压站测点
         int wslen = 1;
         int wslen = 1;
         List<ProBasicPowerstationPoint> wspols=new ArrayList<>();
         List<ProBasicPowerstationPoint> wspols=new ArrayList<>();

+ 7 - 5
alarm-custom/src/main/java/com/gyee/alarm/task/thread/AlarmThreadPool.java

@@ -113,11 +113,13 @@ public class AlarmThreadPool implements Callable<String>, Serializable {
 
 
 
 
 
 
-			}else if (ar.getDevicetype().equals(DeviceTypeValue.WP.getCode()) ) {
-				 alarmFunction = new AlarmFunction(alarmExpression, DeviceTypeValue.WP, ar.getStationid());
-
-
-			}else if (ar.getDevicetype().equals(DeviceTypeValue.BT.getCode()) ) {
+			}
+//			else if (ar.getDevicetype().equals(DeviceTypeValue.WP.getCode()) ) {
+//				 alarmFunction = new AlarmFunction(alarmExpression, DeviceTypeValue.WP, ar.getStationid());
+//
+//
+//			}
+			else if (ar.getDevicetype().equals(DeviceTypeValue.BT.getCode()) ) {
 				 alarmFunction = new AlarmFunction(alarmExpression, DeviceTypeValue.BT, ar.getStationid());
 				 alarmFunction = new AlarmFunction(alarmExpression, DeviceTypeValue.BT, ar.getStationid());
 
 
 
 

+ 1 - 1
alarm-service/src/main/java/com/gyee/alarm/init/CacheContext.java

@@ -611,7 +611,7 @@ public class CacheContext implements CommandLineRunner {
         }
         }
         alarmRulesMap.put(AlarmCustomType.Bt.getCode(),btCustomls);
         alarmRulesMap.put(AlarmCustomType.Bt.getCode(),btCustomls);
         alarmRulesMap.put(AlarmCustomType.WT.getCode(),wtCustomls);
         alarmRulesMap.put(AlarmCustomType.WT.getCode(),wtCustomls);
-        alarmRulesMap.put(AlarmCustomType.WP.getCode(),wpCustomls);
+//        alarmRulesMap.put(AlarmCustomType.WP.getCode(),wpCustomls);
 
 
 
 
         List<ProEconAlarmConfiguration> templs = proEconAlarmConfigurationService.list().stream().filter(i -> i.getEnable()).collect(Collectors.toList());
         List<ProEconAlarmConfiguration> templs = proEconAlarmConfigurationService.list().stream().filter(i -> i.getEnable()).collect(Collectors.toList());

+ 16 - 4
alarm-service/src/main/java/com/gyee/alarm/model/auto/ProEconAlarmRule.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
 
 
+import java.util.Date;
+
 /**
 /**
  * <p>
  * <p>
  * 自定义报警配置
  * 自定义报警配置
@@ -48,10 +50,6 @@ public class ProEconAlarmRule extends Model {
      */
      */
     private Integer rank;
     private Integer rank;
 
 
-    /**
-     * 是否启用
-     */
-    private Boolean enable;
 
 
     /**
     /**
      * 机型
      * 机型
@@ -99,5 +97,19 @@ public class ProEconAlarmRule extends Model {
      */
      */
     private String relatedParts;
     private String relatedParts;
 
 
+    /**
+     * 创建时间
+     */
+
+    private Date createTime;
 
 
+    /**
+     * 是否启用
+     */
+
+    private Boolean enable;
+    /**
+     * 统一识别码(如果通过uniformCode配置,则设备类型,场站,机型不能为空)
+     */
+    private String uniformCode;
 }
 }

+ 41 - 5
alarm-service/src/main/java/com/gyee/alarm/service/AlarmCtService.java

@@ -82,8 +82,8 @@ public class AlarmCtService {
 
 
         //风机自定义报警
         //风机自定义报警
         wtCustomAlarm(alarmVoList, alarmRulesMap);
         wtCustomAlarm(alarmVoList, alarmRulesMap);
-        //场站自定义报警
-        wpCustomAlarm(alarmVoList, alarmRulesMap);
+//        //场站自定义报警
+//        wpCustomAlarm(alarmVoList, alarmRulesMap);
         //升压站自定义报警
         //升压站自定义报警
         btCustomAlarm(alarmVoList, alarmRulesMap);
         btCustomAlarm(alarmVoList, alarmRulesMap);
         return alarmVoList;
         return alarmVoList;
@@ -208,14 +208,50 @@ public class AlarmCtService {
     }
     }
 
 
     private void btCustomAlarm(List<AlarmVo> alarmVoList, Map<String, List<ProEconAlarmRule>> alarmRulesMap) {
     private void btCustomAlarm(List<AlarmVo> alarmVoList, Map<String, List<ProEconAlarmRule>> alarmRulesMap) {
-        List<ProEconAlarmRule> alarmls = new ArrayList<>();
+
+
+        Map<String,List<ProEconAlarmRule>> alarmMap=new HashMap<>();
+
         if (alarmRulesMap.containsKey(DeviceTypeValue.BT.getCode())) {
         if (alarmRulesMap.containsKey(DeviceTypeValue.BT.getCode())) {
-            alarmls = alarmRulesMap.get(DeviceTypeValue.BT.getCode());
 
 
+            List<ProEconAlarmRule>  alarmls = alarmRulesMap.get(DeviceTypeValue.BT.getCode());
+
+            if(!alarmls.isEmpty())
+            {
+                for(ProEconAlarmRule alarm:alarmls)
+                {
+                    if (StringUtils.notEmp(alarm) && StringUtils.notEmp(alarm.getElectricalId()))
+                    {
+                        String [] ids=alarm.getElectricalId().split(",");
+                        if(ids.length>0)
+                        {
+                            for(int i=0;i<ids.length;i++)
+                            {
+                                if(alarmMap.containsKey(ids[i]))
+                                {
+                                    List<ProEconAlarmRule> arls=alarmMap.get(ids[i]);
+                                    arls.add(alarm);
+
+                                }else
+                                {
+                                    List<ProEconAlarmRule> arls=new ArrayList<>();
+                                    arls.add(alarm);
+                                    alarmMap.put(ids[i],arls);
+                                }
+
+                            }
+                        }
+                    }
+
+                }
+            }
         }
         }
 
 
         for (ProBasicSubStation wp : CacheContext.subwpls) {
         for (ProBasicSubStation wp : CacheContext.subwpls) {
-            if (!alarmls.isEmpty()) {
+
+            if (!alarmMap.isEmpty() && alarmMap.containsKey(wp.getId())) {
+
+                List<ProEconAlarmRule> alarmls = alarmMap.get(wp.getId());
                 for (ProEconAlarmRule alarm : alarmls) {
                 for (ProEconAlarmRule alarm : alarmls) {
                     AlarmVo vo = new AlarmVo();
                     AlarmVo vo = new AlarmVo();
                     StringBuilder tbName = new StringBuilder();
                     StringBuilder tbName = new StringBuilder();

+ 6 - 0
alarm-web/pom.xml

@@ -170,6 +170,12 @@
             <artifactId>easyexcel</artifactId>
             <artifactId>easyexcel</artifactId>
             <version>3.2.0</version>
             <version>3.2.0</version>
         </dependency>
         </dependency>
+
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.1.1</version>
+        </dependency>
     </dependencies>
     </dependencies>
     <build>
     <build>
         <plugins>
         <plugins>

+ 17 - 0
alarm-web/src/main/java/com/gyee/alarm/config/exception/LoginModeException.java

@@ -0,0 +1,17 @@
+package com.gyee.alarm.config.exception;
+
+/**
+ * 演示模式异常
+* @ClassName: LoginModeException
+* @author fuce
+* @date 2019-11-08 15:45
+*
+ */
+public class LoginModeException extends RuntimeException
+{
+    private static final long serialVersionUID = 1L;
+
+    public LoginModeException()
+    {
+    }
+}

+ 46 - 0
alarm-web/src/main/java/com/gyee/alarm/config/interceptor/MyInterceptor.java

@@ -0,0 +1,46 @@
+package com.gyee.alarm.config.interceptor;
+
+
+import com.gyee.alarm.config.exception.LoginModeException;
+import com.gyee.alarm.service.TokenService;
+import com.gyee.alarm.util.SpringUtils;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+/**
+ * 自定义拦截器
+ * @author fc
+ *
+ */
+public class MyInterceptor  implements HandlerInterceptor {
+
+
+	public static TokenService tokenService= SpringUtils.getBean(TokenService.class);
+	/*************演示模式需要 end*************/
+	@Override
+	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)throws Exception {
+		// System.out.println(">>>MyInterceptor1>>>>>>>在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作)");
+	}
+
+	@Override
+	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)throws Exception {
+
+	}
+
+	@Override
+	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
+		String token = request.getHeader("token");
+		if (!tokenService.sessionMap.containsKey(token)) {
+			throw new LoginModeException();
+		}
+		return true;// 只有返回true才会继续向下执行,返回false取消当前请求
+	}
+	
+
+}
+

+ 91 - 0
alarm-web/src/main/java/com/gyee/alarm/config/interceptor/MyWebAppConfigurer.java

@@ -0,0 +1,91 @@
+package com.gyee.alarm.config.interceptor;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.*;
+
+/**
+ * 拦截器
+* @ClassName: MyWebAppConfigurer
+* @author fuce
+* @date 2018年6月3日
+*
+ */
+@Configuration
+public class MyWebAppConfigurer  extends  WebMvcConfigurationSupport  {
+	
+	//private static Logger logger=LoggerFactory.getLogger(WebMvcConfigurationSupport.class);
+
+	/** 解决跨域问题 **/
+	@Override
+	public void addCorsMappings(CorsRegistry registry){
+	/*	
+			registry.addMapping("/**")
+			// 设置允许跨域请求的域名
+			.allowedOriginPatterns("*")
+			// 是否允许证书
+			.allowCredentials(true)
+			// 设置允许的方法
+			.allowedMethods("GET", "POST", "DELETE", "PUT")
+			// 设置允许的header属性
+			.allowedHeaders("*")
+			// 跨域允许时间
+			.maxAge(3600);
+			super.addCorsMappings(registry);
+		*/
+	}
+	
+	/** 添加拦截器 **/
+	@Override
+	protected void addInterceptors(InterceptorRegistry registry){
+
+
+//       下面这句代码相当于添加一个拦截器   添加的拦截器就是我们刚刚创建的
+		registry.addInterceptor(new MyInterceptor())
+//       addPathPatterns()配置我们要拦截哪些路径 addPathPatterns("/**")表示拦截所有请求,包括我们的静态资源
+				.addPathPatterns()
+//       excludePathPatterns()表示我们要放行哪些(表示不用经过拦截器)
+//       excludePathPatterns("/","/login")表示放行“/”与“/login”请求
+//       如果有静态资源的时候可以在这个地方放行
+				.excludePathPatterns("/","/auth/login");
+
+		super.addInterceptors(registry);
+	}
+	
+	/** 这里配置视图解析器 **/
+	@Override
+	protected void configureViewResolvers(ViewResolverRegistry registry){
+		super.configureViewResolvers(registry);
+	}
+	
+	/** 配置内容裁决的一些选项 **/
+	@Override
+	protected void configureContentNegotiation(ContentNegotiationConfigurer configurer){
+		super.configureContentNegotiation(configurer);
+	}
+	
+	/** 视图跳转控制器 **/
+	@Override
+	protected void addViewControllers(ViewControllerRegistry registry) {
+		
+		super.addViewControllers(registry);
+	}
+	
+	
+	/** 静态资源处理 **/
+	@Override
+    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
+
+        super.addResourceHandlers(registry);
+
+    }
+	/** 默认静态资源处理器 **/
+
+	protected void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
+
+		super.configureDefaultServletHandling(configurer);
+	}
+
+
+
+
+}

+ 166 - 56
alarm-web/src/main/java/com/gyee/alarm/controller/AlertRuleController.java

@@ -3,12 +3,15 @@ package com.gyee.alarm.controller;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.gyee.alarm.model.auto.ProEconAlarmRule;
+import com.gyee.alarm.init.CacheContext;
+import com.gyee.alarm.model.auto.*;
 import com.gyee.alarm.model.vo.AjaxResult;
 import com.gyee.alarm.model.vo.AjaxResult;
 import com.gyee.alarm.model.vo.AjaxStatus;
 import com.gyee.alarm.model.vo.AjaxStatus;
+import com.gyee.alarm.model.vo.AlarmCustomType;
 import com.gyee.alarm.model.vo.AlarmRuleVo;
 import com.gyee.alarm.model.vo.AlarmRuleVo;
 import com.gyee.alarm.service.AlarmRuleService;
 import com.gyee.alarm.service.AlarmRuleService;
 
 
+import com.gyee.alarm.service.TokenService;
 import com.gyee.alarm.util.ExcelUtils;
 import com.gyee.alarm.util.ExcelUtils;
 import com.gyee.alarm.util.SnowflakeGenerator;
 import com.gyee.alarm.util.SnowflakeGenerator;
 import com.gyee.alarm.util.StringUtils;
 import com.gyee.alarm.util.StringUtils;
@@ -19,9 +22,11 @@ import lombok.extern.slf4j.Slf4j;
 
 
 import org.codehaus.groovy.syntax.TokenUtil;
 import org.codehaus.groovy.syntax.TokenUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.IOException;
@@ -35,17 +40,134 @@ import java.util.*;
 @CrossOrigin
 @CrossOrigin
 public class AlertRuleController {
 public class AlertRuleController {
 
 
+
+
     @Autowired
     @Autowired
     private AlarmRuleService alarmRuleService;
     private AlarmRuleService alarmRuleService;
 
 
-   
+    @Resource
+    private TokenService tokenService;
     @GetMapping(value = "/list")
     @GetMapping(value = "/list")
-    public List<AlarmRuleVo> queryTree() {
+    public AjaxResult queryTree() {
         List<AlarmRuleVo> alertrules = alarmRuleService.queryTree();
         List<AlarmRuleVo> alertrules = alarmRuleService.queryTree();
-        return alertrules;
+        if (StringUtils.notEmp(alertrules))  {
+
+            return AjaxResult.successData(AjaxStatus.success.code, alertrules);
+        }else
+        {
+            return AjaxResult.successData(AjaxStatus.loginexpire.code, "error");
+        }
+    }
+
+    @GetMapping(value = "/querywpllist")
+    public AjaxResult queryWplList() {
+
+        List<ProBasicPowerstation> wpls= CacheContext.wpls;
+
+        if (StringUtils.notEmp(wpls))  {
+
+            return AjaxResult.successData(AjaxStatus.success.code, wpls);
+        }else
+        {
+            return AjaxResult.successData(AjaxStatus.loginexpire.code, "error");
+        }
+    }
+    @GetMapping(value = "/querywtpointllist")
+    public AjaxResult queryWtPointlList(String wpId,String modelId) {
+
+        Map<String,List<ProBasicPowerstationPoint>> map=new HashMap<>();
+        if(StringUtils.notEmp(wpId) && StringUtils.notEmp(modelId) && CacheContext.wppointmap.containsKey(wpId))
+        {
+            Map<String, ProBasicPowerstationPoint> submap= CacheContext.wppointmap.get(wpId);
+
+            List<ProBasicPowerstationPoint> ailist=new ArrayList<>();
+            List<ProBasicPowerstationPoint> dilist=new ArrayList<>();
+            for(Map.Entry<String,ProBasicPowerstationPoint> entry:submap.entrySet()){
+
+                if(entry.getValue().getModelId().equals(modelId))
+                {
+                    if(entry.getKey().contains("AI"))
+                    {
+                        ailist.add(entry.getValue());
+                    }else if(entry.getKey().contains("DI"))
+                    {
+                        dilist.add(entry.getValue());
+                    }
+                }
+            }
+            map.put("ai",ailist);
+            map.put("di",dilist);
+        }
+
+        if (StringUtils.notEmp(map))  {
+
+            return AjaxResult.successData(AjaxStatus.success.code, map);
+        }else
+        {
+            return AjaxResult.successData(AjaxStatus.loginexpire.code, "error");
+        }
+    }
+    @GetMapping(value = "/querysubllist")
+    public AjaxResult querySublList() {
+
+        List<ProBasicSubStation> subwpls= CacheContext.subwpls;
+
+        if (StringUtils.notEmp(subwpls))  {
+
+            return AjaxResult.successData(AjaxStatus.success.code, subwpls);
+        }else
+        {
+            return AjaxResult.successData(AjaxStatus.loginexpire.code, "error");
+        }
     }
     }
 
 
+    @GetMapping(value = "/querysubpointllist")
+    public AjaxResult querySubPointlList(String subId) {
+
+        Map<String,List<ProBasicPowerstationPoint>> map=new HashMap<>();
+        if(StringUtils.notEmp(subId) && CacheContext.subwppointmap.containsKey(subId))
+        {
+            Map<String, ProBasicPowerstationPoint> submap= CacheContext.subwppointmap.get(subId);
+
+            List<ProBasicPowerstationPoint> ailist=new ArrayList<>();
+            List<ProBasicPowerstationPoint> dilist=new ArrayList<>();
+            for(Map.Entry<String,ProBasicPowerstationPoint> entry:submap.entrySet()){
 
 
+                if(entry.getKey().contains("AI"))
+                {
+                    ailist.add(entry.getValue());
+                }else if(entry.getKey().contains("DI"))
+                {
+                    dilist.add(entry.getValue());
+                }
+
+              }
+            map.put("ai",ailist);
+            map.put("di",dilist);
+        }
+
+        if (StringUtils.notEmp(map))  {
+
+            return AjaxResult.successData(AjaxStatus.success.code, map);
+        }else
+        {
+            return AjaxResult.successData(AjaxStatus.loginexpire.code, "error");
+        }
+    }
+
+    @GetMapping(value = "/querywpbyymodellist")
+    public AjaxResult queryWpByModelList() {
+
+        Map<String,Set<ProEconEquipmentmodel>> wpByEmMap=CacheContext.wpByEmMap;
+
+        if (StringUtils.notEmp(wpByEmMap))  {
+
+            return AjaxResult.successData(AjaxStatus.success.code, wpByEmMap);
+        }else
+        {
+            return AjaxResult.successData(AjaxStatus.loginexpire.code, "error");
+        }
+    }
 
 
     //@UserLoginToken
     //@UserLoginToken
     @PostMapping(value = "/save")
     @PostMapping(value = "/save")
@@ -53,28 +175,38 @@ public class AlertRuleController {
    
    
     public AjaxResult saveAlertrule(HttpServletRequest request, @RequestBody ProEconAlarmRule alarmRule) throws Exception {
     public AjaxResult saveAlertrule(HttpServletRequest request, @RequestBody ProEconAlarmRule alarmRule) throws Exception {
 
 
-        int result = alarmRuleService.saveAndUpdateAlertrule(alarmRule);
 
 
-        return AjaxResult.successData(AjaxStatus.success.code, result);
+        String token = request.getHeader("token");
 
 
-    }
-    @PostMapping(value = "/update")
-    @ResponseBody
+        if (StringUtils.notEmp(token) && tokenService.sessionMap.containsKey(token))  {
+
+            int result = alarmRuleService.saveAndUpdateAlertrule(alarmRule);
+
+            return AjaxResult.successData(AjaxStatus.success.code, result);
+        }else
+        {
+            return AjaxResult.successData(AjaxStatus.loginexpire.code, "error");
+        }
 
 
-    public AjaxResult updateAlertrule(HttpServletRequest request, @RequestBody ProEconAlarmRule alarmRule) throws Exception {
 
 
-        int result = alarmRuleService.saveAndUpdateAlertrule(alarmRule);
-        return AjaxResult.successData(AjaxStatus.success.code, result);
 
 
     }
     }
+
     @DeleteMapping(value = "/delete")
     @DeleteMapping(value = "/delete")
-    public int deleteAlertrule(ProEconAlarmRule alarmRule) {
-        return alarmRuleService.deleteAlertrule(alarmRule);
+    public AjaxResult deleteAlertrule(ProEconAlarmRule alarmRule) {
+
+        int i= alarmRuleService.deleteAlertrule(alarmRule);
+
+        if (StringUtils.notEmp(i)) {
+            return AjaxResult.successData(AjaxStatus.success.code,  i);
+        } else {
+            return AjaxResult.successData(AjaxStatus.error.code, "error");
+        }
     }
     }
 
 
     //@UserLoginToken
     //@UserLoginToken
     @GetMapping(value = "/page")
     @GetMapping(value = "/page")
-    public IPage<ProEconAlarmRule> queryByPage(HttpServletRequest request,
+    public AjaxResult queryByPage(HttpServletRequest request,
             @RequestParam(value = "pagenum") Integer pageNum,
             @RequestParam(value = "pagenum") Integer pageNum,
             @RequestParam(value = "pagesize") Integer pageSize,
             @RequestParam(value = "pagesize") Integer pageSize,
             @RequestParam(value = "name", required = false) String name,
             @RequestParam(value = "name", required = false) String name,
@@ -89,47 +221,18 @@ public class AlertRuleController {
 
 
           IPage<ProEconAlarmRule> pageResult = alarmRuleService.pageQueryAll(page, name,station,modelId,rank,category,enabled,relatedparts);
           IPage<ProEconAlarmRule> pageResult = alarmRuleService.pageQueryAll(page, name,station,modelId,rank,category,enabled,relatedparts);
 
 
-        return pageResult;
-    }
 
 
-    private AjaxResult dataCheck(ProEconAlarmRule alertrule) {
-
-        String msg = "";
-        boolean result = true;
-        if (StringUtils.isBlank(alertrule.getName())) {
-            msg = "报警名称不能为空";
-            result = false;
-        } else if (StringUtils.isBlank(alertrule.getDescription())) {
-            msg = "规则描述不能为空";
-            result = false;
-        } else if (StringUtils.isBlank(alertrule.getExpression())) {
-            msg = "报警规则不能为空";
-            result = false;
-        } else if (StringUtils.empty(alertrule.getRank())) {
-            msg = "报警级别不能为空";
-            result = false;
-        }
-        else if (StringUtils.isBlank(alertrule.getStationId())) {
-            msg = "风场不能为空";
-            result = false;
-        } else if (StringUtils.isBlank(alertrule.getCategory())) {
-            msg = "报警类别不能为空";
-            result = false;
-        }
-        if (alertrule.getCategory().equals("1")) {
-            if (StringUtils.isBlank(alertrule.getModelId())) {
-                msg = "风机型号不能为空";
-                result = false;
-            }
-        }
 
 
-        if (result) {
-            return AjaxResult.successData(AjaxStatus.success.code, result);
+        if (StringUtils.notEmp(pageResult)) {
+
+            return AjaxResult.successData(AjaxStatus.success.code, pageResult);
         } else {
         } else {
-            return AjaxResult.successData(AjaxStatus.error.code, result);
+            return AjaxResult.successData(AjaxStatus.error.code, "error");
         }
         }
     }
     }
 
 
+
+
     //@UserLoginToken
     //@UserLoginToken
     @PostMapping(value = "/save-batch")
     @PostMapping(value = "/save-batch")
     @ResponseBody
     @ResponseBody
@@ -161,7 +264,11 @@ public class AlertRuleController {
                 msg = "报警类别不能为空";
                 msg = "报警类别不能为空";
                 result = false;
                 result = false;
             }
             }
-            if (alertrule.getCategory().equals("1")) {
+            else if (StringUtils.isBlank(alertrule.getUniformCode())) {
+                msg = "统一编码不能为空";
+                result = false;
+            }
+            if (alertrule.getCategory().equals(AlarmCustomType.WT.getCode())) {
                 if (StringUtils.isBlank(alertrule.getModelId())) {
                 if (StringUtils.isBlank(alertrule.getModelId())) {
                     msg = "风机型号不能为空";
                     msg = "风机型号不能为空";
                     result = false;
                     result = false;
@@ -184,7 +291,7 @@ public class AlertRuleController {
             }
             }
             return AjaxResult.successData(AjaxStatus.success.code, "ok");
             return AjaxResult.successData(AjaxStatus.success.code, "ok");
         } else {
         } else {
-            return AjaxResult.successData(AjaxStatus.success.code, "ok");
+            return AjaxResult.successData(AjaxStatus.error.code, "error");
         }
         }
 
 
 
 
@@ -207,7 +314,7 @@ public class AlertRuleController {
                         .category("1").range("0")
                         .category("1").range("0")
                         .stationId("ZK_FDC").projectId("ZK_FDC").lineId("ZK_FDC").deviceId("ZK_FDC")
                         .stationId("ZK_FDC").projectId("ZK_FDC").lineId("ZK_FDC").deviceId("ZK_FDC")
                         .electricalId("").relatedParts("BJ").createTime(DateUtils.truncate(previousDay))
                         .electricalId("").relatedParts("BJ").createTime(DateUtils.truncate(previousDay))
-                        .enable(true)
+                        .enable(true).uniformCode("AI091")
                         .build(),
                         .build(),
 
 
                 ProEconAlarmRule.builder().id("").name("单机变桨电池柜温度2超限报警").description("温度等于850度或者温度小于零下40度")
                 ProEconAlarmRule.builder().id("").name("单机变桨电池柜温度2超限报警").description("温度等于850度或者温度小于零下40度")
@@ -215,7 +322,7 @@ public class AlertRuleController {
                         .category("1").range("0")
                         .category("1").range("0")
                         .stationId("ZK_FDC").projectId("ZK_FDC").lineId("ZK_FDC").deviceId("ZK_FDC")
                         .stationId("ZK_FDC").projectId("ZK_FDC").lineId("ZK_FDC").deviceId("ZK_FDC")
                         .electricalId("").relatedParts("BJ").createTime(DateUtils.truncate(previousDay))
                         .electricalId("").relatedParts("BJ").createTime(DateUtils.truncate(previousDay))
-                        .enable(true)
+                        .enable(true).uniformCode("AI091")
                         .build()
                         .build()
 
 
         );
         );
@@ -255,8 +362,11 @@ public class AlertRuleController {
                 } else if (StringUtils.isBlank(alertrule.getCategory())) {
                 } else if (StringUtils.isBlank(alertrule.getCategory())) {
                     msg = "报警类别不能为空";
                     msg = "报警类别不能为空";
                     result = false;
                     result = false;
+                }else if (StringUtils.isBlank(alertrule.getUniformCode())) {
+                    msg = "统一编码不能为空";
+                    result = false;
                 }
                 }
-                if (alertrule.getCategory().equals("1")) {
+                if (alertrule.getCategory().equals(AlarmCustomType.WT.getCode())) {
                     if (StringUtils.isBlank(alertrule.getModelId())) {
                     if (StringUtils.isBlank(alertrule.getModelId())) {
                         msg = "风机型号不能为空";
                         msg = "风机型号不能为空";
                         result = false;
                         result = false;
@@ -282,7 +392,7 @@ public class AlertRuleController {
         if (com.gyee.common.model.StringUtils.isNotNull(list)) {
         if (com.gyee.common.model.StringUtils.isNotNull(list)) {
             return AjaxResult.successData(AjaxStatus.success.code, list);
             return AjaxResult.successData(AjaxStatus.success.code, list);
         } else {
         } else {
-            return AjaxResult.successData(AjaxStatus.error.code, "ok");
+            return AjaxResult.successData(AjaxStatus.error.code, "error");
         }
         }
 
 
 
 

+ 81 - 0
alarm-web/src/main/java/com/gyee/alarm/controller/AuthController.java

@@ -0,0 +1,81 @@
+package com.gyee.alarm.controller;
+
+import com.gyee.alarm.model.vo.AjaxResult;
+import com.gyee.alarm.model.vo.AjaxStatus;
+import com.gyee.alarm.model.vo.TokenVo;
+import com.gyee.alarm.service.TokenService;
+import com.gyee.common.model.StringUtils;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+@Controller
+@RequestMapping("/auth")
+@Api(value = "权限管理", tags = "权限管理")
+public class AuthController {
+
+
+    @Resource
+    private TokenService tokenService;
+
+    @PostMapping("/login")
+    @ResponseBody
+    @ApiOperation(value = "使用账号密码登录")
+    public AjaxResult login(@RequestBody TokenVo tokenVo) {
+
+        if (StringUtils.notEmp(tokenVo)) {
+
+            if (!tokenService.sessionMap.containsKey(tokenVo.getToken())) {
+                tokenVo.setTime(new Date());
+                tokenService.sessionMap.put(tokenVo.getToken(), tokenVo);
+            }
+
+            tokenService.judegeSession();
+        }
+
+        return AjaxResult.successData(AjaxStatus.success.code, "ok");
+    }
+
+    @PostMapping("/logout")
+    @ApiOperation(value = "登出系统")
+    @ResponseBody
+    public AjaxResult logout(@RequestBody  TokenVo tokenVo) {
+        if (StringUtils.notEmp(tokenVo)) {
+
+            if (tokenService.sessionMap.containsKey(tokenVo.getToken())) {
+                tokenService.sessionMap.remove(tokenVo.getToken());
+            }
+
+            if (tokenService.sessionWtMap.containsKey(tokenVo.getToken())) {
+                tokenService.sessionWtMap.remove(tokenVo.getToken());
+            }
+            if (tokenService.sessionWpMap.containsKey(tokenVo.getToken())) {
+                tokenService.sessionWpMap.remove(tokenVo.getToken());
+
+            }
+            if (tokenService.sessionSubMap.containsKey(tokenVo.getToken())) {
+                tokenService.sessionSubMap.remove(tokenVo.getToken());
+
+            }
+            if (tokenService.sessionWeMap.containsKey(tokenVo.getToken())) {
+                tokenService.sessionWeMap.remove(tokenVo.getToken());
+
+            }
+
+        }
+
+        tokenService.judegeSession();
+
+        return AjaxResult.successData(AjaxStatus.success.code, "ok");
+    }
+
+
+}

+ 0 - 20
alarm-web/src/main/java/com/gyee/alarm/controller/ProEconAlarmRuleController.java

@@ -1,20 +0,0 @@
-package com.gyee.alarm.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 自定义报警配置 前端控制器
- * </p>
- *
- * @author shilin
- * @since 2023-08-09
- */
-@RestController
-@RequestMapping("//pro-econ-alarm-rule")
-public class ProEconAlarmRuleController {
-
-}

+ 0 - 20
alarm-web/src/main/java/com/gyee/alarm/controller/ProEconAlarmTypeController.java

@@ -1,20 +0,0 @@
-package com.gyee.alarm.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 自定义类型 前端控制器
- * </p>
- *
- * @author shilin
- * @since 2023-08-09
- */
-@RestController
-@RequestMapping("//pro-econ-alarm-type")
-public class ProEconAlarmTypeController {
-
-}

+ 72 - 12
alarm-web/src/main/java/com/gyee/alarm/init/CacheContext.java

@@ -86,6 +86,11 @@ public class CacheContext implements CommandLineRunner {
     @Resource
     @Resource
     private IProEconAlarmRuleService proEconAlarmRuleService;
     private IProEconAlarmRuleService proEconAlarmRuleService;
 
 
+    public static Map<String,Map<String, ProBasicPowerstationPoint>> weatherwppointmap =new HashMap<>();
+    public static List<ProBasicWeatherStation>  weawpls = new ArrayList<>();
+    public static Map<String,Map<String,ProBasicEquipment>> cmwtmap = new HashMap<>();
+    public static Map<String,List<ProBasicEquipment>> rgwtlsmap = new HashMap<>();
+    public static Map<String,List<ProBasicEquipment>> cmwtlsmap = new HashMap<>();
     public static Map<String, List<ProEconAlarmRule>> alarmRulesMap = new HashMap<>();
     public static Map<String, List<ProEconAlarmRule>> alarmRulesMap = new HashMap<>();
     public static List<ProBasicEquipment> wtls = new ArrayList<>();
     public static List<ProBasicEquipment> wtls = new ArrayList<>();
     public static List<ProBasicEquipment> wt_fjls = new ArrayList<>();
     public static List<ProBasicEquipment> wt_fjls = new ArrayList<>();
@@ -179,6 +184,7 @@ public class CacheContext implements CommandLineRunner {
     public static List<AlarmVo> alarmCtList=new ArrayList<>();
     public static List<AlarmVo> alarmCtList=new ArrayList<>();
     public static Map<String,AlarmVo> alarmCtMap=new HashMap<>();
     public static Map<String,AlarmVo> alarmCtMap=new HashMap<>();
 
 
+    public static   Map<String,Set<ProEconEquipmentmodel>> wpByEmMap=new HashMap<>();
     @Override
     @Override
 
 
     public void run(String... args) throws Exception {
     public void run(String... args) throws Exception {
@@ -367,6 +373,8 @@ public class CacheContext implements CommandLineRunner {
                 wt_fjls.add(wt);
                 wt_fjls.add(wt);
             }
             }
 
 
+
+
             wtmap.put(wt.getId(), wt);
             wtmap.put(wt.getId(), wt);
             //标杆风机初始化
             //标杆风机初始化
             wtstandardmap.put(wt.getId(), wt.getId());
             wtstandardmap.put(wt.getId(), wt.getId());
@@ -376,35 +384,58 @@ public class CacheContext implements CommandLineRunner {
             wtpAimap.put(wt.getId(), stringWindturbinetestingpointnewMap);
             wtpAimap.put(wt.getId(), stringWindturbinetestingpointnewMap);
 
 
 
 
-            if (wpwtmap.containsKey(wt.getWindpowerstationId())) {
+
+            if (wpwtmap.containsKey(wt.getWindpowerstationId())){
                 wpwtmap.get(wt.getWindpowerstationId()).add(wt);
                 wpwtmap.get(wt.getWindpowerstationId()).add(wt);
-            } else {
+            }else {
                 List<ProBasicEquipment> wps = new ArrayList<>();
                 List<ProBasicEquipment> wps = new ArrayList<>();
                 wps.add(wt);
                 wps.add(wt);
-                wpwtmap.put(wt.getWindpowerstationId(), wps);
+                wpwtmap.put(wt.getWindpowerstationId(),wps);
             }
             }
 
 
-            if (pjwtmap.containsKey(wt.getProjectId())) {
+            if (pjwtmap.containsKey(wt.getProjectId())){
                 pjwtmap.get(wt.getProjectId()).add(wt);
                 pjwtmap.get(wt.getProjectId()).add(wt);
-            } else {
+            }else {
                 List<ProBasicEquipment> pjs = new ArrayList<>();
                 List<ProBasicEquipment> pjs = new ArrayList<>();
                 pjs.add(wt);
                 pjs.add(wt);
-                pjwtmap.put(wt.getProjectId(), pjs);
+                pjwtmap.put(wt.getProjectId(),pjs);
             }
             }
-            if (lnwtmap.containsKey(wt.getLineId())) {
+            if (lnwtmap.containsKey(wt.getLineId())){
                 lnwtmap.get(wt.getLineId()).add(wt);
                 lnwtmap.get(wt.getLineId()).add(wt);
-            } else {
+            }else {
                 List<ProBasicEquipment> lnls = new ArrayList<>();
                 List<ProBasicEquipment> lnls = new ArrayList<>();
                 lnls.add(wt);
                 lnls.add(wt);
-                lnwtmap.put(wt.getLineId(), lnls);
+                lnwtmap.put(wt.getLineId(),lnls);
+            }
+            if (cmwtlsmap.containsKey(wt.getCompanyId())){
+                cmwtlsmap.get(wt.getCompanyId()).add(wt);
+            }else {
+                List<ProBasicEquipment> cmls = new ArrayList<>();
+                cmls.add(wt);
+                cmwtlsmap.put(wt.getCompanyId(),cmls);
+            }
+            if (rgwtlsmap.containsKey(wt.getRegionId())){
+                rgwtlsmap.get(wt.getRegionId()).add(wt);
+            }else {
+                List<ProBasicEquipment> rgls = new ArrayList<>();
+                rgls.add(wt);
+                rgwtlsmap.put(wt.getRegionId(),rgls);
             }
             }
 
 
-            if (sqwtmap.containsKey(wt.getSquareId())) {
+            if (sqwtmap.containsKey(wt.getSquareId())){
                 sqwtmap.get(wt.getSquareId()).add(wt);
                 sqwtmap.get(wt.getSquareId()).add(wt);
-            } else {
+            }else {
                 List<ProBasicEquipment> lnls = new ArrayList<>();
                 List<ProBasicEquipment> lnls = new ArrayList<>();
                 lnls.add(wt);
                 lnls.add(wt);
-                sqwtmap.put(wt.getSquareId(), lnls);
+                sqwtmap.put(wt.getSquareId(),lnls);
+            }
+
+            if (cmwtmap.containsKey(wt.getCompanyId())){
+                cmwtmap.get(wt.getCompanyId()).put(wt.getId(),wt);
+            }else {
+                Map<String,ProBasicEquipment> map=new HashMap<>();
+                map.put(wt.getId(),wt);
+                cmwtmap.put(wt.getCompanyId(),map);
             }
             }
         });
         });
 
 
@@ -625,8 +656,37 @@ public class CacheContext implements CommandLineRunner {
                 }
                 }
             }
             }
         }
         }
+        wtls.forEach(wt -> {
+            if(wpByEmMap.containsKey(wt.getWindpowerstationId()))
+            {
+                Set<ProEconEquipmentmodel> set=wpByEmMap.get(wt.getWindpowerstationId());
+                if(modelMap.containsKey(wt.getModelId()))
+                {
+                    ProEconEquipmentmodel model=modelMap.get(wt.getModelId());
+                    set.add(model);
+                }
 
 
+            }else
+            { Set<ProEconEquipmentmodel> set=new HashSet<>();
+                if(modelMap.containsKey(wt.getModelId()))
+                {
+                    ProEconEquipmentmodel model=modelMap.get(wt.getModelId());
+                    set.add(model);
+                }
+                wpByEmMap.put(wt.getModelId(),set);
+            }
 
 
+        });
+        weawpls = proBasicWeatherStationService.list().stream().filter(i-> i.getIsAble()==1).collect(Collectors.toList());
+        weawpls.stream().forEach(weather->{
+
+            String subString = redisService.get(weather.getId());
+            Map<String, ProBasicPowerstationPoint> stringWindpowerstationpointnewMap = JSONObject.parseObject(subString, new TypeReference<Map<String, ProBasicPowerstationPoint>>() {
+            });
+            weatherwppointmap.put(weather.getId(),stringWindpowerstationpointnewMap);
+
+
+        });
 
 
 //        inputOrOutPutService.initialInputOrOutputSpeed();
 //        inputOrOutPutService.initialInputOrOutputSpeed();
         logger.info("缓存结束------------------------------------------------------------");
         logger.info("缓存结束------------------------------------------------------------");

+ 23 - 0
alarm-web/src/main/java/com/gyee/alarm/mapper/auto/SysUserMapper.java

@@ -0,0 +1,23 @@
+package com.gyee.alarm.mapper.auto;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.alarm.model.auto.SysUser;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 用户信息表 Mapper 接口
+ * </p>
+ *
+ * @author wang
+ * @since 2023-07-25
+ */
+public interface SysUserMapper extends BaseMapper<SysUser> {
+
+    @Select("SELECT d.nem_code FROM system_dept as d,system_users as u where u.dept_id=d.id and u.id=#{userId} ")
+    public List<String> getUserByuserId(@Param(value = "userId") Long userId);
+}

+ 4 - 1
alarm-web/src/main/java/com/gyee/alarm/model/auto/ProEconAlarmRule.java

@@ -127,6 +127,9 @@ public class ProEconAlarmRule extends Model {
      */
      */
     @ExcelProperty("是否启用")
     @ExcelProperty("是否启用")
     private Boolean enable;
     private Boolean enable;
-
+    /**
+     * 统一识别码(如果通过uniformCode配置,则设备类型,场站,机型不能为空)
+     */
+    private String uniformCode;
 
 
 }
 }

+ 119 - 0
alarm-web/src/main/java/com/gyee/alarm/model/auto/SysUser.java

@@ -0,0 +1,119 @@
+package com.gyee.alarm.model.auto;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 用户信息表
+ * </p>
+ *
+ * @author wang
+ * @since 2023-07-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SysUser extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+    /**
+     * 部门ID
+     */
+    private Long deptId;
+
+    /**
+     * 用户账号
+     */
+    private String userName;
+
+    /**
+     * 用户昵称
+     */
+    private String nickName;
+
+    /**
+     * 用户类型(00系统用户)
+     */
+    private String userType;
+
+    /**
+     * 用户邮箱
+     */
+    private String email;
+
+    /**
+     * 手机号码
+     */
+    private String phonenumber;
+
+    /**
+     * 用户性别(0男 1女 2未知)
+     */
+    private String sex;
+
+    /**
+     * 头像地址
+     */
+    private String avatar;
+
+    /**
+     * 密码
+     */
+    private String password;
+
+    /**
+     * 帐号状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    private String delFlag;
+
+    /**
+     * 最后登录IP
+     */
+    private String loginIp;
+
+    /**
+     * 最后登录时间
+     */
+    private LocalDateTime loginDate;
+
+    /**
+     * 创建者
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新者
+     */
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 1 - 0
alarm-web/src/main/java/com/gyee/alarm/model/vo/AlarmCustomType.java

@@ -3,6 +3,7 @@ package com.gyee.alarm.model.vo;
 public enum AlarmCustomType {
 public enum AlarmCustomType {
 
 
     WT("windturbine", "设备自定义报警"),
     WT("windturbine", "设备自定义报警"),
+    Bt("booststation", "升压站报警"),
     WP("station", "场站自定义报警");
     WP("station", "场站自定义报警");
 
 
     private String code;
     private String code;

+ 17 - 0
alarm-web/src/main/java/com/gyee/alarm/model/vo/TokenVo.java

@@ -0,0 +1,17 @@
+package com.gyee.alarm.model.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class TokenVo {
+
+    private String token;
+    private  String userId;
+    private Date time;
+}

+ 418 - 0
alarm-web/src/main/java/com/gyee/alarm/service/TokenService.java

@@ -0,0 +1,418 @@
+package com.gyee.alarm.service;
+
+
+import cn.hutool.core.bean.BeanUtil;
+import com.gyee.alarm.init.CacheContext;
+import com.gyee.alarm.model.auto.*;
+import com.gyee.alarm.model.vo.TokenVo;
+import com.gyee.alarm.service.auto.ISysUserService;
+import com.gyee.alarm.util.DateUtils;
+import com.gyee.common.model.StringUtils;
+
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+@Service
+public class TokenService {
+    @Resource
+    private ISysUserService sysUserService;
+
+
+    public static Map<String, List<ProBasicEquipment>> sessionWtMap = new ConcurrentHashMap<>();
+    public static Map<String, List<ProBasicPowerstation>> sessionWpMap = new ConcurrentHashMap<>();
+    public static Map<String,  List<ProBasicSubStation> > sessionSubMap = new ConcurrentHashMap<>();
+    public static Map<String, List<ProBasicWeatherStation>> sessionWeMap = new ConcurrentHashMap<>();
+
+    public static Map<String, TokenVo> sessionMap=  new ConcurrentHashMap<>();
+
+
+    public void  judegeSession() {
+
+
+
+        for (Map.Entry <String, TokenVo>  entry : sessionMap.entrySet()) {
+            TokenVo vo=entry.getValue();
+            
+            Date begin=vo.getTime();
+            Date end=new Date();
+
+            double value= DateUtils.hoursDiff(begin,end);
+            if(value>3)
+            {
+                sessionMap.remove(entry.getKey());
+
+                if (sessionWtMap.containsKey(entry.getKey())) {
+                    sessionWtMap.remove(entry.getKey());
+                }
+                if (sessionWpMap.containsKey(entry.getKey())) {
+                    sessionWpMap.remove(entry.getKey());
+
+                }
+                if (sessionSubMap.containsKey(entry.getKey())) {
+                    sessionSubMap.remove(entry.getKey());
+
+                }
+                if (sessionWeMap.containsKey(entry.getKey())) {
+                    sessionWeMap.remove(entry.getKey());
+
+                }
+            }
+        }
+
+    }
+    public  List<ProBasicEquipment>  getWtls(HttpServletRequest request ) {
+
+        String token = request.getHeader("token");
+        String userId = request.getHeader("userId");
+
+        List<ProBasicEquipment> wtlist = new ArrayList<>();
+        if (StringUtils.notEmp(token) && StringUtils.notEmp(userId))
+        {
+            if (sessionMap.containsKey(token) && !sessionWtMap.containsKey(token)) {
+
+                List<String> depls = sysUserService.getUserByuserId(Long.valueOf(userId));
+                if (!depls.isEmpty()) {
+                    String depId = depls.get(0);
+
+                    if (CacheContext.wpwtmap.containsKey(depId)) {
+
+                        List<ProBasicEquipment> wtls=CacheContext.wpwtmap.get(depId);
+                        for(ProBasicEquipment wt:wtls)
+                        {
+                            ProBasicEquipment newWt=  new ProBasicEquipment();
+                            BeanUtil.copyProperties( wt,newWt);
+                            wtlist.add(newWt);
+                        }
+
+                    } else if (CacheContext.cmwtlsmap.containsKey(depId)) {
+
+                        List<ProBasicEquipment> wtls=CacheContext.cmwtlsmap.get(depId);
+                        for(ProBasicEquipment wt:wtls)
+                        {
+                            ProBasicEquipment newWt=  new ProBasicEquipment();
+                            BeanUtil.copyProperties( wt,newWt);
+                            wtlist.add(newWt);
+                        }
+
+                    } else if (CacheContext.rgwtlsmap.containsKey(depId)) {
+
+                        List<ProBasicEquipment> wtls=CacheContext.rgwtlsmap.get(depId);
+                        for(ProBasicEquipment wt:wtls)
+                        {
+                            ProBasicEquipment newWt=  new ProBasicEquipment();
+                            BeanUtil.copyProperties( wt,newWt);
+                            wtlist.add(newWt);
+                        }
+
+                    }else  if(depId.equals("0"))
+                    {
+                        for(ProBasicEquipment wt:CacheContext.wtls)
+                        {
+                            ProBasicEquipment newWt=  new ProBasicEquipment();
+                            BeanUtil.copyProperties( wt,newWt);
+                            wtlist.add(newWt);
+                        }
+
+                    }
+                }
+                sessionWtMap.put(token,wtlist);
+            } else if (sessionMap.containsKey(token) && sessionWtMap.containsKey(token))
+            {
+                wtlist =sessionWtMap.get(token);
+            }
+        }else
+        {
+            for(ProBasicEquipment wt:CacheContext.wtls)
+            {
+                ProBasicEquipment newWt=  new ProBasicEquipment();
+                BeanUtil.copyProperties( wt,newWt);
+                wtlist.add(newWt);
+            }
+
+        }
+        return wtlist;
+    }
+
+    public  List<ProBasicPowerstation>  getWpls(HttpServletRequest request )
+    {
+        String token = request.getHeader("token");
+        String userId = request.getHeader("userId");
+
+        List<ProBasicPowerstation> wplist=new ArrayList<>();
+        if(StringUtils.notEmp(token)  && StringUtils.notEmp(token))
+        {
+            if(sessionMap.containsKey(token) && !sessionWpMap.containsKey(token))
+            {
+
+                List<String> depls= sysUserService.getUserByuserId(Long.valueOf(userId));
+                if(!depls.isEmpty())
+                {
+                    String depId=depls.get(0);
+
+                    if(CacheContext.wpmap.containsKey(depId))
+                    {
+
+                        ProBasicPowerstation wp= CacheContext.wpmap.get(depId);
+                        ProBasicPowerstation newWp=  new ProBasicPowerstation();
+                        BeanUtil.copyProperties(wp, newWp);
+                        wplist.add(newWp);
+                    }else  if(CacheContext.cpwpmap.containsKey(depId))
+                    {
+                        List<ProBasicPowerstation> wpls=CacheContext.cpwpmap.get(depId);
+                        for(ProBasicPowerstation wp:wpls)
+                        {
+                            ProBasicPowerstation newWp=  new ProBasicPowerstation();
+                            BeanUtil.copyProperties(wp, newWp);
+                            wplist.add(newWp);
+                        }
+
+                    }else  if(CacheContext.rgmap.containsKey(depId))
+                    {
+                        List<ProBasicCompany> rgcpls= CacheContext.rgcpmap.get(depId);
+                        for(ProBasicCompany cp:rgcpls)
+                        {
+                            List<ProBasicPowerstation> wpls=CacheContext.cpwpmap.get(cp.getId());
+                            for(ProBasicPowerstation wp:wpls)
+                            {
+                                ProBasicPowerstation newWp=  new ProBasicPowerstation();
+                                BeanUtil.copyProperties(wp, newWp);
+                                wplist.add(newWp);
+                            }
+                        }
+
+                    }else if(depId.equals("0"))
+                    {
+                        wplist=sessionWpMap.get(token);
+                    }else if(depId.equals("0"))
+                    {
+                        List<ProBasicPowerstation> wpls=CacheContext.wpls;
+                        for(ProBasicPowerstation wp:wpls)
+                        {
+                            ProBasicPowerstation newWp=  new ProBasicPowerstation();
+                            BeanUtil.copyProperties(wp, newWp);
+                            wplist.add(newWp);
+                        }
+
+                    }
+                }
+                sessionWpMap.put(token,wplist);
+            }else if (sessionMap.containsKey(token) && sessionWpMap.containsKey(token))
+            {
+                wplist=sessionWpMap.get(token);
+            }
+
+        }else
+        {
+            List<ProBasicPowerstation> wpls=CacheContext.wpls;
+            for(ProBasicPowerstation wp:wpls)
+            {
+                ProBasicPowerstation newWp=  new ProBasicPowerstation();
+                BeanUtil.copyProperties(wp, newWp);
+                wplist.add(newWp);
+            }
+        }
+        return wplist;
+    }
+
+    public  List<ProBasicSubStation>  getSubwpls(HttpServletRequest request )
+    {
+        String token = request.getHeader("token");
+        String userId = request.getHeader("userId");
+        List<ProBasicSubStation> wplist=new ArrayList<>();
+        if(StringUtils.notEmp(token) && StringUtils.notEmp(userId))
+        {
+            if(!sessionSubMap.containsKey(token))
+            {
+
+                List<String> depls= sysUserService.getUserByuserId(Long.valueOf(userId));
+                if(!depls.isEmpty())
+                {
+                    String depId=depls.get(0);
+
+                    if(CacheContext.wpmap.containsKey(depId))
+                    {
+                        for(ProBasicSubStation subStation:CacheContext.subwpls)
+                        {
+                            if(subStation.getWindpowerstationId().equals(depId))
+                            {
+                                ProBasicSubStation newSub=  new ProBasicSubStation();
+                                BeanUtil.copyProperties(subStation, newSub);
+                                wplist.add(newSub);
+                            }
+                        }
+                    }else  if(CacheContext.cpwpmap.containsKey(depId))
+                    {
+                        List<ProBasicPowerstation> wpls=CacheContext.cpwpmap.get(depId);
+
+                        for(ProBasicPowerstation wp:wpls)
+                        {
+                            for(ProBasicSubStation subStation:CacheContext.subwpls)
+                            {
+                                if(subStation.getWindpowerstationId().equals(wp.getId()))
+                                {
+                                    ProBasicSubStation newSub=  new ProBasicSubStation();
+                                    BeanUtil.copyProperties(subStation, newSub);
+                                    wplist.add(newSub);
+                                    break;
+                                }
+                            }
+                        }
+                    }else  if(CacheContext.rgmap.containsKey(depId))
+                    {
+                        List<ProBasicCompany> rgcpls= CacheContext.rgcpmap.get(depId);
+                        for(ProBasicCompany cp:rgcpls)
+                        {
+                            List<ProBasicPowerstation> wpls=CacheContext.cpwpmap.get(cp.getId());
+
+                            for(ProBasicPowerstation wp:wpls)
+                            {
+                                for(ProBasicSubStation subStation:CacheContext.subwpls)
+                                {
+                                    if(subStation.getWindpowerstationId().equals(wp.getId()))
+                                    {
+                                        ProBasicSubStation newSub=  new ProBasicSubStation();
+                                        BeanUtil.copyProperties(subStation, newSub);
+                                        wplist.add(newSub);
+                                        break;
+                                    }
+                                }
+
+                            }
+                        }
+                    }else if(depId.equals("0"))
+                    {
+                        for(ProBasicSubStation subStation:CacheContext.subwpls)
+                        {
+                            ProBasicSubStation newSub=  new ProBasicSubStation();
+                            BeanUtil.copyProperties(subStation, newSub);
+                            wplist.add(newSub);
+                        }
+
+                    }
+                }
+                sessionSubMap.put(token,wplist);
+            }else  if (sessionMap.containsKey(token) && sessionSubMap.containsKey(token))
+            {
+                wplist=sessionSubMap.get(token);
+
+            }
+        }else
+        {
+            for(ProBasicSubStation subStation:CacheContext.subwpls)
+            {
+                ProBasicSubStation newSub=  new ProBasicSubStation();
+                BeanUtil.copyProperties(subStation, newSub);
+                wplist.add(newSub);
+            }
+        }
+        return wplist;
+    }
+
+
+    public   List<ProBasicWeatherStation>  getWeawpls (HttpServletRequest request )
+    {
+        String token = request.getHeader("token");
+        String userId = request.getHeader("userId");
+
+        List<ProBasicWeatherStation> wplist=new ArrayList<>();
+        if(StringUtils.notEmp(token) && StringUtils.notEmp(userId))
+        {
+            if(!sessionWeMap.containsKey(token))
+            {
+
+                List<String> depls= sysUserService.getUserByuserId(Long.valueOf(userId));
+                if(!depls.isEmpty())
+                {
+                    String depId=depls.get(0);
+
+                    if(CacheContext.wpmap.containsKey(depId))
+                    {
+                        for(ProBasicWeatherStation weatherStation:CacheContext.weawpls)
+                        {
+                            if(weatherStation.getWindpowerstationId().equals(depId))
+                            {
+
+                                ProBasicWeatherStation newWeb=  new ProBasicWeatherStation();
+                                BeanUtil.copyProperties(weatherStation, newWeb);
+                                wplist.add(newWeb);
+                            }
+                        }
+
+                    }else  if(CacheContext.cpwpmap.containsKey(depId))
+                    {
+                        List<ProBasicPowerstation> wpls=CacheContext.cpwpmap.get(depId);
+
+                        for(ProBasicPowerstation wp:wpls)
+                        {
+                            for(ProBasicWeatherStation weatherStation:CacheContext.weawpls)
+                            {
+                                if(weatherStation.getWindpowerstationId().equals(wp.getId()))
+                                {
+                                    ProBasicWeatherStation newWeb=  new ProBasicWeatherStation();
+                                    BeanUtil.copyProperties(weatherStation, newWeb);
+                                    wplist.add(newWeb);
+                                    break;
+                                }
+                            }
+
+                        }
+                    }else  if(CacheContext.rgmap.containsKey(depId))
+                    {
+                        List<ProBasicCompany> rgcpls= CacheContext.rgcpmap.get(depId);
+                        for(ProBasicCompany cp:rgcpls)
+                        {
+                            List<ProBasicPowerstation> wpls=CacheContext.cpwpmap.get(cp.getId());
+
+                            for(ProBasicPowerstation wp:wpls)
+                            {
+                                for(ProBasicWeatherStation weatherStation:CacheContext.weawpls)
+                                {
+                                    if(weatherStation.getWindpowerstationId().equals(wp.getId()))
+                                    {
+                                        ProBasicWeatherStation newWeb=  new ProBasicWeatherStation();
+                                        BeanUtil.copyProperties(weatherStation, newWeb);
+                                        wplist.add(newWeb);
+                                        break;
+                                    }
+                                }
+
+                            }
+                        }
+
+                    }else if(depId.equals("0"))
+                    {
+                        for(ProBasicWeatherStation weatherStation:CacheContext.weawpls)
+                        {
+                            ProBasicWeatherStation newWeb=  new ProBasicWeatherStation();
+                            BeanUtil.copyProperties(weatherStation, newWeb);
+                            wplist.add(newWeb);
+                        }
+                    }
+                }
+                sessionWeMap.put(token,wplist);
+            }else  if (sessionMap.containsKey(token) && sessionWeMap.containsKey(token))
+            {
+                wplist=sessionWeMap.get(token);
+            }
+
+        }else
+        {
+            for(ProBasicWeatherStation weatherStation:CacheContext.weawpls)
+            {
+                ProBasicWeatherStation newWeb=  new ProBasicWeatherStation();
+                BeanUtil.copyProperties(weatherStation, newWeb);
+                wplist.add(newWeb);
+            }
+
+
+        }
+        return wplist;
+    }
+}

+ 20 - 0
alarm-web/src/main/java/com/gyee/alarm/service/auto/ISysUserService.java

@@ -0,0 +1,20 @@
+package com.gyee.alarm.service.auto;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gyee.alarm.model.auto.SysUser;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 用户信息表 服务类
+ * </p>
+ *
+ * @author wang
+ * @since 2023-07-25
+ */
+public interface ISysUserService extends IService<SysUser> {
+
+    public List<String> getUserByuserId(Long userId);
+}

+ 39 - 0
alarm-web/src/main/java/com/gyee/alarm/service/auto/impl/SysUserServiceImpl.java

@@ -0,0 +1,39 @@
+package com.gyee.alarm.service.auto.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gyee.alarm.mapper.auto.SysUserMapper;
+import com.gyee.alarm.model.auto.SysUser;
+import com.gyee.alarm.service.auto.ISysUserService;
+import com.gyee.common.model.StringUtils;
+
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 用户信息表 服务实现类
+ * </p>
+ *
+ * @author wang
+ * @since 2023-07-25
+ */
+@Service
+public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService {
+
+    @Resource
+    private SysUserMapper sysUserMapper;
+    public List<String> getUserByuserId(Long userId) {
+
+        List<String> list =new ArrayList<>();
+        if(StringUtils.notEmp(userId) )
+        {
+
+            list = sysUserMapper.getUserByuserId(userId);
+        }
+
+        return list;
+    }
+}

+ 3 - 0
alarm-web/src/main/resources/application-jn.yml

@@ -176,6 +176,9 @@ rule_encryption: true
 #加密key
 #加密key
 rule_encryption_key: gyee-alarm123456
 rule_encryption_key: gyee-alarm123456
 
 
+#是否需要权限控制
+rule_authority: true
+