代码编织梦想

importData.java service校验方法

    /**
     * 批量导入校验
     *
     * @param detailList
     * @return
     */
    @Override
    public String importData(List<TnMdMaraTemp> detailList,String identify) {
        if (StringUtils.isNull(detailList) || detailList.size() == 0) {
            throw new SecurityException("导入的数据不能为空;");
        }

        List<String> notStandardDictData ;
        List<String> importDictData;
        List<String> standardDictData;
        StringBuffer failureMsg = new StringBuffer();
        //拿出导入记录的所有计量单位数据
        importDictData= detailList.stream().map(TnMdMaraTemp::getMeins).collect(Collectors.toList());
        notStandardDictData = checkNotStandDictData(importDictData,null,"tn_job_mara_base_unit");
        if(!CollectionUtils.isEmpty(notStandardDictData)){
            String message = notStandardDictData.stream().collect(Collectors.joining(",", "",";"));
            return failureMsg.append("存在非法计量单位值").append(message).toString();
        }

        //拿出导入记录的所有重量单位
        importDictData= detailList.stream().map(TnMdMaraTemp::getGewei).collect(Collectors.toList());
        notStandardDictData = checkNotStandDictData(importDictData,null,"tn_job_mara_weight_unit");
        if(!CollectionUtils.isEmpty(notStandardDictData)){
            String message = notStandardDictData.stream().collect(Collectors.joining(",", "",";"));
            return failureMsg.append("存在非法重量单位值").append(message).toString();
        }

        //拿出导入记录的所有塑壳类型
        importDictData= detailList.stream().map(TnMdMaraTemp::getZsklx).collect(Collectors.toList());
        notStandardDictData = checkNotStandDictData(importDictData,null,"tn_mara_param_mccb_type");
        if(!CollectionUtils.isEmpty(notStandardDictData)){
            String message = notStandardDictData.stream().collect(Collectors.joining(",", "",";"));
            return failureMsg.append("存在非法塑壳类型").append(message).toString();
        }
        // .....
        
		if (StringUtils.isBlank(failureMsg)){
            return  null;
        }
		return failureMsg.toString();

将不再 数据库中字典校验 方法提取出来

    private  List<String> checkNotStandDictData(List<String> checkList,List<String> standardList,String dictType){
        List<String> newList = checkList.stream().distinct().collect(Collectors.toList());
        List<String> result = newList.stream().filter(item -> (StringUtils.isNotEmpty(item) && item.length()>0)).collect(Collectors.toList());
        if(CollectionUtils.isEmpty(standardList) && StringUtils.isNotEmpty(dictType)){
            List<SysDictData> meinStandData = dictTypeService.selectDictDataByType(dictType);
            //计量单位标准值
            standardList = meinStandData.stream().map(SysDictData::getDictValue).collect(Collectors.toList());
            List<String> finalStandardList = standardList;
            return   result.stream().filter(item -> !finalStandardList.contains(item)).collect(Collectors.toList());
        }else {
            List<String> finalStandardList1 = standardList;
            return  result.stream().filter(item -> !finalStandardList1.contains(item)).collect(Collectors.toList());
        }
    }
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/MS_SONG/article/details/127992900

第一篇(从django后台解析excel数据批量导入数据库)_weixin_34414650的博客-爱代码爱编程

第一篇(从django后台解析excel数据批量导入数据库) 文章会在github中持续更新 作者: knthony github 联系我 1.django 如何从后台上传excel中批量解析数据 要从django后台导入的excel中批量解析数据,举一个例子,我们向后抬批量导入svn历史

python写数据库校验_MySQL非主从环境下数据一致性校验及修复程序-爱代码爱编程

1. 简介 项目地址:https://github.com/seanlook/p... 主从环境下数据一致性校验经常会用 pt-table-checksum 工具,它的原理及实施过程之前写过一篇文章:生产环境使用 pt-table-checksum 检查MySQL数据一致性。但是DBA工作中还会有些针对两个表检查是否一致,而这两个表之间并没有主从关

动态!!超详细完善的Excel动态导入Mysql,支持导入不同表,集成后只需配置就可以实现动态导入excel到数据库-爱代码爱编程

说明简介:当你项目中集成以下功能,我们便可以避免因为excel导入到数据库功能编写过多的代码。 我们只需按照要求少量的在数据库编写配置信息。实现接口便可以完成导入,无需再写导入相关代码。 1、复用性强,适用于多场景。 2、支持多sheet导入到多表 3、支持合并单元格读取 4、支持空单元格 5、支持单元格输入now()字符串导入数据库为当前时间Loc

主数据项目实施方法与核心步骤-爱代码爱编程

点击上方 "云祁QI"关注, “星标”一起成长 01 主数据定义与主数据项目 先说说数据的层次模型,根据数据的特征、作用以及管理需求的不同,将数据分为6个层次,即:元数据、引用数据、企业结构数据、业务结构数据、业务活动数据、业务审计数据。 元数据(系统中最基础的数据):元数据描述数据定义、数据约束、数据关系等,在物理模型中,元数据定义了表和

接口自动化测试,一键快速校验接口返回值全部字段-爱代码爱编程

目录 一、认识一下,DeepDiff 介绍 主要组成部分: 二、DeepDiff 使用 2.1 案例一:比较两个JSON 2.2 案例二:比较接口响应 2.3 案例三:正则搜索匹配 三、最后一个小技巧:DeepDiff 黑名单 四、小结 大家在日常开展自动化测试工作时,为了保证接口测试的有效性,少不了要对接口返回的响应字段进行校验

JAVA 之POI导入批量新增、批量检查、日志记录、失败原因、失败条数、数据库映射-爱代码爱编程

需求分析 Excel导入去做一些前置检查,包括非空检查和根据前面的字段生成对应的值、唯一索引等检查。 以及导入的数据失败的原因,成功的条数日志记录。 Excel的标题名和字段名数据库映射。 思路 数据映射 之前其实是有一个版本,是按照getCell(0) 列数来获取的,并没有做数据映射。这个有一个问题,就是模板一旦出现一点改动,随之而来的就是代码的

django框架——sweetalert前端插件、序列化组件、批量数据操作、分页器、forms组件(上)_山上有个车的博客-爱代码爱编程

系列文章目录 第一章 django安装与介绍 第二章 django基础使用 第三章 路由层 第四章 虚拟环境、django版本区别、视图层 第五章 模板层 第六章 模型层(上) 第七章 模型层(下) 第八章 ajax 第九章 sweetalert前端插件、序列化组件、批量数据操作、分页器、Forms组件(上) 文章目录 系列文章

批量插入数据,自定义分页器,forms组件,钩子函数,forms组件重要参数,modelform组件_jayxieming的博客-爱代码爱编程

目录标题 一:批量插入数据总结:如何批量插入数据补充知识点: 二:自定义分页器(要会使用)如何使用自定义分页器 三:forms组件1.forms组件具有的功能2.forms类的产生