From 00cf6c13531447af59a8d2121bbfb1a3a1f68c0d Mon Sep 17 00:00:00 2001
From: zhuguifei <zhuguifei@zhuguifeideiMac.local>
Date: 星期五, 06 六月 2025 09:15:29 +0800
Subject: [PATCH] Merge branch 'main' of http://lanpucloud.cn:1111/r/eims-master

---
 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/service/impl/EimsMaintPlanServiceImpl.java   |  318 ++++++++++++++++++++--------------
 eims/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application.yml                             |    2 
 eims-ui/apps/web-antd/src/views/eims/maint-plan/maint-plan-import-modal.vue                            |   20 +
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintPlanController.java      |   12 
 eims/ruoyi-admin/src/main/resources/application-prod.yml                                               |    2 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectPlanController.java    |   11 
 10 files changed, 295 insertions(+), 211 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-ui/apps/web-antd/src/views/eims/maint-plan/maint-plan-import-modal.vue b/eims-ui/apps/web-antd/src/views/eims/maint-plan/maint-plan-import-modal.vue
index 2943c30..36b348b 100644
--- a/eims-ui/apps/web-antd/src/views/eims/maint-plan/maint-plan-import-modal.vue
+++ b/eims-ui/apps/web-antd/src/views/eims/maint-plan/maint-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 maintPlanImportData(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 maintPlanImportData(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-admin/src/main/resources/application-prod.yml b/eims/ruoyi-admin/src/main/resources/application-prod.yml
index 866dd54..96528fe 100644
--- a/eims/ruoyi-admin/src/main/resources/application-prod.yml
+++ b/eims/ruoyi-admin/src/main/resources/application-prod.yml
@@ -193,7 +193,7 @@
   type:
     keycloak:
       # keycloak 鏈嶅姟鍣ㄥ湴鍧�
-      server-url: https://lanbaosystem.shlanbao.cn:8443
+      server-url: https://lanbaosystem.shlanbao.cn:8444
       realm: lanbao
       client-id: DataCapture
       client-secret: kplisa4lJHEIM6knqefVbxln85QbA5NX
diff --git a/eims/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application.yml b/eims/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application.yml
index ba6df45..b3a15b1 100644
--- a/eims/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application.yml
+++ b/eims/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application.yml
@@ -1,5 +1,5 @@
 server:
-  port: 8800
+  port: 8880
   servlet:
     context-path: /snail-job
 
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/controller/EimsMaintPlanController.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintPlanController.java
index c00d56b..0f8e778 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintPlanController.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintPlanController.java
@@ -120,13 +120,15 @@
     @Log(title = "淇濆吇璁″垝", businessType = BusinessType.IMPORT)
     @SaCheckPermission("eims:maintPlan:import")
     @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
-    public R<Void> importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception {
-        //ExcelResult<MaintCheckItemVo> result = ExcelUtil.importExcel(file.getInputStream(), MaintCheckItemVo.class, new MaintCheckItemImportListener(updateSupport));
+    public R<Void> importData(@RequestPart("files") List<MultipartFile> files, boolean updateSupport) throws Exception {
+        StringBuilder successMsg = new StringBuilder();
+        for (MultipartFile file : files) {
+            String res = eimsMaintPlanService.importData(file, updateSupport);
 
+            successMsg.append(res).append("; \r\n");
 
-        String res = eimsMaintPlanService.importData(file, updateSupport);
-
-        return R.ok(res);
+        }
+        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();
     }
 
 
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintPlanServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintPlanServiceImpl.java
index 4518514..85b0b39 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintPlanServiceImpl.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintPlanServiceImpl.java
@@ -204,153 +204,211 @@
     }
 
 
-    public String importData(MultipartFile is, boolean updateSupport) throws IOException {
-    int successNum = 0;
-    int failureNum = 0;
-    StringBuilder successMsg = new StringBuilder();
-    StringBuilder failureMsg = new StringBuilder();
+    public String importData(MultipartFile is, boolean updateSupport) {
+        try {
+            int successNum = 0;
+            int failureNum = 0;
 
+            // 淇濆吇椤圭洰鍒楄〃
+            MaintCheckItemImportListener checkItemImportListener = new MaintCheckItemImportListener(updateSupport);
+            EasyExcel.read(is.getInputStream(), MaintCheckItemVo.class, checkItemImportListener).headRowNumber(4).sheet().doRead();
+            List<MaintCheckItemVo> successList = checkItemImportListener.getSuccessList();
 
-        // 淇濆吇椤圭洰鍒楄〃
-        MaintCheckItemImportListener checkItemImportListener = new MaintCheckItemImportListener(updateSupport);
-        EasyExcel.read(is.getInputStream(), MaintCheckItemVo.class, checkItemImportListener).headRowNumber(4).sheet().doRead();
-        List<MaintCheckItemVo> successList = checkItemImportListener.getSuccessList();
+            // 璇诲彇鍥哄畾璧勪骇缂栧彿
+            EasyExcelCellListener readListener = new EasyExcelCellListener(3, 1);
+            EasyExcel.read(is.getInputStream(), readListener).headRowNumber(0).sheet().doReadSync();
+            String assetNo = Optional.ofNullable(readListener.getCellValue())
+                .map(value -> {
+                    int colonIndex = Math.max(value.indexOf(":"), value.indexOf("锛�")); // 鍚堝苟鍐掑彿澶勭悊
+                    return colonIndex != -1 ? value.substring(colonIndex + 1) : value;
+                })
+                .map(String::trim)
+                .orElse("");
 
-
-        // 璇诲彇鍥哄畾璧勪骇缂栧彿
-        EasyExcelCellListener readListener = new EasyExcelCellListener(3, 1);
-        EasyExcel.read(is.getInputStream(), readListener).headRowNumber(0).sheet().doReadSync();
-        String assetNo = Optional.ofNullable(readListener.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 readYearListener = new EasyExcelCellListener(2, 3);
-        EasyExcel.read(is.getInputStream(), readYearListener).headRowNumber(0).sheet().doReadSync();
-        String yearStr = readYearListener.getCellValue();
-        String year = yearStr.replaceAll("[^\\d]", ""); // 鍘婚櫎闈炴暟瀛楀瓧绗�
-        year = (year.length() == 4) ? year : DateUtils.getDate().substring(0,4);
-
-        QueryWrapper<EimsEqu> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("asset_no", assetNo);
-        EimsEquVo eimsEquVo = equMapper.selectVoOne(queryWrapper);
-        if (eimsEquVo == null) throw new ServiceException("瀵煎叆澶辫触锛岃澶囨湭鎵惧埌璇峰湪璁惧鍙板笎涓坊鍔�");
-
-        // 鏈堜唤瀛楁澶勭悊浼樺寲
-        String[] monthFields = {"january","february","march","april","may","june",
-                              "july","august","september","october","november","december"};
-
-        for (MaintCheckItemVo itemVo : successList) {
-            if ("鎵ц浜虹鍚�".equals(itemVo.getItemName())) break;
-
-            EimsMaintPlanBo maintPlanBo = new EimsMaintPlanBo();
-            maintPlanBo.setEquId(eimsEquVo.getEquId());
-            maintPlanBo.setMaintName(itemVo.getItemName());
-            maintPlanBo.setStatus("0");
-            maintPlanBo.setMaintType("1");
-            maintPlanBo.setMaintRule("0");
-            // 娣诲姞period鏍¢獙
-            String period = itemVo.getPeriod();
-            if (StringUtils.isBlank(period)) {
-                failureNum++;
-                failureMsg.append(failureNum).append("銆佸懆鏈熷瓧娈典负绌�<br>");
-                continue;
+            if (assetNo.isEmpty()) {
+                return is.getOriginalFilename() + " 瀵煎叆澶辫触锛屾棤娉曡鍙栧浐瀹氳祫浜х紪鍙�";
             }
 
-            try {
-                if (period.length() > 1) {
-                    maintPlanBo.setMaintCycle(Long.parseLong(period.substring(0, period.length() - 1)));
-                    String substring = period.substring(period.length() - 1);
-                    // 杞崲鍛ㄦ湡鍗曚綅锛孧杞崲涓�3锛孌杞崲涓�1锛孻杞崲涓�5锛學杞崲涓�2锛孮杞崲涓�4
-                    switch (substring) {
-                        case "M":
-                            substring = "3";
-                            break;
-                        case "D":
-                            substring = "1";
-                            break;
-                        case "Y":
-                            substring = "5";
-                            break;
-                        case "W":
-                            substring = "2";
-                            break;
-                        case "Q":
-                            substring = "4";
-                            break;
-                        default:
-                    }
-                    maintPlanBo.setMaintCycleUnit(substring);
-                } else {
-                    maintPlanBo.setMaintCycle(Long.parseLong(period));
-                    maintPlanBo.setMaintCycleUnit("");
-                }
-            } catch (NumberFormatException e) {
-                failureNum++;
-                failureMsg.append(failureNum).append("銆佹棤鏁堢殑鍛ㄦ湡鏍煎紡:").append(period).append("<br>");
-                continue;
+            // 璇诲彇淇濆吇璁″垝骞翠唤
+            EasyExcelCellListener readYearListener = new EasyExcelCellListener(2, 3);
+            EasyExcel.read(is.getInputStream(), readYearListener).headRowNumber(0).sheet().doReadSync();
+            String yearStr = readYearListener.getCellValue();
+            if (yearStr == null || yearStr.isEmpty()) {
+                yearStr = "";
+            }
+            String year = yearStr.replaceAll("[^\\d]", ""); // 鍘婚櫎闈炴暟瀛楀瓧绗�
+
+            year = (year.length() == 4) ? year : DateUtils.getDate().substring(0,4);
+
+            QueryWrapper<EimsEqu> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("asset_no", assetNo);
+            EimsEquVo eimsEquVo = equMapper.selectVoOne(queryWrapper);
+            if (eimsEquVo == null) {
+                return is.getOriginalFilename() + " 璁惧鏈壘鍒帮紝璇峰厛鍦ㄨ澶囧彴甯愪腑娣诲姞";
             }
 
-            // 鏈堜唤鍒ゆ柇浼樺寲
-            for (int i = 0; i < monthFields.length; i++) {
-                try {
-                    String monthValue = (String) MaintCheckItemVo.class
-                        .getMethod("get" + StringUtils.capitalize(monthFields[i]))
-                        .invoke(itemVo);
+            // 鏈堜唤瀛楁澶勭悊浼樺寲
+            String[] monthFields = {"january","february","march","april","may","june",
+                                  "july","august","september","october","november","december"};
 
-                    if (StringUtils.isNotBlank(monthValue)) {
-                        String month = String.format("%02d", i+1); // 淇濊瘉涓や綅鏈堜唤
-                        maintPlanBo.setMaintFirstTime(DateUtils.parseDate(year + "-" + month + "-01"));
-                        break;
-                    }
-                } catch (Exception e) {
-                    // 鍙嶅皠寮傚父澶勭悊
+            for (MaintCheckItemVo itemVo : successList) {
+                if ("鎵ц浜虹鍚�".equals(itemVo.getItemName())) break;
+
+                EimsMaintPlanBo maintPlanBo = new EimsMaintPlanBo();
+                maintPlanBo.setEquId(eimsEquVo.getEquId());
+                maintPlanBo.setMaintName(itemVo.getItemName());
+                maintPlanBo.setStatus("0");
+                maintPlanBo.setMaintType("1");
+                maintPlanBo.setMaintRule("0");
+
+                // 娣诲姞period鏍¢獙
+                String period = itemVo.getPeriod();
+                if (StringUtils.isBlank(period)) {
                     failureNum++;
-                    failureMsg.append(failureNum).append("銆佹湀浠藉瓧娈佃闂紓甯�<br>");
                     continue;
                 }
+                if (period.length() == 1) {
+                    period = "1"+period;
+                }
+
+                try {
+                    if (period.length() > 1) {
+                        String num = period.replaceAll("[^\\d]", "");
+                        if ("".equals(num)) {
+                            switch (period) {
+                                case "涓�涓湀":
+                                    maintPlanBo.setMaintCycle(1L);
+                                    maintPlanBo.setMaintCycleUnit("3");
+                                    break;
+                                case "涓や釜鏈�":
+                                    maintPlanBo.setMaintCycle(2L);
+                                    maintPlanBo.setMaintCycleUnit("3");
+                                    break;
+                                case "浜屼釜鏈�":
+                                    maintPlanBo.setMaintCycle(2L);
+                                    maintPlanBo.setMaintCycleUnit("3");
+                                    break;
+                                case "涓変釜鏈�":
+                                    maintPlanBo.setMaintCycle(3L);
+                                    maintPlanBo.setMaintCycleUnit("3");
+                                    break;
+                                case "鍏釜鏈�":
+                                    maintPlanBo.setMaintCycle(6L);
+                                    maintPlanBo.setMaintCycleUnit("3");
+                                    break;
+                                default:
+                                    break;
+                            }
+                        }else {
+
+                            maintPlanBo.setMaintCycle(Long.parseLong(num));
+                            String substring = period.replace(num, "");
+                            // 杞崲鍛ㄦ湡鍗曚綅锛孧杞崲涓�3锛孌杞崲涓�1锛孻杞崲涓�5锛學杞崲涓�2锛孮杞崲涓�4
+                            switch (substring) {
+                                case "M":
+                                    substring = "3";
+                                    break;
+                                case "D":
+                                    substring = "1";
+                                    break;
+                                case "Y":
+                                    substring = "5";
+                                    break;
+                                case "W":
+                                    substring = "2";
+                                    break;
+                                case "Q":
+                                    substring = "4";
+                                    break;
+                                case "涓湀":
+                                    substring = "3";
+                                    break;
+                                case "澶�":
+                                    substring = "1";
+                                    break;
+                                case "骞�":
+                                    substring = "5";
+                                    break;
+                                case "鍛�":
+                                    substring = "2";
+                                    break;
+                                case "瀛e害":
+                                    substring = "4";
+                                    break;
+                                default:
+                            }
+                            maintPlanBo.setMaintCycleUnit(substring);
+                        }
+                    } else {
+                        maintPlanBo.setMaintCycle(Long.parseLong(period));
+                        maintPlanBo.setMaintCycleUnit("");
+                    }
+                } catch (NumberFormatException e) {
+                    failureNum++;
+                    continue;
+                }
+
+                // 鏈堜唤鍒ゆ柇浼樺寲
+                boolean monthFound = false;
+                for (int i = 0; i < monthFields.length; i++) {
+                    try {
+                        String monthValue = (String) MaintCheckItemVo.class
+                            .getMethod("get" + StringUtils.capitalize(monthFields[i]))
+                            .invoke(itemVo);
+
+                        if (StringUtils.isNotBlank(monthValue)) {
+                            String month = String.format("%02d", i+1); // 淇濊瘉涓や綅鏈堜唤
+                            maintPlanBo.setMaintFirstTime(DateUtils.parseDate(year + "-" + month + "-01"));
+                            monthFound = true;
+                            break;
+                        }
+                    } catch (Exception e) {
+                        // 鍙嶅皠寮傚父澶勭悊锛岀户缁笅涓�涓湀浠�
+                        continue;
+                    }
+                }
+
+                if (!monthFound) {
+                    failureNum++;
+                    continue;
+                }
+
+                if (maintPlanBo.getMaintFirstTime() != null) {
+                    Date firstTime = maintPlanBo.getMaintFirstTime();
+                    Date nextTime = calcNextTime(firstTime, maintPlanBo.getMaintCycle().intValue(), 1);
+                    maintPlanBo.setMaintNextTime(nextTime);
+                }
+
+                // 濡傛灉鍏佽瑕嗙洊锛屽垯鍒犻櫎宸插瓨鍦ㄧ殑鐩稿悓鏉′欢璁板綍
+                if (updateSupport) {
+                    LambdaQueryWrapper<EimsMaintPlan> deleteWrapper = Wrappers.lambdaQuery();
+                    deleteWrapper.eq(EimsMaintPlan::getEquId, maintPlanBo.getEquId())
+                        .eq(EimsMaintPlan::getMaintName, maintPlanBo.getMaintName())
+                        .eq(EimsMaintPlan::getStatus, maintPlanBo.getStatus())
+                        .eq(EimsMaintPlan::getMaintCycle, maintPlanBo.getMaintCycle())
+                        .eq(EimsMaintPlan::getMaintCycleUnit, maintPlanBo.getMaintCycleUnit());
+                    baseMapper.delete(deleteWrapper);
+                }
+
+                if (!insertByBo(maintPlanBo)) {
+                    failureNum++;
+                } else {
+                    successNum++;
+                }
             }
 
-            if (maintPlanBo.getMaintFirstTime() != null) {
-                Date firstTime = maintPlanBo.getMaintFirstTime();
-                Date nextTime = calcNextTime(firstTime, maintPlanBo.getMaintCycle().intValue(), 1);
-                maintPlanBo.setMaintNextTime(nextTime);
-            }
-
-            // 濡傛灉鍏佽瑕嗙洊锛屽垯鍒犻櫎宸插瓨鍦ㄧ殑鐩稿悓鏉′欢璁板綍
-            if (updateSupport) {
-                LambdaQueryWrapper<EimsMaintPlan> deleteWrapper = Wrappers.lambdaQuery();
-                deleteWrapper.eq(EimsMaintPlan::getEquId, maintPlanBo.getEquId())
-                    .eq(EimsMaintPlan::getMaintName, maintPlanBo.getMaintName())
-                    .eq(EimsMaintPlan::getStatus, maintPlanBo.getStatus())
-                    .eq(EimsMaintPlan::getMaintCycle, maintPlanBo.getMaintCycle())
-                    .eq(EimsMaintPlan::getMaintCycleUnit, maintPlanBo.getMaintCycleUnit());
-                baseMapper.delete(deleteWrapper);
-            }
-
-            if (!insertByBo(maintPlanBo)) {
-                failureNum++;
-                failureMsg.append(failureNum).append("銆佽澶囷細").append(eimsEquVo.getEquName()).append("锛屽鍏ュけ璐�<br>");
+            // 濡傛灉澶辫触鏉′欢灏忎簬1鍒欎笉鎵撳嵃淇℃伅
+            if (failureNum <= 0) {
+                return "鎴愬姛锛�";
             } else {
-                successNum++;
-                successMsg.append("<br/>").append(successNum).append("銆佽澶囷細").append(eimsEquVo.getEquName()).append("锛屽鍏ユ垚鍔�");
+                return is.getOriginalFilename() + " 瀵煎叆鎴愬姛锛�" + successNum + "鏉★紝瀵煎叆澶辫触锛�" + failureNum + "鏉�";
             }
-        }
 
-    if (failureNum > 0) {
-        failureMsg.insert(0, "寰堟姳姝夛紝瀵煎叆澶辫触锛佸叡 " + failureNum + " 鏉℃暟鎹牸寮忎笉姝g‘锛岄敊璇涓嬶細");
-        return failureMsg.toString();
-    } else {
-        successMsg.insert(0, "鎭枩鎮紝鏁版嵁宸插叏閮ㄥ鍏ユ垚鍔燂紒鍏� " + successNum + " 鏉★紝鏁版嵁濡備笅锛�");
-        return successMsg.toString();
+        } catch (Exception e) {
+            return is.getOriginalFilename() + " 瀵煎叆寮傚父锛�" + e.getMessage();
+        }
     }
-}
+
 
 
 private Date calcNextTime(Date firstTime, int intervalMonths, int initialOffset) {

--
Gitblit v1.9.3