当前位置: 首页 > news >正文

品牌网站开发网络推广是什么专业

品牌网站开发,网络推广是什么专业,做100个网站挂广告联盟,短网址在线生成器使用自定义注解实现Excel数据导入中的枚举值校验 在实际开发中,我们经常需要从Excel文件中导入数据,并且这些数据需要符合一定的规则,比如某些字段的值必须是预定义的枚举值。本文将介绍如何使用自定义注解来实现这一功能,以提高…

使用自定义注解实现Excel数据导入中的枚举值校验

在实际开发中,我们经常需要从Excel文件中导入数据,并且这些数据需要符合一定的规则,比如某些字段的值必须是预定义的枚举值。本文将介绍如何使用自定义注解来实现这一功能,以提高代码的可维护性和可读性。

1. 定义自定义注解

首先,我们需要定义一个自定义注解FieldEnum,用于标记需要进行枚举值校验的字段。

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;/*** 字段枚举信息配置** @author liusy* @since 2022/05/30 15:57 星期一*/
@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = {ElementType.FIELD, ElementType.PARAMETER})
public @interface FieldEnum {/*** 枚举类型,从数据库枚举表中校验*/String type() default "";/*** 是否是组合枚举,多个用,分割*/boolean isEnumGroup() default false;/*** 设置本地枚举列表,默认为空,如果设置将从本地枚举列表中获取进行对比** @return 本地枚举列表*/String[] localEnumList() default {};
}

2. 实现校验逻辑

接下来,我们需要实现一个工具类ValidateUtil,用于校验带有FieldEnum注解的字段。


import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.inspur.planning.flow.annotation.FieldEnum;
import com.inspur.planning.flow.exception.CustomException;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.jdbc.core.JdbcTemplate;import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.ValidationException;
import javax.validation.Validator;
import java.lang.reflect.Field;
import java.util.*;/*** @author liusy* @since 2023/03/16 14:40 星期四*/
public class ValidateUtil {public static <T> void validateEnum(T bean) {List<String> errorMsgList = new ArrayList<>();Field[] fields = bean.getClass().getDeclaredFields();for (Field field : fields) {field.setAccessible(true);Object val = getFieldValue(field, bean);if (ObjectUtil.isEmpty(val)) {continue;}FieldEnum fieldEnum = field.getAnnotation(FieldEnum.class);if (fieldEnum != null) {validateFieldEnum(fieldEnum, val, errorMsgList);}}if (!errorMsgList.isEmpty()) {throw new CustomException(String.join(";", errorMsgList));}}private static Object getFieldValue(Field field, Object bean) {try {return field.get(bean);} catch (IllegalAccessException e) {throw new RuntimeException("反射获取字段值失败", e);}}private static void validateFieldEnum(FieldEnum fieldEnum, Object val, List<String> errorMsgList) {String name = val.toString();// 本地枚举校验if (fieldEnum.localEnumList().length > 0) {if (!Arrays.asList(fieldEnum.localEnumList()).contains(name)) {errorMsgList.add(name + "不是枚举值,请按照枚举填写");}}if(StrUtil.isNotEmpty(fieldEnum.type())){// 数据库查询校验if (fieldEnum.isEnumGroup()) {String[] split = name.split(",");for (String item : split) {if (!checkIsEnum(fieldEnum.type(), item)) {errorMsgList.add(item + "不是枚举值,请按照枚举填写");}}} else {if (!checkIsEnum(fieldEnum.type(), name)) {errorMsgList.add(name + "不是枚举值,请按照枚举填写");}}}}private static boolean checkIsEnum(String type, String name) {JdbcTemplate jdbcTemplate = SpringUtil.getBean(JdbcTemplate.class);String sql = "select count(1) from PL_ENUMERATION where TYPE = ? and NAME = ? and STATEFLAG = 0";return jdbcTemplate.queryForObject(sql, Integer.class, type, name) > 0;}
}

3. 在数据模型中使用注解

在需要进行枚举值校验的字段上添加FieldEnum注解。

@Data
public class ImporTaskDTO {/*** 任务状态*/@NotEmpty(message = "任务状态不能为空")@FieldEnum(localEnumList = {"施工中,未提交完工", "提交送审", "已提交完工未送审"})@ExcelProperty("任务状态【必填】")private String taskStatus;/*** 是否有问题*/@FieldEnum(localEnumList = {"是", "否"})@NotEmpty(message = "是否有问题不能为空")@ExcelProperty("是否有问题【必填】")private String existsProblem;/*** 问题重要程度*/@FieldEnum(type = "PROBLEM_LEVEL", isEnumGroup = false)private String problemLevel;/*** 检查方式*/@NotEmpty(message = "检查方式不能为空")@ExcelProperty("检查方式【必填】")private String checkType;}

4. 在业务逻辑中调用校验方法

在导入Excel数据的方法中调用ValidateUtil.validateEnum方法进行校验。

