From 2799c6690aff9c1577ba4dc290dc56a28767a769 Mon Sep 17 00:00:00 2001 From: DESKTOP-LMJ82IJ\Eno <creaycat@gmail.com> Date: 星期六, 19 四月 2025 15:03:43 +0800 Subject: [PATCH] #修改 1. 采购单界面优化及修改 --- rsf-admin/src/page/basicInfo/loc/BindModal.jsx | 35 ++++++----- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 23 ++++++- rsf-admin/src/page/waitPakin/WaitPakinItemList.jsx | 4 rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx | 2 rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java | 8 ++ rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java | 35 +++++++++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/GenerateTaskParams.java | 3 + rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 64 +++++++++++++++++++++ rsf-server/src/main/resources/application-dev.yml | 2 9 files changed, 153 insertions(+), 23 deletions(-) diff --git a/rsf-admin/src/page/basicInfo/loc/BindModal.jsx b/rsf-admin/src/page/basicInfo/loc/BindModal.jsx index 6eca745..38854f7 100644 --- a/rsf-admin/src/page/basicInfo/loc/BindModal.jsx +++ b/rsf-admin/src/page/basicInfo/loc/BindModal.jsx @@ -2,6 +2,7 @@ import { CreateBase, useTranslate, + SearchInput, TextInput, NumberInput, BooleanInput, @@ -55,7 +56,6 @@ import request from '@/utils/request'; import { Add, Edit, Delete } from '@mui/icons-material'; import _ from 'lodash'; -import { DataGrid } from '@mui/x-data-grid'; import StatusSelectInput from "../../components/StatusSelectInput"; import TreeSelectInput from "@/page/components/TreeSelectInput"; import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_ITEM_PAGE_SIZE } from '@/config/setting'; @@ -72,13 +72,14 @@ }, })); +const filters = [ + <SearchInput source="condition" alwaysOn /> +] + const MatnrModal = ({ open, setOpen }) => { const refresh = useRefresh(); const translate = useTranslate(); const notify = useNotify(); - const [options, setOptions] = useState({ - condition: null - }); const [formData, setFormData] = useState({ areaMatId: null, @@ -133,12 +134,12 @@ groupId: formData.groupId, matnrId: formData.matnrId, } - const res = await request.post(`/locAreaMatRela/matnr/bind`, parmas); - if (res?.data?.code === 200) { - handleClose() - } else { - notify(res.data.msg); - } + // const res = await request.post(`/locAreaMatRela/matnr/bind`, parmas); + // if (res?.data?.code === 200) { + // handleClose() + // } else { + // notify(res.data.msg); + // } } const [groupId, setGroupId] = useState(); @@ -146,15 +147,17 @@ setGroupId(e.target.value) } + + return ( - <Dialog open={open} maxWidth="xl" fullWidth> + <Dialog open={open} maxWidth="1" fullWidth> <Form onSubmit={handleSubmit}> <DialogCloseButton onClose={handleClose} /> <DialogTitle>{translate('toolbar.bindmatnr')}</DialogTitle> <DialogContent sx={{ mt: 2 }}> - <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, height: 700 }}> + <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, height: 900 }}> <Grid container spacing={2}> - <Grid item xs={4}> + <Grid item xs={3}> <ReferenceInput source="areaMatId" reference="locAreaMat" @@ -169,7 +172,7 @@ /> </ReferenceInput> </Grid> - <Grid item xs={4}> + <Grid item xs={3}> <TreeSelectInput label="table.field.locAreaMatRela.groupId" resource={'matnrGroup'} @@ -178,14 +181,14 @@ onChange={(e) => handleChange(e.target.value, 'groupId')} /> </Grid> - </Grid> <Grid item xs={4}> <List resource="matnr" filter={{ groupId: formData.groupId }} + queryOptions={{}} + // filters={filters} empty={false} - queryOptions={{options}} actions={<></>} > <StyledDatagrid diff --git a/rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx b/rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx index 5a7e5fe..04cfa63 100644 --- a/rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx +++ b/rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx @@ -131,7 +131,7 @@ > <StyledDatagrid preferenceKey='asnOrderItem' - bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} + bulkActionButtons={false} rowClick={(id, resource, record) => { setSelect(record) setEditDialog(true) diff --git a/rsf-admin/src/page/waitPakin/WaitPakinItemList.jsx b/rsf-admin/src/page/waitPakin/WaitPakinItemList.jsx index f9f48aa..e14d8a5 100644 --- a/rsf-admin/src/page/waitPakin/WaitPakinItemList.jsx +++ b/rsf-admin/src/page/waitPakin/WaitPakinItemList.jsx @@ -110,14 +110,14 @@ <FilterButton /> {/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */} <SelectColumnsButton preferenceKey='waitPakinItem' /> - <MyExportButton /> + {/* <MyExportButton /> */} </TopToolbar> )} perPage={DEFAULT_ITEM_PAGE_SIZE} > <StyledDatagrid preferenceKey='waitPakinItem' - bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} + bulkActionButtons={false} rowClick={(id, resource, record) => false} omit={['id', 'pakinId', 'createTime', 'createBy', 'memo']} > diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java index c0d588d..7471043 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java @@ -285,4 +285,39 @@ } return mobileService.defectProducts(trackCode); } + + @ApiOperation("鑾峰彇缁勬嫋鍏ュ簱淇℃伅") + @PostMapping("/pakin/info/{barcode}") + @PreAuthorize("hasAuthority('manager:waitPakin:list')") + public R getPakinInStock(@PathVariable String barcode) { + if (Objects.isNull(barcode)) { + return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + return mobileService.getPakinInStock(barcode); + } + + @ApiOperation("鑾峰彇涓婃灦绔欑偣淇℃伅") + @GetMapping("/inStock/sites") + @PreAuthorize("hasAuthority('manager:deviceSite:list')") + public R getTarSite() { + return mobileService.getDeviceSites(); + } + + @ApiOperation("鑾峰彇鎺ㄨ崘搴撲綅鍒楄〃淇℃伅") + @GetMapping("/locs/list") + @PreAuthorize("hasAuthority('manager:deviceSite:list')") + public R getLocs() { + return mobileService.getRecommondLocs(); + } + + @ApiOperation("鐢熸垚浠诲姟鍒楄〃") + @PostMapping("/pakin/task") + @PreAuthorize("hasAuthority('manager:deviceSite:list')") + public R pakinToTask(@RequestBody Map<String, Object> map) { + if (Objects.isNull(map)) { + return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + return mobileService.generateTask(map, getLoginUserId()); + } } + diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java index 932f558..8fcb6d3 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java @@ -63,4 +63,12 @@ R getItemByContainer(Map<String, Object> params); R defectProducts(String trackCode); + + R getPakinInStock(String barcode); + + R getDeviceSites(); + + R getRecommondLocs(); + + R generateTask(Map<String, Object> map, Long loginUserId); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java index 36b6564..c287493 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java @@ -17,6 +17,7 @@ import com.vincent.rsf.server.common.utils.CommonUtil; import com.vincent.rsf.server.common.utils.FieldsUtils; import com.vincent.rsf.server.common.utils.JwtUtil; +import com.vincent.rsf.server.manager.controller.params.GenerateTaskParams; import com.vincent.rsf.server.manager.controller.params.IsptItemsParams; import com.vincent.rsf.server.manager.controller.params.WaitPakinParam; import com.vincent.rsf.server.manager.entity.*; @@ -123,6 +124,8 @@ private LocAreaRelaMapper locAreaRelaMapper; @Autowired private LocAreaMapper locAreaMapper; + @Autowired + private DeviceSiteMapper deviceSiteMapper; /** * @author Ryan @@ -822,6 +825,67 @@ } /** + * @author Ryan + * @description 鑾峰彇鍏ュ簱缁勬嫋淇℃伅 + * @param barcode + * @return + */ + @Override + public R getPakinInStock(String barcode) { + WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, barcode)); + if (Objects.isNull(waitPakin)) { + throw new CoolException("缁勬嫋鍗曟嵁涓嶅瓨鍦紒锛�"); + } + List<WaitPakinItem> pakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>().eq(WaitPakinItem::getPakinId, waitPakin.getId())); + if (pakinItems.isEmpty()) { + return R.ok(new ArrayList<>()); + } + return R.ok(pakinItems); + } + + /** + * @author Ryan + * @description 鑾峰彇搴撳彛绔欑偣淇℃伅 + * @return + */ + @Override + public R getDeviceSites() { + return R.ok(deviceSiteMapper.selectList(new LambdaQueryWrapper<DeviceSite>().eq(DeviceSite::getStatus, 1).groupBy(DeviceSite::getSite))); + } + + /** + * @author Ryan + * @description 鑾峰彇鎺ㄨ崘搴撲綅 + * @return + */ + @Override + public R getRecommondLocs() { + return R.ok(locService.list(new LambdaQueryWrapper<Loc>().last("limit 10"))); + } + + /** + * @param map + * @param loginUserId + * @return + * @author Ryan + * @description 鐢熸垚浠诲姟鍒楄〃 + */ + @Override + public R generateTask(Map<String, Object> map, Long loginUserId) { + String barcode = map.get("barcode").toString(); + List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, barcode)); + if (waitPakins.isEmpty()) { + throw new CoolException("鍗曟嵁涓嶅瓨鍦� 锛侊紒"); + } + GenerateTaskParams taskParams = new GenerateTaskParams(); + taskParams.setWaitPakins(waitPakins) + .setSiteId(Long.parseLong(map.get("site").toString())) + .setLocCode(map.get("locCode").toString()); + return R.ok(taskService.generateTasks(taskParams, loginUserId)); + + } + + /** * 鑾峰彇ReceiptDetlsDtos */ private R getAsnOrderItem(List<AsnOrderItem> items) { diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/GenerateTaskParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/GenerateTaskParams.java index 3172a32..a2b5e26 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/GenerateTaskParams.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/GenerateTaskParams.java @@ -26,4 +26,7 @@ @ApiModelProperty("绔欑偣ID") public Long siteId; + + @ApiModelProperty("搴撲綅缂栫爜") + public String locCode; } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java index 5657acc..7b25c0c 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java @@ -104,8 +104,25 @@ .setBarcode(pakin.getBarcode()) .setTargSite(deviceSite.getDeviceCode()) .setCreateBy(loginUserId) - .setUpdateBy(loginUserId) - .setTargSite(LocManageUtil.getTargetSite()); + .setUpdateBy(loginUserId); + + if (!Objects.isNull(waitPakin.getSiteId()) && waitPakin.getSiteId() > 0) { + DeviceSite site = deviceSiteService.getById(waitPakin.getSiteId()); + task.setTargSite(site.getSite() + ""); + } else { + task.setTargSite(LocManageUtil.getTargetSite()); + } + if (!Objects.isNull(waitPakin.getLocCode()) && StringUtils.isNotBlank(waitPakin.getLocCode())) { + List<Loc> locs = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, waitPakin.getLocCode())); +// if (!locs.isEmpty()) { +// throw new CoolException("搴撲綅閿欒锛氱浉鍚屽簱浣嶅簲鍙竴鏉�") +// } + Loc loc = locs.stream().findFirst().get(); + task.setTargSite(loc.getCode()); + } else { + task.setTargSite(LocManageUtil.getTargetSite()); + } + if (!this.save(task)) { throw new CoolException("浠诲姟淇濆瓨澶辫触锛侊紒"); } @@ -123,7 +140,7 @@ BeanUtils.copyProperties(item, taskItem); AsnOrder order = asnOrderService.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getId, item.getAsnId())); if (Objects.isNull(order)) { - throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�"); + throw new CoolException("鏁版嵁閿欒: 鍗曟嵁涓嶅瓨鍦紒锛�"); } taskItem.setTaskId(task.getId()) .setOrderType(OrderType.ORDER_RECEIPT.type) diff --git a/rsf-server/src/main/resources/application-dev.yml b/rsf-server/src/main/resources/application-dev.yml index 68564a7..efd3d05 100644 --- a/rsf-server/src/main/resources/application-dev.yml +++ b/rsf-server/src/main/resources/application-dev.yml @@ -12,7 +12,7 @@ matching-strategy: ANT_PATH_MATCHER datasource: driver-class-name: com.mysql.jdbc.Driver -# url: jdbc:mysql://192.168.0.116:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai +# url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai username: root url: jdbc:mysql://127.0.0.1:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai # username: rsf -- Gitblit v1.9.1