From 2b21366205c895a61897726fcd1aa432fdc477c8 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期三, 18 六月 2025 09:54:51 +0800 Subject: [PATCH] 生成波次优化 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/GenWaveParams.java | 20 ++++++++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java | 21 +++------- rsf-admin/src/page/orders/wave/WaveList.jsx | 36 +++++++++++++----- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OutStockService.java | 3 + rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OutStockController.java | 6 +- rsf-admin/src/page/orders/outStock/OutOrderList.jsx | 12 +++--- 6 files changed, 64 insertions(+), 34 deletions(-) diff --git a/rsf-admin/src/page/orders/outStock/OutOrderList.jsx b/rsf-admin/src/page/orders/outStock/OutOrderList.jsx index 1181459..bf9b7dc 100644 --- a/rsf-admin/src/page/orders/outStock/OutOrderList.jsx +++ b/rsf-admin/src/page/orders/outStock/OutOrderList.jsx @@ -134,12 +134,12 @@ console.log('=====>'); console.log(value); console.log(selectIds); - // const res = await request.post(`/outStock/generate/wave`, { ids: selectIds }); - // if (res?.data?.code === 200) { - // notify(res.data.msg); - // } else { - // notify(res.data.msg); - // } + const res = await request.post(`/outStock/generate/wave`, { ids: selectIds, waveRuleId: value.id }); + if (res?.data?.code === 200) { + notify(res.data.msg); + } else { + notify(res.data.msg); + } } return ( diff --git a/rsf-admin/src/page/orders/wave/WaveList.jsx b/rsf-admin/src/page/orders/wave/WaveList.jsx index a0fb5a4..3407d5c 100644 --- a/rsf-admin/src/page/orders/wave/WaveList.jsx +++ b/rsf-admin/src/page/orders/wave/WaveList.jsx @@ -8,34 +8,26 @@ SelectColumnsButton, EditButton, FilterButton, - CreateButton, - ExportButton, - BulkDeleteButton, WrapperField, useRecordContext, useTranslate, useNotify, useListContext, - FunctionField, TextField, NumberField, DateField, BooleanField, - ReferenceField, TextInput, - DateTimeInput, DateInput, SelectInput, NumberInput, - ReferenceInput, - ReferenceArrayInput, - AutocompleteInput, - DeleteButton, useRefresh, useRedirect, Button, } from 'react-admin'; import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; +import PlayArrowOutlinedIcon from '@mui/icons-material/PlayArrowOutlined'; +import PauseCircleOutlineIcon from '@mui/icons-material/PauseCircleOutline'; import { Box, Typography, Card, Stack } from '@mui/material'; import ConfirmButton from "../../components/ConfirmButton"; import PageDrawer from "../../components/PageDrawer"; @@ -118,6 +110,8 @@ sort={{ field: "create_time", order: "desc" }} actions={( <TopToolbar> + <BulkStartButton /> + <BulkPauseButton /> <FilterButton /> <SelectColumnsButton preferenceKey='wave' /> </TopToolbar> @@ -186,4 +180,26 @@ return ( record?.exceStatus == 0 ? <ConfirmButton label={"toolbar.createTask"} startIcon={<PublicIcon />} onConfirm={pubClick} size='small' /> : <></> ); +} + +const BulkStartButton = () => { + const { data, selectedIds, onUnselectItems } = useListContext(); + + const startClick = () => { + onUnselectItems() + } + return ( + <Button label="toolbar.start" onClick={startClick} startIcon={<PlayArrowOutlinedIcon />} /> + ) +} + +const BulkPauseButton = () => { + const { data, selectedIds, onUnselectItems } = useListContext(); + + const pauseClick = () => { + onUnselectItems() + } + return ( + <Button label="toolbar.pause" onClick={pauseClick} startIcon={<PauseCircleOutlineIcon />} /> + ) } \ No newline at end of file diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OutStockController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OutStockController.java index ba65995..8ff8e5d 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OutStockController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OutStockController.java @@ -9,6 +9,7 @@ import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.framework.exception.CoolException; +import com.vincent.rsf.server.manager.controller.params.GenWaveParams; import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam; import com.vincent.rsf.server.manager.controller.params.OutStockToTaskParams; import com.vincent.rsf.server.manager.entity.DeliveryItem; @@ -239,12 +240,11 @@ @PreAuthorize("hasAuthority('manager:outStock:update')") @ApiOperation("鍑哄簱鍗曠敓鎴愭尝娆�") @PostMapping("/outStock/generate/wave") - public R generateWave(@RequestBody Map<String, Object> params) { + public R generateWave(@RequestBody GenWaveParams params) { if (Objects.isNull(params)) { return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒"); } - List<Long> ids = (List<Long>) params.get("ids"); - return outStockService.generateWaves(ids); + return outStockService.generateWaves(params); } @PostMapping("/outStock/items/save") diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/GenWaveParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/GenWaveParams.java new file mode 100644 index 0000000..625051f --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/GenWaveParams.java @@ -0,0 +1,20 @@ +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.io.Serializable; +import java.util.List; + +@Data +@Accessors(chain = true) +@ApiModel(value = "GenWaveParams", description = "鐢熸垚娉㈡鍙傛暟") +public class GenWaveParams implements Serializable { + + @ApiModelProperty("鍑哄簱鍗旾D") + private List<Long> ids; + @ApiModelProperty("娉㈡绛栫暐ID") + private Long waveRuleId; +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OutStockService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OutStockService.java index fb3b2f8..5cfcc4c 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OutStockService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OutStockService.java @@ -3,6 +3,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.GenWaveParams; import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam; import com.vincent.rsf.server.manager.controller.params.OutStockToTaskParams; import com.vincent.rsf.server.manager.entity.AsnOrder; @@ -17,7 +18,7 @@ R genOutStock(List<DeliveryItem> ids, Long loginUserId); - R generateWaves(List<Long> ids); + R generateWaves(GenWaveParams ids); R saveOutStock(AsnOrderAndItemsParams params, Long loginUserId); 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 46d5648..0ed6f59 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 @@ -10,11 +10,8 @@ import com.vincent.rsf.server.common.constant.Constants; import com.vincent.rsf.server.manager.controller.dto.ExistDto; import com.vincent.rsf.server.manager.controller.dto.OrderOutItemDto; -import com.vincent.rsf.server.manager.controller.params.LocToTaskParams; -import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam; -import com.vincent.rsf.server.manager.controller.params.OutStockToTaskParams; +import com.vincent.rsf.server.manager.controller.params.*; import com.vincent.rsf.server.manager.enums.*; -import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams; import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.mapper.AsnOrderMapper; import com.vincent.rsf.server.manager.service.*; @@ -32,7 +29,6 @@ import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; -import java.util.stream.Stream; import com.vincent.rsf.server.manager.enums.WaveRuleType; @@ -275,11 +271,11 @@ */ @Override @Transactional(rollbackFor = Exception.class) - public R generateWaves(List<Long> ids) { - if (Objects.isNull(ids) || ids.isEmpty()) { + public R generateWaves(GenWaveParams params) { + if (Objects.isNull(params.getIds()) || params.getIds().isEmpty()) { throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒"); } - List<AsnOrder> orders = this.list(new LambdaQueryWrapper<AsnOrder>().in(AsnOrder::getId, ids)); + List<AsnOrder> orders = this.list(new LambdaQueryWrapper<AsnOrder>().in(AsnOrder::getId, params.getIds())); if (orders.isEmpty()) { throw new CoolException("褰撳墠鍗曟嵁鐘舵�佷笉鑳芥墽琛屾尝娆$敓鎴愭搷浣滐紒锛�"); } @@ -288,10 +284,10 @@ Double anfme = Math.round((sum - workQty) * 10000) / 10000.0; Wave wave = new Wave(); String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_WAVE_TYPE, null); - if (Objects.isNull(ruleCode) || StringUtils.isBlank(ruleCode)) { + if (StringUtils.isBlank(ruleCode)) { throw new CoolException("缂栫爜瑙勫垯閿欒锛氳瑕佹煡鐪嬨�孲YS_WAVE_TYPE銆嶆槸鍚﹁缃垚鍔燂紒锛�"); } - wave.setOrderNum(ids.size()) + wave.setOrderNum(params.getIds().size()) .setType(Short.parseShort("1")) .setCode(ruleCode) .setExceStatus(WaveExceStatus.WAVE_EXCE_STATUS_INIT.val) @@ -316,22 +312,19 @@ if (!waveService.saveOrUpdate(wave)) { throw new CoolException("涓诲崟淇敼澶辫触锛侊紒"); } - for (int i = 0; i < orderItems.size(); i++) { orderItems.get(i).setWorkQty(orderItems.get(i).getAnfme()); } - if (!asnOrderItemService.saveOrUpdateBatch(orderItems)) { throw new CoolException("鍑哄簱鍗曟墽琛屾暟閲忎慨鏀瑰け璐ワ紒锛�"); } - for (AsnOrder order : orders) { Double wkQty = Math.round((order.getWorkQty() + order.getAnfme()) * 10000) / 10000.0; if (!this.update(new LambdaUpdateWrapper<AsnOrder>() .set(AsnOrder::getWaveId, wave.getId()) .set(AsnOrder::getWorkQty, wkQty) .set(AsnOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_WAVE.val) - .in(AsnOrder::getId, ids))) { + .in(AsnOrder::getId, params.getIds()))) { throw new CoolException("鎵ц鐘舵�佷慨鏀逛慨鏀瑰け璐ワ紒锛�"); } } -- Gitblit v1.9.1