Browse Source

后端通过excelmodel模板进行导出,信件详细页面,数据脱敏

dev-jl
laishajiang 2 years ago
parent
commit
9481f8ad93
  1. BIN
      lib/javax.annotation.jar
  2. BIN
      lib/javax.ejb.jar
  3. BIN
      lib/javax.jms.jar
  4. BIN
      lib/javax.persistence.jar
  5. BIN
      lib/javax.resource.jar
  6. BIN
      lib/javax.servlet.jar
  7. BIN
      lib/javax.servlet.jsp.jar
  8. BIN
      lib/javax.servlet.jsp.jstl.jar
  9. BIN
      lib/javax.transaction.jar
  10. 19
      mailbox-outer-admin/pom.xml
  11. 19
      mailbox-outer-admin/src/main/java/com/biutag/outeradmin/config/MyBatisPlusConfig.java
  12. 2
      mailbox-outer-admin/src/main/java/com/biutag/outeradmin/controller/HolidayController.java
  13. 129
      mailbox-outer-admin/src/main/java/com/biutag/outeradmin/controller/MailController.java
  14. 74
      mailbox-outer-admin/src/main/java/com/biutag/outeradmin/domain/MailDto.java
  15. 16
      mailbox-outer-admin/src/main/java/com/biutag/outeradmin/entity/FormData.java
  16. 10
      mailbox-outer-admin/src/main/java/com/biutag/outeradmin/entity/FormPage.java
  17. 75
      mailbox-outer-admin/src/main/java/com/biutag/outeradmin/entity/Mail.java
  18. 8
      mailbox-outer-admin/src/main/java/com/biutag/outeradmin/entity/MailID.java
  19. 11
      mailbox-outer-admin/src/main/java/com/biutag/outeradmin/entity/MailPageInfo.java
  20. 10
      mailbox-outer-admin/src/main/java/com/biutag/outeradmin/entity/PageSet.java
  21. 9
      mailbox-outer-admin/src/main/java/com/biutag/outeradmin/mapper/MailMapper.java
  22. 10
      mailbox-outer-admin/src/main/java/com/biutag/outeradmin/service/MailService.java
  23. 3
      mailbox-outer-admin/src/main/java/com/biutag/outeradmin/service/impl/HolidayServiceImpl.java
  24. 23
      mailbox-outer-admin/src/main/java/com/biutag/outeradmin/util/DesensitizedUtil.java
  25. 76
      mailbox-outer-admin/src/main/java/com/biutag/outeradmin/util/ExcelUtil.java
  26. 4
      mailbox-outer-admin/src/main/java/com/biutag/outeradmin/util/HolidayUtil.java
  27. BIN
      mailbox-outer-admin/src/main/resources/excelmodel.xlsx

BIN
lib/javax.annotation.jar

Binary file not shown.

BIN
lib/javax.ejb.jar

Binary file not shown.

BIN
lib/javax.jms.jar

Binary file not shown.

BIN
lib/javax.persistence.jar

Binary file not shown.

BIN
lib/javax.resource.jar

Binary file not shown.

BIN
lib/javax.servlet.jar

Binary file not shown.

BIN
lib/javax.servlet.jsp.jar

Binary file not shown.

BIN
lib/javax.servlet.jsp.jstl.jar

Binary file not shown.

BIN
lib/javax.transaction.jar

Binary file not shown.

19
mailbox-outer-admin/pom.xml

@ -3,18 +3,8 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<parent>
<groupId>com.biutag</groupId>
<artifactId>mailbox-boot</artifactId>
@ -75,6 +65,11 @@
<groupId>${groupId}</groupId>
<artifactId>mailbox-common</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.2</version>
</dependency>
</dependencies>

19
mailbox-outer-admin/src/main/java/com/biutag/outeradmin/config/MyBatisPlusConfig.java

@ -0,0 +1,19 @@
package com.biutag.outeradmin.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan("com.biutag.outeradmin.mapper")
public class MyBatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.POSTGRE_SQL));
return interceptor;
}
}

2
mailbox-outer-admin/src/main/java/com/biutag/outeradmin/controller/HolidayController.java

@ -1,7 +1,7 @@
package com.biutag.outeradmin.controller;
import com.biutag.core.AjaxResult;
import com.biutag.outeradmin.model.dto.LoginDto;
import com.biutag.outeradmin.model.vo.HolidayVo;
import com.biutag.outeradmin.service.HolidayService;
import io.swagger.annotations.Api;

