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