Junjie
2024-09-13 a1a7c03eae40f4b0344fce652e1a240cf5283624
#合并订单出库,统一转波次出库前最新代码
20个文件已添加
10个文件已修改
1938 ■■■■■ 已修改文件
zy-asrs-admin/src/components/orderOut/orderOutMergePreview/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/components/orderOut/orderOutMergePreview/stockOut.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/base/cacheSite/edit.vue 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/base/cacheSite/index.vue 241 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/out/orderOut/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/out/wave/index.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/out/waveSeed/edit.vue 232 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/out/waveSeed/index.vue 249 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/CacheSiteController.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OutController.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/WaveController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/WaveSeedController.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/CacheSite.java 243 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/Wave.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/WaveSeed.java 270 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/enums/CacheSiteStatusType.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/OrderOutMergeParam.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/OrderOutMergeParamDto.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/CacheSiteMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/WaveSeedMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/CacheSiteService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/WaveSeedService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/CacheSiteServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaveSeedServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/utils/CodeBuilder.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/resources/mapper/asrs/CacheSiteMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/resources/mapper/asrs/WaveSeedMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/resources/sql/menu/cacheSite.sql 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/resources/sql/menu/waveSeed.sql 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/components/orderOut/orderOutMergePreview/index.vue
@@ -24,6 +24,7 @@
const open = ref(false);
const showWidth = ref("60%")
const records = ref([])
const waveId = ref(null)
const loading = ref(false)
const stockOutChild = ref(null)
@@ -115,9 +116,10 @@
    stockOutChild.value.open = true;
    stockOutChild.value.records = param;
    stockOutChild.value.waveId = waveId.value;
    stockOutChild.value.showWidth = '55%'
    emit('reload', true)
    // emit('reload', true)
}
const handleOrderMergePreview = () => {
@@ -143,12 +145,14 @@
const handleCloseParent = () => {
    open.value = false;
    emit('reload', true)
}
defineExpose({
    open,
    showWidth,
    records,
    waveId,
})
</script>
zy-asrs-admin/src/components/orderOut/orderOutMergePreview/stockOut.vue
@@ -11,7 +11,7 @@
const TABLE_KEY = 'table-order-out-preview';
const emit = defineEmits(['closeParent'])
const emit = defineEmits(['closeParent', 'reload'])
const {
    getColumnSearchProps,
@@ -25,6 +25,7 @@
const open = ref(false);
const showWidth = ref("60%")
const records = ref([])
const waveId = ref(null)
const loading = ref(false)
let tableDataValue = []
let tableDataColSpan = []
@@ -159,12 +160,18 @@
})
const handleOk = () => {
    post('/api/out/orderOut/merge', tableData.value).then((resp) => {
    let requestParam = {
        waveId: waveId.value,
        list: tableData.value
    };
    post('/api/out/orderOut/merge', requestParam).then((resp) => {
        let result = resp.data;
        if (result.code == 200) {
            message.success(formatMessage('page.add.success', '出库成功'));
            open.value = false;
            emit('closeParent', true)
            emit('reload', true)
        } else {
            message.error(result.msg);
        }
@@ -252,6 +259,7 @@
    open,
    showWidth,
    records,
    waveId,
})
</script>
zy-asrs-admin/src/views/base/cacheSite/edit.vue
New file
@@ -0,0 +1,223 @@
<script setup>
import { ref, nextTick } from 'vue';
import { get, post, postBlob, postForm } from '@/utils/request.js'
import { formatMessage } from '@/utils/localeUtils.js';
import { message } from 'ant-design-vue';
const formTable = ref(null);
const submitButton = ref(null);
const isSave = ref(true);
const open = ref(false);
const initFormData = {}
let formData = ref(initFormData);
const emit = defineEmits(['tableReload'])
const handleOk = (e) => {
    nextTick(() => {
        setTimeout(() => {
            submitButton.value.$el.click();
        }, 100);
    });
};
const onFinish = values => {
    // console.log('Success:', values);
    open.value = false;
    post(isSave.value ? '/api/cacheSite/save' : '/api/cacheSite/update', formData.value).then((resp) => {
        let result = resp.data;
        if (result.code === 200) {
            message.success(isSave.value ? formatMessage('page.add.success', '新增成功') : formatMessage('page.update.success', '更新成功'));
        } else {
            message.error(result.msg);
        }
        emit('tableReload', 'reload')
        nextTick(() => {
            formTable.value.resetFields()
        })
    })
};
const onFinishFailed = errorInfo => {
    console.log('Failed:', errorInfo);
};
const orderQueryList = ref(null);
orderQuery();
function orderQuery() {
    postForm('/api/order/query', {}).then(resp => {
        let result = resp.data;
        orderQueryList.value = result.data;
    })
}
const userQueryList = ref(null);
userQuery();
function userQuery() {
    postForm('/api/user/query', {}).then(resp => {
        let result = resp.data;
        userQueryList.value = result.data;
    })
}
defineExpose({
    open,
    formData,
    initFormData,
    isSave,
})
</script>
<script>
export default {
    name: '缓存站点-edit'
}
</script>
<template>
    <div>
        <a-modal v-model:open="open"
            :title="isSave ? formatMessage('page.add', '添加') : formatMessage('page.edit', '编辑')" @ok="handleOk"
            style="width: 600px;">
            <a-form :model="formData" ref="formTable" name="formTable" :label-col="{ span: 8 }" :wrapper-col="{ span: 16 }"
                style="display: flex;justify-content: space-between;flex-wrap: wrap;" autocomplete="off"
                @finish="onFinish" @finishFailed="onFinishFailed">
                    <a-form-item
                      :label="formatMessage('db.man_cache_site.site_no', '站点编号') "
                      name="siteNo"
                      style="width: 250px;"
                            >
                    <a-input
                        v-model:value="formData.siteNo"
                     />
                        </a-form-item>
                    <a-form-item
                      :label="formatMessage('db.man_cache_site.site_status', '站点状态') "
                      name="siteStatus"
                      style="width: 250px;"
                            >
                    <a-select
                        v-model:value="formData.siteStatus"
                        :options="[
                                { label: '空站', value: 0 },
                                { label: '满站', value: 1 },
                                { label: '预约', value: 2 },
                            ]"
                        >
                    </a-select>
                        </a-form-item>
                    <a-form-item
                      :label="formatMessage('db.man_cache_site.order_id', '订单ID') "
                      name="orderId"
                      style="width: 250px;"
                            >
                    <a-select
                        v-model:value="formData.orderId"
                        :placeholder="formatMessage('common.select', '请选择')"
                        style="width: 100%"
                        show-search
                        :options="orderQueryList"
                        optionFilterProp="label"
                        optionLabelProp="label"
                     >
                    </a-select>
                        </a-form-item>
                    <a-form-item
                      :label="formatMessage('db.man_cache_site.order_no', '订单编号') "
                      name="orderNo"
                      style="width: 250px;"
                            >
                    <a-input
                        v-model:value="formData.orderNo"
                     />
                        </a-form-item>
                    <a-form-item
                      :label="formatMessage('db.man_cache_site.status', '状态') "
                      name="status"
                      style="width: 250px;"
                            >
                    <a-select
                        v-model:value="formData.status"
                        :options="[
                                { label: '正常', value: 1 },
                                { label: '禁用', value: 0 },
                            ]"
                        >
                    </a-select>
                        </a-form-item>
                    <a-form-item
                      :label="formatMessage('db.man_cache_site.create_time', '添加时间') "
                      name="createTime"
                      style="width: 250px;"
                            >
                    <a-date-picker
                        v-model:value="formData.createTime"
                        show-time
                        format="YYYY-MM-DD HH:mm:ss"
                        value-format="YYYY-MM-DD HH:mm:ss"
                     />
                        </a-form-item>
                    <a-form-item
                      :label="formatMessage('db.man_cache_site.create_by', '添加人员') "
                      name="createBy"
                      style="width: 250px;"
                            >
                    <a-select
                        v-model:value="formData.createBy"
                        :placeholder="formatMessage('common.select', '请选择')"
                        style="width: 100%"
                        show-search
                        :options="userQueryList"
                        optionFilterProp="label"
                        optionLabelProp="label"
                     >
                    </a-select>
                        </a-form-item>
                    <a-form-item
                      :label="formatMessage('db.man_cache_site.update_time', '修改时间') "
                      name="updateTime"
                      style="width: 250px;"
                            >
                    <a-date-picker
                        v-model:value="formData.updateTime"
                        show-time
                        format="YYYY-MM-DD HH:mm:ss"
                        value-format="YYYY-MM-DD HH:mm:ss"
                     />
                        </a-form-item>
                    <a-form-item
                      :label="formatMessage('db.man_cache_site.update_by', '修改人员') "
                      name="updateBy"
                      style="width: 250px;"
                            >
                    <a-select
                        v-model:value="formData.updateBy"
                        :placeholder="formatMessage('common.select', '请选择')"
                        style="width: 100%"
                        show-search
                        :options="userQueryList"
                        optionFilterProp="label"
                        optionLabelProp="label"
                     >
                    </a-select>
                        </a-form-item>
                    <a-form-item
                      :label="formatMessage('db.man_cache_site.memo', '备注') "
                      name="memo"
                      style="width: 250px;"
                            >
                    <a-input
                        v-model:value="formData.memo"
                     />
                        </a-form-item>
                <a-form-item>
                    <a-button type="primary" html-type="submit" ref="submitButton"
                        style="visibility: hidden;">Submit</a-button>
                </a-form-item>
            </a-form>
        </a-modal>
    </div>
</template>
<style></style>
zy-asrs-admin/src/views/base/cacheSite/index.vue
New file
@@ -0,0 +1,241 @@
<script setup>
import { getCurrentInstance, ref, computed, reactive } from 'vue';
import { useRouter } from "vue-router";
import { get, post, postBlob } from '@/utils/request.js'
import { message, Modal } from 'ant-design-vue';
import { logout } from '@/config.js';
import EditView from './edit.vue'
import { formatMessage } from '@/utils/localeUtils.js';
import useTableSearch from '@/utils/tableUtils.jsx';
const context = getCurrentInstance()?.appContext.config.globalProperties;
const router = useRouter();
const TABLE_KEY = 'table-cacheSite';
let currentPage = 1;
let pageSize = 10;
const searchInput = ref("")
const editChild = ref(null)
const state = reactive({
  selectedRowKeys: [],
  loading: false,
});
let tableData = ref([]);
getPage();
const {
  getColumnSearchProps,
  handleResizeColumn,
} = useTableSearch();
const columns = [
        {
            title: formatMessage('db.man_cache_site.site_no', '站点编号'),
            dataIndex: 'siteNo',
            width: 140,
            ellipsis: true,
            ...getColumnSearchProps('siteNo'),
        },
        {
            title: formatMessage('db.man_cache_site.site_status', '站点状态'),
            dataIndex: 'siteStatus$',
            width: 140,
            ellipsis: true,
            ...getColumnSearchProps('siteStatus$'),
        },
        {
            title: formatMessage('db.man_cache_site.order_id', '订单ID'),
            dataIndex: 'orderId$',
            width: 140,
            ellipsis: true,
            ...getColumnSearchProps('orderId$'),
        },
        {
            title: formatMessage('db.man_cache_site.order_no', '订单编号'),
            dataIndex: 'orderNo',
            width: 140,
            ellipsis: true,
            ...getColumnSearchProps('orderNo'),
        },
        {
            title: formatMessage('db.man_cache_site.status', '状态'),
            dataIndex: 'status$',
            width: 140,
            ellipsis: true,
            ...getColumnSearchProps('status$'),
        },
        {
            title: formatMessage('db.man_cache_site.create_time', '添加时间'),
            dataIndex: 'createTime$',
            width: 140,
            ellipsis: true,
            ...getColumnSearchProps('createTime$'),
        },
        {
            title: formatMessage('db.man_cache_site.create_by', '添加人员'),
            dataIndex: 'createBy$',
            width: 140,
            ellipsis: true,
            ...getColumnSearchProps('createBy$'),
        },
        {
            title: formatMessage('db.man_cache_site.update_time', '修改时间'),
            dataIndex: 'updateTime$',
            width: 140,
            ellipsis: true,
            ...getColumnSearchProps('updateTime$'),
        },
        {
            title: formatMessage('db.man_cache_site.update_by', '修改人员'),
            dataIndex: 'updateBy$',
            width: 140,
            ellipsis: true,
            ...getColumnSearchProps('updateBy$'),
        },
        {
            title: formatMessage('db.man_cache_site.memo', '备注'),
            dataIndex: 'memo',
            width: 140,
            ellipsis: true,
            ...getColumnSearchProps('memo'),
        },
  {
    title: formatMessage('common.operation', '操作'),
    name: 'oper',
    dataIndex: 'oper',
    key: 'oper',
    width: 140,
    fixed: 'right',
  },
];
const hasSelected = computed(() => state.selectedRowKeys.length > 0);
const start = () => {
  state.loading = true;
  // ajax request after empty completing
  setTimeout(() => {
    state.loading = false;
    state.selectedRowKeys = [];
  }, 1000);
};
const onSelectChange = selectedRowKeys => {
  // console.log('selectedRowKeys changed: ', selectedRowKeys);
  state.selectedRowKeys = selectedRowKeys;
};
function getPage() {
  state.loading = true;
  post('/api/cacheSite/page', {
    current: currentPage,
    pageSize: pageSize,
    condition: searchInput.value
  }).then((resp) => {
    let result = resp.data;
    if (result.code == 200) {
      let data = result.data;
      tableData.value = data;
      state.loading = false;
    } else if (result.code === 401) {
      message.error(result.msg);
      logout()
    } else {
      message.error(result.msg);
    }
  })
}
const handleEdit = (item) => {
  editChild.value.open = true;
  editChild.value.formData = item == null ? editChild.value.initFormData : JSON.parse(JSON.stringify(item));
  editChild.value.isSave = item == null;
}
const handleDel = (rows) => {
  Modal.confirm({
    title: formatMessage('page.delete', '删除'),
    content: formatMessage('page.delete.confirm', '确定删除该项吗?'),
    maskClosable: true,
    onOk: async () => {
      const hide = message.loading(formatMessage('common.loading', '请求中'));
      try {
        post('/api/cacheSite/remove/' + rows.map((row) => row.id).join(','), {}).then(resp => {
          let result = resp.data;
          if (result.code === 200) {
            message.success(result.msg);
          } else {
            message.error(result.msg);
          }
          getPage()
          hide()
        })
      } catch (error) {
        message.error(formatMessage('common.fail', '请求失败'));
      }
    },
  });
}
const handleExport = async (intl) => {
  postBlob('/api/cacheSite/export', {}).then(result => {
    const blob = new Blob([result.data], { type: 'application/vnd.ms-excel' });
    window.location.href = window.URL.createObjectURL(blob);
    return true;
  })
};
const onSearch = () => {
  // console.log('search');
  getPage()
}
const onPageChange = (page, size) => {
  currentPage = page;
  pageSize = size;
  getPage();
}
function handleTableReload(value) {
  getPage()
}
</script>
<script>
export default {
  name: '缓存站点'
}
</script>
<template>
  <div>
    <EditView ref="editChild" @tableReload="handleTableReload" />
    <div class="table-header">
      <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')"
        style="width: 200px;" @search="onSearch" />
      <div class="table-header-right">
        <a-button @click="handleEdit(null)" type="primary">{{ formatMessage('page.add', '添加') }}</a-button>
        <a-button @click="handleExport">{{ formatMessage('page.export', '导出') }}</a-button>
      </div>
    </div>
    <a-table :row-selection="{ selectedRowKeys: state.selectedRowKeys, onChange: onSelectChange }"
      :data-source="tableData.records" :defaultExpandAllRows="false" :key="TABLE_KEY" rowKey="id"
      :pagination="{ total: tableData.total, onChange: onPageChange }"
      :scroll="{ y: 768, scrollToFirstRowOnChange: true }" :columns="columns" @resizeColumn="handleResizeColumn" :loading="state.loading">
      <template #bodyCell="{ column, text, record }">
        <template v-if="column.dataIndex === 'oper'">
          <div style="display: flex;justify-content: space-evenly;">
            <a-button type="link" primary @click="handleEdit(record)">{{ formatMessage('page.edit', '编辑') }}</a-button>
            <a-button type="link" danger @click="handleDel([record])">{{ formatMessage('page.delete', '删除')
              }}</a-button>
          </div>
        </template>
      </template>
    </a-table>
  </div>
</template>
<style></style>
zy-asrs-admin/src/views/out/orderOut/index.vue
@@ -215,11 +215,11 @@
    <div style="display: flex;">
        <a-card :title="formatMessage('common.order', '订单')" style="flex: 4;margin-right: 30px;">
            <div style="margin-bottom: 10px;display: flex;">
                <div style="margin-right: 10px;">
                <!-- <div style="margin-right: 10px;">
                    <a-button @click="handleMergeOrderOut()">
                        {{ formatMessage('common.orderOut', '合并订单') }}
                    </a-button>
                </div>
                </div> -->
                <div style="margin-right: 10px;">
                    <a-button @click="handleGenerateWave()">
                        {{ formatMessage('common.generateWave', '生成波次') }}
zy-asrs-admin/src/views/out/wave/index.vue
@@ -1,5 +1,5 @@
<script setup>
import { getCurrentInstance, ref, computed, reactive } from 'vue';
import { getCurrentInstance, ref, computed, reactive, watch } from 'vue';
import { useRouter } from "vue-router";
import { get, post, postBlob } from '@/utils/request.js'
import { message, Modal } from 'ant-design-vue';
@@ -143,6 +143,7 @@
            detl.waveId = item.id;
            detl.waveType = item.waveType;
            detl.waveType$ = item.waveType$;
            detl.generateTask = item.generateTask;
            tmp.push(detl)
          })
        })
