190230a07b0413f2e1317bae743c50bcef5f650c..a0bfeb4ad6fc2091eef7518df16861235aa0e476
2025-07-01 skyouc
清除托盘码站点
a0bfeb 对比 | 目录
2025-07-01 skyouc
Merge branch 'ycds-wms-dev' of http://47.97.1.152:5880/r/zy-asrs-master int...
795256 对比 | 目录
2025-07-01 skyouc
no message
0b8388 对比 | 目录
2025-06-29 yangyang
问题修复
5cf0fe 对比 | 目录
3个文件已添加
21个文件已修改
499 ■■■■ 已修改文件
zy-asrs-admin/src/components/locDetl/selectLocDetl/index.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/components/locDetl/show.vue 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/components/order/order/edit.vue 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/components/orderDetl/show.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/components/print/locsPrint/index.vue 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/components/print/locsPrint/locTemplate.vue 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/base/loc/index.vue 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/loc/locDetl/index.vue 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/log/viewWorkIn/index.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/LocMapController.java 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/LocDetl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/Order.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/ViewLocDetl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/LocMastInitParam.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/LocMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/OrderServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/utils/Utils.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/resources/application.yml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/resources/mapper/asrs/LocMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/components/locDetl/selectLocDetl/index.vue
@@ -64,6 +64,27 @@
        ...getColumnSearchProps('matnr'),
    },
    {
        title: formatMessage('db.man_loc_detl.maktx', '商品名称'),
        dataIndex: 'maktx',
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('maktx'),
    },
   {
        title: formatMessage('db.man_loc_detl.specs', '规格'),
        dataIndex: 'specs',
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('specs'),
    },
   {
        title: formatMessage('db.man_loc_detl.model', '型号'),
        dataIndex: 'model',
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('model'),
    },
    {
        title: formatMessage('db.man_loc_detl.order_no', '订单号'),
        dataIndex: 'orderNo',
        width: 140,
zy-asrs-admin/src/components/locDetl/show.vue
@@ -37,13 +37,6 @@
        ...getColumnSearchProps('locNo'),
    },
    {
        title: formatMessage('db.man_loc_detl.mat_id', '商品'),
        dataIndex: 'matId$',
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('matId$'),
    },
    {
        title: formatMessage('db.man_loc_detl.matnr', '商品编号'),
        dataIndex: 'matnr',
        width: 140,
@@ -51,6 +44,27 @@
        ...getColumnSearchProps('matnr'),
    },
    {
        title: formatMessage('db.man_loc_detl.maktx', '商品名称'),
        dataIndex: 'maktx',
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('maktx'),
    },
   {
        title: formatMessage('db.man_loc_detl.specs', '规格'),
        dataIndex: 'specs',
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('specs'),
    },
   {
        title: formatMessage('db.man_loc_detl.model', '型号'),
        dataIndex: 'model',
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('model'),
    },
    {
        title: formatMessage('db.man_loc_detl.order_no', '订单号'),
        dataIndex: 'orderNo',
        width: 140,
zy-asrs-admin/src/components/order/order/edit.vue
@@ -132,10 +132,6 @@
                <a-form-item :label="formatMessage('db.man_order.order_no', '订单编号')" name="orderNo">
                    <a-input v-model:value="formData.orderNo" />
                </a-form-item>
                <!-- <a-form-item :label="formatMessage('db.man_order.order_time', '单据日期')" name="orderTime"
                    style="width: 250px;">
                    <a-input v-model:value="formData.orderTime" />
                </a-form-item> -->
                <a-form-item :label="formatMessage('db.man_order.order_type', '单据类型')" name="orderType">
                    <a-select v-model:value="formData.orderType" :placeholder="formatMessage('common.select', '请选择')"
                        style="width: 100%" show-search :options="orderTypeQueryList" optionFilterProp="label"
@@ -148,45 +144,21 @@
                        optionLabelProp="label">
                    </a-select>
                </a-form-item>
                <!-- <a-form-item :label="formatMessage('db.man_order.status', '状态')" name="status" >
                    <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_order.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 :label="formatMessage('db.man_order.order_no', '物流公司')" name="orderNo" >
                    <a-input v-model:value="formData.orderNo" />
                </a-form-item>
                <a-form-item :label="formatMessage('db.man_order.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 :label="formatMessage('db.man_order.order_no', '快递单号')" name="orderNo">
                    <a-input v-model:value="formData.orderNo"/>
                </a-form-item>
                <a-form-item :label="formatMessage('db.man_order.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 :label="formatMessage('db.man_order.order_no', '物流公司')" name="orderNo" >
                    <a-input v-model:value="formData.orderNo"/>
                </a-form-item>
                <a-form-item :label="formatMessage('db.man_order.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 :label="formatMessage('db.man_order.order_no', '快递单号')" name="orderNo">
                    <a-input v-model:value="formData.orderNo"/>
                </a-form-item> -->
                <!-- <a-form-item :label="formatMessage('db.man_order.memo', '备注')" name="memo" style="width: 250px;">
                    <a-input v-model:value="formData.memo" />
                </a-form-item> -->
                <a-form-item :label="formatMessage('db.man_order.update_time', '订单明细')" name="orderDetl">
                    <OrderDetlComponent ref="orderDetlChild" v-if="open" />
                </a-form-item>
                <a-form-item>
                    <a-button type="primary" html-type="submit" ref="submitButton"
                        style="visibility: hidden;">Submit</a-button>
zy-asrs-admin/src/components/orderDetl/show.vue
@@ -184,6 +184,7 @@
            let result = resp.data;
            if(result.data != null) {
                orderInfo.value = result.data;
                console.log(result.data);
            }
        })
    }
