From 06a9757c727c6bc15595d5f56a0e309077025741 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期三, 17 四月 2024 09:22:14 +0800
Subject: [PATCH] Merge branch 'Four-Way-Rack' of http://47.97.1.152:5880/r/zy-asrs-master into Four-Way-Rack
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/BasLift.java | 250 +++++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java | 5
zy-asrs-flow/src/pages/core/shuttleStandby/components/edit.jsx | 178 +++
zy-asrs-wcs/src/main/java/basLift.sql | 9
zy-asrs-flow/src/pages/core/basLift/index.jsx | 468 +++++++++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/BasLiftService.java | 8
zy-asrs-wcs/src/main/resources/mapper/core/ShuttleStandbyMapper.xml | 5
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/controller/FlowController.java | 9
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java | 2
zy-asrs-flow/src/components/Flow/GraphTools.jsx | 34
zy-asrs-flow/src/pages/core/shuttleStandby/index.jsx | 493 ++++++++++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/BasLiftMapper.java | 12
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/ShuttleStandbyServiceImpl.java | 12
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/FlowExecute.java | 140 +-
zy-asrs-wcs/src/main/resources/mapper/core/BasLiftMapper.xml | 5
zy-asrs-flow/src/pages/core/basLift/components/edit.jsx | 176 +++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java | 444 +++++----
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java | 2
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java | 5
zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml | 9
zy-asrs-wcs/src/main/java/shuttleStandby.sql | 9
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/ShuttleStandbyService.java | 8
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/ShuttleStandby.java | 246 +++++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasLiftController.java | 101 ++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/BasLiftServiceImpl.java | 12
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java | 122 +
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/ShuttleStandbyMapper.java | 12
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/ShuttleStandbyController.java | 101 ++
28 files changed, 2,594 insertions(+), 283 deletions(-)
diff --git a/zy-asrs-flow/src/components/Flow/GraphTools.jsx b/zy-asrs-flow/src/components/Flow/GraphTools.jsx
index 701fdec..dddb705 100644
--- a/zy-asrs-flow/src/components/Flow/GraphTools.jsx
+++ b/zy-asrs-flow/src/components/Flow/GraphTools.jsx
@@ -6,6 +6,7 @@
import { exportDataToServer, getFlowList, deleteFlowById, updateFlowStatus, mockRun } from "../../services/flow/api";
import './css/GraphTools.less'
import { flow, remove } from "lodash";
+import { find } from "lodash";
export const GraphTools = ({ graphRef, isReady }) => {
@@ -109,6 +110,8 @@
}
let result = sortNodes(rootNode, nodes, graph);
+ let targetResult = setResult(edges, result)
+ console.log(targetResult);
exportDataToServer({
originData: JSON.stringify(data),
data: result,
@@ -176,6 +179,37 @@
return cpValues;
}
+ const setResult = (edges, result) => {
+ console.log(edges, result);
+ result.forEach((item) => {
+ let find = findEdge(edges, item.id)
+
+ item.nextTrue = "";
+ item.nextFalse = "";
+
+ find.forEach((edge) => {
+ if (edge.data.logicBool == true) {
+ item.nextTrue = edge.target.cell;
+ } else {
+ item.nextFalse = edge.target.cell;
+ }
+ })
+ })
+
+ return result;
+ }
+
+ const findEdge = (edges, parentId) => {
+ let list = [];
+ edges.forEach((edge) => {
+ if (edge.source.cell == parentId) {
+ list.push(edge);
+ }
+ })
+
+ return list;
+ }
+
const transCode = (rootNode, nodes, graph) => {
let codeContent = "";
diff --git a/zy-asrs-flow/src/pages/core/basLift/components/edit.jsx b/zy-asrs-flow/src/pages/core/basLift/components/edit.jsx
new file mode 100644
index 0000000..efabcc4
--- /dev/null
+++ b/zy-asrs-flow/src/pages/core/basLift/components/edit.jsx
@@ -0,0 +1,176 @@
+import React, { useState, useRef, useEffect } from 'react';
+import {
+ ProForm,
+ ProFormDigit,
+ ProFormText,
+ ProFormSelect,
+ ProFormDateTimePicker
+} from '@ant-design/pro-components';
+import { Form, Modal } from 'antd';
+import { FormattedMessage, useIntl } from '@umijs/max';
+import moment from 'moment';
+import Http from '@/utils/http';
+
+const Edit = (props) => {
+ const intl = useIntl();
+ const [form] = Form.useForm();
+ const { } = props;
+
+ useEffect(() => {
+ form.resetFields();
+ form.setFieldsValue({
+ ...props.values
+ })
+ }, [form, props])
+
+ const handleCancel = () => {
+ props.onCancel();
+ };
+
+ const handleOk = () => {
+ form.submit();
+ }
+
+ const handleFinish = async (values) => {
+ props.onSubmit({ ...values });
+ }
+
+ return (
+ <>
+ <Modal
+ title={
+ Object.keys(props.values).length > 0
+ ? intl.formatMessage({ id: 'page.edit', defaultMessage: '缂栬緫' })
+ : intl.formatMessage({ id: 'page.add', defaultMessage: '娣诲姞' })
+ }
+ width={640}
+ forceRender
+ destroyOnClose
+ open={props.open}
+ onCancel={handleCancel}
+ onOk={handleOk}
+ >
+ <ProForm
+ form={form}
+ submitter={false}
+ onFinish={handleFinish}
+ layout="horizontal"
+ grid={true}
+ >
+ <ProFormDigit
+ name="id"
+ disabled
+ hidden={true}
+ />
+ <ProForm.Group>
+ <ProFormSelect
+ name="deviceId"
+ label="璁惧id"
+ colProps={{ md: 12, xl: 12 }}
+ fieldProps={{ precision: 0 }}
+ showSearch
+ debounceTime={300}
+ request={async ({ keyWords }) => {
+ const resp = await Http.doPostForm('api/device/query', { condition: keyWords });
+ return resp.data;
+ }}
+ />
+ <ProFormDigit
+ name="liftNo"
+ label="鎻愬崌鏈哄彿"
+ colProps={{ md: 12, xl: 12 }}
+ fieldProps={{ precision: 0 }}
+ rules={[{ required: true }]}
+ />
+ </ProForm.Group>
+ <ProForm.Group>
+ <ProFormDigit
+ name="status"
+ label="褰撳墠浠诲姟鐘舵��"
+ colProps={{ md: 12, xl: 12 }}
+ fieldProps={{ precision: 0 }}
+ />
+ <ProFormDigit
+ name="taskNo"
+ label="浠诲姟鍙�"
+ colProps={{ md: 12, xl: 12 }}
+ fieldProps={{ precision: 0 }}
+ />
+ </ProForm.Group>
+ <ProForm.Group>
+ <ProFormSelect
+ name="updateBy"
+ label="淇敼浜哄憳"
+ colProps={{ md: 12, xl: 12 }}
+ fieldProps={{ precision: 0 }}
+ showSearch
+ debounceTime={300}
+ request={async ({ keyWords }) => {
+ const resp = await Http.doPostForm('api/user/query', { condition: keyWords });
+ return resp.data;
+ }}
+ />
+ <ProFormSelect
+ name="createBy"
+ label="鍒涘缓浜哄憳"
+ colProps={{ md: 12, xl: 12 }}
+ fieldProps={{ precision: 0 }}
+ showSearch
+ debounceTime={300}
+ request={async ({ keyWords }) => {
+ const resp = await Http.doPostForm('api/user/query', { condition: keyWords });
+ return resp.data;
+ }}
+ />
+ </ProForm.Group>
+ <ProForm.Group>
+ <ProFormDateTimePicker
+ name="createTime"
+ label="鍒涘缓鏃堕棿"
+ colProps={{ md: 12, xl: 12 }}
+ transform={(value) => moment(value).toISOString()}
+ />
+ <ProFormDateTimePicker
+ name="updateTime"
+ label="淇敼鏃堕棿"
+ colProps={{ md: 12, xl: 12 }}
+ transform={(value) => moment(value).toISOString()}
+ />
+ </ProForm.Group>
+ <ProForm.Group>
+ <ProFormText
+ name="memo"
+ label="澶囨敞"
+ colProps={{ md: 12, xl: 12 }}
+ />
+ <ProFormDigit
+ name="pakMk"
+ label="浣滀笟鏍囪"
+ colProps={{ md: 12, xl: 12 }}
+ fieldProps={{ precision: 0 }}
+ />
+ </ProForm.Group>
+ <ProForm.Group>
+ <ProFormText
+ name="protocol"
+ label="璁惧鐘舵��"
+ colProps={{ md: 12, xl: 12 }}
+ />
+ <ProFormSelect
+ name="transfer"
+ label="灏忚溅鏄惁鍙崲灞�"
+ colProps={{ md: 12, xl: 12 }}
+ options={[
+ { label: '鍚�', value: 0 },
+ { label: '鏄�', value: 1 },
+ ]}
+ />
+ </ProForm.Group>
+
+ </ProForm>
+ </Modal>
+ </>
+ )
+}
+
+export default Edit;
diff --git a/zy-asrs-flow/src/pages/core/basLift/index.jsx b/zy-asrs-flow/src/pages/core/basLift/index.jsx
new file mode 100644
index 0000000..e382d1c
--- /dev/null
+++ b/zy-asrs-flow/src/pages/core/basLift/index.jsx
@@ -0,0 +1,468 @@
+
+import React, { useState, useRef, useEffect } from 'react';
+import { Button, message, Modal, Tag } from 'antd';
+import {
+ FooterToolbar,
+ PageContainer,
+ ProTable,
+ LightFilter,
+} from '@ant-design/pro-components';
+import { FormattedMessage, useIntl } from '@umijs/max';
+import { PlusOutlined, ExportOutlined } from '@ant-design/icons';
+import Http from '@/utils/http';
+import Edit from './components/edit'
+import { TextFilter, SelectFilter, DatetimeRangeFilter, LinkFilter } from '@/components/TableSearch'
+import { statusMap } from '@/utils/enum-util'
+import { repairBug } from '@/utils/common-util';
+
+const TABLE_KEY = 'pro-table-basLift';
+
+const handleSave = async (val, intl) => {
+ const hide = message.loading(intl.formatMessage({ id: 'page.adding', defaultMessage: '姝e湪娣诲姞' }));
+ try {
+ const resp = await Http.doPost('api/basLift/save', val);
+ if (resp.code === 200) {
+ message.success(intl.formatMessage({ id: 'page.add.success', defaultMessage: '娣诲姞鎴愬姛' }));
+ return true;
+ } else {
+ message.error(resp.msg);
+ return false;
+ }
+ } catch (error) {
+ message.error(intl.formatMessage({ id: 'page.add.fail', defaultMessage: '娣诲姞澶辫触璇烽噸璇曪紒' }));
+ return false;
+ } finally {
+ hide();
+ }
+};
+
+const handleUpdate = async (val, intl) => {
+ const hide = message.loading(intl.formatMessage({ id: 'page.updating', defaultMessage: '姝e湪鏇存柊' }));
+ try {
+ const resp = await Http.doPost('api/basLift/update', val);
+ if (resp.code === 200) {
+ message.success(intl.formatMessage({ id: 'page.update.success', defaultMessage: '鏇存柊鎴愬姛' }));
+ return true;
+ } else {
+ message.error(resp.msg);
+ return false;
+ }
+ } catch (error) {
+ message.error(intl.formatMessage({ id: 'page.update.fail', defaultMessage: '鏇存柊澶辫触璇烽噸璇曪紒' }));
+ return false;
+ } finally {
+ hide();
+ }
+};
+
+const handleRemove = async (rows, intl) => {
+ if (!rows) return true;
+ const hide = message.loading(intl.formatMessage({ id: 'page.deleting', defaultMessage: '姝e湪鍒犻櫎' }));
+ try {
+ const resp = await Http.doPost('api/basLift/remove/' + rows.map((row) => row.id).join(','));
+ if (resp.code === 200) {
+ message.success(intl.formatMessage({ id: 'page.delete.success', defaultMessage: '鍒犻櫎鎴愬姛' }));
+ return true;
+ } else {
+ message.error(resp.msg);
+ return false;
+ }
+ } catch (error) {
+ message.error(intl.formatMessage({ id: 'page.delete.fail', defaultMessage: '鍒犻櫎澶辫触锛岃閲嶈瘯锛�' }));
+ return false;
+ } finally {
+ hide();
+ }
+};
+
+const handleExport = async (intl) => {
+ const hide = message.loading(intl.formatMessage({ id: 'page.exporting', defaultMessage: '姝e湪瀵煎嚭' }));
+ try {
+ const resp = await Http.doPostBlob('api/basLift/export');
+ const blob = new Blob([resp], { type: 'application/vnd.ms-excel' });
+ window.location.href = window.URL.createObjectURL(blob);
+ message.success(intl.formatMessage({ id: 'page.export.success', defaultMessage: '瀵煎嚭鎴愬姛' }));
+ return true;
+ } catch (error) {
+ message.error(intl.formatMessage({ id: 'page.export.fail', defaultMessage: '瀵煎嚭澶辫触锛岃閲嶈瘯' }));
+ return false;
+ } finally {
+ hide();
+ }
+};
+
+
+const Main = () => {
+ const intl = useIntl();
+ const formTableRef = useRef();
+ const actionRef = useRef();
+ const [selectedRows, setSelectedRows] = useState([]);
+ const [modalVisible, setModalVisible] = useState(false);
+ const [currentRow, setCurrentRow] = useState();
+ const [searchParam, setSearchParam] = useState({});
+
+ useEffect(() => {
+
+ }, []);
+
+ const columns = [
+ {
+ title: intl.formatMessage({
+ id: 'page.table.no',
+ defaultMessage: 'No'
+ }),
+ dataIndex: 'index',
+ valueType: 'indexBorder',
+ width: 48,
+ },
+ {
+ title: '璁惧id',
+ dataIndex: 'deviceId$',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <LinkFilter
+ name='deviceId'
+ major='device'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '鎻愬崌鏈哄彿',
+ dataIndex: 'liftNo',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ copyable: true,
+ filterDropdown: (props) => <TextFilter
+ name='liftNo'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '褰撳墠浠诲姟鐘舵��',
+ dataIndex: 'status',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <TextFilter
+ name='status'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '浠诲姟鍙�',
+ dataIndex: 'taskNo',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <TextFilter
+ name='taskNo'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '淇敼浜哄憳',
+ dataIndex: 'updateBy$',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <LinkFilter
+ name='updateBy'
+ major='user'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '鍒涘缓浜哄憳',
+ dataIndex: 'createBy$',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <LinkFilter
+ name='createBy'
+ major='user'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ dataIndex: 'createTime$',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <DatetimeRangeFilter
+ name='createTime'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '淇敼鏃堕棿',
+ dataIndex: 'updateTime$',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <DatetimeRangeFilter
+ name='updateTime'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '澶囨敞',
+ dataIndex: 'memo',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <TextFilter
+ name='memo'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '浣滀笟鏍囪',
+ dataIndex: 'pakMk',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <TextFilter
+ name='pakMk'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '璁惧鐘舵��',
+ dataIndex: 'protocol',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <TextFilter
+ name='protocol'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '灏忚溅鏄惁鍙崲灞�',
+ dataIndex: 'transfer$',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <SelectFilter
+ name='transfer'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ data={[
+ { label: '鍚�', value: 0 },
+ { label: '鏄�', value: 1 },
+ ]}
+ />,
+ },
+
+ {
+ title: '鎿嶄綔',
+ dataIndex: 'option',
+ width: 140,
+ valueType: 'option',
+ render: (_, record) => [
+ <Button
+ type="link"
+ key="edit"
+ onClick={() => {
+ setModalVisible(true);
+ setCurrentRow(record);
+ }}
+ >
+ <FormattedMessage id='page.edit' defaultMessage='缂栬緫' />
+ </Button>,
+ <Button
+ type="link"
+ danger
+ key="batchRemove"
+ onClick={async () => {
+ Modal.confirm({
+ title: intl.formatMessage({ id: 'page.delete', defaultMessage: '鍒犻櫎' }),
+ content: intl.formatMessage({ id: 'page.delete.confirm', defaultMessage: '纭畾鍒犻櫎璇ラ」鍚楋紵' }),
+ onOk: async () => {
+ const success = await handleRemove([record], intl);
+ if (success) {
+ if (actionRef.current) {
+ actionRef.current.reload();
+ }
+ }
+ },
+ });
+ }}
+ >
+ <FormattedMessage id='page.delete' defaultMessage='鍒犻櫎' />
+ </Button>,
+ ],
+ },
+ ];
+
+ return (
+ <PageContainer
+ header={{
+ breadcrumb: {},
+ }}
+ >
+ <div style={{ width: '100%', float: 'right' }}>
+ <ProTable
+ key="basLift"
+ rowKey="id"
+ actionRef={actionRef}
+ formRef={formTableRef}
+ columns={columns}
+ cardBordered
+ scroll={{ x: 1300 }}
+ dateFormatter="string"
+ pagination={{ pageSize: 16 }}
+ search={false}
+ toolbar={{
+ search: {
+ onSearch: (value) => {
+ setSearchParam(prevState => ({
+ ...prevState,
+ condition: value
+ }));
+ actionRef.current?.reload();
+ },
+ },
+ filter: (
+ <LightFilter
+ onValuesChange={(val) => {
+ }}
+ >
+ </LightFilter>
+ ),
+ actions: [
+ <Button
+ type="primary"
+ key="save"
+ onClick={async () => {
+ setModalVisible(true)
+ }}
+ >
+ <PlusOutlined />
+ <FormattedMessage id='page.add' defaultMessage='娣诲姞' />
+ </Button>,
+ <Button
+ key="export"
+ onClick={async () => {
+ handleExport(intl);
+ }}
+ >
+ <ExportOutlined />
+ <FormattedMessage id='page.export' defaultMessage='瀵煎嚭' />
+ </Button>,
+ ],
+ }}
+ request={(params, sorter, filter) =>
+ Http.doPostPromise('/api/basLift/page', { ...params, ...searchParam }, (res) => {
+ return {
+ data: res.data.records,
+ total: res.data.total,
+ success: true,
+ }
+ })
+ }
+ rowSelection={{
+ onChange: (ids, rows) => {
+ setSelectedRows(rows);
+ }
+ }}
+ columnsState={{
+ persistenceKey: TABLE_KEY,
+ persistenceType: 'localStorage',
+ defaultValue: {
+ // memo: { show: repairBug(TABLE_KEY, 'memo', false) },
+ option: { fixed: 'right', disable: true },
+ },
+ onChange(value) {
+ },
+ }}
+ />
+ </div>
+
+ {selectedRows?.length > 0 && (
+ <FooterToolbar
+ extra={
+ <div>
+ <a style={{ fontWeight: 600 }}>{selectedRows.length}</a>
+ <FormattedMessage id='page.selected' defaultMessage=' 椤瑰凡閫夋嫨' />
+ </div>
+ }
+ >
+ <Button
+ key="remove"
+ danger
+ onClick={async () => {
+ Modal.confirm({
+ title: intl.formatMessage({ id: 'page.delete', defaultMessage: '鍒犻櫎' }),
+ content: intl.formatMessage({ id: 'page.delete.confirm', defaultMessage: '纭畾鍒犻櫎璇ラ」鍚楋紵' }),
+ onOk: async () => {
+ const success = await handleRemove(selectedRows, intl);
+ if (success) {
+ setSelectedRows([]);
+ actionRef.current?.reloadAndRest?.();
+ }
+ },
+ });
+ }}
+ >
+ <FormattedMessage id='page.delete.batch' defaultMessage='鎵归噺鍒犻櫎' />
+ </Button>
+ </FooterToolbar>
+ )}
+
+ <Edit
+ open={modalVisible}
+ values={currentRow || {}}
+ onCancel={
+ () => {
+ setModalVisible(false);
+ setCurrentRow(undefined);
+ }
+ }
+ onSubmit={async (values) => {
+ let ok = false;
+ if (values.id) {
+ ok = await handleUpdate({ ...values }, intl)
+ } else {
+ ok = await handleSave({ ...values }, intl)
+ }
+ if (ok) {
+ setModalVisible(false);
+ setCurrentRow(undefined);
+ if (actionRef.current) {
+ actionRef.current.reload();
+ }
+ }
+ }}
+ />
+ </PageContainer>
+ );
+};
+
+export default Main;
diff --git a/zy-asrs-flow/src/pages/core/shuttleStandby/components/edit.jsx b/zy-asrs-flow/src/pages/core/shuttleStandby/components/edit.jsx
new file mode 100644
index 0000000..acc8c14
--- /dev/null
+++ b/zy-asrs-flow/src/pages/core/shuttleStandby/components/edit.jsx
@@ -0,0 +1,178 @@
+import React, { useState, useRef, useEffect } from 'react';
+import {
+ ProForm,
+ ProFormDigit,
+ ProFormText,
+ ProFormSelect,
+ ProFormDateTimePicker
+} from '@ant-design/pro-components';
+import { Form, Modal } from 'antd';
+import { FormattedMessage, useIntl } from '@umijs/max';
+import moment from 'moment';
+import Http from '@/utils/http';
+
+const Edit = (props) => {
+ const intl = useIntl();
+ const [form] = Form.useForm();
+ const { } = props;
+
+ useEffect(() => {
+ form.resetFields();
+ form.setFieldsValue({
+ ...props.values
+ })
+ }, [form, props])
+
+ const handleCancel = () => {
+ props.onCancel();
+ };
+
+ const handleOk = () => {
+ form.submit();
+ }
+
+ const handleFinish = async (values) => {
+ props.onSubmit({ ...values });
+ }
+
+ return (
+ <>
+ <Modal
+ title={
+ Object.keys(props.values).length > 0
+ ? intl.formatMessage({ id: 'page.edit', defaultMessage: '缂栬緫' })
+ : intl.formatMessage({ id: 'page.add', defaultMessage: '娣诲姞' })
+ }
+ width={640}
+ forceRender
+ destroyOnClose
+ open={props.open}
+ onCancel={handleCancel}
+ onOk={handleOk}
+ >
+ <ProForm
+ form={form}
+ submitter={false}
+ onFinish={handleFinish}
+ layout="horizontal"
+ grid={true}
+ >
+ <ProFormDigit
+ name="id"
+ disabled
+ hidden={true}
+ />
+ <ProForm.Group>
+ <ProFormText
+ name="uuid"
+ label="缂栧彿"
+ colProps={{ md: 12, xl: 12 }}
+ />
+ <ProFormText
+ name="name"
+ label="鍚嶇О"
+ colProps={{ md: 12, xl: 12 }}
+ />
+ </ProForm.Group>
+ <ProForm.Group>
+ <ProFormText
+ name="flag"
+ label="鏍囪瘑"
+ colProps={{ md: 12, xl: 12 }}
+ />
+ <ProFormSelect
+ name="status"
+ label="鐘舵��"
+ colProps={{ md: 12, xl: 12 }}
+ options={[
+ { label: '姝e父', value: 1 },
+ { label: '绂佺敤', value: 0 },
+ ]}
+ />
+ </ProForm.Group>
+ <ProForm.Group>
+ <ProFormDateTimePicker
+ name="createTime"
+ label="娣诲姞鏃堕棿"
+ colProps={{ md: 12, xl: 12 }}
+ transform={(value) => moment(value).toISOString()}
+ />
+ <ProFormSelect
+ name="createBy"
+ label="娣诲姞浜哄憳"
+ colProps={{ md: 12, xl: 12 }}
+ fieldProps={{ precision: 0 }}
+ showSearch
+ debounceTime={300}
+ request={async ({ keyWords }) => {
+ const resp = await Http.doPostForm('api/user/query', { condition: keyWords });
+ return resp.data;
+ }}
+ />
+ </ProForm.Group>
+ <ProForm.Group>
+ <ProFormDateTimePicker
+ name="updateTime"
+ label="淇敼鏃堕棿"
+ colProps={{ md: 12, xl: 12 }}
+ transform={(value) => moment(value).toISOString()}
+ />
+ <ProFormSelect
+ name="updateBy"
+ label="淇敼浜哄憳"
+ colProps={{ md: 12, xl: 12 }}
+ fieldProps={{ precision: 0 }}
+ showSearch
+ debounceTime={300}
+ request={async ({ keyWords }) => {
+ const resp = await Http.doPostForm('api/user/query', { condition: keyWords });
+ return resp.data;
+ }}
+ />
+ </ProForm.Group>
+ <ProForm.Group>
+ <ProFormText
+ name="memo"
+ label="澶囨敞"
+ colProps={{ md: 12, xl: 12 }}
+ />
+ <ProFormDigit
+ name="deviceId"
+ label="璁惧鍙�"
+ colProps={{ md: 12, xl: 12 }}
+ fieldProps={{ precision: 0 }}
+ />
+ </ProForm.Group>
+ <ProForm.Group>
+ <ProFormDigit
+ name="deviceLev"
+ label="璁惧妤煎眰妤煎眰"
+ colProps={{ md: 12, xl: 12 }}
+ fieldProps={{ precision: 0 }}
+ />
+ <ProFormText
+ name="deviceLoc"
+ label="璁惧搴撲綅鍙�"
+ colProps={{ md: 12, xl: 12 }}
+ />
+ </ProForm.Group>
+ <ProForm.Group>
+ <ProFormText
+ name="deviceStandbyLoc"
+ label="璁惧寰呮満浣嶅簱浣嶅彿"
+ colProps={{ md: 12, xl: 12 }}
+ />
+ <ProFormText
+ name="standbyLoc"
+ label="寰呮満浣嶅簱浣嶅彿"
+ colProps={{ md: 12, xl: 12 }}
+ />
+ </ProForm.Group>
+
+ </ProForm>
+ </Modal>
+ </>
+ )
+}
+
+export default Edit;
diff --git a/zy-asrs-flow/src/pages/core/shuttleStandby/index.jsx b/zy-asrs-flow/src/pages/core/shuttleStandby/index.jsx
new file mode 100644
index 0000000..501e154
--- /dev/null
+++ b/zy-asrs-flow/src/pages/core/shuttleStandby/index.jsx
@@ -0,0 +1,493 @@
+
+import React, { useState, useRef, useEffect } from 'react';
+import { Button, message, Modal, Tag } from 'antd';
+import {
+ FooterToolbar,
+ PageContainer,
+ ProTable,
+ LightFilter,
+} from '@ant-design/pro-components';
+import { FormattedMessage, useIntl } from '@umijs/max';
+import { PlusOutlined, ExportOutlined } from '@ant-design/icons';
+import Http from '@/utils/http';
+import Edit from './components/edit'
+import { TextFilter, SelectFilter, DatetimeRangeFilter, LinkFilter } from '@/components/TableSearch'
+import { statusMap } from '@/utils/enum-util'
+import { repairBug } from '@/utils/common-util';
+
+const TABLE_KEY = 'pro-table-shuttleStandby';
+
+const handleSave = async (val, intl) => {
+ const hide = message.loading(intl.formatMessage({ id: 'page.adding', defaultMessage: '姝e湪娣诲姞' }));
+ try {
+ const resp = await Http.doPost('api/shuttleStandby/save', val);
+ if (resp.code === 200) {
+ message.success(intl.formatMessage({ id: 'page.add.success', defaultMessage: '娣诲姞鎴愬姛' }));
+ return true;
+ } else {
+ message.error(resp.msg);
+ return false;
+ }
+ } catch (error) {
+ message.error(intl.formatMessage({ id: 'page.add.fail', defaultMessage: '娣诲姞澶辫触璇烽噸璇曪紒' }));
+ return false;
+ } finally {
+ hide();
+ }
+};
+
+const handleUpdate = async (val, intl) => {
+ const hide = message.loading(intl.formatMessage({ id: 'page.updating', defaultMessage: '姝e湪鏇存柊' }));
+ try {
+ const resp = await Http.doPost('api/shuttleStandby/update', val);
+ if (resp.code === 200) {
+ message.success(intl.formatMessage({ id: 'page.update.success', defaultMessage: '鏇存柊鎴愬姛' }));
+ return true;
+ } else {
+ message.error(resp.msg);
+ return false;
+ }
+ } catch (error) {
+ message.error(intl.formatMessage({ id: 'page.update.fail', defaultMessage: '鏇存柊澶辫触璇烽噸璇曪紒' }));
+ return false;
+ } finally {
+ hide();
+ }
+};
+
+const handleRemove = async (rows, intl) => {
+ if (!rows) return true;
+ const hide = message.loading(intl.formatMessage({ id: 'page.deleting', defaultMessage: '姝e湪鍒犻櫎' }));
+ try {
+ const resp = await Http.doPost('api/shuttleStandby/remove/' + rows.map((row) => row.id).join(','));
+ if (resp.code === 200) {
+ message.success(intl.formatMessage({ id: 'page.delete.success', defaultMessage: '鍒犻櫎鎴愬姛' }));
+ return true;
+ } else {
+ message.error(resp.msg);
+ return false;
+ }
+ } catch (error) {
+ message.error(intl.formatMessage({ id: 'page.delete.fail', defaultMessage: '鍒犻櫎澶辫触锛岃閲嶈瘯锛�' }));
+ return false;
+ } finally {
+ hide();
+ }
+};
+
+const handleExport = async (intl) => {
+ const hide = message.loading(intl.formatMessage({ id: 'page.exporting', defaultMessage: '姝e湪瀵煎嚭' }));
+ try {
+ const resp = await Http.doPostBlob('api/shuttleStandby/export');
+ const blob = new Blob([resp], { type: 'application/vnd.ms-excel' });
+ window.location.href = window.URL.createObjectURL(blob);
+ message.success(intl.formatMessage({ id: 'page.export.success', defaultMessage: '瀵煎嚭鎴愬姛' }));
+ return true;
+ } catch (error) {
+ message.error(intl.formatMessage({ id: 'page.export.fail', defaultMessage: '瀵煎嚭澶辫触锛岃閲嶈瘯' }));
+ return false;
+ } finally {
+ hide();
+ }
+};
+
+
+const Main = () => {
+ const intl = useIntl();
+ const formTableRef = useRef();
+ const actionRef = useRef();
+ const [selectedRows, setSelectedRows] = useState([]);
+ const [modalVisible, setModalVisible] = useState(false);
+ const [currentRow, setCurrentRow] = useState();
+ const [searchParam, setSearchParam] = useState({});
+
+ useEffect(() => {
+
+ }, []);
+
+ const columns = [
+ {
+ title: intl.formatMessage({
+ id: 'page.table.no',
+ defaultMessage: 'No'
+ }),
+ dataIndex: 'index',
+ valueType: 'indexBorder',
+ width: 48,
+ },
+ {
+ title: '缂栧彿',
+ dataIndex: 'uuid',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <TextFilter
+ name='uuid'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '鍚嶇О',
+ dataIndex: 'name',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ copyable: true,
+ filterDropdown: (props) => <TextFilter
+ name='name'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '鏍囪瘑',
+ dataIndex: 'flag',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <TextFilter
+ name='flag'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '鐘舵��',
+ dataIndex: 'status$',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <SelectFilter
+ name='status'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ data={[
+ { label: '姝e父', value: 1 },
+ { label: '绂佺敤', value: 0 },
+ ]}
+ />,
+ },
+ {
+ title: '娣诲姞鏃堕棿',
+ dataIndex: 'createTime$',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <DatetimeRangeFilter
+ name='createTime'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '娣诲姞浜哄憳',
+ dataIndex: 'createBy$',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <LinkFilter
+ name='createBy'
+ major='user'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '淇敼鏃堕棿',
+ dataIndex: 'updateTime$',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <DatetimeRangeFilter
+ name='updateTime'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '淇敼浜哄憳',
+ dataIndex: 'updateBy$',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <LinkFilter
+ name='updateBy'
+ major='user'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '澶囨敞',
+ dataIndex: 'memo',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <TextFilter
+ name='memo'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '璁惧鍙�',
+ dataIndex: 'deviceId',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <TextFilter
+ name='deviceId'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '璁惧妤煎眰妤煎眰',
+ dataIndex: 'deviceLev',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <TextFilter
+ name='deviceLev'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '璁惧搴撲綅鍙�',
+ dataIndex: 'deviceLoc',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <TextFilter
+ name='deviceLoc'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '璁惧寰呮満浣嶅簱浣嶅彿',
+ dataIndex: 'deviceStandbyLoc',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <TextFilter
+ name='deviceStandbyLoc'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+ {
+ title: '寰呮満浣嶅簱浣嶅彿',
+ dataIndex: 'standbyLoc',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <TextFilter
+ name='standbyLoc'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
+
+ {
+ title: '鎿嶄綔',
+ dataIndex: 'option',
+ width: 140,
+ valueType: 'option',
+ render: (_, record) => [
+ <Button
+ type="link"
+ key="edit"
+ onClick={() => {
+ setModalVisible(true);
+ setCurrentRow(record);
+ }}
+ >
+ <FormattedMessage id='page.edit' defaultMessage='缂栬緫' />
+ </Button>,
+ <Button
+ type="link"
+ danger
+ key="batchRemove"
+ onClick={async () => {
+ Modal.confirm({
+ title: intl.formatMessage({ id: 'page.delete', defaultMessage: '鍒犻櫎' }),
+ content: intl.formatMessage({ id: 'page.delete.confirm', defaultMessage: '纭畾鍒犻櫎璇ラ」鍚楋紵' }),
+ onOk: async () => {
+ const success = await handleRemove([record], intl);
+ if (success) {
+ if (actionRef.current) {
+ actionRef.current.reload();
+ }
+ }
+ },
+ });
+ }}
+ >
+ <FormattedMessage id='page.delete' defaultMessage='鍒犻櫎' />
+ </Button>,
+ ],
+ },
+ ];
+
+ return (
+ <PageContainer
+ header={{
+ breadcrumb: {},
+ }}
+ >
+ <div style={{ width: '100%', float: 'right' }}>
+ <ProTable
+ key="shuttleStandby"
+ rowKey="id"
+ actionRef={actionRef}
+ formRef={formTableRef}
+ columns={columns}
+ cardBordered
+ scroll={{ x: 1300 }}
+ dateFormatter="string"
+ pagination={{ pageSize: 16 }}
+ search={false}
+ toolbar={{
+ search: {
+ onSearch: (value) => {
+ setSearchParam(prevState => ({
+ ...prevState,
+ condition: value
+ }));
+ actionRef.current?.reload();
+ },
+ },
+ filter: (
+ <LightFilter
+ onValuesChange={(val) => {
+ }}
+ >
+ </LightFilter>
+ ),
+ actions: [
+ <Button
+ type="primary"
+ key="save"
+ onClick={async () => {
+ setModalVisible(true)
+ }}
+ >
+ <PlusOutlined />
+ <FormattedMessage id='page.add' defaultMessage='娣诲姞' />
+ </Button>,
+ <Button
+ key="export"
+ onClick={async () => {
+ handleExport(intl);
+ }}
+ >
+ <ExportOutlined />
+ <FormattedMessage id='page.export' defaultMessage='瀵煎嚭' />
+ </Button>,
+ ],
+ }}
+ request={(params, sorter, filter) =>
+ Http.doPostPromise('/api/shuttleStandby/page', { ...params, ...searchParam }, (res) => {
+ return {
+ data: res.data.records,
+ total: res.data.total,
+ success: true,
+ }
+ })
+ }
+ rowSelection={{
+ onChange: (ids, rows) => {
+ setSelectedRows(rows);
+ }
+ }}
+ columnsState={{
+ persistenceKey: TABLE_KEY,
+ persistenceType: 'localStorage',
+ defaultValue: {
+ // memo: { show: repairBug(TABLE_KEY, 'memo', false) },
+ option: { fixed: 'right', disable: true },
+ },
+ onChange(value) {
+ },
+ }}
+ />
+ </div>
+
+ {selectedRows?.length > 0 && (
+ <FooterToolbar
+ extra={
+ <div>
+ <a style={{ fontWeight: 600 }}>{selectedRows.length}</a>
+ <FormattedMessage id='page.selected' defaultMessage=' 椤瑰凡閫夋嫨' />
+ </div>
+ }
+ >
+ <Button
+ key="remove"
+ danger
+ onClick={async () => {
+ Modal.confirm({
+ title: intl.formatMessage({ id: 'page.delete', defaultMessage: '鍒犻櫎' }),
+ content: intl.formatMessage({ id: 'page.delete.confirm', defaultMessage: '纭畾鍒犻櫎璇ラ」鍚楋紵' }),
+ onOk: async () => {
+ const success = await handleRemove(selectedRows, intl);
+ if (success) {
+ setSelectedRows([]);
+ actionRef.current?.reloadAndRest?.();
+ }
+ },
+ });
+ }}
+ >
+ <FormattedMessage id='page.delete.batch' defaultMessage='鎵归噺鍒犻櫎' />
+ </Button>
+ </FooterToolbar>
+ )}
+
+ <Edit
+ open={modalVisible}
+ values={currentRow || {}}
+ onCancel={
+ () => {
+ setModalVisible(false);
+ setCurrentRow(undefined);
+ }
+ }
+ onSubmit={async (values) => {
+ let ok = false;
+ if (values.id) {
+ ok = await handleUpdate({ ...values }, intl)
+ } else {
+ ok = await handleSave({ ...values }, intl)
+ }
+ if (ok) {
+ setModalVisible(false);
+ setCurrentRow(undefined);
+ if (actionRef.current) {
+ actionRef.current.reload();
+ }
+ }
+ }}
+ />
+ </PageContainer>
+ );
+};
+
+export default Main;
diff --git a/zy-asrs-wcs/src/main/java/basLift.sql b/zy-asrs-wcs/src/main/java/basLift.sql
new file mode 100644
index 0000000..884b978
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/basLift.sql
@@ -0,0 +1,9 @@
+-- save basLift record
+-- mysql
+insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `host_id`, `status`) values ( '鎻愬崌鏈哄垪琛ㄧ鐞�', '0', '/core/basLift', '/core/basLift', '0' , '0', '1' , '1');
+
+insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `host_id`, `status`) values ( '鏌ヨ鎻愬崌鏈哄垪琛�', '', '1', 'core:basLift:list', '0', '1', '1');
+insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `host_id`, `status`) values ( '娣诲姞鎻愬崌鏈哄垪琛�', '', '1', 'core:basLift:save', '1', '1', '1');
+insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `host_id`, `status`) values ( '淇敼鎻愬崌鏈哄垪琛�', '', '1', 'core:basLift:update', '2', '1', '1');
+insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `host_id`, `status`) values ( '鍒犻櫎鎻愬崌鏈哄垪琛�', '', '1', 'core:basLift:remove', '3', '1', '1');
+
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/controller/FlowController.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/controller/FlowController.java
index e8a5ed6..417c3d1 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/controller/FlowController.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/asrs/controller/FlowController.java
@@ -1,6 +1,7 @@
package com.zy.asrs.wcs.asrs.controller;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.zy.asrs.framework.common.R;
import com.zy.asrs.wcs.asrs.entity.FlowGraph;
import com.zy.asrs.wcs.asrs.entity.param.FlowLogicCodeParam;
@@ -72,11 +73,10 @@
flowGraph.setStatus(0);
}
flowGraph.setName(param.get("name").toString());
- flowGraph.setMemo(param.get("memo").toString());
+ flowGraph.setMemo(param.get("memo") == null ? "" : param.get("memo").toString());
flowGraph.setOriginData(param.get("originData").toString());
- flowGraph.setProcessData(JSON.toJSONString(list));
+ flowGraph.setProcessData(JSON.toJSONString(param.get("data")));
flowGraph.setUpdateTime(new Date());
- flowGraph.setHostId(getHostId());
flowGraphService.saveOrUpdate(flowGraph);
return R.ok();
@@ -91,7 +91,8 @@
//寮�濮嬫ā鎷熸墽琛�
String processData = flowGraph.getProcessData();
- List<FlowLogicCodeParam> list = JSON.parseArray(processData, FlowLogicCodeParam.class);
+// List<FlowLogicCodeParam> list = JSON.parseArray(processData, FlowLogicCodeParam.class);
+ List<JSONObject> list = JSON.parseArray(processData, JSONObject.class);
boolean execute = flowExecute.execute(list);
return R.ok().add(execute);
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasLiftController.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasLiftController.java
new file mode 100644
index 0000000..64a5424
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/BasLiftController.java
@@ -0,0 +1,101 @@
+package com.zy.asrs.wcs.system.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.R;
+import com.zy.asrs.wcs.common.annotation.OperationLog;
+import com.zy.asrs.wcs.common.domain.BaseParam;
+import com.zy.asrs.wcs.common.domain.KeyValVo;
+import com.zy.asrs.wcs.common.domain.PageParam;
+import com.zy.asrs.wcs.core.entity.BasLift;
+import com.zy.asrs.wcs.core.service.BasLiftService;
+import com.zy.asrs.wcs.utils.ExcelUtil;
+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.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/api")
+public class BasLiftController extends BaseController {
+
+ @Autowired
+ private BasLiftService basLiftService;
+
+ @PreAuthorize("hasAuthority('core:basLift:list')")
+ @PostMapping("/basLift/page")
+ public R page(@RequestBody Map<String, Object> map) {
+ BaseParam baseParam = buildParam(map, BaseParam.class);
+ PageParam<BasLift, BaseParam> pageParam = new PageParam<>(baseParam, BasLift.class);
+ return R.ok().add(basLiftService.page(pageParam, pageParam.buildWrapper(true)));
+ }
+
+ @PreAuthorize("hasAuthority('core:basLift:list')")
+ @PostMapping("/basLift/list")
+ public R list(@RequestBody Map<String, Object> map) {
+ return R.ok().add(basLiftService.list());
+ }
+
+ @PreAuthorize("hasAuthority('core:basLift:list')")
+ @GetMapping("/basLift/{id}")
+ public R get(@PathVariable("id") Long id) {
+ return R.ok().add(basLiftService.getById(id));
+ }
+
+ @PreAuthorize("hasAuthority('core:basLift:save')")
+ @OperationLog("娣诲姞鎻愬崌鏈哄垪琛�")
+ @PostMapping("/basLift/save")
+ public R save(@RequestBody BasLift basLift) {
+ if (!basLiftService.save(basLift)) {
+ return R.error("娣诲姞澶辫触");
+ }
+ return R.ok("娣诲姞鎴愬姛");
+ }
+
+ @PreAuthorize("hasAuthority('core:basLift:update')")
+ @OperationLog("淇敼鎻愬崌鏈哄垪琛�")
+ @PostMapping("/basLift/update")
+ public R update(@RequestBody BasLift basLift) {
+ if (!basLiftService.updateById(basLift)) {
+ return R.error("淇敼澶辫触");
+ }
+ return R.ok("淇敼鎴愬姛");
+ }
+
+ @PreAuthorize("hasAuthority('core:basLift:remove')")
+ @OperationLog("鍒犻櫎鎻愬崌鏈哄垪琛�")
+ @PostMapping("/basLift/remove/{ids}")
+ public R remove(@PathVariable Long[] ids) {
+ if (!basLiftService.removeByIds(Arrays.asList(ids))) {
+ return R.error("鍒犻櫎澶辫触");
+ }
+ return R.ok("鍒犻櫎鎴愬姛");
+ }
+
+ @PreAuthorize("hasAuthority('core:basLift:list')")
+ @PostMapping("/basLift/query")
+ public R query(@RequestParam(required = false) String condition) {
+ List<KeyValVo> vos = new ArrayList<>();
+ LambdaQueryWrapper<BasLift> wrapper = new LambdaQueryWrapper<>();
+ if (!Cools.isEmpty(condition)) {
+ wrapper.like(BasLift::getLiftNo, condition);
+ }
+ basLiftService.page(new Page<>(1, 30), wrapper).getRecords().forEach(
+ item -> vos.add(new KeyValVo(item.getId(), item.getLiftNo()))
+ );
+ return R.ok().add(vos);
+ }
+
+ @PreAuthorize("hasAuthority('core:basLift:list')")
+ @PostMapping("/basLift/export")
+ public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
+ ExcelUtil.build(ExcelUtil.create(basLiftService.list(), BasLift.class), response);
+ }
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/ShuttleStandbyController.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/ShuttleStandbyController.java
new file mode 100644
index 0000000..bb7e8da
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/ShuttleStandbyController.java
@@ -0,0 +1,101 @@
+package com.zy.asrs.wcs.system.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.R;
+import com.zy.asrs.wcs.common.annotation.OperationLog;
+import com.zy.asrs.wcs.common.domain.BaseParam;
+import com.zy.asrs.wcs.common.domain.KeyValVo;
+import com.zy.asrs.wcs.common.domain.PageParam;
+import com.zy.asrs.wcs.core.entity.ShuttleStandby;
+import com.zy.asrs.wcs.core.service.ShuttleStandbyService;
+import com.zy.asrs.wcs.utils.ExcelUtil;
+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.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/api")
+public class ShuttleStandbyController extends BaseController {
+
+ @Autowired
+ private ShuttleStandbyService shuttleStandbyService;
+
+ @PreAuthorize("hasAuthority('core:shuttleStandby:list')")
+ @PostMapping("/shuttleStandby/page")
+ public R page(@RequestBody Map<String, Object> map) {
+ BaseParam baseParam = buildParam(map, BaseParam.class);
+ PageParam<ShuttleStandby, BaseParam> pageParam = new PageParam<>(baseParam, ShuttleStandby.class);
+ return R.ok().add(shuttleStandbyService.page(pageParam, pageParam.buildWrapper(true)));
+ }
+
+ @PreAuthorize("hasAuthority('core:shuttleStandby:list')")
+ @PostMapping("/shuttleStandby/list")
+ public R list(@RequestBody Map<String, Object> map) {
+ return R.ok().add(shuttleStandbyService.list());
+ }
+
+ @PreAuthorize("hasAuthority('core:shuttleStandby:list')")
+ @GetMapping("/shuttleStandby/{id}")
+ public R get(@PathVariable("id") Long id) {
+ return R.ok().add(shuttleStandbyService.getById(id));
+ }
+
+ @PreAuthorize("hasAuthority('core:shuttleStandby:save')")
+ @OperationLog("娣诲姞绌挎杞﹀緟鏈轰綅")
+ @PostMapping("/shuttleStandby/save")
+ public R save(@RequestBody ShuttleStandby shuttleStandby) {
+ if (!shuttleStandbyService.save(shuttleStandby)) {
+ return R.error("娣诲姞澶辫触");
+ }
+ return R.ok("娣诲姞鎴愬姛");
+ }
+
+ @PreAuthorize("hasAuthority('core:shuttleStandby:update')")
+ @OperationLog("淇敼绌挎杞﹀緟鏈轰綅")
+ @PostMapping("/shuttleStandby/update")
+ public R update(@RequestBody ShuttleStandby shuttleStandby) {
+ if (!shuttleStandbyService.updateById(shuttleStandby)) {
+ return R.error("淇敼澶辫触");
+ }
+ return R.ok("淇敼鎴愬姛");
+ }
+
+ @PreAuthorize("hasAuthority('core:shuttleStandby:remove')")
+ @OperationLog("鍒犻櫎绌挎杞﹀緟鏈轰綅")
+ @PostMapping("/shuttleStandby/remove/{ids}")
+ public R remove(@PathVariable Long[] ids) {
+ if (!shuttleStandbyService.removeByIds(Arrays.asList(ids))) {
+ return R.error("鍒犻櫎澶辫触");
+ }
+ return R.ok("鍒犻櫎鎴愬姛");
+ }
+
+ @PreAuthorize("hasAuthority('core:shuttleStandby:list')")
+ @PostMapping("/shuttleStandby/query")
+ public R query(@RequestParam(required = false) String condition) {
+ List<KeyValVo> vos = new ArrayList<>();
+ LambdaQueryWrapper<ShuttleStandby> wrapper = new LambdaQueryWrapper<>();
+ if (!Cools.isEmpty(condition)) {
+ wrapper.like(ShuttleStandby::getName, condition);
+ }
+ shuttleStandbyService.page(new Page<>(1, 30), wrapper).getRecords().forEach(
+ item -> vos.add(new KeyValVo(item.getId(), item.getName()))
+ );
+ return R.ok().add(vos);
+ }
+
+ @PreAuthorize("hasAuthority('core:shuttleStandby:list')")
+ @PostMapping("/shuttleStandby/export")
+ public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
+ ExcelUtil.build(ExcelUtil.create(shuttleStandbyService.list(), ShuttleStandby.class), response);
+ }
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/BasLift.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/BasLift.java
new file mode 100644
index 0000000..5c1166d
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/BasLift.java
@@ -0,0 +1,250 @@
+package com.zy.asrs.wcs.core.entity;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.zy.asrs.wcs.rcs.entity.Device;
+import com.zy.asrs.wcs.rcs.service.DeviceService;
+import com.zy.asrs.wcs.system.entity.Host;
+import com.zy.asrs.wcs.system.entity.User;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.SpringUtils;
+import com.zy.asrs.wcs.system.service.UserService;
+import com.zy.asrs.wcs.system.service.HostService;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@TableName("wcs_bas_lift")
+public class BasLift implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value= "")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 璁惧id
+ */
+ @ApiModelProperty(value= "璁惧id")
+ private Long deviceId;
+
+ /**
+ * 鎻愬崌鏈哄彿
+ */
+ @ApiModelProperty(value= "鎻愬崌鏈哄彿")
+ private Integer liftNo;
+
+ /**
+ * 褰撳墠浠诲姟鐘舵��
+ */
+ @ApiModelProperty(value= "褰撳墠浠诲姟鐘舵��")
+ private Integer status;
+
+ /**
+ * 浠诲姟鍙�
+ */
+ @ApiModelProperty(value= "浠诲姟鍙�")
+ private Integer taskNo;
+
+ /**
+ * 淇敼浜哄憳
+ */
+ @ApiModelProperty(value= "淇敼浜哄憳")
+ private Long updateBy;
+
+ /**
+ * 鍒涘缓浜哄憳
+ */
+ @ApiModelProperty(value= "鍒涘缓浜哄憳")
+ private Long createBy;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @ApiModelProperty(value= "鍒涘缓鏃堕棿")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @ApiModelProperty(value= "淇敼鏃堕棿")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date updateTime;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value= "澶囨敞")
+ private String memo;
+
+ /**
+ * 浣滀笟鏍囪
+ */
+ @ApiModelProperty(value= "浣滀笟鏍囪")
+ private Integer pakMk;
+
+ /**
+ * 鏄惁鍒犻櫎 1: 鏄� 0: 鍚�
+ */
+ @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ")
+ @TableLogic
+ private Integer deleted;
+
+ /**
+ * 鎵�灞炴満鏋�
+ */
+ @ApiModelProperty(value= "鎵�灞炴満鏋�")
+ private Long hostId;
+
+ /**
+ * 璁惧鐘舵��
+ */
+ @ApiModelProperty(value= "璁惧鐘舵��")
+ private String protocol;
+
+ /**
+ * 灏忚溅鏄惁鍙崲灞� 0: 鍚� 1: 鏄�
+ */
+ @ApiModelProperty(value= "灏忚溅鏄惁鍙崲灞� 0: 鍚� 1: 鏄� ")
+ private Integer transfer;
+
+ /**
+ * 鎺�
+ */
+ @ApiModelProperty(value= "鎺�")
+ private Integer row;
+
+ /**
+ * 鍒�
+ */
+ @ApiModelProperty(value= "鍒�")
+ private Integer bay;
+
+ public BasLift() {}
+
+ public BasLift(Long deviceId,Integer liftNo,Integer status,Integer taskNo,Long updateBy,Long createBy,Date createTime,Date updateTime,String memo,Integer pakMk,Integer deleted,Long hostId,String protocol,Integer transfer) {
+ this.deviceId = deviceId;
+ this.liftNo = liftNo;
+ this.status = status;
+ this.taskNo = taskNo;
+ this.updateBy = updateBy;
+ this.createBy = createBy;
+ this.createTime = createTime;
+ this.updateTime = updateTime;
+ this.memo = memo;
+ this.pakMk = pakMk;
+ this.deleted = deleted;
+ this.hostId = hostId;
+ this.protocol = protocol;
+ this.transfer = transfer;
+ }
+
+// BasLift basLift = new BasLift(
+// null, // 璁惧id
+// null, // 鎻愬崌鏈哄彿[闈炵┖]
+// null, // 褰撳墠浠诲姟鐘舵��
+// null, // 浠诲姟鍙�
+// null, // 淇敼浜哄憳
+// null, // 鍒涘缓浜哄憳
+// null, // 鍒涘缓鏃堕棿
+// null, // 淇敼鏃堕棿
+// null, // 澶囨敞
+// null, // 浣滀笟鏍囪
+// null, // 鏄惁鍒犻櫎
+// null, // 鎵�灞炴満鏋�
+// null, // 璁惧鐘舵��
+// null // 灏忚溅鏄惁鍙崲灞�
+// );
+
+ public String getDeviceId$(){
+ DeviceService service = SpringUtils.getBean(DeviceService.class);
+ Device device = service.getById(this.deviceId);
+ if (!Cools.isEmpty(device)){
+ return String.valueOf(device.getDeviceNo());
+ }
+ return null;
+ }
+
+ public String getUpdateBy$(){
+ UserService service = SpringUtils.getBean(UserService.class);
+ User user = service.getById(this.updateBy);
+ if (!Cools.isEmpty(user)){
+ return String.valueOf(user.getNickname());
+ }
+ return null;
+ }
+
+ public String getCreateBy$(){
+ UserService service = SpringUtils.getBean(UserService.class);
+ User user = service.getById(this.createBy);
+ if (!Cools.isEmpty(user)){
+ return String.valueOf(user.getNickname());
+ }
+ return null;
+ }
+
+ public String getCreateTime$(){
+ if (Cools.isEmpty(this.createTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+ }
+
+ public String getUpdateTime$(){
+ if (Cools.isEmpty(this.updateTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+ }
+
+ public String getDeleted$(){
+ if (null == this.deleted){ return null; }
+ switch (this.deleted){
+ case 1:
+ return "鏄�";
+ case 0:
+ return "鍚�";
+ default:
+ return String.valueOf(this.deleted);
+ }
+ }
+
+ public String getHostId$(){
+ HostService service = SpringUtils.getBean(HostService.class);
+ Host host = service.getById(this.hostId);
+ if (!Cools.isEmpty(host)){
+ return String.valueOf(host.getName());
+ }
+ return null;
+ }
+
+ public String getTransfer$(){
+ if (null == this.transfer){ return null; }
+ switch (this.transfer){
+ case 0:
+ return "鍚�";
+ case 1:
+ return "鏄�";
+ default:
+ return String.valueOf(this.transfer);
+ }
+ }
+
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/ShuttleStandby.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/ShuttleStandby.java
new file mode 100644
index 0000000..1c71373
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/ShuttleStandby.java
@@ -0,0 +1,246 @@
+package com.zy.asrs.wcs.core.entity;
+
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.zy.asrs.wcs.system.entity.Host;
+import com.zy.asrs.wcs.system.entity.User;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.SpringUtils;
+import com.zy.asrs.wcs.system.service.UserService;
+import com.zy.asrs.wcs.system.service.HostService;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@TableName("wcs_shuttle_standby")
+public class ShuttleStandby implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @ApiModelProperty(value= "ID")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 缂栧彿
+ */
+ @ApiModelProperty(value= "缂栧彿")
+ private String uuid;
+
+ /**
+ * 鍚嶇О
+ */
+ @ApiModelProperty(value= "鍚嶇О")
+ private String name;
+
+ /**
+ * 鏍囪瘑
+ */
+ @ApiModelProperty(value= "鏍囪瘑")
+ private String flag;
+
+ /**
+ * 鎵�灞炴満鏋�
+ */
+ @ApiModelProperty(value= "鎵�灞炴満鏋�")
+ private Long hostId;
+
+ /**
+ * 鐘舵�� 1: 姝e父 0: 绂佺敤
+ */
+ @ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 绂佺敤 ")
+ private Integer status;
+
+ /**
+ * 鏄惁鍒犻櫎 1: 鏄� 0: 鍚�
+ */
+ @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ")
+ @TableLogic
+ private Integer deleted;
+
+ /**
+ * 娣诲姞鏃堕棿
+ */
+ @ApiModelProperty(value= "娣诲姞鏃堕棿")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ /**
+ * 娣诲姞浜哄憳
+ */
+ @ApiModelProperty(value= "娣诲姞浜哄憳")
+ private Long createBy;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @ApiModelProperty(value= "淇敼鏃堕棿")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date updateTime;
+
+ /**
+ * 淇敼浜哄憳
+ */
+ @ApiModelProperty(value= "淇敼浜哄憳")
+ private Long updateBy;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value= "澶囨敞")
+ private String memo;
+
+ /**
+ * 璁惧鍙�
+ */
+ @ApiModelProperty(value= "璁惧鍙�")
+ private Long deviceId;
+
+ /**
+ * 璁惧妤煎眰妤煎眰
+ */
+ @ApiModelProperty(value= "璁惧妤煎眰妤煎眰")
+ private Integer deviceLev;
+
+ /**
+ * 璁惧搴撲綅鍙�
+ */
+ @ApiModelProperty(value= "璁惧搴撲綅鍙�")
+ private String deviceLoc;
+
+ /**
+ * 璁惧寰呮満浣嶅簱浣嶅彿
+ */
+ @ApiModelProperty(value= "璁惧寰呮満浣嶅簱浣嶅彿")
+ private String deviceStandbyLoc;
+
+ /**
+ * 寰呮満浣嶅簱浣嶅彿
+ */
+ @ApiModelProperty(value= "寰呮満浣嶅簱浣嶅彿")
+ private String standbyLoc;
+
+ public ShuttleStandby() {}
+
+ public ShuttleStandby(String uuid,String name,String flag,Long hostId,Integer status,Integer deleted,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo,Long deviceId,Integer deviceLev,String deviceLoc,String deviceStandbyLoc,String standbyLoc) {
+ this.uuid = uuid;
+ this.name = name;
+ this.flag = flag;
+ this.hostId = hostId;
+ this.status = status;
+ this.deleted = deleted;
+ this.createTime = createTime;
+ this.createBy = createBy;
+ this.updateTime = updateTime;
+ this.updateBy = updateBy;
+ this.memo = memo;
+ this.deviceId = deviceId;
+ this.deviceLev = deviceLev;
+ this.deviceLoc = deviceLoc;
+ this.deviceStandbyLoc = deviceStandbyLoc;
+ this.standbyLoc = standbyLoc;
+ }
+
+// ShuttleStandby shuttleStandby = new ShuttleStandby(
+// null, // 缂栧彿
+// null, // 鍚嶇О
+// null, // 鏍囪瘑
+// null, // 鎵�灞炴満鏋�
+// null, // 鐘舵��
+// null, // 鏄惁鍒犻櫎
+// null, // 娣诲姞鏃堕棿
+// null, // 娣诲姞浜哄憳
+// null, // 淇敼鏃堕棿
+// null, // 淇敼浜哄憳
+// null, // 澶囨敞
+// null, // 璁惧鍙�
+// null, // 璁惧妤煎眰妤煎眰
+// null, // 璁惧搴撲綅鍙�
+// null, // 璁惧寰呮満浣嶅簱浣嶅彿
+// null // 寰呮満浣嶅簱浣嶅彿
+// );
+
+ public String getHostId$(){
+ HostService service = SpringUtils.getBean(HostService.class);
+ Host host = service.getById(this.hostId);
+ if (!Cools.isEmpty(host)){
+ return String.valueOf(host.getName());
+ }
+ return null;
+ }
+
+ public String getStatus$(){
+ if (null == this.status){ return null; }
+ switch (this.status){
+ case 1:
+ return "姝e父";
+ case 0:
+ return "绂佺敤";
+ default:
+ return String.valueOf(this.status);
+ }
+ }
+
+ public String getDeleted$(){
+ if (null == this.deleted){ return null; }
+ switch (this.deleted){
+ case 1:
+ return "鏄�";
+ case 0:
+ return "鍚�";
+ default:
+ return String.valueOf(this.deleted);
+ }
+ }
+
+ public String getCreateTime$(){
+ if (Cools.isEmpty(this.createTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+ }
+
+ public String getCreateBy$(){
+ UserService service = SpringUtils.getBean(UserService.class);
+ User user = service.getById(this.createBy);
+ if (!Cools.isEmpty(user)){
+ return String.valueOf(user.getNickname());
+ }
+ return null;
+ }
+
+ public String getUpdateTime$(){
+ if (Cools.isEmpty(this.updateTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+ }
+
+ public String getUpdateBy$(){
+ UserService service = SpringUtils.getBean(UserService.class);
+ User user = service.getById(this.updateBy);
+ if (!Cools.isEmpty(user)){
+ return String.valueOf(user.getNickname());
+ }
+ return null;
+ }
+
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
index 2702cdc..c596e27 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
@@ -3,12 +3,15 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.wcs.core.domain.dto.MotionDto;
+import com.zy.asrs.wcs.core.entity.ShuttleStandby;
import com.zy.asrs.wcs.core.entity.Task;
import com.zy.asrs.wcs.core.model.enums.DeviceCtgType;
import com.zy.asrs.wcs.core.model.enums.MotionCtgType;
import com.zy.asrs.wcs.core.model.enums.TaskStsType;
import com.zy.asrs.wcs.core.model.enums.WorkZoneType;
+import com.zy.asrs.wcs.core.service.ShuttleStandbyService;
import com.zy.asrs.wcs.core.service.TaskService;
+import com.zy.asrs.wcs.core.utils.ConveyorDispatcher;
import com.zy.asrs.wcs.core.utils.LiftDispatcher;
import com.zy.asrs.wcs.core.utils.ShuttleDispatcher;
import com.zy.asrs.wcs.core.utils.Utils;
@@ -16,9 +19,11 @@
import com.zy.asrs.wcs.core.entity.Motion;
import com.zy.asrs.wcs.rcs.entity.Device;
import com.zy.asrs.wcs.rcs.model.enums.SlaveType;
+import com.zy.asrs.wcs.rcs.model.protocol.LiftProtocol;
import com.zy.asrs.wcs.rcs.model.protocol.ShuttleProtocol;
import com.zy.asrs.wcs.core.service.MotionService;
import com.zy.asrs.wcs.rcs.service.DeviceService;
+import com.zy.asrs.wcs.rcs.thread.LiftThread;
import com.zy.asrs.wcs.rcs.thread.ShuttleThread;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -44,19 +49,22 @@
private ShuttleDispatcher shuttleDispatcher;
@Autowired
private LiftDispatcher liftDispatcher;
-// @Autowired
-// private ConveyorDispatcher conveyorDispatcher;
+ @Autowired
+ private ConveyorDispatcher conveyorDispatcher;
@Autowired
private DeviceService deviceService;
+ @Autowired
+ private ShuttleStandbyService shuttleStandbyService;
public List<Motion> generateMotion(Task task) {
List<Motion> motionList = new ArrayList<>();
- switch (Objects.requireNonNull(WorkZoneType.query(task.getTaskSts() == TaskStsType.NEW_INBOUND.sts ? task.getOriginSite() : task.getDestSite()))) {
- case FIRST_ZONE:
- motionList = this.generateFirstZoneMotion(task);
- break;
- default:
- }
+// switch (Objects.requireNonNull(WorkZoneType.query(task.getTaskSts() == TaskStsType.NEW_INBOUND.sts ? task.getOriginSite() : task.getDestSite()))) {
+// case FIRST_ZONE:
+// motionList = this.generateFirstZoneMotion(task);
+// break;
+// default:
+// }
+ motionList = this.generateFirstZoneMotion(task);
return motionList;
}
@@ -714,164 +722,189 @@
*/
public List<Motion> generateChargeMotion(Task task) {
List<Motion> motionList = new ArrayList<>();
-// if (wrkCharge.getWrkSts() != WrkMastStsType.NEW_CHARGE.sts || wrkCharge.getIoType() != WrkIoTypeType.CHARGE.sts) {
-// return motionList;
-// }
-//
-// // locNo
-// String chargeLocNo = wrkCharge.getLocNo();
-//
-// // lift
-// Integer transferLiftNo = 2;
-// SiemensLiftThread liftThread = (SiemensLiftThread) SlaveConnection.get(SlaveType.Lift, transferLiftNo);
-// LiftProtocol liftProtocol = liftThread.getLiftProtocol();
-// if (liftProtocol == null || liftProtocol.getLiftNo() == null) {
-// return motionList;
-// }
-//
-// // shuttle
-// Integer shuttleNo = wrkCharge.getShuttleNo();
-// ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-// ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
-// if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) {
-// return motionList;
-// }
-// if (!shuttleProtocol.isIdle()) {
-// return motionList;
-// }
-//
-// //妫�娴嬬┛姊溅鏄惁鏈変换鍔$粦瀹�
-// boolean shuttleResult = Utils.checkShuttleHasBinding(shuttleProtocol.getShuttleNo().intValue());
-// if (shuttleResult) {
-// //瀛樺湪浠诲姟锛岀姝㈣В鏋�
-// return motionList;
-// }
-//
-// //妫�娴嬫彁鍗囨満鏄惁鏈変换鍔$粦瀹�
-// boolean liftResult = Utils.checkLiftHasBinding(transferLiftNo);
-// if (liftResult) {
-// //瀛樺湪浠诲姟锛岀姝㈣В鏋�
-// return motionList;
-// }
-//
-// String shuttleLocNo = shuttleProtocol.getCurrentLocNo();
-//
-// //绌挎杞﹀埌鎻愬崌鏈哄簱浣嶅彿
-// String liftLocNoTo = LiftCodeType.getLocNo(transferLiftNo, Utils.getLev(shuttleLocNo));
-//
-// //绌挎杞﹀嚭鎻愬崌鏈哄簱浣嶅彿
-// String liftLocNoFrom = LiftCodeType.getLocNo(transferLiftNo, Utils.getLev(wrkCharge.getLocNo()));
-//
-// //绌挎杞﹀埌鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙�
-// String standbyLocNoTo = LiftCodeType.getStandbyLocNo(transferLiftNo, Utils.getLev(shuttleLocNo));
-//
-// //绌挎杞﹀嚭鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙�
-// String standbyLocNoFrom = LiftCodeType.getStandbyLocNo(transferLiftNo, Utils.getLev(wrkCharge.getLocNo()));
-//
-// // 鍒ゆ柇绌挎杞︽槸鍚﹀湪鍏呯數灞�
-// if (Utils.getLev(shuttleLocNo) == Utils.getLev(chargeLocNo)) {
-//
-// // 绌挎杞﹁蛋琛岃嚦鍏呯數妗╁簱浣�
-// motionList.addAll(kernelService.shuttleMove(
-// MotionDto.build((dto -> {
-// dto.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());
-// dto.setLocNo(shuttleLocNo);
-// })),
-// MotionDto.build((dto -> {
-// dto.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());
-// dto.setLocNo(chargeLocNo);
-// })),
-// MotionCtgType.SHUTTLE_MOVE
-// ));
-//
-// } else {
-//
-// // 绌挎杞﹁蛋琛岃嚦鎻愬崌鏈哄緟鏈轰綅
-// motionList.addAll(kernelService.shuttleMove(
-// MotionDto.build((dto -> {
-// dto.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());
-// dto.setLocNo(shuttleLocNo);
-// })),
-// MotionDto.build((dto -> {
-// dto.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());
-// dto.setLocNo(standbyLocNoTo);
-// })),
-// MotionCtgType.SHUTTLE_MOVE
-// ));
-//
-// // 鎻愬崌鏈虹┖杞界Щ鍔ㄥ埌绌挎杞﹀眰
-// motionList.addAll(kernelService.liftMove(
-// null
-// , MotionDto.build((dto -> {
-// dto.setLiftNo(transferLiftNo);
-// dto.setLev(Utils.getLev(shuttleLocNo));
-// }))
-// ));
-//
-// // 绌挎杞︽彁鍗囨満寰呮満浣嶈嚦鎻愬崌鏈哄簱浣�
-// motionList.addAll(kernelService.shuttleMove(
-// MotionDto.build((dto -> {
-// dto.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());
-// dto.setLocNo(standbyLocNoTo);
-// })),
-// MotionDto.build((dto -> {
-// dto.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());
-// dto.setLiftNo(transferLiftNo);
-// dto.setLocNo(liftLocNoTo);
-// })),
-// MotionCtgType.SHUTTLE_MOVE_TO_LIFT
-// ));
-//
-// // 鎻愬崌鏈烘惉杞� 鑷� 杈撻�佺嚎灞�
-// motionList.addAll(kernelService.liftMoveShuttle(
-// MotionDto.build((dto -> {
-// dto.setLiftNo(transferLiftNo);
-// dto.setLev(Utils.getLev(shuttleLocNo));
-// })),
-// MotionDto.build((dto -> {
-// dto.setLiftNo(transferLiftNo);
-// dto.setLev(Utils.getLev(chargeLocNo));
-// }))
-// ));
-//
-// // 绌挎杞︽彁鍗囨満鑷虫彁鍗囨満寰呮満浣�
-// motionList.addAll(kernelService.shuttleMove(
-// MotionDto.build((dto -> {
-// dto.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());
-// dto.setLiftNo(transferLiftNo);
-// dto.setLocNo(liftLocNoFrom);
-// })),
-// MotionDto.build((dto -> {
-// dto.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());
-// dto.setLocNo(standbyLocNoFrom);
-// })),
-// MotionCtgType.SHUTTLE_MOVE_FROM_LIFT
-// ));
-//
-// // 绌挎杞︽彁鍗囨満寰呮満浣嶈嚦鍏呯數浣�
-// motionList.addAll(kernelService.shuttleMove(
-// MotionDto.build((dto -> {
-// dto.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());
-// dto.setLocNo(standbyLocNoFrom);
-// })),
-// MotionDto.build((dto -> {
-// dto.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());
-// dto.setLocNo(chargeLocNo);
-// })),
-// MotionCtgType.SHUTTLE_MOVE
-// ));
-//
-// wrkCharge.setLiftNo(transferLiftNo);
-// wrkChargeMapper.updateById(wrkCharge);
-// }
-//
-// // 绌挎杞﹀紑濮嬪厖鐢�
-// motionList.addAll(kernelService.shuttleCharge(
-// null,
-// MotionDto.build((dto -> {
-// dto.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());
-// }))
-// ));
+ if (task.getTaskSts() != TaskStsType.NEW_CHARGE.sts) {
+ return motionList;
+ }
+
+ // locNo
+ String chargeLocNo = task.getDestLoc();
+
+ // shuttle
+ Device shuttleDevice = deviceService.getOne(new LambdaQueryWrapper<Device>()
+ .eq(Device::getDeviceNo, task.getShuttleNo())
+ .eq(Device::getDeviceType, DeviceCtgType.SHUTTLE.val())
+ .eq(Device::getHostId, task.getHostId())
+ .eq(Device::getStatus, 1));
+ if (shuttleDevice == null) {
+ return motionList;
+ }
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleDevice.getId().intValue());
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) {
+ return motionList;
+ }
+ if (!shuttleThread.isIdle()) {
+ return motionList;
+ }
+
+ String shuttleLocNo = shuttleProtocol.getCurrentLocNo();
+
+ // lift
+ Device transferLiftDevice = Utils.getRecentTransferLift(shuttleLocNo, shuttleProtocol.getShuttleNo());
+ if (transferLiftDevice == null) {
+ return motionList;
+ }
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, transferLiftDevice.getId().intValue());
+ LiftProtocol liftProtocol = liftThread.getStatus();
+ if (liftProtocol == null || liftProtocol.getLiftNo() == null) {
+ return motionList;
+ }
+
+ //妫�娴嬬┛姊溅鏄惁鏈変换鍔$粦瀹�
+ boolean shuttleResult = Utils.checkShuttleHasBinding(shuttleDevice);
+ if (shuttleResult) {
+ //瀛樺湪浠诲姟锛岀姝㈣В鏋�
+ return motionList;
+ }
+
+ //妫�娴嬫彁鍗囨満鏄惁鏈変换鍔$粦瀹�
+ boolean liftResult = Utils.checkLiftHasBinding(Integer.parseInt(transferLiftDevice.getDeviceNo()));
+ if (liftResult) {
+ //瀛樺湪浠诲姟锛岀姝㈣В鏋�
+ return motionList;
+ }
+
+ //鑾峰彇灏忚溅寰呮満搴撲綅 ==> 杩涙彁鍗囨満
+ ShuttleStandby shuttleStandbyTo = shuttleStandbyService.getOne(new LambdaQueryWrapper<ShuttleStandby>()
+ .eq(ShuttleStandby::getDeviceId, transferLiftDevice.getId())
+ .eq(ShuttleStandby::getDeviceLev, Utils.getLev(shuttleLocNo))
+ .eq(ShuttleStandby::getStatus, 1));
+
+ //鑾峰彇灏忚溅寰呮満搴撲綅 ==> 鍑烘彁鍗囨満
+ ShuttleStandby shuttleStandbyFrom = shuttleStandbyService.getOne(new LambdaQueryWrapper<ShuttleStandby>()
+ .eq(ShuttleStandby::getDeviceId, transferLiftDevice.getId())
+ .eq(ShuttleStandby::getDeviceLev, Utils.getLev(chargeLocNo))
+ .eq(ShuttleStandby::getStatus, 1));
+ if (shuttleStandbyTo == null || shuttleStandbyFrom == null) {
+ return motionList;
+ }
+
+ //绌挎杞﹁繘鎻愬崌鏈哄簱浣嶅彿
+ String liftLocNoTo = shuttleStandbyTo.getDeviceLoc();
+
+ //绌挎杞﹀嚭鎻愬崌鏈哄簱浣嶅彿
+ String liftLocNoFrom = shuttleStandbyFrom.getDeviceLoc();
+
+ //绌挎杞﹁繘鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙�
+ String standbyLocNoTo = shuttleStandbyTo.getDeviceStandbyLoc();
+
+ //绌挎杞﹀嚭鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙�
+ String standbyLocNoFrom = shuttleStandbyFrom.getDeviceStandbyLoc();
+
+ // 鍒ゆ柇绌挎杞︽槸鍚﹀湪鍏呯數灞�
+ if (Utils.getLev(shuttleLocNo) == Utils.getLev(chargeLocNo)) {
+
+ // 绌挎杞﹁蛋琛岃嚦鍏呯數妗╁簱浣�
+ motionList.addAll(kernelService.shuttleMove(
+ MotionDto.build((dto -> {
+ dto.setShuttleNo(shuttleDevice.getId().intValue());
+ dto.setLocNo(shuttleLocNo);
+ })),
+ MotionDto.build((dto -> {
+ dto.setShuttleNo(shuttleDevice.getId().intValue());
+ dto.setLocNo(chargeLocNo);
+ })),
+ MotionCtgType.SHUTTLE_MOVE
+ ));
+
+ } else {
+
+ // 绌挎杞﹁蛋琛岃嚦鎻愬崌鏈哄緟鏈轰綅
+ motionList.addAll(kernelService.shuttleMove(
+ MotionDto.build((dto -> {
+ dto.setShuttleNo(shuttleDevice.getId().intValue());
+ dto.setLocNo(shuttleLocNo);
+ })),
+ MotionDto.build((dto -> {
+ dto.setShuttleNo(shuttleDevice.getId().intValue());
+ dto.setLocNo(standbyLocNoTo);
+ })),
+ MotionCtgType.SHUTTLE_MOVE
+ ));
+
+ // 鎻愬崌鏈虹┖杞界Щ鍔ㄥ埌绌挎杞﹀眰
+ motionList.addAll(kernelService.liftMove(
+ null
+ , MotionDto.build((dto -> {
+ dto.setLiftNo(transferLiftDevice.getId().intValue());
+ dto.setLev(Utils.getLev(shuttleLocNo));
+ }))
+ ));
+
+ // 绌挎杞︽彁鍗囨満寰呮満浣嶈嚦鎻愬崌鏈哄簱浣�
+ motionList.addAll(kernelService.shuttleMove(
+ MotionDto.build((dto -> {
+ dto.setShuttleNo(shuttleDevice.getId().intValue());
+ dto.setLocNo(standbyLocNoTo);
+ })),
+ MotionDto.build((dto -> {
+ dto.setShuttleNo(shuttleDevice.getId().intValue());
+ dto.setLiftNo(transferLiftDevice.getId().intValue());
+ dto.setLocNo(liftLocNoTo);
+ })),
+ MotionCtgType.SHUTTLE_MOVE_TO_LIFT
+ ));
+
+ // 鎻愬崌鏈烘惉杞� 鑷� 杈撻�佺嚎灞�
+ motionList.addAll(kernelService.liftMoveShuttle(
+ MotionDto.build((dto -> {
+ dto.setLiftNo(transferLiftDevice.getId().intValue());
+ dto.setLev(Utils.getLev(shuttleLocNo));
+ })),
+ MotionDto.build((dto -> {
+ dto.setLiftNo(transferLiftDevice.getId().intValue());
+ dto.setLev(Utils.getLev(chargeLocNo));
+ }))
+ ));
+
+ // 绌挎杞︽彁鍗囨満鑷虫彁鍗囨満寰呮満浣�
+ motionList.addAll(kernelService.shuttleMove(
+ MotionDto.build((dto -> {
+ dto.setShuttleNo(shuttleDevice.getId().intValue());
+ dto.setLiftNo(transferLiftDevice.getId().intValue());
+ dto.setLocNo(liftLocNoFrom);
+ })),
+ MotionDto.build((dto -> {
+ dto.setShuttleNo(shuttleDevice.getId().intValue());
+ dto.setLocNo(standbyLocNoFrom);
+ })),
+ MotionCtgType.SHUTTLE_MOVE_FROM_LIFT
+ ));
+
+ // 绌挎杞︽彁鍗囨満寰呮満浣嶈嚦鍏呯數浣�
+ motionList.addAll(kernelService.shuttleMove(
+ MotionDto.build((dto -> {
+ dto.setShuttleNo(shuttleDevice.getId().intValue());
+ dto.setLocNo(standbyLocNoFrom);
+ })),
+ MotionDto.build((dto -> {
+ dto.setShuttleNo(shuttleDevice.getId().intValue());
+ dto.setLocNo(chargeLocNo);
+ })),
+ MotionCtgType.SHUTTLE_MOVE
+ ));
+
+ task.setLiftNo(Integer.parseInt(transferLiftDevice.getDeviceNo()));
+ taskService.updateById(task);
+ }
+
+ // 绌挎杞﹀紑濮嬪厖鐢�
+ motionList.addAll(kernelService.shuttleCharge(
+ null,
+ MotionDto.build((dto -> {
+ dto.setShuttleNo(shuttleDevice.getId().intValue());
+ }))
+ ));
return motionList;
}
@@ -881,40 +914,47 @@
*/
public List<Motion> generateShuttleChargeWrkComplete(Task task) {
List<Motion> motionList = new ArrayList<>();
-// if (wrkCharge.getWrkSts() != WrkMastStsType.NEW_MOVE.sts || wrkCharge.getIoType() != WrkIoTypeType.MOVE.sts) {
-// return motionList;
-// }
-//
-// // locNo
-// String locNo = wrkCharge.getLocNo();
-//
-// // shuttle
-// Integer shuttleNo = wrkCharge.getShuttleNo();
-// ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-// ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
-// if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) {
-// return motionList;
-// }
-//
-// String shuttleLocNo = shuttleProtocol.getCurrentLocNo();
-//
-// // 鍒ゆ柇绌挎杞︽槸鍚﹀湪鐩爣灞�
-// if (Utils.getLev(shuttleLocNo) == Utils.getLev(locNo)) {
-//
-// // 绌挎杞﹁蛋琛岃嚦鐩爣搴撲綅
-// motionList.addAll(kernelService.shuttleMove(
-// MotionDto.build((dto -> {
-// dto.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());
-// dto.setLocNo(shuttleLocNo);
-// })),
-// MotionDto.build((dto -> {
-// dto.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());
-// dto.setLocNo(locNo);
-// })),
-// MotionCtgType.SHUTTLE_MOVE
-// ));
-//
-// }
+ if (task.getTaskSts() != TaskStsType.NEW_MOVE.sts) {
+ return motionList;
+ }
+
+ // locNo
+ String locNo = task.getDestLoc();
+
+ // shuttle
+ Device shuttleDevice = deviceService.getOne(new LambdaQueryWrapper<Device>()
+ .eq(Device::getDeviceNo, task.getShuttleNo())
+ .eq(Device::getDeviceType, DeviceCtgType.SHUTTLE.val())
+ .eq(Device::getHostId, task.getHostId())
+ .eq(Device::getStatus, 1));
+ if (shuttleDevice == null) {
+ return motionList;
+ }
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleDevice.getId().intValue());
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) {
+ return motionList;
+ }
+
+ String shuttleLocNo = shuttleProtocol.getCurrentLocNo();
+
+ // 鍒ゆ柇绌挎杞︽槸鍚﹀湪鐩爣灞�
+ if (Utils.getLev(shuttleLocNo) == Utils.getLev(locNo)) {
+
+ // 绌挎杞﹁蛋琛岃嚦鐩爣搴撲綅
+ motionList.addAll(kernelService.shuttleMove(
+ MotionDto.build((dto -> {
+ dto.setShuttleNo(shuttleDevice.getId().intValue());
+ dto.setLocNo(shuttleLocNo);
+ })),
+ MotionDto.build((dto -> {
+ dto.setShuttleNo(shuttleDevice.getId().intValue());
+ dto.setLocNo(locNo);
+ })),
+ MotionCtgType.SHUTTLE_MOVE
+ ));
+
+ }
return motionList;
}
@@ -957,11 +997,11 @@
// 绌挎杞﹁蛋琛岃嚦鐩爣搴撲綅
motionList.addAll(kernelService.shuttleMove(
MotionDto.build((dto -> {
- dto.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());
+ dto.setShuttleNo(device.getId().intValue());
dto.setLocNo(shuttleLocNo);
})),
MotionDto.build((dto -> {
- dto.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());
+ dto.setShuttleNo(device.getId().intValue());
dto.setLocNo(locNo);
})),
MotionCtgType.SHUTTLE_MOVE
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/BasLiftMapper.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/BasLiftMapper.java
new file mode 100644
index 0000000..ecee5b3
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/BasLiftMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.wcs.core.mapper;
+
+import com.zy.asrs.wcs.core.entity.BasLift;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface BasLiftMapper extends BaseMapper<BasLift> {
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/ShuttleStandbyMapper.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/ShuttleStandbyMapper.java
new file mode 100644
index 0000000..7464706
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/ShuttleStandbyMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.wcs.core.mapper;
+
+import com.zy.asrs.wcs.core.entity.ShuttleStandby;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface ShuttleStandbyMapper extends BaseMapper<ShuttleStandby> {
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java
index 05ce37a..ddcac62 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java
@@ -36,6 +36,8 @@
List<Task> selectWorkingByShuttle(Integer shuttleNo);
+ List<Task> selectWorkingByLift(Integer liftNo);
+
Task selectChargeWorking(Integer shuttleNo);
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/BasLiftService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/BasLiftService.java
new file mode 100644
index 0000000..4789a24
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/BasLiftService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.wcs.core.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zy.asrs.wcs.core.entity.BasLift;
+
+public interface BasLiftService extends IService<BasLift> {
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/ShuttleStandbyService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/ShuttleStandbyService.java
new file mode 100644
index 0000000..85f5466
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/ShuttleStandbyService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.wcs.core.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zy.asrs.wcs.core.entity.ShuttleStandby;
+
+public interface ShuttleStandbyService extends IService<ShuttleStandby> {
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java
index 47a8862..166eb58 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java
@@ -34,6 +34,8 @@
List<Task> selectWorkingByShuttle(Integer shuttleNo);
+ List<Task> selectWorkingByLift(Integer liftNo);
+
Task selectChargeWorking(Integer shuttleNo);
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/BasLiftServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/BasLiftServiceImpl.java
new file mode 100644
index 0000000..b5b2fc3
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/BasLiftServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.wcs.core.service.impl;
+
+import com.zy.asrs.wcs.core.mapper.BasLiftMapper;
+import com.zy.asrs.wcs.core.entity.BasLift;
+import com.zy.asrs.wcs.core.service.BasLiftService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("basLiftService")
+public class BasLiftServiceImpl extends ServiceImpl<BasLiftMapper, BasLift> implements BasLiftService {
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
index 54c4852..741bed4 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
@@ -442,6 +442,11 @@
continue;
}
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ continue;
+ }
+
if (!shuttleThread.isCharging()) {
continue;
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/ShuttleStandbyServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/ShuttleStandbyServiceImpl.java
new file mode 100644
index 0000000..d24b76d
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/ShuttleStandbyServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.wcs.core.service.impl;
+
+import com.zy.asrs.wcs.core.mapper.ShuttleStandbyMapper;
+import com.zy.asrs.wcs.core.entity.ShuttleStandby;
+import com.zy.asrs.wcs.core.service.ShuttleStandbyService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("shuttleStandbyService")
+public class ShuttleStandbyServiceImpl extends ServiceImpl<ShuttleStandbyMapper, ShuttleStandby> implements ShuttleStandbyService {
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java
index 5d58baf..394edcf 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java
@@ -112,6 +112,11 @@
}
@Override
+ public List<Task> selectWorkingByLift(Integer liftNo) {
+ return this.baseMapper.selectWorkingByLift(liftNo);
+ }
+
+ @Override
public Task selectChargeWorking(Integer shuttleNo) {
return this.baseMapper.selectChargeWorking(shuttleNo);
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java
index d308757..6c3b59b 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java
@@ -4,9 +4,13 @@
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.SpringUtils;
import com.zy.asrs.framework.exception.CoolException;
+import com.zy.asrs.wcs.core.entity.BasLift;
import com.zy.asrs.wcs.core.entity.Task;
import com.zy.asrs.wcs.core.entity.TaskSerialNo;
+import com.zy.asrs.wcs.core.model.NavigateNode;
import com.zy.asrs.wcs.core.model.enums.DeviceCtgType;
+import com.zy.asrs.wcs.core.model.enums.NavigationMapType;
+import com.zy.asrs.wcs.core.service.BasLiftService;
import com.zy.asrs.wcs.core.service.TaskSerialNoService;
import com.zy.asrs.wcs.core.service.TaskService;
import com.zy.asrs.wcs.rcs.cache.SlaveConnection;
@@ -77,34 +81,38 @@
//鑾峰彇闄ょ櫧鍚嶅崟澶栫殑鎸囧畾妤煎眰鍏ㄩ儴绌挎杞y鍧愭爣鐐�
public static List<int[]> getShuttlePoints(Integer whiteShuttle, Integer lev) {
-// SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class);
+ DeviceService deviceService = SpringUtils.getBean(DeviceService.class);
ArrayList<int[]> list = new ArrayList<>();
-// for (ShuttleSlave slave : slaveProperties.getShuttle()) {
-// if (slave.getId().intValue() == whiteShuttle) {
-// continue;//璺宠繃鐧藉悕鍗�
-// }
-//
-// //鑾峰彇绌挎杞︽墍鍦ㄨ妭鐐逛綅缃�
-// ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId());
-// if (shuttleThread == null) {
-// continue;
-// }
-// ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
-// if (shuttleProtocol == null) {
-// continue;
-// }
-//
-// if (shuttleProtocol.getCurrentLocNo() == null) {
-// continue;
-// }
-//
-// if (lev != Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
-// continue;//妤煎眰涓嶅悓
-// }
-//
-// int[] xyPosition = NavigatePositionConvert.positionToXY(shuttleProtocol.getCurrentLocNo());//閫氳繃搴撲綅鍙疯幏鍙杧y鍧愭爣
-// list.add(xyPosition);
-// }
+
+ List<Device> devices = deviceService.list(new LambdaQueryWrapper<Device>()
+ .eq(Device::getDeviceType, DeviceCtgType.SHUTTLE.val())
+ .eq(Device::getStatus, 1));
+ for (Device device : devices) {
+ if (Integer.parseInt(device.getDeviceNo()) == whiteShuttle) {
+ continue;//璺宠繃鐧藉悕鍗�
+ }
+
+ //鑾峰彇绌挎杞︽墍鍦ㄨ妭鐐逛綅缃�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getId().intValue());
+ if (shuttleThread == null) {
+ continue;
+ }
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ continue;
+ }
+
+ if (shuttleProtocol.getCurrentLocNo() == null) {
+ continue;
+ }
+
+ if (lev != Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
+ continue;//妤煎眰涓嶅悓
+ }
+
+ int[] xyPosition = NavigatePositionConvert.positionToXY(shuttleProtocol.getCurrentLocNo());//閫氳繃搴撲綅鍙疯幏鍙杧y鍧愭爣
+ list.add(xyPosition);
+ }
return list;
}
@@ -175,4 +183,64 @@
throw new CoolException("宸ヤ綔鍙风敓鎴愬け璐�");
}
+ /**
+ * 妫�娴嬬┛姊溅鏄惁鏈変换鍔$粦瀹�
+ */
+ public static boolean checkShuttleHasBinding(Device device) {
+ TaskService taskService = SpringUtils.getBean(TaskService.class);
+ List<Task> tasks = taskService.selectWorkingByShuttle(Integer.parseInt(device.getDeviceNo()));
+ if (tasks.isEmpty()) {
+ return false;//鏃犱换鍔$粦瀹�
+ }
+ return true;//鏈変换鍔$粦瀹�
+ }
+
+ /**
+ * 妫�娴嬫彁鍗囨満鏄惁鏈変换鍔$粦瀹�
+ */
+ public static boolean checkLiftHasBinding(Integer liftNo) {
+ TaskService taskService = SpringUtils.getBean(TaskService.class);
+ List<Task> tasks = taskService.selectWorkingByLift(liftNo);
+ if (tasks.isEmpty()) {
+ return false;//鏃犱换鍔$粦瀹�
+ }
+ return true;//鏈変换鍔$粦瀹�
+ }
+
+ /**
+ * 鑾峰彇璺濈鐩爣搴撲綅鏈�杩戠殑鎻愬崌鏈�
+ */
+ public static Device getRecentTransferLift(String locNo, Integer shuttleNo) {
+ BasLiftService basLiftService = SpringUtils.getBean(BasLiftService.class);
+ DeviceService deviceService = SpringUtils.getBean(DeviceService.class);
+ if (basLiftService == null) {
+ return null;
+ }
+
+ Integer distance = Integer.MAX_VALUE;
+ Long liftDeviceId = null;
+ for (BasLift basLift : basLiftService.list(new LambdaQueryWrapper<BasLift>()
+ .eq(BasLift::getStatus, 1)
+ .eq(BasLift::getTransfer, 1))) {
+ int lev = Utils.getLev(locNo);
+ String liftLocNo = Utils.getLocNo(basLift.getRow(), basLift.getBay(), lev);
+ List<NavigateNode> nodeList = NavigateUtils.calc(locNo, liftLocNo, NavigationMapType.NONE.id, Utils.getShuttlePoints(shuttleNo, Utils.getLev(locNo)));
+ Integer originPathAllDistance = NavigateUtils.getOriginPathAllDistance(nodeList);//鎬昏窛绂�
+ if (originPathAllDistance < distance) {
+ distance = originPathAllDistance;
+ liftDeviceId = basLift.getDeviceId();
+ }
+ }
+
+ if (liftDeviceId == null) {
+ return null;
+ }
+
+ Device device = deviceService.getById(liftDeviceId);
+ if (device == null) {
+ return null;
+ }
+ return device;
+ }
+
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/FlowExecute.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/FlowExecute.java
index 2725023..f1158fe 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/FlowExecute.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/FlowExecute.java
@@ -1,8 +1,12 @@
package com.zy.asrs.wcs.rcs.thread;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
+import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.wcs.asrs.entity.param.FlowLogicCodeParam;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.codec.digest.Md5Crypt;
import org.springframework.stereotype.Component;
import java.util.List;
@@ -12,61 +16,99 @@
public class FlowExecute {
//鎵ц娴佺▼鍥�
- public boolean execute(List<FlowLogicCodeParam> list) {
- for (FlowLogicCodeParam param : list) {
- if (param.getId().equals("1")) {
- return executeFlow(param.getLogicTrue());
+ public boolean execute(List<JSONObject> list) {
+ String currentId = list.get(0).getString("id");
+
+ String listId = DigestUtils.md5Hex(JSON.toJSONString(list));
+
+ while (currentId != null) {
+ //鑾峰彇娴佺▼鍥�
+ JSONObject flow = findFLow(list, currentId);
+ if (flow == null) {
+ break;
}
- }
- System.out.println(list);
- return false;
- }
- private boolean executeFlow(List<Map<String, Object>> list) {
- for (Map<String, Object> map : list) {
- JSONObject data = (JSONObject) map.get("data");
- if (data.getString("type").equals("devp")) {
- JSONObject devp = data.getJSONObject("devpType");
- String devpNo = devp.getString("devpNo");//杈撻�佺嚎PLC
- String staNo = devp.getString("staNo");//绔欏彿
- Boolean enableStaStatus = devp.getBoolean("enableStaStatus");//鍒ゆ柇绔欑偣鐘舵��
- JSONArray staStatus = devp.getJSONArray("staStatus");//绔欑偣鐘舵�佸垪琛�
- String staJudgementFailExecute = devp.getString("staJudgementFailExecute");//鍒ゆ柇澶辫触鍚庢槸鍚︾户缁墽琛屾祦绋�
- Boolean writeWorkNoStatus = devp.getBoolean("writeWorkNoStatus");//鏄惁鍐欏叆宸ヤ綔鍙�
- Boolean writeStaNoStatus = devp.getBoolean("writeStaNoStatus");//鏄惁鍐欏叆鐩爣绔�
- String writeWorkNo = devp.getString("writeWorkNo");//鍐欏叆宸ヤ綔鍙锋暟鎹�
- String writeStaNo = devp.getString("writeStaNo");//鍐欏叆鐩爣绔欐暟鎹�
- if (enableStaStatus) {
- //鍒ゆ柇绔欑偣鐘舵��
- boolean statusFlag = true;//榛樿鍒ゆ柇閫氳繃
- for (Object status : staStatus) {
- System.out.println(status);
- }
+ //鎵ц
+ boolean result = executeFlow(flow, listId);
- if (!statusFlag) {
- //鍒ゆ柇涓嶉�氳繃
- if (staJudgementFailExecute.equals("stop")) {
- //鍒ゆ柇澶辫触鍚庝笉缁х画鎵ц
- return false;
- }
- }
-
- }
-
- if (writeWorkNoStatus) {
- //鍐欏叆宸ヤ綔鍙�
- }
-
- if (writeStaNoStatus) {
- //鍐欏叆鐩爣绔�
- }
- System.out.println(devp);
+ //鎵ц鍚庣画娴佺▼
+ if (Cools.isEmpty(flow.get("nextTrue")) && Cools.isEmpty(flow.get("nextFalse"))) {
+ break;//鏃犲悗缁祦绋�
}
- System.out.println(data);
+
+ //鏇存柊id
+ currentId = result ? flow.getString("nextTrue") : flow.getString("nextFalse");
}
- System.out.println(list);
- return false;
+ System.out.println("鎵ц瀹屾垚");
+ return true;
}
+ private boolean executeFlow(JSONObject flow, String listId) {
+ System.out.println(flow.getString("id") + "琚墽琛�");
+ String type = flow.getString("type");
+ if (type.equals("devp")) {
+
+ } else if (type.equals("shuttle")) {
+
+ }
+ return true;
+ }
+
+ private JSONObject findFLow(List<JSONObject> list, String id) {
+ for (JSONObject flow : list) {
+ if (flow.getString("id").equals(id)) {
+ return flow;
+ }
+ }
+ return null;
+ }
+
+// private boolean executeFlow(List<Map<String, Object>> list) {
+// for (Map<String, Object> map : list) {
+// JSONObject data = (JSONObject) map.get("data");
+// if (data.getString("type").equals("devp")) {
+// JSONObject devp = data.getJSONObject("devpType");
+// String devpNo = devp.getString("devpNo");//杈撻�佺嚎PLC
+// String staNo = devp.getString("staNo");//绔欏彿
+// Boolean enableStaStatus = devp.getBoolean("enableStaStatus");//鍒ゆ柇绔欑偣鐘舵��
+// JSONArray staStatus = devp.getJSONArray("staStatus");//绔欑偣鐘舵�佸垪琛�
+// String staJudgementFailExecute = devp.getString("staJudgementFailExecute");//鍒ゆ柇澶辫触鍚庢槸鍚︾户缁墽琛屾祦绋�
+// Boolean writeWorkNoStatus = devp.getBoolean("writeWorkNoStatus");//鏄惁鍐欏叆宸ヤ綔鍙�
+// Boolean writeStaNoStatus = devp.getBoolean("writeStaNoStatus");//鏄惁鍐欏叆鐩爣绔�
+// String writeWorkNo = devp.getString("writeWorkNo");//鍐欏叆宸ヤ綔鍙锋暟鎹�
+// String writeStaNo = devp.getString("writeStaNo");//鍐欏叆鐩爣绔欐暟鎹�
+// if (enableStaStatus) {
+// //鍒ゆ柇绔欑偣鐘舵��
+// boolean statusFlag = true;//榛樿鍒ゆ柇閫氳繃
+// for (Object status : staStatus) {
+// System.out.println(status);
+// }
+//
+// if (!statusFlag) {
+// //鍒ゆ柇涓嶉�氳繃
+// if (staJudgementFailExecute.equals("stop")) {
+// //鍒ゆ柇澶辫触鍚庝笉缁х画鎵ц
+// return false;
+// }
+// }
+//
+// }
+//
+// if (writeWorkNoStatus) {
+// //鍐欏叆宸ヤ綔鍙�
+// }
+//
+// if (writeStaNoStatus) {
+// //鍐欏叆鐩爣绔�
+// }
+// System.out.println(devp);
+// }
+// System.out.println(data);
+// }
+//
+// System.out.println(list);
+// return false;
+// }
+
}
diff --git a/zy-asrs-wcs/src/main/java/shuttleStandby.sql b/zy-asrs-wcs/src/main/java/shuttleStandby.sql
new file mode 100644
index 0000000..ff02352
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/shuttleStandby.sql
@@ -0,0 +1,9 @@
+-- save shuttleStandby record
+-- mysql
+insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `host_id`, `status`) values ( '绌挎杞﹀緟鏈轰綅绠$悊', '0', '/core/shuttleStandby', '/core/shuttleStandby', '0' , '0', '1' , '1');
+
+insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `host_id`, `status`) values ( '鏌ヨ绌挎杞﹀緟鏈轰綅', '', '1', 'core:shuttleStandby:list', '0', '1', '1');
+insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `host_id`, `status`) values ( '娣诲姞绌挎杞﹀緟鏈轰綅', '', '1', 'core:shuttleStandby:save', '1', '1', '1');
+insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `host_id`, `status`) values ( '淇敼绌挎杞﹀緟鏈轰綅', '', '1', 'core:shuttleStandby:update', '2', '1', '1');
+insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `host_id`, `status`) values ( '鍒犻櫎绌挎杞﹀緟鏈轰綅', '', '1', 'core:shuttleStandby:remove', '3', '1', '1');
+
diff --git a/zy-asrs-wcs/src/main/resources/mapper/core/BasLiftMapper.xml b/zy-asrs-wcs/src/main/resources/mapper/core/BasLiftMapper.xml
new file mode 100644
index 0000000..a5653dc
--- /dev/null
+++ b/zy-asrs-wcs/src/main/resources/mapper/core/BasLiftMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.wcs.core.mapper.BasLiftMapper">
+
+</mapper>
diff --git a/zy-asrs-wcs/src/main/resources/mapper/core/ShuttleStandbyMapper.xml b/zy-asrs-wcs/src/main/resources/mapper/core/ShuttleStandbyMapper.xml
new file mode 100644
index 0000000..761d485
--- /dev/null
+++ b/zy-asrs-wcs/src/main/resources/mapper/core/ShuttleStandbyMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.wcs.core.mapper.ShuttleStandbyMapper">
+
+</mapper>
diff --git a/zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml b/zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml
index 93b2cc3..81aefdb 100644
--- a/zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml
+++ b/zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml
@@ -79,11 +79,18 @@
<select id="selectWorkingByShuttle" resultType="com.zy.asrs.wcs.core.entity.Task">
select * from wcs_task
- where task_sts in (1,2,3,101,102,103,201,202,203,204,301,302,303,401,402,403)
+ where task_sts in (1,2,3,101,102,103,301,302,303,401,402,403)
and shuttle_no = #{shuttleNo}
order by priority desc,start_time,task_no asc
</select>
+ <select id="selectWorkingByLift" resultType="com.zy.asrs.wcs.core.entity.Task">
+ select * from wcs_task
+ where task_sts in (1,2,3,101,102,103,301,302,303,401,402,403)
+ and lift_no = #{liftNo}
+ order by priority desc,start_time,task_no asc
+ </select>
+
<select id="selectChargeWorking" resultType="com.zy.asrs.wcs.core.entity.Task">
select * from wcs_task
where task_sts in (201,202,203,204)
--
Gitblit v1.9.1