129
mailbox-outer-admin/src/main/java/com/biutag/outeradmin/controller/MailController.java

@ -0,0 +1,129 @@
package com.biutag.outeradmin.controller;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.biutag.outeradmin.entity.*;
import com.biutag.outeradmin.mapper.MailMapper;
import com.biutag.outeradmin.service.MailService;
import com.biutag.outeradmin.util.DesensitizedUtil;
import com.biutag.outeradmin.util.ExcelUtil;
import com.biutag.util.StringUtils;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.util.List;
@RequiredArgsConstructor
@RequestMapping("/mailbox")
@RestController
public class MailController {
private final MailService mailService;
private final MailMapper mailMapper;
/**
* 查询所有信件
*
* @return 信件列表json
*/
@RequestMapping("/list")
public MailPageInfo list(@RequestBody String req) {
PageSet pageSet = JSON.parseObject(req, PageSet.class);
Page<Mail> page = new Page<>(pageSet.getCurrentPage(), pageSet.getPageSize());
List<Mail> mailPage = mailMapper.selectPage(page, null).getRecords();
for (Mail mail : mailPage) {
mail.setContactIdCard(DesensitizedUtil.encryptIDCard(mail.getContactIdCard()));
mail.setContactPhone(DesensitizedUtil.encryptPhone(mail.getContactPhone()));
}
pageSet.setTotalSize((int) page.getTotal());
MailPageInfo result = new MailPageInfo();
result.setMails(mailPage);
result.setPageSet(pageSet);
return result;
}
/**
* 查询指定信件
*
* @param form 前端信件表单数据
* @return 指定信件json
*/
@RequestMapping("/list-submit")
public MailPageInfo siftList(@RequestBody String form) {
//todo 这里根据表单数据查询数据库,记得删掉
System.out.println(form);
FormPage formPage = JSON.parseObject(form, FormPage.class);
QueryWrapper<Mail> queryWrapper = new QueryWrapper<>();
if(formPage != null && formPage.getFormData()!= null && formPage.getPageData()!= null){
FormData formData = formPage.getFormData();
queryWrapper.lambda().like(StringUtils.isNotEmpty(formData.getContactName()), Mail::getContactName, formData.getContactName())
.like(StringUtils.isNotEmpty(formData.getContactPhone()), Mail::getContactPhone, formData.getContactPhone())
.like(StringUtils.isNotEmpty(formData.getContactIdCard()), Mail::getContactIdCard, formData.getContactIdCard())
.like(StringUtils.isNotEmpty(formData.getId()), Mail::getId, formData.getId())
.like(StringUtils.isNotEmpty(formData.getContent()), Mail::getContent, formData.getContent());
if (CollectionUtils.isNotEmpty(formData.getDate()) && formData.getDate().size() == 2) {
queryWrapper.lambda().between(Mail::getCreateTime, formData.getDate().get(0), formData.getDate().get(1));
}
}
PageSet pageSet = formPage.getPageData();
Page<Mail> page = new Page<>(pageSet.getCurrentPage(), pageSet.getPageSize());
List<Mail> mailPage = mailMapper.selectPage(page, queryWrapper).getRecords();
for (Mail mail : mailPage) {
mail.setContactIdCard(DesensitizedUtil.encryptIDCard(mail.getContactIdCard()));
mail.setContactPhone(DesensitizedUtil.encryptPhone(mail.getContactPhone()));
}
pageSet.setTotalSize((int) page.getTotal());
MailPageInfo result = new MailPageInfo();
result.setMails(mailPage);
result.setPageSet(pageSet);
return result;
}
/**
* 查询指定信件详情
*
* @param id 信件ID
* @return 指定信件详情json
*/
@RequestMapping("/detail")
public String detail(@RequestBody String id) {
MailID mailID = JSON.parseObject(id, MailID.class);
//TODO 这里根据ID查询数据库,记得删掉
System.out.println(mailID.getID());
Mail mail = mailService.getById(mailID.getID());
mail.setContactIdCard(DesensitizedUtil.encryptIDCard(mail.getContactIdCard()));
mail.setContactPhone(DesensitizedUtil.encryptPhone(mail.getContactPhone()));
return JSON.toJSONString(mail);
}
@RequestMapping("/exportexcel")
public void exportexcel(HttpServletResponse response,@RequestBody String form) throws IOException {
FormPage formPage = JSON.parseObject(form, FormPage.class);
QueryWrapper<Mail> queryWrapper = new QueryWrapper<>();
if(formPage != null && formPage.getFormData()!= null && formPage.getPageData()!= null){
FormData formData = formPage.getFormData();
queryWrapper.lambda().like(StringUtils.isNotEmpty(formData.getContactName()), Mail::getContactName, formData.getContactName())
.like(StringUtils.isNotEmpty(formData.getContactPhone()), Mail::getContactPhone, formData.getContactPhone())
.like(StringUtils.isNotEmpty(formData.getContactIdCard()), Mail::getContactIdCard, formData.getContactIdCard())
.like(StringUtils.isNotEmpty(formData.getId()), Mail::getId, formData.getId())
.like(StringUtils.isNotEmpty(formData.getContent()), Mail::getContent, formData.getContent());
if (CollectionUtils.isNotEmpty(formData.getDate()) && formData.getDate().size() == 2) {
queryWrapper.lambda().between(Mail::getCreateTime, formData.getDate().get(0), formData.getDate().get(1));
}
}
List<Mail> mailPage = mailMapper.selectList( queryWrapper);
for (Mail mail : mailPage) {
mail.setContactIdCard(DesensitizedUtil.encryptIDCard(mail.getContactIdCard()));
mail.setContactPhone(DesensitizedUtil.encryptPhone(mail.getContactPhone()));
}
ExcelUtil.exportExcel(response, mailPage);
}
}

