From 32a853eecbc4f60d472dfbfb8860f7849426885f Mon Sep 17 00:00:00 2001
From: Yxq <2290299376@qq.com>
Date: Mon, 26 Jan 2026 14:20:07 +0800
Subject: [PATCH] =?UTF-8?q?1.=E6=96=B0=E5=A2=9E=E5=A4=9A=E9=80=89=E7=9B=98?=
=?UTF-8?q?=E7=82=B9=E5=92=8CEXCEL=E5=AF=BC=E5=85=A5=E7=9B=98=E7=82=B9=202?=
=?UTF-8?q?.EWM=E6=8E=A5=E5=8F=A3=E4=BC=98=E5=8C=96=203.=E5=87=BA=E5=BA=93?=
=?UTF-8?q?=E7=94=B1=E8=87=AA=E5=8A=A8=E6=94=B9=E4=B8=BA=E6=89=8B=E5=8A=A8?=
=?UTF-8?q?=E4=B8=8B=E5=8F=91=204.=E5=87=BA=E5=BA=93=E6=A0=A1=E9=AA=8C?=
=?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9=205.=E5=BA=93=E5=AD=98?=
=?UTF-8?q?=E5=90=88=E5=B9=B6=E5=8A=9F=E8=83=BD=206.=E7=AC=AC=E4=BA=8C?=
=?UTF-8?q?=E7=A7=8D=E5=85=A5=E5=BA=93=E6=A8=A1=E5=BC=8F=207.WMS=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E5=9B=BE=E6=A0=87=E7=BB=9F=E8=AE=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
dev_wms_client/package-lock.json | 59 ++
dev_wms_client/package.json | 1 +
dev_wms_client/src/api/excel.js | 9 +
dev_wms_client/src/api/goods.js | 8 +
dev_wms_client/src/api/stock.js | 27 +-
dev_wms_client/src/api/task.js | 41 ++
dev_wms_client/src/http/request.js | 1 +
dev_wms_client/src/layout/batchInventory.vue | 46 +-
dev_wms_client/src/layout/excelInventory.vue | 426 ++++++++++++
dev_wms_client/src/layout/goods.vue | 291 +++++++--
dev_wms_client/src/layout/pda.vue | 36 +-
dev_wms_client/src/layout/pdaSecondIn.vue | 566 ++++++++++++++++
dev_wms_client/src/layout/stockMix.vue | 616 ++++++++++++++++++
dev_wms_client/src/layout/stockMixConfirm.vue | 402 ++++++++++++
dev_wms_client/src/layout/wmsChart.vue | 343 ++++++++++
dev_wms_client/src/router/index.js | 14 +
dev_wms_client/src/views/PDACenter.vue | 60 ++
dev_wms_client/src/views/SystemCenter.vue | 7 +-
.../constant/enums/wms/WmsInvTypeEnums.java | 4 +-
.../controller/wms/DataController.java | 66 ++
.../controller/wms/ExcelController.java | 16 +
.../controller/wms/StockController.java | 21 +
.../controller/wms/TaskController.java | 54 ++
.../controller/wms/TaskQueryController.java | 11 +
.../excelTemplate/GoodsImportTemplate.java | 29 +
.../easypoi/service/IExportExcelEasyPoi.java | 2 +
.../easypoi/service/IImportExcelEasyPoi.java | 2 +
.../base/impl/BaseExportExcelEasyPoi.java | 15 +-
.../serviceImpl/ImportExcelEasyPoi.java | 122 +++-
.../request/wms/InventoryConfirmRequest.java | 14 +
.../dto/request/wms/InventoryRequest.java | 6 +
.../dto/request/wms/MixStockRequest.java | 23 +
.../com/wms_main/model/po/TAppInventory.java | 3 +
.../java/com/wms_main/model/po/TAppOuts.java | 4 +
.../model/vo/wms/InventoryConfirmVo.java | 6 +
.../com/wms_main/model/vo/wms/OutsVo.java | 8 +
.../repository/http/entity/HttpRequest.java | 46 +-
.../repository/utils/StringUtils.java | 22 +
.../api/serviceImpl/EwmApiServiceImpl.java | 112 +++-
.../serviceImpl/ConveyTaskServiceImpl.java | 1 +
.../serviceImpl/StackerTaskServiceImpl.java | 126 ++--
.../controller/IDataControllerService.java | 5 +
.../controller/IStockControllerService.java | 16 +
.../controller/ITaskControllerService.java | 29 +
.../ITaskQueryControllerService.java | 3 +
.../DataControllerServiceImpl.java | 138 ++++
.../StockControllerServiceImpl.java | 137 ++++
.../TaskControllerServiceImpl.java | 514 ++++++++++++++-
.../TaskQueryControllerServiceImpl.java | 51 ++
.../serviceImpl/OutsExecutorServiceImpl.java | 5 +-
.../src/main/resources/application.yml | 8 +-
51 files changed, 4423 insertions(+), 149 deletions(-)
create mode 100644 dev_wms_client/src/layout/excelInventory.vue
create mode 100644 dev_wms_client/src/layout/pdaSecondIn.vue
create mode 100644 dev_wms_client/src/layout/stockMix.vue
create mode 100644 dev_wms_client/src/layout/stockMixConfirm.vue
create mode 100644 dev_wms_client/src/layout/wmsChart.vue
create mode 100644 dev_wms_client/src/views/PDACenter.vue
create mode 100644 dev_wms_serve/src/main/java/com/wms_main/excel/easypoi/excelTemplate/GoodsImportTemplate.java
create mode 100644 dev_wms_serve/src/main/java/com/wms_main/model/dto/request/wms/MixStockRequest.java
diff --git a/dev_wms_client/package-lock.json b/dev_wms_client/package-lock.json
index 5e94a4d..1f24ff9 100644
--- a/dev_wms_client/package-lock.json
+++ b/dev_wms_client/package-lock.json
@@ -11,6 +11,7 @@
"@element-plus/icons-vue": "^2.3.1",
"axios": "^1.3.3",
"core-js": "^3.8.3",
+ "echarts": "^5.4.3",
"element-plus": "^2.9.8",
"file-saver": "^2.0.5",
"moment": "^2.29.4",
@@ -5558,6 +5559,20 @@
"node": ">=6.0.0"
}
},
+ "node_modules/echarts": {
+ "version": "5.4.3",
+ "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.3.tgz",
+ "integrity": "sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==",
+ "dependencies": {
+ "tslib": "2.3.0",
+ "zrender": "5.4.4"
+ }
+ },
+ "node_modules/echarts/node_modules/tslib": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
+ "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+ },
"node_modules/ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
@@ -12223,6 +12238,19 @@
"engines": {
"node": ">=10"
}
+ },
+ "node_modules/zrender": {
+ "version": "5.4.4",
+ "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.4.4.tgz",
+ "integrity": "sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==",
+ "dependencies": {
+ "tslib": "2.3.0"
+ }
+ },
+ "node_modules/zrender/node_modules/tslib": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
+ "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
}
},
"dependencies": {
@@ -16416,6 +16444,22 @@
"integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==",
"dev": true
},
+ "echarts": {
+ "version": "5.4.3",
+ "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.3.tgz",
+ "integrity": "sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==",
+ "requires": {
+ "tslib": "2.3.0",
+ "zrender": "5.4.4"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
+ "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+ }
+ }
+ },
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
@@ -21683,6 +21727,21 @@
"resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz",
"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
"dev": true
+ },
+ "zrender": {
+ "version": "5.4.4",
+ "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.4.4.tgz",
+ "integrity": "sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==",
+ "requires": {
+ "tslib": "2.3.0"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
+ "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+ }
+ }
}
}
}
diff --git a/dev_wms_client/package.json b/dev_wms_client/package.json
index f57c645..95f6388 100644
--- a/dev_wms_client/package.json
+++ b/dev_wms_client/package.json
@@ -11,6 +11,7 @@
"@element-plus/icons-vue": "^2.3.1",
"axios": "^1.3.3",
"core-js": "^3.8.3",
+ "echarts": "^5.4.3",
"element-plus": "^2.9.8",
"file-saver": "^2.0.5",
"moment": "^2.29.4",
diff --git a/dev_wms_client/src/api/excel.js b/dev_wms_client/src/api/excel.js
index 1ebda5e..68b5122 100644
--- a/dev_wms_client/src/api/excel.js
+++ b/dev_wms_client/src/api/excel.js
@@ -172,4 +172,13 @@ export const exportLocationDetailExcel = (data) => {
data: data,
timeout: 600000
})
+}
+// 导入盘点任务
+export const importInventoryExcel = (data) => {
+ return request({
+ url: '/excel/importGoods', // 根据你提供的地址修改
+ method: 'post',
+ data: data,
+ timeout: 600000
+ })
}
\ No newline at end of file
diff --git a/dev_wms_client/src/api/goods.js b/dev_wms_client/src/api/goods.js
index 3691170..20a532d 100644
--- a/dev_wms_client/src/api/goods.js
+++ b/dev_wms_client/src/api/goods.js
@@ -1,5 +1,13 @@
import request from "@/http/request";
+export function batchIssueTasks(params) {
+ return request({
+ url: '/taskQuery/updateOutsTaskStatus',
+ method: 'post',
+ data: params
+ })
+}
+
/**
* 分页查找物料
*/
diff --git a/dev_wms_client/src/api/stock.js b/dev_wms_client/src/api/stock.js
index afffb7e..9739e31 100644
--- a/dev_wms_client/src/api/stock.js
+++ b/dev_wms_client/src/api/stock.js
@@ -8,6 +8,14 @@ export const queryStocksByPage = (params) => {
})
}
+export const querySpecialEmptyStocksForMix = (params) => {
+ return request({
+ url: '/stock/querySpecialEmptyStocksForMix',
+ method: 'post',
+ data: params
+ })
+}
+
export const queryStocks = (params) => {
return request({
url: '/stock/queryStocks',
@@ -16,10 +24,27 @@ export const queryStocks = (params) => {
})
}
+export const queryStocksBySpecial = (params) => {
+ return request({
+ url: '/stock/queryStocksBySpecial',
+ method: 'post',
+ data: params
+ })
+}
+
+export const querySpecialEmptyStocksForPDA = (params) => {
+ return request({
+ url: '/stock/querySpecialEmptyStocksForPDA',
+ method: 'post',
+ data: params
+ })
+}
+
export const queryStockUpdateByPage = (params) => {
return request({
url: '/stock/queryStockUpdateByPage',
method: 'post',
data: params
})
-}
\ No newline at end of file
+}
+
diff --git a/dev_wms_client/src/api/task.js b/dev_wms_client/src/api/task.js
index a25c400..3c99613 100644
--- a/dev_wms_client/src/api/task.js
+++ b/dev_wms_client/src/api/task.js
@@ -73,6 +73,14 @@ export const confirmCurrentTask = (params, config = {}) => {
})
}
+export const mergeStocks = (params) => {
+ return request({
+ url: '/task/createInventoryFromMixStock',
+ method: 'post',
+ data: params
+ })
+}
+
export const confirmCurrentTaskByPDA = (params) => {
return request({
@@ -115,6 +123,39 @@ export const confirmInventory = (params) => {
data: params
})
}
+export const confirmMixStock = (params) => {
+ return request({
+ url: '/task/confirmMixStock',
+ method: 'post',
+ data: params,
+ timeout: 30000
+ })
+}
+
+export const pdaOutTask = (params) => {
+ return request({
+ url: '/task/pdaOutTask',
+ method: 'post',
+ data: params
+ })
+}
+
+export const queryInOutBoundStatistics = (params) => {
+ return request({
+ url: '/board/queryInOutBoundStatistics',
+ method: 'post',
+ data: params
+ })
+}
+
+export const queryStockAgeDistribution = (params) => {
+ return request({
+ url: '/board/queryStockAgeDistribution',
+ method: 'get',
+ data: params
+ })
+}
+
// 获取缺料数量
export const getGoodsLackQty = (params) => {
return request({
diff --git a/dev_wms_client/src/http/request.js b/dev_wms_client/src/http/request.js
index 485004c..7c7698e 100644
--- a/dev_wms_client/src/http/request.js
+++ b/dev_wms_client/src/http/request.js
@@ -2,6 +2,7 @@ import axios from 'axios'
const request = axios.create({
baseURL: 'http://172.18.222.253:12315/wms',
+ //baseURL: 'http://172.18.222.253:12306/wms',
//baseURL: 'http://localhost:12315/wms',
timeout: 5000
})
diff --git a/dev_wms_client/src/layout/batchInventory.vue b/dev_wms_client/src/layout/batchInventory.vue
index 0a9946a..bfe9da4 100644
--- a/dev_wms_client/src/layout/batchInventory.vue
+++ b/dev_wms_client/src/layout/batchInventory.vue
@@ -274,6 +274,7 @@ const handleSelectionChange = (row) => {
}
}
+// 处理全选变化
// 处理全选变化
const handleSelectAllChange = (val) => {
displayStocks.value.forEach(row => {
@@ -281,12 +282,15 @@ const handleSelectAllChange = (val) => {
})
if (val) {
- // 全选
+ // 全选 - 添加到选中数组
selectedRows.value = [...displayStocks.value]
} else {
- // 取消全选
+ // 取消全选 - 清空选中数组
selectedRows.value = []
}
+
+ // 强制更新视图
+ displayStocks.value = [...displayStocks.value]
}
// 处理批量盘点按钮点击
const handleBatchInventory = () => {
@@ -320,14 +324,13 @@ const confirmBatchInventory = () => {
if (res.data.code === 0) {
ElMessage.success('批量盘点成功');
showBatchInventoryDialog.value = false;
- search(); // 刷新表格数据
- // 清空选择
- selectedRows.value.forEach(row => {
- row.checked = false;
- });
- selectedRows.value = [];
- isSelectAll.value = false;
+ // 先清空选择状态
+ selectedRows.value = []
+ isSelectAll.value = false
+
+ // 然后刷新数据
+ search(); // 刷新表格数据
} else {
ElMessage.error(res.data.message);
}
@@ -336,6 +339,18 @@ const confirmBatchInventory = () => {
});
};
+// 重置选择状态
+const resetSelection = () => {
+ selectedRows.value = []
+ isSelectAll.value = false
+ if (displayStocks.value && displayStocks.value.length > 0) {
+ displayStocks.value.forEach(row => {
+ row.checked = false
+ })
+ // 强制更新视图
+ displayStocks.value = [...displayStocks.value]
+ }
+}
// 查询
const search = () => {
@@ -356,11 +371,21 @@ const search = () => {
const data = response.data
console.log(data)
if (data != null) {
- displayStocks.value = data.lists
+ // 重置每行的checked状态
+ displayStocks.value = data.lists.map(item => ({
+ ...item,
+ checked: false
+ }))
baseTableQuery.total = data.total
+
+ // 重置选择状态
+ selectedRows.value = []
+ isSelectAll.value = false
} else {
displayStocks.value = []
baseTableQuery.total = 0
+ selectedRows.value = []
+ isSelectAll.value = false
}
} else {
ElMessage.error(response.message)
@@ -381,6 +406,7 @@ const clearQuery = () => {
stockQuery.fromDate = null,
stockQuery.toDate = null,
stockQuery.noUseDays = null
+ resetSelection()
}
const loadAllGoodsInfo = () => {
const request = {
diff --git a/dev_wms_client/src/layout/excelInventory.vue b/dev_wms_client/src/layout/excelInventory.vue
new file mode 100644
index 0000000..373e7c2
--- /dev/null
+++ b/dev_wms_client/src/layout/excelInventory.vue
@@ -0,0 +1,426 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 选择Excel文件
+
+
+ 上传文件
+
+
+
+ 请上传Excel文件(.xlsx或.xls),文件格式请参考模板
+
+
+
+
+ 取消
+
+
+
+
+
+
+
diff --git a/dev_wms_client/src/layout/goods.vue b/dev_wms_client/src/layout/goods.vue
index b83a1b3..5336f00 100644
--- a/dev_wms_client/src/layout/goods.vue
+++ b/dev_wms_client/src/layout/goods.vue
@@ -15,24 +15,30 @@
-
-
-
-
+
+
+
+
查询
清除输入
+
+
+ 批量下发({{ selectedRows.length }})
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
@@ -46,6 +52,7 @@
@@ -64,6 +71,7 @@
show-overflow-tooltip/>
+
-
+
+
+
+ {{ getStatusText(scope.row.taskStatus) }}
+
+
+
@@ -107,8 +126,7 @@
size="small"
type="primary"
@click="handleBatchEdit"
- :disabled="selectedRows.length === 0"
- style="margin-top: 5px;">
+ :disabled="selectedRows.length === 0" style="margin-top: 5px;">
批量修改时间({{ selectedRows.length }})
@@ -118,9 +136,15 @@
@@ -170,9 +194,9 @@
+
+
+
+
diff --git a/dev_wms_client/src/layout/stockMix.vue b/dev_wms_client/src/layout/stockMix.vue
new file mode 100644
index 0000000..964a25e
--- /dev/null
+++ b/dev_wms_client/src/layout/stockMix.vue
@@ -0,0 +1,616 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 合并
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ currentGoods.goodsId }}
+
+
+ {{ currentGoods.goodsDesc }}
+
+
+ {{ currentGoods.remainNum }}
+
+
+ {{ currentGoods.realNum }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ stockStatusFormat(scope.row) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 请选择合并的目标载具(将其他选中载具的数据合并到此载具):
+
+
+
+
+
+
+
载具: {{ item.vehicleId }}
+
库位: {{ locationFormat(item, null, item.locationId) }}
+
数量: {{ item.remainNum }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dev_wms_client/src/layout/stockMixConfirm.vue b/dev_wms_client/src/layout/stockMixConfirm.vue
new file mode 100644
index 0000000..f0c8865
--- /dev/null
+++ b/dev_wms_client/src/layout/stockMixConfirm.vue
@@ -0,0 +1,402 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dev_wms_client/src/layout/wmsChart.vue b/dev_wms_client/src/layout/wmsChart.vue
new file mode 100644
index 0000000..38bcc84
--- /dev/null
+++ b/dev_wms_client/src/layout/wmsChart.vue
@@ -0,0 +1,343 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dev_wms_client/src/router/index.js b/dev_wms_client/src/router/index.js
index eb42d0f..fc4cb3e 100644
--- a/dev_wms_client/src/router/index.js
+++ b/dev_wms_client/src/router/index.js
@@ -30,6 +30,10 @@ const routes = [
{path: '/outsMonitor', component: () => import('@/layout/OutsMonitor.vue')},// 任务表单
{path: '/clcKanban', component: () => import('@/layout/clcKanban.vue')},// 需求看板
{path: '/batchInventory', component: () => import('@/layout/batchInventory.vue')},// 批量盘点
+ {path: '/excelInventory', component: () => import('@/layout/excelInventory.vue')},// Excel盘点
+ {path: '/stockMix', component: () => import('@/layout/stockMix.vue')},// 库存合并
+ {path: '/wmsChart', component: () => import('@/layout/wmsChart.vue')},// 库存合并
+ {path: '//stockMixConfirm', component: () => import('@/layout//stockMixConfirm.vue')},
{path: '/stockCompare', component: () => import('@/layout/stockCompare.vue')},
{path: '/stockUpdateRecord', component: () => import('@/layout/stockUpdateRecord.vue')},// 库存更新记录
{path: '/roleUser', component: () => import('@/layout/role_user.vue')},// 角色——用户列表
@@ -50,6 +54,16 @@ const routes = [
name: 'login',
component: login
},
+ {
+ path: '/pda-center',
+ name: 'PDACenter',
+ component: () => import('@/views/PDACenter.vue')
+ },
+ {
+ path: '/pda-secondIn',
+ name: 'pdaSecondIn',
+ component: () => import('@/layout/pdaSecondIn.vue') // 假设这是具体功能页面
+ },
{
path: '/pda',
name: 'pda',
diff --git a/dev_wms_client/src/views/PDACenter.vue b/dev_wms_client/src/views/PDACenter.vue
new file mode 100644
index 0000000..be5eccd
--- /dev/null
+++ b/dev_wms_client/src/views/PDACenter.vue
@@ -0,0 +1,60 @@
+
+
+
+ PDA系统功能选择
+
+ PDA拣选功能
+
+
+ PDA呼叫料箱
+
+
+
+
+
+
+
+
diff --git a/dev_wms_client/src/views/SystemCenter.vue b/dev_wms_client/src/views/SystemCenter.vue
index abb9232..40b91b4 100644
--- a/dev_wms_client/src/views/SystemCenter.vue
+++ b/dev_wms_client/src/views/SystemCenter.vue
@@ -39,7 +39,7 @@ const token = store.getters.getToken// 密码
const loginToWms = () => {
router.replace({ path: '/home' })
}
-// 登录到PDA系统
+// 登录到PDA系统 - 修改此函数
const PdaToWms = () => {
// 先检查用户是否有PDA权限
const params = {
@@ -53,8 +53,8 @@ const PdaToWms = () => {
// 解析权限字符串,检查是否包含"E"(PDA权限)
const permissionStr = res.data.message || ''
if (permissionStr.includes('E')) {
- // 有PDA权限,允许进入PDA系统
- router.replace({ path: '/pda' })
+ // 有PDA权限,跳转到PDA系统选择页面
+ router.replace({ path: '/pda-center' })
} else {
// 无PDA权限提示
ElMessage.error('您没有访问PDA系统的权限')
@@ -67,6 +67,7 @@ const PdaToWms = () => {
ElMessage.error('权限检查失败')
})
}
+
// 登录到工作图纸系统
const loginToImage = () => {
router.replace({ path: '/imageDisplay' })
diff --git a/dev_wms_serve/src/main/java/com/wms_main/constant/enums/wms/WmsInvTypeEnums.java b/dev_wms_serve/src/main/java/com/wms_main/constant/enums/wms/WmsInvTypeEnums.java
index f11b7d5..ec0b781 100644
--- a/dev_wms_serve/src/main/java/com/wms_main/constant/enums/wms/WmsInvTypeEnums.java
+++ b/dev_wms_serve/src/main/java/com/wms_main/constant/enums/wms/WmsInvTypeEnums.java
@@ -10,7 +10,9 @@ import lombok.Getter;
@AllArgsConstructor
public enum WmsInvTypeEnums {
INV_TYPE_1(1, "明盘"),
- INV_TYPE_2(2, "盲盘");
+ INV_TYPE_2(2, "盲盘"),
+ MIX_STOCK(3, "合并库存"),
+ ;
private final Integer code;
private final String desc;
}
diff --git a/dev_wms_serve/src/main/java/com/wms_main/controller/wms/DataController.java b/dev_wms_serve/src/main/java/com/wms_main/controller/wms/DataController.java
index cddad26..fbb3e35 100644
--- a/dev_wms_serve/src/main/java/com/wms_main/controller/wms/DataController.java
+++ b/dev_wms_serve/src/main/java/com/wms_main/controller/wms/DataController.java
@@ -240,4 +240,70 @@ public class DataController {
return "获取拣选任务失败: " + e.getMessage();
}
}
+
+ /**
+ * 查询指定日期范围内的入库和出库统计数据
+ */
+ @PostMapping("/queryInOutBoundStatistics")
+ public Map queryInOutBoundStatistics(@RequestBody Map requestParams) {
+ try {
+ // 从请求体中提取参数
+ String startDate = requestParams.get("startDate");
+ String endDate = requestParams.get("endDate");
+
+ // 验证参数
+ if (startDate == null || startDate.isEmpty() || endDate == null || endDate.isEmpty()) {
+ Map response = new HashMap<>();
+ response.put("code", -1);
+ response.put("message", "开始日期和结束日期不能为空");
+ response.put("data", null);
+ return response;
+ }
+
+ // 调用服务层查询统计数据
+ Map result = dataControllerService.queryInOutBoundStatistics(startDate, endDate);
+
+ Map response = new HashMap<>();
+ response.put("code", 0);
+ response.put("message", "success");
+ response.put("data", result);
+ return response;
+ } catch (Exception e) {
+ Map response = new HashMap<>();
+ response.put("code", -1);
+ response.put("message", "查询失败: " + e.getMessage());
+ response.put("data", null);
+ return response;
+ }
+ }
+
+
+
+ /**
+ * 库存龄期分布统计接口
+ */
+ @GetMapping("/queryStockAgeDistribution")
+ public Map queryStockAgeDistribution() {
+ try {
+ // 调用服务层查询库存龄期分布统计数据
+ List