volidation插件,service层手动开启校验,根据条件进行分组校验,校验模板

		
		    <properties>
		        <validator>6.0.16.Final</validator>
		    </properties>
            <dependency>
                <groupId>javax.validation</groupId>
                <artifactId>validation-api</artifactId>
            </dependency>
            <!-- hibernate validator-->
            <dependency>
                <groupId>org.hibernate.validator</groupId>
                <artifactId>hibernate-validator</artifactId>
                <version>${validator}</version>
            </dependency>
    /**
     * 批量导入工厂视图
     *
     * @param detailList
     * @return
     */
    @Override
    public String importData(List<TnMdMarcTemp> detailList,String identify) {
        if (StringUtils.isNull(detailList) || detailList.size() == 0) {
            throw new ServiceException("导入的数据不能为空;");
        }
        //校验内容的正确性
        String check = check(detailList);
        if(!StringUtils.isBlank(check)){
            return check;
        }

        StringBuffer failureMsg = new StringBuffer();
        for (int i = 0; i < detailList.size(); i++) {
            TnMdMarcTemp detail = detailList.get(i);
            if (StringUtils.isNull(detail.getWerks())){
                return  failureMsg.append("导入的数据错误;").toString();
            }
           
           // 根据条件开启字段校验,分组校验实现
            Set<ConstraintViolation<TnMdMarcTemp>> result;
            if((detail.getMtart().equals("Z006"))){  
            	// 如果物料类型是ZOO6,就走默认校验的部分字段,如果不是,就校验所有的字段
                result = Validation.buildDefaultValidatorFactory().getValidator().validate(detail);
            }
            else{       
               result = Validation.buildDefaultValidatorFactory().getValidator().validate(detail, TnMdMarcTemp.Finance.class);
            }

            if (!result.isEmpty()) {
                String message = result.stream().map(ConstraintViolation::getMessage).collect(Collectors.joining(",", "第" + (i + 1) + "行",";"));
                failureMsg.append(message);
            }
            detail.setIdentify(identify);
        }
        if (StringUtils.isBlank(failureMsg)){
            return  null;
        }
        return failureMsg.toString();
    }
            }
package com.tn.mdm.mdm.domain;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.tn.mdm.common.annotation.Excel;
import com.tn.mdm.common.core.domain.BaseEntity;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.groups.Default;

/**
 * 物料主数据工厂视图临时对象 tn_md_marc_temp
 *
 * @author yongda
 * @date 2022-10-26
 */
public class TnMdMarcTemp extends BaseEntity {
   public static final long serialVersionUID = 1L;
   public interface Finance extends Default {}

    /**
     * 自增编号
     */
    public Long id;

    /**
     * 任务关联外键
     */
    public String taskId;

    /**
     * 货架寿命到期日的期间标识
     */
    @Excel(name = "期间标识")
    @Length(max = 1,message = "期间标识长度不可超过1个字符")
    public String iprkz;
    
    /**
     * 标准价格
     */
    @Excel(name = "标准价")
    @Length(max = 11,message = "标准价长度不可超过11个字符")
    @Pattern(regexp = "^$|^[0-9]{1}\\d*(\\.[0-9]{0,3})?$",message = "标准价长度最多输入三位小数的数字且不为负数")
    public String stprs;

    /**
     * 评估类
     */
    @Excel(name = "评估类(必填)")
    @NotBlank(message ="评估类不能为空",groups = {Finance.class})
    public String bklas;



    /**
     * 物料相关的源
     */
    @Excel(name = "物料来源(必填)")
    @NotBlank(message = "物料相关的源不可为空",groups = {Finance.class})
    @Length(max = 1,message = "物料相关的源长度不可超过1个字符")
    public String hkmat;




	// ...
 	// getter and setter & toString
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋大米Pro

感谢小主大赏,留言可进互助群~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值