Browse Source

Merge branch 'master' into feature-fiveep-2021-7-12

# Conflicts:
#	fiveep-controller/src/main/java/com/bizmatics/controller/web/AlarmPowerController.java
#	fiveep-service/src/main/java/com/bizmatics/service/AlarmPowerService.java
#	fiveep-service/src/main/java/com/bizmatics/service/impl/AlarmPowerServiceImpl.java
jichaobo 4 years ago
parent
commit
18c1403c11

+ 17 - 0
fiveep-controller/src/main/java/com/bizmatics/controller/web/AlarmPowerController.java

@@ -82,5 +82,22 @@ public class AlarmPowerController {
     public ApiResult<List<Map<String,Object>>> getLoopStatus(@RequestParam Integer siteId){
         return ApiResult.success(alarmPowerService.getLoopStatusList(siteId));
     }
+
+
+    /**
+     * 导出
+     * @param startTime 开始时间
+     * @param endTime 结束时间
+     * @param status 状态
+     * @param siteId 站点
+     * @return
+     */
+    @RequestMapping("/export")
+    public ApiResult<String> export(@RequestParam(required = false) Date startTime,
+                                                  @RequestParam(required = false) Date endTime,
+                                                  @RequestParam(required = false) Integer status,
+                                                  @RequestParam(required = false) Integer siteId){
+        return ApiResult.success(alarmPowerService.export(startTime, endTime, status, siteId));
+    }
 }
 

+ 11 - 0
fiveep-controller/src/main/java/com/bizmatics/controller/web/RtAnalogDataController.java

@@ -47,5 +47,16 @@ public class RtAnalogDataController {
     }
 
 
+    /**
+     * 实时负荷
+     * @param siteId 站点id
+     * @return
+     */
+    @RequestMapping("epLoad")
+    public ApiResult<Double> getEpLoad(Integer siteId){
+        return ApiResult.success(rtAnalogDataService.getEpLoad(siteId));
+    }
+
+
 }
 

+ 1 - 0
fiveep-controller/src/main/resources/application-dev.properties

@@ -1,6 +1,7 @@
 debug=true
 spring.main.lazy-initialization=false
 spring.main.allow-bean-definition-overriding=true
+temp.basedir=C:/Users/pc/Desktop
 # application
 server.port=8010
 # mybatis-plus

+ 6 - 6
fiveep-controller/src/main/resources/application-prod.properties

@@ -1,8 +1,8 @@
-debug=true
 spring.main.lazy-initialization=false
 spring.main.allow-bean-definition-overriding=true
+temp.basedir=/usr/local/service/file
 # application
-server.port=8008
+server.port=8010
 # mybatis-plus
 mybatis-plus.mapper-locations=classpath*:mapper/**/*.xml
 mybatis-plus.configuration.lazy-loading-enabled=true
@@ -15,10 +15,10 @@ mybatis.refresh.delay-seconds=10
 mybatis.refresh.sleep-seconds=20
 # datasource
 spring.autoconfigure.exclude=com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
-spring.datasource.dynamic.primary=mast
-spring.datasource.dynamic.datasource.mast.url=jdbc:mysql://localhost:3306/test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
-spring.datasource.dynamic.datasource.mast.username=root
-spring.datasource.dynamic.datasource.mast.password=
+spring.datasource.dynamic.primary=fiveep
+spring.datasource.dynamic.datasource.fiveep.url=jdbc:mysql://124.71.145.219:3306/smart_electricity?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&characterEncoding=UTF-8
+spring.datasource.dynamic.datasource.fiveep.username=root
+spring.datasource.dynamic.datasource.fiveep.password=Wjzn2021Db
 spring.datasource.dynamic.druid.initial-size=5                                                                       
 spring.datasource.dynamic.druid.min-idle=5
 spring.datasource.dynamic.druid.max-active=30

+ 2 - 2
fiveep-controller/src/main/resources/smart-doc.json