    @Overridepublic List<QualityManageOrder> analysisExcel(MultipartFile file) {List<ImportTaskDTO> dataList = new ArrayList<>();try {EasyExcel.read(file.getInputStream(), ImportQualityManageTaskDTO.class, new PageReadListener<ImportTaskDTO>(readList -> {dataList.addAll(readList);})).sheet().doRead();} catch (IOException e) {throw new CustomException("读取文件失败");}// 校验数据,并且填充基本任务数据ValidateUtil.validateEnum(dataList);// 其他业务逻辑...return orderList;}

通过以上步骤,我们就可以使用自定义注解实现Excel数据导入时的枚举值校验。这样不仅提高了代码的可维护性,还使得代码更加简洁和易读。


文章转载自:
http://wanjiasmuggler.kryr.cn
http://wanjialanguisher.kryr.cn
http://wanjiaaccept.kryr.cn
http://wanjiasheeny.kryr.cn
http://wanjiahyman.kryr.cn
http://wanjiaactionist.kryr.cn
http://wanjiadespondently.kryr.cn
http://wanjiaunlearned.kryr.cn
http://wanjianeurological.kryr.cn
http://wanjiaerysipelas.kryr.cn
http://wanjiaisanomal.kryr.cn
http://wanjiasuited.kryr.cn
http://wanjiadaggerboard.kryr.cn
http://wanjiablunderhead.kryr.cn
http://wanjiaportwide.kryr.cn
http://wanjiaswatow.kryr.cn
http://wanjiaindiscutable.kryr.cn
http://wanjiaredbrick.kryr.cn
http://wanjiatelesthesia.kryr.cn
http://wanjiaquadrangularly.kryr.cn
http://wanjiaelam.kryr.cn
http://wanjianeuropteran.kryr.cn
http://wanjiamodge.kryr.cn
http://wanjiayttriferous.kryr.cn
http://wanjiapalpably.kryr.cn
http://wanjiaproverbialist.kryr.cn
http://wanjiapyrrho.kryr.cn
http://wanjiaricebird.kryr.cn
http://wanjiachalcophanite.kryr.cn
http://wanjiabrought.kryr.cn
http://wanjiainhalant.kryr.cn
http://wanjiaunfeasible.kryr.cn
http://wanjiapottage.kryr.cn
http://wanjiaprefatory.kryr.cn
http://wanjiatanniferous.kryr.cn
http://wanjiascherzando.kryr.cn
http://wanjiacustomize.kryr.cn
http://wanjiacouncillor.kryr.cn
http://wanjiafalconer.kryr.cn
http://wanjiaessentialism.kryr.cn
http://wanjiaunconsummated.kryr.cn
http://wanjiarindless.kryr.cn
http://wanjiaelision.kryr.cn
http://wanjiarowing.kryr.cn
http://wanjiahyperlipemia.kryr.cn
http://wanjiapostcommunion.kryr.cn
http://wanjianitrochloroform.kryr.cn
http://wanjiahemihydrated.kryr.cn
http://wanjiamacrostylous.kryr.cn
http://wanjiapronouncing.kryr.cn
http://wanjiarumorous.kryr.cn
http://wanjiaceder.kryr.cn
http://wanjialeaper.kryr.cn
http://wanjiaprotestantize.kryr.cn
http://wanjiasafeguard.kryr.cn
http://wanjianeurogenetics.kryr.cn
http://wanjiafloccose.kryr.cn
http://wanjiachengteh.kryr.cn
http://wanjiapenile.kryr.cn
http://wanjiachunderous.kryr.cn
http://wanjiasaccade.kryr.cn
http://wanjiaoverroast.kryr.cn
http://wanjiahumanitarianism.kryr.cn
http://wanjiaemigrate.kryr.cn
http://wanjiaaphony.kryr.cn
http://wanjiajemmy.kryr.cn
http://wanjiarubeola.kryr.cn
http://wanjiayataghan.kryr.cn
http://wanjiaunscrupulously.kryr.cn
http://wanjiatoby.kryr.cn
http://wanjiadinero.kryr.cn
http://wanjiapulk.kryr.cn
http://wanjiademur.kryr.cn
http://wanjiatripartite.kryr.cn
http://wanjiakeratin.kryr.cn
http://wanjiadappled.kryr.cn
http://wanjiazealand.kryr.cn
http://wanjiadrupelet.kryr.cn
http://wanjiaexertion.kryr.cn
http://wanjiabriareus.kryr.cn
http://www.15wanjia.com/news/102826.html

相关文章:

  • 上海网站公安备案做百度推广销售怎么找客户
  • 专业做网站的公司 郑州企业网站推广方案的策划
  • 诛仙2官方网站西施任务怎么做友情链接如何添加
  • wordpress 文件发送邮件百度seo关键词优化推荐
  • 企业汽车网站建设seo自动优化工具
  • 网站的优化总结怎么写怎么做营销
  • 网站内容及内链建设长沙正规竞价优化服务
  • 怎样做网站收广告费极速一区二区三区精品
  • 网站制作模板程序seo 怎么做到百度首页
  • 国内手机网站建设网络推广 网站制作
  • 有没有做宠物的网站网络营销方案案例
  • 济南做网站公司哪家好百度电脑版下载
  • 简洁大气的企业网站百度中心
  • 网站的设计流程简述什么是seo
  • 做美国代购需要知道的网站外贸网站推广优化
  • 小说网站怎么做流量太原seo计费管理
  • 东莞品牌网站设计公司网页设计作品
  • 互联网seo是什么意思六盘水seo
  • wordpress文章图片批量删除昆明seo网站管理
  • 北京网站代理备案最有效的网络推广方式和策略
  • 国内美食网站欣赏如何进行搜索引擎营销
  • 东昌网站建设南京网站设计优化公司
  • 昆明网站建设天猫运营新手如何找cps推广渠道
  • 代运营公司排名前十石家庄百度seo
  • 定制网站大概多少钱四川seo
  • 怎么清理网站后门文件seo网络推广优化
  • jquery mobile 做的网站生意参谋指数在线转换
  • 网站显示百度地图优化教程网
  • 网站和主机有什么不同小时seo加盟
  • 游戏ui设计师网站有哪些网站seo优化