@@ -219,8 +220,6 @@
// }
const handleGenerateOut = (item) => {
  console.log(item);
  get('/api/wave/list/' + item.waveId, {}).then(resp => {
    let result = resp.data;
    let data = result.data;
@@ -231,6 +230,7 @@
    orderOutMergePreviewChild.value.open = true;
    orderOutMergePreviewChild.value.records = orderIds;
    orderOutMergePreviewChild.value.waveId = item.waveId;
  })
}
@@ -311,13 +311,15 @@
      </div> -->
    </div>
    <a-table :data-source="tableData" :defaultExpandAllRows="false" :key="TABLE_KEY" rowKey="index"
      :scroll="{ y: 768, scrollToFirstRowOnChange: true }" :columns="state.columns" @resizeColumn="handleResizeColumn" :loading="state.loading">
      :scroll="{ y: 768, scrollToFirstRowOnChange: true }" :columns="state.columns" @resizeColumn="handleResizeColumn"
      :loading="state.loading">
      <template #bodyCell="{ column, text, record }">
        <template v-if="column.dataIndex === 'oper'">
          <div style="display: flex;justify-content: space-evenly;">
            <a-button type="link" primary @click="handleGenerateOut(record)">{{ formatMessage('page.generateOut',
              '生成出库任务')
              }}</a-button>
            <a-button type="link" primary @click="handleGenerateOut(record)" :disabled="record.generateTask">{{
              formatMessage('page.generateOut',
                '生成出库任务')
            }}</a-button>
            <a-button type="link" danger @click="handleDel([record])">{{ formatMessage('page.delete', '删除')
              }}</a-button>
          </div>
