fix(storagelog): 解决物料导入验证和错误处理问题
This commit is contained in:
parent
518cb94c07
commit
d38aaf69d1
@ -52,8 +52,7 @@ public class XzdStorageLogController {
|
||||
@Operation(summary = "生产导入新中大")
|
||||
@PreAuthorize("@ss.hasPermission('heli:storage-log:update')")
|
||||
public CommonResult<Boolean> submitForm( @RequestBody List<StorageLogDO> list) {
|
||||
storageLogService.submitMatForm(list);
|
||||
return success(true);
|
||||
return storageLogService.submitMatForm(list);
|
||||
}
|
||||
|
||||
@PostMapping("/generateBill")
|
||||
|
||||
@ -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<StorageLogDO> list);
|
||||
|
||||
void submitMatForm(List<StorageLogDO> list);
|
||||
CommonResult<Boolean> submitMatForm(List<StorageLogDO> list);
|
||||
|
||||
Tuple2<Integer,List<StorageLogDO>> generateBill(List<StorageLogDO> list);
|
||||
}
|
||||
|
||||
@ -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<StorageLogDO> list) {
|
||||
public CommonResult<Boolean> submitMatForm(List<StorageLogDO> list) {
|
||||
// 只更新 matId ,其他字段不更新
|
||||
for (StorageLogDO logDO : list) {
|
||||
if (logDO.getId() != null && logDO.getMatId() != null) {
|
||||
LambdaUpdateWrapper<StorageLogDO> 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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user