@@ -1,10 +1,10 @@
 {
   "outPath":"./src/main/resources/static/doc",
-  "serverUrl": "http://127.0.0.1:8082/test",
+  "serverUrl": "http://172.16.120.155:8010/",
   "isStrict": false,
   "coverOld": true,
   "allInOne": true,
-  "packageFilters": "com.bizmatics.demo.controller.web",
+  "packageFilters": "com.bizmatics.controller.web",
   "requestExample":"false",
   "responseExample":"true",
   "projectName": "test"

+ 5 - 3
fiveep-model/src/main/java/com/bizmatics/model/AlarmPower.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 import java.io.Serializable;
+import java.util.Date;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -42,7 +44,7 @@ public class AlarmPower implements Serializable {
     /**
      * 发送时间
      */
-    private LocalDateTime sendingTime;
+    private Date sendingTime;
 
     /**
      * 告警类型(alert 告警)
@@ -67,7 +69,7 @@ public class AlarmPower implements Serializable {
     /**
      * 发生时间
      */
-    private LocalDateTime soeTime;
+    private Date soeTime;
 
     /**
      * 处理人
@@ -77,7 +79,7 @@ public class AlarmPower implements Serializable {
     /**
      * 处理时间
      */
-    private LocalDateTime handlingTime;
+    private Date handlingTime;
 
     /**
      * 处理内容

+ 2 - 1
fiveep-persistence/src/main/java/com/bizmatics/persistence/mapper/AlarmPowerMapper.java

@@ -1,6 +1,7 @@
 package com.bizmatics.persistence.mapper;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.bizmatics.model.AlarmPower;
 import com.bizmatics.common.mvc.base.CrudMapper;
 import org.apache.ibatis.annotations.Param;
@@ -34,7 +35,7 @@ public interface AlarmPowerMapper extends CrudMapper<AlarmPower> {
 
 
 
-    List<AlarmPower> list(IPage<AlarmPower> page,
+    Page<AlarmPower> page(IPage<AlarmPower> page,
                           @Param("userId") Integer userId,
                           @Param("siteId") Integer siteId,
                           @Param("handlingStatus") Integer handlingStatus,

+ 1 - 1
fiveep-persistence/src/main/resources/mapper/mysql/AlarmPowerMapper.xml

@@ -44,7 +44,7 @@
             </if>
         </where>
     </select>
-    <select id="list" resultType="com.bizmatics.model.AlarmPower">
+    <select id="page" resultType="com.bizmatics.model.AlarmPower">
         select *
         from user_site as us
         inner join device as d

+ 5 - 0
fiveep-service/pom.xml

@@ -60,6 +60,11 @@
             <artifactId>mybatis-plus-core</artifactId>
             <version>3.3.2</version>
         </dependency>
+        <dependency>
+            <groupId>cn.afterturn</groupId>
+            <artifactId>easypoi-spring-boot-starter</artifactId>
+            <version>4.1.0</version>
+        </dependency>
 
 
     </dependencies>

+ 11 - 0
fiveep-service/src/main/java/com/bizmatics/service/AlarmPowerService.java

@@ -44,4 +44,15 @@ public interface AlarmPowerService extends CrudService<AlarmPower> {
 
     List<Map<String,Object>> getLoopStatusList(Integer siteId);
 
+
+    /**
+     * list
+     * @param startTime 开始时间
+     * @param endTime 结束时间
+     * @param status 状态
+     * @param siteId 站点id
+     * @return
+     */
+    String export(Date startTime, Date endTime, Integer status, Integer siteId);
+
 }

+ 7 - 0
fiveep-service/src/main/java/com/bizmatics/service/RtAnalogDataService.java

@@ -30,4 +30,11 @@ public interface RtAnalogDataService extends CrudService<RtAnalogData> {
      * @return
      */
     List<Map<String,Object>> getOne(Integer siteId);
+
+    /**
+     * 实时负荷
+     * @param siteId
+     * @return
+     */
+    Double getEpLoad(Integer siteId);
 }

+ 32 - 0
fiveep-service/src/main/java/com/bizmatics/service/config/CorsConfig.java

@@ -0,0 +1,32 @@
+package com.bizmatics.service.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.HttpHeaders;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * @author yq
+ * @date 2021/7/14 11:35
+ */
+@Configuration
+public class CorsConfig implements WebMvcConfigurer {
+
+    @Bean
+    public WebMvcConfigurer corsConfigurer()
+    {
+        return new WebMvcConfigurer() {
+            @Override
+            public void addCorsMappings(CorsRegistry registry) {
+                registry.addMapping("/**").
+                        allowedOrigins("http://wx.ewoogi.com/"). //允许跨域的域名,可以用*表示允许任何域名使用
+                        allowedMethods("*"). //允许任何方法(post、get等)
+                        allowedHeaders("*"). //允许任何请求头
+                        allowCredentials(true). //带上cookie信息
+                        exposedHeaders(HttpHeaders.SET_COOKIE).maxAge(3600L); //maxAge(3600)表明在3600秒内,不需要再发送预检验请求,可以缓存该结果
+            }
+        };
+    }
+}
+

+ 53 - 53
fiveep-service/src/main/java/com/bizmatics/service/config/SessionFilter.java

@@ -1,53 +1,53 @@
-package com.bizmatics.service.config;
-
-
-import com.bizmatics.common.core.exception.BusinessException;
-import com.bizmatics.model.User;
-import com.bizmatics.service.util.SessionLocal;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import javax.servlet.*;
-import javax.servlet.annotation.WebFilter;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * @author yq
- * @date 2021/7/8 10:35
- */
-@Component
-@Slf4j
-@WebFilter(urlPatterns = "/*", filterName = "reqResFilter")
-public class SessionFilter implements Filter {
-
-    private static final Set<String> ALLOWED_PATHS = Collections.unmodifiableSet(new HashSet<>(
-            Collections.singletonList("/user/login")));
-
-
-    @Override
-    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
-        HttpServletRequest request = (HttpServletRequest)servletRequest;
-        String path = request.getRequestURI().substring(request.getContextPath().length()).replaceAll("[/]+$", "");
-        boolean allowedPath = ALLOWED_PATHS.contains(path);
-        if (!allowedPath){
-            HttpSession session = request.getSession();
-            if(session.getAttribute( "sessionuser") != null) {
-                if(SessionLocal.getUser() == null) {
-                    log.info("【当前线程"+Thread.currentThread().getName()+"中用户信息为空,从session中set到ThreadLocal.】");
-                    SessionLocal.setUser( (User)session.getAttribute( "sessionuser") );
-                }
-            } else {
-                throw new BusinessException("用户未登录请先登录");
-            }
-        }
-        chain.doFilter(servletRequest,servletResponse);
-    }
-
-}
+//package com.bizmatics.service.config;
+//
+//
+//import com.bizmatics.common.core.exception.BusinessException;
+//import com.bizmatics.model.User;
+//import com.bizmatics.service.util.SessionLocal;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.stereotype.Component;
+//
+//import javax.servlet.*;
+//import javax.servlet.annotation.WebFilter;
+//import javax.servlet.http.HttpServletRequest;
+//import javax.servlet.http.HttpServletResponse;
+//import javax.servlet.http.HttpSession;
+//import java.io.IOException;
+//import java.util.Arrays;
+//import java.util.Collections;
+//import java.util.HashSet;
+//import java.util.Set;
+//
+///**
+// * @author yq
+// * @date 2021/7/8 10:35
+// */
+//@Component
+//@Slf4j
+//@WebFilter(urlPatterns = "/*", filterName = "reqResFilter")
+//public class SessionFilter implements Filter {
+//
+//    private static final Set<String> ALLOWED_PATHS = Collections.unmodifiableSet(new HashSet<>(
+//            Collections.singletonList("/user/login")));
+//
+//
+//    @Override
+//    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
+//        HttpServletRequest request = (HttpServletRequest)servletRequest;
+//        String path = request.getRequestURI().substring(request.getContextPath().length()).replaceAll("[/]+$", "");
+//        boolean allowedPath = ALLOWED_PATHS.contains(path);
+//        if (!allowedPath){
+//            HttpSession session = request.getSession();
+//            if(session.getAttribute( "sessionuser") != null) {
+//                if(SessionLocal.getUser() == null) {
+//                    log.info("【当前线程"+Thread.currentThread().getName()+"中用户信息为空,从session中set到ThreadLocal.】");
+//                    SessionLocal.setUser( (User)session.getAttribute( "sessionuser") );
+//                }
+//            } else {
+//                throw new BusinessException("用户未登录请先登录");
+//            }
+//        }
+//        chain.doFilter(servletRequest,servletResponse);
+//    }
+//
+//}

