做h5网站公司,邯山网站制作,怎么开设自己的网站,餐饮小店面装修设计产品需求#xff1a;
前端上传个csv 或 excel 文件#xff0c;文件共4列#xff0c;验证文件大小#xff0c;类型#xff0c;文件名长度#xff0c;文件内容#xff0c;如果某行某个单元格数据验证不通过#xff0c;就把错误信息放到这行第五列#xff0c;然后把带有…产品需求
前端上传个csv 或 excel 文件文件共4列验证文件大小类型文件名长度文件内容如果某行某个单元格数据验证不通过就把错误信息放到这行第五列然后把带有错误信息的文件返回给前端。 ApiOperation(value 上传新增)PostMapping(path uploadFile)public ResultMsg? uploadExcelFile(RequestParam(file) MultipartFile file) throws IOException {if (file.getOriginalFilename().length() 256) {return ResultMsg.failed(文件名超长);}if (file.getSize() 3 * 1024 * 1024) {return ResultMsg.failed(文件太大);}String fileType Optional.ofNullable(file.getOriginalFilename()).map(name - name.substring(name.lastIndexOf(.))).orElse(null);if (!.xls.equalsIgnoreCase(fileType) !.xlsx.equalsIgnoreCase(fileType) !.csv.equalsIgnoreCase(fileType)) {return ResultMsg.failed(仅支持 [xls xlsx csv] 格式);}StyleOfWritingExcelDTO dto null;try {dto this.validateAndReadExcel(file.getInputStream());} catch (IOException e) {throw new RuntimeException(e);}if (dto.getHasError()) {ByteArrayOutputStream byteArrayOutputStream new ByteArrayOutputStream();EasyExcel.write(byteArrayOutputStream, StyleOfWritingExcelModel.class)
// .excelType(ExcelTypeEnum.XLSX).sheet(sheet1).doWrite(dto.getStyleOfWritingExcelModelList());String base64Str Base64.getEncoder().encodeToString(byteArrayOutputStream.toByteArray());MapObject, Object base64Map new HashMap();base64Map.put(errStr, 文件内容不合格);base64Map.put(fileData, base64Str);return ResultMsg.failed(4001, 文件内容不合格, base64Map);}if (dto.getStyleOfWritingExcelModelList().isEmpty()) return ResultMsg.failed(文件内容为空);saveData(dto.getStyleOfWritingExcelModelList());return ResultMsg.success();}private StyleOfWritingExcelDTO validateAndReadExcel(InputStream inputStream) {StyleOfWritingExcelDTO result new StyleOfWritingExcelDTO();ListStyleOfWritingExcelModel dataList new ArrayList();EasyExcel.read(inputStream, StyleOfWritingExcelModel.class, new AnalysisEventListenerStyleOfWritingExcelModel() {Overridepublic void invoke(StyleOfWritingExcelModel styleOfWritingExcelModel, AnalysisContext analysisContext) {StringBuilder errorInfo new StringBuilder();CategoryEntity firstCategory null;if (StringUtils.isBlank(styleOfWritingExcelModel.getFirstCategoryName())) {errorInfo.append(品类不能为空);} else if (styleOfWritingExcelModel.getFirstCategoryName().length() 50) {errorInfo.append(String.format(品类名长度超限限制最大[%d]字符, 50));} else {firstCategory this.getCategoryCode(styleOfWritingExcelModel.getFirstCategoryName());if (ObjectUtils.isEmpty(firstCategory))errorInfo.append(String.format(品类在库里未找到));elsestyleOfWritingExcelModel.setFirstCategory(firstCategory.getCode());}CategoryEntity secondCategory null;if (StringUtils.isBlank(styleOfWritingExcelModel.getSecondCategoryName())) {errorInfo.append(二级品类不能为空; );} else if (styleOfWritingExcelModel.getSecondCategoryName().length() 50) {errorInfo.append(String.format(二级品类名长度超限限制最大[%d]字符, 50));} else {secondCategory this.getCategoryCode(styleOfWritingExcelModel.getSecondCategoryName());if (ObjectUtils.isEmpty(secondCategory))errorInfo.append(String.format(二级品类在库里未找到));elsestyleOfWritingExcelModel.setSecondCategory(secondCategory.getCode());}if (ObjectUtils.isNotEmpty(firstCategory) ObjectUtils.isNotEmpty(secondCategory)) {if (!firstCategory.getCode().equals(secondCategory.getParentCode())) {errorInfo.append(String.format(二级品类 和 品类 不匹配));}}if (StringUtils.isBlank(styleOfWritingExcelModel.getContent())) {errorInfo.append(内容不能为空; );} else if (styleOfWritingExcelModel.getContent().length() 3000) {errorInfo.append(String.format(内容长度超限限制最大[%d]字符, 3000));}styleOfWritingExcelModel.setErrorInfo(errorInfo.toString());dataList.add(styleOfWritingExcelModel);if (!result.getHasError() StringUtils.isNotBlank(errorInfo.toString())) {result.setHasError(true);}}private CategoryEntity getCategoryCode(String categoryName) {ListCategoryEntity categoryList categoryService.list(new QueryWrapperCategoryEntity().lambda().eq(CategoryEntity::getName, categoryName));return categoryList.stream().findFirst().orElse(null);}Overridepublic void doAfterAllAnalysed(AnalysisContext context) {// 解析完成后的操作}}).sheet().doRead();result.setStyleOfWritingExcelModelList(dataList);return result;}返回{code: 4001,message: 文件内容不合格,data: {fileData: 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,errStr: 文件内容不合格},timestamp: 63417752000000
}