Browse Source

操作日志及登录日志导出

609324174@qq.com 4 years ago
parent
commit
7021c153c5
22 changed files with 440 additions and 15 deletions
  1. 23 0
      user_center/pom.xml
  2. 80 0
      user_center/src/main/java/com/huaxu/common/CustemhandlerUtils.java
  3. 121 0
      user_center/src/main/java/com/huaxu/common/EasyExcelUtil.java
  4. 1 1
      user_center/src/main/java/com/huaxu/config/ResourceServerConfig.java
  5. 16 4
      user_center/src/main/java/com/huaxu/controller/LoginLogController.java
  6. 13 0
      user_center/src/main/java/com/huaxu/controller/OperateLogController.java
  7. 79 0
      user_center/src/main/java/com/huaxu/controller/SysDownloadContorller.java
  8. 4 2
      user_center/src/main/java/com/huaxu/dao/LoginLogMapper.java
  9. 3 0
      user_center/src/main/java/com/huaxu/dao/OperateLogMapper.java
  10. 9 0
      user_center/src/main/java/com/huaxu/dto/LoginLogDto.java
  11. 7 0
      user_center/src/main/java/com/huaxu/dto/OperateLogDto.java
  12. 20 3
      user_center/src/main/java/com/huaxu/entity/LoginLogEntity.java
  13. 9 0
      user_center/src/main/java/com/huaxu/entity/OperateLogEntity.java
  14. 7 3
      user_center/src/main/java/com/huaxu/service/LoginLogService.java
  15. 7 0
      user_center/src/main/java/com/huaxu/service/OperateLogService.java
  16. 7 2
      user_center/src/main/java/com/huaxu/service/impl/LoginLogServiceImpl.java
  17. 5 0
      user_center/src/main/java/com/huaxu/service/impl/OperateLogServiceImpl.java
  18. 1 0
      user_center/src/main/resources/application-dev.properties
  19. 1 0
      user_center/src/main/resources/application-sit.properties
  20. 1 0
      user_center/src/main/resources/application-uat.properties
  21. 13 0
      user_center/src/main/resources/mapper/LoginLog.xml
  22. 13 0
      user_center/src/main/resources/mapper/OperateLog.xml

+ 23 - 0
user_center/pom.xml

@@ -21,6 +21,29 @@
            <artifactId>common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
+       <dependency>
+           <groupId>com.alibaba</groupId>
+           <artifactId>easyexcel</artifactId>
+           <version>2.2.6</version>
+           <exclusions>
+               <exclusion>
+                   <groupId>com.alibaba</groupId>
+                   <artifactId>fastjson</artifactId>
+               </exclusion>
+               <exclusion>
+                   <groupId>org.projectlombok</groupId>
+                   <artifactId>lombok</artifactId>
+               </exclusion>
+               <exclusion>
+                   <groupId>org.springframework.boot</groupId>
+                   <artifactId>spring-boot</artifactId>
+               </exclusion>
+               <exclusion>
+                   <groupId>org.springframework.boot</groupId>
+                   <artifactId>spring-boot-starter-web</artifactId>
+               </exclusion>
+           </exclusions>
+       </dependency>
    </dependencies>
 
 </project>

+ 80 - 0
user_center/src/main/java/com/huaxu/common/CustemhandlerUtils.java

