个人网站建设在哪里,网站需求分析网站建设,泗水县建设局的网站怎么打开,wordpress template hierarchy一、前端
1.在template中加入导入按钮、导入时的对话框 2.在data中引入参数 3.在method中引入相关方法 4.从auth微服务中引入getToken方法 二、后台 1.创建excel文件夹#xff0c;创建
①excel表格对应的实体类OpenCgDetectorInfoExcel
②调用import所需的设置template中加入导入按钮、导入时的对话框 2.在data中引入参数 3.在method中引入相关方法 4.从auth微服务中引入getToken方法 二、后台 1.创建excel文件夹创建
①excel表格对应的实体类OpenCgDetectorInfoExcel
②调用import所需的设置工具OpenCgDetectorInfoImportListener 2.Excel对应的实体类及工具类内容如下其中id为雪花id在Excel模板中并没有出现该字段由于使用雪花id必须使用Mybatis封装的insert所以此处需要手动插入雪花id方法见后面
/*** Excel导入火焰探头模型实体类*/
Data
ColumnWidth(25)
HeadRowHeight(20)
ContentRowHeight(18)
public class FireDetectorInfoExcel implements Serializable {private static final long serialVersionUID 1L;ColumnWidth(15)ExcelProperty(id)private Long id;ColumnWidth(15)ExcelProperty(项目编号)private String projectId;ColumnWidth(15)ExcelProperty(探头库类型)private Integer belongType;ColumnWidth(15)ExcelProperty(探头名称)private String probeName;ColumnWidth(15)ExcelProperty(探头描述)private String probeDescribe;ColumnWidth(15)ExcelProperty(品牌)private String probeBrand;ColumnWidth(15)ExcelProperty(型号)private String probModel;ColumnWidth(15)ExcelProperty(最大距离)private Double maxDistance;ColumnWidth(15)ExcelProperty(边缘效率)private Double edgeEffect;ColumnWidth(15)ExcelProperty(上仰角度)private Double upAngle;ColumnWidth(15)ExcelProperty(上仰满量程角度)private Double upFullAngle;ColumnWidth(15)ExcelProperty(俯视角度)private Double downAngle;ColumnWidth(15)ExcelProperty(俯视满量程角度)private Double downFullAngle;ColumnWidth(15)ExcelProperty(水平角度)private Double levelAngle;ColumnWidth(15)ExcelProperty(水平满量程角度)private Double levelFullAngle;
}Data
RequiredArgsConstructor
EqualsAndHashCode(callSuper true)
public class OpenCgDetectorInfoImportListener extends AnalysisEventListenerOpenCgDetectorInfoExcel {/*** 默认每隔3000条存储数据库*/private int batchCount 3000;/*** 缓存的数据列表*/private ListOpenCgDetectorInfoExcel list new ArrayList();/*** 用户service*/private final IOpenCgDetectorInfoService openCgDetectorInfoService;Overridepublic void invoke(OpenCgDetectorInfoExcel data, AnalysisContext context) {list.add(data);// 达到BATCH_COUNT则调用importer方法入库防止数据几万条数据在内存容易OOMif (list.size() batchCount) {// 调用importer方法openCgDetectorInfoService.importOpenCgDetectorInfo(list);// 存储完成清理listlist.clear();}}Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {// 调用importer方法openCgDetectorInfoService.importOpenCgDetectorInfo(list);// 存储完成清理listlist.clear();}
}3.controller层加入方法url需要与前端页面中的action的值对应 /*** excel导入开路式可燃气体探头模型*/PostMapping(import-opencgdetectorinfo)ApiOperationSupport(order 12)ApiOperation(value 导入开路式可燃气体探头模型, notes 传入excel)public R importOpenCgDetectorInfo(MultipartFile file, Integer isCovered) {String filename file.getOriginalFilename();if (StringUtils.isEmpty(filename)) {throw new RuntimeException(请上传文件!);}if ((!StringUtils.endsWithIgnoreCase(filename, .xls) !StringUtils.endsWithIgnoreCase(filename, .xlsx))) {throw new RuntimeException(请上传正确的excel文件!);}InputStream inputStream;try {OpenCgDetectorInfoImportListener importListener new OpenCgDetectorInfoImportListener(openCgDetectorInfoService);inputStream new BufferedInputStream(file.getInputStream());ExcelReaderBuilder builder EasyExcel.read(inputStream, OpenCgDetectorInfoExcel.class, importListener);builder.doReadAll();} catch (IOException e) {e.printStackTrace();}return R.success(操作成功);}4.service层 5.Impl /*** Excel导入开路式可燃气体探头模型* param data*/Overridepublic void importOpenCgDetectorInfo(ListOpenCgDetectorInfoExcel data) {private OpenCgDetectorInfoMapper openCgDetectorInfoMapper;//遍历data为每个对象手动插入雪花idfor(OpenCgDetectorInfoExcel excel : data ){IdentifierGenerator identifierGeneratornew DefaultIdentifierGenerator();excel.setId((long)identifierGenerator.nextId(new Object()));}openCgDetectorInfoMapper.importOpenCgDetectorInfo(data);}6.mapper 7.xml文件 !-- Excel导入开路式可燃气体探头模型--insert idimportOpenCgDetectorInfo parameterTypejava.util.ArrayListinsert into fgdm_open_cg_detector_info(id,project_id,belong_type,probe_name,probe_num,probe_factory,com_medium,space_type,jz_diameter,real_coefficient,real_diameter,alarm_level_one,alarm_level_two,max_distance,probe_describe) valuesforeach collectionlist indexindex separator, itemitem(#{item.id},#{item.projectId},#{item.belongType},#{item.probeName},#{item.probeNum},#{item.probeFactory},#{item.comMedium},#{item.spaceType},#{item.jzDiameter},#{item.realCoefficient},#{item.realDiameter},#{item.alarmLevelOne},#{item.alarmLevelTwo},#{item.maxDistance},#{item.probeDescribe})/foreach/insert