#
Junjie
2024-09-25 20cec70cdcca8c2419a17e0304d12d5360af6065
#
24个文件已修改
729 ■■■■ 已修改文件
zy-asrs-admin/src/components/order/order/orderIn.vue 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/components/order/order/orderOut.vue 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/components/orderLog/index.vue 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/base/loc/index.vue 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/base/mat/index.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/in/waitPakin/index.vue 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/in/waitPakinLog/index.vue 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/loc/loc/index.vue 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/loc/locDetl/index.vue 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/out/cacheSite/index.vue 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/out/wave/index.vue 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/out/waveSeed/index.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/task/task/index.vue 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/task/taskLog/index.vue 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderController.java 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderLogController.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/WaitPakinController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/WaveController.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/WaitPakin.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/WaitPakinLog.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/WaveSeed.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaitPakinServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskWaveTimer.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/domain/PageParam.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/components/order/order/orderIn.vue
@@ -1,7 +1,7 @@
<script setup>
import { getCurrentInstance, ref, computed, reactive, defineProps } from 'vue';
import { useRouter } from "vue-router";
import { get, post, postBlob } from '@/utils/request.js'
import { get, post, postBlob, postForm } from '@/utils/request.js'
import { message, Modal } from 'ant-design-vue';
import { globalState, logout } from '@/config.js';
import EditView from './edit.vue'
@@ -25,6 +25,11 @@
let currentPage = 1;
let pageSize = 10;
const searchInput = ref("")
const searchParam = ref({
  orderNo: null,
  orderType: null,
  orderSettle: null,
})
const editChild = ref(null)
const showOrderDetlChild = ref(null)
@@ -158,6 +163,7 @@
    current: currentPage,
    pageSize: pageSize,
    condition: searchInput.value,
    _param: searchParam.value,
  }).then((resp) => {
    let result = resp.data;
    if (result.code == 200) {
@@ -274,6 +280,25 @@
  }
};
const orderTypeQueryList = ref(null);
orderTypeQuery();
function orderTypeQuery() {
  postForm('/api/orderType/query', {
    type: 1
  }).then(resp => {
    let result = resp.data;
    orderTypeQueryList.value = result.data;
  })
}
const orderSettleQueryList = ref(null);
orderSettleQuery();
function orderSettleQuery() {
  postForm('/api/orderSettle/query', {}).then(resp => {
    let result = resp.data;
    orderSettleQueryList.value = result.data;
  })
}
</script>
<script>
@@ -287,8 +312,21 @@
    <EditView ref="editChild" @tableReload="handleTableReload"
      :ioModel="ioModel == 'in' ? 1 : ioModel == 'out' ? 2 : null" />
    <div class="table-header">
      <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')"
        style="width: 200px;" @search="onSearch" />
      <div>
        <a-input v-model:value="searchParam.orderNo" :placeholder="formatMessage('page.order.orderNo.input', '请输入订单编号')"
          style="width: 140px;margin-right: 10px;" />
        <a-select v-model:value="searchParam.orderSettle" :placeholder="formatMessage('page.order.orderSettle.select', '请选择单据状态')"
          style="width: 140px;margin-right: 10px;" show-search allowClear :options="orderSettleQueryList" optionFilterProp="label"
          optionLabelProp="label">
        </a-select>
        <a-select v-model:value="searchParam.orderType" :placeholder="formatMessage('page.order.orderType.select', '请选择单据类型')"
          style="width: 140px;margin-right: 10px;" show-search allowClear :options="orderTypeQueryList" optionFilterProp="label"
          optionLabelProp="label">
        </a-select>
        <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')"
          style="width: 200px;" @search="onSearch" />
      </div>
      <div class="table-header-right">
        <a-dropdown>
          <template #overlay>
@@ -321,7 +359,8 @@
    <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">
      :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;">
zy-asrs-admin/src/components/order/order/orderOut.vue
@@ -1,7 +1,7 @@
<script setup>
import { getCurrentInstance, ref, computed, reactive, defineProps } from 'vue';
import { useRouter } from "vue-router";
import { get, post, postBlob } from '@/utils/request.js'
import { get, post, postBlob, postForm } from '@/utils/request.js'
import { message, Modal } from 'ant-design-vue';
import { globalState, logout } from '@/config.js';
import EditView from './edit.vue'
@@ -27,6 +27,11 @@
let currentPage = 1;
let pageSize = 10;
const searchInput = ref("")
const searchParam = ref({
    orderNo: null,
    orderType: null,
    orderSettle: null,
})
const editChild = ref(null)
const showOrderDetlChild = ref(null)
@@ -167,6 +172,7 @@
        current: currentPage,
        pageSize: pageSize,
        condition: searchInput.value,
        _param: searchParam.value,
    }).then((resp) => {
        let result = resp.data;
        if (result.code == 200) {
@@ -334,6 +340,25 @@
    })
}
const orderTypeQueryList = ref(null);
orderTypeQuery();
function orderTypeQuery() {
    postForm('/api/orderType/query', {
        type: 2
    }).then(resp => {
        let result = resp.data;
        orderTypeQueryList.value = result.data;
    })
}
const orderSettleQueryList = ref(null);
orderSettleQuery();
function orderSettleQuery() {
    postForm('/api/orderSettle/query', {}).then(resp => {
        let result = resp.data;
        orderSettleQueryList.value = result.data;
    })
}
</script>
<script>
@@ -349,6 +374,20 @@
        <div class="table-header">
            <div style="display: flex;">
                <div style="margin-right: 10px;">
                    <a-input v-model:value="searchParam.orderNo"
                        :placeholder="formatMessage('page.order.orderNo.input', '请输入订单编号')"
                        style="width: 140px;margin-right: 10px;" />
                    <a-select v-model:value="searchParam.orderSettle"
                        :placeholder="formatMessage('page.order.orderSettle.select', '请选择单据状态')"
                        style="width: 140px;margin-right: 10px;" show-search allowClear :options="orderSettleQueryList"
                        optionFilterProp="label" optionLabelProp="label">
                    </a-select>
                    <a-select v-model:value="searchParam.orderType"
                        :placeholder="formatMessage('page.order.orderType.select', '请选择单据类型')"
                        style="width: 140px;margin-right: 10px;" show-search allowClear :options="orderTypeQueryList"
                        optionFilterProp="label" optionLabelProp="label">
                    </a-select>
                    <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')"
                        style="width: 200px;" @search="onSearch" />
                </div>
