#
luxiaotao1123
2024-09-20 c07c14d7768098f82807d8598ad3fb5c392bd3c0
#
4个文件已修改
102 ■■■■■ 已修改文件
zy-acs-flow/src/page/agv/AgvCard.jsx 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/common/exception/GlobalExceptionHandler.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/AgvController.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/result/AgvResult.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/page/agv/AgvCard.jsx
@@ -1,6 +1,6 @@
import * as React from 'react';
import { useState } from 'react';
import { Paper, Typography, Box, Chip, Stack } from '@mui/material';
import { Paper, Typography, Box, AvatarGroup, Avatar } from '@mui/material';
import ContactsIcon from '@mui/icons-material/AccountCircle';
import DealIcon from '@mui/icons-material/MonetizationOn';
import {
@@ -9,6 +9,7 @@
    useRecordContext,
    Link,
    useResourceContext,
    useDataProvider,
} from 'react-admin';
import PulseSignal from '../components/PulseSignal';
import { AgvAvatar } from './AgvAvatar';
@@ -20,10 +21,7 @@
    const createPath = useCreatePath();
    const record = useRecordContext(props);
    if (!record) return null;
    console.log(record);
    return (
        <Link
            to={createPath({
@@ -62,7 +60,7 @@
                </Box>
                <Box display="flex" flexDirection="column" alignItems="center">
                    <AgvAvatar />
                    <Box textAlign="center" marginTop={1}>
                    <Box textAlign="center" marginTop={2}>
                        <Typography variant="subtitle2">
                            {record.agvStatus}
                        </Typography>
@@ -73,37 +71,51 @@
                </Box>
                <Box display="flex" justifyContent="space-around" width="100%">
                    <Box display="flex" alignItems="center">
                        <ContactsIcon color="disabled" sx={{ mr: 1 }} />
                        <div>
                            <Typography variant="subtitle2" sx={{ mb: -1 }}>
                                {record.nb_contacts}
                            </Typography>
                            <Typography variant="caption" color="textSecondary">
                                {record.nb_contacts
                                    ? record.nb_contacts > 1
                                        ? 'contacts'
                                        : 'contact'
                                    : 'contact'}
                            </Typography>
                        </div>
                    </Box>
                    <Box sx={{ display: 'flex', alignItems: 'center' }}>
                        <DealIcon color="disabled" sx={{ mr: 1 }} />
                        <div>
                            <Typography variant="subtitle2" sx={{ mb: -1 }}>
                                {record.nb_deals}
                            </Typography>
                            <Typography variant="caption" color="textSecondary">
                                {record.nb_deals
                                    ? record.nb_deals > 1
                                        ? 'deals'
                                        : 'deal'
                                    : 'deal'}
                            </Typography>
                        </div>
                        <TaskAvatarGroupIterator taskIds={record.taskIds} />
                    </Box>
                </Box>
            </Paper>
        </Link>
    );
};
const TaskAvatarGroupIterator = ({ taskIds }) => {
    const dataProvider = useDataProvider();
    const [data, setData] = React.useState([]);
    const [total, setTotal] = React.useState(0);
    React.useEffect(() => {
        if (taskIds?.length > 0) {
            dataProvider.getMany('task', { ids: taskIds }).then(res => {
                if (res.data?.length > 0) {
                    setTotal(res.data.length);
                    setData(res.data);
                }
            })
        }
    }, [taskIds])
    return (
        <AvatarGroup
            max={4}
            total={total}
            spacing="medium"
            sx={{
                '& .MuiAvatar-circular': {
                    width: 35,
                    height: 25,
                    fontSize: '0.7rem',
                },
            }}
        >
            {data.map((record) => (
                <Avatar
                    key={record.id}
                    title={`${record.seqNum}`}
                >
                    {record.seqNum}
                </Avatar>
            ))}
        </AvatarGroup>
    );
}
zy-acs-manager/src/main/java/com/zy/acs/manager/common/exception/GlobalExceptionHandler.java
@@ -27,6 +27,7 @@
    @ExceptionHandler(HttpRequestMethodNotSupportedException.class)
    public R methodNotSupportedExceptionHandler(HttpRequestMethodNotSupportedException e,
                                                HttpServletResponse response) {
        e.printStackTrace();
        CommonUtil.addCrossHeaders(response);
        return R.error("请求方式不正确");
    }
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/AgvController.java
@@ -15,6 +15,7 @@
import com.zy.acs.manager.manager.service.AgvDetailService;
import com.zy.acs.manager.manager.service.AgvService;
import com.zy.acs.manager.manager.service.CodeService;
import com.zy.acs.manager.manager.service.TaskService;
import com.zy.acs.manager.system.controller.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -33,6 +34,8 @@
    private AgvDetailService agvDetailService;
    @Autowired
    private CodeService codeService;
    @Autowired
    private TaskService taskService;
//    @PreAuthorize("hasAuthority('manager:agv:list')")
//    @PostMapping("/agv/page")
@@ -54,7 +57,7 @@
        PageParam<Agv, BaseParam> pageParam = new PageParam<>(baseParam, Agv.class);
        PageResult<AgvResult> page = agvService.pageRel(pageParam);
        for (AgvResult result : page.getRecords()) {
            result.sync(agvDetailService.selectByAgvId(result.getId()), codeService);
            result.sync(agvDetailService.selectByAgvId(result.getId()), codeService, taskService);
        }
        return R.ok().add(page);
    }
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/result/AgvResult.java
@@ -1,10 +1,18 @@
package com.zy.acs.manager.manager.controller.result;
import com.zy.acs.framework.common.Cools;
import com.zy.acs.manager.manager.entity.Agv;
import com.zy.acs.manager.manager.entity.AgvDetail;
import com.zy.acs.manager.manager.entity.Task;
import com.zy.acs.manager.manager.enums.TaskStsType;
import com.zy.acs.manager.manager.service.CodeService;
import com.zy.acs.manager.manager.service.TaskService;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
 * Created by vincent on 9/20/2024
@@ -21,8 +29,9 @@
    private String code = "-";
    private List<Long> taskIds = new ArrayList<>();
    public void sync(Object obj, CodeService codeService) {
    public void sync(Object obj, CodeService codeService, TaskService taskService) {
        if (null == obj) return;
        if (obj instanceof AgvDetail) {
            AgvDetail agvDetail = (AgvDetail) obj;
@@ -36,6 +45,13 @@
            if (null != agvDetail.getRecentCode()) {
                this.setCode(codeService.getById(agvDetail.getRecentCode()).getData());
            }
            List<Task> tasks = taskService.selectInSts(agvDetail.getAgvId(), TaskStsType.WAITING, TaskStsType.ASSIGN, TaskStsType.PROGRESS);
            if (!Cools.isEmpty(tasks)) {
                this.setTaskIds(tasks.stream().map(Task::getId).collect(Collectors.toList()));
                this.getTaskIds().add(6441L);
                this.getTaskIds().add(6442L);
                this.getTaskIds().add(6443L);
            }
        }
    }