From 9831ab22d6b82696229849e9935ec15d24c79092 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期二, 03 二月 2026 17:51:59 +0800
Subject: [PATCH] bug1 barcode为空依旧查询报错提示出现报错,
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java | 22 ++++-
rsf-admin/src/page/orders/outStock/OutStockPublic.jsx | 159 +++++++++++++++++++++++++++++++++++----
2 files changed, 157 insertions(+), 24 deletions(-)
diff --git a/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx b/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx
index a69ef1a..c8628e2 100644
--- a/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx
+++ b/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx
@@ -73,6 +73,7 @@
const gridRef = useGridApiRef();
const [rows, setRows] = useState([]);
const [fetchRows, setFetchRows] = useState([]);
+ const [isLoading, setIsLoading] = useState(false);
const translate = useTranslate();
const [rowSelectedIds, setRowSelectedIds] = useState([]);
const [selectedMatnr, setSelectedMatnr] = useState([]);
@@ -82,29 +83,93 @@
const [selectedValue, setSelectedValue] = useState({});
useEffect(() => {
+ console.log('useEffect triggered - selectedMatnr:', selectedMatnr, 'fetchRows length:', fetchRows.length);
if (selectedMatnr.length < 1) {
+ console.log('娌℃湁閫変腑鐗╂枡锛屾樉绀烘墍鏈夋暟鎹�');
setRows(fetchRows)
} else {
- const mas = fetchRows.filter(item => selectedMatnr.includes(item.matnrCode));
+ console.log('杩囨护鏁版嵁锛岄�変腑鐨勭墿鏂欑紪鐮�:', selectedMatnr);
+ const mas = fetchRows.filter(item => {
+ const matnrCode = item.matnrCode || item.locItem?.matnrCode;
+ const included = selectedMatnr.includes(matnrCode);
+ console.log('鐗╂枡缂栫爜:', matnrCode, '鏄惁鍖呭惈:', included);
+ return included;
+ });
+ console.log('杩囨护鍚庣殑鏁版嵁:', mas);
setRows(mas)
}
- }, [selectedMatnr])
+ }, [selectedMatnr, fetchRows])
const ComfirmButton = () => {
const { selectedIds, data } = useListContext();
- const handleRowClick = () => {
- console.log(selectedIds);
+ const handleRowClick = async () => {
+ console.log('selectedIds:', selectedIds);
+ console.log('data:', data);
+ console.log('fetchRows:', fetchRows);
+ console.log('isLoading:', isLoading);
+
+ if (!selectedIds || selectedIds.length === 0) {
+ notify('璇峰厛閫夋嫨鐗╂枡');
+ return;
+ }
+
+ if (!data || data.length === 0) {
+ notify('鏁版嵁鍔犺浇涓紝璇风◢鍊�');
+ return;
+ }
const ids = data.filter(item => selectedIds.includes(item.id)).map(item => item.id);
setRowSelectedIds(ids);
const mas = data.filter(item => selectedIds.includes(item.id)).map(item => item.matnrCode);
+ console.log('selectedMatnr:', mas);
+
+ // 妫�鏌ラ�変腑鐨勭墿鏂欐槸鍚﹀凡鍏ㄩ儴鍑哄簱
+ const selectedItems = data.filter(item => selectedIds.includes(item.id));
+ const allCompleted = selectedItems.every(item => {
+ const remaining = (item.anfme || 0) - (item.workQty || 0);
+ return remaining <= 0;
+ });
+
+ if (allCompleted) {
+ notify('閫変腑鐨勭墿鏂欏凡鍏ㄩ儴鍑哄簱锛堝凡鍑烘暟閲� >= 璁″垝鍑哄簱鏁帮級锛屾病鏈夊彲鍑哄簱鐨勫簱瀛樻暟鎹�');
+ setSelectedMatnr(mas);
+ setRows([]);
+ return;
+ }
+
//璁剧疆搴撲綅淇℃伅绛涢�夋潯浠�
setSelectedMatnr(mas);
+
+ // 濡傛灉 fetchRows 杩樻病鏈夋暟鎹紝閲嶆柊鍔犺浇
+ if (!fetchRows || fetchRows.length === 0) {
+ console.log('fetchRows涓虹┖锛岄噸鏂板姞杞芥暟鎹�');
+ notify('姝e湪鍔犺浇搴撳瓨鏁版嵁...');
+ // 閲嶆柊鍔犺浇鏁版嵁锛実etWaveRule 浼氬湪鍔犺浇瀹屾垚鍚庤嚜鍔ㄥ鐞� selectedMatnr
+ await getWaveRule(formData);
+ } else {
+ // 濡傛灉 fetchRows 鏈夋暟鎹紝绔嬪嵆杩囨护鏄剧ず
+ const filteredRows = fetchRows.filter(item => {
+ const matnrCode = item.matnrCode || item.locItem?.matnrCode;
+ return mas.includes(matnrCode);
+ });
+ console.log('filteredRows:', filteredRows);
+ setRows(filteredRows);
+
+ // 濡傛灉杩囨护鍚庢病鏈夋暟鎹紝鎻愮ず鐢ㄦ埛
+ if (filteredRows.length === 0) {
+ notify('閫変腑鐨勭墿鏂欐病鏈夊彲鍑哄簱鐨勫簱瀛樻暟鎹紝鍙兘宸插叏閮ㄥ嚭搴撴垨搴撳瓨涓嶈冻');
+ }
+ }
}
return (
- <Button label="toolbar.confirm" size="medium" onClick={handleRowClick} />
+ <Button
+ label="toolbar.confirm"
+ size="medium"
+ onClick={handleRowClick}
+ disabled={isLoading}
+ />
)
};
@@ -135,27 +200,83 @@
};
useEffect(() => {
- getWaveRule()
- }, [open])
+ if (open && record?.id) {
+ // 閲嶇疆鐘舵�侊紝纭繚鏁版嵁鑳芥纭樉绀�
+ setSelectedMatnr([]);
+ setRows([]);
+ setFetchRows([]);
+ setIsLoading(false);
+ // 纭繚 formData 姝g‘鍒濆鍖�
+ const initialFormData = { orderId: record.id, waveId: DEFAULT_TYPE };
+ setFormData(initialFormData);
+ getWaveRule(initialFormData)
+ }
+ }, [open, record?.id])
- const getWaveRule = async () => {
- if (formData.waveId == null && formData.waveId == undefined) {
+ const getWaveRule = async (data = formData) => {
+ if (data.waveId == null || data.waveId == undefined) {
return
}
- const { data: { code, data, msg } } = await request.post('/outStock/order/getOutTaskItems', { ...formData });
- if (code === 200) {
- // setRows(data)
- setFetchRows(data)
- } else {
- notify(msg);
+ if (!data.orderId) {
+ return
+ }
+ setIsLoading(true);
+ try {
+ const { data: { code, data: responseData, msg } } = await request.post('/outStock/order/getOutTaskItems', { ...data });
+ if (code === 200) {
+ console.log('API杩斿洖鐨勬暟鎹�:', responseData);
+ // 澶勭悊杩斿洖鐨勬暟鎹紝纭繚鏁版嵁缁撴瀯姝g‘
+ const processedData = (responseData || []).map((item, index) => {
+ // 濡傛灉鏁版嵁鏈� locItem 宓屽缁撴瀯锛岄渶瑕佸睍寮�
+ if (item.locItem) {
+ return {
+ ...item.locItem,
+ id: item.locItem.id || `temp_${index}`,
+ siteNo: item.siteNo,
+ staNos: item.staNos || [],
+ sourceId: item.sourceId,
+ source: item.source
+ };
+ }
+ // 濡傛灉鏁版嵁宸茬粡鏄墎骞崇粨鏋勶紝鐩存帴杩斿洖
+ return {
+ ...item,
+ id: item.id || `temp_${index}`
+ };
+ });
+ console.log('澶勭悊鍚庣殑鏁版嵁:', processedData);
+ setFetchRows(processedData);
+
+ // 濡傛灉杩斿洖鐨勬暟鎹负绌猴紝涓旂敤鎴峰凡閫変腑鐗╂枡锛屾彁绀哄師鍥�
+ if (processedData.length === 0 && selectedMatnr.length > 0) {
+ notify('閫変腑鐨勭墿鏂欏凡鍏ㄩ儴鍑哄簱锛屾病鏈夊彲鍑哄簱鐨勫簱瀛樻暟鎹�');
+ } else if (processedData.length === 0) {
+ notify('褰撳墠鍑哄簱鍗曟病鏈夊彲鍑哄簱鐨勫簱瀛樻暟鎹紝鍙兘鎵�鏈夌墿鏂欏凡鍏ㄩ儴鍑哄簱');
+ }
+ // useEffect 浼氳嚜鍔ㄦ牴鎹� selectedMatnr 鍜� fetchRows 鏉ヨ繃婊ゆ暟鎹�
+ } else {
+ notify(msg);
+ }
+ } catch (error) {
+ console.error('鑾峰彇搴撳瓨鏁版嵁澶辫触:', error);
+ notify('鑾峰彇搴撳瓨鏁版嵁澶辫触锛岃閲嶈瘯');
+ } finally {
+ setIsLoading(false);
}
}
const handleChange = (value, name) => {
- setFormData((prevData) => ({
- ...prevData,
- [name]: value
- }));
+ setFormData((prevData) => {
+ const newData = {
+ ...prevData,
+ [name]: value
+ };
+ // 褰撶瓥鐣ユ敼鍙樻椂锛岄噸鏂拌幏鍙栨暟鎹�
+ if (name === 'waveId' && value && prevData.orderId) {
+ getWaveRule(newData);
+ }
+ return newData;
+ });
};
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
index 1852771..f1a7ffb 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
@@ -478,16 +478,28 @@
if (Objects.isNull(param) || StringUtils.isBlank(param.getLocCode())) {
continue;
}
- Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, param.getLocCode()).eq(Loc::getBarcode, param.getBarcode()));
+ // 淇锛氭瀯寤哄簱浣嶆煡璇㈡潯浠讹紝濡傛灉barcode涓虹┖锛屽彧鎸塴ocCode鏌ヨ
+ LambdaQueryWrapper<Loc> locQueryWrapper = new LambdaQueryWrapper<Loc>()
+ .eq(Loc::getCode, param.getLocCode());
+ if (StringUtils.isNotBlank(param.getBarcode())) {
+ locQueryWrapper.eq(Loc::getBarcode, param.getBarcode());
+ }
+ Loc loc = locService.getOne(locQueryWrapper);
if (!Objects.isNull(loc)) {
List<LocItem> locItems = new ArrayList<>();
LocItem locItem = locItemService.getById(param.getId());
- WkOrderItem orderItem = outStockItemService.getOne(new LambdaQueryWrapper<WkOrderItem>()
+ // 淇锛氭瀯寤烘煡璇㈡潯浠讹紝鍏堟瀯寤哄熀纭�鏉′欢锛屽啀鏍规嵁鍊兼槸鍚︿负绌哄姩鎬佹坊鍔�
+ LambdaQueryWrapper<WkOrderItem> orderItemWrapper = new LambdaQueryWrapper<WkOrderItem>()
.eq(WkOrderItem::getOrderId, outId)
- .eq(StringUtils.isNotBlank(locItem.getBatch()), WkOrderItem::getSplrBatch, locItem.getBatch())
- .eq(StringUtils.isNotBlank(locItem.getFieldsIndex()), WkOrderItem::getFieldsIndex, locItem.getFieldsIndex())
- .eq(WkOrderItem::getMatnrId, locItem.getMatnrId()));
+ .eq(WkOrderItem::getMatnrId, locItem.getMatnrId());
+ if (StringUtils.isNotBlank(locItem.getBatch())) {
+ orderItemWrapper.eq(WkOrderItem::getSplrBatch, locItem.getBatch());
+ }
+ if (StringUtils.isNotBlank(locItem.getFieldsIndex())) {
+ orderItemWrapper.eq(WkOrderItem::getFieldsIndex, locItem.getFieldsIndex());
+ }
+ WkOrderItem orderItem = outStockItemService.getOne(orderItemWrapper);
if (Objects.isNull(orderItem)) {
throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�");
--
Gitblit v1.9.1