From d4ae421c04e90172b808cbebb86f297412ea8345 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期一, 23 九月 2024 11:05:32 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/BusController.java        |   33 ++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/common/domain/TaskIdByLongDto.java           |   23 +++
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/LocStsController.java     |    8 +
 zy-acs-flow/src/page/bus/BusCreate.jsx                                                       |  269 +++++++++++++++++++++++++-------------------
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/param/BusCreateParam.java |    6 
 5 files changed, 216 insertions(+), 123 deletions(-)

diff --git a/zy-acs-flow/src/page/bus/BusCreate.jsx b/zy-acs-flow/src/page/bus/BusCreate.jsx
index f9f7af5..f24e50d 100644
--- a/zy-acs-flow/src/page/bus/BusCreate.jsx
+++ b/zy-acs-flow/src/page/bus/BusCreate.jsx
@@ -33,12 +33,47 @@
 import DialogCloseButton from "../components/DialogCloseButton";
 import StatusSelectInput from "../components/StatusSelectInput";
 import MemoInput from "../components/MemoInput";
+import request from '@/utils/request';
 
 const BusCreate = (props) => {
     const { open, setOpen } = props;
 
     const translate = useTranslate();
     const notify = useNotify();
+
+    const [locStsIdByStock, setLocStsIdByStock] = useState(null);
+    const [locStsIdByIdle, setLocStsIdByIdle] = useState(null);
+
+    useEffect(() => {
+        const queryLocStsByStock = async () => {
+            request.post('/locSts/list', {
+                uuid: 'STOCK'
+            }, {
+                headers: {
+                    'Content-Type': 'application/x-www-form-urlencoded'
+                }
+            }).then(res => {
+                setLocStsIdByStock(res.data.data[0]?.id);
+            })
+        }
+        const queryLocStsByIdle = async () => {
+            request.post('/locSts/list', {
+                uuid: 'IDLE'
+            }, {
+                headers: {
+                    'Content-Type': 'application/x-www-form-urlencoded'
+                }
+            }).then(res => {
+                setLocStsIdByIdle(res.data.data[0]?.id);
+            })
+        }
+        if (open) {
+            console.log(1);
+
+            queryLocStsByStock();
+            queryLocStsByIdle();
+        }
+    }, [open])
 
     const handleClose = (event, reason) => {
         if (reason !== "backdropClick") {
@@ -57,124 +92,128 @@
 
     return (
         <>
-            <CreateBase
-                record={{}}
-                transform={(data) => {
-                    return data;
-                }}
-                mutationOptions={{ onSuccess: handleSuccess, onError: handleError }}
-            >
-                <Dialog
-                    open={open}
-                    onClose={handleClose}
-                    aria-labelledby="form-dialog-title"
-                    fullWidth
-                    disableRestoreFocus
-                    maxWidth="md"   // 'xs' | 'sm' | 'md' | 'lg' | 'xl'
+            {(locStsIdByStock && locStsIdByIdle) && (
+                <CreateBase
+                    record={{}}
+                    transform={(data) => {
+                        return data;
+                    }}
+                    mutationOptions={{ onSuccess: handleSuccess, onError: handleError }}
                 >
-                    <Form>
-                        <DialogTitle id="form-dialog-title" sx={{
-                            position: 'sticky',
-                            top: 0,
-                            backgroundColor: 'background.paper',
-                            zIndex: 1000
-                        }}
-                        >
-                            {translate('create.title')}
-                            <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}>
-                                <DialogCloseButton onClose={handleClose} />
-                            </Box>
-                        </DialogTitle>
-                        <DialogContent>
-                            <Grid container rowSpacing={2} columnSpacing={2}>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.bus.busNo"
-                                        source="busNo"
-                                        parse={v => v}
-                                        validate={required()}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <DateTimeInput
-                                        label="table.field.bus.startTime"
-                                        source="startTime"
-                                    />
-                                </Grid>
+                    <Dialog
+                        open={open}
+                        onClose={handleClose}
+                        aria-labelledby="form-dialog-title"
+                        fullWidth
+                        disableRestoreFocus
+                        maxWidth="md"   // 'xs' | 'sm' | 'md' | 'lg' | 'xl'
+                    >
+                        <Form>
+                            <DialogTitle id="form-dialog-title" sx={{
+                                position: 'sticky',
+                                top: 0,
+                                backgroundColor: 'background.paper',
+                                zIndex: 1000
+                            }}
+                            >
+                                {translate('create.title')}
+                                <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}>
+                                    <DialogCloseButton onClose={handleClose} />
+                                </Box>
+                            </DialogTitle>
+                            <DialogContent>
+                                <Grid container rowSpacing={2} columnSpacing={2}>
+                                    <Grid item xs={6} display="flex" gap={1}>
+                                        <TextInput
+                                            label="table.field.bus.busNo"
+                                            source="busNo"
+                                            parse={v => v}
+                                            validate={required()}
+                                        />
+                                    </Grid>
+                                    <Grid item xs={6} display="flex" gap={1}>
+                                        <DateTimeInput
+                                            label="table.field.bus.startTime"
+                                            source="startTime"
+                                        />
+                                    </Grid>
 
-                                <Grid item xs={12} display="flex" gap={1}>
-                                    <ArrayInput
-                                        source="taskList"
-                                        validate={[required()]}
-                                    >
-                                        <SimpleFormIterator fullWidth getItemLabel={index => `#${index + 1}`}>
-                                            <Box mt={1} />
-                                            <Stack direction="row" spacing={2}>
-                                                <TextInput source="seqNum" />
-                                                <NumberInput source="priority" defaultValue={1} />
-                                            </Stack>
-                                            <Stack direction="row" spacing={2}>
-                                                <ReferenceInput
-                                                    source="oriSta"
-                                                    reference="sta"
-                                                >
-                                                    <AutocompleteInput
-                                                        label="table.field.task.oriSta"
-                                                        optionText="staNo"
-                                                        filterToQuery={(val) => ({ staNo: val })}
-                                                    />
-                                                </ReferenceInput>
-                                                <ReferenceInput
-                                                    source="oriLoc"
-                                                    reference="loc"
-                                                >
-                                                    <AutocompleteInput
-                                                        label="table.field.task.oriLoc"
-                                                        optionText="locNo"
-                                                        filterToQuery={(val) => ({ locNo: val })}
-                                                    />
-                                                </ReferenceInput>
-                                            </Stack>
-                                            <Stack direction="row" spacing={2}>
-                                                <ReferenceInput
-                                                    source="destSta"
-                                                    reference="sta"
-                                                >
-                                                    <AutocompleteInput
-                                                        label="table.field.task.destSta"
-                                                        optionText="staNo"
-                                                        filterToQuery={(val) => ({ staNo: val })}
-                                                    />
-                                                </ReferenceInput>
-                                                <ReferenceInput
-                                                    source="destLoc"
-                                                    reference="loc"
-                                                >
-                                                    <AutocompleteInput
-                                                        label="table.field.task.destLoc"
-                                                        optionText="locNo"
-                                                        filterToQuery={(val) => ({ locNo: val })}
-                                                    />
-                                                </ReferenceInput>
-                                            </Stack>
-                                        </SimpleFormIterator>
-                                    </ArrayInput>
+                                    <Grid item xs={12} display="flex" gap={1}>
+                                        <ArrayInput
+                                            source="taskList"
+                                            validate={[required()]}
+                                        >
+                                            <SimpleFormIterator fullWidth getItemLabel={index => `#${index + 1}`}>
+                                                <Box mt={1} />
+                                                <Stack direction="row" spacing={2}>
+                                                    <ReferenceInput
+                                                        source="oriSta"
+                                                        reference="sta"
+                                                    >
+                                                        <AutocompleteInput
+                                                            label="table.field.task.oriSta"
+                                                            optionText="staNo"
+                                                            filterToQuery={(val) => ({ staNo: val })}
+                                                        />
+                                                    </ReferenceInput>
+                                                    <ReferenceInput
+                                                        source="oriLoc"
+                                                        reference="loc"
+                                                        filter={{ locSts: locStsIdByStock }}
+                                                    >
+                                                        <AutocompleteInput
+                                                            label="table.field.task.oriLoc"
+                                                            optionText="locNo"
+                                                            filterToQuery={(val) => ({ locNo: val })}
+                                                        />
+                                                    </ReferenceInput>
+                                                </Stack>
+                                                <Stack direction="row" spacing={2}>
+                                                    <ReferenceInput
+                                                        source="destSta"
+                                                        reference="sta"
+                                                    >
+                                                        <AutocompleteInput
+                                                            label="table.field.task.destSta"
+                                                            optionText="staNo"
+                                                            filterToQuery={(val) => ({ staNo: val })}
+                                                        />
+                                                    </ReferenceInput>
+                                                    <ReferenceInput
+                                                        source="destLoc"
+                                                        reference="loc"
+                                                        filter={{ locSts: locStsIdByIdle }}
+                                                    >
+                                                        <AutocompleteInput
+                                                            label="table.field.task.destLoc"
+                                                            optionText="locNo"
+                                                            filterToQuery={(val) => ({ locNo: val })}
+                                                        />
+                                                    </ReferenceInput>
+                                                </Stack>
+                                                <Stack direction="row" spacing={2} sx={{ maxWidth: '50%' }}>
+                                                    {/* <TextInput source="seqNum" /> */}
+                                                    <NumberInput source="priority" defaultValue={1} />
+                                                </Stack>
+                                            </SimpleFormIterator>
+                                        </ArrayInput>
+                                    </Grid>
+                                    <Grid item xs={12} display="flex" gap={1}>
+                                        <Stack direction="column" spacing={1} width={'100%'}>
+                                            <MemoInput />
+                                        </Stack>
+                                    </Grid>
                                 </Grid>
-                                <Grid item xs={12} display="flex" gap={1}>
-                                    <Stack direction="column" spacing={1} width={'100%'}>
-                                        <MemoInput />
-                                    </Stack>
-                                </Grid>
-                            </Grid>
-                        </DialogContent>
-                        <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
-                            <Toolbar sx={{ width: '100%', justifyContent: 'space-between' }}  >
-                                <SaveButton />
-                            </Toolbar>
-                        </DialogActions>
-                    </Form>
-                </Dialog>
-            </CreateBase>
+                            </DialogContent>
+                            <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
+                                <Toolbar sx={{ width: '100%', justifyContent: 'space-between' }}  >
+                                    <SaveButton />
+                                </Toolbar>
+                            </DialogActions>
+                        </Form>
+                    </Dialog>
+                </CreateBase>
+            )}
         </>
     )
 }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/domain/TaskIdByLongDto.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/domain/TaskIdByLongDto.java