@@ -237,6 +238,25 @@
                        单据状态:{{ orderInfo.orderSettle$ }}
                    </h3>
                </div>
                <div>
                    <h3>
                        数量:{{ orderInfo.waitQty }}
                    </h3>
                    <h3>
                        物流名称:{{ orderInfo.logisticsName }}
                    </h3>
                    <h3>
                        快递单号:{{ orderInfo.logistics }}
                    </h3>
                </div>
                 <div>
                    <h3>
                        收货地址:{{ orderInfo.address }}
                    </h3>
                    <h3>
                        联系电话:{{ orderInfo.phone }}
                    </h3>
                </div>
                <div class="qrcode">
                    <a-qrcode :value="orderInfo.orderNo" :size="100" :bordered="false" />
                </div>
zy-asrs-admin/src/components/print/locsPrint/index.vue
New file
@@ -0,0 +1,56 @@
<script setup>
import {ref, toRaw} from 'vue';
import { formatMessage } from '@/utils/localeUtils';
import locTemplate from './locTemplate.vue';
const template = {
    locTemplate
}
const printChild = ref(null);
const selectTemplate = ref('locTemplate');
let open = ref(false);
let printData = ref([]);
let repeatNum = ref(1);
let orderNo = ref('');
const handleOk = () => {
}
const printObj = ref({
    id: "printOrder",
    beforeOpenCallback(vue) {
        // console.log(toRaw(printData.value))
    },
    openCallback(vue) {
        console.log('执行了打印')
    },
    closeCallback(vue) {
        console.log('关闭了打印工具')
    },
});
defineExpose({
    open,
    orderNo,
    printData
})
</script>
<template>
    <a-modal v-model:open="open" :title="formatMessage('', '库位打印')" @ok="handleOk" :width="'60%'" v-if="open">
        <div style="height: 500px;overflow-x: hidden;overflow-y: scroll;">
            <div style="margin-top: 20px;">
                <Component :is="template[selectTemplate]" ref="printChild" :list="printData" :repeatNum="repeatNum"  />
            </div>
        </div>
        <template #footer>
            <a-button key="submit" type="primary" v-print="printObj" @click="handleOk">
                {{ formatMessage('common.print', '打印') }}
            </a-button>
        </template>
    </a-modal>
