From 104d856eaf9705cfb1a1335916b7677faf3b6980 Mon Sep 17 00:00:00 2001
From: wl <173@qq.com>
Date: 星期四, 21 七月 2022 15:08:42 +0800
Subject: [PATCH] 撤销添加类

---
 src/main/java/com/example/jz/service/impl/ReportServiceImpl.java |  139 +++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 130 insertions(+), 9 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..d6f26ba 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,38 @@
 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.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.modle.entity.Group;
-import com.example.jz.modle.entity.GroupUser;
-import com.example.jz.modle.entity.Report;
+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.*;
+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.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.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 鎶ユ琛�(Report)琛ㄦ湇鍔″疄鐜扮被
@@ -32,6 +49,15 @@
     private GroupDao groupDao;
     @Autowired
     private GroupUserDao groupUserDao;
+
+    @Resource
+    CauseDao causeDao;
+
+    @Resource
+    UserDao userDao;
+
+    @Resource
+    MinIOService minIOService;
 
     /**
      * 瀹℃牳鎶ユ
@@ -55,7 +81,102 @@
 
     @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);
+        }
+        // 娣诲姞鎶ユ淇℃伅
+        Report report = new Report();
+        BeanUtils.copyProperties(addReportDto, report);
+        report
+                .setUserId(user.getId())
+                .setCtime(new Date())
+                .setStatus(0)
+                .setReportMethod("鐜板満褰曞叆")
+                .setIsCommission("0").setReportTime(new Date());
+        return reportDao.insert(report) > 0;
+    }
+}
\ No newline at end of file

--
Gitblit v1.8.0