diff --git a/laws-base/laws-base-core/src/main/java/com/jero/common/util/ImportExcelUtil.java b/laws-base/laws-base-core/src/main/java/com/jero/common/util/ImportExcelUtil.java index 09fc9e8b..7a772694 100644 --- a/laws-base/laws-base-core/src/main/java/com/jero/common/util/ImportExcelUtil.java +++ b/laws-base/laws-base-core/src/main/java/com/jero/common/util/ImportExcelUtil.java @@ -21,7 +21,9 @@ import java.io.PushbackInputStream; import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.Objects; /** * 导出返回信息 @@ -179,4 +181,13 @@ public class ImportExcelUtil { } return flag; } + + public static boolean checkExcelFile(MultipartFile file){ + if(Objects.isNull(file)){ + return false; + } + String fileName = file.getOriginalFilename(); + String extension = fileName.substring(fileName.lastIndexOf(".") + 1); + return Arrays.asList("xls","xlsx","XLS","XLSX").contains(extension); + } } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/controller/MarketStandardDetailController.java b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/controller/MarketStandardDetailController.java index 21d49a1b..c923fb7b 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/controller/MarketStandardDetailController.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/controller/MarketStandardDetailController.java @@ -146,7 +146,7 @@ public class MarketStandardDetailController { if (!map.containsKey("ids") || StringUtils.isEmpty(map.get("ids"))) { return Result.error("请选择数据!"); } - return lawsMarketStandardDetailService.deleteBatchById(map.get("id")); + return lawsMarketStandardDetailService.deleteBatchById(map.get("ids")); } /** @@ -160,9 +160,8 @@ public class MarketStandardDetailController { @ApiOperationSupport(order = 7) @PostMapping(value = "/importExcel") @RequiresPermissions("marketStandard:importExcel") - public Result importExcel(@RequestParam("file") @ApiParam("文件") MultipartFile file) { - List errorMessages = lawsMarketStandardDetailService.importExcel(file); - return Result.OK(errorMessages); + public Result importExcel(@RequestParam("file") @ApiParam("文件") MultipartFile file,@RequestParam("manifestId") String manifestId) { + return lawsMarketStandardDetailService.importExcel(file, manifestId); } /** diff --git a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/entity/LawsMarketStandardDetail.java b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/entity/LawsMarketStandardDetail.java index 161ba47b..46447d60 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/entity/LawsMarketStandardDetail.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/entity/LawsMarketStandardDetail.java @@ -112,9 +112,7 @@ public class LawsMarketStandardDetail implements Serializable { * 注册日期 */ @Excel(name = "注册日期", width = 15) - @DateTimeFormat(pattern="yyyy-MM-dd") @ApiModelProperty(value = "注册日期") - // todo 类型改成varchar private String registrationDate; /** diff --git a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/service/ILawsMarketStandardDetailService.java b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/service/ILawsMarketStandardDetailService.java index 0e603bdb..96b85033 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/service/ILawsMarketStandardDetailService.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/service/ILawsMarketStandardDetailService.java @@ -39,7 +39,7 @@ public interface ILawsMarketStandardDetailService extends IService importExcel(MultipartFile file); + Result importExcel(MultipartFile file, String manifestId); /** * 下载模板 diff --git a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/service/impl/LawsMarketStandardDetailServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/service/impl/LawsMarketStandardDetailServiceImpl.java index 3b3d61c5..61bf4f79 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/service/impl/LawsMarketStandardDetailServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/service/impl/LawsMarketStandardDetailServiceImpl.java @@ -7,11 +7,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.api.vo.Result; import com.jero.common.exception.JeroBootException; import com.jero.common.system.query.QueryGenerator; +import com.jero.common.util.ImportExcelUtil; import com.jero.modules.laws.marketStandard.entity.LawsMarketStandard; import com.jero.modules.laws.marketStandard.entity.LawsMarketStandardDetail; import com.jero.modules.laws.marketStandard.mapper.LawsMarketStandardDetailMapper; import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardDetailService; import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardService; +import com.jero.modules.laws.utils.ValidUtil; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.jeecgframework.poi.excel.ExcelImportUtil; @@ -104,21 +106,36 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl importExcel(MultipartFile file) { + public Result importExcel(MultipartFile file,String manifestId) { List list = new ArrayList<>(); + // 校验文件是否为excel + if (!ImportExcelUtil.checkExcelFile(file)) { + throw new JeroBootException("请导入excel文件"); + } ImportParams params = new ImportParams(); - params.setHeadRows(0); - // todo 校验excel 字段是否正确 -// boolean b = ImportExcelUtil.checkTemplateTitle(file, LawsMarketStandardDetail.class, 0, 0); -// if (!b) { -// throw new JeroBootException("excel文件表头错误,请重新下载"); -// } + params.setHeadRows(1); + // 校验excel 字段是否正确 + boolean b = ImportExcelUtil.checkTemplateTitle(file, LawsMarketStandardDetail.class, params.getTitleRows(), 0); + if (!b) { + throw new JeroBootException("excel文件表头错误,请重新下载"); + } try { List listLawsMarketStandardDetail = ExcelImportUtil.importExcel(file.getInputStream(), LawsMarketStandardDetail.class, params); if(!CollectionUtils.isEmpty(listLawsMarketStandardDetail) && listLawsMarketStandardDetail.size() >= 2){ listLawsMarketStandardDetail = listLawsMarketStandardDetail.subList(2,listLawsMarketStandardDetail.size()); } - return listLawsMarketStandardDetail; + for (LawsMarketStandardDetail lawsMarketStandardDetail : listLawsMarketStandardDetail) { + lawsMarketStandardDetail.setManifestId(manifestId); + // 校验数据 + StringBuilder m = new StringBuilder(); + StringBuilder g = ValidUtil.validateReturnBuilder(lawsMarketStandardDetail); + if(!StringUtils.isEmpty(g.toString())){ + m.append(g.toString()); + } + } + + saveBatch(listLawsMarketStandardDetail); + return Result.OK("导入成功"); } catch (Exception e) { log.error(e.getMessage(),e); } finally { @@ -128,7 +145,7 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl add(LawsMarketStandardDetail marketStandardDetail) { + LambdaQueryWrapper queryLawsMarketStandardDetail = new LambdaQueryWrapper<>(); + queryLawsMarketStandardDetail.eq(LawsMarketStandardDetail::getStandardId,marketStandardDetail.getStandardId()); + queryLawsMarketStandardDetail.eq(LawsMarketStandardDetail::getManifestId,marketStandardDetail.getManifestId()); + long l = count(queryLawsMarketStandardDetail); + if(l > 0){ + Result.error("标准已存在"); + } save(marketStandardDetail); return Result.OK("操作成功"); } @Override public Result edit(LawsMarketStandardDetail marketStandardDetail) { + LambdaQueryWrapper queryLawsMarketStandardDetail = new LambdaQueryWrapper<>(); + queryLawsMarketStandardDetail.eq(LawsMarketStandardDetail::getStandardId,marketStandardDetail.getStandardId()); + queryLawsMarketStandardDetail.eq(LawsMarketStandardDetail::getManifestId,marketStandardDetail.getManifestId()); + queryLawsMarketStandardDetail.ne(LawsMarketStandardDetail::getId,marketStandardDetail.getId()); + long l = count(queryLawsMarketStandardDetail); + if(l > 0){ + Result.error("标准已存在"); + } updateById(marketStandardDetail); return Result.OK("操作成功"); } @@ -178,5 +210,3 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl... groups){ + StringBuilder msg = new StringBuilder(); + Set> set = validator.validate(object, groups); + for (ConstraintViolation constraintViolation : set) { + msg.append(constraintViolation.getMessage()).append(";"); + } + if (StringUtils.isNotBlank(msg)) { + throw new JeroBootException(msg.substring(0,msg.length()-1)); + } + } + + /** + * 手动校验@Vaild并抛出异常信息list + * + * @param object 待校验对象 + * @param groups 待校验的组 + * @return errorList + */ + public static List validateReturnList(Object object, Class... groups){ + List list = new ArrayList<>(); + Set> set = validator.validate(object, groups); + for (ConstraintViolation constraintViolation : set) { + list.add(constraintViolation.getMessage()); + } + return list; + } + + /** + * @Description 校验全部数据格式 + * @Author lqt + * @Date 2021/8/26 + * @Param object 对象 + * @Return StringBuilder + */ + public static StringBuilder validateReturnBuilder(Object object, Class... groups){ + StringBuilder msg = new StringBuilder(); + Set> set = validator.validate(object, groups); + if(set != null && set.size() >0 ){ + Field[] fields = object.getClass().getDeclaredFields(); + setField(object, fields); + for (Field field : fields) { + for(ConstraintViolation constraintViolation : set){ + if(Objects.equals(constraintViolation.getPropertyPath().toString(),field.getName())){ + // 这里循环获取错误信息,可以自定义格式 + msg.append(constraintViolation.getMessage()).append(";"); + } + } + } + } + return msg; + } + + private static void setField(Object object, Field[] fields) { + for (Field field : fields) { + try { + ReflectionUtils.makeAccessible(field); + Object obj = ReflectionUtils.getField(field,object); + if(!Objects.isNull(obj) && StringUtils.isBlank(obj.toString())){ + ReflectionUtils.makeAccessible(field); + ReflectionUtils.setField(field,object,null); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + /** + * @Description 校验全部数据格式 + * @Author lqt + * @Date 2021/8/26 + * @Param object 对象 + * @Return StringBuilder + */ + public static StringBuilder validateReturnBuilderByFields(String fields,Object object, Class... groups){ + StringBuilder msg = new StringBuilder(); + Set> set = validator.validate(object, groups); + if(set != null && set.size() >0 ){ + for(ConstraintViolation constraintViolation : set){ + if(Objects.equals(constraintViolation.getPropertyPath().toString(),fields)){ + // 这里循环获取错误信息,可以自定义格式 + msg.append(constraintViolation.getMessage()).append(";"); + } + } + } + return msg; + } +}