skyouc
4 天以前 2b21366205c895a61897726fcd1aa432fdc477c8
生成波次优化
5个文件已修改
1个文件已添加
98 ■■■■■ 已修改文件
rsf-admin/src/page/orders/outStock/OutOrderList.jsx 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/wave/WaveList.jsx 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OutStockController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/GenWaveParams.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OutStockService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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 (
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 />}  />
    )
}
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")
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/GenWaveParams.java
New file
@@ -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("出库单ID")
    private List<Long> ids;
    @ApiModelProperty("波次策略ID")
    private Long waveRuleId;
}
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);
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("编码规则错误:请要查看「SYS_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("执行状态修改修改失败!!");
            }
        }