From c42a7c76e24940db9e81307dc67104d9068c3119 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期二, 07 四月 2026 15:04:21 +0800
Subject: [PATCH] 1
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ChargeService.java | 12 +-
/dev/null | 26 -----
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java | 11 -
zy-acs-common/src/main/java/com/zy/acs/common/constant/RedisConstant.java | 4
zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MaintainScheduler.java | 58 ++++++++++-
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/FuncSta.java | 6 +
zy-acs-charge/src/main/java/com/zy/acs/charge/ChargeCoreService.java | 59 ++++++++++-
zy-acs-charge/src/main/java/com/zy/acs/charge/impl/AiPowerChargeServiceImpl.java | 88 ++++++++++-------
zy-acs-manager/pom.xml | 6 +
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/FuncStaStateType.java | 1
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java | 4
11 files changed, 183 insertions(+), 92 deletions(-)
diff --git a/zy-acs-charge/src/main/java/com/zy/acs/charge/ChargeCoreService.java b/zy-acs-charge/src/main/java/com/zy/acs/charge/ChargeCoreService.java
index bd7701e..bf473af 100644
--- a/zy-acs-charge/src/main/java/com/zy/acs/charge/ChargeCoreService.java
+++ b/zy-acs-charge/src/main/java/com/zy/acs/charge/ChargeCoreService.java
@@ -1,6 +1,6 @@
package com.zy.acs.charge;
-import com.github.xingshuangs.iot.protocol.modbus.service.ModbusTcp;
+import com.github.xingshuangs.iot.protocol.modbus.service.ModbusRtuOverTcp;
import com.zy.acs.charge.model.ChargerStatus;
/**
@@ -8,20 +8,63 @@
*/
public interface ChargeCoreService {
+ /**
+ * 璋冨害寮�鍚厖鐢�
+ *
+ * @param client
+ * @return
+ */
+ boolean startCharging(ModbusRtuOverTcp client);
- boolean startCharging(ModbusTcp modbusTcp) ;
+ /**
+ * 璋冨害鍋滄鍏呯數
+ *
+ * @param client
+ * @return
+ */
+ boolean stopCharging(ModbusRtuOverTcp client);
- boolean stopCharging(ModbusTcp modbusTcp) ;
-
- ChargerStatus getStatus(ModbusTcp modbusTcp) ;
+ /**
+ * 鍦ㄧ嚎姝g户鐢靛櫒鐘舵��(鍓嶈繘鍒颁綅)
+ *
+ * @param client
+ * @return
+ */
+ boolean checkForwardRelayOnline(ModbusRtuOverTcp client);
+ /**
+ * 绂荤嚎姝g户鐢靛櫒鐘舵��(鍚庨��鍒颁綅)
+ *
+ * @param client
+ * @return
+ */
+ boolean checkBackwardRelayOffline(ModbusRtuOverTcp client);
- boolean clearFault(ModbusTcp modbusTcp) ;
+ /**
+ * 鑾峰彇鍏呯數鏈哄厖鐢电數鍘�
+ *
+ * @param client
+ * @return
+ */
+ double getVoltage(ModbusRtuOverTcp client);
- boolean finishRetract(ModbusTcp modbusTcp) ;
+ /**
+ * 鑾峰彇鍏呯數鏈哄厖鐢电數娴�
+ *
+ * @param client
+ * @return
+ */
+ double getCurrent(ModbusRtuOverTcp client);
- boolean restoreStandby(ModbusTcp modbusTcp) ;
+ ChargerStatus getStatus(ModbusRtuOverTcp client);
+
+
+ boolean clearFault(ModbusRtuOverTcp client);
+
+ boolean finishRetract(ModbusRtuOverTcp client);
+
+ boolean restoreStandby(ModbusRtuOverTcp client);
}
diff --git a/zy-acs-charge/src/main/java/com/zy/acs/charge/impl/AiPowerChargeServiceImpl.java b/zy-acs-charge/src/main/java/com/zy/acs/charge/impl/AiPowerChargeServiceImpl.java
index 1dfa120..7c6c445 100644
--- a/zy-acs-charge/src/main/java/com/zy/acs/charge/impl/AiPowerChargeServiceImpl.java
+++ b/zy-acs-charge/src/main/java/com/zy/acs/charge/impl/AiPowerChargeServiceImpl.java
@@ -1,17 +1,15 @@
package com.zy.acs.charge.impl;
-import com.github.xingshuangs.iot.protocol.modbus.service.ModbusTcp;
+import com.github.xingshuangs.iot.protocol.modbus.service.ModbusRtuOverTcp;
import com.zy.acs.charge.ChargeCoreService;
import com.zy.acs.charge.constant.AiPowerChargerCoilEnum;
import com.zy.acs.charge.constant.AiPowerChargerRegisterEnum;
import com.zy.acs.charge.model.ChargerStatus;
import com.zy.acs.common.utils.ByteUtils;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
-import javax.annotation.PostConstruct;
import java.util.List;
/**
@@ -22,30 +20,46 @@
@Slf4j
public class AiPowerChargeServiceImpl implements ChargeCoreService {
-
-
-
-
@Override
- public boolean startCharging(ModbusTcp modbusTcp) {
+ public boolean startCharging(ModbusRtuOverTcp client) {
// AGV杞︽姤鍛婂埌浣� -> true
- modbusTcp.writeCoil(AiPowerChargerCoilEnum.AGV_REPORTED_IN_POSITION.getAddr(), true);
+ client.writeCoil(AiPowerChargerCoilEnum.AGV_REPORTED_IN_POSITION.getAddr(), true);
return true;
}
@Override
- public boolean stopCharging(ModbusTcp modbusTcp) {
- modbusTcp.writeCoil(AiPowerChargerCoilEnum.AGV_REPORTED_IN_POSITION.getAddr(), false);
+ public boolean stopCharging(ModbusRtuOverTcp client) {
+ client.writeCoil(AiPowerChargerCoilEnum.AGV_REPORTED_IN_POSITION.getAddr(), false);
return true;
}
@Override
- public ChargerStatus getStatus(ModbusTcp modbusTcp) {
+ public boolean checkForwardRelayOnline(ModbusRtuOverTcp client) {
+ return client.readBoolean(AiPowerChargerCoilEnum.FORWARD_RELAY_ONLINE.getAddr(), 1);
+ }
+
+ @Override
+ public boolean checkBackwardRelayOffline(ModbusRtuOverTcp client) {
+ return client.readBoolean(AiPowerChargerCoilEnum.BACKWARD_RELAY_OFFLINE.getAddr(), 1);
+ }
+
+ @Override
+ public double getVoltage(ModbusRtuOverTcp client) {
+ return client.readInt16(AiPowerChargerRegisterEnum.CHARGE_VOLTAGE.getAddr(), 1) * AiPowerChargerRegisterEnum.CHARGE_CURRENT.getRaw();
+ }
+
+ @Override
+ public double getCurrent(ModbusRtuOverTcp client) {
+ return client.readInt16(AiPowerChargerRegisterEnum.CHARGE_CURRENT.getAddr(), 1) * AiPowerChargerRegisterEnum.CHARGE_CURRENT.getRaw();
+ }
+
+ @Override
+ public ChargerStatus getStatus(ModbusRtuOverTcp client) {
ChargerStatus status = new ChargerStatus();
// ---------- 鎵归噺璇诲彇绾垮湀锛堝湴鍧�100~115鍏�16涓級 ----------
- List<Boolean> coils = modbusTcp.readCoil(100, 16);
+ List<Boolean> coils = client.readCoil(100, 16);
status.setWorking(coils.get(0)); // 鍦板潃100
status.setOverheat(coils.get(0)); // 101
status.setFault(coils.get(0)); // 102
@@ -64,24 +78,24 @@
status.setCommBmsSuccess(!coils.get(15)); // 115
// ---------- 鎵归噺璇诲彇淇濇寔瀵勫瓨鍣紙鍦板潃100~116鍏�17涓級 ----------
- byte[] bytes = modbusTcp.readHoldRegister(100, 16);
- status.setVoltage(ByteUtils.getInt(bytes,0) * AiPowerChargerRegisterEnum.CHARGE_VOLTAGE.getRaw());
- status.setCurrent(ByteUtils.getInt(bytes,0) * AiPowerChargerRegisterEnum.CHARGE_CURRENT.getRaw());
- status.setChargingTime(ByteUtils.getInt(bytes,0));
- status.setCapacity(ByteUtils.getInt(bytes,0) * AiPowerChargerRegisterEnum.CHARGE_CAPACITY.getRaw());
- status.setEnergy(ByteUtils.getInt(bytes,0) * AiPowerChargerRegisterEnum.CHARGE_ENERGY.getRaw());
- status.setCellMaxVoltage(ByteUtils.getInt(bytes,0));
- status.setCellMinVoltage(ByteUtils.getInt(bytes,0));
- status.setPackVoltage(ByteUtils.getInt(bytes,0) * AiPowerChargerRegisterEnum.BMS_PACK_VOLTAGE.getRaw());
- status.setVoltageDemand(ByteUtils.getInt(bytes,0) * AiPowerChargerRegisterEnum.BMS_VOLTAGE_DEMAND.getRaw());
- status.setCurrentDemand(ByteUtils.getInt(bytes,0) * AiPowerChargerRegisterEnum.BMS_CURRENT_DEMAND.getRaw());
- status.setTemperature(ByteUtils.getInt(bytes,0));
- status.setSoc(ByteUtils.getInt(bytes,0) * AiPowerChargerRegisterEnum.BMS_SOC.getRaw());
- status.setEndFlag(ByteUtils.getInt(bytes,0));
- status.setChargerId(ByteUtils.getInt(bytes,0));
- status.setFaultCode(ByteUtils.getInt(bytes,0));
- status.setChargeMode(ByteUtils.getInt(bytes,0));
- status.setScheduleFlag(ByteUtils.getInt(bytes,0));
+ byte[] bytes = client.readHoldRegister(100, 16);
+ status.setVoltage(ByteUtils.getInt(bytes, 0) * AiPowerChargerRegisterEnum.CHARGE_VOLTAGE.getRaw());
+ status.setCurrent(ByteUtils.getInt(bytes, 0) * AiPowerChargerRegisterEnum.CHARGE_CURRENT.getRaw());
+ status.setChargingTime(ByteUtils.getInt(bytes, 0));
+ status.setCapacity(ByteUtils.getInt(bytes, 0) * AiPowerChargerRegisterEnum.CHARGE_CAPACITY.getRaw());
+ status.setEnergy(ByteUtils.getInt(bytes, 0) * AiPowerChargerRegisterEnum.CHARGE_ENERGY.getRaw());
+ status.setCellMaxVoltage(ByteUtils.getInt(bytes, 0));
+ status.setCellMinVoltage(ByteUtils.getInt(bytes, 0));
+ status.setPackVoltage(ByteUtils.getInt(bytes, 0) * AiPowerChargerRegisterEnum.BMS_PACK_VOLTAGE.getRaw());
+ status.setVoltageDemand(ByteUtils.getInt(bytes, 0) * AiPowerChargerRegisterEnum.BMS_VOLTAGE_DEMAND.getRaw());
+ status.setCurrentDemand(ByteUtils.getInt(bytes, 0) * AiPowerChargerRegisterEnum.BMS_CURRENT_DEMAND.getRaw());
+ status.setTemperature(ByteUtils.getInt(bytes, 0));
+ status.setSoc(ByteUtils.getInt(bytes, 0) * AiPowerChargerRegisterEnum.BMS_SOC.getRaw());
+ status.setEndFlag(ByteUtils.getInt(bytes, 0));
+ status.setChargerId(ByteUtils.getInt(bytes, 0));
+ status.setFaultCode(ByteUtils.getInt(bytes, 0));
+ status.setChargeMode(ByteUtils.getInt(bytes, 0));
+ status.setScheduleFlag(ByteUtils.getInt(bytes, 0));
return status;
}
@@ -89,22 +103,22 @@
// 娓呴櫎鏁呴殰
@Override
- public boolean clearFault(ModbusTcp modbusTcp) {
- modbusTcp.writeInt16(AiPowerChargerRegisterEnum.SCHEDULE_FLAG.getAddr(), (short) 1);
+ public boolean clearFault(ModbusRtuOverTcp client) {
+ client.writeInt16(AiPowerChargerRegisterEnum.SCHEDULE_FLAG.getAddr(), (short) 1);
return true;
}
// 瀹屾垚閫�鍥炲懡浠�
@Override
- public boolean finishRetract(ModbusTcp modbusTcp) {
- modbusTcp.writeInt16(AiPowerChargerRegisterEnum.SCHEDULE_FLAG.getAddr(), (short) 2);
+ public boolean finishRetract(ModbusRtuOverTcp client) {
+ client.writeInt16(AiPowerChargerRegisterEnum.SCHEDULE_FLAG.getAddr(), (short) 2);
return true;
}
// 鎭㈠寰呮満鐘舵��
@Override
- public boolean restoreStandby(ModbusTcp modbusTcp) {
- modbusTcp.writeInt16(AiPowerChargerRegisterEnum.SCHEDULE_FLAG.getAddr(), (short) 3);
+ public boolean restoreStandby(ModbusRtuOverTcp client) {
+ client.writeInt16(AiPowerChargerRegisterEnum.SCHEDULE_FLAG.getAddr(), (short) 3);
return true;
}
}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/constant/RedisConstant.java b/zy-acs-common/src/main/java/com/zy/acs/common/constant/RedisConstant.java
index 84d4f7c..343b060 100644
--- a/zy-acs-common/src/main/java/com/zy/acs/common/constant/RedisConstant.java
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/constant/RedisConstant.java
@@ -54,7 +54,9 @@
public static final String MAP_LANE_DATA = "MAP_LANE_DATA";
public static final String MAP_AREA_DATA_FLAG = "MAP_AREA_DATA_FLAG";
-
+ /**
+ * 鍦╮edis涓瓨MAP锛寁alue琛ㄧず鐘舵�侊細1灏忚溅鍒颁綅锛�2涓嬪彂鍏呯數鍛戒护锛�3鍚庨��鍒颁綅娑堝け锛�4鍓嶈繘鍒颁綅鍑虹幇锛�5鐢垫祦鐢靛帇>0,6
+ */
public static final String AGV_CHARGE_FLAG = "AGV_CHARGE_FLAG";
}
diff --git a/zy-acs-flow/src/page/funcTask/FuncTaskCreate.jsx b/zy-acs-flow/src/page/funcTask/FuncTaskCreate.jsx
deleted file mode 100644
index 6e6955d..0000000
--- a/zy-acs-flow/src/page/funcTask/FuncTaskCreate.jsx
+++ /dev/null
@@ -1,144 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
- CreateBase,
- useTranslate,
- TextInput,
- NumberInput,
- BooleanInput,
- DateInput,
- SaveButton,
- SelectInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- Toolbar,
- required,
- useDataProvider,
- useNotify,
- Form,
- useCreateController,
-} from 'react-admin';
-import {
- Dialog,
- DialogActions,
- DialogContent,
- DialogTitle,
- Stack,
- Grid,
- Box,
-} from '@mui/material';
-import DialogCloseButton from "../components/DialogCloseButton";
-import StatusSelectInput from "../components/StatusSelectInput";
-import MemoInput from "../components/MemoInput";
-
-const FuncTaskCreate = (props) => {
- const { open, setOpen } = props;
-
- const translate = useTranslate();
- const notify = useNotify();
-
- const handleClose = (event, reason) => {
- if (reason !== "backdropClick") {
- setOpen(false);
- }
- };
-
- const handleSuccess = async (data) => {
- setOpen(false);
- notify('common.response.success');
- };
-
- const handleError = async (error) => {
- notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } });
- };
-
- return (
- <>
- <CreateBase
- record={{}}
- transform={(data) => {
- return data;
- }}
- mutationOptions={{ onSuccess: handleSuccess, onError: handleError }}
- >
- <Dialog
- open={open}
- onClose={handleClose}
- aria-labelledby="form-dialog-title"
- fullWidth
- disableRestoreFocus
- maxWidth="md" // 'xs' | 'sm' | 'md' | 'lg' | 'xl'
- >
- <Form>
- <DialogTitle id="form-dialog-title" sx={{
- position: 'sticky',
- top: 0,
- backgroundColor: 'background.paper',
- zIndex: 1000
- }}
- >
- {translate('create.title')}
- <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}>
- <DialogCloseButton onClose={handleClose} />
- </Box>
- </DialogTitle>
- <DialogContent>
- <Grid container rowSpacing={2} columnSpacing={2}>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.funcTask.uuid"
- source="uuid"
- parse={v => v}
- autoFocus
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.funcTask.taskId"
- source="taskId"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.funcTask.funcTaskSts"
- source="funcTaskSts"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <NumberInput
- label="table.field.funcTask.agvId"
- source="agvId"
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <NumberInput
- label="table.field.funcTask.funcStaId"
- source="funcStaId"
- />
- </Grid>
-
- <Grid item xs={6} display="flex" gap={1}>
- <StatusSelectInput />
- </Grid>
- <Grid item xs={12} display="flex" gap={1}>
- <Stack direction="column" spacing={1} width={'100%'}>
- <MemoInput />
- </Stack>
- </Grid>
- </Grid>
- </DialogContent>
- <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
- <Toolbar sx={{ width: '100%', justifyContent: 'space-between' }} >
- <SaveButton />
- </Toolbar>
- </DialogActions>
- </Form>
- </Dialog>
- </CreateBase>
- </>
- )
-}
-
-export default FuncTaskCreate;
diff --git a/zy-acs-flow/src/page/funcTask/FuncTaskEdit.jsx b/zy-acs-flow/src/page/funcTask/FuncTaskEdit.jsx
deleted file mode 100644
index 38797ef..0000000
--- a/zy-acs-flow/src/page/funcTask/FuncTaskEdit.jsx
+++ /dev/null
@@ -1,116 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
- Edit,
- SimpleForm,
- FormDataConsumer,
- useTranslate,
- TextInput,
- NumberInput,
- BooleanInput,
- DateInput,
- SelectInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- SaveButton,
- Toolbar,
- Labeled,
- NumberField,
- required,
- useRecordContext,
- DeleteButton,
-} from 'react-admin';
-import { useWatch, useFormContext } from "react-hook-form";
-import { Stack, Grid, Box, Typography } from '@mui/material';
-import * as Common from '@/utils/common';
-import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
-import EditBaseAside from "../components/EditBaseAside";
-import CustomerTopToolBar from "../components/EditTopToolBar";
-import MemoInput from "../components/MemoInput";
-import StatusSelectInput from "../components/StatusSelectInput";
-
-const FormToolbar = () => {
- const { getValues } = useFormContext();
-
- return (
- <Toolbar sx={{ justifyContent: 'space-between' }}>
- <SaveButton />
- <DeleteButton mutationMode="optimistic" />
- </Toolbar>
- )
-}
-
-const FuncTaskEdit = () => {
- const translate = useTranslate();
-
- return (
- <Edit
- redirect="list"
- mutationMode={EDIT_MODE}
- actions={<CustomerTopToolBar />}
- aside={<EditBaseAside />}
- >
- <SimpleForm
- shouldUnregister
- warnWhenUnsavedChanges
- toolbar={<FormToolbar />}
- mode="onTouched"
- defaultValues={{}}
- // validate={(values) => { }}
- >
- <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}>
- <Grid item xs={12} md={8}>
- <Typography variant="h6" gutterBottom>
- {translate('common.edit.title.main')}
- </Typography>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.funcTask.uuid"
- source="uuid"
- parse={v => v}
- autoFocus
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.funcTask.taskId"
- source="taskId"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.funcTask.funcTaskSts"
- source="funcTaskSts"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.funcTask.agvId"
- source="agvId"
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.funcTask.funcStaId"
- source="funcStaId"
- />
- </Stack>
-
- </Grid>
- <Grid item xs={12} md={4}>
- <Typography variant="h6" gutterBottom>
- {translate('common.edit.title.common')}
- </Typography>
- <StatusSelectInput />
- <Box mt="2em" />
- <MemoInput />
- </Grid>
- </Grid>
- </SimpleForm>
- </Edit >
- )
-}
-
-export default FuncTaskEdit;
diff --git a/zy-acs-flow/src/page/funcTask/FuncTaskList.jsx b/zy-acs-flow/src/page/funcTask/FuncTaskList.jsx
deleted file mode 100644
index 1fc80b9..0000000
--- a/zy-acs-flow/src/page/funcTask/FuncTaskList.jsx
+++ /dev/null
@@ -1,160 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
-import { useNavigate } from 'react-router-dom';
-import {
- List,
- DatagridConfigurable,
- SearchInput,
- TopToolbar,
- SelectColumnsButton,
- EditButton,
- FilterButton,
- CreateButton,
- ExportButton,
- BulkDeleteButton,
- WrapperField,
- useRecordContext,
- useTranslate,
- useNotify,
- useListContext,
- FunctionField,
- TextField,
- NumberField,
- DateField,
- BooleanField,
- ReferenceField,
- TextInput,
- DateTimeInput,
- DateInput,
- SelectInput,
- NumberInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- DeleteButton,
-} from 'react-admin';
-import { Box, Typography, Card, Stack } from '@mui/material';
-import { styled } from '@mui/material/styles';
-import FuncTaskCreate from "./FuncTaskCreate";
-import FuncTaskPanel from "./FuncTaskPanel";
-import EmptyData from "../components/EmptyData";
-import MyCreateButton from "../components/MyCreateButton";
-import MyExportButton from '../components/MyExportButton';
-import PageDrawer from "../components/PageDrawer";
-import MyField from "../components/MyField";
-import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
-import * as Common from '@/utils/common';
-
-const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
- '& .css-1vooibu-MuiSvgIcon-root': {
- height: '.9em'
- },
- '& .RaDatagrid-row': {
- cursor: 'auto'
- },
- '& .column-name': {
- },
- '& .opt': {
- width: 200
- },
-}));
-
-const filters = [
- <SearchInput source="condition" alwaysOn />,
- <DateInput label='common.time.after' source="timeStart" alwaysOn />,
- <DateInput label='common.time.before' source="timeEnd" alwaysOn />,
-
- <TextInput source="uuid" label="table.field.funcTask.uuid" />,
- <TextInput source="taskId" label="table.field.funcTask.taskId" />,
- <TextInput source="funcTaskSts" label="table.field.funcTask.funcTaskSts" />,
- <NumberInput source="agvId" label="table.field.funcTask.agvId" />,
- <NumberInput source="funcStaId" label="table.field.funcTask.funcStaId" />,
-
- <TextInput label="common.field.memo" source="memo" />,
- <SelectInput
- label="common.field.status"
- source="status"
- choices={[
- { id: '1', name: 'common.enums.statusTrue' },
- { id: '0', name: 'common.enums.statusFalse' },
- ]}
- resettable
- />,
-]
-
-const FuncTaskList = () => {
- const translate = useTranslate();
-
- const [createDialog, setCreateDialog] = useState(false);
- const [drawerVal, setDrawerVal] = useState(false);
-
- return (
- <Box display="flex">
- <List
- sx={{
- flexGrow: 1,
- transition: (theme) =>
- theme.transitions.create(['all'], {
- duration: theme.transitions.duration.enteringScreen,
- }),
- marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
- }}
- title={"menu.funcTask"}
- empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
- filters={filters}
- sort={{ field: "create_time", order: "desc" }}
- actions={(
- <TopToolbar>
- <FilterButton />
- <MyCreateButton onClick={() => { setCreateDialog(true) }} />
- <SelectColumnsButton preferenceKey='funcTask' />
- <MyExportButton />
- </TopToolbar>
- )}
- perPage={DEFAULT_PAGE_SIZE}
- >
- <StyledDatagrid
- preferenceKey='funcTask'
- bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
- rowClick={(id, resource, record) => false}
- expand={() => <FuncTaskPanel />}
- expandSingle={true}
- omit={['id', 'createTime', 'createBy', 'memo']}
- >
- <NumberField source="id" />
- <TextField source="uuid" label="table.field.funcTask.uuid" />
- <TextField source="taskId" label="table.field.funcTask.taskId" />
- <TextField source="funcTaskSts" label="table.field.funcTask.funcTaskSts" />
- <NumberField source="agvId" label="table.field.funcTask.agvId" />
- <NumberField source="funcStaId" label="table.field.funcTask.funcStaId" />
-
- <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} />
- <TextField source="memo" label="common.field.memo" sortable={false} />
- <WrapperField cellClassName="opt" label="common.field.opt">
- <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
- <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
- </WrapperField>
- </StyledDatagrid>
- </List>
- <FuncTaskCreate
- open={createDialog}
- setOpen={setCreateDialog}
- />
- <PageDrawer
- title='FuncTask Detail'
- drawerVal={drawerVal}
- setDrawerVal={setDrawerVal}
- >
- </PageDrawer>
- </Box>
- )
-}
-
-export default FuncTaskList;
diff --git a/zy-acs-flow/src/page/funcTask/FuncTaskPanel.jsx b/zy-acs-flow/src/page/funcTask/FuncTaskPanel.jsx
deleted file mode 100644
index bfce6b9..0000000
--- a/zy-acs-flow/src/page/funcTask/FuncTaskPanel.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import { Box, Card, CardContent, Grid, Typography, Tooltip } from '@mui/material';
-import {
- useTranslate,
- useRecordContext,
-} from 'react-admin';
-import PanelTypography from "../components/PanelTypography";
-import * as Common from '@/utils/common'
-
-const FuncTaskPanel = () => {
- const record = useRecordContext();
- if (!record) return null;
- const translate = useTranslate();
- return (
- <>
- <Card sx={{ width: { xs: 300, sm: 500, md: 600, lg: 800 }, margin: 'auto' }}>
- <CardContent>
- <Grid container spacing={2}>
- <Grid item xs={12} sx={{ display: 'flex', justifyContent: 'space-between' }}>
- <Typography variant="h6" gutterBottom align="left" sx={{
- maxWidth: { xs: '100px', sm: '180px', md: '260px', lg: '360px' },
- whiteSpace: 'nowrap',
- overflow: 'hidden',
- textOverflow: 'ellipsis',
- }}>
- {Common.camelToPascalWithSpaces(translate('table.field.funcTask.id'))}: {record.id}
- </Typography>
- {/* inherit, primary, secondary, textPrimary, textSecondary, error */}
- <Typography variant="h6" gutterBottom align="right" >
- ID: {record.id}
- </Typography>
- </Grid>
- </Grid>
- <Grid container spacing={2}>
- <Grid item xs={12} container alignContent="flex-end">
- <Typography variant="caption" color="textSecondary" sx={{ wordWrap: 'break-word', wordBreak: 'break-all' }}>
- {Common.camelToPascalWithSpaces(translate('common.field.memo'))}:{record.memo}
- </Typography>
- </Grid>
- </Grid>
- <Box height={20}> </Box>
- <Grid container spacing={2}>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.funcTask.uuid"
- property={record.uuid}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.funcTask.taskId"
- property={record.taskId}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.funcTask.funcTaskSts"
- property={record.funcTaskSts}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.funcTask.agvId"
- property={record.agvId}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.funcTask.funcStaId"
- property={record.funcStaId}
- />
- </Grid>
-
- </Grid>
- </CardContent>
- </Card >
- </>
- );
-};
-
-export default FuncTaskPanel;
diff --git a/zy-acs-flow/src/page/funcTask/index.jsx b/zy-acs-flow/src/page/funcTask/index.jsx
deleted file mode 100644
index 9ba88ea..0000000
--- a/zy-acs-flow/src/page/funcTask/index.jsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
- ListGuesser,
- EditGuesser,
- ShowGuesser,
-} from "react-admin";
-
-import FuncTaskList from "./FuncTaskList";
-import FuncTaskEdit from "./FuncTaskEdit";
-
-export default {
- list: FuncTaskList,
- edit: FuncTaskEdit,
- show: ShowGuesser,
- recordRepresentation: (record) => {
- return `${record.id}`
- }
-};
diff --git a/zy-acs-manager/pom.xml b/zy-acs-manager/pom.xml
index 53469b6..0c57d09 100644
--- a/zy-acs-manager/pom.xml
+++ b/zy-acs-manager/pom.xml
@@ -171,6 +171,12 @@
<artifactId>iot-communication</artifactId>
<version>1.5.6</version>
</dependency>
+ <dependency>
+ <groupId>com.zy</groupId>
+ <artifactId>acs-charge</artifactId>
+ <version>1.0.0</version>
+ <scope>compile</scope>
+ </dependency>
</dependencies>
<build>
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MaintainScheduler.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MaintainScheduler.java
index e817f55..e8e0107 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MaintainScheduler.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MaintainScheduler.java
@@ -1,6 +1,10 @@
package com.zy.acs.manager.core.scheduler;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.github.xingshuangs.iot.protocol.modbus.service.ModbusRtuOverTcp;
+import com.github.xingshuangs.iot.protocol.modbus.service.ModbusTcp;
+import com.zy.acs.charge.ChargeCoreService;
+import com.zy.acs.common.constant.RedisConstant;
import com.zy.acs.common.enums.AgvStatusType;
import com.zy.acs.common.utils.RedisSupport;
import com.zy.acs.framework.common.Cools;
@@ -8,6 +12,7 @@
import com.zy.acs.manager.common.config.UplinkProperties;
import com.zy.acs.manager.core.integrate.wms.TaskReportService;
import com.zy.acs.manager.core.integrate.wms.FaultReportService;
+import com.zy.acs.manager.core.service.ChargeService;
import com.zy.acs.manager.core.service.MainLockWrapService;
import com.zy.acs.manager.manager.entity.*;
import com.zy.acs.manager.manager.enums.*;
@@ -23,6 +28,7 @@
import java.util.Date;
import java.util.List;
import java.util.Optional;
+import java.util.Set;
/**
* judge whether agv go to funcSta which be charging or standby
@@ -59,7 +65,9 @@
@Autowired
private FaultReportService faultReportService;
@Autowired
- private FuncTaskService funcTaskService;
+ private ChargeService chargeService;
+ @Autowired
+ private ChargeCoreService chargeCoreService;
@Scheduled(cron = "0/5 * * * * ? ")
@@ -119,6 +127,10 @@
// if (agvDetailService.isPowerLoss(agv, agvDetail, agvModel)) {
// continue;
// }
+ // 瀛樺湪鍏呯數鏍囪锛岃烦杩�
+ if (redis.getMap(RedisConstant.AGV_CHARGE_FLAG, agv.getUuid()) != null) {
+ continue;
+ }
// is charging ?
if (agvDetail.getAgvStatus().equals(AgvStatusType.CHARGE)) {
if (agvDetail.getSoc() < agvModel.getQuaBattery()) {
@@ -221,12 +233,46 @@
}
+ /**
+ * 璋冨害瀵规帴鍏呯數妗�
+ */
@Scheduled(cron = "0/5 * * * * ? ")
- private synchronized void workFuncTask() {
- List<FuncTask> funcTaskList = funcTaskService.list(new LambdaQueryWrapper<FuncTask>().eq(FuncTask::getFuncTaskSts, TaskStsType.INIT.toString()));
- for (FuncTask funcTask : funcTaskList) {
- // 璋冨害灏忚溅鍘诲鎺ュ厖鐢垫々
-
+ private synchronized void startCharge() {
+ Set<String> mapKeys = redis.getMapKeys(RedisConstant.AGV_CHARGE_FLAG);
+ for (String key : mapKeys) {
+ Integer status = redis.getMap(RedisConstant.AGV_CHARGE_FLAG, key);
+ AgvDetail agvDetail = agvDetailService.selectByAgvNo(key);
+ FuncSta funcSta = funcStaService.getByCodeAndType(agvDetail.getCode(), FuncStaType.CHARGE.toString());
+ ModbusRtuOverTcp modbusTcp = chargeService.get(funcSta.getUuid());
+ if (status != null && status == 1) {
+ // 鍚庨��淇″彿娑堝け锛岃鏄庨┈杈炬鍦ㄥ墠杩�
+ if (chargeCoreService.checkBackwardRelayOffline(modbusTcp)) {
+ chargeCoreService.startCharging(modbusTcp);
+ }
+ while (chargeCoreService.checkForwardRelayOnline(modbusTcp)) {
+ double current = chargeCoreService.getCurrent(modbusTcp);
+ double voltage = chargeCoreService.getVoltage(modbusTcp);
+ if (current > 0 && voltage > 0) {
+ redis.setMap(RedisConstant.AGV_CHARGE_FLAG, key, 2);
+ log.info("charge complete");
+ }else {
+ log.info("read charge current and voltage: {},{}", current, voltage);
+ }
+ }
+ } else if (status != null && status == 2) {
+ // 鍚庨��淇″彿娑堝け锛岃鏄庨┈杈炬鍦ㄥ墠杩�
+ if (chargeCoreService.checkForwardRelayOnline(modbusTcp)) {
+ chargeCoreService.startCharging(modbusTcp);
+ }
+ while (chargeCoreService.checkBackwardRelayOffline(modbusTcp)) {
+ redis.deleteMap(RedisConstant.AGV_CHARGE_FLAG, key);
+ log.info("charge over");
+ }
+ }
}
}
+
+
+
+
}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ChargeService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ChargeService.java
index 52c1f6b..707c4f5 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ChargeService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ChargeService.java
@@ -1,6 +1,7 @@
package com.zy.acs.manager.core.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.github.xingshuangs.iot.protocol.modbus.service.ModbusRtuOverTcp;
import com.github.xingshuangs.iot.protocol.modbus.service.ModbusTcp;
import com.github.xingshuangs.iot.utils.HexUtil;
import com.zy.acs.framework.common.Cools;
@@ -25,7 +26,7 @@
@Autowired
private FuncStaService funcStaService;
- private final Map<String, ModbusTcp> CHARGE_CACHE = new ConcurrentHashMap<>();
+ private final Map<String, ModbusRtuOverTcp> CHARGE_CACHE = new ConcurrentHashMap<>();
@PostConstruct
@@ -42,7 +43,7 @@
public void add(FuncSta funcSta) {
- ModbusTcp modbusTcp = new ModbusTcp(funcSta.getIp(), funcSta.getPort());
+ ModbusRtuOverTcp modbusTcp = new ModbusRtuOverTcp(funcSta.getIp(), funcSta.getPort());
modbusTcp.setComCallback((tag, bytes) -> log.info("%s[%d] %s%n", tag, bytes.length, HexUtil.toHexString(bytes)));
CHARGE_CACHE.put(funcSta.getUuid(), modbusTcp);
}
@@ -51,14 +52,15 @@
CHARGE_CACHE.remove(chargePointId);
}
- public ModbusTcp get(String chargePointId) {
- ModbusTcp modbusTcp = CHARGE_CACHE.get(chargePointId);
+ public ModbusRtuOverTcp get(String chargePointId) {
+ ModbusRtuOverTcp modbusTcp = CHARGE_CACHE.get(chargePointId);
if (modbusTcp != null) {
return modbusTcp;
}
FuncSta funcSta = funcStaService.getOne(new LambdaQueryWrapper<FuncSta>().eq(FuncSta::getUuid, chargePointId));
- modbusTcp = new ModbusTcp(funcSta.getIp(), funcSta.getPort());
+ modbusTcp = new ModbusRtuOverTcp(funcSta.getIp(), funcSta.getPort());
modbusTcp.setComCallback((tag, bytes) -> log.info("%s[%d] %s%n", tag, bytes.length, HexUtil.toHexString(bytes)));
+ CHARGE_CACHE.put(chargePointId, modbusTcp);
return modbusTcp;
}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
index b871092..ad44410 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -98,8 +98,7 @@
private StaReserveService staReserveService;
@Autowired
private ConveyorStationService conveyorStationService;
- @Autowired
- private FuncTaskService funcTaskService;
+
@SuppressWarnings("all")
@Transactional
@@ -1990,13 +1989,7 @@
// 鍦ㄥ厖鐢典换鍔¤璧板埌缁堢偣锛屽悓鏃跺垽鏂厖鐢垫々鐨勭被鍨�
if (segment.getPosType().equals(TaskPosDto.PosType.TO_CHARGE)){
// 淇濆瓨涓�鏉℃暟鎹�
- FuncTask funcTask = new FuncTask();
- FuncSta destFuncSta = funcStaService.getByCodeAndType(task.getDestCode(), FuncStaType.CHARGE.toString());
- funcTask.setFuncStaId(destFuncSta.getId());
- funcTask.setAgvId(segment.getAgvId());
- funcTask.setTaskId(segment.getTaskId());
- funcTask.setFuncTaskSts(TaskStsType.INIT.val());
- funcTaskService.save(funcTask);
+ redis.setMap(RedisConstant.AGV_CHARGE_FLAG,segment.getAgvId$(),1);
}
task.setTaskSts(TaskStsType.COMPLETE.val());
task.setEndTime(now);
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/FuncTaskController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/FuncTaskController.java
deleted file mode 100644
index e809e96..0000000
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/FuncTaskController.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package com.zy.acs.manager.manager.controller;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.zy.acs.framework.common.Cools;
-import com.zy.acs.framework.common.R;
-import com.zy.acs.manager.common.utils.ExcelUtil;
-import com.zy.acs.manager.common.annotation.OperationLog;
-import com.zy.acs.manager.common.domain.BaseParam;
-import com.zy.acs.manager.common.domain.KeyValVo;
-import com.zy.acs.manager.common.domain.PageParam;
-import com.zy.acs.manager.manager.entity.FuncTask;
-import com.zy.acs.manager.manager.service.FuncTaskService;
-import com.zy.acs.manager.system.controller.BaseController;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletResponse;
-import java.util.*;
-
-@RestController
-@RequestMapping("/api")
-public class FuncTaskController extends BaseController {
-
- @Autowired
- private FuncTaskService funcTaskService;
-
- @PreAuthorize("hasAuthority('manager:funcTask:list')")
- @PostMapping("/funcTask/page")
- public R page(@RequestBody Map<String, Object> map) {
- BaseParam baseParam = buildParam(map, BaseParam.class);
- PageParam<FuncTask, BaseParam> pageParam = new PageParam<>(baseParam, FuncTask.class);
- return R.ok().add(funcTaskService.page(pageParam, pageParam.buildWrapper(true)));
- }
-
- @PreAuthorize("hasAuthority('manager:funcTask:list')")
- @PostMapping("/funcTask/list")
- public R list(@RequestBody Map<String, Object> map) {
- return R.ok().add(funcTaskService.list());
- }
-
- @PreAuthorize("hasAuthority('manager:funcTask:list')")
- @PostMapping({"/funcTask/many/{ids}", "/funcTasks/many/{ids}"})
- public R many(@PathVariable Long[] ids) {
- return R.ok().add(funcTaskService.listByIds(Arrays.asList(ids)));
- }
-
- @PreAuthorize("hasAuthority('manager:funcTask:list')")
- @GetMapping("/funcTask/{id}")
- public R get(@PathVariable("id") Long id) {
- return R.ok().add(funcTaskService.getById(id));
- }
-
- @PreAuthorize("hasAuthority('manager:funcTask:save')")
- @OperationLog("Create 鍔熻兘绔欑偣浠诲姟琛�")
- @PostMapping("/funcTask/save")
- public R save(@RequestBody FuncTask funcTask) {
- funcTask.setCreateBy(getLoginUserId());
- funcTask.setCreateTime(new Date());
- funcTask.setUpdateBy(getLoginUserId());
- funcTask.setUpdateTime(new Date());
- if (!funcTaskService.save(funcTask)) {
- return R.error("Save Fail");
- }
- return R.ok("Save Success").add(funcTask);
- }
-
- @PreAuthorize("hasAuthority('manager:funcTask:update')")
- @OperationLog("Update 鍔熻兘绔欑偣浠诲姟琛�")
- @PostMapping("/funcTask/update")
- public R update(@RequestBody FuncTask funcTask) {
- funcTask.setUpdateBy(getLoginUserId());
- funcTask.setUpdateTime(new Date());
- if (!funcTaskService.updateById(funcTask)) {
- return R.error("Update Fail");
- }
- return R.ok("Update Success").add(funcTask);
- }
-
- @PreAuthorize("hasAuthority('manager:funcTask:remove')")
- @OperationLog("Delete 鍔熻兘绔欑偣浠诲姟琛�")
- @PostMapping("/funcTask/remove/{ids}")
- public R remove(@PathVariable Long[] ids) {
- if (!funcTaskService.removeByIds(Arrays.asList(ids))) {
- return R.error("Delete Fail");
- }
- return R.ok("Delete Success").add(ids);
- }
-
- @PreAuthorize("hasAuthority('manager:funcTask:list')")
- @PostMapping("/funcTask/query")
- public R query(@RequestParam(required = false) String condition) {
- List<KeyValVo> vos = new ArrayList<>();
- LambdaQueryWrapper<FuncTask> wrapper = new LambdaQueryWrapper<>();
- if (!Cools.isEmpty(condition)) {
- wrapper.like(FuncTask::getId, condition);
- }
- funcTaskService.page(new Page<>(1, 30), wrapper).getRecords().forEach(
- item -> vos.add(new KeyValVo(item.getId(), item.getId()))
- );
- return R.ok().add(vos);
- }
-
- @PreAuthorize("hasAuthority('manager:funcTask:list')")
- @PostMapping("/funcTask/export")
- public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
- ExcelUtil.build(ExcelUtil.create(funcTaskService.list(), FuncTask.class), response);
- }
-
-}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/FuncSta.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/FuncSta.java
index 19ebdde..40e96ed 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/FuncSta.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/FuncSta.java
@@ -86,6 +86,12 @@
private Integer port;
/**
+ * 鏁呴殰淇℃伅
+ */
+ @ApiModelProperty(value= "鏁呴殰淇℃伅")
+ private String error;
+
+ /**
* 鐜扮姸
*/
@ApiModelProperty(value= "鐜扮姸")
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/FuncTask.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/FuncTask.java
deleted file mode 100644
index 6062037..0000000
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/FuncTask.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.zy.acs.manager.manager.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.util.Date;
-
-@Data
-@TableName("man_func_task")
-public class FuncTask {
-
- @ApiModelProperty(value= "ID")
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
-
- @ApiModelProperty(value= "缂栧彿")
- private String uuid;
-
- @ApiModelProperty(value= "浠诲姟id")
- private Long taskId;
-
-
- @ApiModelProperty(value= "浠诲姟杩涘害")
- private Long funcTaskSts;
-
- //@ApiModelProperty(value= "浠诲姟绫诲瀷")
- //private Long taskType;
-
- @ApiModelProperty(value= "AGV")
- private Long agvId;
-
- @ApiModelProperty(value= "鍔熻兘绔檌d")
- private Long funcStaId;
-
-
-
-
- @ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 鍐荤粨 ")
- private Integer status;
-
- @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ")
- private Integer deleted;
-
- @ApiModelProperty(value= "绉熸埛")
- private Long tenantId;
-
- @ApiModelProperty(value= "娣诲姞浜哄憳")
- private Long createBy;
-
- @ApiModelProperty(value= "娣诲姞鏃堕棿")
- private Date createTime;
-
- @ApiModelProperty(value= "淇敼浜哄憳")
- private Long updateBy;
-
- @ApiModelProperty(value= "淇敼鏃堕棿")
- private Date updateTime;
-
- @ApiModelProperty(value= "澶囨敞")
- private String memo;
-
- public FuncTask() {
- }
-
- public FuncTask(String uuid, Long taskId, Long funcTaskSts, Long agvId, Long funcStaId, Integer status, Integer deleted, Long tenantId, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo) {
- this.uuid = uuid;
- this.taskId = taskId;
- this.funcTaskSts = funcTaskSts;
- this.agvId = agvId;
- this.funcStaId = funcStaId;
- this.status = status;
- this.deleted = deleted;
- this.tenantId = tenantId;
- this.createBy = createBy;
- this.createTime = createTime;
- this.updateBy = updateBy;
- this.updateTime = updateTime;
- this.memo = memo;
- }
-}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/FuncStaStateType.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/FuncStaStateType.java
index 070bd6b..b2cbebe 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/FuncStaStateType.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/FuncStaStateType.java
@@ -6,6 +6,7 @@
IDLE,
OCCUPIED,
+ ERROR,
;
public static FuncStaStateType query(String state) {
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/FuncTaskMapper.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/FuncTaskMapper.java
deleted file mode 100644
index 206f080..0000000
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/FuncTaskMapper.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.zy.acs.manager.manager.mapper;
-
-import com.zy.acs.manager.manager.entity.FuncTask;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-import org.springframework.stereotype.Repository;
-
-@Mapper
-@Repository
-public interface FuncTaskMapper extends BaseMapper<FuncTask> {
-
-}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/FuncTaskService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/FuncTaskService.java
deleted file mode 100644
index 1e8fc1e..0000000
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/FuncTaskService.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.zy.acs.manager.manager.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.zy.acs.manager.manager.entity.FuncTask;
-
-public interface FuncTaskService extends IService<FuncTask> {
-
-}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java
index 4fb9bd3..35df23b 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java
@@ -224,6 +224,10 @@
return false;
}
}
+ if (redis.getMap(RedisConstant.AGV_CHARGE_FLAG,agvDetail.getUuid()) != null) {
+ log.warn("[{}]鍙稟gv鍦╮edis瀛樺湪鍏呯數鏍囪瘑......", agvNo);
+ return false;
+ }
if (agvDetail.getAgvStatus().equals(AgvStatusType.CHARGE)) {
if (agvDetail.getSoc() < agvModel.getQuaBattery()) {
return false;
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/FuncTaskServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/FuncTaskServiceImpl.java
deleted file mode 100644
index 9f7fe16..0000000
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/FuncTaskServiceImpl.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.zy.acs.manager.manager.service.impl;
-
-import com.zy.acs.manager.manager.mapper.FuncTaskMapper;
-import com.zy.acs.manager.manager.entity.FuncTask;
-import com.zy.acs.manager.manager.service.FuncTaskService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-@Service("funcTaskService")
-public class FuncTaskServiceImpl extends ServiceImpl<FuncTaskMapper, FuncTask> implements FuncTaskService {
-
-}
diff --git a/zy-acs-manager/src/main/java/funcTask.sql b/zy-acs-manager/src/main/java/funcTask.sql
deleted file mode 100644
index 32a6dd8..0000000
--- a/zy-acs-manager/src/main/java/funcTask.sql
+++ /dev/null
@@ -1,26 +0,0 @@
--- save funcTask record
--- mysql
-insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `tenant_id`, `status`) values ( 'menu.funcTask', '0', '/manager/funcTask', 'funcTask', '0' , '0', '1' , '1');
-
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query 鍔熻兘绔欑偣浠诲姟琛�', '', '1', 'manager:funcTask:list', '0', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create 鍔熻兘绔欑偣浠诲姟琛�', '', '1', 'manager:funcTask:save', '1', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update 鍔熻兘绔欑偣浠诲姟琛�', '', '1', 'manager:funcTask:update', '2', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete 鍔熻兘绔欑偣浠诲姟琛�', '', '1', 'manager:funcTask:remove', '3', '1', '1');
-
--- locale menu name
-funcTask: 'FuncTask',
-
--- locale field
-funcTask: {
- uuid: "uuid",
- taskId: "taskId",
- funcTaskSts: "funcTaskSts",
- agvId: "agvId",
- funcStaId: "funcStaId",
-},
-
--- ResourceContent
-import funcTask from './funcTask';
-
-case 'funcTask':
- return funcTask;
--
Gitblit v1.9.1