From 3fb6a51a60230f42be4db54cc4371a7106b322a4 Mon Sep 17 00:00:00 2001
From: 647556386 <647556386@qq.com>
Date: 星期五, 06 二月 2026 18:23:24 +0800
Subject: [PATCH] Merge branch 'htq20251215' of http://115.159.85.185:8098/r/ZhongRui/ALDbanyunxiangmu into htq20251215
---
项目代码/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue | 2
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderController.cs | 6
项目代码/WIDESEA_WMSClient/src/extension/inbound/extend/Pallet.vue | 31 +++
项目代码/WIDESEA_WMSClient/src/views/outbound/outPicking.vue | 66 +++++
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrderController.cs | 6
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderService.cs | 2
项目代码/WIDESEA_WMSClient/src/extension/stock/stockInfoDetailByMaterielSum.js | 13 +
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_IStockService/IStockDetailByMaterielService.cs | 2
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockDetailByMaterielController.cs | 9
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs | 12 +
项目代码/WIDESEA_WMSClient/src/extension/stock/extend/CalculateStock.vue | 250 +++++++++++++++++++++++++
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs | 2
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs | 34 +++
项目代码/WIDESEA_WMSClient/src/extension/inbound/extend/AllcatedPallet.vue | 33 +++
项目代码/WIDESEA_WMSClient/src/extension/check/extend/ReCheckGroupPallet.vue | 33 +++
项目代码/WIDESEA_WMSClient/src/extension/inbound/extend/StockTakeGroupPallet.vue | 32 +++
项目代码/WIDESEA_WMSClient/config/buttons.js | 8
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_StockService/StockDetailByMaterielService.cs | 26 ++
项目代码/WIDESEA_WMSClient/src/views/outbound/outboundOrder.vue | 3
19 files changed, 545 insertions(+), 25 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/config/buttons.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/config/buttons.js"
index 53cdeef..ca34800 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/config/buttons.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/config/buttons.js"
@@ -347,6 +347,14 @@
type: 'warning',
onClick: function () {
}
+},{
+ name: "璁$畻搴撳瓨鎬诲拰",
+ icon: '',
+ class: '',
+ value: 'CalculateStock',
+ type: 'warning',
+ onClick: function () {
+ }
}
]
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/check/extend/ReCheckGroupPallet.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/check/extend/ReCheckGroupPallet.vue"
index 3bfaaa6..57655b5 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/check/extend/ReCheckGroupPallet.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/check/extend/ReCheckGroupPallet.vue"
@@ -19,8 +19,8 @@
<div class="location-section compact">
<el-form :model="form" :rules="rules" ref="locationForm" class="compact-form">
<el-form-item label="浠撳簱鍖哄煙" prop="locationType" class="location-select compact-item">
- <el-select v-model="form.locationType" placeholder="璇峰厛閫夋嫨浠撳簱" clearable filterable
- @change="handleLocationChange" style="width: 100%" :loading="locationLoading" size="medium">
+ <el-select v-model="form.locationType" placeholder="鑷姩鑾峰彇浠撳簱鍖哄煙" clearable filterable
+ @change="handleLocationChange" style="width: 100%" :loading="locationLoading" size="medium" :disabled="true">
<el-option v-for="item in locationTypes" :key="item.locationType" :label="item.locationTypeDesc"
:value="item.locationType" />
</el-select>
@@ -282,6 +282,7 @@
}
},
+
visible(newVal, oldVal) {
this.palletVisible = newVal;
@@ -412,6 +413,33 @@
}
},
+ fetchLocationByWarehouse(warehouseCode) {
+ if (!warehouseCode) {
+ this.form.locationType = null;
+ return;
+ }
+ this.locationLoading = true;
+ http.post(`/api/InboundOrder/GetLocationType?code=${warehouseCode}`)
+ .then(({ data }) => {
+ if (data) {
+ this.form.locationType = data.locationType || data;
+ if (!this.locationTypes.find(item => item.locationType === this.form.locationType)) {
+ this.locationTypes.push({
+ locationType: this.form.locationType,
+ locationTypeDesc: this.form.locationType
+ });
+ }
+ }
+ })
+ .catch((err) => {
+ console.error("鑾峰彇浠撳簱鍖哄煙澶辫触:", err);
+ this.$message.error("鑾峰彇浠撳簱鍖哄煙澶辫触锛岃閲嶈瘯");
+ this.form.locationType = null;
+ })
+ .finally(() => {
+ this.locationLoading = false;
+ });
+ },
async fetchStockStatistics(orderNo) {
// 鍗曟嵁鍙蜂负绌烘椂涓嶆煡璇�
if (!orderNo) {
@@ -860,6 +888,7 @@
this.barcode = '';
this.materials = [];
this.error = '';
+ this.fetchLocationByWarehouse(this.form.warehouseType);
},
// 鍖哄煙鍒囨崲浜嬩欢
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/AllcatedPallet.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/AllcatedPallet.vue"
index 92ca4a5..f09a1e1 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/AllcatedPallet.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/AllcatedPallet.vue"
@@ -19,8 +19,8 @@
<div class="location-section compact">
<el-form :model="form" :rules="rules" ref="locationForm" class="compact-form">
<el-form-item label="浠撳簱鍖哄煙" prop="locationType" class="location-select compact-item">
- <el-select v-model="form.locationType" placeholder="璇峰厛閫夋嫨浠撳簱" clearable filterable
- @change="handleLocationChange" style="width: 100%" :loading="locationLoading" size="medium">
+ <el-select v-model="form.locationType" placeholder="鑷姩鑾峰彇浠撳簱鍖哄煙" clearable filterable
+ @change="handleLocationChange" style="width: 100%" :loading="locationLoading" size="medium" :disabled="true">
<el-option v-for="item in locationTypes" :key="item.locationType" :label="item.locationTypeDesc"
:value="item.locationType" />
</el-select>
@@ -446,6 +446,34 @@
})
.finally(() => {
this.warehouseLoading = false;
+ });
+ },
+
+ fetchLocationByWarehouse(warehouseCode) {
+ if (!warehouseCode) {
+ this.form.locationType = null;
+ return;
+ }
+ this.locationLoading = true;
+ http.post(`/api/InboundOrder/GetLocationType?code=${warehouseCode}`)
+ .then(({ data }) => {
+ if (data) {
+ this.form.locationType = data.locationType || data;
+ if (!this.locationTypes.find(item => item.locationType === this.form.locationType)) {
+ this.locationTypes.push({
+ locationType: this.form.locationType,
+ locationTypeDesc: this.form.locationType
+ });
+ }
+ }
+ })
+ .catch((err) => {
+ console.error("鑾峰彇浠撳簱鍖哄煙澶辫触:", err);
+ this.$message.error("鑾峰彇浠撳簱鍖哄煙澶辫触锛岃閲嶈瘯");
+ this.form.locationType = null;
+ })
+ .finally(() => {
+ this.locationLoading = false;
});
},
@@ -937,6 +965,7 @@
this.barcode = '';
this.materials = [];
this.error = '';
+ this.fetchLocationByWarehouse(this.form.warehouseType);
},
// 鍖哄煙鍒囨崲浜嬩欢
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/Pallet.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/Pallet.vue"
index 14da45b..1fe40a9 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/Pallet.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/Pallet.vue"
@@ -57,13 +57,14 @@
>
<el-select
v-model="form.locationType"
- placeholder="璇峰厛閫夋嫨浠撳簱"
+ placeholder="鑷姩鑾峰彇浠撳簱鍖哄煙"
clearable
filterable
@change="handleLocationChange"
style="width: 100%"
:loading="locationLoading"
size="medium"
+ :disabled="true"
>
<el-option
v-for="item in locationTypes"
@@ -752,6 +753,33 @@
});
},
+ fetchLocationByWarehouse(warehouseCode) {
+ if (!warehouseCode) {
+ this.form.locationType = null;
+ return;
+ }
+ this.locationLoading = true;
+ http.post(`/api/InboundOrder/GetLocationType?code=${warehouseCode}`)
+ .then(({ data }) => {
+ if (data) {
+ this.form.locationType = data.locationType || data;
+ if (!this.locationTypes.find(item => item.locationType === this.form.locationType)) {
+ this.locationTypes.push({
+ locationType: this.form.locationType,
+ locationTypeDesc: this.form.locationType
+ });
+ }
+ }
+ })
+ .catch((err) => {
+ console.error("鑾峰彇浠撳簱鍖哄煙澶辫触:", err);
+ this.$message.error("鑾峰彇浠撳簱鍖哄煙澶辫触锛岃閲嶈瘯");
+ this.form.locationType = null;
+ })
+ .finally(() => {
+ this.locationLoading = false;
+ });
+ },
// 鑾峰彇搴撳瓨缁熻
fetchStockStatistics(orderNo) {
if (!orderNo) {
@@ -1249,6 +1277,7 @@
this.barcode = "";
this.materials = [];
this.error = "";
+ this.fetchLocationByWarehouse(this.form.warehouseType);
},
// 鍖哄煙鍒囨崲浜嬩欢
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/StockTakeGroupPallet.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/StockTakeGroupPallet.vue"
index b6ec746..8391632 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/StockTakeGroupPallet.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/StockTakeGroupPallet.vue"
@@ -19,8 +19,8 @@
<div class="location-section compact">
<el-form :model="form" :rules="rules" ref="locationForm" class="compact-form">
<el-form-item label="浠撳簱鍖哄煙" prop="locationType" class="location-select compact-item">
- <el-select v-model="form.locationType" placeholder="璇峰厛閫夋嫨浠撳簱" clearable filterable
- @change="handleLocationChange" style="width: 100%" :loading="locationLoading" size="medium">
+ <el-select v-model="form.locationType" placeholder="鑷姩鑾峰彇浠撳簱鍖哄煙" clearable filterable
+ @change="handleLocationChange" style="width: 100%" :loading="locationLoading" size="medium" :disabled="true">
<el-option v-for="item in locationTypes" :key="item.locationType" :label="item.locationTypeDesc"
:value="item.locationType" />
</el-select>
@@ -412,6 +412,33 @@
}
},
+ fetchLocationByWarehouse(warehouseCode) {
+ if (!warehouseCode) {
+ this.form.locationType = null;
+ return;
+ }
+ this.locationLoading = true;
+ http.post(`/api/InboundOrder/GetLocationType?code=${warehouseCode}`)
+ .then(({ data }) => {
+ if (data) {
+ this.form.locationType = data.locationType || data;
+ if (!this.locationTypes.find(item => item.locationType === this.form.locationType)) {
+ this.locationTypes.push({
+ locationType: this.form.locationType,
+ locationTypeDesc: this.form.locationType
+ });
+ }
+ }
+ })
+ .catch((err) => {
+ console.error("鑾峰彇浠撳簱鍖哄煙澶辫触:", err);
+ this.$message.error("鑾峰彇浠撳簱鍖哄煙澶辫触锛岃閲嶈瘯");
+ this.form.locationType = null;
+ })
+ .finally(() => {
+ this.locationLoading = false;
+ });
+ },
async fetchStockStatistics(orderNo) {
// 鍗曟嵁鍙蜂负绌烘椂涓嶆煡璇�
if (!orderNo) {
@@ -860,6 +887,7 @@
this.barcode = '';
this.materials = [];
this.error = '';
+ this.fetchLocationByWarehouse(this.form.warehouseType);
},
// 鍖哄煙鍒囨崲浜嬩欢
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/stock/extend/CalculateStock.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/stock/extend/CalculateStock.vue"
new file mode 100644
index 0000000..cb6382b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/stock/extend/CalculateStock.vue"
@@ -0,0 +1,250 @@
+<template>
+ <vol-box v-model="show" title="鐗╂枡搴撳瓨鏌ヨ" :width="800" :height="600">
+ <template #content>
+ <el-form ref="form" :model="form" :rules="rules" label-width="90px">
+ <!-- 浠撳簱鍙疯緭鍏ユ -->
+ <el-form-item label="浠撳簱鍙�:" prop="warehouseCode">
+ <el-input
+ v-model="form.warehouseCode"
+ placeholder="璇疯緭鍏ヤ粨搴撳彿锛堝锛�5053锛�"
+ clearable
+ @input="handleWarehouseInput"
+ @keyup.enter="focusMaterielInput"
+ ref="warehouseCodeInput"
+ :disabled="loading"
+ />
+ </el-form-item>
+
+ <!-- 鐗╂枡鏉$爜杈撳叆妗� -->
+ <el-form-item label="鐗╂枡鏉$爜:" prop="materielBarcode">
+ <el-input
+ v-model="form.materielBarcode"
+ placeholder="璇锋壂鎻�/杈撳叆鐗╂枡鏉$爜锛堝锛�100401-01211锛�"
+ @keyup.enter="getStockTotal"
+ clearable
+ @paste="handlePaste"
+ @input="handleInput"
+ ref="materielCodeInput"
+ :disabled="loading"
+ />
+ <!-- 搴撳瓨鏌ヨ鍔犺浇鐘舵�� -->
+ <el-icon class="ml-2" v-if="loading"><loading /></el-icon>
+ </el-form-item>
+
+ <!-- 搴撳瓨鎬诲拰鏄剧ず鍖哄煙 -->
+ <el-form-item label="搴撳瓨鎬诲拰:" prop="totalStockQuantity">
+ <el-input
+ v-model="form.totalStockQuantity"
+ placeholder="璇疯緭鍏ヤ粨搴撳彿鍜岀墿鏂欐潯鐮佹煡璇�"
+ disabled
+ prefix-icon="el-icon-s-data"
+ />
+ <!-- 鏃犳暟鎹彁绀� -->
+ <span v-if="form.totalStockQuantity === 0 && !loading && form.materielBarcode && form.warehouseCode" class="text-gray-500 ml-2">
+ 璇ョ墿鏂欏湪褰撳墠浠撳簱鏆傛棤搴撳瓨
+ </span>
+ </el-form-item>
+ </el-form>
+ </template>
+
+ <template #footer>
+ <div class="dialog-footer">
+ <el-button @click="resetForm">閲嶇疆</el-button>
+ <el-button @click="show = false">鍏抽棴</el-button>
+ </div>
+ </template>
+ </vol-box>
+</template>
+
+<script>
+import VolBox from '@/components/basic/VolBox.vue'
+import { Loading } from '@element-plus/icons-vue'
+
+export default {
+ components: { VolBox, Loading },
+ props: {
+ value: { type: Boolean, default: false }
+ },
+ data() {
+ // 浠撳簱鍙烽獙璇佽鍒�
+ const validateWarehouseCode = (rule, value, callback) => {
+ if (!value) {
+ return callback(new Error('璇疯緭鍏ヤ粨搴撳彿'));
+ }
+ callback();
+ };
+
+ // 鐗╂枡鏉$爜楠岃瘉瑙勫垯
+ const validateMaterielBarcode = (rule, value, callback) => {
+ if (!value) {
+ return callback(new Error('璇疯緭鍏ョ墿鏂欐潯鐮�'));
+ }
+ callback();
+ };
+
+ return {
+ show: false,
+ loading: false, // 搴撳瓨鏌ヨ鍔犺浇鐘舵��
+ form: {
+ warehouseCode: '', // 浠撳簱鍙�
+ materielBarcode: '', // 鐗╂枡鏉$爜
+ totalStockQuantity: 0 // 搴撳瓨鎬诲拰
+ },
+ // 琛ㄥ崟楠岃瘉瑙勫垯
+ rules: {
+ warehouseCode: [
+ { validator: validateWarehouseCode, trigger: ['blur', 'change'] }
+ ],
+ materielBarcode: [
+ { validator: validateMaterielBarcode, trigger: ['blur', 'change'] }
+ ]
+ }
+ }
+ },
+ methods: {
+ // 鎵撳紑寮圭獥鍒濆鍖�
+ open() {
+ this.show = true
+ this.$nextTick(() => {
+ this.focusWarehouseInput()
+ })
+ },
+ async getStockTotal() {
+ // 琛ㄥ崟楠岃瘉
+ try {
+ await this.$refs.form.validate();
+ } catch (error) {
+ if (!this.form.warehouseCode) {
+ this.focusWarehouseInput();
+ } else {
+ this.focusAndSelectInput();
+ }
+ return;
+ }
+
+ this.loading = true;
+ try {
+ const res = await this.http.post('/api/StockDetailByMateriel/CalculateStock?warehouseCode=' + this.form.warehouseCode.trim() + '&materielCode=' + this.form.materielBarcode.trim());
+ if (res.status && res.code === 0) {
+ this.form.totalStockQuantity = Number(res.data) || 0;
+ this.$message.success('搴撳瓨鏌ヨ鎴愬姛');
+ } else {
+ this.form.totalStockQuantity = 0;
+ this.$message.error(res.message || '搴撳瓨鏌ヨ澶辫触锛氭帴鍙h繑鍥炲紓甯�');
+ }
+ } catch (error) {
+ this.form.totalStockQuantity = 0;
+ const errorMsg = error.response
+ ? `鎺ュ彛閿欒锛�${error.response.status} - ${error.response.data?.message || '鏈煡閿欒'}`
+ : `缃戠粶寮傚父锛�${error.message}`;
+ this.$message.error(`搴撳瓨鏌ヨ澶辫触锛�${errorMsg}`);
+ } finally {
+ this.loading = false;
+ }
+ },
+
+ // 浠撳簱鍙疯緭鍏ヨ繃婊�
+ handleWarehouseInput(value) {
+ this.form.warehouseCode = value.replace(/[^a-zA-Z0-9]/g, '').toUpperCase();
+ this.$nextTick(() => {
+ this.$refs.form.validateField('warehouseCode');
+ });
+ },
+
+ // 鐗╂枡鏉$爜杈撳叆杩囨护
+ handleInput(value) {
+ this.form.materielBarcode = value.replace(/[^-a-zA-Z0-9]/g, '');
+ this.$nextTick(() => {
+ this.$refs.form.validateField('materielBarcode');
+ });
+ },
+
+ // 绮樿创鐗╂枡鏉$爜鑷姩鏌ヨ
+ handlePaste(e) {
+ const clipboardData = e.clipboardData || window.clipboardData;
+ const pastedText = clipboardData.getData('text');
+ const cleanedText = pastedText.replace(/[^-a-zA-Z0-9]/g, '');
+ if (cleanedText) {
+ this.form.materielBarcode = cleanedText;
+ setTimeout(() => {
+ this.getStockTotal();
+ }, 50);
+ }
+ e.preventDefault();
+ },
+
+ // 浠撳簱鍙峰洖杞﹁仛鐒︾墿鏂欐潯鐮�
+ focusMaterielInput() {
+ this.$nextTick(() => {
+ const inputRef = this.$refs.materielCodeInput;
+ if (inputRef) {
+ const inputEl = inputRef.$el ? inputRef.$el.querySelector('input') : inputRef;
+ inputEl?.focus();
+ }
+ });
+ },
+
+ // 鑱氱劍浠撳簱鍙疯緭鍏ユ
+ focusWarehouseInput() {
+ this.$nextTick(() => {
+ const inputRef = this.$refs.warehouseCodeInput;
+ if (inputRef) {
+ const inputEl = inputRef.$el ? inputRef.$el.querySelector('input') : inputRef;
+ inputEl?.focus();
+ }
+ });
+ },
+
+ // 鑱氱劍骞堕�変腑鐗╂枡鏉$爜杈撳叆妗�
+ focusAndSelectInput() {
+ this.$nextTick(() => {
+ setTimeout(() => {
+ const inputRef = this.$refs.materielCodeInput;
+ if (inputRef) {
+ const inputEl = inputRef.$el ? inputRef.$el.querySelector('input') : inputRef;
+ if (inputEl) {
+ inputEl.focus();
+ inputEl.select();
+ }
+ }
+ }, 100);
+ });
+ },
+
+ // 閲嶇疆琛ㄥ崟
+ resetForm() {
+ this.form = {
+ warehouseCode: '',
+ materielBarcode: '',
+ totalStockQuantity: 0
+ };
+ this.$refs.form.clearValidate();
+ this.focusWarehouseInput();
+ }
+ },
+ watch: {
+ show(val) {
+ if (val) {
+ this.$nextTick(() => {
+ this.focusWarehouseInput()
+ })
+ } else {
+ this.resetForm();
+ }
+ }
+ }
+}
+</script>
+
+<style scoped>
+.dialog-footer {
+ text-align: right;
+}
+.text-gray-500 {
+ color: #909399;
+ font-size: 12px;
+}
+.ml-2 {
+ margin-left: 8px;
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/stock/stockInfoDetailByMaterielSum.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/stock/stockInfoDetailByMaterielSum.js"
index 2d89d3f..b5d5ead 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/stock/stockInfoDetailByMaterielSum.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/stock/stockInfoDetailByMaterielSum.js"
@@ -1,10 +1,10 @@
//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
-
+import gridHeader from "./extend/CalculateStock.vue";
let extension = {
components: {
//鏌ヨ鐣岄潰鎵╁睍缁勪欢
- gridHeader: '',
+ gridHeader: gridHeader,
gridBody: '',
gridFooter: '',
//鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
@@ -17,7 +17,14 @@
methods: {
//涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
onInit() {
- console.log(this)
+ var EmptyTrayInboundBtn = this.buttons.find(
+ (x) => x.value == "CalculateStock"
+ );
+ if (EmptyTrayInboundBtn != null) {
+ EmptyTrayInboundBtn.onClick = () => {
+ this.$refs.gridHeader.open();
+ };
+ }
},
onInited() {
//妗嗘灦鍒濆鍖栭厤缃悗
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue"
index fa3313e..27ae659 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue"
@@ -70,7 +70,7 @@
title: "涓氬姟绫诲瀷",
field: "businessType",
type: "select",
- dataKey: "documentTypeEmun",
+ dataKey: "inboundbusinessType",
data: [],
},
{
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/outbound/outPicking.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/outbound/outPicking.vue"
index 8150bc5..5a5d03a 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/outbound/outPicking.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/outbound/outPicking.vue"
@@ -9,6 +9,8 @@
<i class="el-icon-document"></i>
<span class="order-label">璁㈠崟鍙凤細</span>
<span class="order-value">{{ orderNo }}</span>
+ <span class="order-label" style="margin-left: 20px;">浜х嚎鍚嶇О锛�</span>
+ <span class="order-value">{{ orderInfo?.departmentName || '' }}</span>
</div>
<div class="order-status">
<el-tag v-if="orderInfo" :type="getStatusType(orderInfo.orderStatus)" size="medium"
@@ -409,6 +411,42 @@
}
}
},
+
+ // ============== 鏂板锛氭牴鎹墭鐩樺彿鑾峰彇璁㈠崟鍙凤紙鏍稿績鍔熻兘锛� ==============
+ async getOrderNoByPallet(palletCode) {
+ if (!palletCode) {
+ this.$message.warning('鎵樼洏鍙蜂笉鑳戒负绌�');
+ return null;
+ }
+
+ try {
+ this.showFullScreenLoading();
+ // 璋冪敤鑾峰彇璁㈠崟鍙风殑鎺ュ彛
+ const response = await this.http.get(`/api/OutboundOrder/GetOrderNoByPalletCode?palletCode=${palletCode}`);
+
+ if (response.status && response.data) {
+ const validOrderNo = response.data;
+ this.playSuccessAudio();
+ this.$message.success(`鎴愬姛鑾峰彇璁㈠崟鍙凤細${validOrderNo}`);
+ return validOrderNo;
+ } else {
+ this.playErrorAudio();
+ const errorMsg = response.message || '璇ユ墭鐩樺彿鏈叧鑱斾换浣曡鍗�';
+ this.$message.error(errorMsg);
+ return null;
+ }
+ } catch (error) {
+ this.playErrorAudio();
+ const errorMsg = `鑾峰彇璁㈠崟鍙峰紓甯革細${error.message || '缃戠粶閿欒'}`;
+ this.$message.error(errorMsg);
+ console.error("銆愭墭鐩樺彿鏌ヨ鍗曞彿鎺ュ彛寮傚父銆�", error);
+ return null;
+ } finally {
+ this.hideFullScreenLoading();
+ }
+ },
+ // ============== 鏂板缁撴潫 ==============
+
// 鎾斁鎴愬姛闊抽
playSuccessAudio() {
try {
@@ -435,11 +473,13 @@
initPage() {
// 浠庤矾鐢卞弬鏁拌幏鍙栬鍗曞彿
this.orderNo = this.$route.query.orderNo || ''
- if (!this.orderNo) {
- this.$message.error('璁㈠崟鍙蜂笉鑳戒负绌�')
- this.$router.back()
- return
- }
+ // ============== 寰皟锛氭敞閲婂己鍒惰繑鍥為�昏緫锛屽吋瀹规墭鐩樺彿鏌ヨ鍗曞彿 ==============
+ // if (!this.orderNo) {
+ // this.$message.error('璁㈠崟鍙蜂笉鑳戒负绌�')
+ // this.$router.back()
+ // return
+ // }
+ // ============== 寰皟缁撴潫 ==============
// 鍔犺浇璁㈠崟淇℃伅
this.loadOrderInfo()
@@ -619,10 +659,20 @@
},
handlePalletScan(flag = true) {
- if (this.scanForm.palletCode) {
- this.loadPalletData(flag)
- } else {
+ const palletCode = this.scanForm.palletCode.trim();
+ if (!palletCode) {
+ return;
}
+ // 鍏堟牴鎹墭鐩樺彿鑾峰彇璁㈠崟鍙�
+ this.getOrderNoByPallet(palletCode).then((orderNo) => {
+ if (orderNo) {
+ // 璧嬪�艰鍗曞彿锛屼緵鍚庣画閫昏緫浣跨敤
+ this.orderNo = orderNo;
+ // 鍒锋柊璁㈠崟淇℃伅
+ this.loadOrderInfo();
+ }
+ this.loadPalletData(flag);
+ });
},
handleMaterialScan() {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/outbound/outboundOrder.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/outbound/outboundOrder.vue"
index 46ad6fa..97f5a24 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/outbound/outboundOrder.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/outbound/outboundOrder.vue"
@@ -104,7 +104,7 @@
title: "涓氬姟绫诲瀷",
field: "businessType",
type: "select",
- dataKey: "documentTypeEmun",
+ dataKey: "outboundbusinessType",
data: [],
},
{
@@ -124,6 +124,7 @@
data: [],
},
{ title: "鐗╂枡缂栧彿", field: "materielCode", type: "like" },
+ { title: "鎷夌嚎鍚嶇О", field: "departmentName", type: "like" },
{ title: "鍒涘缓鏃堕棿", field: "createDate", type: "datetime" },
],
]);
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs"
index 70bacb2..73c0715 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs"
@@ -29,5 +29,7 @@
WebResponseContent UnPalletGroupBarcode(string orderNo);
WebResponseContent HandCloseOrder(List<string> orderIds);
+
+ WebResponseContent GetLocationType(string code);
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderService.cs"
index 9ec6408..b110ac1 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderService.cs"
@@ -19,5 +19,7 @@
Task<WebResponseContent> ReceiveOutboundOrder(Dt_OutboundOrder model, int operateType);
Task<WebResponseContent> GetById(int id);
+
+ WebResponseContent GetOrderNoByPalletCode(string palletCode);
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IStockService/IStockDetailByMaterielService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IStockService/IStockDetailByMaterielService.cs"
index d7838cc..40e9574 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IStockService/IStockDetailByMaterielService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IStockService/IStockDetailByMaterielService.cs"
@@ -14,5 +14,7 @@
public interface IStockDetailByMaterielService : IDependency
{
PageGridData<StockDetailByMateriel> GetPageGridData(PageDataOptions options);
+
+ WebResponseContent CalculateStock(string warehouseCode, string materielCode);
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
index 0715523..3355b93 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
@@ -987,6 +987,18 @@
return content.OK(data: details);
}
+ public WebResponseContent GetLocationType(string code)
+ {
+ var warehouseAreaName = _warehouseAreaRepository.QueryFirst(x => x.Code == code);
+ if(string.IsNullOrWhiteSpace(warehouseAreaName.ToString()))
+ {
+ return WebResponseContent.Instance.Error("鏈壘鍒颁粨搴撳悕绉�");
+ }
+ var locationTypeDesc = _locationTypeRepository.Db.Queryable<Dt_LocationType>().Where(x => string.Equals(x.LocationTypeDesc, warehouseAreaName.Name, StringComparison.OrdinalIgnoreCase)).First();
+
+ return WebResponseContent.Instance.OK(data:locationTypeDesc.LocationType);
+ }
+
public WebResponseContent HandCloseOrder(List<string> orderNos)
{
try
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs"
index 965212f..e7cfc2d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs"
@@ -29,7 +29,8 @@
private readonly ILogger<OutboundOrderService> _logger;
private readonly IRepository<Dt_OutboundOrderDetail> _outboundOrderDetailRepository;
private readonly IMaterialUnitService _materialUnitService;
- public OutboundOrderService(IRepository<Dt_OutboundOrder> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_OutboundOrderDetail> outboundOrderDetailRepository, ILogger<OutboundOrderService> logger, IMaterialUnitService materialUnitService, IMaterielInfoService materielInfoService) : base(BaseDal)
+ private readonly IRepository<Dt_OutStockLockInfo> _outStockLockInfoRepository;
+ public OutboundOrderService(IRepository<Dt_OutboundOrder> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_OutboundOrderDetail> outboundOrderDetailRepository, ILogger<OutboundOrderService> logger, IMaterialUnitService materialUnitService, IMaterielInfoService materielInfoService, IRepository<Dt_OutStockLockInfo> outStockLockInfoRepository) : base(BaseDal)
{
_mapper = mapper;
_unitOfWorkManage = unitOfWorkManage;
@@ -37,6 +38,7 @@
_logger = logger;
_materialUnitService = materialUnitService;
_materielInfoService = materielInfoService;
+ _outStockLockInfoRepository = outStockLockInfoRepository;
}
private int[] OrderTypes = new int[] { (int)InOrderTypeEnum.AllocatOutbound, (int)InOrderTypeEnum.InternalAllocat, (int)InOrderTypeEnum.ReCheck };
@@ -301,6 +303,19 @@
}
+ /// <summary>
+ /// 鏍规嵁鎵樼洏鍙疯幏鍙栧崟鎹紪鍙�
+ /// </summary>
+ public WebResponseContent GetOrderNoByPalletCode(string palletCode)
+ {
+ var orderNo = _outStockLockInfoRepository.QueryData(x => x.PalletCode == palletCode).Select(x=>x.OrderNo).FirstOrDefault();
+ if(string.IsNullOrWhiteSpace(orderNo))
+ {
+ return WebResponseContent.Instance.Error($"璇ユ墭鐩榹palletCode}宸叉嫞閫夊畬");
+ }
+ return WebResponseContent.Instance.OK(data: orderNo);
+ }
+
static object lock_code = new object();
public string CreateCodeByRule(string ruleCode)
{
@@ -425,6 +440,23 @@
sugarQueryable1 = sugarQueryable1.Where(x => x.ReturnToMESStatus.Equals(returnToMESStatus));
}
+ var businessTypeParam = searchParametersList.FirstOrDefault(x =>
+ x.Name.Equals(nameof(Dt_OutboundOrder.BusinessType).FirstLetterToLower(), StringComparison.OrdinalIgnoreCase));
+ if (businessTypeParam != null && !string.IsNullOrEmpty(businessTypeParam.Value?.ToString()))
+ {
+ string businessType = businessTypeParam.Value.ToString().Trim();
+ sugarQueryable1 = sugarQueryable1.Where(x => x.BusinessType.Equals(businessType));
+ }
+
+ var departmentNameParam = searchParametersList.FirstOrDefault(x =>
+ x.Name.Equals("departmentName", StringComparison.OrdinalIgnoreCase));
+ if (departmentNameParam != null && !string.IsNullOrEmpty(departmentNameParam.Value?.ToString()))
+ {
+ string departmentName = departmentNameParam.Value.ToString().Trim();
+ sugarQueryable1 = sugarQueryable1.Where(x =>
+ x.DepartmentName.Contains(departmentName));
+ }
+
var createDateParams = searchParametersList
.Where(x => x.Name.Equals("createDate", StringComparison.OrdinalIgnoreCase)
&& !string.IsNullOrEmpty(x.Value?.ToString()))
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_StockService/StockDetailByMaterielService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_StockService/StockDetailByMaterielService.cs"
index 7ca9282..385eed4 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_StockService/StockDetailByMaterielService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_StockService/StockDetailByMaterielService.cs"
@@ -18,11 +18,13 @@
{
private readonly IUnitOfWorkManage _unitOfWorkManage;
private readonly SqlSugarClient _dbBase;
+ private readonly IRepository<Dt_StockInfoDetail> _stockInfoDetailRepository;
- public StockDetailByMaterielService(IUnitOfWorkManage unitOfWorkManage)
+ public StockDetailByMaterielService(IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_StockInfoDetail> stockInfoDetailRepository)
{
_unitOfWorkManage = unitOfWorkManage;
_dbBase = unitOfWorkManage.GetDbClient();
+ _stockInfoDetailRepository = stockInfoDetailRepository;
}
@@ -146,7 +148,12 @@
}
}
-
+ decimal totalStockQuantity = 0;
+ if (groupedData.Count > 0)
+ {
+ totalStockQuantity = groupedData.Values.Sum(x => x.StockQuantity);
+ }
+
materielnfoStatistics = groupedData.Values.ToList();
int startIndex = (options.Page - 1) * options.Rows;
int endIndex = Math.Min(startIndex + options.Rows, materielnfoStatistics.Count);
@@ -160,12 +167,25 @@
}
int count = groupedData.Count;
- return new PageGridData<StockDetailByMateriel>(count, materielnfoStatistics);
+ return new PageGridData<StockDetailByMateriel>(count, materielnfoStatistics)
+ {
+ TotalStockQuantity = totalStockQuantity
+ };
}
catch (Exception ex)
{
return new PageGridData<StockDetailByMateriel>();
}
}
+
+ public WebResponseContent CalculateStock(string warehouseCode,string materielCode)
+ {
+ var calculateStock =_stockInfoDetailRepository.QueryData(x => x.WarehouseCode == warehouseCode && x.MaterielCode == materielCode).Sum(x => x.StockQuantity);
+ if(calculateStock == 0)
+ {
+ return WebResponseContent.Instance.Error("鏈壘鍒板簱瀛�");
+ }
+ return WebResponseContent.Instance.OK(data: calculateStock);
+ }
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderController.cs"
index ce7e8b9..0ca67c8 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderController.cs"
@@ -269,5 +269,11 @@
{
return Service.HandCloseOrder(orderIds);
}
+
+ [HttpPost, Route("GetLocationType"), AllowAnonymous, MethodParamsValidate]
+ public WebResponseContent GetLocationType(string code)
+ {
+ return Service.GetLocationType(code);
+ }
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrderController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrderController.cs"
index 088b88d..8dd9ee3 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrderController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrderController.cs"
@@ -85,5 +85,11 @@
}
return WebResponseContent.Instance.OK(null, order);
}
+
+ [HttpGet, Route("GetOrderNoByPalletCode"), AllowAnonymous, MethodParamsValidate]
+ public WebResponseContent GetOrderNoByPalletCode(string palletCode)
+ {
+ return Service.GetOrderNoByPalletCode(palletCode);
+ }
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockDetailByMaterielController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockDetailByMaterielController.cs"
index 27e5858..fd3c85f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockDetailByMaterielController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockDetailByMaterielController.cs"
@@ -1,4 +1,5 @@
-锘縰sing Microsoft.AspNetCore.Authorization;
+锘縰sing Autofac.Core;
+using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using WIDESEA_Core;
using WIDESEA_DTO.Stock;
@@ -22,5 +23,11 @@
{
return _stockDetailByMaterielService.GetPageGridData(options);
}
+
+ [HttpPost, Route("CalculateStock"), AllowAnonymous]
+ public WebResponseContent CalculateStock(string warehouseCode,string materielCode)
+ {
+ return _stockDetailByMaterielService.CalculateStock(warehouseCode,materielCode);
+ }
}
}
--
Gitblit v1.9.3