#
luxiaotao1123
2024-09-29 2ab3366ad79370c1fbe7b665e6a50148463ab640
#
7个文件已修改
230 ■■■■■ 已修改文件
zy-acs-flow/src/config/setting.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/page/mission/MissionList.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/page/mission/MissionShow.jsx 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/floyd/FloydNavigateService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MissionController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/MissionService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/MissionServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;