new file mode 100644
index 0000000..f13935b
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/domain/TaskIdByLongDto.java
@@ -0,0 +1,23 @@
+package com.zy.acs.manager.common.domain;
+
+import lombok.Data;
+
+/**
+ * Created by vincent on 2023/6/12
+ */
+@Data
+public class TaskIdByLongDto {
+
+    private String seqNum;
+
+    private Long oriLoc;
+
+    private Long oriSta;
+
+    private Long destLoc;
+
+    private Long destSta;
+
+    private Integer priority = 1;
+
+}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/BusController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/BusController.java
index 86046c5..83fdcaa 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/BusController.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/BusController.java
@@ -5,14 +5,15 @@
 import com.zy.acs.framework.common.Cools;
 import com.zy.acs.framework.common.R;
 import com.zy.acs.manager.common.annotation.OperationLog;
-import com.zy.acs.manager.common.domain.BaseParam;
-import com.zy.acs.manager.common.domain.KeyValVo;
-import com.zy.acs.manager.common.domain.PageParam;
+import com.zy.acs.manager.common.domain.*;
 import com.zy.acs.manager.common.utils.ExcelUtil;
 import com.zy.acs.manager.core.service.MainService;
 import com.zy.acs.manager.manager.controller.param.BusCreateParam;
+import com.zy.acs.manager.manager.controller.param.OpenBusSubmitParam;
 import com.zy.acs.manager.manager.entity.Bus;
 import com.zy.acs.manager.manager.service.BusService;
