From d38aaf69d1e136cfce2738a66bbfdda3057c7623 Mon Sep 17 00:00:00 2001 From: zxy Date: Thu, 2 Apr 2026 15:21:43 +0800 Subject: [PATCH] =?UTF-8?q?fix(storagelog):=20=E8=A7=A3=E5=86=B3=E7=89=A9?= =?UTF-8?q?=E6=96=99=E5=AF=BC=E5=85=A5=E9=AA=8C=E8=AF=81=E5=92=8C=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E5=A4=84=E7=90=86=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../storagelog/XzdStorageLogController.java | 3 +- .../service/storagelog/StorageLogService.java | 3 +- .../storagelog/StorageLogServiceImpl.java | 21 +++++--- .../src/config/axios/service.ts | 3 ++ .../src/views/heli/xzdstoragelog/index.vue | 48 ++++++++++++++++--- 5 files changed, 63 insertions(+), 15 deletions(-) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/XzdStorageLogController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/XzdStorageLogController.java index 1aa27149..0ea27f7a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/XzdStorageLogController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/XzdStorageLogController.java @@ -52,8 +52,7 @@ public class XzdStorageLogController { @Operation(summary = "生产导入新中大") @PreAuthorize("@ss.hasPermission('heli:storage-log:update')") public CommonResult submitForm( @RequestBody List list) { - storageLogService.submitMatForm(list); - return success(true); + return storageLogService.submitMatForm(list); } @PostMapping("/generateBill") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogService.java index 0377b7c0..386d9c7f 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogService.java @@ -1,5 +1,6 @@ package com.chanko.yunxi.mes.module.heli.service.storagelog; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageLogPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageLogSaveReqVO; @@ -85,7 +86,7 @@ public interface StorageLogService { void submitForm(List list); - void submitMatForm(List list); + CommonResult submitMatForm(List list); Tuple2> generateBill(List list); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogServiceImpl.java index eaa78727..6ee08a06 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils; @@ -301,17 +302,25 @@ public class StorageLogServiceImpl implements StorageLogService { storageLogMapper.updateBatch(list); } + @Transactional @Override - public void submitMatForm(List list) { + public CommonResult submitMatForm(List list) { // 只更新 matId ,其他字段不更新 for (StorageLogDO logDO : list) { - if (logDO.getId() != null && logDO.getMatId() != null) { - LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.eq(StorageLogDO::getId, logDO.getId()); - wrapper.set(StorageLogDO::getMatId, logDO.getMatId()); - storageLogMapper.update(wrapper); + StorageLogDO storageLogDO = storageLogMapper.selectById(logDO.getId()); + if (storageLogDO == null) { + return CommonResult.error(10086, String.valueOf(logDO.getId())); } + if (storageLogDO.getIsExport() == 1) { + return CommonResult.error(10087, String.valueOf(logDO.getId())); + } + if (logDO.getMatId() == null) { + return CommonResult.error(10088, String.valueOf(logDO.getId())); + } + storageLogDO.setMatId(logDO.getMatId()); + storageLogMapper.updateById(storageLogDO); } + return CommonResult.success(true); } /** diff --git a/mes-ui/mes-ui-admin-vue3/src/config/axios/service.ts b/mes-ui/mes-ui-admin-vue3/src/config/axios/service.ts index b6bef4a8..a8de645b 100644 --- a/mes-ui/mes-ui-admin-vue3/src/config/axios/service.ts +++ b/mes-ui/mes-ui-admin-vue3/src/config/axios/service.ts @@ -171,6 +171,9 @@ service.interceptors.response.use( } else if (code === 10010 || code === 10011) { // 导出校验失败,不显示错误提示,直接返回完整数据 return Promise.reject(data) + }else if (code === 10086 || code === 10087 || code === 10088) { + // 批量导入校验失败,不显示错误提示,直接返回完整数据 + return Promise.reject(data) } else if (code === 11110 || code === 11111 || code === 11112 || code === 11113 || code === 11114 || code === 11115) { // 生成单据校验失败,不显示错误提示,直接返回完整数据 return Promise.reject(data) diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/xzdstoragelog/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/xzdstoragelog/index.vue index 43dc35cb..69fe9402 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/xzdstoragelog/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/xzdstoragelog/index.vue @@ -478,8 +478,44 @@ const submitForm = async () => { // 用户可以通过点击搜索按钮手动刷新 await getList() // 注释掉自动刷新 // emit('success') - } catch (error) { - console.error('获取失败:', error) + } catch (e: any) { + console.log(e) + // 获取错误码和错误信息中的 ID 列表 + let code = 0 + let idStr = '' + if (typeof e === 'string') { + idStr = e + } else if (e.code) { + code = e.code + idStr = e.msg || '' + } else if (e.response?.data) { + code = e.response.data.code + idStr = e.response.data.msg || '' + } + // 分割msg,获取ID数组 + const msg = idStr.split(',') + // 在list中找到对应ID的序号集合(当前页的行号) + const errorIndices = msg + .map((id) => { + const index = list.value.findIndex((row) => row.id === parseInt(id)) + if (index === -1) return 0 // 未找到返回0 + // 使用当前页的行号 + return index + 1 + }) + .filter((index) => index > 0) // 过滤掉未找到的 + // 转换为字符串用逗号分割,errorIndices从小到大排序 + errorIndices.sort((a, b) => a - b) + const errorIndicesStr = errorIndices.join(',') + if (code === 10086) { + message.error(`行 (${errorIndicesStr} )存在已删除的数据,请刷新界面!`) + } else if (code === 10087) { + message.error(`行 (${errorIndicesStr} )已生成入库单的记录,请刷新界面。`) + } else if (code === 10088) { + message.error(`行 (${errorIndicesStr} )没有选择物料编码,请确认!`) + } else { + message.error(`行 (${errorIndicesStr} )存在异常数据,请刷新界面。`) + } + // console.error('获取失败:', error) // message.error(`操作失败: ${error.message || "未知错误"}`); } finally { loading.value = false @@ -534,9 +570,9 @@ const getDefaultDateRange = () => { const handleMatIdChange = (val, row) => { if (val && queryParams.isSameMat) { // 当勾选了"相同物料"选项时,更新所有选中行的物料编码 - const selectedIds = multipleSelection.value.map(item => item.id) + const selectedIds = multipleSelection.value.map((item) => item.id) - list.value.forEach(item => { + list.value.forEach((item) => { if (selectedIds.includes(item.id)) { // 更新物料 ID item.matId = val @@ -545,7 +581,7 @@ const handleMatIdChange = (val, row) => { item.priceType = '1|临时暂估价' } // 同步更新物料编号和名称 - const selectedMat = item.materialDOList?.find(m => m.id === val) + const selectedMat = item.materialDOList?.find((m) => m.id === val) if (selectedMat) { item.matCode = selectedMat.code item.matName = selectedMat.name @@ -554,7 +590,7 @@ const handleMatIdChange = (val, row) => { }) } else if (val) { // 没有勾选"相同物料"时,只更新当前行 - const selectedMat = row.materialDOList?.find(m => m.id === val) + const selectedMat = row.materialDOList?.find((m) => m.id === val) if (selectedMat) { row.matCode = selectedMat.code row.matName = selectedMat.name