diff --git a/mailbox-lan/pom.xml b/mailbox-lan/pom.xml index 4e7768a..be13722 100644 --- a/mailbox-lan/pom.xml +++ b/mailbox-lan/pom.xml @@ -163,6 +163,14 @@ + + org.apache.maven.plugins + maven-compiler-plugin + + 9 + 9 + + diff --git a/mailbox-lan/src/main/java/com/biutag/lan/controller/DataController.java b/mailbox-lan/src/main/java/com/biutag/lan/controller/DataController.java index 9a26d81..7d78733 100644 --- a/mailbox-lan/src/main/java/com/biutag/lan/controller/DataController.java +++ b/mailbox-lan/src/main/java/com/biutag/lan/controller/DataController.java @@ -1,5 +1,6 @@ package com.biutag.lan.controller; +import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -17,12 +18,12 @@ import com.biutag.lan.service.NoticeService; import com.biutag.lan.service.WorkService; import com.biutag.lan.validate.system.DataSearchValidate; import com.biutag.lan.validate.system.NoticeSearchValidate; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import java.io.IOException; import java.util.List; import java.util.Map; @@ -61,4 +62,17 @@ public class DataController { return AjaxResult.success(list); } + @NotPower + @PostMapping("exportdata") + public void exportdata(HttpServletResponse response, @RequestBody String data) throws IOException { + DataSearchValidate dataSearchValidate = JSON.parseObject(data,DataSearchValidate.class); + dataService.exportdata(response, dataSearchValidate); + } + @NotPower + @PostMapping("exportsource") + public void exportsource(HttpServletResponse response, @RequestBody String data) throws IOException { + DataSearchValidate dataSearchValidate = JSON.parseObject(data,DataSearchValidate.class); + dataService.exportsource(response, dataSearchValidate); + } + } diff --git a/mailbox-lan/src/main/java/com/biutag/lan/service/DataService.java b/mailbox-lan/src/main/java/com/biutag/lan/service/DataService.java index 2e173a7..e69912a 100644 --- a/mailbox-lan/src/main/java/com/biutag/lan/service/DataService.java +++ b/mailbox-lan/src/main/java/com/biutag/lan/service/DataService.java @@ -1,19 +1,27 @@ package com.biutag.lan.service; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.builder.ExcelWriterBuilder; +import com.alibaba.excel.write.metadata.WriteSheet; import com.baomidou.mybatisplus.core.conditions.Wrapper; 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.biutag.entity.system.Dept; import com.biutag.lan.domain.*; +import com.biutag.lan.domain.vo.LedgerExcel; import com.biutag.lan.mapper.*; import com.biutag.lan.validate.system.DataSearchValidate; import com.biutag.mapper.system.DeptMapper; import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.swing.*; +import java.io.IOException; +import java.io.OutputStream; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -359,4 +367,98 @@ public class DataService extends ServiceImpl { return headerlist; } + public void exportdata(HttpServletResponse response, DataSearchValidate dataSearchValidate) throws IOException { + List> head = new ArrayList<>(); + List headLevelOne = new ArrayList<>(); + + head.add(List.of("局长信箱即接即办信件三率统计","单位名称")); + head.add(List.of("局长信箱即接即办信件三率统计","信件总量")); + head.add(List.of("局长信箱即接即办信件三率统计","办结数")); + head.add(List.of("局长信箱即接即办信件三率统计","办结率")); + head.add(List.of("局长信箱即接即办信件三率统计","解决数")); + head.add(List.of("局长信箱即接即办信件三率统计","解决率")); + head.add(List.of("局长信箱即接即办信件三率统计","满意数")); + head.add(List.of("局长信箱即接即办信件三率统计","满意率")); + head.add(List.of("局长信箱即接即办信件三率统计","总得分")); + List> list = new ArrayList<>(); + List> data1 = new ArrayList<>(); + list = list(new Page<>(1, 10000),dataSearchValidate).getRecords(); + for (Map item : list){ + data1.add(Arrays.asList(item.get("cname"), item.get("total"),item.get("completed"),item.get("crate"),item.get("resolved"),item.get("rate"),item.get("satisfied"),item.get("srate"),item.get("score"))); + } + + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("UTF-8"); + try (OutputStream out = response.getOutputStream()) { + // 使用EasyExcel写入数据到输出流 + ExcelWriter excelWriter = EasyExcel.write(out).build(); + WriteSheet writeSheet = EasyExcel.writerSheet("局长信箱即接即办信件三率统计").head(head).build(); + excelWriter.write(data1, writeSheet); + excelWriter.finish(); + } catch (Exception e) { + log.error("Exception occurred while exporting mail data" + e.getMessage(), e); + // 如果response还没有被提交,返回一个错误信息 + if (!response.isCommitted()) { + response.reset(); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + response.getWriter().write("Failed to export data due to an internal error."); + } + } + + } + + + public void exportsource(HttpServletResponse response, DataSearchValidate dataSearchValidate) throws IOException { + List> head = new ArrayList<>(); + List> list = new ArrayList<>(); + List> data1 = new ArrayList<>(); + List variables = new ArrayList<>(); + list = getsourcelist(new Page<>(1, 10000),dataSearchValidate).getRecords(); + System.out.println(list); + Map item_one = list.get(0); + for (Map.Entry entry : item_one.entrySet()) { + // 获取键和值 + String key = entry.getKey(); + Object value = entry.getValue(); + // 打印键和值 + if (key.contains("name")&&!key.contains("second_dept_name")){ + variables.add(value.toString()); + } + } + head.add(List.of("局长信箱即接即办信件来源统计","单位名称","单位名称")); + head.add(List.of("局长信箱即接即办信件来源统计","信件总量","信件总量")); + for (int i = 0;i item : list){ + List list_item = new ArrayList<>(); + list_item.add(item.get("second_dept_name1")); + list_item.add(item.get("allcount1")); + for (int i = 0;i