1. 波次删除判断是否有子任务列表
2. 任务明细添加字段:执行数量,完成数量, 源单据号,源单据ID
8个文件已修改
54 ■■■■ 已修改文件
rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/outStock/OutOrderList.jsx 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/outStock/SelectMatnrModal.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/wave/ItemToTaskModal.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/wave/WaveList.jsx 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaveController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx
@@ -66,9 +66,7 @@
    const notify = useNotify();
    const refresh = useRefresh();
    const [disabled, setDisabled] = useState(false)
    const [createDialog, setCreateDialog] = useState(false);
    const tableRef = useRef();
    useEffect(() => {
rsf-admin/src/page/orders/outStock/OutOrderList.jsx
@@ -51,7 +51,7 @@
import DictionarySelect from "../../components/DictionarySelect";
import ImportButton from "../../components/ImportButton";
import DetailsIcon from '@mui/icons-material/Details';
import CancelIcon from '@mui/icons-material/Cancel';
import CancelOutlinedIcon from '@mui/icons-material/CancelOutlined';
import OutOrderCreate from "./OutOrderCreate";
import AddIcon from '@mui/icons-material/Add';
import OutOrderModal from "./OutOrderModal";
@@ -266,14 +266,12 @@
  return (
    <Button onClick={createByOrder} label={'toolbar.asnCreate'}> <AddIcon /> </Button>
  )
}
const CancelButton = () => {
  const record = useRecordContext();
  const notify = useNotify();
  const refresh = useRefresh();
  const cancelOrder = async () => {
    const { data: { code, data, msg } } = await request.get(`/outStock/cancel/${record?.id}`);
    if (code === 200) {
@@ -285,6 +283,6 @@
  }
  return (
    <ConfirmButton label={"toolbar.cancel"} startIcon={<CancelIcon />} onConfirm={cancelOrder} />
     record?.exceStatus == 0 ? <ConfirmButton label={"toolbar.cancel"} startIcon={<CancelOutlinedIcon />  } onConfirm={cancelOrder} /> : <></>
  )
}
rsf-admin/src/page/orders/outStock/SelectMatnrModal.jsx
@@ -133,7 +133,6 @@
                "orders": formData,
                "items": tabelData,
            }
            const res = await request.post(`/outStock/items/save`, parmas);
            if (res?.data?.code === 200) {
                setOpen(false);
rsf-admin/src/page/orders/wave/ItemToTaskModal.jsx
@@ -178,6 +178,7 @@
        } else {
            const res = await request.post(`/wave/public/task`, { wave: record?.record, waveItem: record?.dataSource });
            if (res?.data?.code === 200) {
                record.setOpen(false)
                notify(res.data.msg);
                redirect("/task")
            } else {
@@ -185,7 +186,6 @@
            }
            refresh();
        }
        record.setOpen(false)
    }
    return (<Button variant="contained" label={"ra.action.save"} onClick={generateTask}></Button>)
}
rsf-admin/src/page/orders/wave/WaveList.jsx
@@ -184,11 +184,12 @@
    const notify = useNotify();
    const refresh = useRefresh();
    const redirect = useRedirect();
    const pubClick = async (event) => {
        setSelectIds(record);
        setDetailDialog(true);
    }
    return (
        <ConfirmButton label={"toolbar.createTask"} startIcon={<PublicIcon />} onConfirm={pubClick} />
        record?.exceStatus == 0 ? <ConfirmButton label={"toolbar.createTask"} startIcon={<PublicIcon /> } onConfirm={pubClick} size='small' /> : <></>
    );
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaveController.java
@@ -12,8 +12,10 @@
import com.vincent.rsf.server.common.domain.BaseParam;
import com.vincent.rsf.server.common.domain.KeyValVo;
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.manager.entity.TaskItem;
import com.vincent.rsf.server.manager.entity.Wave;
import com.vincent.rsf.server.manager.entity.WaveItem;
import com.vincent.rsf.server.manager.service.TaskItemService;
import com.vincent.rsf.server.manager.service.WaveService;
import com.vincent.rsf.server.system.controller.BaseController;
import io.swagger.annotations.ApiOperation;
@@ -30,6 +32,8 @@
    @Autowired
    private WaveService waveService;
    @Autowired
    private TaskItemService taskItemService;
    @PreAuthorize("hasAuthority('manager:wave:list')")
    @PostMapping("/wave/page")
@@ -85,6 +89,13 @@
    @OperationLog("Delete 波次单据")
    @PostMapping("/wave/remove/{ids}")
    public R remove(@PathVariable Long[] ids) {
        if (Objects.isNull(ids)) {
            throw new CoolException("参数不能为空!!");
        }
        List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().in(TaskItem::getSourceId, ids));
        if (taskItems.isEmpty()) {
            throw new CoolException("有未完成任务,不可执行删除操作!!");
        }
        if (!waveService.removeByIds(Arrays.asList(ids))) {
            return R.error("Delete Fail");
        }
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java
@@ -1,6 +1,5 @@
package com.vincent.rsf.server.manager.entity;
import com.baomidou.mybatisplus.annotation.TableLogic;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -10,12 +9,9 @@
import com.vincent.rsf.server.system.service.DictDataService;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -25,7 +21,6 @@
import com.vincent.rsf.server.system.service.UserService;
import com.vincent.rsf.server.system.entity.User;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
@Data
@@ -60,6 +55,12 @@
    @ApiModelProperty("源编码")
    private Long source;
    @ApiModelProperty("源单号")
    private String sourceCode;
    @ApiModelProperty("源主单ID")
    private Long sourceId;
    @ApiModelProperty("单据ID")
    private Long orderId;
@@ -99,10 +100,16 @@
    private Double anfme;
    /**
     * 库存数量
     * 执行数量
     */
    @ApiModelProperty("库存数量")
    private Double stockQty;
    private Double workQty;
    /**
     * 完成数量
     */
    @ApiModelProperty("完成数量")
    private Double qty;
    /**
     * 库存批次
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java
@@ -154,6 +154,12 @@
            if (Objects.isNull(loc)) {
                throw new CoolException("库位不存在!!");
            }
            List<TaskItem> items = taskItemService.list(new LambdaQueryWrapper<TaskItem>().in(TaskItem::getSourceId, wave.getId()));
            if (items.isEmpty()) {
                throw new CoolException("波次任务已生成,不能重复生成!!");
            }
            task.setTaskCode(ruleCode)
                    .setTaskType(TaskType.TASK_TYPE_OUT.type)
                    .setTaskStatus(TaskStsType.GENERATE_OUT.id)
@@ -174,6 +180,8 @@
                taskItem.setTaskId(task.getId())
                        .setAnfme(waveItem.getAnfme())
                        .setId(null)
                        .setSourceCode(wave.getCode())
                        .setSourceId(wave.getId())
                        .setSource(item.getWaveItemId());
                taskItems.add(taskItem);
            }