From c07c14d7768098f82807d8598ad3fb5c392bd3c0 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期五, 20 九月 2024 14:52:36 +0800 Subject: [PATCH] # --- zy-acs-flow/src/page/agv/AgvCard.jsx | 78 ++++++++++++++++++++++---------------- zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/result/AgvResult.java | 18 ++++++++ zy-acs-manager/src/main/java/com/zy/acs/manager/common/exception/GlobalExceptionHandler.java | 1 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/AgvController.java | 5 ++ 4 files changed, 67 insertions(+), 35 deletions(-) diff --git a/zy-acs-flow/src/page/agv/AgvCard.jsx b/zy-acs-flow/src/page/agv/AgvCard.jsx index 6e695e8..53e4a00 100644 --- a/zy-acs-flow/src/page/agv/AgvCard.jsx +++ b/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> + ); +} diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/exception/GlobalExceptionHandler.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/exception/GlobalExceptionHandler.java index 426d68d..53fd732 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/exception/GlobalExceptionHandler.java +++ b/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("璇锋眰鏂瑰紡涓嶆纭�"); } diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/AgvController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/AgvController.java index 18ec049..a754666 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/AgvController.java +++ b/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); } diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/result/AgvResult.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/result/AgvResult.java index 5d6ae0b..e129094 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/result/AgvResult.java +++ b/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); + } } } -- Gitblit v1.9.1