fix(storagelog): 解决物料导入验证和错误处理问题

This commit is contained in:
zxy 2026-04-02 15:21:43 +08:00
parent 518cb94c07
commit d38aaf69d1
5 changed files with 63 additions and 15 deletions

View File

@ -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")

View File

@ -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);
}

View File

@ -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);
}
/**

View File

@ -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)

View File

@ -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 || ''
}
// msgID
const msg = idStr.split(',')
// listID
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