.Net 基于MiniExcel的导入功能接口示例
/// <summary>/// 导入/// </summary>/// <param name="formFile"></param>/// <returns></returns>[HttpPost("Import")]public async Task<ExecResult> Import(IFormFile formFile){try{if (formFile == null) throw new Exception("请选择文件导入!");var fileExt = Path.GetExtension(formFile.FileName);if (fileExt != ".xlsx") throw new Exception("请导入后缀名为.xlsx的Excel文件!");using var stream = new MemoryStream();formFile.CopyTo(stream);var maintainItems = new List<TpmMaintainItem>();var allItems = await _dbcontext.TpmMaintainItems.ToListAsync();var equipments = await _dbcontext.Equipment.ToListAsync();int num = 1;StringBuilder sb = new StringBuilder();foreach (IDictionary<string, object> row in stream.Query(true)){var equipmentCode = row["设备编码"];var name = row["维保项名称"];var cycle = row["维保项周期(天)"];var content = row["维保项内容"];var isMustCheck = row["是否必检"];var advanceDays = row["提前天数"];if (equipmentCode == null) sb.AppendLine($"第{num}行设备编码不存在!");if (name == null) sb.AppendLine($"第{num}行维保项名称不能为空!");if (cycle == null) sb.AppendLine($"第{num}行维保项周期(天)不能为空!");if (content == null) sb.AppendLine($"第{num}行维保项内容不能为空!");if (isMustCheck == null){sb.AppendLine($"第{num}行是否必检不能为空!");}else if(!(isMustCheck.ToString() == "是" || isMustCheck.ToString() == "否")){sb.AppendLine($"第{num}行是否必检为非法字符,只能填写是或否!");}if (advanceDays == null) sb.AppendLine($"第{num}行提前天数不能为空!");var equipment = equipments.FirstOrDefault(s=>s.EquipmentCode == equipmentCode.ToString());if(equipment == null) sb.AppendLine($"第{num}行设备编码:{equipmentCode}不存在!");var maintainItem = new TpmMaintainItem(){EquipmentId = Convert.ToInt32(equipment?.EquipmentID),Name = name.ToString(),Cycle = Convert.ToInt32(cycle),Content = content.ToString(),IsMustCheck = string.Equals(isMustCheck.ToString(), "是") ? true : false,AdvanceDays = Convert.ToInt32(advanceDays),CreateTime = DateTime.Now};if (allItems.Any(s => s.Name == maintainItem.Name))sb.AppendLine($"第{num}行数据已存在!");if(maintainItems.Any(s => s.Name == maintainItem.Name))sb.AppendLine($"第{num}行数据重复!");maintainItems.Add(maintainItem);num++;}if(sb.Length > 0){throw new Exception(sb.ToString());}else{await _dbcontext.TpmMaintainItems.AddRangeAsync(maintainItems);await _dbcontext.SaveChangesAsync();}return new ExecResult(true, "");}catch (Exception ex){_logger.LogError(ex, "");return new ExecResult(false, "", ex.Message);}}
相关文章:
.Net 基于MiniExcel的导入功能接口示例
/// <summary>/// 导入/// </summary>/// <param name"formFile"></param>/// <returns></returns>[HttpPost("Import")]public async Task<ExecResult> Import(IFormFile formFile){try{if (formFile null) t…...
流量焦虑?别担心,Xinstall一站式App推广解决方案来了!
在移动互联网时代,App已经成为人们日常生活中不可或缺的一部分。然而,对于众多开发者来说,如何有效地推广自己的App,吸引更多的用户,却是一个不小的挑战。今天,我们将为大家介绍一款强大的App推广工具——X…...
降薪潮要开始了么?
互联网要全面迎来降薪潮了么,最近这个观念一直冲击着我 起因就是,前一段一位朋友降薪40%拿到了offer;还有一位金融机构的人力资源负责人朋友告诉我,最近来的很多互联网人都是降薪来的,普遍降30-50%不等 我就在想&…...
网络服务DHCP的安装
DHCP的安装 检查并且安装dhcp有关软件包 rpm -qc dhcp #检查是否存在dhcp yum install -y dhcp #进行yum安装查看系统的配置文件 切换到对应目录查看相关文件配置,发现是空目录。 将官方提供的example复制到原配置文件中 cp /usr/share/doc/dhcp-4.2.5/dhcpd.…...
SELinux:安全增强型Linux
SELinux:安全增强型Linux 作用: 可以保护linux系统的安全为用户分配最小的权限 状态: Enforcing:强制保护Permissive:宽松状态Disabled:禁用 为了安全性考虑,希望SELinux设置为Enforcing状态…...
.NET Redis限制接口请求频率 滑动窗口算法
在.NET中使用Redis来限制接口请求频率(每10秒只允许请求一次) NuGet setup StackExchange.Redis 实现速率限制逻辑: 在控制器或服务层中,编写Redis速率限制计数器。 设置Redis键: 为每个用户或每个IP地址设置一个唯一…...
Java List数据结构与常用方法
1.1 数据结构概述 Java的集合框架其实就是对数据结构的封装,在学习集合框架之前,有必要先了解下数据结构。 1.1.1 什么是数据结构 所谓数据结构,其实就是计算机存储、组织数据的方式。 数据结构是用来分析研究数据存储操作的,其实…...
Docker搭建redis-cluster集群
1. 前期准备 1.1 拉redis镜像 docker search redis docker pull redis1. 2 创建网卡 docker network create myredis --subnet 172.28.0.0/16#查看创建的网卡 docker network inspect myredisdocker network rm myredis #删除网卡命令 多个中间 空格隔开 docker network --h…...
实验室类管理平台LIMS系统的ui设计实例
实验室类管理平台LIMS系统的ui设计实例...
<PLC><西门子><工控>西门子博图V18中使用SCL语言编写一个CRC16-modbus校验程序
前言 本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。 PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。 除了PLC为主要内容外,PLC相关元器件如触摸屏(HMI)、交换机等工控产品,如…...
Linux - 文件管理高级 find、grep
0.管道 | 将前面命令的标准输出传递给管道作为后面的标准输入 1.文件查找 find find 进行文件查找时,默认进行递归查找,会查找隐藏目录下的文件 1.1 用法 # find 查找路径 查找条件... -type // 文件类型 f 普通文件 b 设备 d …...
DOS编程入门:探索基础、深入技巧与实战应用
DOS编程入门:探索基础、深入技巧与实战应用 DOS编程,作为计算机编程的基石之一,对于初学者来说,既是一种挑战,也是一次深入了解计算机底层运作的绝佳机会。本文将从四个方面、五个方面、六个方面和七个方面࿰…...
创建线程的技术难点
在软件开发中,创建线程并正确地管理它们是一个复杂而关键的任务,涉及的技术难点主要有: 线程同步:当多个线程需要访问共享资源时,必须确保它们以某种方式同步,以避免数据不一致或其他并发问题。例如&#…...
Android ViewPager和ViewPager2的区别
一、实现方式 ViewPager内部是通过继承ViewGroup来实现的,ViewPager2内部是通过RecyclerView来实现的(效率更高) 二、支持方向 ViewPager只能横向滑动,ViewPager2可以横向以及竖向滑动 三、采用的适配器 ViewPager有两个适配…...
Oracle数据库面试题-3
41. 请解释Oracle数据库中的内存顾问(Memory Advisor)的作用。 Oracle 数据库中的内存顾问(Memory Advisor) Oracle 数据库中的内存顾问是一个功能,它可以分析数据库的内存使用情况,并提供优化建议&#…...
21.过拟合和欠拟合示例
1. 背景介绍 在机器学习和深度学习中,过拟合和欠拟合是两个非常重要的概念。过拟合指的是模型在训练数据上表现很好,但在新的测试数据上效果变差的情况。欠拟合则是指模型无法很好地拟合训练数据的情况。这两种情况都会导致模型无法很好地泛化ÿ…...
使用import语句导入模块
自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 创建模块后,就可以在其他程序中使用该模块了。要使用模块需要先以模块的形式加载模块中的代码,这可以使用import语句实现。im…...
一台FreeBSD笔记本突然鼠标乱动=>pf防火墙设置@FreeBSD
缘起 一台FreeBSD的笔记本,突然鼠标乱动 思考了下,可能原因有三: 1 无线鼠标干扰 正巧没带鼠标,但是插着无线鼠标usb,不知道是不是别人的鼠标跟这个usb串台了。 2 触摸板机械故障 也许是天热触摸板开始有故障了&…...
身份证OCR识别功能介绍
身份证OCR识别功能是一种基于光学字符识别(OCR)技术的解决方案,专门用于从身份证图像中快速、准确地提取和识别信息。以下是关于身份证OCR识别功能的详细介绍: 功能概述 身份证OCR识别功能通过高分辨率的摄像头或扫描仪获取身份证…...
一文看懂:MES定义和功能是什么,以及在数字化工厂的应用
MES应该是继ERP之后制造企业信息化最热门的管理软件,它适应产品个性化与敏捷化制造需求,满足生产过程精益管理而产生和发展起来的信息系统。 作为企业实现数字化与智能化的核心支撑技术与重要组成部分,MES在帮助制造企业走向数字化、智能化等…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
