From 39f55c08933e7f0292c325f41b0f55390a4acc69 Mon Sep 17 00:00:00 2001 From: wl <173@qq.com> Date: 星期一, 25 七月 2022 09:24:05 +0800 Subject: [PATCH] 添加验证,更新前端,修复bug --- src/main/java/com/example/jz/service/impl/ReportServiceImpl.java | 148 +++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 143 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/example/jz/service/impl/ReportServiceImpl.java b/src/main/java/com/example/jz/service/impl/ReportServiceImpl.java index c56e2c2..3fa340e 100644 --- a/src/main/java/com/example/jz/service/impl/ReportServiceImpl.java +++ b/src/main/java/com/example/jz/service/impl/ReportServiceImpl.java @@ -1,21 +1,48 @@ package com.example.jz.service.impl; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.metadata.data.ImageData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.support.ExcelTypeEnum; +import com.alibaba.excel.util.IoUtils; +import com.alibaba.excel.util.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.example.jz.dao.CauseDao; -import com.example.jz.dao.GroupDao; -import com.example.jz.dao.GroupUserDao; -import com.example.jz.dao.ReportDao; +import com.example.jz.dao.*; +import com.example.jz.modle.dto.AddReportDto; +import com.example.jz.modle.dto.ReportParamDto; import com.example.jz.modle.entity.Group; import com.example.jz.modle.entity.GroupUser; import com.example.jz.modle.entity.Report; +import com.example.jz.modle.entity.User; +import com.example.jz.modle.vo.ReportListVo; +import com.example.jz.dao.*; +import com.example.jz.modle.entity.*; +import com.example.jz.modle.vo.ExportExcelReportVo; +import com.example.jz.modle.vo.ReportListVo; +import com.example.jz.service.MinIOService; import com.example.jz.service.ReportService; +import lombok.SneakyThrows; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.Serializable; +import java.net.URL; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.io.Serializable; import java.util.Date; +import java.util.List; /** * 鎶ユ琛�(Report)琛ㄦ湇鍔″疄鐜扮被 @@ -32,6 +59,15 @@ private GroupDao groupDao; @Autowired private GroupUserDao groupUserDao; + + @Resource + CauseDao causeDao; + + @Resource + UserDao userDao; + + @Resource + MinIOService minIOService; /** * 瀹℃牳鎶ユ @@ -55,7 +91,109 @@ @Override public void leaveGroup(Integer id, Integer groupId) { - groupUserDao.delete(new QueryWrapper<GroupUser>().eq("user_id",id).eq("group_id",groupId)); + groupUserDao.delete(new QueryWrapper<GroupUser>().eq("user_id", id).eq("group_id", groupId)); + } + + @Override + @SneakyThrows + public void exportReporter(Integer id, HttpServletResponse response) { + //鏌ヨ鎶ユ浜虹浉鍏充俊鎭�氳繃妗堜欢 + List<Report> reports = reportDao.selectList(new QueryWrapper<Report>().eq("cause_id", id).orderByDesc()); + ArrayList<ExportExcelReportVo> exportExcelReportVos = new ArrayList<>(); + reports.forEach( + a -> { + ExportExcelReportVo exportExcelReportVo = new ExportExcelReportVo(); + User user = userDao.selectOne(new QueryWrapper<User>().eq("id", a.getUserId())); + BeanUtils.copyProperties(a, exportExcelReportVo); + exportExcelReportVo.setUserIdcard(user.getUserIdcard()); + exportExcelReportVo.setUserMobile(user.getUserMobile()); + exportExcelReportVo.setRealName(user.getRealName()); + WriteCellData<List<ImageData>> objectWriteCellData = new WriteCellData<>(); + ArrayList<ImageData> imageDataList = new ArrayList<>(); + if (StringUtils.isNotBlank(a.getReportMaterials())) { + String[] urls = a.getReportMaterials().split(","); + if (urls.length == 1) { + int width = 600; + try { + ImageData imageData = new ImageData(); + imageData.setImage(IoUtils.toByteArray(new URL(minIOService.getPreviewFileUrl(urls[0])).openConnection().getInputStream())); + imageData.setRight(width / 2); + imageDataList.add(imageData); + } catch (Exception e) { + throw new RuntimeException(e); + } + } else { + for (int i = 0; i < urls.length; i++) { + int width = 600; + try { + ImageData imageData = new ImageData(); + imageData.setImage(IoUtils.toByteArray(new URL(minIOService.getPreviewFileUrl(urls[i])).openConnection().getInputStream())); + imageData.setLeft(width / urls.length * i); + imageData.setRight(width - width / urls.length * (i + 1)); + imageDataList.add(imageData); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + } + objectWriteCellData.setImageDataList(imageDataList); + exportExcelReportVo.setWriteCellData(objectWriteCellData); + exportExcelReportVos.add(exportExcelReportVo); + } + ); + String name = causeDao.selectOne(new QueryWrapper<Cause>().eq("id", id)).getName(); + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + response.setHeader("Content-disposition", "attachment;filename=" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + URLEncoder.encode(name + ".xlsx", "utf-8")); + EasyExcel.write(response.getOutputStream(), ExportExcelReportVo.class).sheet("鏉愭枡瀵煎嚭").doWrite(exportExcelReportVos); + } + + @Override + public Page<ReportListVo> getPage(Page<ReportListVo> page, ReportParamDto reportParamDto) { + Page<ReportListVo> aaa = reportDao.getPage(page, reportParamDto); + aaa.getRecords().stream().forEach(x -> x.setIdcard(x.getIdcard().replaceAll("(?<=[\\d]{3})\\d(?=[\\d]{4})", "*"))); + return aaa; + } + + @Override + public ReportListVo getReportListVoById(Serializable id) { + return reportDao.getReportListVoById(id); + } + + @Override + public Page<ReportListVo> getPageByGroupId(Page<ReportListVo> page, ReportParamDto reportParamDto, Integer groupId) { + Page<ReportListVo> aaa = reportDao.getPageByGroupId(page, reportParamDto, groupId); + aaa.getRecords().stream().forEach(x -> x.setIdcard(x.getIdcard().replaceAll("(?<=[\\d]{3})\\d(?=[\\d]{4})", "*"))); + return aaa; + } + + @Override + @Transactional + public Boolean addReport(AddReportDto addReportDto) { + User user = userDao.selectOne(new LambdaQueryWrapper<User>(User.class).eq(User::getUserIdcard, addReportDto.getIdcard())); + if (user == null) { + // 濡傛灉鐢ㄦ埛涓嶅瓨鍦� 鍒欐坊鍔犵敤鎴� + user = new User().setUserIdcard(addReportDto.getIdcard()).setUserMobile(addReportDto.getMobile()).setRealName(addReportDto.getReporterName()) + .setModifyTime(new Date()).setUserRegtime(new Date()).setPic(addReportDto.getPic()); + userDao.insert(user); + } + // 娣诲姞浜哄憳杩涚兢缁� + groupUserDao.insert(new GroupUser() + .setGroupId(groupDao.selectOne(new QueryWrapper<Group>().eq("cause_id", addReportDto.getCauseId())).getId()) + .setUserId(user.getId()).setCtime(new Date()) + .setBanSpeech(0)); + // 娣诲姞鎶ユ淇℃伅 + Report report = new Report(); + BeanUtils.copyProperties(addReportDto, report); + report + .setUserId(user.getId()) + .setCtime(new Date()) + .setStatus(1) + .setReportMethod("鐜板満褰曞叆") + .setIsCommission("0").setReportTime(new Date()) + .setCauseId(addReportDto.getCauseId()); + return reportDao.insert(report) > 0; } } -- Gitblit v1.8.0