Commit 19fa9295 authored by 韩桐桐's avatar 韩桐桐

快捷筛选导出

parent fb9abf4b
package com.yeejoin.amos.boot.module.statistics.api.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.yeejoin.amos.boot.module.jg.api.annotation.DictCode2DictName;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* 设备
*/
@Data
public class EquipInfoVo {
@ExcelProperty("管辖机构名称")
private String ORG_BRANCH_NAME;
@ExcelProperty("使用单位名称")
private String USE_UNIT_NAME;
@ExcelProperty("使用单位统一信用代码")
private String USE_UNIT_CREDIT_CODE;
@ExcelProperty("设备种类名称")
private String EQU_LIST;
@ExcelProperty("设备类别名称")
private String EQU_CATEGORY;
@ExcelProperty("设备品种名称")
private String EQU_DEFINE;
@ExcelProperty("使用登记证编号")
private String USE_ORG_CODE;
@ExcelProperty("96333电梯码")
private String CODE96333;
@ExcelProperty("设备代码")
private String EQU_CODE;
@ExcelProperty("监管码")
private String SUPERVISORY_CODE;
@ExcelProperty("使用场所")
private String USE_PLACE;
@ExcelProperty("详细地址")
private String ADDRESS;
@ExcelProperty("设备状态")
private Integer EQU_STATE;
@ExcelProperty("认领状态")
private String STATUS;
@ExcelProperty("安全管理员")
private String SAFETY_MANAGER;
@ExcelProperty("安全管理员电话")
private String PHONE;
@ExcelProperty("维保单位统一信用代码")
private String MAINTAIN_UNIT;
@ExcelProperty("维保单位名称")
private String MAINTAIN_UNIT_NAME;
@ExcelProperty("单位内部编号")
private String USE_INNER_CODE;
@ExcelProperty("出场编号")
private String FACTORY_NUM;
@ExcelProperty("制造单位名称")
private String PRODUCE_UNIT_NAME;
@ExcelProperty("安改维单位统一信用代码")
private String USC_UNIT_CREDIT_CODE;
@ExcelProperty("安改维单位统名称")
private String USC_UNIT_NAME;
@ExcelProperty("投用日期")
private Date USC_DATE;
@ExcelProperty("产品名称")
private String PRODUCT_NAME;
@ExcelProperty("设备品牌")
private String BRAND_NAME;
@ExcelProperty("设备型号")
private String EQU_TYPE;
@ExcelProperty("制造日期")
private String PRODUCE_DATE;
@ExcelProperty("设备来源")
private String DATA_SOURCE;
@ExcelProperty("是否车用气瓶")
private String WHETHER_VEHICLE_CYLINDER;
@ExcelProperty("是否撬装式压力容器")
private String WHETHER_SKID_MOUNTED_PRESSURE_VESSEL;
@ExcelProperty("气瓶分类")
private String CYLINDER_CATEGORY;
@ExcelProperty("是否纳管")
private Boolean IS_INTO_MANAGEMENT;
@ExcelProperty("工程装置")
private String PROJECT_CONTRAPTION;
@ExcelProperty("信息化")
private String INFORMATION_SITUATION;
@ExcelProperty("工程装置id")
private String projectContraptionId;
@ExcelProperty("数据质量等级")
private Integer dataQualityScore;
@ExcelProperty("设计单位统一信用代码")
private String designUnitCreditCode;
@ExcelProperty("设计单位名称")
private String designUnitName;
@ExcelProperty("制造单位统一社会信用代码")
private String produceUnitCreditCode;
/**
* 最新一条检验信息
*/
@ExcelProperty("")
private List<Inspection> inspections;
/**
* 最新一条维保信息
*/
@ExcelProperty("")
private List<Maintenance> maintenances;
/**
* 技术参数
*/
@ExcelProperty("")
private List<TechParam> techParams;
@Data
public static class TechParam {
@ExcelProperty("")
private String paramKey;
@ExcelProperty("")
private String paramLabel;
@ExcelProperty("")
private String strValue;
@ExcelProperty("")
private Long longValue;
@ExcelProperty("")
private Double doubleValue;
@ExcelProperty("")
private Boolean boolValue;
@ExcelProperty("")
private Date dateValue;
}
@Data
public static class Inspection {
@ExcelProperty("")
private String sequenceNbr;
/**
* 检验类型
*/
@ExcelProperty("")
private String inspectType;
/**
* 检验机构名称
*/
@ExcelProperty("")
private String inspectOrgName;
/**
* 检验人员
*/
@ExcelProperty("")
private String inspectStaff;
/**
* 检验结论
*/
@ExcelProperty("")
private String inspectConclusion;
/**
* 检验日期
*/
@ExcelProperty("")
private Date inspectDate;
/**
* 下次检验日期
*/
@ExcelProperty("")
private Date nextInspectDate;
/**
* 检验机构编码
*/
@ExcelProperty("")
private String inspectOrgCode;
/**
* 报告编号
*/
@ExcelProperty("")
private String inspectReportNo;
}
@Data
public static class Maintenance {
@ExcelProperty("")
private String sequenceNbr;
/**
* 维保单位统一社会信用代码
*/
@ExcelProperty("")
private String meUnitCreditCode;
/**
* 维保单位名称
*/
@ExcelProperty("")
private String meUnitName;
/**
* 维保备案合同
*/
@ExcelProperty("")
private String repairInform;
/**
* 维保合同开始日期
*/
@ExcelProperty("")
private Date informStart;
/**
* 维保合同结束日期
*/
@ExcelProperty("")
private Date informEnd;
/**
* 维保负责人姓名
*/
@ExcelProperty("")
private String meMaster;
/**
* 维保负责人身份证
*/
@ExcelProperty("")
private String meMasterId;
/**
* 紧急救援电话
*/
@ExcelProperty("")
private String emergencyCall;
/**
* 维保周期
*/
@ExcelProperty("")
private String meCycle;
/**
* 大修周期
*/
@ExcelProperty("")
private String overhaulCycle;
/**
* 24小时维保电话
*/
@ExcelProperty("")
private String me24Telephone;
}
}
...@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.statistcs.biz.controller; ...@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.statistcs.biz.controller;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.biz.common.controller.BaseController; import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.biz.common.utils.RequestContextWrapper;
import com.yeejoin.amos.boot.module.statistcs.biz.service.impl.ComprehensiveStatisticalAnalysisServiceImpl; import com.yeejoin.amos.boot.module.statistcs.biz.service.impl.ComprehensiveStatisticalAnalysisServiceImpl;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -15,6 +16,7 @@ import org.typroject.tyboot.core.restful.utils.ResponseModel; ...@@ -15,6 +16,7 @@ import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.UUID;
/** /**
* 综合统计分析API * 综合统计分析API
...@@ -80,5 +82,25 @@ public class ComprehensiveStatisticalAnalysisController extends BaseController { ...@@ -80,5 +82,25 @@ public class ComprehensiveStatisticalAnalysisController extends BaseController {
return ResponseHelper.buildResponse(statisticalAnalysisService.queryForPage(jsonObject)); return ResponseHelper.buildResponse(statisticalAnalysisService.queryForPage(jsonObject));
} }
/**
* 综合统计分析接口-导出
*
* @param map 入参
* @return result
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/export")
@ApiOperation(httpMethod = "POST", value = "综合统计分析接口-导出", notes = "综合统计分析接口-导出")
public ResponseModel<String> export(@RequestBody Map<String, Object> map) {
String uuid = UUID.randomUUID().toString();
statisticalAnalysisService.startDownLoadMsg("综合统计分析设备列表", uuid);
RequestContextWrapper contextWrapper = RequestContextWrapper.capture();
new Thread(() -> {
contextWrapper.apply();
statisticalAnalysisService.export(uuid, new JSONObject(map));
}).start();
return ResponseHelper.buildResponse("后台处理中,请注意下载!");
}
} }
package com.yeejoin.amos.boot.module.statistcs.biz.service.impl; package com.yeejoin.amos.boot.module.statistcs.biz.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.annotation.TechnicalParameter; import com.yeejoin.amos.boot.biz.common.annotation.TechnicalParameter;
import com.yeejoin.amos.boot.biz.common.entity.DataDictionary; import com.yeejoin.amos.boot.biz.common.entity.DataDictionary;
import com.yeejoin.amos.boot.biz.common.excel.ExcelUtil;
import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl; import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl;
import com.yeejoin.amos.boot.module.common.api.dto.TechParamItem; import com.yeejoin.amos.boot.module.common.api.dto.TechParamItem;
import com.yeejoin.amos.boot.module.common.biz.utils.TechParamUtil; import com.yeejoin.amos.boot.module.common.biz.utils.TechParamUtil;
import com.yeejoin.amos.boot.module.statistcs.biz.utils.JsonUtils; import com.yeejoin.amos.boot.module.statistcs.biz.utils.JsonUtils;
import com.yeejoin.amos.boot.module.statistcs.biz.utils.MinioUtils;
import com.yeejoin.amos.boot.module.statistics.api.enums.AdvanceSearchEnum; import com.yeejoin.amos.boot.module.statistics.api.enums.AdvanceSearchEnum;
import com.yeejoin.amos.boot.module.statistics.api.enums.ConditionEnum; import com.yeejoin.amos.boot.module.statistics.api.enums.ConditionEnum;
import com.yeejoin.amos.boot.module.statistics.api.enums.StatisticalAnalysisEnum; import com.yeejoin.amos.boot.module.statistics.api.enums.StatisticalAnalysisEnum;
import com.yeejoin.amos.boot.module.statistics.api.mapper.TzsCustomFilterMapper; import com.yeejoin.amos.boot.module.statistics.api.mapper.TzsCustomFilterMapper;
import com.yeejoin.amos.boot.module.statistics.api.vo.EquipInfoVo;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentClassifityEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentClassifityEnum;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -31,9 +35,13 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -31,9 +35,13 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource; import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.component.emq.EmqKeeper;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
...@@ -53,14 +61,14 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -53,14 +61,14 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
@Value("classpath:/json/equipCategory.json") @Value("classpath:/json/equipCategory.json")
private Resource equipCategory; private Resource equipCategory;
private final TzsCustomFilterMapper tzsCustomFilterMapper;
@Autowired private final DataDictionaryServiceImpl dataDictionaryService;
private TzsCustomFilterMapper tzsCustomFilterMapper; private final EmqKeeper emqKeeper;
@Autowired
private DataDictionaryServiceImpl dataDictionaryService;
private final RestHighLevelClient restHighLevelClient; private final RestHighLevelClient restHighLevelClient;
private final String DOWN_LOAD_START_TEMP = "{\"id\":\"%s\",\"status\":\"starting\",\"fileName\":\"%s\",\"time\":\"%s\"}";
private final String DOWNLOAD_TOPIC = "/topic/download/excel/%s";
private final String BUCKET_NAME = "upload";
private final String UPLOAD_PATH = "/tzs/excelTempFile";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
public List<Map<String, Object>> queryEquipmentCategory(String key) { public List<Map<String, Object>> queryEquipmentCategory(String key) {
...@@ -393,4 +401,54 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -393,4 +401,54 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
return result; return result;
} }
/**
* 开始下载 发送消息
*/
public void startDownLoadMsg(String fileName, String uuid) {
try {
emqKeeper.getMqttClient().publish(String.format(DOWNLOAD_TOPIC, RequestContext.getToken()),
String.format(DOWN_LOAD_START_TEMP, uuid, fileName, new Date().getTime()).getBytes(StandardCharsets.UTF_8),
2, false);
} catch (Exception e) {
log.error(e.getMessage());
}
}
/**
* 发送主题消息,给企业推送excel 结束下载提醒
*
* @param topic 主体格式为: /download/excel/${token}
* @param jsonObject 文件名称 + excel文件路径(minio)
*/
public void sendDownLoadExcelMsg(String topic, JSONObject jsonObject) {
try {
emqKeeper.getMqttClient().publish(topic, JSONObject.toJSONString(jsonObject).getBytes(StandardCharsets.UTF_8), 2, false);
} catch (Exception e) {
log.error(e.getMessage());
}
}
/**
* 综合统计分析接口-导出
* @param uuid uuid
* @param filter 过滤条件
*/
public void export(String uuid, JSONObject filter) {
// 查询数据
JSONObject jsonData = this.queryForPage(filter);
// 类型转化
List<EquipInfoVo> exportData = JSONArray.parseArray(JSON.toJSONString(jsonData.get("pageData")), EquipInfoVo.class);
// 转化附件
MultipartFile templateExcelFile = ExcelUtil.createTemplateExcelFile("综合统计分析设备列表数据",
"综合统计分析设备列表", exportData, EquipInfoVo.class, null, false);
// 上传minio服务器
String urlString = MinioUtils.uploadExcelFile(templateExcelFile, BUCKET_NAME, UPLOAD_PATH);
// 提醒下载
this.sendDownLoadExcelMsg(String.format(DOWNLOAD_TOPIC, RequestContext.getToken()), new JSONObject()
.fluentPut("id", uuid)
.fluentPut("status", "done")
.fluentPut("fileName", "综合统计分析设备列表")
.fluentPut("url", urlString)
.fluentPut("time", new Date().getTime()));
}
} }
\ No newline at end of file
package com.yeejoin.amos.boot.module.statistcs.biz.utils;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import org.springframework.web.multipart.MultipartFile;
import java.util.Map;
public class MinioUtils {
/**
* 上传excel文件到minio服务器
*
* @param templateExcelFile 文件
* @param bucketName 存储桶名称
* @param bucketName 文件名称
* @return minio文件路径
*/
public static String uploadExcelFile(MultipartFile templateExcelFile, String bucketName, String uploadPath) {
FeignClientResult<Map<String, String>> uploadResult = Systemctl.fileStorageClient.updateBucketFile(templateExcelFile, bucketName, uploadPath);
String urlString = "";
if (uploadResult != null && uploadResult.getResult() != null) {
for (String s : uploadResult.getResult().keySet()) {
urlString = s;
}
}
return urlString;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment