|
|
@@ -2,12 +2,18 @@ package com.xjrsoft.module.dataexpert.controller;
|
|
|
|
|
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
import com.alibaba.excel.EasyExcel;
|
|
|
import com.alibaba.excel.ExcelWriter;
|
|
|
import com.alibaba.excel.support.ExcelTypeEnum;
|
|
|
import com.alibaba.excel.write.metadata.WriteSheet;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
+import com.google.gson.JsonArray;
|
|
|
+import com.google.gson.JsonElement;
|
|
|
+import com.google.gson.JsonObject;
|
|
|
+import com.google.gson.JsonParser;
|
|
|
import com.xjrsoft.common.model.result.RT;
|
|
|
import com.xjrsoft.common.page.ConventPage;
|
|
|
import com.xjrsoft.common.page.PageOutput;
|
|
|
@@ -23,6 +29,8 @@ import com.xjrsoft.module.dataexpert.service.IDataExpertTemplateService;
|
|
|
import com.xjrsoft.module.dataexpert.vo.DataExpertTemplateFieldVo;
|
|
|
import com.xjrsoft.module.dataexpert.vo.DataExpertTemplatePageVo;
|
|
|
import com.xjrsoft.module.dataexpert.vo.DataExpertTemplateVo;
|
|
|
+import com.xjrsoft.module.student.entity.BaseStudent;
|
|
|
+import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
@@ -64,11 +72,13 @@ public class DataExpertTemplateController {
|
|
|
@SaCheckPermission("dataexperttemplate:detail")
|
|
|
public RT<PageOutput<DataExpertTemplatePageVo>> page(@Valid DataExpertTemplatePageDto dto){
|
|
|
|
|
|
- LambdaQueryWrapper<DataExpertTemplate> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper
|
|
|
- .orderByDesc(DataExpertTemplate::getId)
|
|
|
- .select(DataExpertTemplate.class,x -> VoToColumnUtil.fieldsToColumns(DataExpertTemplatePageVo.class).contains(x.getProperty()));
|
|
|
- IPage<DataExpertTemplate> page = dataExpertTemplateService.page(ConventPage.getPage(dto), queryWrapper);
|
|
|
+ MPJLambdaWrapper<DataExpertTemplate> select = new MPJLambdaWrapper<DataExpertTemplate>()
|
|
|
+ .leftJoin(DataExpertSource.class, DataExpertSource::getId, DataExpertTemplate::getDataExpertSourceId)
|
|
|
+ .orderByDesc(DataExpertTemplate::getId)
|
|
|
+ .like(StrUtil.isNotEmpty(dto.getName()), DataExpertTemplate::getName, dto.getName())
|
|
|
+ .selectAs(DataExpertSource::getName, DataExpertTemplatePageVo::getDataExpertSourceName)
|
|
|
+ .select(DataExpertTemplate.class, x -> VoToColumnUtil.fieldsToColumns(DataExpertTemplatePageVo.class).contains(x.getProperty()));
|
|
|
+ IPage<DataExpertTemplatePageVo> page = dataExpertTemplateService.selectJoinListPage(ConventPage.getPage(dto), DataExpertTemplatePageVo.class, select);
|
|
|
PageOutput<DataExpertTemplatePageVo> pageOutput = ConventPage.getPageOutput(page, DataExpertTemplatePageVo.class);
|
|
|
return RT.ok(pageOutput);
|
|
|
}
|
|
|
@@ -122,24 +132,43 @@ public class DataExpertTemplateController {
|
|
|
@GetMapping("/export")
|
|
|
@ApiOperation(value = "导出")
|
|
|
public ResponseEntity<byte[]> exportData(@Valid DataExpertDto dto) {
|
|
|
- //查出想要的数据
|
|
|
- DataExpertTemplate template = dataExpertTemplateService.getById(dto.getDataExpertTemplateId());
|
|
|
- DataExpertSource expertSource = dataExpertSourceService.getById(template.getDataExpertSourceId());
|
|
|
-
|
|
|
//拼接字段
|
|
|
String fields = "";
|
|
|
Map<Integer, String> showNameMap = new HashMap<>();
|
|
|
List<String> titleList = new ArrayList<>();
|
|
|
List<DataExpertTemplateFieldVo> fieldList = dto.getFieldList();
|
|
|
- for (int i = 0; i < fieldList.size(); i ++){
|
|
|
- DataExpertTemplateFieldVo fieldVo = fieldList.get(i);
|
|
|
- showNameMap.put(i, fieldVo.getShowName());
|
|
|
- if(i > 0){
|
|
|
- fields += ",";
|
|
|
+ DataExpertSource expertSource;
|
|
|
+ if(dto.getDataExpertSourceId() != null){
|
|
|
+ expertSource = dataExpertSourceService.getById(dto.getDataExpertSourceId());
|
|
|
+ for (int i = 0; i < fieldList.size(); i ++){
|
|
|
+ DataExpertTemplateFieldVo fieldVo = fieldList.get(i);
|
|
|
+ showNameMap.put(i, fieldVo.getShowName());
|
|
|
+ if(i > 0){
|
|
|
+ fields += ",";
|
|
|
+ }
|
|
|
+ fields += fieldVo.getFieldName();
|
|
|
+ titleList.add(fieldVo.getShowName());
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ //查出想要的数据
|
|
|
+ DataExpertTemplate template = dataExpertTemplateService.getById(dto.getDataExpertTemplateId());
|
|
|
+ expertSource = dataExpertSourceService.getById(template.getDataExpertSourceId());
|
|
|
+ String fieldJsonStr = template.getFieldJson();
|
|
|
+ JsonParser parser = new JsonParser();
|
|
|
+ JsonArray fieldJson = parser.parse(fieldJsonStr).getAsJsonArray();
|
|
|
+ int i = 0;
|
|
|
+ for (JsonElement jsonElement : fieldJson) {
|
|
|
+ JsonObject jsonObject = jsonElement.getAsJsonObject();
|
|
|
+ showNameMap.put(i, jsonObject.get("name").getAsString());
|
|
|
+ if(i > 0){
|
|
|
+ fields += ",";
|
|
|
+ }
|
|
|
+ fields += jsonObject.get("field").getAsString();
|
|
|
+ titleList.add(jsonObject.get("name").getAsString());
|
|
|
+ i ++;
|
|
|
}
|
|
|
- fields += fieldVo.getFieldName();
|
|
|
- titleList.add(fieldVo.getShowName());
|
|
|
}
|
|
|
+
|
|
|
//查出导出的数据并进行组装
|
|
|
List<String[]> dataList = dataExpertTemplateService.getDataList(fields, expertSource.getViewName());
|
|
|
|
|
|
@@ -148,7 +177,7 @@ public class DataExpertTemplateController {
|
|
|
allDataList.addAll(dataList);
|
|
|
|
|
|
String sheetName = "数据";
|
|
|
- String fileName = template.getName() + ExcelTypeEnum.XLSX.getValue();
|
|
|
+ String fileName = "导出结果" + ExcelTypeEnum.XLSX.getValue();
|
|
|
ByteArrayOutputStream bot = new ByteArrayOutputStream();
|
|
|
|
|
|
ExcelWriter excelWriter = EasyExcel.write(bot).excelType(ExcelTypeEnum.XLSX).build();
|