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