From add24e7553a20b46a5ff660e5b02c9603f23e067 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期三, 04 二月 2026 12:32:48 +0800
Subject: [PATCH] #路径流程页
---
rsf-admin/src/page/taskPathTemplateMerge/TaskPathTemplateMergeCreate.jsx | 55 ++++++++-----
rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/TaskPathTemplateMergeServiceImpl.java | 41 ++++++++++
rsf-admin/src/page/components/TaskPathTemplateMergeSelect.jsx | 76 +++++++++++++++++++
rsf-server/src/main/java/com/vincent/rsf/server/system/service/TaskPathTemplateMergeService.java | 2
rsf-server/src/main/java/com/vincent/rsf/server/system/controller/TaskPathTemplateMergeController.java | 12 +++
5 files changed, 164 insertions(+), 22 deletions(-)
diff --git a/rsf-admin/src/page/components/TaskPathTemplateMergeSelect.jsx b/rsf-admin/src/page/components/TaskPathTemplateMergeSelect.jsx
new file mode 100644
index 0000000..05a05b5
--- /dev/null
+++ b/rsf-admin/src/page/components/TaskPathTemplateMergeSelect.jsx
@@ -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;
\ No newline at end of file
diff --git a/rsf-admin/src/page/taskPathTemplateMerge/TaskPathTemplateMergeCreate.jsx b/rsf-admin/src/page/taskPathTemplateMerge/TaskPathTemplateMergeCreate.jsx
index dc66414..1a19ea2 100644
--- a/rsf-admin/src/page/taskPathTemplateMerge/TaskPathTemplateMergeCreate.jsx
+++ b/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 />
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/TaskPathTemplateMergeController.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/TaskPathTemplateMergeController.java
index ad8d66d..84ddd58 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/TaskPathTemplateMergeController.java
+++ b/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");
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/service/TaskPathTemplateMergeService.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/service/TaskPathTemplateMergeService.java
index 09d7f6b..ada6013 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/service/TaskPathTemplateMergeService.java
+++ b/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();
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/TaskPathTemplateMergeServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/TaskPathTemplateMergeServiceImpl.java
index fe1404a..74389aa 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/TaskPathTemplateMergeServiceImpl.java
+++ b/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);
+ }
}
--
Gitblit v1.9.1