zy-asrs-admin/src/views/out/waveSeed/edit.vue
New file
@@ -0,0 +1,232 @@
<script setup>
import { ref, nextTick } from 'vue';
import { get, post, postBlob, postForm } from '@/utils/request.js'
import { formatMessage } from '@/utils/localeUtils.js';
import { message } from 'ant-design-vue';
const formTable = ref(null);
const submitButton = ref(null);
const isSave = ref(true);
const open = ref(false);
const initFormData = {}
let formData = ref(initFormData);
const emit = defineEmits(['tableReload'])
const handleOk = (e) => {
    nextTick(() => {
        setTimeout(() => {
            submitButton.value.$el.click();
        }, 100);
    });
};
const onFinish = values => {
    // console.log('Success:', values);
    open.value = false;
    post(isSave.value ? '/api/waveSeed/save' : '/api/waveSeed/update', formData.value).then((resp) => {
        let result = resp.data;
        if (result.code === 200) {
            message.success(isSave.value ? formatMessage('page.add.success', '新增成功') : formatMessage('page.update.success', '更新成功'));
        } else {
            message.error(result.msg);
        }
        emit('tableReload', 'reload')
        nextTick(() => {
            formTable.value.resetFields()
        })
    })
};
const onFinishFailed = errorInfo => {
    console.log('Failed:', errorInfo);
};
const cacheSiteQueryList = ref(null);
cacheSiteQuery();
function cacheSiteQuery() {
    postForm('/api/cacheSite/query', {}).then(resp => {
        let result = resp.data;
        cacheSiteQueryList.value = result.data;
    })
}
const orderDetlQueryList = ref(null);
orderDetlQuery();
function orderDetlQuery() {
    postForm('/api/orderDetl/query', {}).then(resp => {
        let result = resp.data;
        orderDetlQueryList.value = result.data;
    })
}
const userQueryList = ref(null);
userQuery();
function userQuery() {
    postForm('/api/user/query', {}).then(resp => {
        let result = resp.data;
        userQueryList.value = result.data;
    })
}
defineExpose({
    open,
    formData,
    initFormData,
    isSave,
})
</script>
<script>
export default {
    name: '波次播种-edit'
}
</script>
<template>
    <div>
        <a-modal v-model:open="open"
            :title="isSave ? formatMessage('page.add', '添加') : formatMessage('page.edit', '编辑')" @ok="handleOk"
            style="width: 600px;">
            <a-form :model="formData" ref="formTable" name="formTable" :label-col="{ span: 8 }" :wrapper-col="{ span: 16 }"
                style="display: flex;justify-content: space-between;flex-wrap: wrap;" autocomplete="off"
                @finish="onFinish" @finishFailed="onFinishFailed">
                    <a-form-item
                      :label="formatMessage('db.man_wave_seed.site_id', '站点ID') "
                      name="siteId"
                      style="width: 250px;"
                            >
                    <a-select
                        v-model:value="formData.siteId"
                        :placeholder="formatMessage('common.select', '请选择')"
                        style="width: 100%"
                        show-search
                        :options="cacheSiteQueryList"
                        optionFilterProp="label"
                        optionLabelProp="label"
                     >
                    </a-select>
                        </a-form-item>
                    <a-form-item
                      :label="formatMessage('db.man_wave_seed.site_no', '站点编号') "
                      name="siteNo"
                      style="width: 250px;"
                            >
                    <a-input
                        v-model:value="formData.siteNo"
                     />
                        </a-form-item>
                    <a-form-item
                      :label="formatMessage('db.man_wave_seed.order_detl_id', '订单明细') "
                      name="orderDetlId"
                      style="width: 250px;"
                            >
                    <a-select
                        v-model:value="formData.orderDetlId"
                        :placeholder="formatMessage('common.select', '请选择')"
                        style="width: 100%"
                        show-search
                        :options="orderDetlQueryList"
                        optionFilterProp="label"
                        optionLabelProp="label"
                     >
                    </a-select>
                        </a-form-item>
                    <a-form-item
                      :label="formatMessage('db.man_wave_seed.anfme', '数量') "
                      name="anfme"
                      style="width: 250px;"
                            >
                    <a-input
                        v-model:value="formData.anfme"
                     />
                        </a-form-item>
                    <a-form-item
                      :label="formatMessage('db.man_wave_seed.status', '状态') "
                      name="status"
                      style="width: 250px;"
                            >
                    <a-select
                        v-model:value="formData.status"
                        :options="[
                                { label: '正常', value: 1 },
                                { label: '禁用', value: 0 },
                            ]"
                        >
                    </a-select>
                        </a-form-item>
                    <a-form-item
                      :label="formatMessage('db.man_wave_seed.create_time', '添加时间') "
                      name="createTime"
                      style="width: 250px;"
                            >
                    <a-date-picker
                        v-model:value="formData.createTime"
                        show-time
                        format="YYYY-MM-DD HH:mm:ss"
                        value-format="YYYY-MM-DD HH:mm:ss"
                     />
                        </a-form-item>
                    <a-form-item
                      :label="formatMessage('db.man_wave_seed.create_by', '添加人员') "
                      name="createBy"
                      style="width: 250px;"
                            >
                    <a-select
                        v-model:value="formData.createBy"
                        :placeholder="formatMessage('common.select', '请选择')"
                        style="width: 100%"
                        show-search
                        :options="userQueryList"
                        optionFilterProp="label"
                        optionLabelProp="label"
                     >
                    </a-select>
                        </a-form-item>
                    <a-form-item
                      :label="formatMessage('db.man_wave_seed.update_time', '修改时间') "
                      name="updateTime"
                      style="width: 250px;"
                            >
                    <a-date-picker
                        v-model:value="formData.updateTime"
                        show-time
                        format="YYYY-MM-DD HH:mm:ss"
                        value-format="YYYY-MM-DD HH:mm:ss"
                     />
                        </a-form-item>
                    <a-form-item
                      :label="formatMessage('db.man_wave_seed.update_by', '修改人员') "
                      name="updateBy"
                      style="width: 250px;"
                            >
                    <a-select
                        v-model:value="formData.updateBy"
                        :placeholder="formatMessage('common.select', '请选择')"
                        style="width: 100%"
                        show-search
                        :options="userQueryList"
                        optionFilterProp="label"
                        optionLabelProp="label"
                     >
                    </a-select>
                        </a-form-item>
                    <a-form-item
                      :label="formatMessage('db.man_wave_seed.memo', '备注') "
                      name="memo"
                      style="width: 250px;"
                            >
                    <a-input
                        v-model:value="formData.memo"
                     />
                        </a-form-item>
                <a-form-item>
                    <a-button type="primary" html-type="submit" ref="submitButton"
                        style="visibility: hidden;">Submit</a-button>
                </a-form-item>
            </a-form>
        </a-modal>
    </div>
</template>
<style></style>
zy-asrs-admin/src/views/out/waveSeed/index.vue
New file
@@ -0,0 +1,249 @@
<script setup>
import { getCurrentInstance, ref, computed, reactive } from 'vue';
import { useRouter } from "vue-router";
import { get, post, postBlob } from '@/utils/request.js'
import { message, Modal } from 'ant-design-vue';
import { logout } from '@/config.js';
import EditView from './edit.vue'
import { formatMessage } from '@/utils/localeUtils.js';
import useTableSearch from '@/utils/tableUtils.jsx';
const context = getCurrentInstance()?.appContext.config.globalProperties;
const router = useRouter();
const TABLE_KEY = 'table-waveSeed';
let currentPage = 1;
let pageSize = 10;
const searchInput = ref("")
const editChild = ref(null)
const state = reactive({
  selectedRowKeys: [],
  loading: false,
});
let tableData = ref([]);
getPage();
const {
  getColumnSearchProps,
  handleResizeColumn,
} = useTableSearch();
const columns = [
  // {
  //   title: formatMessage('db.man_wave_seed.site_id', '站点ID'),
  //   dataIndex: 'siteId$',
  //   width: 140,
  //   ellipsis: true,
  //   ...getColumnSearchProps('siteId$'),
  // },
  {
    title: formatMessage('db.man_wave_seed.site_no', '站点编号'),
    dataIndex: 'siteNo',
    width: 140,
    ellipsis: true,
    ...getColumnSearchProps('siteNo'),
  },
  {
    title: formatMessage('db.man_wave_seed.order_detl_id', '订单明细'),
    dataIndex: 'orderDetlId$',
    width: 140,
    ellipsis: true,
    ...getColumnSearchProps('orderDetlId$'),
  },
  {
    title: formatMessage('db.man_wave_seed.anfme', '数量'),
    dataIndex: 'anfme',
    width: 140,
    ellipsis: true,
    ...getColumnSearchProps('anfme'),
  },
  {
    title: formatMessage('db.man_wave_seed.workQty', '复核数量'),
    dataIndex: 'workQty',
    width: 140,
    ellipsis: true,
    ...getColumnSearchProps('workQty'),
  },
  // {
  //   title: formatMessage('db.man_wave_seed.status', '状态'),
  //   dataIndex: 'status$',
  //   width: 140,
  //   ellipsis: true,
  //   ...getColumnSearchProps('status$'),
  // },
  {
    title: formatMessage('db.man_wave_seed.create_time', '添加时间'),
    dataIndex: 'createTime$',
    width: 140,
    ellipsis: true,
    ...getColumnSearchProps('createTime$'),
  },
  {
    title: formatMessage('db.man_wave_seed.create_by', '添加人员'),
    dataIndex: 'createBy$',
    width: 140,
    ellipsis: true,
    ...getColumnSearchProps('createBy$'),
  },
  // {
  //   title: formatMessage('db.man_wave_seed.update_time', '修改时间'),
  //   dataIndex: 'updateTime$',
  //   width: 140,
  //   ellipsis: true,
  //   ...getColumnSearchProps('updateTime$'),
  // },
  // {
  //   title: formatMessage('db.man_wave_seed.update_by', '修改人员'),
  //   dataIndex: 'updateBy$',
  //   width: 140,
  //   ellipsis: true,
  //   ...getColumnSearchProps('updateBy$'),
  // },
  {
    title: formatMessage('db.man_wave_seed.memo', '备注'),
    dataIndex: 'memo',
    width: 140,
    ellipsis: true,
    ...getColumnSearchProps('memo'),
  },
  {
    title: formatMessage('common.operation', '操作'),
    name: 'oper',
    dataIndex: 'oper',
    key: 'oper',
    width: 140,
    fixed: 'right',
  },
];
const hasSelected = computed(() => state.selectedRowKeys.length > 0);
const start = () => {
  state.loading = true;
  // ajax request after empty completing
  setTimeout(() => {
    state.loading = false;
    state.selectedRowKeys = [];
  }, 1000);
};
const onSelectChange = selectedRowKeys => {
  // console.log('selectedRowKeys changed: ', selectedRowKeys);
  state.selectedRowKeys = selectedRowKeys;
};
function getPage() {
  state.loading = true;
  post('/api/waveSeed/page', {
    current: currentPage,
    pageSize: pageSize,
    condition: searchInput.value
  }).then((resp) => {
    let result = resp.data;
    if (result.code == 200) {
      let data = result.data;
      tableData.value = data;
      state.loading = false;
    } else if (result.code === 401) {
      message.error(result.msg);
      logout()
    } else {
      message.error(result.msg);
    }
  })
}
const handleEdit = (item) => {
  editChild.value.open = true;
  editChild.value.formData = item == null ? editChild.value.initFormData : JSON.parse(JSON.stringify(item));
  editChild.value.isSave = item == null;
}
const handleDel = (rows) => {
  Modal.confirm({
    title: formatMessage('page.delete', '删除'),
    content: formatMessage('page.delete.confirm', '确定删除该项吗?'),
    maskClosable: true,
    onOk: async () => {
      const hide = message.loading(formatMessage('common.loading', '请求中'));
      try {
        post('/api/waveSeed/remove/' + rows.map((row) => row.id).join(','), {}).then(resp => {
          let result = resp.data;
          if (result.code === 200) {
            message.success(result.msg);
          } else {
            message.error(result.msg);
          }
          getPage()
          hide()
        })
      } catch (error) {
        message.error(formatMessage('common.fail', '请求失败'));
      }
    },
  });
}
const handleExport = async (intl) => {
  postBlob('/api/waveSeed/export', {}).then(result => {
    const blob = new Blob([result.data], { type: 'application/vnd.ms-excel' });
    window.location.href = window.URL.createObjectURL(blob);
    return true;
  })
};
const onSearch = () => {
  // console.log('search');
  getPage()
}
const onPageChange = (page, size) => {
  currentPage = page;
  pageSize = size;
  getPage();
}
function handleTableReload(value) {
  getPage()
}
</script>
<script>
export default {
  name: '波次播种'
}
</script>
<template>
  <div>
    <EditView ref="editChild" @tableReload="handleTableReload" />
    <div class="table-header">
      <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')"
        style="width: 200px;" @search="onSearch" />
      <div class="table-header-right">
        <!-- <a-button @click="handleEdit(null)" type="primary">{{ formatMessage('page.add', '添加') }}</a-button> -->
        <a-button @click="handleExport">{{ formatMessage('page.export', '导出') }}</a-button>
      </div>
    </div>
    <a-table :row-selection="{ selectedRowKeys: state.selectedRowKeys, onChange: onSelectChange }"
      :data-source="tableData.records" :defaultExpandAllRows="false" :key="TABLE_KEY" rowKey="id"
      :pagination="{ total: tableData.total, onChange: onPageChange }"
      :scroll="{ y: 768, scrollToFirstRowOnChange: true }" :columns="columns" @resizeColumn="handleResizeColumn"
      :loading="state.loading">
      <template #bodyCell="{ column, text, record }">
        <template v-if="column.dataIndex === 'oper'">
          <div style="display: flex;justify-content: space-evenly;">
            <a-button type="link" primary @click="handleEdit(record)">{{ formatMessage('page.edit', '编辑') }}</a-button>
            <a-button type="link" danger @click="handleDel([record])">{{ formatMessage('page.delete', '删除')
              }}</a-button>
          </div>
        </template>
      </template>
    </a-table>
  </div>
