From 7ea5eece501c98a91555a5358931367e78e9d23b Mon Sep 17 00:00:00 2001 From: baizonghao <1719256278@qq.com> Date: 星期四, 25 五月 2023 15:40:09 +0800 Subject: [PATCH] 11 --- src/main/java/com/example/jz/service/impl/ReportServiceImpl.java | 279 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 276 insertions(+), 3 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 924ec9f..3acd551 100644 --- a/src/main/java/com/example/jz/service/impl/ReportServiceImpl.java +++ b/src/main/java/com/example/jz/service/impl/ReportServiceImpl.java @@ -1,10 +1,50 @@ package com.example.jz.service.impl; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +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.ReportDao; -import com.example.jz.modle.entity.Report; +import com.example.jz.dao.*; +import com.example.jz.modle.PageParam; +import com.example.jz.modle.dto.AddReportDto; +import com.example.jz.modle.dto.AddReportLoadDto; +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.NewCauseVo; +import com.example.jz.modle.vo.ReportListVo; +import com.example.jz.modle.vo.ReportVXVO; +import com.example.jz.service.MinIOService; import com.example.jz.service.ReportService; +import com.example.jz.service.UserService; +import lombok.SneakyThrows; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +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; +import java.util.function.Consumer; +import java.util.stream.Collectors; /** * 鎶ユ琛�(Report)琛ㄦ湇鍔″疄鐜扮被 @@ -15,5 +55,238 @@ @Service("reportService") public class ReportServiceImpl extends ServiceImpl<ReportDao, Report> implements ReportService { -} + @Autowired + private ReportDao reportDao; + @Autowired + private GroupDao groupDao; + @Autowired + private GroupUserDao groupUserDao; + @Resource + CauseDao causeDao; + + @Resource + UserDao userDao; + @Resource + UserService userService; + @Resource + ReportService reportService; + + @Resource + MinIOService minIOService; + + /** + * 瀹℃牳鎶ユ + * + * @param report + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean audit(Report report) { + // 1. 鏇存柊鎶ユ琛� + report.setStatus(1); + report.setIsInGroup(1); + reportDao.updateById(report); + // 2. 鏇存柊缇ょ敤鎴疯〃 + Group group = groupDao.selectOne(new LambdaQueryWrapper<>(Group.class) + .eq(Group::getCauseId, report.getCauseId())); + if (!groupUserDao.selectUserList(group.getId()).contains(report.getUserId())) { + GroupUser groupUser = new GroupUser().setGroupId(group.getId()).setUserId(report.getId()).setCtime(new Date()).setBanSpeech(0); + return groupUserDao.insert(groupUser) == 1 ? true : false; + } + return true; + } + + @Override + public void leaveGroup(Integer id, Integer groupId) { + Report report = new Report(); + report.setIsInGroup(0); + report.setId(id); + reportDao.updateById(report); + 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( +// new Consumer<Report>() { +// @Override +// public void accept(Report 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.openxmlformats-officedocument.spreadsheetml.sheet"); +// 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) { + return reportDao.getPage(page, reportParamDto); + } + + @Override + public ReportListVo getReportListVoById(Serializable id) { + return reportDao.getReportListVoById(id); + } + + @Override + public Page<ReportListVo> getPageByGroupId(Page<ReportListVo> page, ReportParamDto reportParamDto, Integer causeId) { + Long size = (page.getCurrent() - 1) * page.getSize(); + Long current = page.getSize(); + Page<ReportListVo> aaa = new PageParam<>(); + List<ReportListVo> list = reportDao.getPageByGroupId(reportParamDto, causeId, size, current); + list.forEach(item -> { + if (item.getIsInGroup() == 1) { + item.setGroupId(groupDao.selectOne(new QueryWrapper<Group>().eq("cause_id", causeId)).getId()); + } + }); + aaa.setRecords(list); + Integer pageByGroupIdCount = reportDao.getPageByGroupIdCount(reportParamDto, causeId); + aaa.setTotal(pageByGroupIdCount); + 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()).setCtime(new Date()); + userService.save(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 + .setCreator(userDao.selectOne(new QueryWrapper<User>().eq("login_username", SecurityContextHolder.getContext().getAuthentication().getPrincipal())).getId()) + .setUserId(user.getId()) + .setCtime(new Date()) + .setStatus(0) + .setIsInGroup(0) + .setReportMethod("鐜板満鎶ユ") + .setIsCommission("0") + .setReportTime(new Date()) + .setCauseId(addReportDto.getCauseId()); + return reportService.save(report); + } + + @Override + public List<Report> listGroup(Integer id) { + return reportDao.selectListGroup(id); + } + + @Override + @SneakyThrows + public void loadFileReport(MultipartFile multipartFile, Integer causeId) { + EasyExcel.read(multipartFile.getInputStream(), AddReportLoadDto.class, new AnalysisEventListener<AddReportLoadDto>() { + @Override + public void invoke(AddReportLoadDto data, AnalysisContext context) { + if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(data.getReporterName()) && com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(data.getIdcard())) { + AddReportDto addReportDto = new AddReportDto(); + BeanUtils.copyProperties(data, addReportDto); + addReportDto.setCauseId(causeId); + addReport(addReportDto); + } + + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + + } + }) + .autoCloseStream(true) + .doReadAll(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean reject(Integer id, String reason) { + Report report = reportDao.selectReportByReportId(id); + // 1. 鏇存柊鎶ユ琛� + report.setStatus(2); + report.setIsInGroup(2); + report.setRemarks(reason); + reportDao.updateById(report); + return true; + } + + @Override + public ReportVXVO getRejectReportById(Integer id) { + ReportVXVO reportVXVO = new ReportVXVO(); + Report report = reportDao.selectOne(new LambdaQueryWrapper<Report>().eq(Report::getId, id)); + User user = userDao.selectOne(new LambdaQueryWrapper<User>().eq(User::getId, report.getUserId())); + BeanUtils.copyProperties(report, reportVXVO); + reportVXVO.setLocation(user.getLocation()); + reportVXVO.setWorkingLocation(user.getWorkingLocation()); + reportVXVO.setSex(user.getSex()); + reportVXVO.setRealName(user.getRealName()); + reportVXVO.setUserIdCard(user.getUserIdcard()); + reportVXVO.setDescription(causeDao.selectOne(new LambdaQueryWrapper<Cause>().eq(Cause::getId, reportDao.selectOne(new LambdaQueryWrapper<Report>().eq(Report::getId, id)).getCauseId())).getName()); + return reportVXVO; + } + + @Override + public NewCauseVo rejectCauseList(Integer id) { + Report report = reportDao.selectOne(new LambdaQueryWrapper<Report>().eq(Report::getId, id)); + Cause cause = causeDao.selectOne(new LambdaQueryWrapper<Cause>().eq(Cause::getId, report.getCauseId())); + NewCauseVo newCauseVo = new NewCauseVo(); + newCauseVo.setId(cause.getId()); + newCauseVo.setName(cause.getName()); + return newCauseVo; + } +} \ No newline at end of file -- Gitblit v1.8.0