From 746b1998b7b948e56bcda268aadc154371fb4fcd Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 29 十一月 2024 14:26:21 +0800
Subject: [PATCH] #

---
 zy-acs-flow/src/page/agvDetail/AgvDetailCreate.jsx                               |    7 -
 zy-acs-flow/src/page/agvDetail/AgvDetailPanel.jsx                                |   11 ++
 zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/AGV_04_UP.java     |   11 ++
 zy-acs-flow/src/page/agvDetail/AgvDetailEdit.jsx                                 |    7 -
 zy-acs-flow/src/i18n/zh.js                                                       |    3 
 zy-acs-flow/src/page/vehFaultRec/VehFaultRecList.jsx                             |   20 ++--
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/domain/VehicleFaultDto.java |   21 +++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/FaultProcessor.java |   38 ++++++++
 zy-acs-flow/src/map/header/FakeFab.jsx                                           |   20 ++--
 zy-acs-flow/.env                                                                 |    8 +-
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AgvDataService.java |   13 +++
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/AgvDetail.java    |   12 ++
 zy-acs-flow/src/i18n/en.js                                                       |    3 
 zy-acs-flow/src/page/task/TaskList.jsx                                           |    6 
 zy-acs-flow/src/map/MapPage.jsx                                                  |    3 
 15 files changed, 127 insertions(+), 56 deletions(-)

diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/AGV_04_UP.java b/zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/AGV_04_UP.java
index bd21377..07170e4 100644
--- a/zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/AGV_04_UP.java
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/AGV_04_UP.java
@@ -13,7 +13,16 @@
 
     @Override
     public byte[] writeToBytes() {
-        return new byte[0];
+
+        return Utils.merge(
+                Utils.reverse(RadixTools.shortToByte((short) this.faultId))
+                , Utils.reverse(RadixTools.hexStringToBytes(this.hexFaultId))
+                , (byte) this.faultStatus
+                , (byte) this.faultLevel
+                , Utils.reverse(RadixTools.intToBytes(this.data1))
+                , Utils.reverse(RadixTools.intToBytes(this.data2))
+                , Utils.reverse(RadixTools.intToBytes(this.flag))
+        );
     }
 
     @Override
diff --git a/zy-acs-flow/.env b/zy-acs-flow/.env
index ecc2ec9..3b8a2b1 100644
--- a/zy-acs-flow/.env
+++ b/zy-acs-flow/.env
@@ -1,5 +1,5 @@
-VITE_BASE_IP=localhost
-VITE_BASE_PORT=8088
+# VITE_BASE_IP=localhost
+# VITE_BASE_PORT=8088
 
-# VITE_BASE_IP=192.168.1.100
-# VITE_BASE_PORT=8080
\ No newline at end of file
+VITE_BASE_IP=192.168.1.100
+VITE_BASE_PORT=8080
\ No newline at end of file
diff --git a/zy-acs-flow/src/i18n/en.js b/zy-acs-flow/src/i18n/en.js
index 911bbb3..de2d753 100644
--- a/zy-acs-flow/src/i18n/en.js
+++ b/zy-acs-flow/src/i18n/en.js
@@ -397,7 +397,8 @@
                 workTime: "work time",
                 workDistance: "mileage",
                 backpack: "backpack",
-                password: "password",
+                error: "error",
+                errorTime: "errorTime",
                 online: 'online',
                 task: 'task',
             },
diff --git a/zy-acs-flow/src/i18n/zh.js b/zy-acs-flow/src/i18n/zh.js
index 77bb5dd..693fa88 100644
--- a/zy-acs-flow/src/i18n/zh.js
+++ b/zy-acs-flow/src/i18n/zh.js
@@ -396,7 +396,8 @@
                 workTime: "宸ヤ綔鏃堕棿",
                 workDistance: "绱閲岀▼",
                 backpack: "鑳岀瘬",
-                password: "瀵嗙爜",
+                error: "鏁呴殰",
+                errorTime: "鏁呴殰鏃堕棿",
                 online: '鍦ㄧ嚎',
                 task: '浠诲姟',
             },
