若依excel工具類導出excel模板數據帶下拉映射

導出模板代碼,原理是combo屬性 傳遞一個數組 里面是label下拉數組。

    @Overridepublic void downloadTemplate(HttpServletResponse response) {ExcelUtil<ThMachineryManageExcel> util = new ExcelUtil<>(ThMachineryManageExcel.class);List<SysDistrictExcel> districtExcelCache = DistrictUtils.getDistrictExcelCache();String[] array = districtExcelCache.stream().map(SysDistrictExcel::getName).toArray(String[]::new);util.combo("districtCode", array);util.importTemplateExcel(response, "數據模板");}

導入代碼映射邏輯 util.readConverterExp 映射數據,數據結構是String類型多個逗號隔開:label=value

  @Overridepublic R<?> importData(MultipartFile file) throws IOException {ExcelUtil<ThMachineryManageExcel> util = new ExcelUtil<>(ThMachineryManageExcel.class);List<SysDistrictExcel> districtExcelCache = DistrictUtils.getDistrictExcelCache();Map<String, SysDistrictExcel> districtMap = districtExcelCache.stream().collect(Collectors.toMap(SysDistrictExcel::getCode, district -> district));String readConverterExp = districtExcelCache.stream().map(district -> district.getCode() + "=" + district.getName()).collect(Collectors.joining(","));// 映射數據label和value        util.readConverterExp("districtCode", readConverterExp);List<ThMachineryManageExcel> excelList = util.importExcel(file.getInputStream());if (ObjectUtil.isEmpty(excelList)){throw new ServiceException("導入數據不能為空!");}List<ThMachineryManage> saveOrUpdateList = new ArrayList<>();int successNum = 0;int updateNum = 0;int errorNum = 0;StringBuilder successMsg = new StringBuilder();for (ThMachineryManageExcel data : excelList){try {ThMachineryManage topic = BeanUtil.copyProperties(data, ThMachineryManage.class);//校驗基本數據BeanValidators.validateWithException(validator,topic);ThMachineryManage oneData = getOne(new LambdaQueryWrapper<ThMachineryManage>().eq(ThMachineryManage::getBrand, data.getBrand()));//校驗通過 開始檢測數據是否重復if (ObjectUtil.isNotNull(oneData)){//說明是更新數據topic.setId(oneData.getId());updateNum++;}else {successNum++;}SysDistrictExcel sysDistrictExcel = districtMap.get(data.getDistrictCode());//業務邏輯  存儲行政區更多的數據topic.setCountyCode(sysDistrictExcel.getCountyCode());topic.setTownCode(sysDistrictExcel.getTownCode());topic.setVillageCode(sysDistrictExcel.getVillageCode());topic.setDistrictLevel("2");topic.setDistrictName(sysDistrictExcel.getName());saveOrUpdateList.add(topic);}catch (Exception e){errorNum++;int count = excelList.indexOf(data);String message = e.getMessage();successMsg.append("第").append(count+1).append("條數據導入失敗,原因:").append(message).append(";");break;}}// 數據全部正確時 進行批量插入/更新if (!saveOrUpdateList.isEmpty()&&errorNum==0){super.saveOrUpdateBatch(saveOrUpdateList);if (successNum>0){successMsg.append("成功導入").append(successNum).append("條數據");}if (updateNum>0){successMsg.append("成功更新").append(updateNum).append("條數據");}return R.ok(successMsg.toString());}else {return R.fail(successMsg.toString());}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/73799.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/73799.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/73799.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

3.8 Spring Boot監控:Actuator+Prometheus+Grafana可視化

在Spring Boot應用中&#xff0c;通過整合Actuator、Prometheus和Grafana可以構建完整的監控體系&#xff0c;實現指標采集、存儲和可視化。以下是具體實現步驟&#xff1a; 一、Spring Boot Actuator 配置 作用&#xff1a;暴露應用健康指標、性能數據等監控端點。 1. 添加依…

啟幕數據結構算法雅航新章,穿梭C++夢幻領域的探索之旅——二叉樹序列構造探秘——堆的奧義與實現詩篇

人無完人&#xff0c;持之以恒&#xff0c;方能見真我&#xff01;&#xff01;&#xff01; 共同進步&#xff01;&#xff01; 文章目錄 一、堆的定義與結構二、堆的實現1.堆的初始化和銷毀堆的初始化堆的銷毀 2.向上調整算法和入堆向上調整算法入堆 3.向下調整算法和出堆頂數…

“Failed to Load SteamUI.dll” 錯誤詳解:全面解析與高效解決方案,助你快速修復 Steam 客戶端問題

在使用 Steam 客戶端時&#xff0c;你是否遇到過 failed to load steamui.dll 錯誤&#xff1f;這個令人頭疼的問題可能導致 Steam 無法正常啟動&#xff0c;影響游戲體驗。Failed to load steamui.dll 錯誤通常與文件損壞、系統配置或軟件沖突有關&#xff0c;但無需擔心&…

STM32 DAC詳解:從原理到實戰輸出正弦波

目錄 一、DAC基礎原理1.1 DAC的作用與特性1.2 DAC功能框圖解析 二、DAC配置步驟2.1 硬件配置2.2 初始化結構體詳解 三、DAC數據輸出與波形生成3.1 數據格式與電壓計算3.2 正弦波生成實戰3.2.1 生成正弦波數組3.2.2 配置DMA傳輸3.2.3 定時器觸發配置 四、常見問題與優化建議4.1 …

CNN 稠密任務經典結構

FCN UNet FPN FCNUNETFPNpadding無&#xff08;逐漸變小&#xff09; 有&#xff08;左右對稱&#xff09;上采樣 雙線性雙線性 最近鄰跳躍鏈接 相加 Cropcat 1x1卷積相加 三個網絡差不多&#xff0c;UNet名字最直觀&#xff0c;后續流傳…

AI學習第二天--監督學習 半監督學習 無監督學習

目錄 1. 監督學習&#xff08;Supervised Learning&#xff09; 比喻&#xff1a; 技術細節&#xff1a; 形象例子&#xff1a; 2. 無監督學習&#xff08;Unsupervised Learning&#xff09; 比喻&#xff1a; 技術細節&#xff1a; 形象例子&#xff1a; 3. 半監督學…

Elasticsearch:為推理端點配置分塊設置

推理端點對一次可處理的文本量有限&#xff0c;具體取決于模型的輸入容量。分塊&#xff08;Chunking&#xff09; 是指將輸入文本拆分成符合這些限制的小塊的過程&#xff0c;在將文檔攝取到 semantic_text 字段時會進行分塊。分塊不僅有助于保持輸入文本在可處理范圍內&#…

Unity打包Android平臺調用sherpa-onnx

https://github.com/xue-fei/sherpa-onnx-unity 最初測試了PC的Win和Linux平臺&#xff0c;直接從nuget緩存包中拷貝相關文件&#xff0c;按示例寫了語音轉文字和文字轉語音的測試代碼&#xff0c;功能都正常。 然后是Android端&#xff0c;看了示例發現有編譯好的jni.so之類的…

傳統會議室接入神旗視訊-2 Android會議室大屏設備 (Maxhub, Newline, TCL等)

隨著企業對視頻會議安全性、穩定性和統一管理的需求日益增長&#xff0c;私有化視頻會議系統憑借其全平臺兼容性、高安全性部署和智能化會控能力&#xff0c;成為政企客戶的核心選擇。Android會議室大屏設備&#xff08;Maxhub, Newline, TCL等&#xff09;作為國內主流智能會議…

個人blog系統 前后端分離 前端js后端go

系統設計&#xff1a; 1.使用語言&#xff1a;前端使用vue&#xff0c;并使用axios向后端發送數據。后端使用的是go的gin框架&#xff0c;并使用grom連接數據庫實現數據存儲讀取。 2.設計結構&#xff1a; 最終展示&#xff1a;僅展示添加模塊&#xff0c;其他模塊基本相似 前…

分支結構- P5717-三角形分類-第二十一天

洛谷題單 第二十一天&#xff1a;3.18&#xff08;周二&#xff09; 題目&#xff1a;分支結構–P5717 代碼 #include <stdio.h>//本題目卡住的點&#xff1a;1.邏輯問題 2.對if-else if-else結構的運行理解&#xff0c;導致了邏輯混亂//注意&#xff1a;程序會組個…

華為OD機試 - 最長回文字符串 - 貪心算法(Java 2024 E卷 100分)

題目描述 如果一個字符串正讀和反讀都一樣(大小寫敏感),則稱之為一個「回文串」。例如: level 是一個「回文串」,因為它的正讀和反讀都是 level。art 不是一個「回文串」,因為它的反讀 tra 與正讀不同。Level 不是一個「回文串」,因為它的反讀 leveL 與正讀不同(因大小…

C語言文件操作入門

本節重點 理解文件的形式與基本概念二進制文件與文本文件文件的打開與關閉文件讀寫函數、文件緩沖區 正文開始--------------------------------------------------------------------------------------------------------------------- 一、為什么使用文件 程序運行時數據存…

Doris:聯邦認證

LDAP? 接入第三方 LDAP 服務為 Doris 提供驗證登錄和組授權服務。 LDAP 驗證登錄? LDAP 驗證登錄指的是接入 LDAP 服務的密碼驗證來補充 Doris 的驗證登錄。Doris 優先使用 LDAP 驗證用戶密碼&#xff0c;如果 LDAP 服務中不存在該用戶則繼續使用 Doris 驗證密碼&#xff…

stm32第六天繼電器

一&#xff1a;繼電器 1.繼電器的工作原理 繼電器是一個電控開關&#xff0c;工作原理基于電磁感應&#xff0c;繼電器包括一個電磁線圈和一組觸點。常用于控制高電流或高電壓的電路&#xff0c;例如自動控制原理&#xff0c;電力系統和自動化設備中&#xff0c;由于可靠性和電…

Vue渲染函數 - render 函數

文章目錄 Vue渲染函數 - render 函數1. 什么是 render 函數2、頁面展示過程3、render 函數的參數4. 如何使用&#xff08;1&#xff09;基本渲染&#xff08;2&#xff09;傳遞屬性和事件&#xff08;3&#xff09;條件渲染 5. render 函數的實際使用6.View Design 組件中的使用…

單片機自學總結

自從工作以來&#xff0c;一直努力耕耘單片機&#xff0c;至今&#xff0c;頗有收獲。從51單片機&#xff0c;PIC單片機&#xff0c;直到STM32&#xff0c;以及RTOS和Linux&#xff0c;幾乎天天在搞:51單片機&#xff0c;STM8S207單片機&#xff0c;PY32F003單片機&#xff0c;…

go回調函數的使用

在Go語言中&#xff0c;回調函數可以有參數&#xff0c;也可以沒有參數。它們的定義和使用方式略有不同&#xff0c;但本質上都是將函數作為參數傳遞給另一個函數&#xff0c;并在適當的時候調用它。以下是帶參數和不帶參數的回調函數的示例和說明。 1. 不帶參數的回調函數 不…

在 Ubuntu 中配置 NFS 共享服務的完整指南

前言 網絡文件系統&#xff08;NFS&#xff09;作為 Linux 系統間實現文件共享的標準協議&#xff0c;在分布式計算和容器化部署場景中具有重要作用。本文將詳細演示如何在 Ubuntu 系統上配置 NFS 服務端與客戶端&#xff0c;并實現可靠的持久化掛載。 一、環境準備 系統要求…