74
mailbox-outer-admin/src/main/java/com/biutag/outeradmin/domain/MailDto.java

@ -0,0 +1,74 @@
package com.biutag.outeradmin.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MailDto {
/**
* 联系人姓名
*/
private String contactName;
/**
* 联系人性别
*/
private String contactSex;
/**
* 联系人身份证号码
*/
private String contactIdCard;
/**
* 联系人手机号码
*/
private String contactPhone;
/**
* 案件编号
*/
private String caseNumber;
/**
* 内容
*/
private String content;
/**
* 附件
*/
private String attachments;
/**
* 用户ID
*/
private Integer userId;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
// /**
// * 评价
// */
// private String evaluate;
/**
* 是否满意
*/
private String satisfaction;
}

16
mailbox-outer-admin/src/main/java/com/biutag/outeradmin/entity/FormData.java

@ -0,0 +1,16 @@
package com.biutag.outeradmin.entity;
import lombok.Data;
import java.util.List;
@Data
public class FormData {
private List<String> date;
private String contactName;
private String contactPhone;
private String contactIdCard;
private String id;
private String content;
private String evaluate;
}

10
mailbox-outer-admin/src/main/java/com/biutag/outeradmin/entity/FormPage.java

@ -0,0 +1,10 @@
package com.biutag.outeradmin.entity;
import lombok.Data;
@Data
public class FormPage {
private FormData formData;
private PageSet pageData;
}

75
mailbox-outer-admin/src/main/java/com/biutag/outeradmin/entity/Mail.java

@ -0,0 +1,75 @@
package com.biutag.outeradmin.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
@Data
@TableName("mail")
public class Mail {
@TableId
private String id;
/**
* 联系人姓名
*/
private String contactName;
/**
* 联系人性别
*/
private String contactSex;
/**
* 联系人身份证号码
*/
private String contactIdCard;
/**
* 联系人手机号码
*/
private String contactPhone;
/**
* 案件编号
*/
private String caseNumber;
/**
* 内容
*/
private String content;
/**
* 附件
*/
private String attachments;
/**
* 用户ID
*/
private Integer userId;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
// /**
// * 评价
// */
// private String evaluate;
/**
* 是否满意
*/
private String satisfaction;
}

8
mailbox-outer-admin/src/main/java/com/biutag/outeradmin/entity/MailID.java

@ -0,0 +1,8 @@
package com.biutag.outeradmin.entity;
import lombok.Data;
@Data
public class MailID {
private String ID;
}

11
mailbox-outer-admin/src/main/java/com/biutag/outeradmin/entity/MailPageInfo.java

@ -0,0 +1,11 @@
package com.biutag.outeradmin.entity;
import lombok.Data;
import java.util.List;
@Data
public class MailPageInfo {
private List<Mail> mails;
private PageSet pageSet;
}

10
mailbox-outer-admin/src/main/java/com/biutag/outeradmin/entity/PageSet.java

@ -0,0 +1,10 @@
package com.biutag.outeradmin.entity;
import lombok.Data;
@Data
public class PageSet {
private int currentPage;
private int pageSize;
private int totalSize;
}

9
mailbox-outer-admin/src/main/java/com/biutag/outeradmin/mapper/MailMapper.java