diff --git a/zy-acs-flow/src/map/MapPage.jsx b/zy-acs-flow/src/map/MapPage.jsx
index 7d4ecfd..3fa87d0 100644
--- a/zy-acs-flow/src/map/MapPage.jsx
+++ b/zy-acs-flow/src/map/MapPage.jsx
@@ -419,8 +419,7 @@
                             >
                                 <AltRoute />
                             </Fab>
-                            <FakeFab
-                            />
+                            <FakeFab />
                         </>
                     )}
                     <Fab
diff --git a/zy-acs-flow/src/map/header/FakeFab.jsx b/zy-acs-flow/src/map/header/FakeFab.jsx
index f39f6d4..0f64e71 100644
--- a/zy-acs-flow/src/map/header/FakeFab.jsx
+++ b/zy-acs-flow/src/map/header/FakeFab.jsx
@@ -17,15 +17,17 @@
     const handleToggle = () => {
         getFakeSign(null, (res) => {
             let pass = true;
-            // if (!res) {
-            //     const pwd = prompt("please enter password:");
-            //     if (pwd === 'xltys1995') {
-            //         pass = true;
-            //     } else {
-            //         pass = false;
-            //         alert('Incorrect password');
-            //     }
-            // }
+            if (!res) {
+                const pwd = prompt("please enter password:");
+                if (pwd === 'xltys1995') {
+                    pass = true;
+                } else {
+                    pass = false;
+                    if (!pwd) {
+                        alert('Incorrect password');
+                    }
+                }
+            }
             if (pass) {
                 setFakeSign(!res, (updatedSign) => {
                     setFakeRun(updatedSign);
diff --git a/zy-acs-flow/src/page/agvDetail/AgvDetailCreate.jsx b/zy-acs-flow/src/page/agvDetail/AgvDetailCreate.jsx
index edceace..dc54681 100644
--- a/zy-acs-flow/src/page/agvDetail/AgvDetailCreate.jsx
+++ b/zy-acs-flow/src/page/agvDetail/AgvDetailCreate.jsx
@@ -258,13 +258,6 @@
                                         source="backpack"
                                     />
                                 </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.agvDetail.password"
-                                        source="password"
-                                        parse={v => v}
-                                    />
-                                </Grid>
 
                                 <Grid item xs={6} display="flex" gap={1}>
                                     <StatusSelectInput />
diff --git a/zy-acs-flow/src/page/agvDetail/AgvDetailEdit.jsx b/zy-acs-flow/src/page/agvDetail/AgvDetailEdit.jsx
index 76421d7..95a6cf4 100644
--- a/zy-acs-flow/src/page/agvDetail/AgvDetailEdit.jsx
+++ b/zy-acs-flow/src/page/agvDetail/AgvDetailEdit.jsx
@@ -240,13 +240,6 @@
                                 source="backpack"
                             />
                         </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.agvDetail.password"
-                                source="password"
-                                parse={v => v}
-                            />
-                        </Stack>
 
                     </Grid>
                     <Grid item xs={12} md={4}>
diff --git a/zy-acs-flow/src/page/agvDetail/AgvDetailPanel.jsx b/zy-acs-flow/src/page/agvDetail/AgvDetailPanel.jsx
index 031ffd0..f9fdda9 100644
--- a/zy-acs-flow/src/page/agvDetail/AgvDetailPanel.jsx
+++ b/zy-acs-flow/src/page/agvDetail/AgvDetailPanel.jsx
@@ -186,11 +186,16 @@
                         </Grid>
                         <Grid item xs={6}>
                             <PanelTypography
-                                title="table.field.agvDetail.password" 
-                                property={record.password}
+                                title="table.field.agvDetail.error" 
+                                property={record.error}
                             />
                         </Grid>
-
+                        <Grid item xs={6}>
+                            <PanelTypography
+                                title="table.field.agvDetail.errorTime" 
+                                property={record.errorTime}
+                            />
+                        </Grid>
                     </Grid>
                 </CardContent>
             </Card >
diff --git a/zy-acs-flow/src/page/task/TaskList.jsx b/zy-acs-flow/src/page/task/TaskList.jsx
index 5ec10b1..82b4880 100644
--- a/zy-acs-flow/src/page/task/TaskList.jsx
+++ b/zy-acs-flow/src/page/task/TaskList.jsx
@@ -89,14 +89,14 @@
     <ReferenceInput source="taskType" label="table.field.task.taskType" reference="taskType">
         <AutocompleteInput label="table.field.task.taskType" optionText="name" filterToQuery={(val) => ({ name: val })} />
     </ReferenceInput>,
-    <ReferenceInput source="agvId" label="table.field.task.agvId" reference="agv">
+    <ReferenceInput source="agvId" label="table.field.task.agvId" reference="agv" alwaysOn>
         <AutocompleteInput label="table.field.task.agvId" optionText="uuid" filterToQuery={(val) => ({ uuid: val })} />
     </ReferenceInput>,
     // <DateInput source="ioTime" label="table.field.task.ioTime" />,
     // <DateInput source="startTime" label="table.field.task.startTime" />,
     // <DateInput source="endTime" label="table.field.task.endTime" />,
     // <DateInput source="errTime" label="table.field.task.errTime" />,
-    <ReferenceInput source="oriSta" label="table.field.task.oriSta" reference="sta" alwaysOn>
+    <ReferenceInput source="oriSta" label="table.field.task.oriSta" reference="sta">
         <AutocompleteInput label="table.field.task.oriSta" optionText="staNo" filterToQuery={(val) => ({ staNo: val })} />
     </ReferenceInput>,
     <ReferenceInput source="oriLoc" label="table.field.task.oriLoc" reference="loc" alwaysOn>
@@ -105,7 +105,7 @@
     <ReferenceInput source="oriCode" label="table.field.task.oriCode" reference="code">
         <AutocompleteInput label="table.field.task.oriCode" optionText="data" filterToQuery={(val) => ({ data: val })} />
     </ReferenceInput>,
-    <ReferenceInput source="destSta" label="table.field.task.destSta" reference="sta" alwaysOn>
+    <ReferenceInput source="destSta" label="table.field.task.destSta" reference="sta">
         <AutocompleteInput label="table.field.task.destSta" optionText="staNo" filterToQuery={(val) => ({ staNo: val })} />
     </ReferenceInput>,
     <ReferenceInput source="destLoc" label="table.field.task.destLoc" reference="loc" alwaysOn>
diff --git a/zy-acs-flow/src/page/vehFaultRec/VehFaultRecList.jsx b/zy-acs-flow/src/page/vehFaultRec/VehFaultRecList.jsx
index 35d7021..b40f636 100644
--- a/zy-acs-flow/src/page/vehFaultRec/VehFaultRecList.jsx
+++ b/zy-acs-flow/src/page/vehFaultRec/VehFaultRecList.jsx
@@ -63,7 +63,7 @@
     <DateInput label='common.time.before' source="timeEnd" alwaysOn />,
 
     <TextInput source="uuid" label="table.field.vehFaultRec.uuid" />,
-    <ReferenceInput source="agvId" label="table.field.vehFaultRec.agvId" reference="agv">
+    <ReferenceInput source="agvId" label="table.field.vehFaultRec.agvId" reference="agv" alwaysOn>
         <AutocompleteInput label="table.field.vehFaultRec.agvId" optionText="uuid" filterToQuery={(val) => ({ uuid: val })} />
     </ReferenceInput>,
     <TextInput source="faultNo" label="table.field.vehFaultRec.faultNo" />,
@@ -113,7 +113,7 @@
                 actions={(
                     <TopToolbar>
                         <FilterButton />
-                        <MyCreateButton onClick={() => { setCreateDialog(true) }} />
+                        {/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */}
                         <SelectColumnsButton preferenceKey='vehFaultRec' />
                         <MyExportButton />
                     </TopToolbar>
@@ -122,11 +122,11 @@
             >
                 <StyledDatagrid
                     preferenceKey='vehFaultRec'
-                    bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
+                    bulkActionButtons={false}
                     rowClick={(id, resource, record) => false}
                     expand={() => <VehFaultRecPanel />}
                     expandSingle={true}
-                    omit={['id', 'createTime', 'createBy', 'memo']}
+                    omit={['id', 'uuid', 'createTime', 'createBy', 'memo']}
                 >
                     <NumberField source="id" />
                     <TextField source="uuid" label="table.field.vehFaultRec.uuid" />
@@ -145,20 +145,20 @@
                     <DateField source="resetTime" label="table.field.vehFaultRec.resetTime" showTime />
                     <TextField source="state" label="table.field.vehFaultRec.state" />
 
-                    <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
+                    {/* <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
                         <TextField source="nickname" />
                     </ReferenceField>
                     <DateField source="updateTime" label="common.field.updateTime" showTime />
                     <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
                         <TextField source="nickname" />
-                    </ReferenceField>
-                    <DateField source="createTime" label="common.field.createTime" showTime />
-                    <BooleanField source="statusBool" label="common.field.status" sortable={false} />
+                    </ReferenceField> */}
+                    {/* <DateField source="createTime" label="common.field.createTime" showTime /> */}
+                    {/* <BooleanField source="statusBool" label="common.field.status" sortable={false} /> */}
                     <TextField source="memo" label="common.field.memo" sortable={false} />
-                    <WrapperField cellClassName="opt" label="common.field.opt">
+                    {/* <WrapperField cellClassName="opt" label="common.field.opt">
                         <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
                         <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
-                    </WrapperField>
+                    </WrapperField> */}
                 </StyledDatagrid>
             </List>
             <VehFaultRecCreate
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/domain/VehicleFaultDto.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/domain/VehicleFaultDto.java
index 7671d26..e8e7b85 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/domain/VehicleFaultDto.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/domain/VehicleFaultDto.java
@@ -1,13 +1,32 @@
 package com.zy.acs.manager.core.domain;
 
+import com.zy.acs.common.domain.protocol.IMessageBody;
 import lombok.Data;
 
 /**
  * Created by vincent on 8/19/2024
  */
 @Data
-public class VehicleFaultDto {
+public class VehicleFaultDto<T extends IMessageBody> {
 
     private String vehicle;
+    
+    private long timestamp;
+
+    private T t;
+
+    public VehicleFaultDto() {
+    }
+
+    public VehicleFaultDto(String vehicle, T t) {
+        this.vehicle = vehicle;
+        this.t = t;
+    }
+
+    public VehicleFaultDto(String vehicle, long timestamp, T t) {
+        this.vehicle = vehicle;
+        this.timestamp = timestamp;
+        this.t = t;
+    }
 
 }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AgvDataService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AgvDataService.java
index f3c07bb..7fc2714 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AgvDataService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AgvDataService.java
@@ -7,7 +7,9 @@
 import com.zy.acs.common.utils.GsonUtils;
 import com.zy.acs.common.utils.RedisSupport;
 import com.zy.acs.framework.common.Cools;
+import com.zy.acs.framework.common.DateUtils;
 import com.zy.acs.manager.core.domain.BackpackDto;
+import com.zy.acs.manager.core.domain.VehicleFaultDto;
 import com.zy.acs.manager.manager.entity.Agv;
 import com.zy.acs.manager.manager.entity.AgvDetail;
 import com.zy.acs.manager.manager.entity.Code;
@@ -122,9 +124,18 @@
         if (msgBody instanceof AGV_04_UP) {
             AGV_04_UP agv_04_up = (AGV_04_UP) msgBody;
             log.info("Agv [{}] 鏁呴殰鏁版嵁鍖� ===>> {}", protocol.getAgvNo(), JSON.toJSONString(agv_04_up));
-//            faultProcessor.execute(new VehicleFaultDto());
+            faultProcessor.execute(new VehicleFaultDto<>(protocol.getAgvNo(), protocol.getTimestamp(), agv_04_up));
+            detail.setError(String.valueOf(agv_04_up.getFaultId()));
+            detail.setErrorTime(new Date());
         }
 
+        // 鏁呴殰澶嶄綅
+        if (!Cools.isEmpty(detail.getError()) && !"NONE".equals(detail.getError())) {
+            assert detail.getErrorTime() != null;
+            if (DateUtils.diffToSeconds(detail.getErrorTime(), new Date()) > 20) {
+                detail.setError("NONE");
+            }
+        }
         if (!agvDetailService.updateById(detail)) {
             log.error("Agv [{}] 璇︽儏鏇存柊澶辫触 锛侊紒锛�", protocol.getAgvNo());
         }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/FaultProcessor.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/FaultProcessor.java
index de96d29..ea4d207 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/FaultProcessor.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/FaultProcessor.java
@@ -1,13 +1,22 @@
 package com.zy.acs.manager.core.service;
 
+import com.zy.acs.common.domain.protocol.AGV_04_UP;
+import com.zy.acs.common.utils.GsonUtils;
+import com.zy.acs.framework.common.Cools;
+import com.zy.acs.framework.common.RadixTools;
 import com.zy.acs.framework.common.SnowflakeIdWorker;
 import com.zy.acs.manager.core.domain.VehicleFaultDto;
+import com.zy.acs.manager.manager.entity.Agv;
 import com.zy.acs.manager.manager.entity.VehFaultRec;
+import com.zy.acs.manager.manager.service.AgvDetailService;
+import com.zy.acs.manager.manager.service.AgvService;
 import com.zy.acs.manager.manager.service.VehFaultRecService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
+
+import java.util.Date;
 
 /**
  * Created by vincent on 8/19/2024
@@ -20,15 +29,29 @@
     private VehFaultRecService vehFaultRecService;
     @Autowired
     private SnowflakeIdWorker snowflakeIdWorker;
+    @Autowired
+    private AgvService agvService;
+    @Autowired
+    private AgvDetailService agvDetailService;
 
     @Async
-    public void execute(VehicleFaultDto dto) {
+    public void execute(VehicleFaultDto<AGV_04_UP> dto) {
         try {
+            String vehicle = dto.getVehicle();
+            AGV_04_UP agv_04_up = dto.getT();
+            Date errorTime = new Date(dto.getTimestamp());
+
+            Agv agv = agvService.selectByUuid(vehicle);
 
             VehFaultRec vehFaultRec = new VehFaultRec();
             vehFaultRec.setUuid(String.valueOf(snowflakeIdWorker.nextId()).substring(3));
-//            vehFaultRec.setFaultHex();
-
+            vehFaultRec.setAgvId(agv.getId());
+            vehFaultRec.setFaultNo(String.valueOf(agv_04_up.getFaultId()));
+            vehFaultRec.setFaultHex(agv_04_up.getHexFaultId());
+            vehFaultRec.setFaultLev(agv_04_up.getFaultLevel());
+            vehFaultRec.setFaultData(GsonUtils.toJson(Cools.add("data1", agv_04_up.getData1()).add("data2", agv_04_up.getData2())));
+            vehFaultRec.setHappenTime(errorTime);
+            vehFaultRec.setProtocol(RadixTools.bytesToHexStr(agv_04_up.writeToBytes()));
 
             if (!vehFaultRecService.save(vehFaultRec)) {
                 log.error("{}鍙疯溅杈嗘晠闅滐紒璁板綍鏁呴殰淇℃伅澶辫触......", dto.getVehicle());
@@ -39,4 +62,13 @@
         }
     }
 
+    public static void main(String[] args) {
+        short ss = 8193; // 2001
+        byte[] bytes = RadixTools.shortToByte(ss);
+//        byte[] reverse = Utils.reverse(bytes);
+        System.out.println(RadixTools.bytesToHexStr(bytes));
+
+
+    }
+
 }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/AgvDetail.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/AgvDetail.java
index 57ec38b..dafe940 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/AgvDetail.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/AgvDetail.java
@@ -174,10 +174,16 @@
     private String backpack;
 
     /**
-     * 瀵嗙爜
+     * 鏁呴殰淇℃伅
      */
-    @ApiModelProperty(value= "瀵嗙爜")
-    private String password;
+    @ApiModelProperty(value= "鏁呴殰淇℃伅")
+    private String error;
+
+    /**
+     * 鏁呴殰鏃堕棿
+     */
+    @ApiModelProperty(value= "鏁呴殰鏃堕棿")
+    private Date errorTime;
 
     /**
      * 鐘舵��

--
Gitblit v1.9.1