+ 51 - 1
fiveep-service/src/main/java/com/bizmatics/service/impl/AlarmPowerServiceImpl.java

@@ -1,22 +1,36 @@
 package com.bizmatics.service.impl;
 
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.ExportParams;
+import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
+import cn.afterturn.easypoi.handler.inter.IExcelExportServer;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.bizmatics.common.core.bean.CommonPage;
+import com.bizmatics.common.core.exception.BusinessException;
+import com.bizmatics.common.core.util.BeanMapperUtils;
 import com.bizmatics.common.core.util.DateUtils;
+import com.bizmatics.common.core.util.FileUtils;
+import com.bizmatics.common.spring.util.GlobalUtils;
 import com.bizmatics.model.AlarmPower;
 import com.bizmatics.persistence.mapper.AlarmPowerMapper;
 import com.bizmatics.service.AlarmPowerService;
 import com.bizmatics.common.mvc.base.AbstractCrudService;
 import com.bizmatics.service.util.SessionLocal;
+import com.bizmatics.service.vo.AlarmPowerExportVO;
 import com.bizmatics.service.vo.ApCountVO;
 import com.bizmatics.service.vo.CommonIcoVO;
 import net.sf.jsqlparser.expression.DateTimeLiteralExpression;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.checkerframework.checker.units.qual.A;
 import org.springframework.stereotype.Service;
 
 import java.text.SimpleDateFormat;
 import java.time.Duration;
 import java.util.*;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.*;
 
 /**
  * <p>
@@ -65,7 +79,7 @@ public class AlarmPowerServiceImpl extends AbstractCrudService<AlarmPowerMapper,
     @Override
     public CommonPage<AlarmPower> page(Date startTime, Date endTime, Integer status, Integer siteId,Integer current,Integer size) {
         Page<AlarmPower> page = new Page<>(current, size);
-        baseMapper.list(page,SessionLocal.getUserId(),siteId,status,startTime,endTime);
+        page = baseMapper.page(page,SessionLocal.getUserId(),siteId,status,startTime,endTime);
         return this.ToCommonPage(page);
     }
 
@@ -111,4 +125,40 @@ public class AlarmPowerServiceImpl extends AbstractCrudService<AlarmPowerMapper,
 
         return list;
     }
+
+    @Override
+    public String export(Date startTime, Date endTime, Integer status, Integer siteId){
+        Integer userId = SessionLocal.getUserId();
+        Workbook workbook = null;
+        File file = null;
+        try {
+            ExportParams params = new ExportParams(null, "电力告警");
+            workbook = ExcelExportUtil.exportBigExcel(params, AlarmPowerExportVO.class,
+                        (o, i) -> {
+                        Page<AlarmPower> page = new Page<>(i, 30);
+                        page = baseMapper.page(page, userId, siteId, status, startTime, endTime);
+                            return new ArrayList<>(BeanMapperUtils.mapList(page.getRecords(), AlarmPower.class, AlarmPowerExportVO.class));
+                    },null);
+            if (null != workbook) {
+                file = FileUtils.getFile(GlobalUtils.getTempBaseDir(), String.format("%s-%s.xlsx", "电力告警", System.currentTimeMillis() + ""));
+                FileUtils.createFile(file.getAbsolutePath());
+                FileOutputStream allListingFileOutputStream = new FileOutputStream(file);
+                workbook.write(allListingFileOutputStream);
+            } else {
+                throw new BusinessException("表格数据为空");
+            }
+        } catch (Exception e) {
+            log.error("导出文件失败", e);
+            throw new BusinessException("导出文件失败");
+        } finally {
+            if (workbook != null) {
+                try {
+                    workbook.close();
+                } catch (IOException e) {
+                    log.error("===export spec=== 关闭workbook失败", e);
+                }
+            }
+        }
+        return file.getName();
+    }
 }

+ 5 - 0
fiveep-service/src/main/java/com/bizmatics/service/impl/RtAnalogDataServiceImpl.java

@@ -84,6 +84,11 @@ public class RtAnalogDataServiceImpl extends AbstractCrudService<RtAnalogDataMap
         return list;
     }
 
+    @Override
+    public Double getEpLoad(Integer siteId) {
+        return baseMapper.selectTotalLoad(SessionLocal.getUserId(), siteId);
+    }
+
     /**
      * 添加数据单位
      * @return

+ 2 - 1
fiveep-service/src/main/java/com/bizmatics/service/util/SessionLocal.java

@@ -37,6 +37,7 @@ public class SessionLocal {
     }
 
     public static Integer getUserId(){
-        return Optional.ofNullable(getUser()).map(User::getId).orElseThrow(() ->new BusinessException(BIZ_LACK_NECESSARY_PARAM_ERROR,"用户未登录"));
+        return 1;
+//        return Optional.ofNullable(getUser()).map(User::getId).orElseThrow(() ->new BusinessException(BIZ_LACK_NECESSARY_PARAM_ERROR,"用户未登录"));
     }
 }

+ 99 - 0
fiveep-service/src/main/java/com/bizmatics/service/vo/AlarmPowerExportVO.java

@@ -0,0 +1,99 @@
+package com.bizmatics.service.vo;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * @author yq
+ * @date 2021/7/13 16:21
+ */
+@Data
+public class AlarmPowerExportVO {
+    /**
+     * 电力告警表ID
+     */
+    private Integer id;
+
+    /**
+     * 阿里云平台设备名称
+     */
+    @Excel(name = "设备名称", height = 6, width = 20)
+    private String deviceCode;
+
+    /**
+     * 告警名称
+     */
+    @Excel(name = "告警名称", height = 6, width = 20)
+    private String alarmName;
+
+    /**
+     * 发送时间
+     */
+    @Excel(name = "发送时间", height = 6, width = 20)
+    private Date sendingTime;
+
+    /**
+     * 告警类型(alert 告警)
+     */
+    @Excel(name = "告警类型", height = 6, width = 20)
+    private String alarmType;
+
+    /**
+     * 测点名称
+     */
+    @Excel(name = "测点名称", height = 6, width = 20)
+    private String measName;
+
+    /**
+     * 遥信值(0  正常  1 告警)
+     */
+    @Excel(name = "遥信值", height = 6, width = 20)
+    private Integer digitalValue;
+
+    /**
+     * 测点描述
+     */
+    @Excel(name = "测点描述", height = 6, width = 20)
+    private String measDesc;
+
+    /**
+     * 发生时间
+     */
+    @Excel(name = "发生时间", height = 6, width = 20)
+    private Date soeTime;
+
+    /**
+     * 处理人
+     */
+    @Excel(name = "处理人", height = 6, width = 20)
+    private String handler;
+
+    /**
+     * 处理时间
+     */
+    @Excel(name = "处理时间", height = 6, width = 20)
+    private Date handlingTime;
+
+    /**
+     * 处理内容
+     */
+    @Excel(name = "处理内容", height = 6, width = 20)
+    private String handlingContent;
+
+    /**
+     * 联系电话
+     */
+    @Excel(name = "联系电话", height = 6, width = 20)
+    private String handlerPhone;
+
+    /**
+     * 处理状态(0 未处理,1 已处理)
+     */
+    @Excel(name = "处理状态", height = 6, width = 20)
+    private Integer handlingStatus;
+}