</template>
<style></style>
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/CacheSiteController.java
New file
@@ -0,0 +1,102 @@
package com.zy.asrs.wms.asrs.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.wms.common.annotation.OperationLog;
import com.zy.asrs.wms.common.domain.BaseParam;
import com.zy.asrs.wms.common.domain.KeyValVo;
import com.zy.asrs.wms.common.domain.PageParam;
import com.zy.asrs.wms.asrs.entity.CacheSite;
import com.zy.asrs.wms.asrs.service.CacheSiteService;
import com.zy.asrs.wms.system.controller.BaseController;
import com.zy.asrs.wms.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 CacheSiteController extends BaseController {
    @Autowired
    private CacheSiteService cacheSiteService;
    @PreAuthorize("hasAuthority('asrs:cacheSite:list')")
    @PostMapping("/cacheSite/page")
    public R page(@RequestBody Map<String, Object> map) {
        BaseParam baseParam = buildParam(map, BaseParam.class);
        PageParam<CacheSite, BaseParam> pageParam = new PageParam<>(baseParam, CacheSite.class);
        return R.ok().add(cacheSiteService.page(pageParam, pageParam.buildWrapper(true)));
    }
    @PreAuthorize("hasAuthority('asrs:cacheSite:list')")
    @PostMapping("/cacheSite/list")
    public R list(@RequestBody Map<String, Object> map) {
        return R.ok().add(cacheSiteService.list());
    }
    @PreAuthorize("hasAuthority('asrs:cacheSite:list')")
    @GetMapping("/cacheSite/{id}")
    public R get(@PathVariable("id") Long id) {
        return R.ok().add(cacheSiteService.getById(id));
    }
    @PreAuthorize("hasAuthority('asrs:cacheSite:save')")
    @OperationLog("添加缓存站点")
    @PostMapping("/cacheSite/save")
    public R save(@RequestBody CacheSite cacheSite) {
        if (!cacheSiteService.save(cacheSite)) {
            return R.error("添加失败");
        }
        return R.ok("添加成功");
    }
    @PreAuthorize("hasAuthority('asrs:cacheSite:update')")
    @OperationLog("修改缓存站点")
    @PostMapping("/cacheSite/update")
    public R update(@RequestBody CacheSite cacheSite) {
        if (!cacheSiteService.updateById(cacheSite)) {
            return R.error("修改失败");
        }
        return R.ok("修改成功");
    }
    @PreAuthorize("hasAuthority('asrs:cacheSite:remove')")
    @OperationLog("删除缓存站点")
    @PostMapping("/cacheSite/remove/{ids}")
    public R remove(@PathVariable Long[] ids) {
        if (!cacheSiteService.removeByIds(Arrays.asList(ids))) {
            return R.error("删除失败");
        }
        return R.ok("删除成功");
    }
    @PreAuthorize("hasAuthority('asrs:cacheSite:list')")
    @PostMapping("/cacheSite/query")
    public R query(@RequestParam(required = false) String condition) {
        List<KeyValVo> vos = new ArrayList<>();
        LambdaQueryWrapper<CacheSite> wrapper = new LambdaQueryWrapper<>();
        if (!Cools.isEmpty(condition)) {
            wrapper.like(CacheSite::getId, condition);
        }
        cacheSiteService.page(new Page<>(1, 30), wrapper).getRecords().forEach(
                item -> vos.add(new KeyValVo(item.getId(), item.getId()))
        );
        return R.ok().add(vos);
    }
    @PreAuthorize("hasAuthority('asrs:cacheSite:list')")
    @PostMapping("/cacheSite/export")
    public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
        ExcelUtil.build(ExcelUtil.create(cacheSiteService.list(), CacheSite.class), response);
    }
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OutController.java
@@ -4,10 +4,7 @@
import com.zy.asrs.wms.asrs.entity.dto.MergePreviewDto;
import com.zy.asrs.wms.asrs.entity.dto.MergePreviewResultDto;
import com.zy.asrs.wms.asrs.entity.dto.OrderOutBatchPreviewDto;
import com.zy.asrs.wms.asrs.entity.param.OrderOutBatchPreviewParam;
import com.zy.asrs.wms.asrs.entity.param.OrderOutMergeParam;
import com.zy.asrs.wms.asrs.entity.param.OrderOutMergePreviewParam;
import com.zy.asrs.wms.asrs.entity.param.OutParam;
import com.zy.asrs.wms.asrs.entity.param.*;
import com.zy.asrs.wms.asrs.manage.OutManage;
import com.zy.asrs.wms.common.annotation.OperationLog;
import com.zy.asrs.wms.system.controller.BaseController;
@@ -74,7 +71,7 @@
    @PostMapping("/out/orderOut/merge")
    @OperationLog("合并订单出库")
    @Transactional
    public R orderOutMerge(@RequestBody List<OrderOutMergeParam> param) {
    public R orderOutMerge(@RequestBody OrderOutMergeParamDto param) {
        outManage.orderOutMerge(param);
        return R.ok();
    }
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/WaveController.java
@@ -4,7 +4,9 @@
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.wms.asrs.entity.TaskDetl;
import com.zy.asrs.wms.asrs.entity.WaveDetl;
import com.zy.asrs.wms.asrs.service.TaskDetlService;
import com.zy.asrs.wms.asrs.service.WaveDetlService;
import com.zy.asrs.wms.common.annotation.OperationLog;
import com.zy.asrs.wms.common.domain.BaseParam;
@@ -32,6 +34,8 @@
    private WaveService waveService;
    @Autowired
    private WaveDetlService waveDetlService;
    @Autowired
    private TaskDetlService taskDetlService;
    @PreAuthorize("hasAuthority('asrs:wave:list')")
    @PostMapping("/wave/page")
@@ -39,6 +43,21 @@
        BaseParam baseParam = buildParam(map, BaseParam.class);
        PageParam<Wave, BaseParam> pageParam = new PageParam<>(baseParam, Wave.class);
        PageParam<Wave, BaseParam> page = waveService.page(pageParam, pageParam.buildWrapper(true));
        List<Wave> records = page.getRecords();
        for (Wave record : records) {
            ArrayList<Long> orderDetlIds = new ArrayList<>();
            for (WaveDetl waveDetl : record.getWaveDetlList()) {
                orderDetlIds.add(waveDetl.getOrderId());
            }
            List<TaskDetl> taskDetls = taskDetlService.list(new LambdaQueryWrapper<TaskDetl>().in(TaskDetl::getOrderId, orderDetlIds));
            if (taskDetls.isEmpty()) {
                record.setGenerateTask(false);
            }else {
                record.setGenerateTask(true);
            }
        }
        return R.ok().add(page);
    }
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/WaveSeedController.java
New file
@@ -0,0 +1,102 @@
package com.zy.asrs.wms.asrs.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.wms.common.annotation.OperationLog;
import com.zy.asrs.wms.common.domain.BaseParam;
import com.zy.asrs.wms.common.domain.KeyValVo;
import com.zy.asrs.wms.common.domain.PageParam;
import com.zy.asrs.wms.asrs.entity.WaveSeed;
import com.zy.asrs.wms.asrs.service.WaveSeedService;
import com.zy.asrs.wms.system.controller.BaseController;
import com.zy.asrs.wms.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 WaveSeedController extends BaseController {
    @Autowired
    private WaveSeedService waveSeedService;
    @PreAuthorize("hasAuthority('asrs:waveSeed:list')")
    @PostMapping("/waveSeed/page")
    public R page(@RequestBody Map<String, Object> map) {
        BaseParam baseParam = buildParam(map, BaseParam.class);
        PageParam<WaveSeed, BaseParam> pageParam = new PageParam<>(baseParam, WaveSeed.class);
        return R.ok().add(waveSeedService.page(pageParam, pageParam.buildWrapper(true)));
    }
    @PreAuthorize("hasAuthority('asrs:waveSeed:list')")
    @PostMapping("/waveSeed/list")
    public R list(@RequestBody Map<String, Object> map) {
        return R.ok().add(waveSeedService.list());
    }
    @PreAuthorize("hasAuthority('asrs:waveSeed:list')")
    @GetMapping("/waveSeed/{id}")
    public R get(@PathVariable("id") Long id) {
        return R.ok().add(waveSeedService.getById(id));
    }
    @PreAuthorize("hasAuthority('asrs:waveSeed:save')")
    @OperationLog("添加波次播种")
    @PostMapping("/waveSeed/save")
    public R save(@RequestBody WaveSeed waveSeed) {
        if (!waveSeedService.save(waveSeed)) {
            return R.error("添加失败");
        }
        return R.ok("添加成功");
    }
    @PreAuthorize("hasAuthority('asrs:waveSeed:update')")
    @OperationLog("修改波次播种")
    @PostMapping("/waveSeed/update")
    public R update(@RequestBody WaveSeed waveSeed) {
        if (!waveSeedService.updateById(waveSeed)) {
            return R.error("修改失败");
        }
        return R.ok("修改成功");
    }
    @PreAuthorize("hasAuthority('asrs:waveSeed:remove')")
    @OperationLog("删除波次播种")
    @PostMapping("/waveSeed/remove/{ids}")
    public R remove(@PathVariable Long[] ids) {
        if (!waveSeedService.removeByIds(Arrays.asList(ids))) {
            return R.error("删除失败");
        }
        return R.ok("删除成功");
    }
    @PreAuthorize("hasAuthority('asrs:waveSeed:list')")
    @PostMapping("/waveSeed/query")
    public R query(@RequestParam(required = false) String condition) {
        List<KeyValVo> vos = new ArrayList<>();
        LambdaQueryWrapper<WaveSeed> wrapper = new LambdaQueryWrapper<>();
        if (!Cools.isEmpty(condition)) {
            wrapper.like(WaveSeed::getId, condition);
        }
        waveSeedService.page(new Page<>(1, 30), wrapper).getRecords().forEach(
                item -> vos.add(new KeyValVo(item.getId(), item.getId()))
        );
        return R.ok().add(vos);
    }
    @PreAuthorize("hasAuthority('asrs:waveSeed:list')")
    @PostMapping("/waveSeed/export")
    public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
        ExcelUtil.build(ExcelUtil.create(waveSeedService.list(), WaveSeed.class), response);
    }
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/CacheSite.java
New file
@@ -0,0 +1,243 @@
package com.zy.asrs.wms.asrs.entity;
import com.baomidou.mybatisplus.annotation.TableLogic;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.zy.asrs.wms.asrs.service.OrderService;
import com.zy.asrs.wms.system.entity.Host;
import com.zy.asrs.wms.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.wms.system.service.UserService;
import com.zy.asrs.wms.system.service.HostService;
import com.zy.asrs.common.utils.Synchro;
import java.io.Serializable;
import java.util.Date;
@Data
@TableName("man_cache_site")
public class CacheSite 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 siteNo;
    /**
     * 站点状态 0: 空站  1: 满站  2: 预约
     */
    @ApiModelProperty(value= "站点状态 0: 空站  1: 满站  2: 预约  ")
    private Integer siteStatus;
    /**
     * 订单ID
     */
    @ApiModelProperty(value= "订单ID")
    private Long orderId;
    /**
     * 订单编号
     */
    @ApiModelProperty(value= "订单编号")
    private String orderNo;
    /**
     * 所属机构
     */
    @ApiModelProperty(value= "所属机构")
    private Long hostId;
    /**
     * 状态 1: 正常  0: 禁用
     */
    @ApiModelProperty(value= "状态 1: 正常  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;
    public CacheSite() {}
    public CacheSite(String siteNo,Integer siteStatus,Long orderId,String orderNo,Long hostId,Integer status,Integer deleted,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo) {
        this.siteNo = siteNo;
        this.siteStatus = siteStatus;
        this.orderId = orderId;
        this.orderNo = orderNo;
        this.hostId = hostId;
        this.status = status;
        this.deleted = deleted;
        this.createTime = createTime;
        this.createBy = createBy;
        this.updateTime = updateTime;
        this.updateBy = updateBy;
        this.memo = memo;
    }
//    CacheSite cacheSite = new CacheSite(
//            null,    // 站点编号
//            null,    // 站点状态
//            null,    // 订单ID
//            null,    // 订单编号
//            null,    // 所属机构
//            null,    // 状态
//            null,    // 是否删除
//            null,    // 添加时间
//            null,    // 添加人员
//            null,    // 修改时间
//            null,    // 修改人员
//            null    // 备注
//    );
    public String getSiteStatus$(){
        if (null == this.siteStatus){ return null; }
        switch (this.siteStatus){
            case 0:
                return "空站";
            case 1:
                return "满站";
            case 2:
                return "预约";
            default:
                return String.valueOf(this.siteStatus);
        }
    }
    public String getOrderId$(){
        OrderService service = SpringUtils.getBean(OrderService.class);
        Order order = service.getById(this.orderId);
        if (!Cools.isEmpty(order)){
            return String.valueOf(order.getId());
        }
        return 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 "正常";
            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;
    }
    public void sync(Object source) {
        Synchro.Copy(source, this);
    }
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/Wave.java
@@ -1,6 +1,7 @@
package com.zy.asrs.wms.asrs.entity;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.*;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -12,10 +13,7 @@
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;
@@ -104,6 +102,9 @@
    @ApiModelProperty(value= "备注")
    private String memo;
    @TableField(exist = false)
    private Boolean generateTask;
    public Wave() {}
    public Wave(String waveNo,Integer waveType,Long hostId,Integer status,Integer deleted,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo) {
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/WaveSeed.java
New file
@@ -0,0 +1,270 @@
package com.zy.asrs.wms.asrs.entity;
import com.baomidou.mybatisplus.annotation.TableLogic;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.zy.asrs.wms.asrs.service.CacheSiteService;
import com.zy.asrs.wms.asrs.service.OrderDetlService;
import com.zy.asrs.wms.asrs.service.TaskDetlService;
import com.zy.asrs.wms.system.entity.Host;
import com.zy.asrs.wms.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.wms.system.service.UserService;
import com.zy.asrs.wms.system.service.HostService;
import com.zy.asrs.common.utils.Synchro;
import java.io.Serializable;
import java.util.Date;
@Data
@TableName("man_wave_seed")
public class WaveSeed implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ID
     */
    @ApiModelProperty(value= "ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 站点ID
     */
    @ApiModelProperty(value= "站点ID")
    private Long siteId;
    /**
     * 站点编号
     */
    @ApiModelProperty(value= "站点编号")
    private String siteNo;
    /**
     * 订单明细
     */
    @ApiModelProperty(value= "订单明细")
    private Long orderDetlId;
    /**
     * 任务明细
     */
    @ApiModelProperty(value= "任务明细")
    private Long taskDetlId;
    /**
     * 数量
     */
    @ApiModelProperty(value= "数量")
    private Double anfme;
    /**
     * 工作数量
     */
    @ApiModelProperty(value= "工作数量")
    private Double workQty;
    /**
     * 所属机构
     */
    @ApiModelProperty(value= "所属机构")
    private Long hostId;
    /**
     * 状态 1: 正常  0: 禁用
     */
    @ApiModelProperty(value= "状态 1: 正常  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;
    public WaveSeed() {}
    public WaveSeed(Long siteId,String siteNo,Long orderDetlId,Double anfme,Long hostId,Integer status,Integer deleted,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo) {
        this.siteId = siteId;
        this.siteNo = siteNo;
        this.orderDetlId = orderDetlId;
        this.anfme = anfme;
        this.hostId = hostId;
        this.status = status;
        this.deleted = deleted;
        this.createTime = createTime;
        this.createBy = createBy;
        this.updateTime = updateTime;
        this.updateBy = updateBy;
        this.memo = memo;
    }
//    WaveSeed waveSeed = new WaveSeed(
//            null,    // 站点ID
//            null,    // 站点编号
//            null,    // 订单明细
//            null,    // 数量
//            null,    // 所属机构
//            null,    // 状态
//            null,    // 是否删除
//            null,    // 添加时间
//            null,    // 添加人员
//            null,    // 修改时间
//            null,    // 修改人员
//            null    // 备注
//    );
    public String getSiteId$(){
        CacheSiteService service = SpringUtils.getBean(CacheSiteService.class);
        CacheSite cacheSite = service.getById(this.siteId);
        if (!Cools.isEmpty(cacheSite)){
            return String.valueOf(cacheSite.getId());
        }
        return null;
    }
    public String getOrderDetlId$(){
        OrderDetlService service = SpringUtils.getBean(OrderDetlService.class);
        OrderDetl orderDetl = service.getById(this.orderDetlId);
        if (!Cools.isEmpty(orderDetl)){
            return String.valueOf(orderDetl.getId());
        }
        return null;
    }
    public OrderDetl getOrderDetl$(){
        OrderDetlService service = SpringUtils.getBean(OrderDetlService.class);
        OrderDetl orderDetl = service.getById(this.orderDetlId);
        if (!Cools.isEmpty(orderDetl)){
            return orderDetl;
        }
        return null;
    }
    public TaskDetl getTaskDetl$(){
        TaskDetlService service = SpringUtils.getBean(TaskDetlService.class);
        TaskDetl taskDetl = service.getById(this.taskDetlId);
        if (!Cools.isEmpty(taskDetl)){
            return taskDetl;
        }
        return 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 "正常";
            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;
    }
    public void sync(Object source) {
        Synchro.Copy(source, this);
    }
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/enums/CacheSiteStatusType.java
New file
@@ -0,0 +1,19 @@
package com.zy.asrs.wms.asrs.entity.enums;
public enum CacheSiteStatusType {
    O(0, "空站"),
    F(1, "满站"),
    R(2, "预约"),
    ;
    public Integer id;
    public String desc;
    CacheSiteStatusType(Integer id, String desc) {
        this.id = id;
        this.desc = desc;
    }
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/OrderOutMergeParam.java
@@ -2,10 +2,11 @@
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class OrderOutMergeParam {
public class OrderOutMergeParam implements Serializable {
    private Long locId;
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/OrderOutMergeParamDto.java
New file
@@ -0,0 +1,13 @@
package com.zy.asrs.wms.asrs.entity.param;
import lombok.Data;
import java.util.List;
@Data
public class OrderOutMergeParamDto {
    private Long waveId;
    private List<OrderOutMergeParam> list;
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
@@ -4,8 +4,9 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.framework.exception.CoolException;
import com.zy.asrs.wms.asrs.entity.dto.*;
import com.zy.asrs.wms.asrs.entity.dto.OrderOutMergeDto;
import com.zy.asrs.wms.asrs.entity.enums.CacheSiteStatusType;
import com.zy.asrs.wms.asrs.entity.enums.LocStsType;
import com.zy.asrs.wms.asrs.entity.enums.OrderSettleType;
import com.zy.asrs.wms.asrs.entity.param.*;
import com.zy.asrs.wms.asrs.entity.*;
import com.zy.asrs.wms.asrs.service.*;
@@ -58,6 +59,10 @@
    private WaveService waveService;
    @Autowired
    private WaveDetlService waveDetlService;
    @Autowired
    private CacheSiteService cacheSiteService;
    @Autowired
    private WaveSeedService waveSeedService;
    /**
     * 出库
@@ -535,10 +540,12 @@
    }
    @Transactional
    public void orderOutMerge(List<OrderOutMergeParam> params) {
        if(params == null){
    public void orderOutMerge(OrderOutMergeParamDto dto) {
        if(dto == null){
            throw new CoolException("参数不能为空");
        }
        List<OrderOutMergeParam> params = dto.getList();
        if (params.isEmpty()) {
            throw new CoolException("参数不能为空");
@@ -645,6 +652,7 @@
            map.put(orderOutMergeDto.getLocId(), list);
        }
        List<TaskDetl> taskDetls = new ArrayList<>();
        for (Map.Entry<Long, List<OrderOutMergeDto>> entry : map.entrySet()) {
            Long locId = entry.getKey();
            List<OrderOutMergeDto> list = entry.getValue();
@@ -716,6 +724,8 @@
                        throw new CoolException("明细扩展生成失败");
                    }
                }
                taskDetls.add(taskDetl);
            }
            //库位F => R
@@ -728,6 +738,62 @@
        }
        if (dto.getWaveId() != null) {
            HashMap<Long, List<TaskDetl>> orderMap = new HashMap<>();
            for (TaskDetl taskDetl : taskDetls) {
                Long orderId = taskDetl.getOrderId();
                List<TaskDetl> list = orderMap.get(orderId);
                if (list == null) {
                    list = new ArrayList<>();
                }
                list.add(taskDetl);
                orderMap.put(orderId, list);
            }
            for (Map.Entry<Long, List<TaskDetl>> entry : orderMap.entrySet()) {
                List<TaskDetl> list = entry.getValue();
                List<CacheSite> cacheSites = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getSiteStatus, CacheSiteStatusType.O.id));
                if (cacheSites.isEmpty()) {
                    throw new CoolException("缓存站空间不足,请稍后再试");
                }
                CacheSite cacheSite = cacheSites.get(0);
                Long orderId = null;
                String orderNo = null;
                for (TaskDetl taskDetl : list) {
                    orderId = taskDetl.getOrderId();
                    orderNo = taskDetl.getOrderNo();
                    Long orderDetlId = taskDetl.getDetlId();
                    WaveSeed waveSeed = new WaveSeed();
                    waveSeed.setSiteId(cacheSite.getId());
                    waveSeed.setSiteNo(cacheSite.getSiteNo());
                    waveSeed.setOrderDetlId(orderDetlId);
                    waveSeed.setTaskDetlId(taskDetl.getId());
                    waveSeed.setAnfme(taskDetl.getAnfme());
                    waveSeed.setWorkQty(0D);
                    if (!waveSeedService.save(waveSeed)) {
                        throw new CoolException("波次播种创建失败");
                    }
                }
                if(orderId == null){
                    continue;
                }
                cacheSite.setOrderId(orderId);
                cacheSite.setOrderNo(orderNo);
                cacheSite.setSiteStatus(CacheSiteStatusType.R.id);
                cacheSite.setUpdateTime(new Date());
                if (!cacheSiteService.updateById(cacheSite)) {
                    throw new CoolException("缓存站更新失败");
                }
            }
        }
    }
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/CacheSiteMapper.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.wms.asrs.mapper;
import com.zy.asrs.wms.asrs.entity.CacheSite;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface CacheSiteMapper extends BaseMapper<CacheSite> {
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/WaveSeedMapper.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.wms.asrs.mapper;
import com.zy.asrs.wms.asrs.entity.WaveSeed;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface WaveSeedMapper extends BaseMapper<WaveSeed> {
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/CacheSiteService.java
New file
@@ -0,0 +1,8 @@
package com.zy.asrs.wms.asrs.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zy.asrs.wms.asrs.entity.CacheSite;
public interface CacheSiteService extends IService<CacheSite> {
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/WaveSeedService.java
New file
@@ -0,0 +1,8 @@
package com.zy.asrs.wms.asrs.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zy.asrs.wms.asrs.entity.WaveSeed;
public interface WaveSeedService extends IService<WaveSeed> {
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/CacheSiteServiceImpl.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.wms.asrs.service.impl;
import com.zy.asrs.wms.asrs.mapper.CacheSiteMapper;
import com.zy.asrs.wms.asrs.entity.CacheSite;
import com.zy.asrs.wms.asrs.service.CacheSiteService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service("cacheSiteService")
public class CacheSiteServiceImpl extends ServiceImpl<CacheSiteMapper, CacheSite> implements CacheSiteService {
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaveSeedServiceImpl.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.wms.asrs.service.impl;
import com.zy.asrs.wms.asrs.mapper.WaveSeedMapper;
import com.zy.asrs.wms.asrs.entity.WaveSeed;
import com.zy.asrs.wms.asrs.service.WaveSeedService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service("waveSeedService")
public class WaveSeedServiceImpl extends ServiceImpl<WaveSeedMapper, WaveSeed> implements WaveSeedService {
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/utils/CodeBuilder.java
@@ -22,8 +22,8 @@
//        generator.username="sa";
//        generator.password="Zoneyung@zy56$";
        generator.table="view_work_count_in";
        generator.tableName="日入库汇总查询";
        generator.table="man_wave_seed";
        generator.tableName="波次播种";
        generator.rootPackagePath="com.zy.asrs.wms";
        generator.packagePath="com.zy.asrs.wms.asrs";
zy-asrs-wms/src/main/resources/mapper/asrs/CacheSiteMapper.xml
New file
@@ -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.wms.asrs.mapper.CacheSiteMapper">
</mapper>
zy-asrs-wms/src/main/resources/mapper/asrs/WaveSeedMapper.xml
New file
@@ -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.wms.asrs.mapper.WaveSeedMapper">
</mapper>
zy-asrs-wms/src/main/resources/sql/menu/cacheSite.sql
New file
@@ -0,0 +1,9 @@
-- save cacheSite record
-- mysql
insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `host_id`, `status`) values ( '缓存站点管理', '0', '/asrs/cacheSite', '/asrs/cacheSite', '0' , '0', '1' , '1');
insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `host_id`, `status`) values ( '查询缓存站点', '', '1', 'asrs:cacheSite:list', '0', '1', '1');
insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `host_id`, `status`) values ( '添加缓存站点', '', '1', 'asrs:cacheSite:save', '1', '1', '1');
insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `host_id`, `status`) values ( '修改缓存站点', '', '1', 'asrs:cacheSite:update', '2', '1', '1');
insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `host_id`, `status`) values ( '删除缓存站点', '', '1', 'asrs:cacheSite:remove', '3', '1', '1');
zy-asrs-wms/src/main/resources/sql/menu/waveSeed.sql
New file
@@ -0,0 +1,9 @@
-- save waveSeed record
-- mysql
insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `host_id`, `status`) values ( '波次播种管理', '0', '/asrs/waveSeed', '/asrs/waveSeed', '0' , '0', '1' , '1');
insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `host_id`, `status`) values ( '查询波次播种', '', '1', 'asrs:waveSeed:list', '0', '1', '1');
insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `host_id`, `status`) values ( '添加波次播种', '', '1', 'asrs:waveSeed:save', '1', '1', '1');
insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `host_id`, `status`) values ( '修改波次播种', '', '1', 'asrs:waveSeed:update', '2', '1', '1');
insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `host_id`, `status`) values ( '删除波次播种', '', '1', 'asrs:waveSeed:remove', '3', '1', '1');