suntianwu 3 éve
szülő
commit
1bef7d6e25

+ 1 - 1
src/main/java/com/iden/bms/controller/CameraController.java

@@ -185,7 +185,7 @@ public class CameraController {
         } catch (BDException e) {
             log.error("导出摄像头列表出现异常",e);
         } catch (Exception e) {
-            log.error("小区管理: 导出摄像头列表出现异常",e);
+            log.error("摄像头管理: 导出摄像头列表出现异常",e);
         }
     }
 

+ 105 - 0
src/main/java/com/iden/bms/controller/SysLogController.java

@@ -0,0 +1,105 @@
+package com.iden.bms.controller;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.iden.bms.service.SysLogService;
+import com.iden.common.annotation.Permission;
+import com.iden.common.exception.BDException;
+import com.iden.common.logaspect.LogAnnotation;
+import com.iden.common.logaspect.OperateType;
+import com.iden.common.util.PageResult;
+
+import com.iden.common.util.WebPageUtils;
+import com.iden.common.vo.SysLogVO;
+import com.iden.common.vo.PageReqVO;
+import com.iden.common.vo.UserLoginedConvertVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * @Author: lilt
+ * @Date: 2021/5/26
+ * @Desc:
+ */
+@RestController
+@Api(value = "SysLogController", tags = { "系统日志管理" })
+@Slf4j
+@RequestMapping("/bms/sysLog")
+@Permission
+public class SysLogController {
+
+    @Autowired
+    private SysLogService sysLogService;
+
+    
+    @GetMapping("/listSysLog")
+    @ApiOperation(value = "系统日志列表分页 ")
+    @ApiImplicitParams(value = {
+
+            @ApiImplicitParam(paramType = "query", name = "username", value = "操作账号"),
+            @ApiImplicitParam(paramType = "query", name = "logType", value = "日志类型"),
+            @ApiImplicitParam(paramType = "query", name = "createTime", value = "操作日期")
+
+    })
+    public PageResult<List<SysLogVO>> listSysLog(HttpServletRequest request, @RequestHeader(value = "token") String token,
+                                                 @RequestParam(value = "username", required = false) String username,
+                                                 @RequestParam(value = "logType", required = false) String logType,
+                                                 @RequestParam(value = "createTime", required = false) String createTime,
+                                                 PageReqVO pageReqVo){
+        try {
+            UserLoginedConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            IPage<SysLogVO> pageResponse = this.sysLogService.listSysLog(username,logType,createTime,loginUser ,pageReqVo);
+            return PageResult.success(pageResponse.getRecords(),pageResponse.getCurrent(),pageResponse.getSize(),pageResponse.getTotal());
+        }catch (BDException e) {
+            log.error("系统日志列表查询-分页列表出现异常",e);
+            return  PageResult.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("系统日志管理: 系统日志列表查询出现异常",e);
+            return PageResult.error( "获取列表失败");
+        }
+    }
+
+
+    /**
+     * 导出列表
+     * @param
+     * @return
+     */
+    @ApiOperation(value = "导出Excel")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "username", value = "操作账号"),
+            @ApiImplicitParam(paramType = "query", name = "logType", value = "日志类型"),
+            @ApiImplicitParam(paramType = "query", name = "createTime", value = "操作日期")
+
+    })
+    @GetMapping({"/exportToExcel"})
+    @LogAnnotation(
+            type = OperateType.EXPORT,
+            moduleName = "导出系统日志列表",
+            description = "导出系统日志列表"
+    )
+    public void exportToExcel(HttpServletRequest request,@RequestHeader(name = "token", required = true) String token,
+                              @RequestParam(value = "username", required = false) String username,
+                              @RequestParam(value = "logType", required = false) String logType,
+                              @RequestParam(value = "createTime", required = false) String createTime,
+                              HttpServletResponse response) {
+        try {
+            UserLoginedConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            this.sysLogService.exportToExcel(username,logType,createTime,loginUser,response);
+        } catch (BDException e) {
+            log.error("导出系统日志列表出现异常",e);
+        } catch (Exception e) {
+            log.error("系统日志管理: 导出系统日志列表出现异常",e);
+        }
+    }
+
+}

+ 135 - 0
src/main/java/com/iden/bms/service/SysLogService.java

