zhou zhou
13 小时以前 add24e7553a20b46a5ff660e5b02c9603f23e067
#路径流程页
4个文件已修改
1个文件已添加
186 ■■■■ 已修改文件
rsf-admin/src/page/components/TaskPathTemplateMergeSelect.jsx 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/taskPathTemplateMerge/TaskPathTemplateMergeCreate.jsx 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/controller/TaskPathTemplateMergeController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/service/TaskPathTemplateMergeService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/TaskPathTemplateMergeServiceImpl.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/components/TaskPathTemplateMergeSelect.jsx
New file
@@ -0,0 +1,76 @@
import { useState, useEffect } from 'react';
import {
    useTranslate, useNotify, required
} from 'react-admin';
import { useController } from 'react-hook-form';
import request from '@/utils/request';
import { Select, MenuItem, FormControl, InputLabel } from '@mui/material';
const TaskPathTemplateMergeSelect = (props) => {
    const { dictTypeCode, label, name, validate, ...params } = props;
    const translate = useTranslate();
    const notify = useNotify();
    const [list, setList] = useState([]);
    // 使用 useController 与 react-hook-form 集成
    const { field, fieldState } = useController({
        name: name,
        rules: validate ? {
            validate: (value) => {
                for (const rule of validate) {
                    const result = rule(value);
                    if (result) return result;
                }
                return true;
            }
        } : undefined
    });
    useEffect(() => {
        http();
    }, [dictTypeCode]);
    const http = async () => {
        const res = await request.post('/taskPathTemplateMerge/createSelectList');
        if (res?.data?.code === 200) {
            setList(res.data.data.map((item) => {
                return {
                    id: item.id,
                    name: item.name
                };
            }));
        } else {
            notify(res.data.msg);
        }
    };
    const handleChange = (event) => {
        const selectedValue = event.target.value;
        field.onChange(selectedValue);
    };
    const validValue = list.some(item => item.id === field.value) ? field.value : '';
    return (
        <FormControl required fullWidth error={!!fieldState.error}>
            <InputLabel id={`${name}-label`}>{label}</InputLabel>
            <Select
                labelId={`${name}-label`}
                value={validValue}
                variant="filled"
                onChange={handleChange}
                size='small'
            >
                {list.map((item) => (
                    <MenuItem
                        key={item.id}
                        value={item.id}>
                        {item.name}
                    </MenuItem>
                ))}
            </Select>
        </FormControl>
    );
};
export default TaskPathTemplateMergeSelect;
rsf-admin/src/page/taskPathTemplateMerge/TaskPathTemplateMergeCreate.jsx
@@ -17,6 +17,7 @@
    useNotify,
    Form,
    useCreateController,
    SelectArrayInput,
} from 'react-admin';
import {
    Dialog,
@@ -30,6 +31,7 @@
import DialogCloseButton from "../components/DialogCloseButton";
import StatusSelectInput from "../components/StatusSelectInput";
import MemoInput from "../components/MemoInput";
import TaskPathTemplateMergeSelect from "../components/TaskPathTemplateMergeSelect";
const TaskPathTemplateMergeCreate = (props) => {
    const { open, setOpen } = props;
@@ -84,7 +86,7 @@
                        </DialogTitle>
                        <DialogContent sx={{ mt: 2 }}>
                            <Grid container rowSpacing={2} columnSpacing={2}>
                                <Grid item xs={6} display="flex" gap={1}>
                                {/* <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.taskPathTemplateMerge.templateCode"
                                        source="templateCode"
@@ -100,39 +102,48 @@
                                        parse={v => v}
                                        validate={required()}
                                    />
                                </Grid>
                                </Grid> */}
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.taskPathTemplateMerge.sourceType"
                                        source="sourceType"
                                        parse={v => v}
                                        validate={required()}
                                    <TaskPathTemplateMergeSelect
                                        label={translate("table.field.taskPathTemplateMerge.sourceType")}
                                        name="sourceType"
                                        validate={[required()]}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.taskPathTemplateMerge.targetType"
                                        source="targetType"
                                        parse={v => v}
                                        validate={required()}
                                    <TaskPathTemplateMergeSelect
                                        label={translate("table.field.taskPathTemplateMerge.targetType")}
                                        name="targetType"
                                        validate={[required()]}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.taskPathTemplateMerge.conditionExpression"
                                        source="conditionExpression"
                                        parse={v => v}
                                        validate={required()}
                                    />
                                    <ReferenceArrayInput source="conditionExpression" reference="taskPathTemplate">
                                        <SelectArrayInput
                                            label="table.field.taskPathTemplateMerge.conditionExpression"
                                            optionText="templateName"
                                            optionValue="id"
                                            fullWidth
                                            validate={(value) => {
                                                if (value && value.length > 1) {
                                                    return '只能选择一个模板';
                                                }
                                                return undefined;
                                            }}
                                        />
                                    </ReferenceArrayInput>
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                {/* <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.taskPathTemplateMerge.conditionDesc"
                                        source="conditionDesc"
                                        parse={v => v}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                </Grid> */}
                                {/* <Grid item xs={6} display="flex" gap={1}>
                                    <NumberInput
                                        label="table.field.taskPathTemplateMerge.version"
                                        source="version"
@@ -192,7 +203,7 @@
                                        label="table.field.taskPathTemplateMerge.stepSize"
                                        source="stepSize"
                                    />
                                </Grid>
                                </Grid> */}
                                <Grid item xs={6} display="flex" gap={1}>
                                    <StatusSelectInput />
rsf-server/src/main/java/com/vincent/rsf/server/system/controller/TaskPathTemplateMergeController.java
@@ -26,6 +26,12 @@
    private TaskPathTemplateMergeService taskPathTemplateMergeService;
    @PreAuthorize("hasAuthority('system:taskPathTemplateMerge:list')")
    @PostMapping("/taskPathTemplateMerge/createSelectList")
    public R createSelectList() {
       return taskPathTemplateMergeService.createSelectList();
    }
    @PreAuthorize("hasAuthority('system:taskPathTemplateMerge:list')")
    @PostMapping("/taskPathTemplateMerge/page")
    public R page(@RequestBody Map<String, Object> map) {
        BaseParam baseParam = buildParam(map, BaseParam.class);
@@ -59,6 +65,12 @@
        taskPathTemplateMerge.setCreateTime(new Date());
        taskPathTemplateMerge.setUpdateBy(getLoginUserId());
        taskPathTemplateMerge.setUpdateTime(new Date());
        if (Cools.isEmpty(taskPathTemplateMerge.getSourceType(),taskPathTemplateMerge.getTargetType())) {
            return R.error();
        }
        String name = taskPathTemplateMerge.getSourceType()+"==>"+taskPathTemplateMerge.getTargetType();
        taskPathTemplateMerge.setTemplateName(name);
        taskPathTemplateMerge.setTemplateCode(name);
        if (!taskPathTemplateMergeService.save(taskPathTemplateMerge)) {
            return R.error("Save Fail");
        }
rsf-server/src/main/java/com/vincent/rsf/server/system/service/TaskPathTemplateMergeService.java
@@ -1,8 +1,10 @@
package com.vincent.rsf.server.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.server.system.entity.TaskPathTemplateMerge;
public interface TaskPathTemplateMergeService extends IService<TaskPathTemplateMerge> {
    R createSelectList();
}
rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/TaskPathTemplateMergeServiceImpl.java
@@ -1,12 +1,53 @@
package com.vincent.rsf.server.system.service.impl;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.server.manager.entity.BasStation;
import com.vincent.rsf.server.manager.entity.WarehouseAreas;
import com.vincent.rsf.server.manager.service.BasStationService;
import com.vincent.rsf.server.manager.service.WarehouseAreasService;
import com.vincent.rsf.server.system.mapper.TaskPathTemplateMergeMapper;
import com.vincent.rsf.server.system.entity.TaskPathTemplateMerge;
import com.vincent.rsf.server.system.service.TaskPathTemplateMergeService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service("taskPathTemplateMergeService")
public class TaskPathTemplateMergeServiceImpl extends ServiceImpl<TaskPathTemplateMergeMapper, TaskPathTemplateMerge> implements TaskPathTemplateMergeService {
    @Autowired
    private BasStationService basStationService;
    @Autowired
    private WarehouseAreasService warehouseAreasService;
    @Override
    public R createSelectList() {
        List<BasStation> basStations = basStationService.list();
        List<WarehouseAreas> warehouseAreas = warehouseAreasService.list();
        ArrayList<Map<String, Object>> maps = new ArrayList<>();
        basStations.forEach(basStation -> {
            Map<String, Object> map = new HashMap<>();
            map.put("id", basStation.getStationName());
            map.put("name", basStation.getStationId());
            maps.add(map);
        });
        warehouseAreas.forEach(warehouseArea -> {
            Map<String, Object> map = new HashMap<>();
            map.put("id", warehouseArea.getId());
            map.put("name", warehouseArea.getName());
            maps.add(map);
        });
        return R.ok(maps);
    }
}