</template>
<style></style>
zy-asrs-admin/src/components/print/locsPrint/locTemplate.vue
New file
@@ -0,0 +1,61 @@
<script setup>
import { toRefs, ref, defineProps, watch } from 'vue';
import { globalState } from '@/config.js'
import { formatMessage } from '@/utils/localeUtils';
const props = defineProps({
    locNo: {
        type: String,
        default: ''
    },
    list: {
        type: Array,
        default: []
    },
    repeatNum: {
        type: Number,
        default: 1
    }
});
const { locNo, list, repeatNum } = toRefs(props)
</script>
<template>
    <div id="printOrder">
        <div v-for="(item, index) in list">
            <table class="contain" width="600" style="overflow: hidden;font-size: xx-small;table-layout: fixed;  margin-top: 10px;">
                <tr style="height: 300px;">
                    <td class="barcode" colspan="9" align="center" scope="col">
                        <img :src="globalState.url + '/api/code/auth?type=1&param=' + item.locNo" width="90%;" height="180px"/>
                        <div style="letter-spacing: 2px;margin-top: 10px; text-align: center;">
                            <span>{{ item.locNo }} </span>
                        </div>
                    </td>
                </tr>
            </table>
        </div>
    </div>
</template>
<style>
@media print {
    body {
        margin: 0;
        padding: 0;
    }
    .print-area {
        margin: 0;
        padding: 0;
        height: auto;
    }
}
.contain td {
    border: 1px solid #000;
    padding: 5px;
}
</style>
zy-asrs-admin/src/views/base/loc/index.vue
@@ -6,6 +6,7 @@
import { logout } from '@/config.js';
import EditView from './edit.vue'
import { formatMessage } from '@/utils/localeUtils.js';
import LocsPrint from '@/components/print/locsPrint/index.vue';
import useTableSearch from '@/utils/tableUtils.jsx';
const context = getCurrentInstance()?.appContext.config.globalProperties;
@@ -14,6 +15,8 @@
const TABLE_KEY = 'table-loc';
let currentPage = 1;
let pageSize = 10;
let printDisable = true
const printChild = ref("")
const searchInput = ref("")
const searchParam = ref({
  locNo: null,
@@ -27,6 +30,7 @@
const state = reactive({
  selectedRowKeys: [],
  loading: false,
  selectRecords: []
});
let tableData = ref([]);
@@ -157,9 +161,24 @@
  }, 1000);
};
const onSelectChange = selectedRowKeys => {
  // console.log('selectedRowKeys changed: ', selectedRowKeys);
  let printData = [];
  console.log('selectedRowKeys changed: ', selectedRowKeys);
  state.selectedRowKeys = selectedRowKeys;
  state.selectRecords = tableData.value.records.filter(item => {
    return selectedRowKeys.includes(item.id)
  })
  if (state.selectRecords.length > 0) {
    printDisable = false
  } else {
    printDisable = true
  }
};
const handlePrint = (item) => {
  printChild.value.printData = state.selectRecords;
  printChild.value.open = true;
}
function getPage() {
  state.loading = true;
@@ -173,7 +192,6 @@
    if (result.code == 200) {
      let data = result.data;
      tableData.value = data;
      state.loading = false;
    } else if (result.code === 401) {
      message.error(result.msg);
@@ -269,6 +287,8 @@
          style="width: 200px;" @search="onSearch" />
      </div>
      <div class="table-header-right">
        <a-button @click="handlePrint(null)" type="primary" :disabled="printDisable">{{ formatMessage('page.add', '打印')
        }}</a-button>
        <a-button @click="handleEdit(null)" type="primary">{{ formatMessage('page.add', '添加') }}</a-button>
        <a-button @click="handleExport">{{ formatMessage('page.export', '导出') }}</a-button>
      </div>
@@ -283,12 +303,11 @@
          <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>
            }}</a-button>
          </div>
        </template>
      </template>
    </a-table>
    <LocsPrint ref="printChild" />
  </div>
