From 74698ac2f0eae4c93327fe761e91421f8d89e4a1 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 24 七月 2025 10:31:24 +0800
Subject: [PATCH] 盘点功能优化
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java | 9 +
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckOrderController.java | 13 +--
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckOrderService.java | 7 -
rsf-admin/src/page/orders/check/CheckOrderPub.jsx | 4
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java | 10 +-
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/CheckLocQueryParams.java | 23 +++++
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java | 4 +
rsf-admin/src/i18n/zh.js | 4
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocItemService.java | 3
rsf-admin/src/page/orders/check/CheckPreviewTable.jsx | 125 ++++++++++++++++++++++++-------
rsf-server/src/main/resources/mapper/manager/LocItemMapper.xml | 4 +
rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/LocItemMapper.java | 2
12 files changed, 154 insertions(+), 54 deletions(-)
diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index 8aaa64e..f6f6b23 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -222,7 +222,9 @@
stockTransfer: {
orgLoc: '婧愬簱浣�',
tarLoc: '鐩爣搴撲綅',
- inputLoc: '杈撳叆搴撲綅'
+ inputLoc: '杈撳叆搴撲綅',
+ inputChannel: '杈撳叆宸烽亾'
+
},
outBound: {
stockWithdrawal: '鎻愬彇搴撳瓨',
diff --git a/rsf-admin/src/page/orders/check/CheckOrderPub.jsx b/rsf-admin/src/page/orders/check/CheckOrderPub.jsx
index 1947840..56f341a 100644
--- a/rsf-admin/src/page/orders/check/CheckOrderPub.jsx
+++ b/rsf-admin/src/page/orders/check/CheckOrderPub.jsx
@@ -67,7 +67,8 @@
const getLocs = async (ids) => {
- const { data: { code, data, msg } } = await request.post('/check/locs/' + ids);
+ let params = {matnrCode: ids}
+ const { data: { code, data, msg } } = await request.post('/check/locs/', params);
if (code === 200) {
setRows(data)
const matnrs = selectedMatnr.filter(item => data.some(bigData => bigData.matnrCode === item));
@@ -213,6 +214,7 @@
setRows={setRows}
record={record}
formData={formData}
+ selectedMatnr={selectedMatnr}
selectedIds={selectedIds}
setDialog={setDialog}
setSelectedIds={setSelectedIds}
diff --git a/rsf-admin/src/page/orders/check/CheckPreviewTable.jsx b/rsf-admin/src/page/orders/check/CheckPreviewTable.jsx
index 3fee942..81f4b93 100644
--- a/rsf-admin/src/page/orders/check/CheckPreviewTable.jsx
+++ b/rsf-admin/src/page/orders/check/CheckPreviewTable.jsx
@@ -1,6 +1,8 @@
-import { Box, Card, Grid, LinearProgress, Select, MenuItem, ListItemText } from "@mui/material";
+import { Box, Card, Grid, LinearProgress, Select, MenuItem, ListItemText, TextField } from "@mui/material";
import React, { useState, useRef, useEffect, useMemo } from "react";
+import QueryStatsIcon from '@mui/icons-material/QueryStats';
+import request from '@/utils/request';
import { DataGrid, useGridApiContext, GridActionsCellItem, useGridApiRef } from '@mui/x-data-grid';
import {
List,
@@ -19,7 +21,7 @@
} from 'react-admin';
const CheckPreviewTable = (props) => {
- const { rows, gridRef, setRows, record, selectedIds, setSelectedIds, setDialog, formData } = props;
+ const { rows, gridRef, setRows, record, selectedIds, setSelectedIds, selectedMatnr, setDialog, formData } = props;
// const translate = useTranslate();
// const refresh = useRefresh();
// const notify = useNotify();
@@ -113,25 +115,86 @@
});
const CustomToolBar = () => {
+ const [queryParams, setQueryParams] = useState({ locCode: null, channel: null, matnrCode: selectedMatnr });
+ const notify = useNotify();
+ const queryClick = async () => {
+ console.log(queryParams);
+ console.log(rows);
+ const { data: { code, data, msg } } = await request.post('/check/locs/', queryParams);
+ if (code === 200) {
+ setRows(data)
+ } else {
+ notify(msg);
+ }
+ }
+
+ const handleChange = (e) => {
+ const { name, value } = e.target;
+ setQueryParams(() => ({
+ ...queryParams,
+ [name]: value
+ }));
+
+ };
+
const selectSiteNo = () => {
setDialog(true)
}
return (
- <Box sx={{
- p: 1,
- display: 'flex',
- justifyContent: 'flex-end',
- borderTop: '1px solid rgba(224, 224, 224, 1)'
- }}>
- <Button
- onClick={selectSiteNo}
- variant="outlined"
- label="toolbar.modiftySite"
- size="medium"
- sx={{ mr: 1 }} />
- </Box>
+ <>
+ <Box sx={{
+ p: 1,
+ display: 'flex',
+ justifyContent: 'space-between',
+ borderTop: '1px solid rgba(224, 224, 224, 1)'
+ }}>
+ <Box sx={{
+ '& > :not(style)': { m: 1, width: '25ch' },
+ display: 'flex',
+ }}>
+ <TextField
+ label={translate("table.field.stockTransfer.inputLoc")}
+ size="small"
+ name="locCode"
+ value={queryParams?.locCode}
+ onChange={handleChange}
+ sx={{ mr: 1 }} />
+
+ <TextField
+ label={translate("table.field.stockTransfer.inputChannel")}
+ size="small"
+ name="channel"
+ value={queryParams?.channel}
+ onChange={handleChange}
+ sx={{ mr: 1 }} />
+
+ <Box sx={{
+ '& > :not(style)': { m: 1, width: '11ch' },
+ }}>
+ <Button variant="contained"
+ size="medium"
+ startIcon={<QueryStatsIcon />}
+ label="toolbar.query"
+ onClick={queryClick} />
+ </Box>
+ </Box>
+ <Box sx={{
+ '& > :not(style)': { m: 1, width: '13ch' },
+ }}>
+ <Button
+ onClick={selectSiteNo}
+ variant="outlined"
+ label="toolbar.modiftySite"
+ size="medium"
+ sx={{ mr: 1 }} />
+ </Box>
+ </Box>
+
+ </>
);
}
+
+
const OutStockSite = (params) => {
const { id, field, siteNo, row: { staNos } } = params;
@@ -184,20 +247,24 @@
}
return (
- <DataGrid
- storeKey={"locItemPreview"}
- rows={rows}
- columns={columns}
- slots={{ toolbar: CustomToolBar }}
- apiRef={gridRef}
- checkboxSelection
- disableRowSelectionOnClick
- hideFooterPagination={true} // 闅愯棌鍒嗛〉鎺т欢
- hideFooter={false}
- onRowSelectionModelChange={(ids) => {
- setSelectedIds(ids)
- }}
- />
+ <Box sx={{ maxHeight: 780 }}>
+ <DataGrid
+ sx={{ maxHeight: 730 }}
+ storeKey={"locItemPreview"}
+ rows={rows}
+ columns={columns}
+ slots={{ toolbar: CustomToolBar }}
+ apiRef={gridRef}
+ checkboxSelection
+ disableRowSelectionOnClick
+ hideFooterPagination={true} // 闅愯棌鍒嗛〉鎺т欢
+ hideFooter={false}
+ onRowSelectionModelChange={(ids) => {
+ setSelectedIds(ids)
+ }}
+ />
+ </Box>
+
)
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckOrderController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckOrderController.java
index 941cabb..0890885 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckOrderController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckOrderController.java
@@ -11,10 +11,7 @@
import com.vincent.rsf.server.common.domain.KeyValVo;
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.common.utils.ExcelUtil;
-import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams;
-import com.vincent.rsf.server.manager.controller.params.CheckOrderItemParams;
-import com.vincent.rsf.server.manager.controller.params.CheckOrderParams;
-import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam;
+import com.vincent.rsf.server.manager.controller.params.*;
import com.vincent.rsf.server.manager.entity.WkOrder;
import com.vincent.rsf.server.manager.entity.WkOrderItem;
import com.vincent.rsf.server.manager.entity.excel.CheckOrderTemplate;
@@ -215,13 +212,13 @@
@ApiOperation("鑾峰彇鍦ㄥ簱鐗╂枡鍒楄〃")
- @PostMapping("/check/locs/{matnrs}")
+ @PostMapping("/check/locs")
@PreAuthorize("hasAuthority('manager:check:list')")
- public R getAllLocByMatnr(@PathVariable String[] matnrs) {
- if (Objects.isNull(matnrs)) {
+ public R getAllLocByMatnr(@RequestBody CheckLocQueryParams params) {
+ if (Objects.isNull(params)) {
return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
- return checkOrderService.getAllLocByMatnr(Arrays.asList(matnrs));
+ return checkOrderService.getAllLocByMatnr(params);
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/CheckLocQueryParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/CheckLocQueryParams.java
new file mode 100644
index 0000000..b2a2ce5
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/CheckLocQueryParams.java
@@ -0,0 +1,23 @@
+package com.vincent.rsf.server.manager.controller.params;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+@Data
+@Accessors
+@ApiModel(value = "CheckLocQueryParams", description ="鐩樼偣鍗曠墿鏂欐煡璇㈠弬鏁�" )
+public class CheckLocQueryParams {
+
+ @ApiModelProperty("鐗╂枡缂栫爜")
+ private List<String> matnrCode;
+
+ @ApiModelProperty("宸烽亾")
+ private String channel;
+
+ @ApiModelProperty("搴撲滑缂栫爜")
+ private String locCode;
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java
index 15c1f36..b88a12b 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java
@@ -100,6 +100,10 @@
@TableField(exist = false)
private Double outQty;
+ @ApiModelProperty("宸烽亾")
+ @TableField(exist = false)
+ private Integer channel;
+
/**
* 鐗╂枡鍚嶇О
*/
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/LocItemMapper.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/LocItemMapper.java
index d48dbbd..574ebca 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/LocItemMapper.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/LocItemMapper.java
@@ -14,5 +14,5 @@
@Repository
public interface LocItemMapper extends BaseMapper<LocItem> {
- List<LocItem> listByMatnr(@Param("type") String type, @Param(Constants.WRAPPER) LambdaQueryWrapper<LocItem> matnr);
+ List<LocItem> listByMatnr(@Param("type") String type, @Param("channel") String channel, @Param(Constants.WRAPPER) LambdaQueryWrapper<LocItem> matnr);
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckOrderService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckOrderService.java
index bdba839..046c20f 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckOrderService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckOrderService.java
@@ -2,10 +2,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.vincent.rsf.framework.common.R;
-import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams;
-import com.vincent.rsf.server.manager.controller.params.CheckOrderItemParams;
-import com.vincent.rsf.server.manager.controller.params.CheckOrderParams;
-import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam;
+import com.vincent.rsf.server.manager.controller.params.*;
import com.vincent.rsf.server.manager.entity.WkOrder;
import org.springframework.web.multipart.MultipartFile;
@@ -26,7 +23,7 @@
R genCheckPreview(OrderOutTaskParam param);
- R getAllLocByMatnr(List<String> matnrs);
+ R getAllLocByMatnr(CheckLocQueryParams matnrs);
R genCheckOutTask(List<CheckOrderParams> checkParams, Long loginUserId);
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocItemService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocItemService.java
index dfed43a..544c3e2 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocItemService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocItemService.java
@@ -1,6 +1,7 @@
package com.vincent.rsf.server.manager.service;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.vincent.rsf.server.manager.controller.params.CheckLocQueryParams;
import com.vincent.rsf.server.manager.controller.params.LocToTaskParams;
import com.vincent.rsf.server.manager.entity.LocItem;
import com.vincent.rsf.server.manager.entity.Task;
@@ -13,5 +14,5 @@
Task genMoveTask(LocToTaskParams map, Long loginUserId);
- List<LocItem> listByMatnr(List<String> matnrs);
+ List<LocItem> listByMatnr(CheckLocQueryParams matnrs);
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java
index 61c2a65..6b434a1 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java
@@ -8,10 +8,7 @@
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.common.utils.ExcelUtil;
-import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams;
-import com.vincent.rsf.server.manager.controller.params.CheckOrderItemParams;
-import com.vincent.rsf.server.manager.controller.params.CheckOrderParams;
-import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam;
+import com.vincent.rsf.server.manager.controller.params.*;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.entity.excel.CheckOrderTemplate;
import com.vincent.rsf.server.manager.enums.*;
@@ -239,7 +236,10 @@
* @version 1.0
*/
@Override
- public R getAllLocByMatnr(List<String> matnrs) {
+ public R getAllLocByMatnr(CheckLocQueryParams matnrs) {
+ if (Objects.isNull(matnrs.getMatnrCode()) && matnrs.getMatnrCode().isEmpty()) {
+ throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
List<LocItem> locItems = locItemService.listByMatnr(matnrs);
if (!locItems.isEmpty()) {
List<Integer> list = Arrays.asList(TaskType.TASK_TYPE_CHECK_OUT.type, TaskType.TASK_TYPE_CHECK_IN.type);
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
index d31e992..58b8709 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
@@ -7,6 +7,7 @@
import com.vincent.rsf.server.api.service.WcsService;
import com.vincent.rsf.server.api.utils.LocUtils;
import com.vincent.rsf.server.common.constant.Constants;
+import com.vincent.rsf.server.manager.controller.params.CheckLocQueryParams;
import com.vincent.rsf.server.manager.controller.params.LocToTaskParams;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.enums.*;
@@ -371,9 +372,11 @@
* @version 1.0
*/
@Override
- public List<LocItem> listByMatnr(List<String> matnr) {
+ public List<LocItem> listByMatnr(CheckLocQueryParams matnr) {
LambdaQueryWrapper<LocItem> wrapper = new LambdaQueryWrapper<LocItem>()
- .in(!matnr.isEmpty(), LocItem::getMatnrCode, matnr);
- return this.baseMapper.listByMatnr(LocStsType.LOC_STS_TYPE_F.type, wrapper);
+ .eq(StringUtils.isNotBlank(matnr.getLocCode()), LocItem::getLocCode, matnr.getLocCode())
+// .eq(StringUtils.isNotBlank(matnr.getChannel()), LocItem::getChannel, matnr.getChannel())
+ .in(!matnr.getMatnrCode().isEmpty(), LocItem::getMatnrCode, matnr.getMatnrCode());
+ return this.baseMapper.listByMatnr(LocStsType.LOC_STS_TYPE_F.type, matnr.getChannel(), wrapper);
}
}
diff --git a/rsf-server/src/main/resources/mapper/manager/LocItemMapper.xml b/rsf-server/src/main/resources/mapper/manager/LocItemMapper.xml
index bc18949..316b06d 100644
--- a/rsf-server/src/main/resources/mapper/manager/LocItemMapper.xml
+++ b/rsf-server/src/main/resources/mapper/manager/LocItemMapper.xml
@@ -11,6 +11,7 @@
li.loc_id,
li.loc_code,
l.barcode,
+ l.channel,
li.matnr_id,
li.matnr_code,
li.maktx,
@@ -22,6 +23,9 @@
man_loc_item li
INNER JOIN man_loc l ON l.id = li.loc_id
WHERE l.use_status = #{type}
+ <if test="channel != null">
+ AND l.channel = #{channel}
+ </if>
GROUP BY
loc_id,
matnr_id,
--
Gitblit v1.9.1