zy-asrs-admin/src/components/orderLog/index.vue
@@ -1,7 +1,7 @@
<script setup>
import { getCurrentInstance, ref, computed, reactive, defineProps } from 'vue';
import { useRouter } from "vue-router";
import { get, post, postBlob } from '@/utils/request.js'
import { get, post, postBlob, postForm } from '@/utils/request.js'
import { message, Modal } from 'ant-design-vue';
import { logout } from '@/config.js';
import EditView from './edit.vue'
@@ -20,6 +20,11 @@
let currentPage = 1;
let pageSize = 10;
const searchInput = ref("")
const searchParam = ref({
  orderNo: null,
  orderType: null,
  orderSettle: null,
})
const editChild = ref(null)
const showOrderDetlChild = ref(null)
@@ -139,6 +144,7 @@
    current: currentPage,
    pageSize: pageSize,
    condition: searchInput.value,
    _param: searchParam.value,
  }).then((resp) => {
    let result = resp.data;
    if (result.code == 200) {
@@ -216,6 +222,25 @@
  getPage()
}
const orderTypeQueryList = ref(null);
orderTypeQuery();
function orderTypeQuery() {
  postForm('/api/orderType/query', {
    type: 1
  }).then(resp => {
    let result = resp.data;
    orderTypeQueryList.value = result.data;
  })
}
const orderSettleQueryList = ref(null);
orderSettleQuery();
function orderSettleQuery() {
  postForm('/api/orderSettle/query', {}).then(resp => {
    let result = resp.data;
    orderSettleQueryList.value = result.data;
  })
}
</script>
<script>
@@ -228,8 +253,23 @@
  <div>
    <EditView ref="editChild" @tableReload="handleTableReload" :ioModel="ioModel == 'in' ? 1 : 2" />
    <div class="table-header">
      <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')"
        style="width: 200px;" @search="onSearch" />
      <div>
        <a-input v-model:value="searchParam.orderNo" :placeholder="formatMessage('page.order.orderNo.input', '请输入订单编号')"
          style="width: 140px;margin-right: 10px;" />
        <a-select v-model:value="searchParam.orderSettle"
          :placeholder="formatMessage('page.order.orderSettle.select', '请选择单据状态')"
          style="width: 140px;margin-right: 10px;" show-search allowClear :options="orderSettleQueryList"
          optionFilterProp="label" optionLabelProp="label">
        </a-select>
        <a-select v-model:value="searchParam.orderType"
          :placeholder="formatMessage('page.order.orderType.select', '请选择单据类型')"
          style="width: 140px;margin-right: 10px;" show-search allowClear :options="orderTypeQueryList"
          optionFilterProp="label" optionLabelProp="label">
        </a-select>
        <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')"
          style="width: 200px;" @search="onSearch" />
      </div>
      <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>
zy-asrs-admin/src/views/base/loc/index.vue
@@ -15,6 +15,13 @@
let currentPage = 1;
let pageSize = 10;
const searchInput = ref("")
const searchParam = ref({
  locNo: null,
  row1: null,
  bay1: null,
  lev1: null,
  barcode: null,
})
const editChild = ref(null)
const state = reactive({
@@ -159,7 +166,8 @@
  post('/api/loc/page', {
    current: currentPage,
    pageSize: pageSize,
    condition: searchInput.value
    condition: searchInput.value,
    _param: searchParam.value,
  }).then((resp) => {
    let result = resp.data;
    if (result.code == 200) {
@@ -242,8 +250,21 @@
  <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>
        <a-input v-model:value="searchParam.locNo" :placeholder="formatMessage('page.loc.locNo.input', '请输入库位号')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.row1" :placeholder="formatMessage('page.loc.row1.input', '请输入排')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.bay1" :placeholder="formatMessage('page.loc.bay1.input', '请输入列')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.lev1" :placeholder="formatMessage('page.loc.lev1.input', '请输入层')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.barcode" :placeholder="formatMessage('page.loc.barcode.input', '请输入条码')"
          style="width: 140px;margin-right: 10px;" />
        <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')"
          style="width: 200px;" @search="onSearch" />
      </div>
      <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>
@@ -252,7 +273,8 @@
    <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">
      :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;">
zy-asrs-admin/src/views/base/mat/index.vue
@@ -20,6 +20,12 @@
let currentPage = 1;
let pageSize = 10;
const searchInput = ref("")
const searchParam = ref({
  matnr: null,
  maktx: null,
  specs: null,
  model: null,
})
const editChild = ref(null)
const state = reactive({
@@ -355,7 +361,8 @@
  post('/api/mat/page', {
    current: currentPage,
    pageSize: pageSize,
    condition: searchInput.value
    condition: searchInput.value,
    _param: searchParam.value,
  }).then((resp) => {
    let result = resp.data;
    if (result.code == 200) {
@@ -486,8 +493,19 @@
  <div>
    <EditView ref="editChild" @tableReload="handleTableReload" />
    <div class="table-header">
      <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')"
      <div>
        <a-input v-model:value="searchParam.matnr" :placeholder="formatMessage('page.mat.matnr.input', '请输入商品编号')"
        style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.maktx" :placeholder="formatMessage('page.mat.matnr.input', '请输入商品名称')"
        style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.specs" :placeholder="formatMessage('page.mat.matnr.input', '请输入规格')"
        style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.model" :placeholder="formatMessage('page.mat.matnr.input', '请输入型号')"
        style="width: 140px;margin-right: 10px;" />
        <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')"
        style="width: 200px;" @search="onSearch" />
      </div>
      <div class="table-header-right">
        <a-dropdown>
          <template #overlay>
zy-asrs-admin/src/views/in/waitPakin/index.vue
@@ -23,6 +23,12 @@
let currentPage = 1;
let pageSize = 10;
const searchInput = ref("")
const searchParam = ref({
  orderNo: null,
  barcode: null,
  matnr: null,
  batch: null,
})
const editChild = ref(null)
const generateTaskChild = ref(null)
@@ -63,17 +69,17 @@
  },
  {
    title: formatMessage('db.man_wait_pakin.matnr', '商品编号'),
    dataIndex: ['detl$', 'mat$', 'matnr'],
    dataIndex: 'matnr',
    width: 140,
    ellipsis: true,
    ...getColumnSearchProps('detl$.matnr'),
    ...getColumnSearchProps('matnr'),
  },
  {
    title: formatMessage('db.man_wait_pakin.batch', '批号'),
    dataIndex: ['detl$', 'batch'],
    dataIndex: 'batch',
    width: 140,
    ellipsis: true,
    ...getColumnSearchProps('detl$.matnr'),
    ...getColumnSearchProps('batch'),
  },
  {
    title: formatMessage('db.man_wait_pakin.anfme', '组托数量'),
@@ -161,7 +167,8 @@
  post('/api/waitPakin/page', {
    current: currentPage,
    pageSize: pageSize,
    condition: searchInput.value
    condition: searchInput.value,
    _param: searchParam.value,
  }).then((resp) => {
    let result = resp.data;
    if (result.code == 200) {
@@ -287,8 +294,22 @@
  <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>
        <a-input v-model:value="searchParam.orderNo"
          :placeholder="formatMessage('page.waitPakin.orderNo.input', '请输入订单编号')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.barcode"
          :placeholder="formatMessage('page.waitPakin.barcode.input', '请输入托盘码')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.matnr"
          :placeholder="formatMessage('page.waitPakin.matnr.input', '请输入商品编号')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.batch" :placeholder="formatMessage('page.waitPakin.batch.input', '请输入批号')"
          style="width: 140px;margin-right: 10px;" />
        <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')"
          style="width: 200px;" @search="onSearch" />
      </div>
      <div class="table-header-right">
        <a-dropdown>
          <template #overlay>
zy-asrs-admin/src/views/in/waitPakinLog/index.vue
@@ -15,6 +15,12 @@
let currentPage = 1;
let pageSize = 10;
const searchInput = ref("")
const searchParam = ref({
  orderNo: null,
  barcode: null,
  matnr: null,
  batch: null,
})
const editChild = ref(null)
const state = reactive({
@@ -61,17 +67,17 @@
  },
  {
    title: formatMessage('db.man_wait_pakin_log.matnr', '商品编号'),
    dataIndex: ['detl$', 'mat$', 'matnr'],
    dataIndex: 'matnr',
    width: 140,
    ellipsis: true,
    ...getColumnSearchProps('detl$.matnr'),
    ...getColumnSearchProps('matnr'),
  },
  {
    title: formatMessage('db.man_wait_pakin_log.batch', '批号'),
    dataIndex: ['detl$', 'batch'],
    dataIndex: 'batch',
    width: 140,
    ellipsis: true,
    ...getColumnSearchProps('detl$.matnr'),
    ...getColumnSearchProps('batch'),
  },
  {
    title: formatMessage('db.man_wait_pakin_log.io_status', '组托状态'),
@@ -152,7 +158,8 @@
  post('/api/waitPakinLog/page', {
    current: currentPage,
    pageSize: pageSize,
    condition: searchInput.value
    condition: searchInput.value,
    _param: searchParam.value,
  }).then((resp) => {
    let result = resp.data;
    if (result.code == 200) {
@@ -235,8 +242,21 @@
  <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>
        <a-input v-model:value="searchParam.orderNo"
          :placeholder="formatMessage('page.waitPakin.orderNo.input', '请输入订单编号')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.barcode"
          :placeholder="formatMessage('page.waitPakin.barcode.input', '请输入托盘码')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.matnr" :placeholder="formatMessage('page.waitPakin.matnr.input', '请输入商品编号')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.batch" :placeholder="formatMessage('page.waitPakin.batch.input', '请输入批号')"
          style="width: 140px;margin-right: 10px;" />
        <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')"
          style="width: 200px;" @search="onSearch" />
      </div>
      <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>
zy-asrs-admin/src/views/loc/loc/index.vue
@@ -16,6 +16,13 @@
let currentPage = 1;
let pageSize = 10;
const searchInput = ref("")
const searchParam = ref({
  locNo: null,
  row1: null,
  bay1: null,
  lev1: null,
  barcode: null,
})
const editChild = ref(null)
const locDetlShowChild = ref(null)
@@ -162,7 +169,8 @@
  post('/api/loc/page', {
    current: currentPage,
    pageSize: pageSize,
    condition: searchInput.value
    condition: searchInput.value,
    _param: searchParam.value,
  }).then((resp) => {
    let result = resp.data;
    if (result.code == 200) {
@@ -250,8 +258,21 @@
  <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>
        <a-input v-model:value="searchParam.locNo" :placeholder="formatMessage('page.loc.locNo.input', '请输入库位号')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.row1" :placeholder="formatMessage('page.loc.row1.input', '请输入排')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.bay1" :placeholder="formatMessage('page.loc.bay1.input', '请输入列')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.lev1" :placeholder="formatMessage('page.loc.lev1.input', '请输入层')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.barcode" :placeholder="formatMessage('page.loc.barcode.input', '请输入条码')"
          style="width: 140px;margin-right: 10px;" />
        <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')"
          style="width: 200px;" @search="onSearch" />
      </div>
      <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>
zy-asrs-admin/src/views/loc/locDetl/index.vue
@@ -15,6 +15,12 @@
let currentPage = 1;
let pageSize = 10;
const searchInput = ref("")
const searchParam = ref({
  locNo: null,
  matnr: null,
  orderNo: null,
  batch: null,
})
const editChild = ref(null)
const state = reactive({
@@ -48,13 +54,13 @@
};
state.columns = [
  {
    title: formatMessage('db.man_loc_detl.loc_id', '库位'),
    dataIndex: 'locId$',
    width: 140,
    ellipsis: true,
    ...getColumnSearchProps('locId$'),
  },
  // {
  //   title: formatMessage('db.man_loc_detl.loc_id', '库位'),
  //   dataIndex: 'locId$',
  //   width: 140,
  //   ellipsis: true,
  //   ...getColumnSearchProps('locId$'),
  // },
  {
    title: formatMessage('db.man_loc_detl.loc_no', '库位号'),
    dataIndex: 'locNo',
@@ -184,7 +190,8 @@
  post('/api/locDetl/page', {
    current: currentPage,
    pageSize: pageSize,
    condition: searchInput.value
    condition: searchInput.value,
    _param: searchParam.value,
  }).then((resp) => {
    let result = resp.data;
    if (result.code == 200) {
@@ -267,8 +274,19 @@
  <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>
        <a-input v-model:value="searchParam.locNo" :placeholder="formatMessage('page.locDetl.locNo.input', '请输入库位号')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.matnr" :placeholder="formatMessage('page.locDetl.matnr.input', '请输入商品编号')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.orderNo" :placeholder="formatMessage('page.locDetl.orderNo.input', '请输入订单号')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.batch" :placeholder="formatMessage('page.locDetl.batch.input', '请输入批号')"
          style="width: 140px;margin-right: 10px;" />
        <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')"
          style="width: 200px;" @search="onSearch" />
      </div>
      <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>
zy-asrs-admin/src/views/out/cacheSite/index.vue
@@ -15,6 +15,12 @@
let currentPage = 1;
let pageSize = 10;
const searchInput = ref("")
const searchParam = ref({
  siteNo: null,
  siteStatus: null,
  orderNo: null,
  platformNo: null,
})
const editChild = ref(null)
const state = reactive({
@@ -52,13 +58,13 @@
    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_id', '订单ID'),
  //   dataIndex: 'orderId$',
  //   width: 140,
  //   ellipsis: true,
  //   ...getColumnSearchProps('orderId$'),
  // },
  {
    title: formatMessage('db.man_cache_site.order_no', '订单编号'),
    dataIndex: 'orderNo',
@@ -145,7 +151,8 @@
  post('/api/cacheSite/page', {
    current: currentPage,
    pageSize: pageSize,
    condition: searchInput.value
    condition: searchInput.value,
    _param: searchParam.value,
  }).then((resp) => {
    let result = resp.data;
    if (result.code == 200) {
@@ -388,8 +395,27 @@
  <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>
        <a-input v-model:value="searchParam.siteNo"
          :placeholder="formatMessage('page.cacheSite.siteNo.input', '请输入站点编号')"
          style="width: 140px;margin-right: 10px;" />
        <a-select v-model:value="searchParam.siteStatus" :options="[
          { label: '空站', value: 0 },
          { label: '满站', value: 1 },
          { label: '预约', value: 2 },
        ]" :placeholder="formatMessage('page.cacheSite.siteStatus.input', '请选择站点状态')"
          style="width: 140px;margin-right: 10px;" allowClear>
        </a-select>
        <a-input v-model:value="searchParam.orderNo"
          :placeholder="formatMessage('page.cacheSite.orderNo.input', '请输入订单号')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.platformNo"
          :placeholder="formatMessage('page.cacheSite.platformNo.input', '请输入集货编号')"
          style="width: 140px;margin-right: 10px;" />
        <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')"
          style="width: 200px;" @search="onSearch" />
      </div>
      <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>
zy-asrs-admin/src/views/out/wave/index.vue
@@ -16,6 +16,11 @@
let currentPage = 1;
let pageSize = 10;
const searchInput = ref("")
const searchParam = ref({
  waveNo: null,
  matnr: null,
  batch: null,
})
const editChild = ref(null)
const orderOutWavePreviewChild = ref(null);
@@ -133,7 +138,8 @@
  post('/api/wave/page', {
    current: currentPage,
    pageSize: pageSize,
    condition: searchInput.value
    condition: searchInput.value,
    _param: searchParam.value,
  }).then((resp) => {
    let result = resp.data;
    if (result.code == 200) {
@@ -300,8 +306,17 @@
  <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>
        <a-input v-model:value="searchParam.waveNo" :placeholder="formatMessage('page.wave.waveNo.input', '请输入波次号')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.matnr" :placeholder="formatMessage('page.wave.matnr.input', '请输入商品编号')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.batch" :placeholder="formatMessage('page.wave.batch.input', '请输入批号')"
          style="width: 140px;margin-right: 10px;" />
        <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')"
          style="width: 200px;" @search="onSearch" />
      </div>
      <!-- <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>
@@ -313,10 +328,11 @@
      <template #bodyCell="{ column, text, record }">
        <template v-if="column.dataIndex === 'oper'">
          <div style="display: flex;justify-content: space-evenly;">
            <a-button type="link" primary :disabled="record.waveStatus != 0" @click="handleGenerateOut(record.waveId)">{{
              formatMessage('page.generateOut',
                '生成出库任务')
            }}</a-button>
            <a-button type="link" primary :disabled="record.waveStatus != 0"
              @click="handleGenerateOut(record.waveId)">{{
                formatMessage('page.generateOut',
                  '生成出库任务')
              }}</a-button>
            <a-button type="link" danger @click="handleDel([record])">{{ formatMessage('page.cancel', '取消')
              }}</a-button>
          </div>
zy-asrs-admin/src/views/out/waveSeed/index.vue
@@ -15,6 +15,12 @@
let currentPage = 1;
let pageSize = 10;
const searchInput = ref("")
const searchParam = ref({
  siteNo: null,
  orderNo: null,
  matnr: null,
  batch: null,
})
const editChild = ref(null)
const state = reactive({
@@ -158,7 +164,8 @@
  post('/api/waveSeed/page', {
    current: currentPage,
    pageSize: pageSize,
    condition: searchInput.value
    condition: searchInput.value,
    _param: searchParam.value,
  }).then((resp) => {
    let result = resp.data;
    if (result.code == 200) {
@@ -263,8 +270,19 @@
  <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>
        <a-input v-model:value="searchParam.siteNo" :placeholder="formatMessage('page.waveSeed.siteNo.input', '请输入站点编号')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.orderNo" :placeholder="formatMessage('page.waveSeed.orderNo.input', '请输入订单编号')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.matnr" :placeholder="formatMessage('page.waveSeed.matnr.input', '请输入商品编号')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.batch" :placeholder="formatMessage('page.waveSeed.batch.input', '请输入批号')"
          style="width: 140px;margin-right: 10px;" />
        <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')"
          style="width: 200px;" @search="onSearch" />
      </div>
      <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>
zy-asrs-admin/src/views/task/task/index.vue
@@ -1,7 +1,7 @@
<script setup>
import { getCurrentInstance, ref, computed, reactive } from 'vue';
import { useRouter } from "vue-router";
import { get, post, postBlob } from '@/utils/request.js'
import { get, post, postBlob, postForm } from '@/utils/request.js'
import { message, Modal } from 'ant-design-vue';
import { logout } from '@/config.js';
import EditView from './edit.vue'
@@ -16,6 +16,14 @@
let currentPage = 1;
let pageSize = 10;
const searchInput = ref("")
const searchParam = ref({
  taskNo: null,
  taskSts: null,
  taskType: null,
  originLoc: null,
  targetLoc: null,
  barcode: null,
})
const editChild = ref(null)
const showTaskDetlChild = ref(null)
@@ -168,7 +176,8 @@
  post('/api/task/page', {
    current: currentPage,
    pageSize: pageSize,
    condition: searchInput.value
    condition: searchInput.value,
    _param: searchParam.value,
  }).then((resp) => {
    let result = resp.data;
    if (result.code == 200) {
@@ -319,6 +328,23 @@
  });
}
const taskStsQueryList = ref(null);
taskStsQuery();
function taskStsQuery() {
  postForm('/api/taskSts/query', {}).then(resp => {
    let result = resp.data;
    taskStsQueryList.value = result.data;
  })
}
const taskTypeQueryList = ref(null);
taskTypeQuery();
function taskTypeQuery() {
  postForm('/api/taskType/query', {}).then(resp => {
    let result = resp.data;
    taskTypeQueryList.value = result.data;
  })
}
</script>
<script>
@@ -331,8 +357,29 @@
  <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>
        <a-input v-model:value="searchParam.taskNo" :placeholder="formatMessage('page.task.taskNo.input', '请输入任务编号')"
          style="width: 140px;margin-right: 10px;" />
        <a-select v-model:value="searchParam.taskSts"
          :placeholder="formatMessage('page.task.taskSts.select', '请选择任务状态')" style="width: 140px;margin-right: 10px;"
          show-search allowClear :options="taskStsQueryList" optionFilterProp="label" optionLabelProp="label">
        </a-select>
        <a-select v-model:value="searchParam.taskType"
          :placeholder="formatMessage('page.task.taskType.select', '请选择任务类型')" style="width: 140px;margin-right: 10px;"
          show-search allowClear :options="taskTypeQueryList" optionFilterProp="label" optionLabelProp="label">
        </a-select>
        <a-input v-model:value="searchParam.originLoc"
          :placeholder="formatMessage('page.task.originLoc.input', '请输入源库位')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.targetLoc"
          :placeholder="formatMessage('page.task.targetLoc.input', '请输入目标库位')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.barcode" :placeholder="formatMessage('page.task.barcode.input', '请输入托盘码')"
          style="width: 140px;margin-right: 10px;" />
        <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')"
          style="width: 200px;" @search="onSearch" />
      </div>
      <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>
zy-asrs-admin/src/views/task/taskLog/index.vue
@@ -1,7 +1,7 @@
<script setup>
import { getCurrentInstance, ref, computed, reactive } from 'vue';
import { useRouter } from "vue-router";
import { get, post, postBlob } from '@/utils/request.js'
import { get, post, postBlob, postForm } from '@/utils/request.js'
import { message, Modal } from 'ant-design-vue';
import { logout } from '@/config.js';
import EditView from './edit.vue'
@@ -16,6 +16,14 @@
let currentPage = 1;
let pageSize = 10;
const searchInput = ref("")
const searchParam = ref({
  taskNo: null,
  taskSts: null,
  taskType: null,
  originLoc: null,
  targetLoc: null,
  barcode: null,
})
const editChild = ref(null)
const showTaskDetlChild = ref(null)
@@ -169,7 +177,8 @@
  post('/api/taskLog/page', {
    current: currentPage,
    pageSize: pageSize,
    condition: searchInput.value
    condition: searchInput.value,
    _param: searchParam.value,
  }).then((resp) => {
    let result = resp.data;
    if (result.code == 200) {
@@ -245,6 +254,23 @@
  showTaskDetlChild.value.taskId = record.id;
}
const taskStsQueryList = ref(null);
taskStsQuery();
function taskStsQuery() {
  postForm('/api/taskSts/query', {}).then(resp => {
    let result = resp.data;
    taskStsQueryList.value = result.data;
  })
}
const taskTypeQueryList = ref(null);
taskTypeQuery();
function taskTypeQuery() {
  postForm('/api/taskType/query', {}).then(resp => {
    let result = resp.data;
    taskTypeQueryList.value = result.data;
  })
}
</script>
<script>
@@ -257,8 +283,29 @@
  <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>
        <a-input v-model:value="searchParam.taskNo" :placeholder="formatMessage('page.task.taskNo.input', '请输入任务编号')"
          style="width: 140px;margin-right: 10px;" />
        <a-select v-model:value="searchParam.taskSts"
          :placeholder="formatMessage('page.task.taskSts.select', '请选择任务状态')" style="width: 140px;margin-right: 10px;"
          show-search allowClear :options="taskStsQueryList" optionFilterProp="label" optionLabelProp="label">
        </a-select>
        <a-select v-model:value="searchParam.taskType"
          :placeholder="formatMessage('page.task.taskType.select', '请选择任务类型')" style="width: 140px;margin-right: 10px;"
          show-search allowClear :options="taskTypeQueryList" optionFilterProp="label" optionLabelProp="label">
        </a-select>
        <a-input v-model:value="searchParam.originLoc"
          :placeholder="formatMessage('page.task.originLoc.input', '请输入源库位')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.targetLoc"
          :placeholder="formatMessage('page.task.targetLoc.input', '请输入目标库位')"
          style="width: 140px;margin-right: 10px;" />
        <a-input v-model:value="searchParam.barcode" :placeholder="formatMessage('page.task.barcode.input', '请输入托盘码')"
          style="width: 140px;margin-right: 10px;" />
        <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')"
          style="width: 200px;" @search="onSearch" />
      </div>
      <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>
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderController.java
@@ -1,6 +1,7 @@
package com.zy.asrs.wms.asrs.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.R;
@@ -21,6 +22,7 @@
import com.zy.asrs.wms.asrs.service.OrderService;
import com.zy.asrs.wms.system.controller.BaseController;
import com.zy.asrs.wms.utils.ExcelUtil;
import com.zy.asrs.wms.utils.Utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
@@ -56,21 +58,34 @@
        BaseParam baseParam = buildParam(map, BaseParam.class);
        PageParam<Order, BaseParam> pageParam = new PageParam<>(baseParam, Order.class);
//        QueryWrapper<Order> wrapper = pageParam.buildWrapper(true);
        LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<>();
        QueryWrapper<Order> wrapper = new QueryWrapper<>();
        ArrayList<Long> types = new ArrayList<>();
        for (OrderType orderType : orderTypeService.list(new LambdaQueryWrapper<OrderType>().eq(OrderType::getType, 1))) {
            types.add(orderType.getId());
        }
        wrapper.in(Order::getOrderType, types);
        wrapper.in("order_type", types);
        if (!Cools.isEmpty(condition)) {
            wrapper.and(wrapper1 -> {
                wrapper1.or().like(Order::getOrderNo, condition);
                wrapper1.or().like(Order::getMemo, condition);
                wrapper1.or().like("order_no", condition);
                wrapper1.or().like("memo", condition);
            });
        }
        Object paramObj = map.get("_param");
        if(paramObj != null) {
            Map param = (Map) paramObj;
            for (Object value : param.entrySet()) {
                Map.Entry entry = (Map.Entry) value;
                String paramKey = Utils.toSymbolCase(entry.getKey().toString(), '_');
                if (entry.getValue() != null) {
                    wrapper.like(paramKey, entry.getValue());
                }
            }
        }
        return R.ok().add(orderService.page(pageParam, wrapper));
    }
@@ -81,25 +96,38 @@
        BaseParam baseParam = buildParam(map, BaseParam.class);
        PageParam<Order, BaseParam> pageParam = new PageParam<>(baseParam, Order.class);
//        QueryWrapper<Order> wrapper = pageParam.buildWrapper(true);
        LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<>();
        QueryWrapper<Order> wrapper = new QueryWrapper<>();
        ArrayList<Long> types = new ArrayList<>();
        for (OrderType orderType : orderTypeService.list(new LambdaQueryWrapper<OrderType>().eq(OrderType::getType, 2))) {
            types.add(orderType.getId());
        }
        wrapper.in(Order::getOrderType, types);
        wrapper.in("order_type", types);
        if (map.containsKey("orderOut")) {
            wrapper.isNull(Order::getWaveId);
            wrapper.isNull("wave_id");
        }
        if (!Cools.isEmpty(condition)) {
            wrapper.and(wrapper1 -> {
                wrapper1.or().like(Order::getOrderNo, condition);
                wrapper1.or().like(Order::getMemo, condition);
                wrapper1.or().like("order_no", condition);
                wrapper1.or().like("memo", condition);
            });
        }
        Object paramObj = map.get("_param");
        if(paramObj != null) {
            Map param = (Map) paramObj;
            for (Object value : param.entrySet()) {
                Map.Entry entry = (Map.Entry) value;
                String paramKey = Utils.toSymbolCase(entry.getKey().toString(), '_');
                if (entry.getValue() != null) {
                    wrapper.like(paramKey, entry.getValue());
                }
            }
        }
        return R.ok().add(orderService.page(pageParam, wrapper));
    }
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderLogController.java
@@ -1,6 +1,7 @@
package com.zy.asrs.wms.asrs.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.R;
@@ -14,6 +15,7 @@
import com.zy.asrs.wms.asrs.service.OrderLogService;
import com.zy.asrs.wms.system.controller.BaseController;
import com.zy.asrs.wms.utils.ExcelUtil;
import com.zy.asrs.wms.utils.Utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
@@ -48,21 +50,34 @@
        BaseParam baseParam = buildParam(map, BaseParam.class);
        PageParam<OrderLog, BaseParam> pageParam = new PageParam<>(baseParam, OrderLog.class);
//        QueryWrapper<OrderLog> wrapper = pageParam.buildWrapper(true);
        LambdaQueryWrapper<OrderLog> wrapper = new LambdaQueryWrapper<>();
        QueryWrapper<OrderLog> wrapper = new QueryWrapper<>();
        ArrayList<Long> types = new ArrayList<>();
        for (OrderType orderType : orderTypeService.list(new LambdaQueryWrapper<OrderType>().eq(OrderType::getType, 1))) {
            types.add(orderType.getId());
        }
        wrapper.in(OrderLog::getOrderType, types);
        wrapper.in("order_type", types);
        if (!Cools.isEmpty(condition)) {
            wrapper.and(wrapper1 -> {
                wrapper1.or().like(OrderLog::getOrderNo, condition);
                wrapper1.or().like(OrderLog::getMemo, condition);
                wrapper1.or().like("order_no", condition);
                wrapper1.or().like("memo", condition);
            });
        }
        Object paramObj = map.get("_param");
        if(paramObj != null) {
            Map param = (Map) paramObj;
            for (Object value : param.entrySet()) {
                Map.Entry entry = (Map.Entry) value;
                String paramKey = Utils.toSymbolCase(entry.getKey().toString(), '_');
                if (entry.getValue() != null) {
                    wrapper.like(paramKey, entry.getValue());
                }
            }
        }
        return R.ok().add(orderLogService.page(pageParam, wrapper));
    }
@@ -73,21 +88,34 @@
        BaseParam baseParam = buildParam(map, BaseParam.class);
        PageParam<OrderLog, BaseParam> pageParam = new PageParam<>(baseParam, OrderLog.class);
//        QueryWrapper<OrderLog> wrapper = pageParam.buildWrapper(true);
        LambdaQueryWrapper<OrderLog> wrapper = new LambdaQueryWrapper<>();
        QueryWrapper<OrderLog> wrapper = new QueryWrapper<>();
        ArrayList<Long> types = new ArrayList<>();
        for (OrderType orderType : orderTypeService.list(new LambdaQueryWrapper<OrderType>().eq(OrderType::getType, 2))) {
            types.add(orderType.getId());
        }
        wrapper.in(OrderLog::getOrderType, types);
        wrapper.in("order_type", types);
        if (!Cools.isEmpty(condition)) {
            wrapper.and(wrapper1 -> {
                wrapper1.or().like(OrderLog::getOrderNo, condition);
                wrapper1.or().like(OrderLog::getMemo, condition);
                wrapper1.or().like("order_no", condition);
                wrapper1.or().like("memo", condition);
            });
        }
        Object paramObj = map.get("_param");
        if(paramObj != null) {
            Map param = (Map) paramObj;
            for (Object value : param.entrySet()) {
                Map.Entry entry = (Map.Entry) value;
                String paramKey = Utils.toSymbolCase(entry.getKey().toString(), '_');
                if (entry.getValue() != null) {
                    wrapper.like(paramKey, entry.getValue());
                }
            }
        }
        return R.ok().add(orderLogService.page(pageParam, wrapper));
    }
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/WaitPakinController.java
@@ -153,15 +153,15 @@
                throw new CoolException("订单明细不存在");
            }
            Long detlId = null;
            for (OrderDetl orderDetl : orderDetls) {
                Mat mat = orderDetl.getMat$();
            OrderDetl orderDetl = null;
            for (OrderDetl detl : orderDetls) {
                Mat mat = detl.getMat$();
                if (mat.getMatnr().equals(waitPakinTemplate.getMatnr())) {
                    detlId = orderDetl.getId();
                    orderDetl = detl;
                }
            }
            if (detlId == null) {
            if (orderDetl == null) {
                throw new CoolException("订单明细不存在");
            }
@@ -170,7 +170,9 @@
            waitPakin.setOrderNo(order.getOrderNo());
            waitPakin.setAnfme(waitPakinTemplate.getAnfme());
            waitPakin.setBarcode(waitPakinTemplate.getBarcode());
            waitPakin.setDetlId(detlId);
            waitPakin.setDetlId(orderDetl.getId());
            waitPakin.setMatnr(orderDetl.getMat$().getMatnr());
            waitPakin.setBatch(orderDetl.getBatch());
            waitPakinService.comb(waitPakin);
        }
        return R.ok();
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/WaveController.java
@@ -1,6 +1,7 @@
package com.zy.asrs.wms.asrs.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.R;
@@ -35,7 +36,54 @@
    public R page(@RequestBody Map<String, Object> map) {
        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));
        QueryWrapper<Wave> wrapper = new QueryWrapper<>();
        String condition = map.getOrDefault("condition", "").toString();
        if (!Cools.isEmpty(condition)) {
            wrapper.and(wrapper1 -> {
                wrapper1.or().like("wave_no", condition);
                wrapper1.or().like("memo", condition);
            });
        }
        Object paramObj = map.get("_param");
        if(paramObj != null) {
            Map param = (Map) paramObj;
            Object waveNoObj = param.get("waveNo");
            Object matnrObj = param.get("matnr");
            Object batchObj = param.get("batch");
            LambdaQueryWrapper<WaveDetl> waveDetlWrapper = new LambdaQueryWrapper<>();
            if(!Cools.isEmpty(waveNoObj)) {
                waveDetlWrapper.like(WaveDetl::getWaveNo, waveNoObj);
            }
            if(!Cools.isEmpty(matnrObj)) {
                waveDetlWrapper.like(WaveDetl::getMatnr, matnrObj);
            }
            if(!Cools.isEmpty(batchObj)) {
                waveDetlWrapper.like(WaveDetl::getBatch, batchObj);
            }
            List<WaveDetl> waveDetls = waveDetlService.list(waveDetlWrapper);
            ArrayList<Long> waveIds = new ArrayList<>();
            for (WaveDetl waveDetl : waveDetls) {
                if(!waveIds.contains(waveDetl.getWaveId())) {
                    waveIds.add(waveDetl.getWaveId());
                }
            }
            if (waveIds.isEmpty()) {
                waveIds.add(-1L);
            }
            wrapper.in("id", waveIds);
        }
        PageParam<Wave, BaseParam> page = waveService.page(pageParam, wrapper);
        return R.ok().add(page);
    }
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/WaitPakin.java
@@ -126,6 +126,18 @@
    @ApiModelProperty(value= "备注")
    private String memo;
    /**
     * 商品编号
     */
    @ApiModelProperty(value= "商品编号")
    private String matnr;
    /**
     * 批号
     */
    @ApiModelProperty(value= "批号")
    private String batch;
    public WaitPakin() {}
    public WaitPakin(Long orderId,String orderNo,Double anfme,String barcode,Long detlId,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/WaitPakinLog.java
@@ -129,6 +129,18 @@
    @ApiModelProperty(value= "备注")
    private String memo;
    /**
     * 商品编号
     */
    @ApiModelProperty(value= "商品编号")
    private String matnr;
    /**
     * 批号
     */
    @ApiModelProperty(value= "批号")
    private String batch;
    public WaitPakinLog() {}
    public WaitPakinLog(Long orderId,String orderNo,Double anfme,String barcode,Long detlId,Integer ioStatus,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
@@ -55,6 +55,12 @@
    private String siteNo;
    /**
     * 订单编号
     */
    @ApiModelProperty(value= "订单编号")
    private String orderNo;
    /**
     * 订单
     */
    @ApiModelProperty(value= "订单")
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaitPakinServiceImpl.java
@@ -68,6 +68,8 @@
        WaitPakin waitPakin1 = this.getOne(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, waitPakin.getBarcode()).eq(WaitPakin::getDetlId, waitPakin.getDetlId()));
        if (waitPakin1 == null) {
            //不存在组托通知档,创建
            waitPakin.setMatnr(orderDetl.getMat$().getMatnr());
            waitPakin.setBatch(orderDetl.getBatch());
            if (!this.save(waitPakin)) {
                throw new CoolException("添加失败");
            }
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskWaveTimer.java
@@ -112,6 +112,7 @@
                        WaveSeed waveSeed = new WaveSeed();
                        waveSeed.setSiteId(cacheSite.getId());
                        waveSeed.setSiteNo(cacheSite.getSiteNo());
                        waveSeed.setOrderNo(orderDetl.getOrderNo());
                        waveSeed.setOrderId(orderDetl.getOrderId());
                        waveSeed.setOrderDetlId(orderDetl.getId());
                        waveSeed.setTaskDetlId(taskDetl.getId());
zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/domain/PageParam.java
@@ -97,6 +97,18 @@
                    queryWrapper.ge(key, DateUtils.convert(list.get(0)));
                    queryWrapper.le(key, DateUtils.convert(list.get(1)));
                }
            } else if (key.equals("_param")) {
                Map param = (Map) val;
                for (Object value : param.entrySet()) {
                    Map.Entry entry = (Map.Entry) value;
                    String paramKey = entry.getKey().toString();
                    if (this.isToUnderlineCase) {
                        paramKey = Utils.toSymbolCase(paramKey, '_');
                    }
                    if (!Cools.isEmpty(entry.getValue())) {
                        queryWrapper.like(paramKey, entry.getValue());
                    }
                }
            } else if (val instanceof List) {
                if (this.isToUnderlineCase) {
                    key = Utils.toSymbolCase(key, '_');