From 21811bad262b3f774ca7c12a68e0bf64a8321501 Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期四, 29 五月 2025 10:08:15 +0800
Subject: [PATCH] feat(eims): 支持多文件导入点检计划
---
eims-ui/apps/web-antd/src/views/_core/authentication/login.vue | 6 +-
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/InspectCheckItemVo.java | 2
eims-ui/apps/web-antd/src/views/eims/insp-plan/insp-plan-import-modal.vue | 20 ++++--
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectPlanServiceImpl.java | 113 ++++++++++++++++++++-----------------
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectPlanController.java | 11 ++-
5 files changed, 85 insertions(+), 67 deletions(-)
diff --git a/eims-ui/apps/web-antd/src/views/_core/authentication/login.vue b/eims-ui/apps/web-antd/src/views/_core/authentication/login.vue
index 21bc24f..6ae0b70 100644
--- a/eims-ui/apps/web-antd/src/views/_core/authentication/login.vue
+++ b/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[] => {
diff --git a/eims-ui/apps/web-antd/src/views/eims/insp-plan/insp-plan-import-modal.vue b/eims-ui/apps/web-antd/src/views/eims/insp-plan/insp-plan-import-modal.vue
index 730db3c..9e995b0 100644
--- a/eims-ui/apps/web-antd/src/views/eims/insp-plan/insp-plan-import-modal.vue
+++ b/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"
>
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectPlanController.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectPlanController.java
index 2151c89..1fdf405 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectPlanController.java
+++ b/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));
- String res = eimsInspectPlanService.importData(file, updateSupport);
- return R.ok(res);
+ 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);
+ successMsg.append(res).append(";");
+ }
+ return R.ok(successMsg.toString());
}
/**
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/InspectCheckItemVo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/InspectCheckItemVo.java
index d636bc1..197c7fe 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/InspectCheckItemVo.java
+++ b/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;
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectPlanServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectPlanServiceImpl.java
index 6d23e51..ab7a0a9 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectPlanServiceImpl.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectPlanServiceImpl.java
@@ -208,64 +208,73 @@
}
@Override
- public String importData(MultipartFile file, boolean updateSupport) throws IOException, IOException {
- // 鐐规椤圭洰鍒楄〃锛堝亣璁惧瓨鍦ㄥ搴旂殑鐐规椤筕O锛�
- InspectCheckItemImportListener checkItemImportListener = new InspectCheckItemImportListener(updateSupport);
- EasyExcel.read(file.getInputStream(), InspectCheckItemVo.class, checkItemImportListener).headRowNumber(3).sheet().doRead();
- List<InspectCheckItemVo> successList = checkItemImportListener.getSuccessList();
+ public String importData(MultipartFile file, boolean updateSupport) {
+ try {
+ // 鐐规椤圭洰鍒楄〃锛堝亣璁惧瓨鍦ㄥ搴旂殑鐐规椤筕O锛�
+ InspectCheckItemImportListener checkItemImportListener = new InspectCheckItemImportListener(updateSupport);
+ EasyExcel.read(file.getInputStream(), InspectCheckItemVo.class, checkItemImportListener)
+ .headRowNumber(3).sheet().doRead();
+ List<InspectCheckItemVo> successList = checkItemImportListener.getSuccessList();
- // 璇诲彇鍥哄畾璧勪骇缂栧彿锛堝亣璁句綅缃笉鍚岋級
- EasyExcelCellListener assetNoListener = new EasyExcelCellListener(2, 23);
- EasyExcel.read(file.getInputStream(), assetNoListener).headRowNumber(0).sheet().doReadSync();
- String assetNo = Optional.ofNullable(assetNoListener.getCellValue())
- .map(value -> {
- int colonIndex = Math.max(value.indexOf(":"), value.indexOf("锛�")); // 鍚堝苟鍐掑彿澶勭悊
- return colonIndex != -1 ? value.substring(colonIndex + 1) : value;
- })
- .map(String::trim)
- .orElseThrow(() -> new ServiceException("瀵煎叆澶辫触锛屾棤娉曡鍙栧浐瀹氳祫浜х紪鍙�"));
+ // 璇诲彇鍥哄畾璧勪骇缂栧彿锛堝亣璁句綅缃笉鍚岋級
+ EasyExcelCellListener assetNoListener = new EasyExcelCellListener(2, 23);
+ EasyExcel.read(file.getInputStream(), assetNoListener).headRowNumber(0).sheet().doReadSync();
+ String assetNo = Optional.ofNullable(assetNoListener.getCellValue())
+ .map(value -> {
+ int colonIndex = Math.max(value.indexOf(":"), value.indexOf("锛�")); // 鍚堝苟鍐掑彿澶勭悊
+ return colonIndex != -1 ? value.substring(colonIndex + 1) : value;
+ })
+ .map(String::trim)
+ .orElse("");
- // 鏌ヨ璁惧淇℃伅
- QueryWrapper<EimsEqu> query = new QueryWrapper<>();
- query.eq("asset_no", assetNo);
- EimsEquVo equVo = equMapper.selectVoOne(query);
- if (equVo == null) throw new ServiceException("璁惧鏈壘鍒帮紝璇峰厛鍦ㄨ澶囧彴甯愪腑娣诲姞");
-
- int successNum = 0;
- int failureNum = 0;
- StringBuilder successMsg = new StringBuilder();
- StringBuilder failureMsg = new StringBuilder();
-
- for (InspectCheckItemVo itemVo : successList) {
- if ("璁惧鐘舵�佸崱鐘舵��".equals(itemVo.getItemName())) break;
-
- // 濡傛灉鍏佽瑕嗙洊锛屽垯鍒犻櫎宸插瓨鍦ㄧ殑璁板綍
- if (updateSupport) {
- LambdaQueryWrapper<EimsInspectPlan> deleteWrapper = Wrappers.lambdaQuery();
- deleteWrapper.eq(EimsInspectPlan::getEquId, equVo.getEquId())
- .eq(EimsInspectPlan::getInspName, itemVo.getItemName())
- .eq(EimsInspectPlan::getStatus, "0");
- baseMapper.delete(deleteWrapper);
+ if (assetNo.isEmpty()) {
+ return file.getOriginalFilename() + " 瀵煎叆澶辫触锛屾棤娉曡鍙栧浐瀹氳祫浜х紪鍙�";
}
- // 鏂板鐐规璁″垝
- EimsInspectPlanBo bo = new EimsInspectPlanBo();
- bo.setEquId(equVo.getEquId());
- bo.setInspName(itemVo.getItemName());
- bo.setStatus("0");
- bo.setInspType("1");
- bo.setInspRule("0");
-
- if (!insertByBo(bo)) {
- failureNum++;
- failureMsg.append(failureNum).append("銆佸鍏ュけ璐�<br>");
- } else {
- successNum++;
- successMsg.append(successNum).append("銆佸鍏ユ垚鍔�<br>");
+ // 鏌ヨ璁惧淇℃伅
+ QueryWrapper<EimsEqu> query = new QueryWrapper<>();
+ query.eq("asset_no", assetNo);
+ EimsEquVo equVo = equMapper.selectVoOne(query);
+ if (equVo == null) {
+ return file.getOriginalFilename() + " 璁惧鏈壘鍒帮紝璇峰厛鍦ㄨ澶囧彴甯愪腑娣诲姞";
}
+
+ int successNum = 0;
+ int failureNum = 0;
+
+ for (InspectCheckItemVo itemVo : successList) {
+ if ("璁惧鐘舵�佸崱鐘舵��".equals(itemVo.getItemName()) || itemVo.getItemName().contains("杩愯鏃堕棿")) {
+ break;
+ }
+
+ // 濡傛灉鍏佽瑕嗙洊锛屽垯鍒犻櫎宸插瓨鍦ㄧ殑璁板綍
+ if (updateSupport) {
+ LambdaQueryWrapper<EimsInspectPlan> deleteWrapper = Wrappers.lambdaQuery();
+ deleteWrapper.eq(EimsInspectPlan::getEquId, equVo.getEquId())
+ .eq(EimsInspectPlan::getInspName, itemVo.getItemName())
+ .eq(EimsInspectPlan::getStatus, "0");
+ baseMapper.delete(deleteWrapper);
+ }
+
+ // 鏂板鐐规璁″垝
+ EimsInspectPlanBo bo = new EimsInspectPlanBo();
+ bo.setEquId(equVo.getEquId());
+ bo.setInspName(itemVo.getItemName());
+ bo.setStatus("0");
+ bo.setInspType("1");
+ bo.setInspRule("0");
+
+ if (!insertByBo(bo)) {
+ failureNum++;
+ } else {
+ successNum++;
+ }
+ }
+
+ return file.getOriginalFilename() + " 瀵煎叆鎴愬姛锛�" + successNum + "鏉★紝瀵煎叆澶辫触锛�" + failureNum + "鏉�";
+ } catch (Exception e) {
+ return file.getOriginalFilename() + " 瀵煎叆寮傚父锛�" + e.getMessage();
}
-
- return failureNum > 0 ? failureMsg.toString() : successMsg.toString();
}
--
Gitblit v1.9.3