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