汇总数据json调整khdx的位置、汇总导出接口编写

main 33
hshansha 4 months ago
parent bd6742f4b6
commit b7f06512b8

@ -118,6 +118,16 @@
<groupId>javax.servlet</groupId> <groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId> <artifactId>javax.servlet-api</artifactId>
</dependency> </dependency>
<!--<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>${poi.version}</version>
</dependency>-->
</dependencies> </dependencies>

@ -1,5 +1,6 @@
package com.ruoyi.kaohe.controller; package com.ruoyi.kaohe.controller;
import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -9,6 +10,7 @@ import com.ruoyi.kaohe.domain.KhKhrwResult;
import com.ruoyi.kaohe.service.IKhKhrwResultService; import com.ruoyi.kaohe.service.IKhKhrwResultService;
import com.ruoyi.kaohe.service.IKhVoteEmpService; import com.ruoyi.kaohe.service.IKhVoteEmpService;
import com.ruoyi.kaohe.service.IKhVoteService; import com.ruoyi.kaohe.service.IKhVoteService;
import com.ruoyi.kaohe.util.EnhancedJsonExporter;
import com.ruoyi.kaohe.util.JsonDeepMerge; import com.ruoyi.kaohe.util.JsonDeepMerge;
import com.ruoyi.kaohe.util.PinYinUtil; import com.ruoyi.kaohe.util.PinYinUtil;
import org.json.JSONArray; import org.json.JSONArray;
@ -97,6 +99,16 @@ public class KhGatherController extends BaseController {
tabledata.putAll(hz_df); tabledata.putAll(hz_df);
//根据被考核对象名分组数据到map中 得到表格内容的最终数据 //根据被考核对象名分组数据到map中 得到表格内容的最终数据
JSONArray endTableData = JsonDeepMerge.mergeByKey(tabledata, "khdx"); JSONArray endTableData = JsonDeepMerge.mergeByKey(tabledata, "khdx");
//把数据结果中的khdx这个键值对———放到汇总主题拼音的key值里面
for (Object endData : endTableData) {
JSONObject jsonData = (JSONObject) endData;
String khdx = jsonData.getString("khdx");
JSONObject hzData = jsonData.getJSONObject(pyhz_name);
hzData.put("khdx",khdx);
jsonData.remove("khdx");
jsonData.put(pyhz_name,hzData);
endData=jsonData;
}
KhGather gather = new KhGather(); KhGather gather = new KhGather();
gather.setHzName(hz_name); gather.setHzName(hz_name);
@ -117,7 +129,6 @@ public class KhGatherController extends BaseController {
private Map<String, Object> parseJson(JSONArray datas, String titleP, BigDecimal z_zb) throws JsonProcessingException { private Map<String, Object> parseJson(JSONArray datas, String titleP, BigDecimal z_zb) throws JsonProcessingException {
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
JSONArray hz_df = new JSONArray();//存储标题占比时的得分
JSONArray title_df = new JSONArray();//处理标题占比时的得分 JSONArray title_df = new JSONArray();//处理标题占比时的得分
String pyTitle = PinYinUtil.getPinyinInitials(titleP);//父级表头 String pyTitle = PinYinUtil.getPinyinInitials(titleP);//父级表头
JSONObject btKhdx = new JSONObject(true); //表头考核对象存储 JSONObject btKhdx = new JSONObject(true); //表头考核对象存储
@ -311,13 +322,21 @@ public class KhGatherController extends BaseController {
/** /**
* *
*/ */
@PreAuthorize("@ss.hasPermi('kaohe:gather:export')") /*@PreAuthorize("@ss.hasPermi('kaohe:gather:export')")
@Log(title = "生成汇总", businessType = BusinessType.EXPORT) @Log(title = "生成汇总", businessType = BusinessType.EXPORT)
@PostMapping("/export") @PostMapping("/export")
public void export(HttpServletResponse response, KhGather khGather) { public void export(HttpServletResponse response, KhGather khGather) {
List<KhGather> list = khGatherService.selectKhGatherList(khGather); List<KhGather> list = khGatherService.selectKhGatherList(khGather);
ExcelUtil<KhGather> util = new ExcelUtil<KhGather>(KhGather.class); ExcelUtil<KhGather> util = new ExcelUtil<KhGather>(KhGather.class);
util.exportExcel(response, list, "生成汇总数据"); util.exportExcel(response, list, "生成汇总数据");
}*/
@PreAuthorize("@ss.hasPermi('kaohe:gather:export')")
@Log(title = "生成汇总", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, Long id) throws Exception {
KhGather gather = khGatherService.selectKhGatherById(id);
String tableHeader = gather.getTableHeader();
// EnhancedJsonExporter.export(tableHeader,"生成汇总数据.xlsx");
} }
/** /**

File diff suppressed because one or more lines are too long

@ -31,7 +31,7 @@ public class JsonDeepMerge {
} }
} }
} }
//根据某个相同key值整合其他相同层级的key数据到一起然后返回新的JSONArray数据
public static JSONArray mergeByKey(JSONArray array, String mergeKey) { public static JSONArray mergeByKey(JSONArray array, String mergeKey) {
JSONArray result = new JSONArray(); JSONArray result = new JSONArray();
for (int i = 0; i < array.length(); i++) { for (int i = 0; i < array.length(); i++) {

@ -0,0 +1,85 @@
package com.ruoyi.kaohe.util;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.*;
public class JsonToExcelExporter {
public static Workbook export(JsonNode jsonData) throws IOException {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
// 计算最大深度
int maxDepth = calculateMaxDepth(jsonData);
// 创建标题行
for (int i = 0; i <= maxDepth; i++) {
sheet.createRow(i);
}
// 递归构建表头
int[] currentCol = {0};
for (JsonNode node : jsonData) {
buildHeader(sheet, node, 0, currentCol);
}
return workbook;
}
private static int calculateMaxDepth(JsonNode nodes) {
int maxDepth = 0;
for (JsonNode node : nodes) {
if (node.has("children")) {
int childDepth = calculateMaxDepth(node.get("children"));
maxDepth = Math.max(maxDepth, childDepth + 1);
}
}
return maxDepth;
}
private static void buildHeader(Sheet sheet, JsonNode node,
int depth, int[] currentCol) {
Row row = sheet.getRow(depth);
Cell cell = row.createCell(currentCol[0]);
cell.setCellValue(node.get("label").asText());
int startCol = currentCol[0];
if (node.has("children")) {
Iterator<JsonNode> children = node.get("children").elements();
while (children.hasNext()) {
buildHeader(sheet, children.next(), depth + 1, currentCol);
}
// 合并父单元格
if (currentCol[0] - startCol > 1) {
sheet.addMergedRegion(new CellRangeAddress(
depth, depth,
startCol, currentCol[0] - 1
));
}
} else {
currentCol[0]++;
}
}
public static void main(String[] args) {
String json = "[{\"children\":[{\"name\":\"khdx\",\"label\":\"单位\"},{\"children\":[{\"children\":[{\"name\":\"khx1\",\"label\":\"政治建设\"},{\"name\":\"khx1_zb\",\"label\":\"占比\"},{\"name\":\"khx2\",\"label\":\"宣传与思想政治工作\"},{\"name\":\"khx2_zb\",\"label\":\"占比\"},{\"name\":\"khx3\",\"label\":\"作风纪律\"},{\"name\":\"khx3_zb\",\"label\":\"占比\"},{\"name\":\"khx4\",\"label\":\"安全稳定\"},{\"name\":\"khx4_zb\",\"label\":\"占比\"},{\"name\":\"khx5\",\"label\":\"师资队伍与师德师风\"},{\"name\":\"khx5_zb\",\"label\":\"占比\"},{\"name\":\"khx6\",\"label\":\"财务工作\"},{\"name\":\"khx6_zb\",\"label\":\"占比\"},{\"name\":\"khx7\",\"label\":\"依法治校与综合治理\"},{\"name\":\"khx7_zb\",\"label\":\"占比\"},{\"name\":\"khx8\",\"label\":\"国有资产管理\"},{\"name\":\"khx8_zb\",\"label\":\"占比\"},{\"name\":\"khx9\",\"label\":\"实验室管理\"},{\"name\":\"khx9_zb\",\"label\":\"占比\"},{\"name\":\"khx10\",\"label\":\"招生就业与创新创业工作\"},{\"name\":\"khx10_zb\",\"label\":\"占比\"},{\"name\":\"khx11\",\"label\":\"对外交流与合作\"},{\"name\":\"khx11_zb\",\"label\":\"占比\"}],\"name\":\"djyxzmbrw\",\"label\":\"党建与行政目标任务\"},{\"name\":\"djyxzmbrw_df\",\"label\":\"得分\"},{\"name\":\"djyxzmbrw_zb\",\"label\":\"占比\"},{\"name\":\"djyxzmbrw_zsfs\",\"label\":\"折算分数\"},{\"children\":[{\"name\":\"khx1\",\"label\":\"教学工作\"},{\"name\":\"khx1_zb\",\"label\":\"占比\"},{\"name\":\"khx2\",\"label\":\"科研工作\"},{\"name\":\"khx2_zb\",\"label\":\"占比\"},{\"name\":\"khx3\",\"label\":\"学生工作\"},{\"name\":\"khx3_zb\",\"label\":\"占比\"}],\"name\":\"syfz\",\"label\":\"事业发展\"},{\"name\":\"syfz_df\",\"label\":\"得分\"},{\"name\":\"syfz_zb\",\"label\":\"占比\"},{\"name\":\"syfz_zsfs\",\"label\":\"折算分数\"}],\"name\":\"ejdwmbglyjxkhcj\",\"label\":\"二级单位目标管理与绩效考核成绩\"},{\"name\":\"ejdwmbglyjxkhcj_df\",\"label\":\"得分\"},{\"name\":\"ejdwmbglyjxkhcj_zb\",\"label\":\"占比\"},{\"name\":\"ejdwmbglyjxkhcj_zsfs\",\"label\":\"折算分数\"},{\"children\":[{\"children\":[{\"name\":\"optionA\",\"label\":\"优秀\"},{\"name\":\"optionB\",\"label\":\"合格\"},{\"name\":\"optionC\",\"label\":\"基本合格\"},{\"name\":\"optionD\",\"label\":\"不合格\"},{\"name\":\"avgScore\",\"label\":\"得分\"},{\"name\":\"percentage\",\"label\":\"占比\"}],\"name\":\"khx1\",\"label\":\"师院领导班子\"},{\"children\":[{\"name\":\"optionA\",\"label\":\"优秀\"},{\"name\":\"optionB\",\"label\":\"合格\"},{\"name\":\"optionC\",\"label\":\"基本合格\"},{\"name\":\"optionD\",\"label\":\"不合格\"},{\"name\":\"avgScore\",\"label\":\"得分\"},{\"name\":\"percentage\",\"label\":\"占比\"}],\"name\":\"khx2\",\"label\":\"师院处级领导干部\"},{\"children\":[{\"name\":\"optionA\",\"label\":\"优秀\"},{\"name\":\"optionB\",\"label\":\"合格\"},{\"name\":\"optionC\",\"label\":\"基本合格\"},{\"name\":\"optionD\",\"label\":\"不合格\"},{\"name\":\"avgScore\",\"label\":\"得分\"},{\"name\":\"percentage\",\"label\":\"占比\"}],\"name\":\"khx3\",\"label\":\"服务对象代表\"}],\"name\":\"mzcp\",\"label\":\"民主测评\"},{\"name\":\"mzcp_df\",\"label\":\"得分\"},{\"name\":\"mzcp_zb\",\"label\":\"占比\"},{\"name\":\"mzcp_zsfs\",\"label\":\"折算分数\"},{\"children\":[{\"name\":\"khx1\",\"label\":\"分数 满分10分\"}],\"name\":\"tscx\",\"label\":\"特色创新\"},{\"name\":\"tscx_df\",\"label\":\"得分\"},{\"children\":[{\"name\":\"khx1\",\"label\":\"分数 (加减分项,值域可以为负)\"}],\"name\":\"zhpj\",\"label\":\"综合评价\"},{\"name\":\"zhpj_df\",\"label\":\"得分\"},{\"name\":\"jxdwldbzkhzf_df\",\"label\":\"总分\"}],\"name\":\"jxdwldbzkhzf\",\"label\":\"教学单位领导班子考核总分\"}]"; // 替换为实际JSON字符串
//String json ="[{\"label\":\"基本信息\",\"children\":[{\"label\":\"个人信息\",\"children\":[{\"label\":\"姓名\"},{\"label\":\"年龄\"},{\"label\":\"性别\"}]},{\"label\":\"联系方式\",\"children\":[{\"label\":\"手机\"},{\"label\":\"邮箱\"}]}]},{\"label\":\"教育背景\",\"children\":[{\"label\":\"学历\",\"children\":[{\"label\":\"学校名称\"},{\"label\":\"专业\"},{\"label\":\"入学时间\"},{\"label\":\"毕业时间\"}]},{\"label\":\"证书\",\"children\":[{\"label\":\"证书名称\"},{\"label\":\"获得时间\"}]}]},{\"label\":\"工作经历\",\"children\":[{\"label\":\"公司A\",\"children\":[{\"label\":\"职位\"},{\"label\":\"在职时间\"},{\"label\":\"工作内容\"}]},{\"label\":\"公司B\",\"children\":[{\"label\":\"职位\"},{\"label\":\"在职时间\"},{\"label\":\"工作内容\"}]}]},{\"label\":\"技能评价\",\"children\":[{\"label\":\"技术技能\"},{\"label\":\"语言能力\"},{\"label\":\"综合评分\"}]}]";
try {
Workbook workbook =export(new ObjectMapper().readTree(json));
try (FileOutputStream out = new FileOutputStream("output.xlsx")) {
workbook.write(out);
System.out.println("ok");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Loading…
Cancel
Save