| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- package com.xjrsoft.module.teacher.controller;
- import cn.dev33.satoken.annotation.SaCheckPermission;
- import cn.hutool.core.bean.BeanUtil;
- import com.alibaba.excel.EasyExcel;
- import com.alibaba.excel.support.ExcelTypeEnum;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.github.yulichang.wrapper.MPJLambdaWrapper;
- import com.xjrsoft.common.enums.DeleteMark;
- import com.xjrsoft.common.exception.MyException;
- import com.xjrsoft.common.model.result.RT;
- import com.xjrsoft.common.page.ConventPage;
- import com.xjrsoft.common.page.PageOutput;
- import com.xjrsoft.common.utils.FileZipUtil;
- import com.xjrsoft.common.utils.VoToColumnUtil;
- import com.xjrsoft.module.system.entity.File;
- import com.xjrsoft.module.system.service.IFileService;
- import com.xjrsoft.module.teacher.dto.TeacherAwardDetailPageDto;
- import com.xjrsoft.module.teacher.dto.TeacherAwardStatisticsPageDto;
- import com.xjrsoft.module.teacher.entity.TeacherAward;
- import com.xjrsoft.module.teacher.entity.TeacherAwardItem;
- import com.xjrsoft.module.teacher.entity.XjrUser;
- import com.xjrsoft.module.teacher.service.ITeacherAwardItemService;
- import com.xjrsoft.module.teacher.service.ITeacherAwardService;
- import com.xjrsoft.module.teacher.vo.TeacherAwardDetailExcelVo;
- import com.xjrsoft.module.teacher.vo.TeacherAwardDetailPageVo;
- import com.xjrsoft.module.teacher.vo.TeacherAwardStatisticsExcelVo;
- import com.xjrsoft.module.teacher.vo.TeacherAwardStatisticsPageVo;
- import com.xjrsoft.module.workflow.entity.WorkflowFormRelation;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import lombok.AllArgsConstructor;
- import me.zhyd.oauth.log.Log;
- import org.camunda.bpm.engine.history.HistoricProcessInstance;
- import org.springframework.http.ResponseEntity;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import javax.validation.Valid;
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.URL;
- import java.net.URLConnection;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * @title: 教师奖项
- * @Author dzx
- * @Date: 2024-06-04
- * @Version 1.0
- */
- @RestController
- @RequestMapping("/teacher" + "/teacherAward")
- @Api(value = "/teacher" + "/teacherAward",tags = "教师获奖代码")
- @AllArgsConstructor
- public class TeacherAwardController {
- private final ITeacherAwardItemService teacherAwardItemService;
- private final ITeacherAwardService teacherAwardService;
- private final IFileService fileService;
- @GetMapping(value = "/statistics-page")
- @ApiOperation(value="教师获奖统计")
- @SaCheckPermission("teacheraward:detail")
- public RT<PageOutput<TeacherAwardStatisticsPageVo>> page(@Valid TeacherAwardStatisticsPageDto dto){
- Page<TeacherAwardStatisticsPageVo> voPage = teacherAwardItemService.getStatisticsPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
- PageOutput<TeacherAwardStatisticsPageVo> pageOutput = ConventPage.getPageOutput(voPage, TeacherAwardStatisticsPageVo.class);
- return RT.ok(pageOutput);
- }
- @GetMapping(value = "/detail-page")
- @ApiOperation(value="教师获奖详情页")
- @SaCheckPermission("teacheraward:detail")
- public RT<PageOutput<TeacherAwardDetailPageVo>> detailPage(@Valid TeacherAwardDetailPageDto dto){
- MPJLambdaWrapper<TeacherAward> teacherAwardMPJLambdaWrapper = new MPJLambdaWrapper<>();
- teacherAwardMPJLambdaWrapper
- .disableSubLogicDel()
- .selectAs(TeacherAwardItem::getIsThesis, TeacherAwardDetailPageVo::getIsThesis)
- .selectAs(XjrUser::getName, TeacherAwardDetailPageVo::getApplicantUserIdCn)
- .select(TeacherAward.class,x -> VoToColumnUtil.fieldsToColumns(TeacherAwardDetailPageVo.class).contains(x.getProperty()))
- .leftJoin(TeacherAwardItem.class, TeacherAwardItem::getId, TeacherAward::getTeacherAwardItemId)
- .leftJoin(XjrUser.class, XjrUser::getId, TeacherAward::getApplicantUserId)
- .leftJoin(WorkflowFormRelation.class, WorkflowFormRelation::getFormKeyValue, TeacherAward::getId)
- .eq(dto.getApplicantUserId() != null && dto.getApplicantUserId() > 0,TeacherAward::getApplicantUserId, dto.getApplicantUserId())
- .eq(dto.getIsThesis() != null,TeacherAwardItem::getIsThesis, dto.getIsThesis())
- .like(dto.getApplicantUserIdCn() != null && !dto.getApplicantUserIdCn().equals(""), XjrUser::getName, dto.getApplicantUserIdCn())
- .like(dto.getWholeCompetitionName() != null && !dto.getWholeCompetitionName().equals(""),TeacherAward::getWholeCompetitionName, dto.getWholeCompetitionName())
- .eq(WorkflowFormRelation::getCurrentState, HistoricProcessInstance.STATE_COMPLETED)
- .orderByDesc(TeacherAward::getCreateDate)
- ;
- IPage<TeacherAwardDetailPageVo> page = teacherAwardService.selectJoinListPage(ConventPage.getPage(dto), TeacherAwardDetailPageVo.class, teacherAwardMPJLambdaWrapper);
- PageOutput<TeacherAwardDetailPageVo> pageOutput = ConventPage.getPageOutput(page, TeacherAwardDetailPageVo.class);
- return RT.ok(pageOutput);
- }
- @PostMapping(value = "/export-query")
- @ApiOperation(value="导出")
- @SaCheckPermission("teacheraward:detail")
- public ResponseEntity<byte[]> exportQuery(@Valid @RequestBody TeacherAwardStatisticsPageDto dto){
- List<TeacherAwardStatisticsPageVo> list = teacherAwardItemService.getStatisticsList(dto);
- ByteArrayOutputStream bot = new ByteArrayOutputStream();
- EasyExcel.write(bot, TeacherAwardStatisticsExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(list);
- return RT.fileStream(bot.toByteArray(), "教师获奖登记" + ExcelTypeEnum.XLSX.getValue());
- }
- @PostMapping(value = "/detail-export-query")
- @ApiOperation(value="教师获奖详情页")
- @SaCheckPermission("teacheraward:detail")
- public ResponseEntity<byte[]> detailExportQuery(@Valid @RequestBody TeacherAwardDetailPageDto dto){
- try {
- MPJLambdaWrapper<TeacherAward> teacherAwardMPJLambdaWrapper = new MPJLambdaWrapper<>();
- teacherAwardMPJLambdaWrapper
- .disableSubLogicDel()
- .selectAs(TeacherAwardItem::getIsThesis, TeacherAwardDetailPageVo::getIsThesis)
- .selectAs(TeacherAwardItem::getScore, TeacherAwardDetailPageVo::getTeacherAwardItemScore)
- .selectAs(XjrUser::getName, TeacherAwardDetailPageVo::getApplicantUserIdCn)
- .select(TeacherAward.class,x -> VoToColumnUtil.fieldsToColumns(TeacherAwardDetailPageVo.class).contains(x.getProperty()))
- .leftJoin(TeacherAwardItem.class, TeacherAwardItem::getId, TeacherAward::getTeacherAwardItemId)
- .leftJoin(XjrUser.class, XjrUser::getId, TeacherAward::getApplicantUserId)
- .leftJoin(WorkflowFormRelation.class, WorkflowFormRelation::getFormKeyValue, TeacherAward::getId)
- .eq(dto.getApplicantUserId() != null && dto.getApplicantUserId() > 0,TeacherAward::getApplicantUserId, dto.getApplicantUserId())
- .eq(dto.getIsThesis() != null,TeacherAwardItem::getIsThesis, dto.getIsThesis())
- .like(dto.getApplicantUserIdCn() != null && !dto.getApplicantUserIdCn().equals(""), XjrUser::getName, dto.getApplicantUserIdCn())
- .like(dto.getWholeCompetitionName() != null && !dto.getWholeCompetitionName().equals(""),TeacherAward::getWholeCompetitionName, dto.getWholeCompetitionName())
- .eq(WorkflowFormRelation::getCurrentState, HistoricProcessInstance.STATE_COMPLETED)
- .orderByDesc(TeacherAward::getCreateDate)
- ;
- List<TeacherAwardDetailPageVo> list = teacherAwardService.selectJoinList(TeacherAwardDetailPageVo.class, teacherAwardMPJLambdaWrapper);
- List<TeacherAwardDetailExcelVo> excelList = new ArrayList<>();
- int index = 1;
- Map<String, byte[]> byteAryMap = new HashMap<>();
- String folderName = "附件材料";
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- for (TeacherAwardDetailPageVo el : list) {
- TeacherAwardDetailExcelVo rowData = BeanUtil.toBean(el, TeacherAwardDetailExcelVo.class);
- if(el.getIssueDate() == null){
- rowData.setIssueDate("");
- }else{
- rowData.setIssueDate(sdf.format(el.getIssueDate()));
- }
- if(rowData.getRemark() == null){
- rowData.setRemark("");
- }
- if(rowData.getJournalLevel() == null){
- rowData.setJournalLevel("");
- }
- if(rowData.getJournalNumber() == null){
- rowData.setJournalNumber("");
- }
- if(rowData.getApplicantUserIdCn() == null){
- rowData.setApplicantUserIdCn("");
- }
- if(rowData.getIsThesis() == null){
- rowData.setIsThesis("");
- }
- if(rowData.getCompetitionName() == null){
- rowData.setCompetitionName("");
- }
- if(rowData.getMediaType() == null){
- rowData.setMediaType("");
- }
- if(rowData.getTeacherAwardItemScore() == null){
- rowData.setTeacherAwardItemScore("");
- }
- if(el.getIsThesis() == 1){
- rowData.setIsThesis("是");
- }else if(el.getIsThesis() == 0){
- rowData.setIsThesis("否");
- }
- List<File> fileList = fileService.list(
- new QueryWrapper<File>().lambda()
- .eq(File::getFolderId, el.getFileId())
- .eq(File::getDeleteMark, DeleteMark.NODELETE.getCode())
- );
- if(fileList.isEmpty()){
- excelList.add(rowData);
- continue;
- }
- String fileName = "佐证材料" + index;
- if(fileList.size() == 1){
- try {
- File file = fileList.get(0);
- URL url = new URL(file.getFileUrl());
- URLConnection conn = url.openConnection();
- InputStream in = conn.getInputStream();
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
- byte[] buffer = new byte[1024];
- int bytesRead;
- while ((bytesRead = in.read(buffer)) != -1) {
- outputStream.write(buffer, 0, bytesRead);
- }
- byte[] byteArray = outputStream.toByteArray();
- byteAryMap.put(folderName + "\\" + fileName + file.getFileType(), byteArray);
- in.close();
- outputStream.close();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }else{
- for (int i = 0; i < fileList.size(); i++) {
- try {
- URL url = new URL(fileList.get(i).getFileUrl());
- URLConnection conn = url.openConnection();
- InputStream in = conn.getInputStream();
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
- byte[] buffer = new byte[1024];
- int bytesRead;
- while ((bytesRead = in.read(buffer)) != -1) {
- outputStream.write(buffer, 0, bytesRead);
- }
- byte[] byteArray = outputStream.toByteArray();
- byteAryMap.put(folderName + "\\" + fileName + "\\佐证材料" + (i + 1) + fileList.get(i).getFileType(), byteArray);
- in.close();
- outputStream.close();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
- rowData.setFileName(fileName);
- excelList.add(rowData);
- index ++;
- }
- ByteArrayOutputStream bot = new ByteArrayOutputStream();
- EasyExcel.write(bot, TeacherAwardDetailExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(excelList);
- byteAryMap.put("教师获奖登记" + ExcelTypeEnum.XLSX.getValue(), bot.toByteArray());
- byte[] bytes = FileZipUtil.byteAryMap2Zip(byteAryMap);
- return RT.fileStream(bytes, "detailExportQuery.zip");
- }catch (Exception e){
- Log.error(e.getMessage(), e);
- throw new MyException("导出出错,请联系管理员");
- }
- }
- }
|