@@ -0,0 +1,80 @@
+package com.huaxu.common;
+
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.CellData;
+import com.alibaba.excel.metadata.Head;
+import com.alibaba.excel.util.CollectionUtils;
+import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
+import com.alibaba.excel.write.style.column.AbstractColumnWidthStyleStrategy;
+import org.apache.poi.ss.usermodel.Cell;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author xjh
+ * @version 1.0
+ * @date 2020/10/19 19 19:21
+ */
+public class CustemhandlerUtils extends AbstractColumnWidthStyleStrategy {
+    private static final int MAX_COLUMN_WIDTH = 255;
+    //因为在自动列宽的过程中,有些设置地方让列宽显得紧凑,所以做出了个判断
+    private static final int COLUMN_WIDTH = 20;
+    private  Map<Integer, Map<Integer, Integer>> CACHE = new HashMap(8);
+
+    public CustemhandlerUtils() {
+    }
+
+    @Override
+    protected void setColumnWidth(WriteSheetHolder writeSheetHolder, List<CellData> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
+        boolean needSetWidth = isHead || !CollectionUtils.isEmpty(cellDataList);
+        if (needSetWidth) {
+            Map<Integer, Integer> maxColumnWidthMap = (Map)CACHE.get(writeSheetHolder.getSheetNo());
+            if (maxColumnWidthMap == null) {
+                maxColumnWidthMap = new HashMap(16);
+                CACHE.put(writeSheetHolder.getSheetNo(), maxColumnWidthMap);
+            }
+
+            Integer columnWidth = this.dataLength(cellDataList, cell, isHead);
+            if (columnWidth >= 0) {
+                if (columnWidth > MAX_COLUMN_WIDTH) {
+                    columnWidth = MAX_COLUMN_WIDTH;
+                }else {
+                    if(columnWidth<COLUMN_WIDTH){
+                        columnWidth =columnWidth;
+                    }
+                }
+
+                Integer maxColumnWidth = (Integer)((Map)maxColumnWidthMap).get(cell.getColumnIndex());
+                if (maxColumnWidth == null || columnWidth > maxColumnWidth) {
+                    ((Map)maxColumnWidthMap).put(cell.getColumnIndex(), columnWidth);
+                    writeSheetHolder.getSheet().setColumnWidth(cell.getColumnIndex(),  columnWidth* 256);
+                }
+            }
+        }
+    }
+
+    private  Integer dataLength(List<CellData> cellDataList, Cell cell, Boolean isHead) {
+        if (isHead) {
+            return cell.getStringCellValue().getBytes().length;
+        } else {
+            CellData cellData = (CellData)cellDataList.get(0);
+            CellDataTypeEnum type = cellData.getType();
+            if (type == null) {
+                return -1;
+            } else {
+                switch(type) {
+                    case STRING:
+                        return cellData.getStringValue().getBytes().length;
+                    case BOOLEAN:
+                        return cellData.getBooleanValue().toString().getBytes().length;
+                    case NUMBER:
+                        return cellData.getNumberValue().toString().getBytes().length;
+                    default:
+                        return -1;
+                }
+            }
+        }
+    }
+}

+ 121 - 0
user_center/src/main/java/com/huaxu/common/EasyExcelUtil.java