@ -0,0 +1,9 @@
package com.biutag.outeradmin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.biutag.outeradmin.entity.Mail;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface MailMapper extends BaseMapper<Mail> {
}

10
mailbox-outer-admin/src/main/java/com/biutag/outeradmin/service/MailService.java

@ -0,0 +1,10 @@
package com.biutag.outeradmin.service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.biutag.outeradmin.entity.Mail;
import com.biutag.outeradmin.mapper.MailMapper;
import org.springframework.stereotype.Service;
@Service
public class MailService extends ServiceImpl<MailMapper, Mail> {
}

3
mailbox-outer-admin/src/main/java/com/biutag/outeradmin/service/impl/HolidayServiceImpl.java

@ -5,7 +5,8 @@ import com.biutag.outeradmin.mapper.HolidayMapper;
import com.biutag.outeradmin.model.vo.HolidayVo;
import com.biutag.outeradmin.service.HolidayService;
import com.biutag.outeradmin.utils.HolidayUtil;
import com.biutag.outeradmin.util.HolidayUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

23
mailbox-outer-admin/src/main/java/com/biutag/outeradmin/util/DesensitizedUtil.java

@ -0,0 +1,23 @@
package com.biutag.outeradmin.util;
import com.biutag.util.StringUtils;
public class DesensitizedUtil {
public static String encryptIDCard(String idCard) {
if (StringUtils.isNotBlank(idCard)) {
if (idCard.length() == 15) {
idCard = idCard.replaceAll("(\\w{6})\\w*(\\w{4})", "$1******$2");
}
if (idCard.length() == 18) {
idCard = idCard.replaceAll("(\\w{6})\\w*(\\w{4})", "$1*********$2");
}
}
return idCard;
}
public static String encryptPhone(String phone) {
if (StringUtils.isNotBlank(phone)) {
phone = phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
}
return phone;
}
}

76
mailbox-outer-admin/src/main/java/com/biutag/outeradmin/util/ExcelUtil.java

@ -0,0 +1,76 @@
package com.biutag.outeradmin.util;
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.alibaba.excel.write.metadata.fill.FillWrapper;
import com.biutag.outeradmin.entity.Mail;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.*;
public class ExcelUtil {
public static void exportExcel(HttpServletResponse response,List<Mail> mailPage) throws IOException {
// 模板文件
// String templateFile = "/excelmodel.xlsx";
Resource resource = new ClassPathResource("excelmodel.xlsx");
InputStream is = resource.getInputStream();
// long date = new Date().getTime();
Calendar calendar = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(formatter.format(calendar.getTime()));
String name = formatter.format(calendar.getTime())+".xlsx";
String fileName = new String(name.getBytes());
response.setContentType("application/octet-stream");
response.setCharacterEncoding("utf8");
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
// 根据模板文件生成目标文件
ExcelWriter excelWriter = EasyExcel
.write(response.getOutputStream(), Mail.class)
.withTemplate(is)
// 单独设置单元格格式
// .registerWriteHandler(new CellStyleHandler())
.build();
WriteSheet writeSheet = EasyExcel.writerSheet().build();
// 每次都会重新生成新的一行,而不是使用下面的空行
FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
// 第一种占位符替换
// Map<String, Object> map = new HashMap<String, Object>();
// map.put("reportDate", reportDate);
// excelWriter.fill(map, writeSheet);
// 第二种占位符替换,这里定义了 hisData
System.out.println(mailPage);
excelWriter.fill(new FillWrapper("mailPage",mailPage),fillConfig, writeSheet);
excelWriter.finish();
}
//
// private static List<MailDto> mailData(){
// List<MailDto> resList = new ArrayList<>();
// MailDto mailData = MailDto.builder()
// .contactName("today")
// .contactIdCard("34.211")
// .contactPhone("1.222")
// .caseNumber("34.211")
// .createTime(new Date())
// .build();
// resList.add(mailData);
// return resList;
// }
}

4
mailbox-outer-admin/src/main/java/com/biutag/outeradmin/utils/HolidayUtil.java → mailbox-outer-admin/src/main/java/com/biutag/outeradmin/util/HolidayUtil.java

@ -1,4 +1,4 @@
package com.biutag.outeradmin.utils;
package com.biutag.outeradmin.util;
import com.biutag.outeradmin.domain.Holiday;
@ -11,10 +11,8 @@ import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;

BIN
mailbox-outer-admin/src/main/resources/excelmodel.xlsx

Binary file not shown.
Loading…
Cancel
Save