eims-ui/apps/web-antd/src/views/_core/authentication/login.vue
@@ -51,10 +51,10 @@ onMounted(async () => { // 启动单点登录注释掉下边这一行,否则放开 await Promise.all([loadCaptcha(), loadTenant()]); // await Promise.all([loadCaptcha(), loadTenant()]); // 启动单点登录放开下边两行注释,否则注释掉 // const href = await authBinding('keycloak', '000000'); // window.location.href = href; const href = await authBinding('keycloak', '000000'); window.location.href = href; }); const formSchema = computed((): VbenFormSchema[] => { eims-ui/apps/web-antd/src/views/eims/insp-plan/insp-plan-import-modal.vue
@@ -26,15 +26,21 @@ async function handleSubmit() { try { modalApi.modalLoading(true); if (fileList.value.length !== 1) { if (fileList.value.length === 0) { handleCancel(); return; } const data = { file: fileList.value[0]!.originFileObj as Blob, updateSupport: unref(checked), }; const { code, msg } = await inspPlanImportData(data); // 构建包含多个文件的请求数据,支持多文件上传 const formData = new FormData(); fileList.value.forEach((file) => { const blob = file.originFileObj as Blob; formData.append('files', blob); // 将多个文件以数组形式添加到表单数据中 }); formData.append('updateSupport', unref(checked).toString()); // 添加 updateSupport 参数 // 调用接口上传多文件 const { code, msg } = await inspPlanImportData(formData); let modal = Modal.success; if (code === 200) { emit('reload'); @@ -76,7 +82,7 @@ <UploadDragger v-model:file-list="fileList" :before-upload="() => false" :max-count="1" :multiple="true" :show-upload-list="true" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" > eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectPlanController.java
@@ -121,10 +121,13 @@ @Log(title = "点检计划", businessType = BusinessType.IMPORT) @SaCheckPermission("eims:inspectPlan:import") @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public R<Void> importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception { // ExcelResult<InspectCheckItemVo> result = ExcelUtil.importExcel(file.getInputStream(), InspectCheckItemVo.class, new InspectCheckItemImportListener(updateSupport)); public R<Void> importData(@RequestPart("files") List<MultipartFile> files, boolean updateSupport) throws Exception { StringBuilder successMsg = new StringBuilder(); for (MultipartFile file : files) { String res = eimsInspectPlanService.importData(file, updateSupport); return R.ok(res); successMsg.append(res).append(";"); } return R.ok(successMsg.toString()); } /** eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/InspectCheckItemVo.java
@@ -25,7 +25,7 @@ /** * 点检项名称 */ @ExcelProperty(value = "内容") @ExcelProperty(value = {"内容", "点检项目", "项目"}, index = 1) private String itemName; eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectPlanServiceImpl.java
@@ -208,10 +208,12 @@ } @Override public String importData(MultipartFile file, boolean updateSupport) throws IOException, IOException { public String importData(MultipartFile file, boolean updateSupport) { try { // 点检项目列表(假设存在对应的点检项VO) InspectCheckItemImportListener checkItemImportListener = new InspectCheckItemImportListener(updateSupport); EasyExcel.read(file.getInputStream(), InspectCheckItemVo.class, checkItemImportListener).headRowNumber(3).sheet().doRead(); EasyExcel.read(file.getInputStream(), InspectCheckItemVo.class, checkItemImportListener) .headRowNumber(3).sheet().doRead(); List<InspectCheckItemVo> successList = checkItemImportListener.getSuccessList(); // 读取固定资产编号(假设位置不同) @@ -223,21 +225,27 @@ return colonIndex != -1 ? value.substring(colonIndex + 1) : value; }) .map(String::trim) .orElseThrow(() -> new ServiceException("导入失败,无法读取固定资产编号")); .orElse(""); if (assetNo.isEmpty()) { return file.getOriginalFilename() + " 导入失败,无法读取固定资产编号"; } // 查询设备信息 QueryWrapper<EimsEqu> query = new QueryWrapper<>(); query.eq("asset_no", assetNo); EimsEquVo equVo = equMapper.selectVoOne(query); if (equVo == null) throw new ServiceException("设备未找到,请先在设备台帐中添加"); if (equVo == null) { return file.getOriginalFilename() + " 设备未找到,请先在设备台帐中添加"; } int successNum = 0; int failureNum = 0; StringBuilder successMsg = new StringBuilder(); StringBuilder failureMsg = new StringBuilder(); for (InspectCheckItemVo itemVo : successList) { if ("设备状态卡状态".equals(itemVo.getItemName())) break; if ("设备状态卡状态".equals(itemVo.getItemName()) || itemVo.getItemName().contains("运行时间")) { break; } // 如果允许覆盖,则删除已存在的记录 if (updateSupport) { @@ -258,14 +266,15 @@ if (!insertByBo(bo)) { failureNum++; failureMsg.append(failureNum).append("、导入失败<br>"); } else { successNum++; successMsg.append(successNum).append("、导入成功<br>"); } } return failureNum > 0 ? failureMsg.toString() : successMsg.toString(); return file.getOriginalFilename() + " 导入成功:" + successNum + "条,导入失败:" + failureNum + "条"; } catch (Exception e) { return file.getOriginalFilename() + " 导入异常:" + e.getMessage(); } }