</template>
<style></style>
zy-asrs-admin/src/views/loc/locDetl/index.vue
@@ -69,13 +69,6 @@
    ...getColumnSearchProps('locNo'),
  },
  {
    title: formatMessage('db.man_loc_detl.mat_id', '商品'),
    dataIndex: 'matId$',
    width: 140,
    ellipsis: true,
    ...getColumnSearchProps('matId$'),
  },
  {
    title: formatMessage('db.man_loc_detl.matnr', '商品编号'),
    dataIndex: 'matnr',
    width: 140,
@@ -83,6 +76,34 @@
    ...getColumnSearchProps('matnr'),
  },
  {
        title: formatMessage('db.man_loc_detl.maktx', '商品名称'),
        dataIndex: 'maktx',
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('maktx'),
    },
   {
        title: formatMessage('db.man_loc_detl.specs', '规格'),
        dataIndex: 'specs',
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('specs'),
    },
   {
        title: formatMessage('db.man_loc_detl.model', '型号'),
        dataIndex: 'model',
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('model'),
  },
  {
        title: formatMessage('db.man_loc_detl.dewell', '入库时间'),
        dataIndex: 'dewell$',
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('dewell$'),
  },
  {
    title: formatMessage('db.man_loc_detl.order_no', '订单号'),
    dataIndex: 'orderNo',
    width: 140,
zy-asrs-admin/src/views/log/viewWorkIn/index.vue
@@ -40,6 +40,13 @@
state.columns = [
    {
        title: formatMessage('db.view_work_in.matnr', '入库单号'),
        dataIndex: 'orderNo',
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('orderNo'),
    },
    {
        title: formatMessage('db.view_work_in.create_time', '入库日期'),
        dataIndex: 'createTime$',
        width: 140,
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/LocMapController.java
@@ -8,6 +8,7 @@
import com.zy.asrs.framework.common.R;
import com.zy.asrs.wms.asrs.entity.Loc;
import com.zy.asrs.wms.asrs.entity.enums.LocStsType;
import com.zy.asrs.wms.asrs.entity.param.LocMastInitParam;
import com.zy.asrs.wms.asrs.service.LocService;
import com.zy.asrs.wms.common.annotation.OperationLog;
import com.zy.asrs.wms.common.domain.BaseParam;
@@ -153,32 +154,56 @@
    @OperationLog("初始化库位")
    @PostMapping("/locMap/init")
    @Transactional
    public R init(@RequestBody LocMap locMap) {
        Integer mapLev = locMap.getMapLev();
    public R init(@RequestBody LocMastInitParam param) {
//        Integer mapLev = locMap.getMapLev();
        locService.remove(new LambdaQueryWrapper<Loc>().eq(Loc::getLev1, mapLev));
//        locService.remove(new LambdaQueryWrapper<Loc>().eq(Loc::getLev1, mapLev));
        //解析json地图数据
        List<ArrayList> arrayLists = JSON.parseArray(locMap.getData(), ArrayList.class);
        int rowIdx = 0;
        for (ArrayList row : arrayLists) {
            int bayIdx = 0;
            for (Object bay : row) {
                JSONObject data = JSON.parseObject(JSON.toJSONString(bay));
                if (data.getInteger("value") == 0) {
//        List<ArrayList> arrayLists = JSON.parseArray(locMap.getData(), ArrayList.class);
//        int rowIdx = 0;
//        for (ArrayList row : arrayLists) {
//            int bayIdx = 0;
//            for (Object bay : row) {
//                JSONObject data = JSON.parseObject(JSON.toJSONString(bay));
//                if (data.getInteger("value") == 0) {
//                    Loc loc = new Loc();
//                    loc.setRow1(rowIdx);
//                    loc.setBay1(bayIdx);
//                    loc.setLev1(mapLev);
//                    loc.setLocStsId(LocStsType.O.val());
//                    loc.setLocNo(Utils.getPlatLocNo(rowIdx, bayIdx, mapLev));
//                    locService.save(loc);
//                }
//                bayIdx++;
//            }
//            rowIdx++;
//        }
        List<Loc> list = new ArrayList<>();
        Integer chanl = 0; //默认第一巷道
        for (int r = param.getStartRow(); r <= param.getEndRow(); r++) {
//            if (r % param.getChannel() == 1) {
//                chanl ++;
//            }
            for (int b = param.getStartBay(); b <= param.getEndBay(); b++) {
                for (int l = param.getStartLev(); l <= param.getEndLev(); l++) {
                    // 获取库位号
                    String locNo = Utils.getPlatLocNo(r, b, l);
                    Loc loc = new Loc();
                    loc.setRow1(rowIdx);
                    loc.setBay1(bayIdx);
                    loc.setLev1(mapLev);
                    loc.setRow1(r);
                    loc.setBay1(b);
                    loc.setLev1(l);
                    loc.setLocStsId(LocStsType.O.val());
                    loc.setLocNo(Utils.getLocNo(rowIdx, bayIdx, mapLev));
                    loc.setLocNo(locNo);
                    locService.save(loc);
                    list.add(loc);
                }
                bayIdx++;
            }
            rowIdx++;
        }
        return R.ok("添加成功");
    }
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java
@@ -302,7 +302,7 @@
     * @description: 获取推荐库位
     * @version 1.0
     */
    @PostMapping("/recommend/locs")
    @GetMapping("/recommend/locs")
    public R getRecommend() {
        return  mobileService.getRecommendLocs();
    }
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderController.java
@@ -7,6 +7,7 @@
import com.zy.asrs.framework.common.R;
import com.zy.asrs.framework.exception.CoolException;
import com.zy.asrs.wms.asrs.entity.MatField;
import com.zy.asrs.wms.asrs.entity.OrderDetl;
import com.zy.asrs.wms.asrs.entity.OrderType;
import com.zy.asrs.wms.asrs.entity.enums.OrderSettleType;
import com.zy.asrs.wms.asrs.entity.param.CreateOrderParam;
@@ -14,6 +15,7 @@
import com.zy.asrs.wms.asrs.entity.template.OrderTemplate;
import com.zy.asrs.wms.asrs.service.MatFieldService;
import com.zy.asrs.wms.asrs.service.OrderTypeService;
import com.zy.asrs.wms.asrs.service.impl.OrderDetlServiceImpl;
import com.zy.asrs.wms.common.annotation.CacheData;
import com.zy.asrs.wms.common.annotation.OperationLog;
import com.zy.asrs.wms.common.domain.BaseParam;
@@ -43,6 +45,8 @@
    private OrderTypeService orderTypeService;
    @Autowired
    private MatFieldService matFieldService;
    @Autowired
    private OrderDetlServiceImpl orderDetlService;
    @PreAuthorize("hasAuthority('asrs:order:list')")
    @PostMapping("/order/page")
@@ -147,7 +151,13 @@
    @GetMapping("/order/{id}")
//    @CacheData(tableName = {"man_order"})
    public R get(@PathVariable("id") Long id) {
        return R.ok().add(orderService.getById(id));
        Order order = orderService.getById(id);
        List<OrderDetl> detls = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, order.getId()));
        if (!detls.isEmpty()) {
            Double sum = detls.stream().mapToDouble(OrderDetl::getAnfme).sum();
            order.setWaitQty(sum);
        }
        return R.ok().add(order);
    }
    @PreAuthorize("hasAuthority('asrs:order:save')")
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/LocDetl.java
@@ -7,6 +7,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.zy.asrs.common.utils.Synchro;
import com.zy.asrs.framework.common.DateUtils;
import com.zy.asrs.wms.asrs.service.LocService;
import com.zy.asrs.wms.asrs.service.MatFieldService;
import com.zy.asrs.wms.asrs.service.MatService;
@@ -137,6 +138,7 @@
    @ApiModelProperty(value= "备注")
    private String memo;
    /**
     * 库存冻结 1: 冻结  0: 正常
     */
@@ -200,6 +202,7 @@
        return null;
    }
    public String getHostId$(){
        HostService service = SpringUtils.getBean(HostService.class);
        Host host = service.getById(this.hostId);
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/Order.java
@@ -66,6 +66,21 @@
    @ApiModelProperty(value= "单据状态")
    private Long orderSettle;
    @ApiModelProperty("物流名称")
    private String logisticsName;
    @ApiModelProperty("收货地址")
    private String address;
    @ApiModelProperty("联系电话")
    private String phone;
    @ApiModelProperty("快递单号")
    private String logistics;
    @ApiModelProperty("订单数量")
    @TableField(exist = false)
    private Double waitQty;
    /**
     * 所属机构
     */
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/ViewLocDetl.java
@@ -7,6 +7,7 @@
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.zy.asrs.common.utils.Synchro;
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.DateUtils;
import com.zy.asrs.framework.common.SpringUtils;
import com.zy.asrs.wms.asrs.service.LocService;
import com.zy.asrs.wms.asrs.service.MatService;
@@ -16,6 +17,7 @@
import com.zy.asrs.wms.system.service.UserService;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Delegate;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
@@ -183,15 +185,18 @@
        return null;
    }
    public String getMatId$(){
    @Delegate(types = Mat.class)
    public Mat getMatId$(){
        MatService service = SpringUtils.getBean(MatService.class);
        Mat mat = service.getById(this.matId);
        if (!Cools.isEmpty(mat)){
            return String.valueOf(mat.getId());
        }
        return null;
        return mat;
    }
    public String getDewell$() {
        return DateUtils.diff(new Date(), createTime) + "天";
    }
    public String getHostId$(){
        HostService service = SpringUtils.getBean(HostService.class);
        Host host = service.getById(this.hostId);
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/LocMastInitParam.java
New file
@@ -0,0 +1,47 @@
package com.zy.asrs.wms.asrs.entity.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
/**
 * Created by vincent on 2020/6/13
 */
@Data
@Accessors(chain = true)
public class LocMastInitParam implements Serializable {
    @ApiModelProperty("仓库ID")
    private Long warehouseId;
    @ApiModelProperty("库区ID")
    private Long areaId;
    @ApiModelProperty("起始排")
    private Integer startRow;
    @ApiModelProperty("终止排")
    private Integer endRow;
    @ApiModelProperty("起始列")
    private Integer startBay;
    @ApiModelProperty("终止列")
    private Integer endBay;
    @ApiModelProperty("起始层")
    private Integer startLev;
    @ApiModelProperty("终止层")
    private Integer endLev;
    @ApiModelProperty("库位类型")
    private List<Long> typeIds;
    @ApiModelProperty("巷道")
    private Integer channel;
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/LocMapper.java
@@ -14,5 +14,5 @@
    List<Long> listBySts(Long sts);
    R getRecommendLocs();
    Loc getRecommendLocs();
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocServiceImpl.java
@@ -28,6 +28,6 @@
     */
    @Override
    public R getRecommengLocs() {
        return this.baseMapper.getRecommendLocs();
        return R.ok().add(this.baseMapper.getRecommendLocs());
    }
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
@@ -219,9 +219,9 @@
        List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().in(Order::getId, list));
        //订单入历史档
        orders.forEach(order -> {
            if (order.getOrderType() != OrderType.PK_IN_ORDER.id) {
                throw new CoolException("当前订单类型:" + order.getOrderType() + ",不可做平库上架操作!!");
            }
//            if (order.getOrderType() != OrderType.PK_IN_ORDER.id) {
//                throw new CoolException("当前订单类型:" + order.getOrderType() + ",不可做平库上架操作!!");
//            }
            //修改订单状态为已完成
            order.setOrderSettle(OrderSettleType.COMPLETE.val());
            OrderLog orderLog = new OrderLog();
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/OrderServiceImpl.java
@@ -19,10 +19,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.*;
@Service("orderService")
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
@@ -132,7 +129,7 @@
                throw new CoolException("更新明细索引失败");
            }
            mat.setUtiliz(mat.getUtiliz() + 1);
            mat.setUtiliz(Objects.isNull(mat.getUtiliz()) ? 0 : mat.getUtiliz() + 1);
            if (!matService.updateById(mat)) {
                throw new CoolException("物料使用率修改失败!!");
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java
@@ -123,6 +123,7 @@
                for (TaskDetl taskDetl : taskDetls) {
                    TaskDetlLog taskDetlLog = new TaskDetlLog();
                    taskDetlLog.sync(taskDetl);
                    taskDetlLog.setOrderId(taskDetl.getOrderId());
                    taskDetlLog.setId(null);
                    taskDetlLog.setTaskId(taskLog.getId());
                    if (!taskDetlLogService.save(taskDetlLog)) {
zy-asrs-wms/src/main/java/com/zy/asrs/wms/utils/Utils.java
@@ -124,10 +124,28 @@
        throw new RuntimeException("库位解析异常");
    }
    public static String getPlatLocNo(Number row, Number bay, Number lev) {
        return "C" + zerofill(String.valueOf(row), 2) + "-" + zerofill(String.valueOf(bay), 2) + "-" + zerofill(String.valueOf(lev), 2);
    }
    public static String getLocNo(Number row, Number bay, Number lev) {
        return row + _LINK + bay + _LINK + lev;
    }
    public static String zerofill(String msg, Integer count){
        if (msg.length() == count){
            return msg;
        } else if (msg.length() > count){
            return msg.substring(0, 16);
        } else {
            StringBuilder msgBuilder = new StringBuilder(msg);
            for (int i = 0; i<count-msg.length(); i++){
                msgBuilder.insert(0,"0");
            }
            return msgBuilder.toString();
        }
    }
    /**
     * List转为树形结构
     *
zy-asrs-wms/src/main/resources/application.yml
@@ -13,10 +13,10 @@
      validation-timeout: 3000
      connection-test-query: select 1
    driver-class-name: com.mysql.cj.jdbc.Driver
#    url: jdbc:mysql://127.0.0.1:3306/wms_dev_test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    url: jdbc:mysql://127.0.0.1:3306/ycdsasrs?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    url: jdbc:mysql://127.0.0.1:3306/wms_dev_test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
#    url: jdbc:mysql://127.0.0.1:3306/ycdsasrs?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 123456
    password: 34821015
#    url: jdbc:mysql://47.76.147.249:3306/wms_dev_test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
#    username: wms_dev_test
#    password: smjPbTrkmTMEGKaD
zy-asrs-wms/src/main/resources/mapper/asrs/LocMapper.xml
@@ -6,8 +6,7 @@
        select * from man_loc
        where loc_sts_id = #{sts}
    </select>
    <select id="getRecommendLocs" resultType="com.zy.asrs.framework.common.R">
        SELECT id, loc_no, loc_sts_id, row1, bay1, lev1, barcode, `status`, flag FROM man_loc WHERE loc_no LIKE '%B%' OR loc_no LIKE '%C%'
    <select id="getRecommendLocs" resultType="com.zy.asrs.wms.asrs.entity.Loc">
        SELECT id, loc_no, loc_sts_id, row1, bay1, lev1, barcode, `status`, flag FROM man_loc WHERE (loc_no LIKE '%B%' OR loc_no LIKE '%C%') AND loc_sts_id = 2 ORDER BY lev1 ASC LIMIT 1
    </select>
</mapper>