+import com.zy.acs.manager.manager.service.LocService;
+import com.zy.acs.manager.manager.service.StaService;
 import com.zy.acs.manager.system.controller.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -29,6 +30,10 @@
     private BusService busService;
     @Autowired
     private MainService mainService;
+    @Autowired
+    private StaService staService;
+    @Autowired
+    private LocService locService;
 
     @PreAuthorize("hasAuthority('manager:bus:list')")
     @PostMapping("/bus/page")
@@ -60,7 +65,27 @@
     @OperationLog("Create Bus")
     @PostMapping("/bus/save")
     public R save(@RequestBody BusCreateParam param) {
-        Bus bus = mainService.generateBusAndTask();
+        OpenBusSubmitParam submitParam = new OpenBusSubmitParam();
+        submitParam.setBatch(param.getBatch());
+        for (TaskIdByLongDto dto : param.getTaskList()) {
+            TaskDto taskDto = new TaskDto();
+            taskDto.setSeqNum(dto.getSeqNum());
+            taskDto.setPriority(dto.getPriority());
+            if (!Cools.isEmpty(dto.getOriSta())) {
+                taskDto.setOriSta(staService.getById(dto.getOriSta()).getStaNo());
+            }
+            if (!Cools.isEmpty(dto.getOriLoc())) {
+                taskDto.setOriSta(locService.getById(dto.getOriLoc()).getLocNo());
+            }
+            if (!Cools.isEmpty(dto.getDestSta())) {
+                taskDto.setOriSta(staService.getById(dto.getDestSta()).getStaNo());
+            }
+            if (!Cools.isEmpty(dto.getDestLoc())) {
+                taskDto.setOriSta(locService.getById(dto.getDestLoc()).getLocNo());
+            }
+            submitParam.getTaskList().add(taskDto);
+        }
+        Bus bus = mainService.generateBusAndTask(submitParam, param.getMemo());
         return R.ok("Save Success").add(bus);
     }
 
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/LocStsController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/LocStsController.java
index 98a72a6..93564d5 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/LocStsController.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/LocStsController.java
@@ -36,8 +36,12 @@
 
     @PreAuthorize("hasAuthority('manager:locSts:list')")
     @PostMapping("/locSts/list")
-    public R list(@RequestBody Map<String, Object> map) {
-        return R.ok().add(locStsService.list());
+    public R list(@RequestParam(required = false) String uuid) {
+        LambdaQueryWrapper<LocSts> wrapper = new LambdaQueryWrapper<>();
+        if (!Cools.isEmpty(uuid)) {
+            wrapper.eq(LocSts::getUuid, uuid);
+        }
+        return R.ok().add(locStsService.list(wrapper));
     }
 
     @PreAuthorize("hasAuthority('manager:locSts:list')")
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/param/BusCreateParam.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/param/BusCreateParam.java
index 73d6dcd..d8ee346 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/param/BusCreateParam.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/param/BusCreateParam.java
@@ -1,6 +1,6 @@
 package com.zy.acs.manager.manager.controller.param;
 
-import com.zy.acs.manager.common.domain.TaskDto;
+import com.zy.acs.manager.common.domain.TaskIdByLongDto;
 import lombok.Data;
 
 import java.util.ArrayList;
@@ -14,6 +14,8 @@
 
     private String batch;
 
-    private List<TaskDto> taskList = new ArrayList<>();
+    private List<TaskIdByLongDto> taskList = new ArrayList<>();
+
+    private String memo;
 
 }

--
Gitblit v1.9.1