@@ -0,0 +1,121 @@
+package com.huaxu.common;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import com.alibaba.excel.metadata.Font;
+import com.alibaba.excel.metadata.Sheet;
+import com.alibaba.excel.metadata.TableStyle;
+import com.alibaba.excel.support.ExcelTypeEnum;
+import org.apache.commons.lang.time.DateFormatUtils;
+import org.apache.poi.ss.formula.functions.T;
+import org.apache.poi.ss.usermodel.FillPatternType;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
+import org.apache.poi.ss.usermodel.IndexedColors;
+import org.apache.poi.ss.usermodel.VerticalAlignment;
+import org.apache.poi.xssf.streaming.SXSSFSheet;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.format.DateTimeFormat;
+import com.alibaba.excel.annotation.format.NumberFormat;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.util.FileUtils;
+import com.alibaba.excel.write.merge.LoopMergeStrategy;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.excel.write.metadata.WriteTable;
+import com.alibaba.excel.write.metadata.style.WriteCellStyle;
+import com.alibaba.excel.write.metadata.style.WriteFont;
+import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+/**
+ * @ClassName EasyExcelUtil
+ * @Description: Excel导出通用工具类
+ * @Author :WYY
+ * @Date 2020/10/27
+ * @Version V1.0
+ **/
+public  class EasyExcelUtil {
+    /**
+     * @MethodName:Excel导出
+     * @Description: TODO
+     * @Param: path 导出基础路径 t实体名 excelName 文件名 data数据
+     * @Return:
+     * @Author: WYY
+     * @Date: 2020/10/28
+    **/
+    public static String excelWrite(String path,Class t, String excelName,List data) {
+        String filePath = "";
+        String fileName = DateFormatUtils.format(new Date(), "yyyy/MM/dd") + File.separator;
+        fileName = fileName + excelName + System.currentTimeMillis() + ".xlsx";
+        try {
+            getAbsoluteFile(path, fileName);
+            EasyExcel.write(path + fileName, t)
+                    .excelType(ExcelTypeEnum.XLSX)
+                    .registerWriteHandler(new CustemhandlerUtils())
+                    .registerWriteHandler(EasyExcelUtil.getStyleStrategy())
+                    .sheet("Export")
+                    .doWrite(data);
+            filePath = getPathFileName(path, fileName);
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+
+        }
+        return filePath;
+    }
+    private static final String getPathFileName(String uploadDir, String fileName) throws IOException {
+        String pathFileName = uploadDir  + "/" + fileName;
+        return ToolUtil.path(pathFileName);
+    }
+    private static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException {
+        File desc = new File(uploadDir + File.separator + fileName);
+
+        if (!desc.getParentFile().exists()) {
+            desc.getParentFile().mkdirs();
+        }
+
+        return desc;
+    }
+    public static HorizontalCellStyleStrategy getStyleStrategy(){
+        // 头的策略
+        WriteCellStyle headWriteCellStyle = new WriteCellStyle();
+        // 背景设置为灰色
+        headWriteCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+        WriteFont headWriteFont = new WriteFont();
+        headWriteFont.setFontHeightInPoints((short)12);
+        // 字体样式
+        headWriteFont.setFontName("Frozen");
+        headWriteCellStyle.setWriteFont(headWriteFont);
+        //自动换行
+        headWriteCellStyle.setWrapped(false);
+        // 水平对齐方式
+        headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
+        // 垂直对齐方式
+        headWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+
+        // 内容的策略
+        WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
+        // 这里需要指定 FillPatternType 为FillPatternType.SOLID_FOREGROUND 不然无法显示背景颜色.头默认了 FillPatternType所以可以不指定
+//        contentWriteCellStyle.setFillPatternType(FillPatternType.SQUARES);
+        // 背景白色
+        contentWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());
+        WriteFont contentWriteFont = new WriteFont();
+        // 字体大小
+        contentWriteFont.setFontHeightInPoints((short)12);
+        // 字体样式
+        contentWriteFont.setFontName("Calibri");
+        contentWriteCellStyle.setWriteFont(contentWriteFont);
+        // 这个策略是 头是头的样式 内容是内容的样式 其他的策略可以自己实现
+        return new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
+    }
+}

+ 1 - 1
user_center/src/main/java/com/huaxu/config/ResourceServerConfig.java

@@ -17,7 +17,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
                 .and()
                 .authorizeRequests()
                 .antMatchers("/swagger-ui.html","/webjars/**", "/webjars/**", "/swagger-resources/**",
-                        "/v2/**","/app/**","/user/**","/menu/**")
+                        "/v2/**","/app/**","/user/**","/menu/**","/loginLog/**","/operateLog/**","/excel/download/**")
                 .permitAll() //配置不需要身份认证的请求路径
                 .anyRequest().authenticated() //其他所有访问路径都需要身份认证
                 .and()

+ 16 - 4
user_center/src/main/java/com/huaxu/controller/LoginLogController.java

@@ -2,6 +2,7 @@ package com.huaxu.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaxu.common.EasyExcelUtil;
 import com.huaxu.dto.LoginLogDto;
 import com.huaxu.entity.LoginLogEntity;
 import com.huaxu.model.AjaxMessage;
