skyouc
2025-04-03 002f6582beb9100638387eeb14a42bc97c422763
添加任务置顶, 取消, 完成功能
3个文件已修改
79 ■■■■ 已修改文件
rsf-admin/src/page/asnOrder/AsnOrderList.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/task/TaskList.jsx 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/asnOrder/AsnOrderList.jsx
@@ -67,7 +67,6 @@
const filters = [
  <SearchInput source="condition" alwaysOn />,
  <TextInput source="code" label="table.field.asnOrder.code" />,
  <TextInput source="poCode" label="table.field.asnOrder.poCode" />,
  <NumberInput source="poId" label="table.field.asnOrder.poId" />,
rsf-admin/src/page/task/TaskList.jsx
@@ -1,5 +1,7 @@
import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
import { useNavigate } from 'react-router-dom';
import request from '@/utils/request';
import {
    List,
    DatagridConfigurable,
@@ -15,6 +17,7 @@
    useRecordContext,
    useTranslate,
    useNotify,
    useRefresh,
    useListContext,
    FunctionField,
    TextField,
@@ -111,9 +114,9 @@
                    marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
                }}
                title={"menu.task"}
                // empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
                empty={<EmptyData onClick={() => { }} />}
                filters={filters}
                sort={{ field: "create_time", order: "desc" }}
                sort={{ field: "sort", order: "desc" }}
                actions={(
                    <TopToolbar>
                        <FilterButton />
@@ -212,11 +215,22 @@
 */
const CancelButton = () => {
    const record = useRecordContext();
    const notify = useNotify();
    const refresh = useRefresh();
    const clickCancel = () => {
        cancleTask([record])
        cancleTask(record)
    };
    //取消任务
    const cancleTask = async (row) => {}
    const cancleTask = async (row) => {
        console.log(row);
        const { data: { code, data, msg } } = await request.post(`/task/remove/` + row.id);
        if (code === 200) {
            notify(msg);
            refresh();
        } else {
            notify(msg);
        }
    }
    return (
        <Button
            onClick={clickCancel}
@@ -231,11 +245,21 @@
 */
const SetTopButton = () => {
    const record = useRecordContext();
    const notify = useNotify();
    const refresh = useRefresh();
    const clickTop = () => {
        topTask([record])
        topTask(record)
    };
    //置顶任务
    const topTask = async (row) => { }
    const topTask = async (row) => {
        const { data: { code, data, msg } } = await request.post(`/task/top/` + row.id);
        if (code === 200) {
            notify(msg);
            refresh();
        } else {
            notify(msg);
        }
     }
    return (
        <Button
            onClick={clickTop}
@@ -255,7 +279,7 @@
        cancleTask([record])
    };
    //取消任务
    const cancleTask = async (row) => {}
    const cancleTask = async (row) => { }
    return (
        <Button
            onClick={clickCancel}
@@ -283,5 +307,4 @@
            <SwapVertIcon />
        </Button>
    )
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java
@@ -1,6 +1,7 @@
package com.vincent.rsf.server.manager.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.R;
@@ -128,16 +129,46 @@
        ExcelUtil.build(ExcelUtil.create(taskService.list(), Task.class), response);
    }
    @PreAuthorize("hasAuthority('manager:task:update')")
    @ApiOperation("完成任务")
    @GetMapping("/task/complete/{id}")
    @PostMapping("/task/complete/{id}")
    public R completeTask(@PathVariable String id) {
        if (Objects.isNull(id)) {
            throw new CoolException("参数不能为空!!");
        }
//        return taskService.completeTask(id);
        return null;
        List<Long> longs = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
        List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getId, id).in(Task::getTaskStatus, longs));
        if (tasks.isEmpty()) {
            throw new CoolException("任务已处执行状态不可一键完成!!");
        }
        try {
            taskService.completeTask(tasks);
        } catch (Exception ex) {
            return R.error("任务异常,无法完成!!");
        }
        return R.ok();
    }
    @PreAuthorize("hasAuthority('manager:task:update')")
    @ApiOperation("任务出库置顶")
    @PostMapping("/task/top/{id}")
    public R setTop(@PathVariable String id) {
        if (Objects.isNull(id)) {
            throw new CoolException("参数不能为空!!");
        }
        List<Long> longs = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
        List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getId, id).in(Task::getTaskStatus, longs));
        if (tasks.isEmpty()) {
            throw new CoolException("任务已处执行状态不可一键置顶!!");
        }
        try {
            if (!taskService.update(new LambdaUpdateWrapper<Task>().set(Task::getSort, 100).eq(Task::getId, id))) {
                throw new CoolException("置顶失败!!");
            }
        } catch (Exception ex) {
            return R.error("任务异常,无法完成!!");
        }
        return R.ok();
    }