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