@@ -12,6 +13,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -28,6 +30,8 @@ public class LoginLogController {
 
     @Autowired
     private LoginLogService loginLogService;
+    @Value("${UMIS.sys_excel_path}")
+    private String baseDir;
 
     /**
      * 通过主键查询单条数据
@@ -38,7 +42,7 @@ public class LoginLogController {
     @RequestMapping(value = "get", method = RequestMethod.POST)
     @ApiOperation(value = "根据id查询登录日志")
     public AjaxMessage<LoginLogDto> selectOne(
-            @ApiParam(value = "登录日志信息", required = true) @RequestParam Integer id) {
+            @ApiParam(value = "登录日志信息", required = true) @RequestParam Long id) {
         LoginLogDto result = loginLogService.selectById(id);
 
         return new AjaxMessage<>(ResultStatus.OK, result);
@@ -96,7 +100,7 @@ public class LoginLogController {
      */
     @RequestMapping(value = "delete", method = RequestMethod.POST)
     @ApiOperation(value = "删除登录日志信息")
-    public AjaxMessage<Integer> delete(@ApiParam(value = "登录日志信息", required = true) @RequestParam Integer id) {
+    public AjaxMessage<Integer> delete(@ApiParam(value = "登录日志信息", required = true) @RequestParam Long id) {
         int result = loginLogService.deleteById(id);
         return new AjaxMessage<>(ResultStatus.OK, result);
     }
@@ -113,8 +117,8 @@ public class LoginLogController {
     @ApiOperation(value = "查询登录日志信息列表")
     public AjaxMessage<Pagination<LoginLogDto>> selectPage(
             @ApiParam(value = "登录日志信息", required = true) @RequestBody LoginLogDto loginLogDto,
-            @ApiParam(value = "页数,非必传,默认第一页",  defaultValue = "1")  int pageNum,
-            @ApiParam(value = "条数,非必传,默认15条",  defaultValue = "30")  int pageSize
+            @ApiParam(value = "页数,非必传,默认第一页", defaultValue = "1") int pageNum,
+            @ApiParam(value = "条数,非必传,默认15条", defaultValue = "30") int pageSize
 
     ) {
         IPage<LoginLogDto> iPage = new Page<>(pageNum, pageSize);
@@ -125,4 +129,12 @@ public class LoginLogController {
 
         return new AjaxMessage<>(ResultStatus.OK, pages);
     }
+
+    @RequestMapping(value = "/exportExcel", method = RequestMethod.POST)
+    @ApiOperation(value = "登录日志导出")
+    public AjaxMessage<String> exportExcel(@ApiParam(value = "日志IDS", required = true) @RequestParam Long[] ids) {
+        List<LoginLogDto> result = loginLogService.selectListByIds(ids);
+        String filePath = EasyExcelUtil.excelWrite(baseDir, LoginLogDto.class, "登录日志", result);
+        return new AjaxMessage<>(ResultStatus.OK, filePath);
+    }
 }

+ 13 - 0
user_center/src/main/java/com/huaxu/controller/OperateLogController.java

@@ -2,6 +2,8 @@ package com.huaxu.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaxu.common.EasyExcelUtil;
+import com.huaxu.dto.LoginLogDto;
 import com.huaxu.dto.OperateLogDto;
 import com.huaxu.entity.OperateLogEntity;
 import com.huaxu.model.AjaxMessage;
@@ -12,6 +14,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -28,6 +31,8 @@ public class OperateLogController {
 
     @Autowired
     private OperateLogService operateLogService;
+    @Value("${UMIS.sys_excel_path}")
+    private String baseDir;
     /**
      * 通过主键查询单条数据
      *
@@ -124,4 +129,12 @@ public class OperateLogController {
 
         return new AjaxMessage<>(ResultStatus.OK, pages);
     }
+
+    @RequestMapping(value = "/exportExcel", method = RequestMethod.POST)
+    @ApiOperation(value = "操作日志导出")
+    public AjaxMessage<String> exportExcel(@ApiParam(value = "日志IDS", required = true) @RequestParam Long[] ids) {
+        List<OperateLogDto> result = operateLogService.selectListByIds(ids);
+        String filePath = EasyExcelUtil.excelWrite(baseDir, OperateLogDto.class, "操作日志", result);
+        return new AjaxMessage<>(ResultStatus.OK, filePath);
+    }
 }

+ 79 - 0
user_center/src/main/java/com/huaxu/controller/SysDownloadContorller.java

@@ -0,0 +1,79 @@
+package com.huaxu.controller;
+
+import cn.hutool.core.io.FileUtil;
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.net.URLDecoder;
+
+/**
+ * <p>下载控制</p>
+ *
+ * @author: WYY
+ * @date: 2020-10-28 11:33
+ * @version: 1.0.1
+ */
+@Slf4j
+@Controller
+@Api(tags = "通用下载接口")
+public class SysDownloadContorller {
+	@RequestMapping(value = "/excel/download", method = RequestMethod.GET)
+	public void download(HttpServletRequest request,
+						 HttpServletResponse response, @RequestParam("fileName") String fileName) {
+		try {
+			String path = fileName;
+			if (FileUtil.exist(path)) {
+				//浏览器设置
+				String userAgent = request.getHeader("User-Agent");
+				if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
+					//IE浏览器处理
+					fileName = java.net.URLEncoder.encode(fileName, "UTF-8");
+				} else {
+					// 非IE浏览器的处理:
+					fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
+				}
+				//下载的文件携带这个名称
+				response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+				//文件下载类型--二进制文件
+				response.setContentType("application/octet-stream");
+
+				File imageFile = FileUtil.file(path);
+				FileInputStream fis = new FileInputStream(imageFile);
+				byte[] buffer = new byte[1024];
+				ByteArrayOutputStream bos = new ByteArrayOutputStream(fis.available());
+				int len = 0;
+				while (-1 != (len = fis.read(buffer, 0, buffer.length))) {
+					bos.write(buffer, 0, len);
+				}
+				log.info("==============================下载包长度:!" + bos.size() + "   ========================");
+				response.setHeader("Content-Length", bos.size() + "");
+				fis.close();
+				ServletOutputStream sos = response.getOutputStream();
+				sos.write(bos.toByteArray());
+				sos.flush();
+				sos.close();
+				log.info("==============================下载完成![" + path + "]   ========================");
+				//删除
+				FileUtil.del(path);
+				return;
+			} else {
+				log.error("文件不存在");
+				return;
+			}
+		} catch (Exception e) {
+			log.error("下载文件异常");
+			return;
+		}
+	}
+}
+

+ 4 - 2
user_center/src/main/java/com/huaxu/dao/LoginLogMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.huaxu.dto.LoginLogDto;
 import com.huaxu.entity.LoginLogEntity;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -20,7 +21,7 @@ public interface LoginLogMapper {
      * @param id 主键
      * @return 实例对象
      */
-    LoginLogDto selectById(Integer id);
+    LoginLogDto selectById(Long id);
 
     /**
      * 查询全部
@@ -67,7 +68,7 @@ public interface LoginLogMapper {
      * @param id 主键
      * @return 影响行数
      */
-    int deleteById(Integer id);
+    int deleteById(Long id);
 
     /**
      * 查询总数据数
@@ -78,4 +79,5 @@ public interface LoginLogMapper {
 
     IPage<LoginLogDto> selectPage(IPage<LoginLogDto> page, LoginLogDto loginLogDto);
 
+    List<LoginLogDto> selectListByIds(@Param("ids") Long[] ids);
 }

+ 3 - 0
user_center/src/main/java/com/huaxu/dao/OperateLogMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.huaxu.dto.OperateLogDto;
 import com.huaxu.entity.OperateLogEntity;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -77,4 +78,6 @@ public interface OperateLogMapper {
     int count();
 
     IPage<OperateLogDto> selectPage(IPage<OperateLogDto> page, OperateLogDto operateLogDto);
+
+    List<OperateLogDto> selectListByIds(@Param("ids") Long[] ids);
 }

+ 9 - 0
user_center/src/main/java/com/huaxu/dto/LoginLogDto.java

@@ -1,5 +1,7 @@
 package com.huaxu.dto;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.huaxu.entity.LoginLogEntity;
 import io.swagger.annotations.ApiModelProperty;
@@ -16,16 +18,23 @@ import java.util.Date;
 public class LoginLogDto extends LoginLogEntity {
 
     @ApiModelProperty(value = "公司名称")
+    @ExcelProperty(value = {"登录日志","公司名称"},index = 0)
     private String companyName;
+
+    @ExcelProperty(value = {"登录日志","部门名称"},index = 1)
     @ApiModelProperty(value = "部门名称")
     private String departmentName;
 
+    @ExcelIgnore
     @ApiModelProperty(value = "查询条件(用户名/手机号)")
     private String condition;
+
+    @ExcelIgnore
     @ApiModelProperty(value = "查询条件(起始时间)" )
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date beginTime;
 
+    @ExcelIgnore
     @ApiModelProperty(value = "查询条件(终止时间)")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date endTime;

+ 7 - 0
user_center/src/main/java/com/huaxu/dto/OperateLogDto.java

@@ -1,5 +1,7 @@
 package com.huaxu.dto;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.huaxu.entity.OperateLogEntity;
 import io.swagger.annotations.ApiModelProperty;
@@ -15,16 +17,21 @@ import java.util.Date;
 @Data
 public class OperateLogDto extends OperateLogEntity {
 
+    @ExcelProperty(value = {"操作日志","公司名称"},index = 0)
     @ApiModelProperty(value = "公司名称")
     private String companyName;
+    @ExcelProperty(value = {"操作日志","部门名称"},index = 1)
     @ApiModelProperty(value = "部门名称")
     private String departmentName;
 
+    @ExcelIgnore
     @ApiModelProperty(value = "查询条件(用户名/手机号)")
     private String condition;
+    @ExcelIgnore
     @ApiModelProperty(value = "查询条件(起始时间)" )
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date beginTime;
+    @ExcelIgnore
     @ApiModelProperty(value = "查询条件(终止时间)" )
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date endTime;

+ 20 - 3
user_center/src/main/java/com/huaxu/entity/LoginLogEntity.java

@@ -1,5 +1,7 @@
 package com.huaxu.entity;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -17,21 +19,36 @@ public class LoginLogEntity implements Serializable {
 
     private static final long serialVersionUID = 2497615333704709016L;
 
+    @ExcelIgnore
     @ApiModelProperty(value = "主键id")
     private Long id ;
+
+    @ExcelProperty(value = {"登录日志","用户名"},index = 2)
     @ApiModelProperty(value = "用户名")
     private String name;
+
+    @ExcelProperty(value = {"登录日志","手机号"},index = 3)
     @ApiModelProperty(value = "手机号")
     private String phone;
+
+    @ExcelIgnore
     @ApiModelProperty(value = "公司id")
-    private Integer companyId;
+    private Long companyId;
+
+    @ExcelIgnore
     @ApiModelProperty(value = "部门id")
-    private Integer departmentId;
+    private Long departmentId;
+
+    @ExcelProperty(value = {"登录日志","登录类型"},index = 4)
     @ApiModelProperty(value = "登录类型")
-    private Integer type;
+    private String type;
+
+    @ExcelProperty(value = {"登录日志","创建时间"},index = 6)
     @ApiModelProperty(value = "创建时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createTime;
+
+    @ExcelProperty(value = {"登录日志","登录IP"},index = 5)
     @ApiModelProperty(value = "登录IP")
     private String loginIp;
 }

+ 9 - 0
user_center/src/main/java/com/huaxu/entity/OperateLogEntity.java

@@ -1,5 +1,7 @@
 package com.huaxu.entity;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -17,18 +19,25 @@ public class OperateLogEntity implements Serializable {
 
     private static final long serialVersionUID = 7048815501996712070L;
 
+    @ExcelIgnore
     @ApiModelProperty(value = "主键id")
     private Long id ;
+    @ExcelProperty(value = {"操作日志","用户名"},index = 2)
     @ApiModelProperty(value = "用户名")
     private String userName;
+    @ExcelProperty(value = {"操作日志","手机号"},index = 3)
     @ApiModelProperty(value = "手机号")
     private String phone;
+    @ExcelIgnore
     @ApiModelProperty(value = "公司id")
     private Integer companyId;
+    @ExcelIgnore
     @ApiModelProperty(value = "部门id")
     private Integer departmentId;
+    @ExcelProperty(value = {"操作日志","操作内容"},index = 4)
     @ApiModelProperty(value = "操作内容")
     private String operateContent;
+    @ExcelProperty(value = {"操作日志","创建时间"},index = 5)
     @ApiModelProperty(value = "创建时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createTime;

+ 7 - 3
user_center/src/main/java/com/huaxu/service/LoginLogService.java

@@ -19,7 +19,7 @@ public interface LoginLogService {
      * @param id 主键
      * @return 实例对象
      */
-    LoginLogDto selectById(Integer id);
+    LoginLogDto selectById(Long id);
 
     /**
      * 查询全部
@@ -66,7 +66,7 @@ public interface LoginLogService {
      * @param id 主键
      * @return 影响行数
      */
-    int deleteById(Integer id);
+    int deleteById(Long id);
 
     /**
      * 查询总数据数
@@ -76,5 +76,9 @@ public interface LoginLogService {
     int count();
 
     IPage<LoginLogDto> selectPage(IPage<LoginLogDto> page, LoginLogDto loginLogDto);
-
+    /**
+     * 通过实体作为筛选条件查询
+     * @return 对象列表
+     */
+    List<LoginLogDto> selectListByIds(Long[] Ids);
 }

+ 7 - 0
user_center/src/main/java/com/huaxu/service/OperateLogService.java

@@ -1,6 +1,7 @@
 package com.huaxu.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.huaxu.dto.LoginLogDto;
 import com.huaxu.dto.OperateLogDto;
 import com.huaxu.entity.OperateLogEntity;
 
@@ -75,4 +76,10 @@ public interface OperateLogService {
     int count();
 
     IPage<OperateLogDto> selectPage(IPage<OperateLogDto> page, OperateLogDto operateLogDto);
+
+    /**
+     * 通过实体作为筛选条件查询
+     * @return 对象列表
+     */
+    List<OperateLogDto> selectListByIds(Long[] Ids);
 }

+ 7 - 2
user_center/src/main/java/com/huaxu/service/impl/LoginLogServiceImpl.java

@@ -22,7 +22,7 @@ public class LoginLogServiceImpl implements LoginLogService {
     private LoginLogMapper loginLogMapper;
 
     @Override
-    public LoginLogDto selectById(Integer id) {
+    public LoginLogDto selectById(Long id) {
         return loginLogMapper.selectById(id);
     }
 
@@ -52,7 +52,7 @@ public class LoginLogServiceImpl implements LoginLogService {
     }
 
     @Override
-    public int deleteById(Integer id) {
+    public int deleteById(Long id) {
         return loginLogMapper.deleteById(id);
     }
 
@@ -65,4 +65,9 @@ public class LoginLogServiceImpl implements LoginLogService {
     public IPage<LoginLogDto> selectPage(IPage<LoginLogDto> page, LoginLogDto loginLogDto) {
         return loginLogMapper.selectPage(page, loginLogDto);
     }
+
+    @Override
+    public List<LoginLogDto> selectListByIds(Long[] Ids) {
+        return loginLogMapper.selectListByIds(Ids);
+    }
 }

+ 5 - 0
user_center/src/main/java/com/huaxu/service/impl/OperateLogServiceImpl.java

@@ -65,4 +65,9 @@ public class OperateLogServiceImpl implements OperateLogService {
     public IPage<OperateLogDto> selectPage(IPage<OperateLogDto> page, OperateLogDto operateLogDto) {
         return operateLogMapper.selectPage(page, operateLogDto);
     }
+
+    @Override
+    public List<OperateLogDto> selectListByIds(Long[] Ids) {
+        return operateLogMapper.selectListByIds(Ids);
+    }
 }

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

@@ -65,6 +65,7 @@ spring.kafka.consumer.properties.spring.json.trusted.packages=*
 #nacos
 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
 UMIS.sys_config_path=E:/UMIS_USER_IMAGES/
+UMIS.sys_excel_path=E:/UMIS_USER_EXCEL/
 
 
 

+ 1 - 0
user_center/src/main/resources/application-sit.properties

@@ -91,4 +91,5 @@ dubbo.application.qos-accept-foreign-ip=false
 login.auth.tips.template=7lh0fkmppfPywI4YfrnMOAKQTGXzjueU6awMRD7KRUk
 spring.cloud.stream.bindings.wechat-notify-message.destination=wechat_notify_channel_sit
 UMIS.sys_config_path=/UMIS_USER_IMAGES/
+UMIS.sys_excel_path=/UMIS_USER_EXCEL/
 

+ 1 - 0
user_center/src/main/resources/application-uat.properties

@@ -94,3 +94,4 @@ dubbo.application.qos-accept-foreign-ip=false
 login.auth.tips.template=7lh0fkmppfPywI4YfrnMOAKQTGXzjueU6awMRD7KRUk
 spring.cloud.stream.bindings.wechat-notify-message.destination=wechat_notify_channel_uat
 UMIS.sys_config_path=/UMIS_USER_IMAGES/
+UMIS.sys_excel_path=/UMIS_USER_EXCEL/

+ 13 - 0
user_center/src/main/resources/mapper/LoginLog.xml

@@ -78,6 +78,19 @@
             </if>
         </where>
     </select>
+    <!--通过实体作为筛选条件查询-->
+    <select id="selectListByIds" resultMap="LoginLogMap">
+        select
+        <include refid="Base_Column_List"/>
+        from uims_login_log a
+        <include refid="loginLogJoins"/>
+        <where>
+             a.id in
+            <foreach collection = "ids" item = "dramaId" open = "(" close = ")" separator = "," >
+                #{dramaId}
+            </foreach>
+        </where>
+    </select>
     <!-- 新增所有列 -->
     <insert id="insert" keyProperty="id" useGeneratedKeys="true">
         insert into uims_login_log( name, phone, company_id, DEPARTMENT_ID, type, create_time, login_ip)

+ 13 - 0
user_center/src/main/resources/mapper/OperateLog.xml

@@ -77,6 +77,19 @@
             </if>
         </where>
     </select>
+    <!--通过实体作为筛选条件查询-->
+    <select id="selectListByIds" resultMap="OperateLogMap">
+        select
+        <include refid="Base_Column_List"/>
+        from uims_opr_log a
+        <include refid="loginLogJoins"/>
+        <where>
+            a.id in
+            <foreach collection = "ids" item = "dramaId" open = "(" close = ")" separator = "," >
+                #{dramaId}
+            </foreach>
+        </where>
+    </select>
     <!-- 新增所有列 -->
     <insert id="insert" keyProperty="id" useGeneratedKeys="true">
         insert into uims_opr_log( USER_NAME, phone, company_id, DEPARTMENT_ID, operate_content, create_time )