zy-acs-flow/src/config/setting.js
@@ -37,4 +37,4 @@ export const LOGIN_BACKGROUND = 'media'; // image | media export const CUSTOM_PAGES_DATA_INTERVAL = 1000; export const CUSTOM_PAGES_DATA_INTERVAL = 100000; zy-acs-flow/src/page/mission/MissionList.jsx
@@ -68,7 +68,7 @@ const MissionLayout = () => { const location = useLocation(); const matchShow = matchPath('/mission/:id/show', location.pathname); console.log(matchShow); console.log(matchShow?.params.id); const { data, isPending, filterValues } = useListContext(); const hasFilters = filterValues && Object.keys(filterValues).length > 0; @@ -78,7 +78,7 @@ return ( <> <EmptyDataLoader> <MissionShow open={!!matchShow} id={matchShow?.params.id} /> <MissionShow open={!!matchShow} groupNo={matchShow?.params.id} /> </EmptyDataLoader> </> ); zy-acs-flow/src/page/mission/MissionShow.jsx
@@ -1,9 +1,203 @@ import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; import { DeleteButton, EditButton, ReferenceArrayField, ReferenceField, ReferenceManyField, ShowBase, useDataProvider, useNotify, useRecordContext, useRedirect, useRefresh, useUpdate, } from 'react-admin'; import { Box, Button, Chip, Dialog, DialogContent, Divider, Stack, Typography, } from '@mui/material'; import DialogCloseButton from "../components/DialogCloseButton"; const MissionShow = () => { const MissionShow = ({ open, id }) => { const redirect = useRedirect(); const handleClose = () => { redirect('list', 'mission'); }; return ( <> <Dialog open={open} onClose={handleClose} fullWidth maxWidth="md" sx={{ '& .MuiDialog-container': { alignItems: 'flex-start', }, }} > <DialogContent sx={{ padding: 0 }}> {!!id ? ( <ShowBase id={id}> <MissionShowContent handleClose={handleClose} /> </ShowBase> ) : null} </DialogContent> </Dialog> </> ) } const CLOSE_TOP_WITH_ARCHIVED = 14; const MissionShowContent = ({ handleClose }) => { const record = useRecordContext(); if (!record) return null; return ( <> <DialogCloseButton onClose={handleClose} /> <Stack gap={1}> <Box display="flex" p={2}> <Box flex="1"> <Stack direction="row" justifyContent="space-between" mb={4} > <Stack direction="row" alignItems="center" gap={2}> <Typography variant="h5"> {record.name} </Typography> </Stack> <Stack gap={1} direction="row" pr={record.archived_at ? 0 : 6} > </Stack> </Stack> <Box display="flex" m={2}> <Box display="flex" mr={5} flexDirection="column"> <Typography color="textSecondary" variant="caption" > Expected closing date </Typography> <Stack direction="row" alignItems="center" gap={1} > <Typography variant="body2"> </Typography> {new Date(record.expected_closing_date) < new Date() ? ( <Chip label="Past" color="error" size="small" /> ) : null} </Stack> </Box> <Box display="flex" mr={5} flexDirection="column"> <Typography color="textSecondary" variant="caption" > Budget </Typography> <Typography variant="body2"> </Typography> </Box> {record.category && ( <Box display="flex" mr={5} flexDirection="column" > <Typography color="textSecondary" variant="caption" > Category </Typography> <Typography variant="body2"> {record.category} </Typography> </Box> )} <Box display="flex" mr={5} flexDirection="column"> <Typography color="textSecondary" variant="caption" > Stage </Typography> <Typography variant="body2"> </Typography> </Box> </Box> {!!record.contact_ids?.length && ( <Box m={2}> <Box display="flex" mr={5} flexDirection="column" minHeight={48} > <Typography color="textSecondary" variant="caption" > Contacts </Typography> <ReferenceArrayField source="contact_ids" reference="contacts_summary" > <ContactList /> </ReferenceArrayField> </Box> </Box> )} {record.description && ( <Box m={2} sx={{ whiteSpace: 'pre-line' }}> <Typography color="textSecondary" variant="caption" > Description </Typography> <Typography variant="body2"> {record.description} </Typography> </Box> )} <Box m={2}> <Divider /> </Box> </Box> </Box> </Stack> </> ) } zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/floyd/FloydNavigateService.java
@@ -13,7 +13,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -64,7 +63,7 @@ return this.matrixHeader.get(idx); } @PostConstruct // @PostConstruct @SuppressWarnings("all") public void generateMatrix() { log.info("【FLOYD】正在计算矩阵数据......"); zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MissionController.java
@@ -3,15 +3,13 @@ import com.zy.acs.framework.common.Cools; import com.zy.acs.framework.common.R; import com.zy.acs.manager.core.domain.TaskPosDto; import com.zy.acs.manager.manager.entity.Segment; import com.zy.acs.manager.manager.service.MissionService; import com.zy.acs.manager.manager.service.SegmentService; import com.zy.acs.manager.system.controller.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; @@ -53,4 +51,11 @@ return R.ok().add(list); } @PreAuthorize("hasAuthority('manager:mission:list')") @GetMapping("/mission/{id}") public R get(@PathVariable("id") Long id) { Segment segment = segmentService.getById(id); return R.ok().add(missionService.generateVo(segment.getGroupId())); } } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/MissionService.java
@@ -8,4 +8,6 @@ List<MissionVo> getList(Long agvId, String groupNo); MissionVo generateVo(String groupNo); } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/MissionServiceImpl.java
@@ -36,7 +36,7 @@ List<MissionVo> result = new ArrayList<>(); List<String> runningGroupNos = segmentService.getGroupNo(SegmentStateType.RUNNING, agvId, groupNo); for (String runningGroupNo : runningGroupNos) { MissionVo vo = generate(runningGroupNo); MissionVo vo = generateVo(runningGroupNo); if (null != vo) { result.add(vo); } @@ -45,7 +45,11 @@ return result; } public MissionVo generate(String groupNo) { @Override public MissionVo generateVo(String groupNo) { if (Cools.isEmpty(groupNo)) { return null; } List<Segment> list = segmentService.list(new LambdaQueryWrapper<Segment>().eq(Segment::getGroupId, groupNo).orderByAsc(Segment::getSerial)); if (Cools.isEmpty(list)) { return null;