@@ -0,0 +1,135 @@
+package com.iden.bms.service;
+
+
+import cn.hutool.core.collection.CollUtil;
+
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.excel.write.metadata.fill.FillConfig;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.iden.common.entity.IdenSysLog;
+
+import com.iden.common.service.IdenSysLogService;
+import com.iden.common.service.IdenCommunityService;
+import com.iden.common.vo.SysLogVO;
+import com.iden.common.vo.PageReqVO;
+import com.iden.common.vo.UserLoginedConvertVO;
+
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import org.springframework.util.StringUtils;
+
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+
+import java.util.List;
+
+/**
+ *
+ * @author makejava
+ * @since 2021-05-21 00:08:38
+ */
+@Service
+public class SysLogService {
+
+    @Resource
+    private IdenSysLogService idenSysLogService;
+
+
+
+    /**
+     * 查询摄像头列表 username,logType,createTime,
+     * @return
+             */
+    public IPage<SysLogVO> listSysLog(String username, String logType, String createTime, UserLoginedConvertVO loginUser, PageReqVO pageReqVo) {
+
+            IPage<IdenSysLog> page = new Page<>(pageReqVo.getCurrent(), pageReqVo.getPageSize());
+            QueryWrapper<IdenSysLog> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().eq(StrUtil.isNotEmpty(username),IdenSysLog::getUsername,username)
+                    .eq(StrUtil.isNotEmpty(logType),IdenSysLog::getLogType,logType)
+                    .orderByDesc(IdenSysLog::getCreateTime);
+        if(!StringUtils.isEmpty(createTime)) {
+            queryWrapper.apply("DATE_FORMAT(create_time,'%Y-%m-%d') = {0}", createTime);
+        }
+            IPage<IdenSysLog> pageRes = this.idenSysLogService.page(page, queryWrapper);
+            IPage<SysLogVO> results = new Page<>(pageRes.getCurrent(),pageRes.getSize(),pageRes.getTotal());
+            if(CollUtil.isNotEmpty(pageRes.getRecords())){
+                List<SysLogVO> list = new ArrayList<>();
+                pageRes.getRecords().forEach(item -> {
+                    SysLogVO resVO = new SysLogVO();
+                    BeanUtils.copyProperties(item,resVO);
+                    list.add(resVO);
+                });
+                results.setRecords(list);
+            }
+            return results;
+    }
+
+    public void exportToExcel(String username, String logType, String createTime, UserLoginedConvertVO loginUser, HttpServletResponse response)  throws Exception {
+
+        QueryWrapper<IdenSysLog> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(StrUtil.isNotEmpty(username),IdenSysLog::getUsername,username)
+                .eq(StrUtil.isNotEmpty(logType),IdenSysLog::getLogType,logType)
+                .orderByDesc(IdenSysLog::getCreateTime);
+        if(!StringUtils.isEmpty(createTime)) {
+            queryWrapper.apply("DATE_FORMAT(create_time,'%Y-%m-%d') = {0}", createTime);
+        }
+        List<IdenSysLog>  list = this.idenSysLogService.list(queryWrapper);
+        List<SysLogVO> records = new ArrayList<>();
+        if(CollUtil.isNotEmpty(list)) {
+            list.forEach(item -> {
+                SysLogVO resVO = new SysLogVO();
+                BeanUtils.copyProperties(item, resVO);
+                records.add(resVO);
+            });
+        }
+        InputStream excelTemplateIs = null;
+        try {
+            response.reset(); // 非常重要
+            response.addHeader("Access-Control-Allow-Origin",  "*");
+            response.setContentType("application/vnd.ms-excel");
+            response.setCharacterEncoding("utf-8");
+            final String fileName = URLEncoder.encode("SysLog", "UTF-8");
+            response.setHeader("Content-disposition", "attachment;filename=" + fileName +"_"+ System.currentTimeMillis() + ".xlsx");
+
+            // 模板注意 用{} 来表示你要用的变量 如果本来就有"{","}" 特殊字符 用"\{","\}"代替
+            // {} 代表普通变量 {.} 代表是list的变量
+
+            excelTemplateIs = this.getClass().getResourceAsStream("/static/template/export/IdenSysLogExportTemplate.xlsx");
+
+            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(excelTemplateIs).build();
+            WriteSheet writeSheet = EasyExcel.writerSheet("系统日志表").build();
+            // 这里注意 入参用了forceNewRow 代表在写入list的时候不管list下面有没有空行 都会创建一行,然后下面的数据往后移动。默认 是false,会直接使用下一行,如果没有则创建。
+            // forceNewRow 如果设置了true,有个缺点 就是他会把所有的数据都放到内存了,所以慎用
+            // 简单的说 如果你的模板有list,且list不是最后一行,下面还有数据需要填充 就必须设置 forceNewRow=true 但是这个就会把所有数据放到内存 会很耗内存
+            // 如果数据量大 list不是最后一行 参照另一个
+            FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.FALSE).build();
+            excelWriter.fill(records, fillConfig, writeSheet);
+
+            excelWriter.finish();
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if(excelTemplateIs != null){
+                try {
+                    excelTemplateIs.close();
+                } catch (IOException ioe) {
+                    ioe.printStackTrace();
+                }
+            }
+        }
+    }
+
+}

+ 45 - 0
src/main/java/com/iden/common/vo/SysLogVO.java

@@ -0,0 +1,45 @@
+package com.iden.common.vo;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 系统日志表(IdenSysLog)实体类
+ *
+ * @author makejava
+ * @since 2021-12-29 14:08:35
+ */
+
+@Data
+@ApiModel(value = "系统日志表", description = "")
+public class SysLogVO implements Serializable {
+    private static final long serialVersionUID = -80515949956425107L;
+
+    private Long id;
+
+
+    @ApiModelProperty("日志类型")
+    private String logType;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    @ApiModelProperty("操作时间")
+    private Date createTime;
+
+
+    @ApiModelProperty("操作账号")
+    private String username;
+
+
+    @ApiModelProperty("操作内容")
+    private String content;
+
+    @ApiModelProperty("IP地址")
+    private String ip;
+
+}

+ 1 - 1
src/main/resources/application-dev.properties

@@ -35,7 +35,7 @@ iden.root=/data/iden/
 file.url=http://124.70.58.209:17778/
 
 ##是否初始化加载人脸识别库,是:1,不:0
-init.face.dataset=1
+init.face.dataset=0
 
 #视频编辑程序所在路径
 ffmpeg.path=/data/iden/ffmpeg/ffmpeg-git-20211217-amd64-static/ffmpeg

BIN
src/main/resources/static/template/export/IdenSysLogExportTemplate.xlsx