From 927ce822017ff8459be84b742d519970ca614096 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期五, 24 十月 2025 17:18:56 +0800
Subject: [PATCH] 1

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/OtherOutboundOrderController.cs            |   53 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs                             |  205 +
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_ProductionOutboundOrder.cs                       |   65 
 项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Inventory/InventoryStockSelect.vue             |   26 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_InventoryOutboundOrder.cs                        |   65 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_InventoryOutboundOrderRepository.cs               |    8 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_ProductionOutboundOrderDetailRepository.cs        |    8 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_ProductionOutboundOrderDetailService.cs             |   11 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Order/OutboundOrderGetDTO.cs                                       |    2 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_InventoryOutboundOrderRepository.cs                 |   12 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db            |    0 
 项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/OtherOutboundOrder.js                          |    2 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs                            |    6 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_InventoryOutboundOrderService.cs                    |   22 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Task/TaskController.cs                           |    4 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/ERP/WMS_用友生产领料单一览表_ST.cs                                  |   29 
 项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/AllocateOutboundOrder.js                       |    2 
 项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Allocate/AllocateStockSelect.vue               |   31 
 项目代码/PDA/pages.json                                                                                       |   47 
 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/SemanticSymbols.db       |    0 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs                         |  155 
 项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Production/ProductionStockSelect.vue           |   26 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_OtherOutboundOrderService.cs                          |  369 +++
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_AllocateOutboundOrderService.cs                       |  339 ++
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_ProductionOutboundOrderDetailService.cs               |   62 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs                                     |    1 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_InventoryOutboundOrderDetailService.cs                |   62 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_AllocateOutboundOrderDetailRepository.cs            |   12 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OtherOutboundOrderDetail.cs                      |   12 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-shm   |    0 
 项目代码/WMS/WIDESEA_WMSClient/src/router/tables.js                                                           |   24 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_ProductionOutboundOrderService.cs                     |  336 ++
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_OtherOutboundOrderDetailRepository.cs               |   12 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_AllocateOutboundOrderDetailService.cs               |   11 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/InventoryOutboundOrderDetailController.cs  |   24 
 项目代码/PDA/pages/Production/ProductionOutboundOrder.vue                                                     |   24 
 项目代码/PDA/common/config.js                                                                                 |   14 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_OtherOutboundOrderDetailService.cs                    |   62 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/AllocateOutboundOrderController.cs         |   52 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-wal   |    0 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_ProductionOutboundOrderDetail.cs                 |   12 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_ProductionOutboundOrderRepository.cs              |    8 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_ProductionOutboundOrderService.cs                   |   22 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/ProductionOutboundOrderController.cs       |   51 
 项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Production/ProductionoutOrderDetail.vue        |  387 +++
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OtherOutboundOrder.cs                            |  102 
 项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/Order/AllocateOutboundOrder.vue                          |  201 +
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/GetStockSelectViewDto.cs                                     |   15 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_ProductionOutboundOrderRepository.cs                |   12 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs                              |  228 +
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json                           |  215 +
 项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/ProductionOutboundOrder.js                     |    2 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_InventoryOutboundOrderDetail.cs                  |   12 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_OtherOutboundOrderRepository.cs                     |   12 
 项目代码/PDA/pages/Allocate/AllocateOutboundOrder.vue                                                         |   24 
 项目代码/PDA/pages/Allocate/AllocateOutorderboxing.vue                                                        |  178 +
 项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/Order/InventoryOutboundOrder.vue                         |  201 +
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_AllocateOutboundOrderDetailRepository.cs          |    8 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/OtherOutboundOrderDetailController.cs      |    6 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_OtherOutboundOrderDetailService.cs                  |    2 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_AllocateOutboundOrderRepository.cs                |    8 
 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json                           |    2 
 项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/Order/OtherOutboundOrder.vue                             |  201 +
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/InventoryOutboundOrderController.cs        |   52 
 项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Allocate/AllocateoutOrderDetail.vue            |  387 +++
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_InventoryOutboundOrderService.cs                      |  368 +++
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db-shm        |    0 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json                                  |  215 +
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_InventoryOutboundOrderDetailRepository.cs           |   12 
 项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Other/OtherStockSelect.vue                     |   31 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_InventoryOutboundOrderDetailRepository.cs         |    8 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_OtherOutboundOrderDetailRepository.cs             |    8 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_AllocateOutboundOrderDetailService.cs                 |   62 
 项目代码/PDA/pages/Inventory/InventoryOutorderboxing.vue                                                      |  178 +
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_InventoryOutboundOrderDetailService.cs              |   11 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_AllocateOutboundOrderDetail.cs                   |   12 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_ProductionOutboundOrderDetailRepository.cs          |   12 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/ProductionOutboundOrderDetailController.cs |   24 
 项目代码/PDA/pages/Inventory/InventoryOutboundOrder.vue                                                       |   24 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_AllocateOutboundOrder.cs                         |   65 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/AllocateOutboundOrderDetailController.cs   |   24 
 项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Other/OtheroutOrderDetail.vue                  |  387 +++
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_AllocateOutboundOrderService.cs                     |   22 
 项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/InventoryOutboundOrder.js                      |    2 
 项目代码/PDA/pages/OtherOrder/OtherOutboundOrder.vue                                                          |   24 
 项目代码/PDA/pages/Production/ProductionOutorderboxing.vue                                                    |  177 +
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/StockInfoController.cs                     |    4 
 项目代码/PDA/pages/OtherOrder/OtherOutorderboxing.vue                                                         |  178 +
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/ERP/WMS_用友电控柜调拨一览表_ST.cs                                  |   30 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs                                  |    5 
 项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/Order/ProductionOutboundOrder.vue                        |  201 +
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_OtherOutboundOrderRepository.cs                   |    8 
 /dev/null                                                                                                 |   41 
 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/CodeChunks.db            |    0 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db-wal        |    0 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db       |    0 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Stock/IStockInfoService.cs                        |    4 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/ERP/WMS_原材料调拨出库单_ST.cs                                    |   27 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_AllocateOutboundOrderRepository.cs                  |   12 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/ERP/WMS_用友库存一览表_ST.cs                                     |    4 
 项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Inventory/InventoryoutOrderDetail.vue          |  387 +++
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_OtherOutboundOrderService.cs                        |   22 
 102 files changed, 6,646 insertions(+), 486 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/common/config.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/common/config.js"
index 624735c..34895be 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/common/config.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/common/config.js"
@@ -125,5 +125,19 @@
 			value: "6",
 			text: "浜屾ゼAGVB5-G5缂撳瓨鍖�"
 		}
+	],
+	OutArea: [
+		{
+			value: "2",
+			text: "涓�妤糀GV鍑哄簱缂撳瓨鍖�"
+		},
+		{
+			value: "3",
+			text: "涓�妤糀GV绔嬪簱缂撳瓨鍖�"
+		},
+		{
+			value: "4",
+			text: "涓�妤糀GV鍏ュ簱缂撳瓨鍖�"
+		},
 	]
 }
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages.json"
index 4dfcca5..8efc258 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages.json"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages.json"
@@ -56,16 +56,55 @@
 			}
 		},
 		{
-			"path": "pages/Order/OutboundOrder",
+			"path": "pages/OtherOrder/OtherOutboundOrder",
 			"style": {
-				"navigationBarTitleText": "鍑哄簱鍗曟嵁",
+				"navigationBarTitleText": "鍏朵粬鍑哄簱鍗曟嵁",
 				"enablePullDownRefresh": false
 			}
 		},
 		{
-			"path": "pages/Order/Outorderboxing",
+			"path": "pages/OtherOrder/OtherOutorderboxing",
 			"style": {
-				"navigationBarTitleText": "鍏ュ簱鏄庣粏",
+				"navigationBarTitleText": "鍏朵粬鍑哄簱鍗曟嵁鏄庣粏",
+				"enablePullDownRefresh": false
+			}
+		},{
+			"path": "pages/Production/ProductionOutboundOrder",
+			"style": {
+				"navigationBarTitleText": "鐢熶骇棰嗘枡鍗�",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/Production/ProductionOutorderboxing",
+			"style": {
+				"navigationBarTitleText": "鐢熶骇棰嗘枡鍗曟槑缁�",
+				"enablePullDownRefresh": false
+			}
+		},{
+			"path": "pages/Inventory/InventoryOutboundOrder",
+			"style": {
+				"navigationBarTitleText": "鐩樼偣鍑哄簱鍗曟嵁",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/Inventory/InventoryOutorderboxing",
+			"style": {
+				"navigationBarTitleText": "鐩樼偣鍑哄簱鍗曟嵁鏄庣粏",
+				"enablePullDownRefresh": false
+			}
+		},{
+			"path": "pages/Allocate/AllocateOutboundOrder",
+			"style": {
+				"navigationBarTitleText": "璋冩嫧鍑哄簱鍗曟嵁",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/Allocate/AllocateOutorderboxing",
+			"style": {
+				"navigationBarTitleText": "璋冩嫧鍑哄簱鍗曟嵁鏄庣粏",
 				"enablePullDownRefresh": false
 			}
 		},
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Order/OutboundOrder.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Allocate/AllocateOutboundOrder.vue"
similarity index 84%
copy from "\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Order/OutboundOrder.vue"
copy to "\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Allocate/AllocateOutboundOrder.vue"
index ef5e6b9..8ad3340 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Order/OutboundOrder.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Allocate/AllocateOutboundOrder.vue"
@@ -6,7 +6,7 @@
 			</view>
 		</u-sticky>
 		<uni-list :border="true">
-			<uni-list-item direction="column" clickable @click="groupClick(item.id)" link :to="page+item.orderNo"
+			<uni-list-item direction="column" clickable @click="groupClick(item.id,item.upperOrderNo)" link :to="page+item.orderNo"
 				v-for="item in allReceivingOrders" :key="item.orderNo">
 				<template v-slot:body>
 					<!-- <uni-group margin-top="20">
@@ -26,16 +26,8 @@
 							<view class="value">{{item.upperOrderNo}}</view>
 						</view>
 						<view class="flex-row">
-							<view class="label">鐗╂枡缂栫爜:</view>
-							<view class="value">{{item.materielCode}}</view>
-						</view>
-						<view class="flex-row">
-							<view class="label">鍗曟嵁鏁伴噺:</view>
-							<view class="value">{{item.orderQuantity}}</view>
-						</view>
-						<view class="flex-row">
-							<view class="label">宸插嚭搴撴暟閲�:</view>
-							<view class="value">{{item.overOutQuantity}}</view>
+							<view class="label">鍒涘缓鏃堕棿:</view>
+							<view class="value">{{item.createDate}}</view>
 						</view>
 					</uni-group>
 				</template>
@@ -52,8 +44,9 @@
 	export default {
 		data() {
 			return {
-				page: "/pages/Order/Outorderboxing?orderNo=",
+				page: "/pages/Allocate/AllocateOutorderboxing?orderNo=",
 				loadVisible: false,
+				istrue:false,
 				searchValue: "",
 				status: "more",
 				allReceivingOrders: [],
@@ -75,16 +68,15 @@
 			search(res) {
 				this.getData();
 			},
-			groupClick(Id) {
-				window.location="/pages/Order/Outorderboxing?Id="+Id;
-				// console.log(Id);
+			groupClick(Id,orderNo) {
+				window.location="/pages/Allocate/AllocateOutorderboxing?Id="+Id+"&orderNo="+orderNo;
 			},
 			getData() {
 				var postData = {
 					orderNo: this.searchValue,
 					pageNo: this.pageNo
 				}
-				this.$u.post('/api/OutboundOrder/GetOutboundOrder', postData).then((res) => {
+				this.$u.post('/api/AllocateOutboundOrder/GetAllocateOutboundOrder', postData).then((res) => {
 					if (res.status) {
 						if (this.searchValue == '') {
 							this.allReceivingOrders = this.allReceivingOrders.concat(res.data);
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Allocate/AllocateOutorderboxing.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Allocate/AllocateOutorderboxing.vue"
new file mode 100644
index 0000000..2daffbe
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Allocate/AllocateOutorderboxing.vue"
@@ -0,0 +1,178 @@
+<template>
+	<view>
+		<!-- <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem">
+		</uni-segmented-control> -->
+		<view class="content">
+			<!-- <view v-if="current === 0" class="headerstyle"> -->
+				<view class="itemstyle">
+					<u-sticky>
+						<view style="background-color: #ffffff;">
+							<uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar>
+						</view>
+					</u-sticky>
+					<uni-forms label-width="50">
+						<uni-forms-item label="鍑哄簱鍖哄煙"><uni-data-select v-model="value"
+								:localdata="range"></uni-data-select></uni-forms-item>
+					</uni-forms>
+					<uni-list :border="true">
+						<uni-list-item direction="column" v-for="(item,index) in orderInfo" :key="item.dtlId">
+							<template v-slot:body>
+								<view class="uni-list-box">
+									<button type="primary" style="position: absolute;right: 1%;" size="mini"
+										@click="OutBound(item.id)">鍑哄簱</button>
+									<view class="uni-content">
+										<view style="font-size: 18px;">鍗曟嵁缂栧彿锛歿{orderNo}}</view>
+										<view style="font-size: 18px;">鐗╂枡缂栫爜锛歿{item.materielCode}}</view>
+										<view style="font-size: 18px;">鐗╂枡鍚嶇О锛歿{item.materielName}}</view>
+										<view style="font-size: 18px;">鍗曟嵁鏁伴噺锛歿{item.orderQuantity}}</view>
+										<!-- <view style="font-size: 18px;">宸插垎閰嶆暟閲忥細{{item.processQty}}</view> -->
+										<view style="font-size: 18px;">鍑哄簱鏁伴噺锛歿{item.overOutQuantity}}</view>
+									</view>
+								</view>
+							</template>
+						</uni-list-item>
+					</uni-list>
+				</view>
+				<u-toast ref="uToast" />
+			<!-- </view> -->
+		</view>
+	</view>
+	</view>
+</template>
+
+<script>
+	import {
+		config
+	} from '../../common/config';
+	const innerAudioContext = uni.createInnerAudioContext();
+	export default {
+		data() {
+			return {
+				items: ['鐩存帴鍑哄簱'],
+				current: 0,
+				orderNo: "",
+				Id: 0,
+				AreaId: "",
+				orderIds: [],
+				orderInfo: [],
+				searchValue: "",
+				value:"2",
+				label: "",
+				range: [],
+				orderDetail: {},
+				focus: false,
+				key: [],
+				materielCode: "",
+			}
+		},
+		onShow() {},
+		onLoad(res) {
+			this.focus = false;
+			this.addressFocus = false;
+			this.Id = res.Id;
+			this.orderNo = res.orderNo;
+			this.range = config.OutArea;
+			this.getData();
+		},
+		methods: {
+			groupClick(materielCode, id) {
+				// window.location="/pages/materielGroup/OutOrderDetail?materielCode="+materielCode+"&id="+id;
+				// console.log(materielCode,id)
+			},
+			search() {
+				this.getData();
+			},
+			getData() {
+				var id = this.Id
+				var postData = {
+					id: id,
+					searchValue: this.searchValue,
+				};
+				this.$u.post('/api/AllocateOutboundOrder/GetAllocateOutboundOrderDetail', postData).then((res) => {
+					if (res.status) {
+						this.orderInfo = res.data;
+						// if (this.orderDetail.length > 3) {
+						// 	this.loadVisible = true;
+						// }
+					}
+				})
+			},
+			onClickItem(e) {
+				this.focus = false;
+				this.addressFocus = false;
+				if (this.current !== e.currentIndex) {
+					this.current = e.currentIndex;
+					if (this.current == 2) {
+						this.getData();
+					}
+				}
+			},
+			OutBound(id) {
+				this.orderIds=[];
+				this.orderIds.push(id);
+				var postData = {
+					AreaId: this.value,
+					orderIds: this.orderIds
+				};
+				console.log(postData);
+				this.$u.post('/api/AllocateOutboundOrder/GenerateAllocateOutboundTask', postData).then(res => {
+					if (res.status) {
+						this.items = [];
+						uni.$showMsg(res.message);
+						setTimeout(() => {
+							this.addressFocus = false;
+						}, 200);
+					} else {
+						this.$refs.uToast.show({
+							title: res.message,
+							type: "error"
+						})
+					}
+				}).catch(err => {
+					this.$refs.uToast.show({
+						title: err.message,
+						type: "error"
+					})
+				})
+			},
+			click(e) {
+				if (this.key.find(x => x.id == e.id)) {
+					this.key.map((item, index) => {
+						if (item.id == e.id) {
+							this.key.splice(index, 1);
+						}
+					})
+				} else {
+					this.key.push(e.id);
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import '@/common/uni-ui.scss';
+
+	.flex-row {
+		display: flex;
+		justify-content: space-between;
+		/* 宸﹀彸瀵归綈 */
+		align-items: center;
+		/* 鍨傜洿灞呬腑 */
+		padding: 10rpx 0;
+	}
+
+	.label {
+		color: #666;
+		width: 200rpx;
+		/* 鍥哄畾鏍囩瀹藉害 */
+		text-align: left;
+	}
+
+	.value {
+		flex: 1;
+		text-align: right;
+		color: #333;
+		font-weight: bold;
+	}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Order/OutboundOrder.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Inventory/InventoryOutboundOrder.vue"
similarity index 84%
copy from "\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Order/OutboundOrder.vue"
copy to "\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Inventory/InventoryOutboundOrder.vue"
index ef5e6b9..dc3acf6 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Order/OutboundOrder.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Inventory/InventoryOutboundOrder.vue"
@@ -6,7 +6,7 @@
 			</view>
 		</u-sticky>
 		<uni-list :border="true">
-			<uni-list-item direction="column" clickable @click="groupClick(item.id)" link :to="page+item.orderNo"
+			<uni-list-item direction="column" clickable @click="groupClick(item.id,item.upperOrderNo)" link :to="page+item.orderNo"
 				v-for="item in allReceivingOrders" :key="item.orderNo">
 				<template v-slot:body>
 					<!-- <uni-group margin-top="20">
@@ -26,16 +26,8 @@
 							<view class="value">{{item.upperOrderNo}}</view>
 						</view>
 						<view class="flex-row">
-							<view class="label">鐗╂枡缂栫爜:</view>
-							<view class="value">{{item.materielCode}}</view>
-						</view>
-						<view class="flex-row">
-							<view class="label">鍗曟嵁鏁伴噺:</view>
-							<view class="value">{{item.orderQuantity}}</view>
-						</view>
-						<view class="flex-row">
-							<view class="label">宸插嚭搴撴暟閲�:</view>
-							<view class="value">{{item.overOutQuantity}}</view>
+							<view class="label">鍒涘缓鏃堕棿:</view>
+							<view class="value">{{item.createDate}}</view>
 						</view>
 					</uni-group>
 				</template>
@@ -52,8 +44,9 @@
 	export default {
 		data() {
 			return {
-				page: "/pages/Order/Outorderboxing?orderNo=",
+				page: "/pages/Inventory/InventoryOutorderboxing?orderNo=",
 				loadVisible: false,
+				istrue:false,
 				searchValue: "",
 				status: "more",
 				allReceivingOrders: [],
@@ -75,16 +68,15 @@
 			search(res) {
 				this.getData();
 			},
-			groupClick(Id) {
-				window.location="/pages/Order/Outorderboxing?Id="+Id;
-				// console.log(Id);
+			groupClick(Id,orderNo) {
+				window.location="/pages/Inventory/InventoryOutorderboxing?Id="+Id+"&orderNo="+orderNo;
 			},
 			getData() {
 				var postData = {
 					orderNo: this.searchValue,
 					pageNo: this.pageNo
 				}
-				this.$u.post('/api/OutboundOrder/GetOutboundOrder', postData).then((res) => {
+				this.$u.post('/api/InventoryOutboundOrder/GetInventoryOutboundOrder', postData).then((res) => {
 					if (res.status) {
 						if (this.searchValue == '') {
 							this.allReceivingOrders = this.allReceivingOrders.concat(res.data);
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Inventory/InventoryOutorderboxing.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Inventory/InventoryOutorderboxing.vue"
new file mode 100644
index 0000000..25c8828
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Inventory/InventoryOutorderboxing.vue"
@@ -0,0 +1,178 @@
+<template>
+	<view>
+		<!-- <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem">
+		</uni-segmented-control> -->
+		<view class="content">
+			<!-- <view v-if="current === 0" class="headerstyle"> -->
+				<view class="itemstyle">
+					<u-sticky>
+						<view style="background-color: #ffffff;">
+							<uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar>
+						</view>
+					</u-sticky>
+					<uni-forms label-width="50">
+						<uni-forms-item label="鍑哄簱鍖哄煙"><uni-data-select v-model="value"
+								:localdata="range"></uni-data-select></uni-forms-item>
+					</uni-forms>
+					<uni-list :border="true">
+						<uni-list-item direction="column" v-for="(item,index) in orderInfo" :key="item.dtlId">
+							<template v-slot:body>
+								<view class="uni-list-box">
+									<button type="primary" style="position: absolute;right: 1%;" size="mini"
+										@click="OutBound(item.id)">鍑哄簱</button>
+									<view class="uni-content">
+										<view style="font-size: 18px;">鍗曟嵁缂栧彿锛歿{orderNo}}</view>
+										<view style="font-size: 18px;">鐗╂枡缂栫爜锛歿{item.materielCode}}</view>
+										<view style="font-size: 18px;">鐗╂枡鍚嶇О锛歿{item.materielName}}</view>
+										<view style="font-size: 18px;">鍗曟嵁鏁伴噺锛歿{item.orderQuantity}}</view>
+										<!-- <view style="font-size: 18px;">宸插垎閰嶆暟閲忥細{{item.processQty}}</view> -->
+										<view style="font-size: 18px;">鍑哄簱鏁伴噺锛歿{item.overOutQuantity}}</view>
+									</view>
+								</view>
+							</template>
+						</uni-list-item>
+					</uni-list>
+				</view>
+				<u-toast ref="uToast" />
+			<!-- </view> -->
+		</view>
+	</view>
+	</view>
+</template>
+
+<script>
+	import {
+		config
+	} from '../../common/config';
+	const innerAudioContext = uni.createInnerAudioContext();
+	export default {
+		data() {
+			return {
+				items: ['鐩存帴鍑哄簱'],
+				current: 0,
+				orderNo: "",
+				Id: 0,
+				AreaId: "",
+				orderIds: [],
+				orderInfo: [],
+				searchValue: "",
+				value:"2",
+				label: "",
+				range: [],
+				orderDetail: {},
+				focus: false,
+				key: [],
+				materielCode: "",
+			}
+		},
+		onShow() {},
+		onLoad(res) {
+			this.focus = false;
+			this.addressFocus = false;
+			this.Id = res.Id;
+			this.orderNo = res.orderNo;
+			this.range = config.OutArea;
+			this.getData();
+		},
+		methods: {
+			groupClick(materielCode, id) {
+				// window.location="/pages/materielGroup/OutOrderDetail?materielCode="+materielCode+"&id="+id;
+				// console.log(materielCode,id)
+			},
+			search() {
+				this.getData();
+			},
+			getData() {
+				var id = this.Id
+				var postData = {
+					id: id,
+					searchValue: this.searchValue,
+				};
+				this.$u.post('/api/InventoryOutboundOrder/GetInventoryOutboundOrderDetail', postData).then((res) => {
+					if (res.status) {
+						this.orderInfo = res.data;
+						// if (this.orderDetail.length > 3) {
+						// 	this.loadVisible = true;
+						// }
+					}
+				})
+			},
+			onClickItem(e) {
+				this.focus = false;
+				this.addressFocus = false;
+				if (this.current !== e.currentIndex) {
+					this.current = e.currentIndex;
+					if (this.current == 2) {
+						this.getData();
+					}
+				}
+			},
+			OutBound(id) {
+				this.orderIds=[];
+				this.orderIds.push(id);
+				var postData = {
+					AreaId: this.value,
+					orderIds: this.orderIds
+				};
+				console.log(postData);
+				this.$u.post('/api/InventoryOutboundOrder/GenerateInventoryOutboundTask', postData).then(res => {
+					if (res.status) {
+						this.items = [];
+						uni.$showMsg(res.message);
+						setTimeout(() => {
+							this.addressFocus = false;
+						}, 200);
+					} else {
+						this.$refs.uToast.show({
+							title: res.message,
+							type: "error"
+						})
+					}
+				}).catch(err => {
+					this.$refs.uToast.show({
+						title: err.message,
+						type: "error"
+					})
+				})
+			},
+			click(e) {
+				if (this.key.find(x => x.id == e.id)) {
+					this.key.map((item, index) => {
+						if (item.id == e.id) {
+							this.key.splice(index, 1);
+						}
+					})
+				} else {
+					this.key.push(e.id);
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import '@/common/uni-ui.scss';
+
+	.flex-row {
+		display: flex;
+		justify-content: space-between;
+		/* 宸﹀彸瀵归綈 */
+		align-items: center;
+		/* 鍨傜洿灞呬腑 */
+		padding: 10rpx 0;
+	}
+
+	.label {
+		color: #666;
+		width: 200rpx;
+		/* 鍥哄畾鏍囩瀹藉害 */
+		text-align: left;
+	}
+
+	.value {
+		flex: 1;
+		text-align: right;
+		color: #333;
+		font-weight: bold;
+	}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Order/Outorderboxing.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Order/Outorderboxing.vue"
deleted file mode 100644
index 789eb49..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Order/Outorderboxing.vue"
+++ /dev/null
@@ -1,177 +0,0 @@
-<template>
-	<view><uni-segmented-control :current="current" :values="items" @clickItem="onClickItem">
-		</uni-segmented-control>
-		<view class="content">
-			<view v-if="current === 0" class="headerstyle">
-				<div style="padding: 30px;">
-					<view class="flex-row">
-						<view class="label">鍗曞彿:</view>
-						<view class="value">{{orderDetail.orderNo}}</view>
-					</view>
-					<view class="flex-row">
-						<view class="label">涓婃父鍗曞彿:</view>
-						<view class="value">{{orderDetail.upperOrderNo}}</view>
-					</view>
-					<view class="flex-row">
-						<view class="label">鐗╂枡缂栫爜:</view>
-						<view class="value">{{orderDetail.materielCode}}</view>
-					</view>
-					<view class="flex-row">
-						<view class="label">鍗曟嵁鏁伴噺:</view>
-						<view class="value">{{orderDetail.orderQuantity}}</view>
-					</view>
-					<view class="flex-row">
-						<view class="label">宸插嚭搴撴暟閲�:</view>
-						<view class="value">{{orderDetail.overOutQuantity}}</view>
-					</view>
-					
-					</div>
-					<view style="padding: 5%;">
-						<uni-forms label-width="120">
-							<uni-forms-item label="缁� 鐐� 鍖� 鍩�">
-								<uni-data-select :focus="!istrue" v-model="AreaId" :localdata="range"
-									placeholder="璇疯緭閫夋嫨鍏ュ簱缁堢偣鍖哄煙"></uni-data-select>
-							</uni-forms-item>
-						</uni-forms>
-						<button @click="OutBound" type="primary" size="default" style="margin-top: 2%;">鍑哄簱</button>
-					
-					</view>
-				<u-toast ref="uToast" />
-			</view>
-		</view>
-	</view>
-	</view>
-</template>
-
-<script>
-	import {
-		config
-	} from '../../common/config';
-	const innerAudioContext = uni.createInnerAudioContext();
-	export default {
-		data() {
-			return {
-				items: ['鐩存帴鍑哄簱'],
-				current: 0,
-				orderNo: "",
-				Id: 0,
-				AreaId:"",
-				orderIds:[],
-				label: "",
-				range: [],
-				orderDetail: {
-					// id: "",
-					// orderNo: "",
-					// upperOrderNo: "",
-					// materielCode: "",
-					// materielName: "",
-					// orderQuantity: "",
-					// overOutQuantity: "",
-				},
-				focus: false,
-				key: [],
-				materielCode: "",
-			}
-		},
-		onShow() {},
-		onLoad(res) {
-			console.log(res);
-			this.focus = false;
-			this.addressFocus = false;
-			this.Id = res.Id;
-			this.range = config.AreaId;
-			this.getData();
-		},
-		methods: {
-			groupClick(materielCode, id) {
-				// window.location="/pages/materielGroup/OutOrderDetail?materielCode="+materielCode+"&id="+id;
-				// console.log(materielCode,id)
-			},
-			getData() {
-				var postData = this.Id;
-				this.$u.post('/api/OutboundOrder/GetOutboundOrderDetail?id=' + postData, "").then((res) => {
-					if (res.status) {
-						this.orderDetail = res.data;
-						// if (this.orderDetail.length > 3) {
-						// 	this.loadVisible = true;
-						// }
-					}
-				})
-			},
-			onClickItem(e) {
-				this.focus = false;
-				this.addressFocus = false;
-				if (this.current !== e.currentIndex) {
-					this.current = e.currentIndex;
-					if (this.current == 2) {
-						this.getData();
-					}
-				}
-			},
-			OutBound() {
-				this.orderIds.push(this.Id);
-				var postData = {
-					AreaId:this.AreaId,
-					orderIds:this.orderIds
-				};
-				this.$u.post('/api/StockInfo/GenerateOutboundTask', postData).then(res => {
-					if (res.status) {
-						this.items = [];
-						uni.$showMsg(res.message);
-						setTimeout(() => {
-							this.addressFocus = false;
-						}, 200);
-					} else {
-						this.$refs.uToast.show({
-							title: res.message,
-							type: "error"
-						})
-					}
-				}).catch(err => {
-					this.$refs.uToast.show({
-						title: err.message,
-						type: "error"
-					})
-				})
-			},
-			click(e) {
-				if (this.key.find(x => x.id == e.id)) {
-					this.key.map((item, index) => {
-						if (item.id == e.id) {
-							this.key.splice(index, 1);
-						}
-					})
-				} else {
-					this.key.push(e.id);
-				}
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	@import '@/common/uni-ui.scss';
-
-	.flex-row {
-		display: flex;
-		justify-content: space-between;
-		/* 宸﹀彸瀵归綈 */
-		align-items: center;
-		/* 鍨傜洿灞呬腑 */
-		padding: 10rpx 0;
-	}
-
-	.label {
-		color: #666;
-		width: 200rpx;
-		/* 鍥哄畾鏍囩瀹藉害 */
-		text-align: left;
-	}
-
-	.value {
-		flex: 1;
-		text-align: right;
-		color: #333;
-		font-weight: bold;
-	}
-</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Order/OutboundOrder.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/OtherOrder/OtherOutboundOrder.vue"
similarity index 84%
copy from "\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Order/OutboundOrder.vue"
copy to "\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/OtherOrder/OtherOutboundOrder.vue"
index ef5e6b9..4534f12 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Order/OutboundOrder.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/OtherOrder/OtherOutboundOrder.vue"
@@ -6,7 +6,7 @@
 			</view>
 		</u-sticky>
 		<uni-list :border="true">
-			<uni-list-item direction="column" clickable @click="groupClick(item.id)" link :to="page+item.orderNo"
+			<uni-list-item direction="column" clickable @click="groupClick(item.id,item.upperOrderNo)" link :to="page+item.orderNo"
 				v-for="item in allReceivingOrders" :key="item.orderNo">
 				<template v-slot:body>
 					<!-- <uni-group margin-top="20">
@@ -26,16 +26,8 @@
 							<view class="value">{{item.upperOrderNo}}</view>
 						</view>
 						<view class="flex-row">
-							<view class="label">鐗╂枡缂栫爜:</view>
-							<view class="value">{{item.materielCode}}</view>
-						</view>
-						<view class="flex-row">
-							<view class="label">鍗曟嵁鏁伴噺:</view>
-							<view class="value">{{item.orderQuantity}}</view>
-						</view>
-						<view class="flex-row">
-							<view class="label">宸插嚭搴撴暟閲�:</view>
-							<view class="value">{{item.overOutQuantity}}</view>
+							<view class="label">鍒涘缓鏃堕棿:</view>
+							<view class="value">{{item.createDate}}</view>
 						</view>
 					</uni-group>
 				</template>
@@ -52,8 +44,9 @@
 	export default {
 		data() {
 			return {
-				page: "/pages/Order/Outorderboxing?orderNo=",
+				page: "/pages/OtherOrder/OtherOutorderboxing?orderNo=",
 				loadVisible: false,
+				istrue:false,
 				searchValue: "",
 				status: "more",
 				allReceivingOrders: [],
@@ -75,16 +68,15 @@
 			search(res) {
 				this.getData();
 			},
-			groupClick(Id) {
-				window.location="/pages/Order/Outorderboxing?Id="+Id;
-				// console.log(Id);
+			groupClick(Id,orderNo) {
+				window.location="/pages/OtherOrder/OtherOutorderboxing?Id="+Id+"&orderNo="+orderNo;
 			},
 			getData() {
 				var postData = {
 					orderNo: this.searchValue,
 					pageNo: this.pageNo
 				}
-				this.$u.post('/api/OutboundOrder/GetOutboundOrder', postData).then((res) => {
+				this.$u.post('/api/OtherOutboundOrder/GetOtherOutboundOrder', postData).then((res) => {
 					if (res.status) {
 						if (this.searchValue == '') {
 							this.allReceivingOrders = this.allReceivingOrders.concat(res.data);
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/OtherOrder/OtherOutorderboxing.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/OtherOrder/OtherOutorderboxing.vue"
new file mode 100644
index 0000000..027615b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/OtherOrder/OtherOutorderboxing.vue"
@@ -0,0 +1,178 @@
+<template>
+	<view>
+		<!-- <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem">
+		</uni-segmented-control> -->
+		<view class="content">
+			<!-- <view v-if="current === 0" class="headerstyle"> -->
+				<view class="itemstyle">
+					<u-sticky>
+						<view style="background-color: #ffffff;">
+							<uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar>
+						</view>
+					</u-sticky>
+					<uni-forms label-width="50">
+						<uni-forms-item label="鍑哄簱鍖哄煙"><uni-data-select v-model="value"
+								:localdata="range"></uni-data-select></uni-forms-item>
+					</uni-forms>
+					<uni-list :border="true">
+						<uni-list-item direction="column" v-for="(item,index) in orderInfo" :key="item.dtlId">
+							<template v-slot:body>
+								<view class="uni-list-box">
+									<button type="primary" style="position: absolute;right: 1%;" size="mini"
+										@click="OutBound(item.id)">鍑哄簱</button>
+									<view class="uni-content">
+										<view style="font-size: 18px;">鍗曟嵁缂栧彿锛歿{orderNo}}</view>
+										<view style="font-size: 18px;">鐗╂枡缂栫爜锛歿{item.materielCode}}</view>
+										<view style="font-size: 18px;">鐗╂枡鍚嶇О锛歿{item.materielName}}</view>
+										<view style="font-size: 18px;">鍗曟嵁鏁伴噺锛歿{item.orderQuantity}}</view>
+										<!-- <view style="font-size: 18px;">宸插垎閰嶆暟閲忥細{{item.processQty}}</view> -->
+										<view style="font-size: 18px;">鍑哄簱鏁伴噺锛歿{item.overOutQuantity}}</view>
+									</view>
+								</view>
+							</template>
+						</uni-list-item>
+					</uni-list>
+				</view>
+				<u-toast ref="uToast" />
+			<!-- </view> -->
+		</view>
+	</view>
+	</view>
+</template>
+
+<script>
+	import {
+		config
+	} from '../../common/config';
+	const innerAudioContext = uni.createInnerAudioContext();
+	export default {
+		data() {
+			return {
+				items: ['鐩存帴鍑哄簱'],
+				current: 0,
+				orderNo: "",
+				Id: 0,
+				AreaId: "",
+				orderIds: [],
+				orderInfo: [],
+				searchValue: "",
+				value:"2",
+				label: "",
+				range: [],
+				orderDetail: {},
+				focus: false,
+				key: [],
+				materielCode: "",
+			}
+		},
+		onShow() {},
+		onLoad(res) {
+			this.focus = false;
+			this.addressFocus = false;
+			this.Id = res.Id;
+			this.orderNo = res.orderNo;
+			this.range = config.OutArea;
+			this.getData();
+		},
+		methods: {
+			groupClick(materielCode, id) {
+				// window.location="/pages/materielGroup/OutOrderDetail?materielCode="+materielCode+"&id="+id;
+				// console.log(materielCode,id)
+			},
+			search() {
+				this.getData();
+			},
+			getData() {
+				var id = this.Id
+				var postData = {
+					id: id,
+					searchValue: this.searchValue,
+				};
+				this.$u.post('/api/OtherOutboundOrder/GetOtherOutboundOrderDetail', postData).then((res) => {
+					if (res.status) {
+						this.orderInfo = res.data;
+						// if (this.orderDetail.length > 3) {
+						// 	this.loadVisible = true;
+						// }
+					}
+				})
+			},
+			onClickItem(e) {
+				this.focus = false;
+				this.addressFocus = false;
+				if (this.current !== e.currentIndex) {
+					this.current = e.currentIndex;
+					if (this.current == 2) {
+						this.getData();
+					}
+				}
+			},
+			OutBound(id) {
+				this.orderIds=[];
+				this.orderIds.push(id);
+				var postData = {
+					AreaId: this.value,
+					orderIds: this.orderIds
+				};
+				console.log(postData);
+				this.$u.post('/api/OtherOutboundOrder/GenerateOtherOutboundTask', postData).then(res => {
+					if (res.status) {
+						this.items = [];
+						uni.$showMsg(res.message);
+						setTimeout(() => {
+							this.addressFocus = false;
+						}, 200);
+					} else {
+						this.$refs.uToast.show({
+							title: res.message,
+							type: "error"
+						})
+					}
+				}).catch(err => {
+					this.$refs.uToast.show({
+						title: err.message,
+						type: "error"
+					})
+				})
+			},
+			click(e) {
+				if (this.key.find(x => x.id == e.id)) {
+					this.key.map((item, index) => {
+						if (item.id == e.id) {
+							this.key.splice(index, 1);
+						}
+					})
+				} else {
+					this.key.push(e.id);
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import '@/common/uni-ui.scss';
+
+	.flex-row {
+		display: flex;
+		justify-content: space-between;
+		/* 宸﹀彸瀵归綈 */
+		align-items: center;
+		/* 鍨傜洿灞呬腑 */
+		padding: 10rpx 0;
+	}
+
+	.label {
+		color: #666;
+		width: 200rpx;
+		/* 鍥哄畾鏍囩瀹藉害 */
+		text-align: left;
+	}
+
+	.value {
+		flex: 1;
+		text-align: right;
+		color: #333;
+		font-weight: bold;
+	}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Order/OutboundOrder.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Production/ProductionOutboundOrder.vue"
similarity index 84%
rename from "\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Order/OutboundOrder.vue"
rename to "\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Production/ProductionOutboundOrder.vue"
index ef5e6b9..4cf0655 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Order/OutboundOrder.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Production/ProductionOutboundOrder.vue"
@@ -6,7 +6,7 @@
 			</view>
 		</u-sticky>
 		<uni-list :border="true">
-			<uni-list-item direction="column" clickable @click="groupClick(item.id)" link :to="page+item.orderNo"
+			<uni-list-item direction="column" clickable @click="groupClick(item.id,item.upperOrderNo)" link :to="page+item.orderNo"
 				v-for="item in allReceivingOrders" :key="item.orderNo">
 				<template v-slot:body>
 					<!-- <uni-group margin-top="20">
@@ -26,16 +26,8 @@
 							<view class="value">{{item.upperOrderNo}}</view>
 						</view>
 						<view class="flex-row">
-							<view class="label">鐗╂枡缂栫爜:</view>
-							<view class="value">{{item.materielCode}}</view>
-						</view>
-						<view class="flex-row">
-							<view class="label">鍗曟嵁鏁伴噺:</view>
-							<view class="value">{{item.orderQuantity}}</view>
-						</view>
-						<view class="flex-row">
-							<view class="label">宸插嚭搴撴暟閲�:</view>
-							<view class="value">{{item.overOutQuantity}}</view>
+							<view class="label">鍒涘缓鏃堕棿:</view>
+							<view class="value">{{item.createDate}}</view>
 						</view>
 					</uni-group>
 				</template>
@@ -52,8 +44,9 @@
 	export default {
 		data() {
 			return {
-				page: "/pages/Order/Outorderboxing?orderNo=",
+				page: "/pages/Production/ProductionOutorderboxing?orderNo=",
 				loadVisible: false,
+				istrue:false,
 				searchValue: "",
 				status: "more",
 				allReceivingOrders: [],
@@ -75,16 +68,15 @@
 			search(res) {
 				this.getData();
 			},
-			groupClick(Id) {
-				window.location="/pages/Order/Outorderboxing?Id="+Id;
-				// console.log(Id);
+			groupClick(Id,orderNo) {
+				window.location="/pages/Production/ProductionOutorderboxing?Id="+Id+"&orderNo="+orderNo;
 			},
 			getData() {
 				var postData = {
 					orderNo: this.searchValue,
 					pageNo: this.pageNo
 				}
-				this.$u.post('/api/OutboundOrder/GetOutboundOrder', postData).then((res) => {
+				this.$u.post('/api/ProductionOutboundOrder/GetProductOutboundOrder', postData).then((res) => {
 					if (res.status) {
 						if (this.searchValue == '') {
 							this.allReceivingOrders = this.allReceivingOrders.concat(res.data);
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Production/ProductionOutorderboxing.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Production/ProductionOutorderboxing.vue"
new file mode 100644
index 0000000..2e01f45
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Production/ProductionOutorderboxing.vue"
@@ -0,0 +1,177 @@
+<template>
+	<view>
+		<!-- <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem">
+		</uni-segmented-control> -->
+		<view class="content">
+			<!-- <view v-if="current === 0" class="headerstyle"> -->
+				<view class="itemstyle">
+					<u-sticky>
+						<view style="background-color: #ffffff;">
+							<uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar>
+						</view>
+					</u-sticky>
+					<uni-forms label-width="50">
+						<uni-forms-item label="鍑哄簱鍖哄煙"><uni-data-select v-model="value"
+								:localdata="range"></uni-data-select></uni-forms-item>
+					</uni-forms>
+					<uni-list :border="true">
+						<uni-list-item direction="column" v-for="(item,index) in orderInfo" :key="item.dtlId">
+							<template v-slot:body>
+								<view class="uni-list-box">
+									<button type="primary" style="position: absolute;right: 1%;" size="mini"
+										@click="OutBound(item.id)">鍑哄簱</button>
+									<view class="uni-content">
+										<view style="font-size: 18px;">鍗曟嵁缂栧彿锛歿{orderNo}}</view>
+										<view style="font-size: 18px;">鐗╂枡缂栫爜锛歿{item.materielCode}}</view>
+										<view style="font-size: 18px;">鐗╂枡鍚嶇О锛歿{item.materielName}}</view>
+										<view style="font-size: 18px;">鍗曟嵁鏁伴噺锛歿{item.orderQuantity}}</view>
+										<!-- <view style="font-size: 18px;">宸插垎閰嶆暟閲忥細{{item.processQty}}</view> -->
+										<view style="font-size: 18px;">鍑哄簱鏁伴噺锛歿{item.overOutQuantity}}</view>
+									</view>
+								</view>
+							</template>
+						</uni-list-item>
+					</uni-list>
+				</view>
+				<u-toast ref="uToast" />
+			<!-- </view> -->
+		</view>
+	</view>
+	</view>
+</template>
+
+<script>
+	import {
+		config
+	} from '../../common/config';
+	const innerAudioContext = uni.createInnerAudioContext();
+	export default {
+		data() {
+			return {
+				items: ['鐩存帴鍑哄簱'],
+				current: 0,
+				orderNo: "",
+				Id: 0,
+				AreaId: "",
+				orderIds: [],
+				orderInfo: [],
+				searchValue: "",
+				value:"2",
+				label: "",
+				range: [],
+				orderDetail: {},
+				focus: false,
+				key: [],
+				materielCode: "",
+			}
+		},
+		onShow() {},
+		onLoad(res) {
+			this.focus = false;
+			this.addressFocus = false;
+			this.Id = res.Id;
+			this.orderNo = res.orderNo;
+			this.range = config.OutArea;
+			this.getData();
+		},
+		methods: {
+			groupClick(materielCode, id) {
+				// window.location="/pages/materielGroup/OutOrderDetail?materielCode="+materielCode+"&id="+id;
+				// console.log(materielCode,id)
+			},
+			search() {
+				this.getData();
+			},
+			getData() {
+				var id = this.Id
+				var postData = {
+					id: id,
+					searchValue: this.searchValue,
+				};
+				this.$u.post('/api/ProductionOutboundOrder/GettProductOutboundOrderDetail', postData).then((res) => {
+					if (res.status) {
+						this.orderInfo = res.data;
+						// if (this.orderDetail.length > 3) {
+						// 	this.loadVisible = true;
+						// }
+					}
+				})
+			},
+			onClickItem(e) {
+				this.focus = false;
+				this.addressFocus = false;
+				if (this.current !== e.currentIndex) {
+					this.current = e.currentIndex;
+					if (this.current == 2) {
+						this.getData();
+					}
+				}
+			},
+			OutBound(id) {
+				this.orderIds=[];
+				this.orderIds.push(id);
+				var postData = {
+					AreaId: this.value,
+					orderIds: this.orderIds
+				};
+				this.$u.post('/api/ProductionOutboundOrder/GeneratetProductOutboundTask', postData).then(res => {
+					if (res.status) {
+						this.items = [];
+						uni.$showMsg(res.message);
+						setTimeout(() => {
+							this.addressFocus = false;
+						}, 200);
+					} else {
+						this.$refs.uToast.show({
+							title: res.message,
+							type: "error"
+						})
+					}
+				}).catch(err => {
+					this.$refs.uToast.show({
+						title: err.message,
+						type: "error"
+					})
+				})
+			},
+			click(e) {
+				if (this.key.find(x => x.id == e.id)) {
+					this.key.map((item, index) => {
+						if (item.id == e.id) {
+							this.key.splice(index, 1);
+						}
+					})
+				} else {
+					this.key.push(e.id);
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import '@/common/uni-ui.scss';
+
+	.flex-row {
+		display: flex;
+		justify-content: space-between;
+		/* 宸﹀彸瀵归綈 */
+		align-items: center;
+		/* 鍨傜洿灞呬腑 */
+		padding: 10rpx 0;
+	}
+
+	.label {
+		color: #666;
+		width: 200rpx;
+		/* 鍥哄畾鏍囩瀹藉害 */
+		text-align: left;
+	}
+
+	.value {
+		flex: 1;
+		text-align: right;
+		color: #333;
+		font-weight: bold;
+	}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/CodeChunks.db" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/CodeChunks.db"
index 776bc67..d54850f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/CodeChunks.db"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/CodeChunks.db"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/CodeChunks.db-shm" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/CodeChunks.db-shm"
deleted file mode 100644
index 2f692a6..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/CodeChunks.db-shm"
+++ /dev/null
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/CodeChunks.db-wal" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/CodeChunks.db-wal"
deleted file mode 100644
index 138f098..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/CodeChunks.db-wal"
+++ /dev/null
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/SemanticSymbols.db" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/SemanticSymbols.db"
index 96b1197..14bf617 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/SemanticSymbols.db"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/SemanticSymbols.db"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-shm" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-shm"
deleted file mode 100644
index 85d8cf8..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-shm"
+++ /dev/null
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-wal" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-wal"
deleted file mode 100644
index 32d1007..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-wal"
+++ /dev/null
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json"
index 51e9589..f1d4906 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json"
@@ -113,7 +113,7 @@
               "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\AGV\\CommonAGVJob.cs",
               "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\AGV\\CommonAGVJob.cs",
               "RelativeToolTip": "WIDESEAWCS_Tasks\\AGV\\CommonAGVJob.cs",
-              "ViewState": "AgIAABwAAAAAAAAAAAA9wIsAAAAAAAAAAAAAAA==",
+              "ViewState": "AgIAAB0AAAAAAAAAAAAlwDoAAAAUAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-10-09T05:11:29.775Z",
               "EditorCaption": ""
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/extend/StockSelect.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Allocate/AllocateStockSelect.vue"
similarity index 90%
copy from "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/extend/StockSelect.vue"
copy to "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Allocate/AllocateStockSelect.vue"
index 48e50fe..2e83148 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/extend/StockSelect.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Allocate/AllocateStockSelect.vue"
@@ -23,17 +23,11 @@
       </div>
       <div style="margin-top:10px;width:400px">
         <el-form ref="form" :model="form" label-width="90px">
-          <el-form-item label="缁堢偣鍦板潃">
-            <el-input type="text" v-model="this.form.TargetAddress"></el-input>
-          </el-form-item>
           <el-form-item label="鍑哄簱鍖哄煙" prop="areaId">
             <el-select v-model="form.areaId" placeholder="璇烽�夋嫨鍑哄簱鍖哄煙">
-              <el-option label="鍫嗗灈鏈哄尯鍩�" value="1" />
               <el-option label="涓�妤糀GV鍑哄簱缂撳瓨鍖�" value="2" />
               <el-option label="涓�妤糀GV绔嬪簱缂撳瓨鍖�" value="3" />
               <el-option label="涓�妤糀GV鍏ュ簱缂撳瓨鍖�" value="4" />
-              <el-option label="浜屾ゼB4-G4缂撳瓨鍖�" value="5" />
-              <el-option label="浜屾ゼB5-G5缂撳瓨鍖�" value="6" />
             </el-select>
           </el-form-item>
         </el-form>
@@ -70,7 +64,7 @@
     return {
       form: {
         TargetAddress: "",
-        areaId: "",
+        areaId: "2",
       },
       row: null,
       showDetialBox: false,
@@ -135,16 +129,14 @@
       }
       this.ids.push(this.row.id);
       var param = {
-        // "orderId": this.row.id,
         "orderIds":this.ids,
         "stockViews": this.selection,
-        "TargetAddress": this.form.TargetAddress,
         "AreaId": this.form.areaId,
       }
       console.log(param);
       this.http
         .post(
-          "api/StockInfo/GenerateOutboundTask",
+          "api/AllocateOutboundOrder/GenerateAllocateOutboundTask",
           param,
           "鏁版嵁澶勭悊涓�"
         )
@@ -158,14 +150,19 @@
         });
     },
     getData() {
+      var param = {
+        "materielCode":this.row.materielCode,
+        "materielName": this.row.materielName,
+        "demandClassification": this.row.demandClassification,
+      }
       this.http
-        .post(
-          "api/StockInfo/GetStockSelectViews?materielCode=" +
-          this.row.materielCode,
-          null,
-          "鏌ヨ涓�"
-        )
-        .then((x) => {
+        // .post(
+        //   "api/StockInfo/GetStockSelectViews?materielCode=" +
+        //   this.row.materielCode,
+        //   null,
+        //   "鏌ヨ涓�"
+        // )
+        .post("api/StockInfo/GetStockSelectViews",param,"鏌ヨ涓�").then((x) => {
           this.tableData = x;
         });
     },
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Allocate/AllocateoutOrderDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Allocate/AllocateoutOrderDetail.vue"
new file mode 100644
index 0000000..c30b851
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Allocate/AllocateoutOrderDetail.vue"
@@ -0,0 +1,387 @@
+<template>
+  <div>
+    <vol-box v-model="showDetialBox" :lazy="true" width="85%" :padding="15" title="鍗曟嵁鏄庣粏淇℃伅">
+      <div class="box-head">
+        <el-alert :closable="false" style="width: 100%">
+          <el-row>
+            <el-col :span="16">
+              <span>宸查�変腑 {{ selection.length }} 椤�</span>
+            </el-col>
+            <el-col :span="8">
+              <el-link type="primary" size="small" style="float: right; height: 20px; margin-right: 10px"
+                @click="outbound">鐩存帴鍑哄簱</el-link>
+              <el-link type="primary" size="small" style="float: right; height: 20px; margin-right: 10px"
+                @click="getData">鍒锋柊</el-link></el-col>
+          </el-row>
+        </el-alert>
+      </div>
+      <div class="search-form">
+        <label style="margin-left: 10px">鐗╂枡缂栧彿锛�</label>
+        <el-input style="width: 310px" v-model="MaterialCode"></el-input>
+        <el-button size="small" type="primary" @click="getData">鎼滅储</el-button>
+
+      </div>
+      <div style="margin-top:10px;width:400px">
+        <el-form ref="form" :model="form" label-width="90px">
+          <el-form-item label="鍑哄簱鍖哄煙" prop="areaId">
+            <el-select v-model="areaId" placeholder="璇烽�夋嫨鍑哄簱鍖哄煙">
+              <el-option label="涓�妤糀GV鍑哄簱缂撳瓨鍖�" value="2" />
+              <el-option label="涓�妤糀GV绔嬪簱缂撳瓨鍖�" value="3" />
+              <el-option label="涓�妤糀GV鍏ュ簱缂撳瓨鍖�" value="4" />
+            </el-select>
+          </el-form-item>
+        </el-form>
+      </div>
+      <div class="box-table" style="margin-top: 1%">
+        <el-table ref="singleTable" :data="tableData" style="width: 100%; height: 630px" highlight-current-row
+          @current-change="handleCurrentChange" height="500px" @row-click="handleRowClick"
+          @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55"> </el-table-column>
+          <el-table-column label="搴忓彿" type="index" fixed="left" width="55" align="center"></el-table-column>
+          <el-table-column v-for="(item, index) in tableColumns.filter((x) => !x.hidden)" :key="index" :prop="item.prop"
+            :label="item.title" :width="item.width" align="center">
+            <template #default="scoped">
+              <div v-if="item.type == 'icon'">
+                <el-tooltip class="item" effect="dark" :content="item.title" placement="bottom"><el-link type="primary"
+                    :disabled="getButtonEnable(item.prop, scoped.row)" @click="tableButtonClick(scoped.row, item)"><i
+                      :class="item.icon" style="font-size: 22px"></i></el-link></el-tooltip>
+              </div>
+
+              <div v-else-if="item.type == 'tag'">
+                <el-tag size="small">
+                  {{ getDictionary(scoped.row, item) }}
+                </el-tag>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+    </vol-box>
+    <stock-select ref="child" @parentCall="parentCall"></stock-select>
+  </div>
+</template>
+<script>
+import VolBox from "@/components/basic/VolBox.vue";
+import VolForm from "@/components/basic/VolForm.vue";
+import StockSelect from "./OtherStockSelect.vue";
+export default {
+  components: { VolBox, VolForm, StockSelect },
+  data() {
+    return {
+      row: null,
+      areaId: "2",
+      showDetialBox: false,
+      flag: false,
+      MaterialCode:"",
+      currentRow: null,
+      selection: [],
+      tableData: [],
+      tableColumns: [
+        {
+          prop: "id",
+          title: "Id",
+          type: "int",
+          width: 90,
+          hidden: true,
+        },
+        {
+          prop: "orderId",
+          title: "鍑哄簱鍗曚富閿�",
+          type: "string",
+          width: 90,
+          hidden: true,
+        },
+        {
+          prop: "materielCode",
+          title: "鐗╂枡缂栧彿",
+          type: "string",
+          width: 150,
+        },
+        {
+          prop: "materielName",
+          title: "鐗╂枡鍚嶇О",
+          type: "string",
+          width: 150,
+        },
+        {
+          prop: "demandClassification",
+          title: "闇�姹傚垎绫�",
+          type: "string",
+          width: 150,
+        },
+        {
+          prop: "orderQuantity",
+          title: "鍗曟嵁鏁伴噺",
+          type: "string",
+          width: 90,
+        },
+        {
+          prop: "lockQuantity",
+          title: "閿佸畾鏁伴噺",
+          type: "int",
+          width: 90,
+          hidden: true,
+        },
+        {
+          prop: "overOutQuantity",
+          title: "宸插嚭鏁伴噺",
+          type: "string",
+          width: 90,
+        },
+        {
+          prop: "orderDetailStatus",
+          title: "璁㈠崟鏄庣粏鐘舵��",
+          type: "tag",
+          width: 120,
+          bindKey: "OrderStateEmun"
+        },
+        {
+          prop: "assignStock",
+          title: "鎸囧畾搴撳瓨",
+          type: "icon",
+          width: 90,
+          icon: "el-icon-s-grid",
+        },
+        // {
+        //   prop: "viewDetail",
+        //   title: "鍑哄簱璇︾粏",
+        //   type: "icon",
+        //   width: 90,
+        //   icon: "el-icon-s-operation",
+        // },
+        {
+          prop: "creater",
+          title: "鍒涘缓浜�",
+          type: "string",
+          width: 90,
+        },
+        {
+          prop: "createDate",
+          title: "鍒涘缓鏃堕棿",
+          type: "datetime",
+          width: 160,
+        },
+        {
+          prop: "modifier",
+          title: "淇敼浜�",
+          type: "string",
+          width: 100,
+        },
+        {
+          prop: "modifyDate",
+          title: "淇敼鏃堕棿",
+          type: "datetime",
+          width: 160,
+        },
+        {
+          prop: "remark",
+          title: "澶囨敞",
+          type: "string",
+        },
+      ],
+      paginations: {
+        sort: "id",
+        order: "desc",
+        Foots: "",
+        total: 0,
+        // 2020.08.29澧炲姞鑷畾涔夊垎椤垫潯澶у皬
+        sizes: [30, 60, 100, 120],
+        size: 30, // 榛樿鍒嗛〉澶у皬
+        Wheres: [],
+        page: 1,
+        rows: 30,
+      },
+      searchFormOptions: [
+        [
+          {
+            title: "鍗曟嵁缂栧彿",
+            field: "allocation_code",
+            type: "like",
+          },
+          {
+            title: "鍗曟嵁绫诲瀷",
+            field: "allocation_type",
+            type: "select",
+            dataKey: "OrderType",
+            data: [],
+          },
+          {
+            title: "鍗曟嵁鐘舵��",
+            field: "allocation_state",
+            type: "select",
+            dataKey: "OrderState",
+            data: [],
+          },
+        ],
+      ],
+      searchFormFields: {
+        allocation_code: "",
+        allocation_type: "",
+        allocation_state: "",
+      },
+      dictionaryList: null,
+    };
+  },
+  methods: {
+    open(row) {
+      this.row = row;
+      this.showDetialBox = true;
+      this.getDictionaryData();
+      this.getData();
+    },
+    getData() {
+      var wheres = [{ name: "orderId", value: this.row.id},{name: "materielCode",value:this.MaterialCode,DisplayType:"text"}];
+      console.log(JSON.stringify(wheres));
+      var param = {
+        page: this.paginations.page,
+        rows: this.paginations.rows,
+        sort: this.paginations.sort,
+        order: this.paginations.order,
+        wheres: JSON.stringify(wheres), // 鏌ヨ鏉′欢锛屾牸寮忎负[{ name: "瀛楁", value: "xx" }]
+      };
+      this.http
+        .post("api/AllocateOutboundOrderDetail/GetPageData", param, "鏌ヨ涓�")
+        .then((x) => {
+          this.tableData = x.rows;
+        });
+    },
+    tableButtonClick(row, column) {
+      if (column.prop == "assignStock") {
+        if (row.overOutQuantity > row.orderQuantity) {
+          this.$message.error("璇ュ崟鎹凡娌℃湁鏁伴噺鍙嚭搴�");
+          return;
+        }
+        this.$refs.child.open(row);
+      }
+    },
+    outbound() {
+      if (this.selection.length === 0) {
+        return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
+      }
+      var keys = this.selection.map((item) => item.id); // 鑾峰彇閫変腑琛岀殑id
+      var param = {
+        "orderIds":keys,
+        "AreaId": this.areaId,
+      }
+      this.http
+        .post("api/AllocateOutboundOrder/GenerateAllocateOutboundTask", param, "鏁版嵁澶勭悊涓�")
+        .then((x) => {
+          if (!x.status) return this.$message.error(x.message);
+          this.$message.success("鎿嶄綔鎴愬姛");
+          this.showDetialBox = false;
+          this.$emit("parentCall", ($vue) => {
+            $vue.getData();
+          });
+        });
+    },
+    setCurrent(row) {
+      this.$refs.singleTable.setCurrentRow(row);
+    },
+    handleCurrentChange(val) {
+      this.currentRow = val;
+    },
+    getButtonEnable(propName, row) {
+      if (propName == "assignStock") {
+        if (
+          row.orderDetailStatus !== 0 &&
+          row.orderDetailStatus !== 60 &&
+          row.orderDetailStatus !== 70
+        ) {
+          return true;
+        } else {
+          return false;
+        }
+      }
+      return false;
+    },
+    parentCall(fun) {
+      if (typeof fun != "function") {
+        return console.log("鎵╁睍缁勪欢闇�瑕佷紶鍏ヤ竴涓洖璋冩柟娉曟墠鑳借幏鍙栫埗绾ue瀵硅薄");
+      }
+      fun(this);
+    },
+    handleRowClick(row) {
+      this.$refs.singleTable.toggleRowSelection(row);
+    },
+    handleSelectionChange(val) {
+      this.selection = val;
+    },
+    getDictionaryData() {
+      if (this.dictionaryList) {
+        return;
+      }
+      var param = [];
+      this.tableColumns.forEach((x) => {
+        if (x.type == "tag" && x.bindKey != "") {
+          param.push(x.bindKey);
+        }
+      });
+      this.http
+        .post("api/Sys_Dictionary/GetVueDictionary", param, "鏌ヨ涓�")
+        .then((x) => {
+          if (x.length > 0) {
+            this.dictionaryList = x;
+          }
+        });
+    },
+    getDictionary(row, column) {
+      if (this.dictionaryList) {
+        var item = this.dictionaryList.find((x) => x.dicNo == column.bindKey);
+        if (item) {
+          var dicItem = item.data.find((x) => x.key == row[column.prop]);
+          if (dicItem) {
+            return dicItem.value;
+          } else {
+            return row[column.prop];
+          }
+        } else {
+          return row[column.prop];
+        }
+      }
+    },
+  },
+};
+</script>
+<style scoped>
+.text-button {
+  border: 0px;
+}
+</style>
+
+<style>
+.text-button:hover {
+  background-color: #f0f9eb !important;
+}
+
+.el-table .warning-row {
+  background: oldlace;
+}
+
+.box-table .el-table tbody tr:hover>td {
+  background-color: #d8e0d4 !important;
+  /* color: #ffffff; */
+}
+
+.box-table .el-table tbody tr.current-row>td {
+  background-color: #f0f9eb !important;
+  /* color: #ffffff; */
+}
+
+.el-table .success-row {
+  background: #f0f9eb;
+}
+
+.box-table .el-table {
+  border: 1px solid #ebeef5;
+}
+
+.search-form {
+  display: flex;
+  padding: 10px;
+  line-height: 34px;
+
+  button {
+    margin-left: 10px;
+  }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/OutboundOrder.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/AllocateOutboundOrder.js"
similarity index 97%
copy from "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/OutboundOrder.js"
copy to "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/AllocateOutboundOrder.js"
index bf6ec35..c4b3624 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/OutboundOrder.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/AllocateOutboundOrder.js"
@@ -1,6 +1,6 @@
 
 //姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
-import gridBody from './extend/StockSelect.vue'
+import gridBody from './Allocate/AllocateoutOrderDetail.vue'
 let extension = {
     components: {
       //鏌ヨ鐣岄潰鎵╁睍缁勪欢
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/extend/StockSelect.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Inventory/InventoryStockSelect.vue"
similarity index 90%
rename from "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/extend/StockSelect.vue"
rename to "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Inventory/InventoryStockSelect.vue"
index 48e50fe..968e596 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/extend/StockSelect.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Inventory/InventoryStockSelect.vue"
@@ -23,17 +23,11 @@
       </div>
       <div style="margin-top:10px;width:400px">
         <el-form ref="form" :model="form" label-width="90px">
-          <el-form-item label="缁堢偣鍦板潃">
-            <el-input type="text" v-model="this.form.TargetAddress"></el-input>
-          </el-form-item>
           <el-form-item label="鍑哄簱鍖哄煙" prop="areaId">
             <el-select v-model="form.areaId" placeholder="璇烽�夋嫨鍑哄簱鍖哄煙">
-              <el-option label="鍫嗗灈鏈哄尯鍩�" value="1" />
               <el-option label="涓�妤糀GV鍑哄簱缂撳瓨鍖�" value="2" />
               <el-option label="涓�妤糀GV绔嬪簱缂撳瓨鍖�" value="3" />
               <el-option label="涓�妤糀GV鍏ュ簱缂撳瓨鍖�" value="4" />
-              <el-option label="浜屾ゼB4-G4缂撳瓨鍖�" value="5" />
-              <el-option label="浜屾ゼB5-G5缂撳瓨鍖�" value="6" />
             </el-select>
           </el-form-item>
         </el-form>
@@ -70,7 +64,7 @@
     return {
       form: {
         TargetAddress: "",
-        areaId: "",
+        areaId: "2",
       },
       row: null,
       showDetialBox: false,
@@ -135,16 +129,13 @@
       }
       this.ids.push(this.row.id);
       var param = {
-        // "orderId": this.row.id,
         "orderIds":this.ids,
         "stockViews": this.selection,
-        "TargetAddress": this.form.TargetAddress,
         "AreaId": this.form.areaId,
       }
-      console.log(param);
       this.http
         .post(
-          "api/StockInfo/GenerateOutboundTask",
+          "api/InventoryOutboundOrder/GenerateInventoryOutboundTask",
           param,
           "鏁版嵁澶勭悊涓�"
         )
@@ -158,14 +149,13 @@
         });
     },
     getData() {
+      var param = {
+        "materielCode":this.row.materielCode,
+        "materielName": this.row.materielName,
+        "demandClassification": this.row.demandClassification,
+      }
       this.http
-        .post(
-          "api/StockInfo/GetStockSelectViews?materielCode=" +
-          this.row.materielCode,
-          null,
-          "鏌ヨ涓�"
-        )
-        .then((x) => {
+        .post("api/StockInfo/GetStockSelectViews",param,"鏌ヨ涓�").then((x) => {
           this.tableData = x;
         });
     },
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Inventory/InventoryoutOrderDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Inventory/InventoryoutOrderDetail.vue"
new file mode 100644
index 0000000..cf141d5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Inventory/InventoryoutOrderDetail.vue"
@@ -0,0 +1,387 @@
+<template>
+  <div>
+    <vol-box v-model="showDetialBox" :lazy="true" width="85%" :padding="15" title="鍗曟嵁鏄庣粏淇℃伅">
+      <div class="box-head">
+        <el-alert :closable="false" style="width: 100%">
+          <el-row>
+            <el-col :span="16">
+              <span>宸查�変腑 {{ selection.length }} 椤�</span>
+            </el-col>
+            <el-col :span="8">
+              <el-link type="primary" size="small" style="float: right; height: 20px; margin-right: 10px"
+                @click="outbound">鐩存帴鍑哄簱</el-link>
+              <el-link type="primary" size="small" style="float: right; height: 20px; margin-right: 10px"
+                @click="getData">鍒锋柊</el-link></el-col>
+          </el-row>
+        </el-alert>
+      </div>
+      <div class="search-form">
+        <label style="margin-left: 10px">鐗╂枡缂栧彿锛�</label>
+        <el-input style="width: 310px" v-model="MaterialCode"></el-input>
+        <el-button size="small" type="primary" @click="getData">鎼滅储</el-button>
+
+      </div>
+      <div style="margin-top:10px;width:400px">
+        <el-form ref="form" :model="form" label-width="90px">
+          <el-form-item label="鍑哄簱鍖哄煙" prop="areaId">
+            <el-select v-model="areaId" placeholder="璇烽�夋嫨鍑哄簱鍖哄煙">
+              <el-option label="涓�妤糀GV鍑哄簱缂撳瓨鍖�" value="2" />
+              <el-option label="涓�妤糀GV绔嬪簱缂撳瓨鍖�" value="3" />
+              <el-option label="涓�妤糀GV鍏ュ簱缂撳瓨鍖�" value="4" />
+            </el-select>
+          </el-form-item>
+        </el-form>
+      </div>
+      <div class="box-table" style="margin-top: 1%">
+        <el-table ref="singleTable" :data="tableData" style="width: 100%; height: 630px" highlight-current-row
+          @current-change="handleCurrentChange" height="500px" @row-click="handleRowClick"
+          @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55"> </el-table-column>
+          <el-table-column label="搴忓彿" type="index" fixed="left" width="55" align="center"></el-table-column>
+          <el-table-column v-for="(item, index) in tableColumns.filter((x) => !x.hidden)" :key="index" :prop="item.prop"
+            :label="item.title" :width="item.width" align="center">
+            <template #default="scoped">
+              <div v-if="item.type == 'icon'">
+                <el-tooltip class="item" effect="dark" :content="item.title" placement="bottom"><el-link type="primary"
+                    :disabled="getButtonEnable(item.prop, scoped.row)" @click="tableButtonClick(scoped.row, item)"><i
+                      :class="item.icon" style="font-size: 22px"></i></el-link></el-tooltip>
+              </div>
+
+              <div v-else-if="item.type == 'tag'">
+                <el-tag size="small">
+                  {{ getDictionary(scoped.row, item) }}
+                </el-tag>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+    </vol-box>
+    <stock-select ref="child" @parentCall="parentCall"></stock-select>
+  </div>
+</template>
+<script>
+import VolBox from "@/components/basic/VolBox.vue";
+import VolForm from "@/components/basic/VolForm.vue";
+import StockSelect from "./InventoryStockSelect.vue";
+export default {
+  components: { VolBox, VolForm, StockSelect },
+  data() {
+    return {
+      row: null,
+      areaId: "2",
+      showDetialBox: false,
+      flag: false,
+      MaterialCode:"",
+      currentRow: null,
+      selection: [],
+      tableData: [],
+      tableColumns: [
+        {
+          prop: "id",
+          title: "Id",
+          type: "int",
+          width: 90,
+          hidden: true,
+        },
+        {
+          prop: "orderId",
+          title: "鍑哄簱鍗曚富閿�",
+          type: "string",
+          width: 90,
+          hidden: true,
+        },
+        {
+          prop: "materielCode",
+          title: "鐗╂枡缂栧彿",
+          type: "string",
+          width: 150,
+        },
+        {
+          prop: "materielName",
+          title: "鐗╂枡鍚嶇О",
+          type: "string",
+          width: 150,
+        },
+        {
+          prop: "demandClassification",
+          title: "闇�姹傚垎绫�",
+          type: "string",
+          width: 150,
+        },
+        {
+          prop: "orderQuantity",
+          title: "鍗曟嵁鏁伴噺",
+          type: "string",
+          width: 90,
+        },
+        {
+          prop: "lockQuantity",
+          title: "閿佸畾鏁伴噺",
+          type: "int",
+          width: 90,
+          hidden: true,
+        },
+        {
+          prop: "overOutQuantity",
+          title: "宸插嚭鏁伴噺",
+          type: "string",
+          width: 90,
+        },
+        {
+          prop: "orderDetailStatus",
+          title: "璁㈠崟鏄庣粏鐘舵��",
+          type: "tag",
+          width: 120,
+          bindKey: "OrderStateEmun"
+        },
+        {
+          prop: "assignStock",
+          title: "鎸囧畾搴撳瓨",
+          type: "icon",
+          width: 90,
+          icon: "el-icon-s-grid",
+        },
+        // {
+        //   prop: "viewDetail",
+        //   title: "鍑哄簱璇︾粏",
+        //   type: "icon",
+        //   width: 90,
+        //   icon: "el-icon-s-operation",
+        // },
+        {
+          prop: "creater",
+          title: "鍒涘缓浜�",
+          type: "string",
+          width: 90,
+        },
+        {
+          prop: "createDate",
+          title: "鍒涘缓鏃堕棿",
+          type: "datetime",
+          width: 160,
+        },
+        {
+          prop: "modifier",
+          title: "淇敼浜�",
+          type: "string",
+          width: 100,
+        },
+        {
+          prop: "modifyDate",
+          title: "淇敼鏃堕棿",
+          type: "datetime",
+          width: 160,
+        },
+        {
+          prop: "remark",
+          title: "澶囨敞",
+          type: "string",
+        },
+      ],
+      paginations: {
+        sort: "id",
+        order: "desc",
+        Foots: "",
+        total: 0,
+        // 2020.08.29澧炲姞鑷畾涔夊垎椤垫潯澶у皬
+        sizes: [30, 60, 100, 120],
+        size: 30, // 榛樿鍒嗛〉澶у皬
+        Wheres: [],
+        page: 1,
+        rows: 30,
+      },
+      searchFormOptions: [
+        [
+          {
+            title: "鍗曟嵁缂栧彿",
+            field: "allocation_code",
+            type: "like",
+          },
+          {
+            title: "鍗曟嵁绫诲瀷",
+            field: "allocation_type",
+            type: "select",
+            dataKey: "OrderType",
+            data: [],
+          },
+          {
+            title: "鍗曟嵁鐘舵��",
+            field: "allocation_state",
+            type: "select",
+            dataKey: "OrderState",
+            data: [],
+          },
+        ],
+      ],
+      searchFormFields: {
+        allocation_code: "",
+        allocation_type: "",
+        allocation_state: "",
+      },
+      dictionaryList: null,
+    };
+  },
+  methods: {
+    open(row) {
+      this.row = row;
+      this.showDetialBox = true;
+      this.getDictionaryData();
+      this.getData();
+    },
+    getData() {
+      var wheres = [{ name: "orderId", value: this.row.id},{name: "materielCode",value:this.MaterialCode,DisplayType:"text"}];
+      console.log(JSON.stringify(wheres));
+      var param = {
+        page: this.paginations.page,
+        rows: this.paginations.rows,
+        sort: this.paginations.sort,
+        order: this.paginations.order,
+        wheres: JSON.stringify(wheres), // 鏌ヨ鏉′欢锛屾牸寮忎负[{ name: "瀛楁", value: "xx" }]
+      };
+      this.http
+        .post("api/InventoryOutboundOrderDetail/GetPageData", param, "鏌ヨ涓�")
+        .then((x) => {
+          this.tableData = x.rows;
+        });
+    },
+    tableButtonClick(row, column) {
+      if (column.prop == "assignStock") {
+        if (row.overOutQuantity > row.orderQuantity) {
+          this.$message.error("璇ュ崟鎹凡娌℃湁鏁伴噺鍙嚭搴�");
+          return;
+        }
+        this.$refs.child.open(row);
+      }
+    },
+    outbound() {
+      if (this.selection.length === 0) {
+        return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
+      }
+      var keys = this.selection.map((item) => item.id); // 鑾峰彇閫変腑琛岀殑id
+      var param = {
+        "orderIds":keys,
+        "AreaId": this.areaId,
+      }
+      this.http
+        .post("api/InventoryOutboundOrder/GenerateInventoryOutboundTask", param, "鏁版嵁澶勭悊涓�")
+        .then((x) => {
+          if (!x.status) return this.$message.error(x.message);
+          this.$message.success("鎿嶄綔鎴愬姛");
+          this.showDetialBox = false;
+          this.$emit("parentCall", ($vue) => {
+            $vue.getData();
+          });
+        });
+    },
+    setCurrent(row) {
+      this.$refs.singleTable.setCurrentRow(row);
+    },
+    handleCurrentChange(val) {
+      this.currentRow = val;
+    },
+    getButtonEnable(propName, row) {
+      if (propName == "assignStock") {
+        if (
+          row.orderDetailStatus !== 0 &&
+          row.orderDetailStatus !== 60 &&
+          row.orderDetailStatus !== 70
+        ) {
+          return true;
+        } else {
+          return false;
+        }
+      }
+      return false;
+    },
+    parentCall(fun) {
+      if (typeof fun != "function") {
+        return console.log("鎵╁睍缁勪欢闇�瑕佷紶鍏ヤ竴涓洖璋冩柟娉曟墠鑳借幏鍙栫埗绾ue瀵硅薄");
+      }
+      fun(this);
+    },
+    handleRowClick(row) {
+      this.$refs.singleTable.toggleRowSelection(row);
+    },
+    handleSelectionChange(val) {
+      this.selection = val;
+    },
+    getDictionaryData() {
+      if (this.dictionaryList) {
+        return;
+      }
+      var param = [];
+      this.tableColumns.forEach((x) => {
+        if (x.type == "tag" && x.bindKey != "") {
+          param.push(x.bindKey);
+        }
+      });
+      this.http
+        .post("api/Sys_Dictionary/GetVueDictionary", param, "鏌ヨ涓�")
+        .then((x) => {
+          if (x.length > 0) {
+            this.dictionaryList = x;
+          }
+        });
+    },
+    getDictionary(row, column) {
+      if (this.dictionaryList) {
+        var item = this.dictionaryList.find((x) => x.dicNo == column.bindKey);
+        if (item) {
+          var dicItem = item.data.find((x) => x.key == row[column.prop]);
+          if (dicItem) {
+            return dicItem.value;
+          } else {
+            return row[column.prop];
+          }
+        } else {
+          return row[column.prop];
+        }
+      }
+    },
+  },
+};
+</script>
+<style scoped>
+.text-button {
+  border: 0px;
+}
+</style>
+
+<style>
+.text-button:hover {
+  background-color: #f0f9eb !important;
+}
+
+.el-table .warning-row {
+  background: oldlace;
+}
+
+.box-table .el-table tbody tr:hover>td {
+  background-color: #d8e0d4 !important;
+  /* color: #ffffff; */
+}
+
+.box-table .el-table tbody tr.current-row>td {
+  background-color: #f0f9eb !important;
+  /* color: #ffffff; */
+}
+
+.el-table .success-row {
+  background: #f0f9eb;
+}
+
+.box-table .el-table {
+  border: 1px solid #ebeef5;
+}
+
+.search-form {
+  display: flex;
+  padding: 10px;
+  line-height: 34px;
+
+  button {
+    margin-left: 10px;
+  }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/OutboundOrder.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/InventoryOutboundOrder.js"
similarity index 97%
copy from "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/OutboundOrder.js"
copy to "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/InventoryOutboundOrder.js"
index bf6ec35..67161d1 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/OutboundOrder.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/InventoryOutboundOrder.js"
@@ -1,6 +1,6 @@
 
 //姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
-import gridBody from './extend/StockSelect.vue'
+import gridBody from './Inventory/InventoryoutOrderDetail.vue'
 let extension = {
     components: {
       //鏌ヨ鐣岄潰鎵╁睍缁勪欢
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/extend/StockSelect.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Other/OtherStockSelect.vue"
similarity index 90%
copy from "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/extend/StockSelect.vue"
copy to "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Other/OtherStockSelect.vue"
index 48e50fe..c671a66 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/extend/StockSelect.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Other/OtherStockSelect.vue"
@@ -23,17 +23,11 @@
       </div>
       <div style="margin-top:10px;width:400px">
         <el-form ref="form" :model="form" label-width="90px">
-          <el-form-item label="缁堢偣鍦板潃">
-            <el-input type="text" v-model="this.form.TargetAddress"></el-input>
-          </el-form-item>
           <el-form-item label="鍑哄簱鍖哄煙" prop="areaId">
             <el-select v-model="form.areaId" placeholder="璇烽�夋嫨鍑哄簱鍖哄煙">
-              <el-option label="鍫嗗灈鏈哄尯鍩�" value="1" />
               <el-option label="涓�妤糀GV鍑哄簱缂撳瓨鍖�" value="2" />
               <el-option label="涓�妤糀GV绔嬪簱缂撳瓨鍖�" value="3" />
               <el-option label="涓�妤糀GV鍏ュ簱缂撳瓨鍖�" value="4" />
-              <el-option label="浜屾ゼB4-G4缂撳瓨鍖�" value="5" />
-              <el-option label="浜屾ゼB5-G5缂撳瓨鍖�" value="6" />
             </el-select>
           </el-form-item>
         </el-form>
@@ -70,7 +64,7 @@
     return {
       form: {
         TargetAddress: "",
-        areaId: "",
+        areaId: "2",
       },
       row: null,
       showDetialBox: false,
@@ -135,16 +129,14 @@
       }
       this.ids.push(this.row.id);
       var param = {
-        // "orderId": this.row.id,
         "orderIds":this.ids,
         "stockViews": this.selection,
-        "TargetAddress": this.form.TargetAddress,
         "AreaId": this.form.areaId,
       }
       console.log(param);
       this.http
         .post(
-          "api/StockInfo/GenerateOutboundTask",
+          "api/OtherOutboundOrder/GenerateOtherOutboundTask",
           param,
           "鏁版嵁澶勭悊涓�"
         )
@@ -158,14 +150,19 @@
         });
     },
     getData() {
+      var param = {
+        "materielCode":this.row.materielCode,
+        "materielName": this.row.materielName,
+        "demandClassification": this.row.demandClassification,
+      }
       this.http
-        .post(
-          "api/StockInfo/GetStockSelectViews?materielCode=" +
-          this.row.materielCode,
-          null,
-          "鏌ヨ涓�"
-        )
-        .then((x) => {
+        // .post(
+        //   "api/StockInfo/GetStockSelectViews?materielCode=" +
+        //   this.row.materielCode,
+        //   null,
+        //   "鏌ヨ涓�"
+        // )
+        .post("api/StockInfo/GetStockSelectViews",param,"鏌ヨ涓�").then((x) => {
           this.tableData = x;
         });
     },
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Other/OtheroutOrderDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Other/OtheroutOrderDetail.vue"
new file mode 100644
index 0000000..8010939
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Other/OtheroutOrderDetail.vue"
@@ -0,0 +1,387 @@
+<template>
+  <div>
+    <vol-box v-model="showDetialBox" :lazy="true" width="85%" :padding="15" title="鍗曟嵁鏄庣粏淇℃伅">
+      <div class="box-head">
+        <el-alert :closable="false" style="width: 100%">
+          <el-row>
+            <el-col :span="16">
+              <span>宸查�変腑 {{ selection.length }} 椤�</span>
+            </el-col>
+            <el-col :span="8">
+              <el-link type="primary" size="small" style="float: right; height: 20px; margin-right: 10px"
+                @click="outbound">鐩存帴鍑哄簱</el-link>
+              <el-link type="primary" size="small" style="float: right; height: 20px; margin-right: 10px"
+                @click="getData">鍒锋柊</el-link></el-col>
+          </el-row>
+        </el-alert>
+      </div>
+      <div class="search-form">
+        <label style="margin-left: 10px">鐗╂枡缂栧彿锛�</label>
+        <el-input style="width: 310px" v-model="MaterialCode"></el-input>
+        <el-button size="small" type="primary" @click="getData">鎼滅储</el-button>
+
+      </div>
+      <div style="margin-top:10px;width:400px">
+        <el-form ref="form" :model="form" label-width="90px">
+          <el-form-item label="鍑哄簱鍖哄煙" prop="areaId">
+            <el-select v-model="areaId" placeholder="璇烽�夋嫨鍑哄簱鍖哄煙">
+              <el-option label="涓�妤糀GV鍑哄簱缂撳瓨鍖�" value="2" />
+              <el-option label="涓�妤糀GV绔嬪簱缂撳瓨鍖�" value="3" />
+              <el-option label="涓�妤糀GV鍏ュ簱缂撳瓨鍖�" value="4" />
+            </el-select>
+          </el-form-item>
+        </el-form>
+      </div>
+      <div class="box-table" style="margin-top: 1%">
+        <el-table ref="singleTable" :data="tableData" style="width: 100%; height: 630px" highlight-current-row
+          @current-change="handleCurrentChange" height="500px" @row-click="handleRowClick"
+          @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55"> </el-table-column>
+          <el-table-column label="搴忓彿" type="index" fixed="left" width="55" align="center"></el-table-column>
+          <el-table-column v-for="(item, index) in tableColumns.filter((x) => !x.hidden)" :key="index" :prop="item.prop"
+            :label="item.title" :width="item.width" align="center">
+            <template #default="scoped">
+              <div v-if="item.type == 'icon'">
+                <el-tooltip class="item" effect="dark" :content="item.title" placement="bottom"><el-link type="primary"
+                    :disabled="getButtonEnable(item.prop, scoped.row)" @click="tableButtonClick(scoped.row, item)"><i
+                      :class="item.icon" style="font-size: 22px"></i></el-link></el-tooltip>
+              </div>
+
+              <div v-else-if="item.type == 'tag'">
+                <el-tag size="small">
+                  {{ getDictionary(scoped.row, item) }}
+                </el-tag>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+    </vol-box>
+    <stock-select ref="child" @parentCall="parentCall"></stock-select>
+  </div>
+</template>
+<script>
+import VolBox from "@/components/basic/VolBox.vue";
+import VolForm from "@/components/basic/VolForm.vue";
+import StockSelect from "./OtherStockSelect.vue";
+export default {
+  components: { VolBox, VolForm, StockSelect },
+  data() {
+    return {
+      row: null,
+      areaId: "2",
+      showDetialBox: false,
+      flag: false,
+      MaterialCode:"",
+      currentRow: null,
+      selection: [],
+      tableData: [],
+      tableColumns: [
+        {
+          prop: "id",
+          title: "Id",
+          type: "int",
+          width: 90,
+          hidden: true,
+        },
+        {
+          prop: "orderId",
+          title: "鍑哄簱鍗曚富閿�",
+          type: "string",
+          width: 90,
+          hidden: true,
+        },
+        {
+          prop: "materielCode",
+          title: "鐗╂枡缂栧彿",
+          type: "string",
+          width: 150,
+        },
+        {
+          prop: "materielName",
+          title: "鐗╂枡鍚嶇О",
+          type: "string",
+          width: 150,
+        },
+        {
+          prop: "demandClassification",
+          title: "闇�姹傚垎绫�",
+          type: "string",
+          width: 150,
+        },
+        {
+          prop: "orderQuantity",
+          title: "鍗曟嵁鏁伴噺",
+          type: "string",
+          width: 90,
+        },
+        {
+          prop: "lockQuantity",
+          title: "閿佸畾鏁伴噺",
+          type: "int",
+          width: 90,
+          hidden: true,
+        },
+        {
+          prop: "overOutQuantity",
+          title: "宸插嚭鏁伴噺",
+          type: "string",
+          width: 90,
+        },
+        {
+          prop: "orderDetailStatus",
+          title: "璁㈠崟鏄庣粏鐘舵��",
+          type: "tag",
+          width: 120,
+          bindKey: "OrderStateEmun"
+        },
+        {
+          prop: "assignStock",
+          title: "鎸囧畾搴撳瓨",
+          type: "icon",
+          width: 90,
+          icon: "el-icon-s-grid",
+        },
+        // {
+        //   prop: "viewDetail",
+        //   title: "鍑哄簱璇︾粏",
+        //   type: "icon",
+        //   width: 90,
+        //   icon: "el-icon-s-operation",
+        // },
+        {
+          prop: "creater",
+          title: "鍒涘缓浜�",
+          type: "string",
+          width: 90,
+        },
+        {
+          prop: "createDate",
+          title: "鍒涘缓鏃堕棿",
+          type: "datetime",
+          width: 160,
+        },
+        {
+          prop: "modifier",
+          title: "淇敼浜�",
+          type: "string",
+          width: 100,
+        },
+        {
+          prop: "modifyDate",
+          title: "淇敼鏃堕棿",
+          type: "datetime",
+          width: 160,
+        },
+        {
+          prop: "remark",
+          title: "澶囨敞",
+          type: "string",
+        },
+      ],
+      paginations: {
+        sort: "id",
+        order: "desc",
+        Foots: "",
+        total: 0,
+        // 2020.08.29澧炲姞鑷畾涔夊垎椤垫潯澶у皬
+        sizes: [30, 60, 100, 120],
+        size: 30, // 榛樿鍒嗛〉澶у皬
+        Wheres: [],
+        page: 1,
+        rows: 30,
+      },
+      searchFormOptions: [
+        [
+          {
+            title: "鍗曟嵁缂栧彿",
+            field: "allocation_code",
+            type: "like",
+          },
+          {
+            title: "鍗曟嵁绫诲瀷",
+            field: "allocation_type",
+            type: "select",
+            dataKey: "OrderType",
+            data: [],
+          },
+          {
+            title: "鍗曟嵁鐘舵��",
+            field: "allocation_state",
+            type: "select",
+            dataKey: "OrderState",
+            data: [],
+          },
+        ],
+      ],
+      searchFormFields: {
+        allocation_code: "",
+        allocation_type: "",
+        allocation_state: "",
+      },
+      dictionaryList: null,
+    };
+  },
+  methods: {
+    open(row) {
+      this.row = row;
+      this.showDetialBox = true;
+      this.getDictionaryData();
+      this.getData();
+    },
+    getData() {
+      var wheres = [{ name: "orderId", value: this.row.id},{name: "materielCode",value:this.MaterialCode,DisplayType:"text"}];
+      console.log(JSON.stringify(wheres));
+      var param = {
+        page: this.paginations.page,
+        rows: this.paginations.rows,
+        sort: this.paginations.sort,
+        order: this.paginations.order,
+        wheres: JSON.stringify(wheres), // 鏌ヨ鏉′欢锛屾牸寮忎负[{ name: "瀛楁", value: "xx" }]
+      };
+      this.http
+        .post("api/OtherOutboundOrderDetail/GetPageData", param, "鏌ヨ涓�")
+        .then((x) => {
+          this.tableData = x.rows;
+        });
+    },
+    tableButtonClick(row, column) {
+      if (column.prop == "assignStock") {
+        if (row.overOutQuantity > row.orderQuantity) {
+          this.$message.error("璇ュ崟鎹凡娌℃湁鏁伴噺鍙嚭搴�");
+          return;
+        }
+        this.$refs.child.open(row);
+      }
+    },
+    outbound() {
+      if (this.selection.length === 0) {
+        return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
+      }
+      var keys = this.selection.map((item) => item.id); // 鑾峰彇閫変腑琛岀殑id
+      var param = {
+        "orderIds":keys,
+        "AreaId": this.areaId,
+      }
+      this.http
+        .post("api/OtherOutboundOrder/GenerateOtherOutboundTask", param, "鏁版嵁澶勭悊涓�")
+        .then((x) => {
+          if (!x.status) return this.$message.error(x.message);
+          this.$message.success("鎿嶄綔鎴愬姛");
+          this.showDetialBox = false;
+          this.$emit("parentCall", ($vue) => {
+            $vue.getData();
+          });
+        });
+    },
+    setCurrent(row) {
+      this.$refs.singleTable.setCurrentRow(row);
+    },
+    handleCurrentChange(val) {
+      this.currentRow = val;
+    },
+    getButtonEnable(propName, row) {
+      if (propName == "assignStock") {
+        if (
+          row.orderDetailStatus !== 0 &&
+          row.orderDetailStatus !== 60 &&
+          row.orderDetailStatus !== 70
+        ) {
+          return true;
+        } else {
+          return false;
+        }
+      }
+      return false;
+    },
+    parentCall(fun) {
+      if (typeof fun != "function") {
+        return console.log("鎵╁睍缁勪欢闇�瑕佷紶鍏ヤ竴涓洖璋冩柟娉曟墠鑳借幏鍙栫埗绾ue瀵硅薄");
+      }
+      fun(this);
+    },
+    handleRowClick(row) {
+      this.$refs.singleTable.toggleRowSelection(row);
+    },
+    handleSelectionChange(val) {
+      this.selection = val;
+    },
+    getDictionaryData() {
+      if (this.dictionaryList) {
+        return;
+      }
+      var param = [];
+      this.tableColumns.forEach((x) => {
+        if (x.type == "tag" && x.bindKey != "") {
+          param.push(x.bindKey);
+        }
+      });
+      this.http
+        .post("api/Sys_Dictionary/GetVueDictionary", param, "鏌ヨ涓�")
+        .then((x) => {
+          if (x.length > 0) {
+            this.dictionaryList = x;
+          }
+        });
+    },
+    getDictionary(row, column) {
+      if (this.dictionaryList) {
+        var item = this.dictionaryList.find((x) => x.dicNo == column.bindKey);
+        if (item) {
+          var dicItem = item.data.find((x) => x.key == row[column.prop]);
+          if (dicItem) {
+            return dicItem.value;
+          } else {
+            return row[column.prop];
+          }
+        } else {
+          return row[column.prop];
+        }
+      }
+    },
+  },
+};
+</script>
+<style scoped>
+.text-button {
+  border: 0px;
+}
+</style>
+
+<style>
+.text-button:hover {
+  background-color: #f0f9eb !important;
+}
+
+.el-table .warning-row {
+  background: oldlace;
+}
+
+.box-table .el-table tbody tr:hover>td {
+  background-color: #d8e0d4 !important;
+  /* color: #ffffff; */
+}
+
+.box-table .el-table tbody tr.current-row>td {
+  background-color: #f0f9eb !important;
+  /* color: #ffffff; */
+}
+
+.el-table .success-row {
+  background: #f0f9eb;
+}
+
+.box-table .el-table {
+  border: 1px solid #ebeef5;
+}
+
+.search-form {
+  display: flex;
+  padding: 10px;
+  line-height: 34px;
+
+  button {
+    margin-left: 10px;
+  }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/OutboundOrder.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/OtherOutboundOrder.js"
similarity index 97%
copy from "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/OutboundOrder.js"
copy to "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/OtherOutboundOrder.js"
index bf6ec35..c2b1dd5 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/OutboundOrder.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/OtherOutboundOrder.js"
@@ -1,6 +1,6 @@
 
 //姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
-import gridBody from './extend/StockSelect.vue'
+import gridBody from './Other/OtheroutOrderDetail.vue'
 let extension = {
     components: {
       //鏌ヨ鐣岄潰鎵╁睍缁勪欢
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/extend/StockSelect.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Production/ProductionStockSelect.vue"
similarity index 90%
copy from "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/extend/StockSelect.vue"
copy to "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Production/ProductionStockSelect.vue"
index 48e50fe..4eb924b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/extend/StockSelect.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Production/ProductionStockSelect.vue"
@@ -23,17 +23,11 @@
       </div>
       <div style="margin-top:10px;width:400px">
         <el-form ref="form" :model="form" label-width="90px">
-          <el-form-item label="缁堢偣鍦板潃">
-            <el-input type="text" v-model="this.form.TargetAddress"></el-input>
-          </el-form-item>
           <el-form-item label="鍑哄簱鍖哄煙" prop="areaId">
             <el-select v-model="form.areaId" placeholder="璇烽�夋嫨鍑哄簱鍖哄煙">
-              <el-option label="鍫嗗灈鏈哄尯鍩�" value="1" />
               <el-option label="涓�妤糀GV鍑哄簱缂撳瓨鍖�" value="2" />
               <el-option label="涓�妤糀GV绔嬪簱缂撳瓨鍖�" value="3" />
               <el-option label="涓�妤糀GV鍏ュ簱缂撳瓨鍖�" value="4" />
-              <el-option label="浜屾ゼB4-G4缂撳瓨鍖�" value="5" />
-              <el-option label="浜屾ゼB5-G5缂撳瓨鍖�" value="6" />
             </el-select>
           </el-form-item>
         </el-form>
@@ -70,7 +64,7 @@
     return {
       form: {
         TargetAddress: "",
-        areaId: "",
+        areaId: "2",
       },
       row: null,
       showDetialBox: false,
@@ -135,16 +129,13 @@
       }
       this.ids.push(this.row.id);
       var param = {
-        // "orderId": this.row.id,
         "orderIds":this.ids,
         "stockViews": this.selection,
-        "TargetAddress": this.form.TargetAddress,
         "AreaId": this.form.areaId,
       }
-      console.log(param);
       this.http
         .post(
-          "api/StockInfo/GenerateOutboundTask",
+          "api/ProductionOutboundOrder/GeneratetProductOutboundTask",
           param,
           "鏁版嵁澶勭悊涓�"
         )
@@ -158,14 +149,13 @@
         });
     },
     getData() {
+      var param = {
+        "materielCode":this.row.materielCode,
+        "materielName": this.row.materielName,
+        "demandClassification": this.row.demandClassification,
+      }
       this.http
-        .post(
-          "api/StockInfo/GetStockSelectViews?materielCode=" +
-          this.row.materielCode,
-          null,
-          "鏌ヨ涓�"
-        )
-        .then((x) => {
+        .post("api/StockInfo/GetStockSelectViews",param,"鏌ヨ涓�").then((x) => {
           this.tableData = x;
         });
     },
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Production/ProductionoutOrderDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Production/ProductionoutOrderDetail.vue"
new file mode 100644
index 0000000..2955ebd
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/Production/ProductionoutOrderDetail.vue"
@@ -0,0 +1,387 @@
+<template>
+  <div>
+    <vol-box v-model="showDetialBox" :lazy="true" width="85%" :padding="15" title="鍗曟嵁鏄庣粏淇℃伅">
+      <div class="box-head">
+        <el-alert :closable="false" style="width: 100%">
+          <el-row>
+            <el-col :span="16">
+              <span>宸查�変腑 {{ selection.length }} 椤�</span>
+            </el-col>
+            <el-col :span="8">
+              <el-link type="primary" size="small" style="float: right; height: 20px; margin-right: 10px"
+                @click="outbound">鐩存帴鍑哄簱</el-link>
+              <el-link type="primary" size="small" style="float: right; height: 20px; margin-right: 10px"
+                @click="getData">鍒锋柊</el-link></el-col>
+          </el-row>
+        </el-alert>
+      </div>
+      <div class="search-form">
+        <label style="margin-left: 10px">鐗╂枡缂栧彿锛�</label>
+        <el-input style="width: 310px" v-model="MaterialCode"></el-input>
+        <el-button size="small" type="primary" @click="getData">鎼滅储</el-button>
+
+      </div>
+      <div style="margin-top:10px;width:400px">
+        <el-form ref="form" :model="form" label-width="90px">
+          <el-form-item label="鍑哄簱鍖哄煙" prop="areaId">
+            <el-select v-model="areaId" placeholder="璇烽�夋嫨鍑哄簱鍖哄煙">
+              <el-option label="涓�妤糀GV鍑哄簱缂撳瓨鍖�" value="2" />
+              <el-option label="涓�妤糀GV绔嬪簱缂撳瓨鍖�" value="3" />
+              <el-option label="涓�妤糀GV鍏ュ簱缂撳瓨鍖�" value="4" />
+            </el-select>
+          </el-form-item>
+        </el-form>
+      </div>
+      <div class="box-table" style="margin-top: 1%">
+        <el-table ref="singleTable" :data="tableData" style="width: 100%; height: 630px" highlight-current-row
+          @current-change="handleCurrentChange" height="500px" @row-click="handleRowClick"
+          @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55"> </el-table-column>
+          <el-table-column label="搴忓彿" type="index" fixed="left" width="55" align="center"></el-table-column>
+          <el-table-column v-for="(item, index) in tableColumns.filter((x) => !x.hidden)" :key="index" :prop="item.prop"
+            :label="item.title" :width="item.width" align="center">
+            <template #default="scoped">
+              <div v-if="item.type == 'icon'">
+                <el-tooltip class="item" effect="dark" :content="item.title" placement="bottom"><el-link type="primary"
+                    :disabled="getButtonEnable(item.prop, scoped.row)" @click="tableButtonClick(scoped.row, item)"><i
+                      :class="item.icon" style="font-size: 22px"></i></el-link></el-tooltip>
+              </div>
+
+              <div v-else-if="item.type == 'tag'">
+                <el-tag size="small">
+                  {{ getDictionary(scoped.row, item) }}
+                </el-tag>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+    </vol-box>
+    <stock-select ref="child" @parentCall="parentCall"></stock-select>
+  </div>
+</template>
+<script>
+import VolBox from "@/components/basic/VolBox.vue";
+import VolForm from "@/components/basic/VolForm.vue";
+import StockSelect from "./ProductionStockSelect.vue";
+export default {
+  components: { VolBox, VolForm, StockSelect },
+  data() {
+    return {
+      row: null,
+      areaId: "2",
+      showDetialBox: false,
+      flag: false,
+      MaterialCode:"",
+      currentRow: null,
+      selection: [],
+      tableData: [],
+      tableColumns: [
+        {
+          prop: "id",
+          title: "Id",
+          type: "int",
+          width: 90,
+          hidden: true,
+        },
+        {
+          prop: "orderId",
+          title: "鍑哄簱鍗曚富閿�",
+          type: "string",
+          width: 90,
+          hidden: true,
+        },
+        {
+          prop: "materielCode",
+          title: "鐗╂枡缂栧彿",
+          type: "string",
+          width: 150,
+        },
+        {
+          prop: "materielName",
+          title: "鐗╂枡鍚嶇О",
+          type: "string",
+          width: 150,
+        },
+        {
+          prop: "demandClassification",
+          title: "闇�姹傚垎绫�",
+          type: "string",
+          width: 150,
+        },
+        {
+          prop: "orderQuantity",
+          title: "鍗曟嵁鏁伴噺",
+          type: "string",
+          width: 90,
+        },
+        {
+          prop: "lockQuantity",
+          title: "閿佸畾鏁伴噺",
+          type: "int",
+          width: 90,
+          hidden: true,
+        },
+        {
+          prop: "overOutQuantity",
+          title: "宸插嚭鏁伴噺",
+          type: "string",
+          width: 90,
+        },
+        {
+          prop: "orderDetailStatus",
+          title: "璁㈠崟鏄庣粏鐘舵��",
+          type: "tag",
+          width: 120,
+          bindKey: "OrderStateEmun"
+        },
+        {
+          prop: "assignStock",
+          title: "鎸囧畾搴撳瓨",
+          type: "icon",
+          width: 90,
+          icon: "el-icon-s-grid",
+        },
+        // {
+        //   prop: "viewDetail",
+        //   title: "鍑哄簱璇︾粏",
+        //   type: "icon",
+        //   width: 90,
+        //   icon: "el-icon-s-operation",
+        // },
+        {
+          prop: "creater",
+          title: "鍒涘缓浜�",
+          type: "string",
+          width: 90,
+        },
+        {
+          prop: "createDate",
+          title: "鍒涘缓鏃堕棿",
+          type: "datetime",
+          width: 160,
+        },
+        {
+          prop: "modifier",
+          title: "淇敼浜�",
+          type: "string",
+          width: 100,
+        },
+        {
+          prop: "modifyDate",
+          title: "淇敼鏃堕棿",
+          type: "datetime",
+          width: 160,
+        },
+        {
+          prop: "remark",
+          title: "澶囨敞",
+          type: "string",
+        },
+      ],
+      paginations: {
+        sort: "id",
+        order: "desc",
+        Foots: "",
+        total: 0,
+        // 2020.08.29澧炲姞鑷畾涔夊垎椤垫潯澶у皬
+        sizes: [30, 60, 100, 120],
+        size: 30, // 榛樿鍒嗛〉澶у皬
+        Wheres: [],
+        page: 1,
+        rows: 30,
+      },
+      searchFormOptions: [
+        [
+          {
+            title: "鍗曟嵁缂栧彿",
+            field: "allocation_code",
+            type: "like",
+          },
+          {
+            title: "鍗曟嵁绫诲瀷",
+            field: "allocation_type",
+            type: "select",
+            dataKey: "OrderType",
+            data: [],
+          },
+          {
+            title: "鍗曟嵁鐘舵��",
+            field: "allocation_state",
+            type: "select",
+            dataKey: "OrderState",
+            data: [],
+          },
+        ],
+      ],
+      searchFormFields: {
+        allocation_code: "",
+        allocation_type: "",
+        allocation_state: "",
+      },
+      dictionaryList: null,
+    };
+  },
+  methods: {
+    open(row) {
+      this.row = row;
+      this.showDetialBox = true;
+      this.getDictionaryData();
+      this.getData();
+    },
+    getData() {
+      var wheres = [{ name: "orderId", value: this.row.id},{name: "materielCode",value:this.MaterialCode,DisplayType:"text"}];
+      console.log(JSON.stringify(wheres));
+      var param = {
+        page: this.paginations.page,
+        rows: this.paginations.rows,
+        sort: this.paginations.sort,
+        order: this.paginations.order,
+        wheres: JSON.stringify(wheres), // 鏌ヨ鏉′欢锛屾牸寮忎负[{ name: "瀛楁", value: "xx" }]
+      };
+      this.http
+        .post("api/ProductionOutboundOrderDetail/GetPageData", param, "鏌ヨ涓�")
+        .then((x) => {
+          this.tableData = x.rows;
+        });
+    },
+    tableButtonClick(row, column) {
+      if (column.prop == "assignStock") {
+        if (row.overOutQuantity > row.orderQuantity) {
+          this.$message.error("璇ュ崟鎹凡娌℃湁鏁伴噺鍙嚭搴�");
+          return;
+        }
+        this.$refs.child.open(row);
+      }
+    },
+    outbound() {
+      if (this.selection.length === 0) {
+        return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
+      }
+      var keys = this.selection.map((item) => item.id); // 鑾峰彇閫変腑琛岀殑id
+      var param = {
+        "orderIds":keys,
+        "AreaId": this.areaId,
+      }
+      this.http
+        .post("api/ProductionOutboundOrder/GeneratetProductOutboundTask", param, "鏁版嵁澶勭悊涓�")
+        .then((x) => {
+          if (!x.status) return this.$message.error(x.message);
+          this.$message.success("鎿嶄綔鎴愬姛");
+          this.showDetialBox = false;
+          this.$emit("parentCall", ($vue) => {
+            $vue.getData();
+          });
+        });
+    },
+    setCurrent(row) {
+      this.$refs.singleTable.setCurrentRow(row);
+    },
+    handleCurrentChange(val) {
+      this.currentRow = val;
+    },
+    getButtonEnable(propName, row) {
+      if (propName == "assignStock") {
+        if (
+          row.orderDetailStatus !== 0 &&
+          row.orderDetailStatus !== 60 &&
+          row.orderDetailStatus !== 70
+        ) {
+          return true;
+        } else {
+          return false;
+        }
+      }
+      return false;
+    },
+    parentCall(fun) {
+      if (typeof fun != "function") {
+        return console.log("鎵╁睍缁勪欢闇�瑕佷紶鍏ヤ竴涓洖璋冩柟娉曟墠鑳借幏鍙栫埗绾ue瀵硅薄");
+      }
+      fun(this);
+    },
+    handleRowClick(row) {
+      this.$refs.singleTable.toggleRowSelection(row);
+    },
+    handleSelectionChange(val) {
+      this.selection = val;
+    },
+    getDictionaryData() {
+      if (this.dictionaryList) {
+        return;
+      }
+      var param = [];
+      this.tableColumns.forEach((x) => {
+        if (x.type == "tag" && x.bindKey != "") {
+          param.push(x.bindKey);
+        }
+      });
+      this.http
+        .post("api/Sys_Dictionary/GetVueDictionary", param, "鏌ヨ涓�")
+        .then((x) => {
+          if (x.length > 0) {
+            this.dictionaryList = x;
+          }
+        });
+    },
+    getDictionary(row, column) {
+      if (this.dictionaryList) {
+        var item = this.dictionaryList.find((x) => x.dicNo == column.bindKey);
+        if (item) {
+          var dicItem = item.data.find((x) => x.key == row[column.prop]);
+          if (dicItem) {
+            return dicItem.value;
+          } else {
+            return row[column.prop];
+          }
+        } else {
+          return row[column.prop];
+        }
+      }
+    },
+  },
+};
+</script>
+<style scoped>
+.text-button {
+  border: 0px;
+}
+</style>
+
+<style>
+.text-button:hover {
+  background-color: #f0f9eb !important;
+}
+
+.el-table .warning-row {
+  background: oldlace;
+}
+
+.box-table .el-table tbody tr:hover>td {
+  background-color: #d8e0d4 !important;
+  /* color: #ffffff; */
+}
+
+.box-table .el-table tbody tr.current-row>td {
+  background-color: #f0f9eb !important;
+  /* color: #ffffff; */
+}
+
+.el-table .success-row {
+  background: #f0f9eb;
+}
+
+.box-table .el-table {
+  border: 1px solid #ebeef5;
+}
+
+.search-form {
+  display: flex;
+  padding: 10px;
+  line-height: 34px;
+
+  button {
+    margin-left: 10px;
+  }
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/OutboundOrder.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/ProductionOutboundOrder.js"
similarity index 97%
rename from "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/OutboundOrder.js"
rename to "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/ProductionOutboundOrder.js"
index bf6ec35..7fa28f3 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/OutboundOrder.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/ProductionOutboundOrder.js"
@@ -1,6 +1,6 @@
 
 //姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
-import gridBody from './extend/StockSelect.vue'
+import gridBody from './Production/ProductionoutOrderDetail.vue'
 let extension = {
     components: {
       //鏌ヨ鐣岄潰鎵╁睍缁勪欢
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/extend/HandOutbound.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/extend/HandOutbound.vue"
deleted file mode 100644
index d6f43cd..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/extend/HandOutbound.vue"
+++ /dev/null
@@ -1,84 +0,0 @@
-<template>
-  <vol-box v-model="show" title="鐩存帴鍑哄簱" :width="800" :height="600">
-    <template #content>
-      <el-form ref="form" :model="form" label-width="90px">
-          <el-form-item label="鍑哄簱绔欏彴" prop="areaId">
-            <el-select v-model="form.areaId" placeholder="璇烽�夋嫨鍑哄簱鍖哄煙">
-              <el-option label="鍫嗗灈鏈哄尯鍩�" value="1" />
-              <el-option label="涓�妤糀GV鍑哄簱缂撳瓨鍖�" value="2" />
-              <el-option label="涓�妤糀GV绔嬪簱缂撳瓨鍖�" value="3" />
-              <el-option label="涓�妤糀GV鍏ュ簱缂撳瓨鍖�" value="4" />
-              <el-option label="浜屾ゼB4-G4缂撳瓨鍖�" value="5" />
-              <el-option label="浜屾ゼB5-G5缂撳瓨鍖�" value="6" />
-            </el-select>
-          </el-form-item>
-        </el-form>
-    </template>
-    <template #footer>
-      <div>
-        <el-button type="danger" size="small" plain @click="submit">
-          <i class="el-icon-check">鍑哄簱</i>
-        </el-button>
-        <el-button size="small" type="primary" plain @click="() => {
-            this.show = false;
-          }
-          ">
-          <i class="el-icon-close">鍏抽棴</i>
-        </el-button>
-      </div>
-    </template>
-  </vol-box>
-</template>
-
-<script>
-import VolBox from "@/components/basic/VolBox.vue";
-export default {
-  components: {
-    "vol-box": VolBox,
-  },
-  data() {
-    return {
-      form:{
-        TargetAddress:"",
-        locationID:"",
-        SCNo:"",
-        palletCode:""
-      },
-      show: false,
-    };
-  },
-  methods: {
-    open(locationID,palletCode) {
-      this.show = true;
-      this.form.locationID=locationID;
-      this.form.palletCode=palletCode;
-    },
-    submit() {
-      this.$emit("parentCall", ($vue) => {
-        if (
-          !this.form.TargetAddress ||
-          !this.form.locationID ||
-          !this.form.SCNo ||
-          this.form.TargetAddress==""||
-          this.form.locationID==""||
-          this.form.SCNo==""
-        ) {
-          this.$message.error("鍙傛暟閿欒");
-          return;
-        }
-        this.http.post("api/Dt_LocationInfo/HandOutbound", this.form, "").then((x) => {
-          if (!x.status) {
-            this.$message.error(x.message);
-          } else {
-            this.$Message.success("鏂板缓鍑哄簱浠诲姟");
-            // $vue.success("鎴愬姛.");
-            this.show = false;
-            $vue.refresh();
-          }
-        });
-      });
-    },
-  },
-
-};
-</script>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/router/tables.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/router/tables.js"
index b38473e..94717ee 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/router/tables.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/router/tables.js"
@@ -101,9 +101,27 @@
     meta: {
     }
   },{
-    path: '/OutboundOrder',
-    name: 'OutboundOrder',
-    component: () => import('@/views/widesea_wms/Order/OutboundOrder.vue'),
+    path: '/OtherOutboundOrder',
+    name: 'OtherOutboundOrder',
+    component: () => import('@/views/widesea_wms/Order/OtherOutboundOrder.vue'),
+    meta: {
+    }
+  },{
+    path: '/AllocateOutboundOrder',
+    name: 'AllocateOutboundOrder',
+    component: () => import('@/views/widesea_wms/Order/AllocateOutboundOrder.vue'),
+    meta: {
+    }
+  },{
+    path: '/InventoryOutboundOrder',
+    name: 'InventoryOutboundOrder',
+    component: () => import('@/views/widesea_wms/Order/InventoryOutboundOrder.vue'),
+    meta: {
+    }
+  },{
+    path: '/ProductionOutboundOrder',
+    name: 'ProductionOutboundOrder',
+    component: () => import('@/views/widesea_wms/Order/ProductionOutboundOrder.vue'),
     meta: {
     }
   }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/Order/AllocateOutboundOrder.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/Order/AllocateOutboundOrder.vue"
new file mode 100644
index 0000000..800279d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/Order/AllocateOutboundOrder.vue"
@@ -0,0 +1,201 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/stock/Dt_BillGroupStock.js姝ゅ缂栧啓
+ -->
+
+<template>
+    <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+        :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+        :table="table" :extend="extend">
+    </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/Order/OtherOutboundOrder.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+    setup() {
+        const table = ref({
+            key: 'id',
+            footer: "Foots",
+            cnName: '璋冩嫧鍑哄簱鍗曟嵁淇℃伅',
+            name: '',
+            url: "/AllocateOutboundOrder/",
+            sortName: "createDate"
+        });
+        const editFormFields = ref({
+            orderNo:"",
+            upperOrderNo:"",
+            orderType:"",
+            orderStatus:"",
+            createType:"",
+        });
+        const editFormOptions = ref([
+        ]);
+        const searchFormFields = ref({});
+        const searchFormOptions = ref([
+            [
+                { "title": "涓婃父鍗曞彿", "field": "upperOrderNo", "type": "text" },
+                { "title": "璁㈠崟缂栧彿", "field": "orderNo", "type": "text" },
+                { "title": "鍗曟嵁绫诲瀷", "field": "orderType", type: "select", dataKey: "OrderTypeEmun", data: [] },
+
+            ],
+            [
+                { "title": "鍗曟嵁鐘舵��", "field": "orderStatus", type: "select", dataKey: "OrderStateEmun", data: [] },
+                { "title": "鍒涘缓绫诲瀷", "field": "createType", type: "select", dataKey: "OrderCreateTypeEmun", data: [] },
+            ],
+        ]);
+        const columns = ref(
+            [
+            { field: 'id', title: '鍗曟嵁id', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+            { field: 'orderNo', title: '鍗曟嵁缂栧彿', type: 'string', width: 150, align: 'left', },
+            { field: 'upperOrderNo', title: '涓婃父鍗曟嵁缂栧彿', type: 'string', width: 150, align: 'left', },
+            { field: 'orderType', title: '鍗曟嵁绫诲瀷', type: 'int', width: 120, align: 'left', bind: { key: "OrderTypeEmun", data: [] } },
+            { field: 'orderStatus', title: '鍗曟嵁鐘舵��', type: 'int', width: 90, align: 'left', bind: { key: "OrderStateEmun", data: [] } },
+            { field: 'createType', title: '鍒涘缓绫诲瀷', type: 'int', width: 120, align: 'left', bind: { key: "OrderCreateTypeEmun", data: [] } },
+            { field: 'remark', title: '澶囨敞', type: 'string', width: 60, align: 'left', hidden: true},
+            { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, align: 'left', hidden: true },
+            { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', },
+            { field: 'modifier', title: '鏈�鍚庝慨鏀逛汉', type: 'string', sort: true, width: 100, align: 'left' },
+            ]
+        );
+        // const detail = ref({
+        //     cnName: "#detailCnName",
+        //     table: "#detailTable",
+        //     columns: [],
+        //     sortName: "",
+        //     key: ""
+        // });
+        const detail = ref({
+            cnName: "璋冩嫧鍑哄簱鍗曟嵁鏄庣粏淇℃伅",
+            table: "StockInfoDetails",
+            columns: [
+                {
+                    field: "id",
+                    title: "Id",
+                    type: "int",
+                    width: 90,
+                    hidden: true,
+                    readonly: true,
+                    require: true,
+                    align: "left",
+                },
+                {
+                    field: "orderId",
+                    title: "鍑哄簱鍗曟嵁涓婚敭",
+                    type: "string",
+                    width: 90,
+                    align: "left",
+                    hidden: true,
+                },
+                {
+                    field: "materielCode",
+                    title: "鐗╂枡缂栧彿",
+                    type: "string",
+                    width: 150,
+                    align: "left",
+                    edit: { type: "string" },
+                },
+                {
+                    field: "materielName",
+                    title: "鐗╂枡鍚嶇О",
+                    type: "string",
+                    width: 150,
+                    align: "left",
+                    edit: { type: "string" },
+                },
+                {
+                    field: "demandClassification",
+                    title: "闇�姹傚垎绫�",
+                    type: "decimal",
+                    width: 180,
+                    align: "left",
+                    edit: { type: "string" },
+                },
+                {
+                    field: "orderQuantity",
+                    title: "鍗曟嵁鏁伴噺",
+                    type: "string",
+                    width: 120,
+                    align: "left",
+                    edit: { type: "string" },
+                },
+                {
+                    field: "overOutQuantity",
+                    title: "宸插嚭搴撴暟閲�",
+                    type: "int",
+                    width: 90,
+                    align: "left",
+                },
+                {
+                    field: "lockQuantity",
+                    title: "閿佸畾鏁伴噺",
+                    type: "int",
+                    width: 90,
+                    align: "left",
+                    hidden: true,
+                },
+                {
+                    field: "orderDetailStatus",
+                    title: "鍗曟嵁鏄庣粏鐘舵��",
+                    type: "string",
+                    width: 120,
+                    align: "left",
+                    bind: { key: "OrderStateEmun", data: [] },
+                },
+                {
+                    field: "creater",
+                    title: "鍒涘缓浜�",
+                    type: "string",
+                    width: 90,
+                    align: "left",
+                },
+                {
+                    field: "createDate",
+                    title: "鍒涘缓鏃堕棿",
+                    type: "datetime",
+                    width: 160,
+                    align: "left",
+                },
+                {
+                    field: "modifier",
+                    title: "淇敼浜�",
+                    type: "string",
+                    width: 100,
+                    align: "left",
+                    hidden: true,
+                },
+                {
+                    field: "modifyDate",
+                    title: "淇敼鏃堕棿",
+                    type: "datetime",
+                    width: 160,
+                    align: "left",
+                    hidden: true,
+                },
+                {
+                    field: "remark",
+                    title: "澶囨敞",
+                    type: "string",
+                    width: 100,
+                    align: "left",
+                    hidden: true,
+                },
+            ],
+            sortName: "id",
+            key: "id",
+        });
+        return {
+            table,
+            extend,
+            editFormFields,
+            editFormOptions,
+            searchFormFields,
+            searchFormOptions,
+            columns,
+            detail,
+        };
+    },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/Order/InventoryOutboundOrder.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/Order/InventoryOutboundOrder.vue"
new file mode 100644
index 0000000..8c5c331
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/Order/InventoryOutboundOrder.vue"
@@ -0,0 +1,201 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/stock/Dt_BillGroupStock.js姝ゅ缂栧啓
+ -->
+
+<template>
+    <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+        :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+        :table="table" :extend="extend">
+    </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/Order/InventoryOutboundOrder.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+    setup() {
+        const table = ref({
+            key: 'id',
+            footer: "Foots",
+            cnName: '鐩樼偣鍑哄簱鍗曟嵁淇℃伅',
+            name: '',
+            url: "/InventoryOutboundOrder/",
+            sortName: "createDate"
+        });
+        const editFormFields = ref({
+            orderNo:"",
+            upperOrderNo:"",
+            orderType:"",
+            orderStatus:"",
+            createType:"",
+        });
+        const editFormOptions = ref([
+        ]);
+        const searchFormFields = ref({});
+        const searchFormOptions = ref([
+            [
+                { "title": "涓婃父鍗曞彿", "field": "upperOrderNo", "type": "text" },
+                { "title": "璁㈠崟缂栧彿", "field": "orderNo", "type": "text" },
+                { "title": "鍗曟嵁绫诲瀷", "field": "orderType", type: "select", dataKey: "OrderTypeEmun", data: [] },
+
+            ],
+            [
+                { "title": "鍗曟嵁鐘舵��", "field": "orderStatus", type: "select", dataKey: "OrderStateEmun", data: [] },
+                { "title": "鍒涘缓绫诲瀷", "field": "createType", type: "select", dataKey: "OrderCreateTypeEmun", data: [] },
+            ],
+        ]);
+        const columns = ref(
+            [
+            { field: 'id', title: '鍗曟嵁id', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+            { field: 'orderNo', title: '鍗曟嵁缂栧彿', type: 'string', width: 150, align: 'left', },
+            { field: 'upperOrderNo', title: '涓婃父鍗曟嵁缂栧彿', type: 'string', width: 150, align: 'left', },
+            { field: 'orderType', title: '鍗曟嵁绫诲瀷', type: 'int', width: 120, align: 'left', bind: { key: "OrderTypeEmun", data: [] } },
+            { field: 'orderStatus', title: '鍗曟嵁鐘舵��', type: 'int', width: 90, align: 'left', bind: { key: "OrderStateEmun", data: [] } },
+            { field: 'createType', title: '鍒涘缓绫诲瀷', type: 'int', width: 120, align: 'left', bind: { key: "OrderCreateTypeEmun", data: [] } },
+            { field: 'remark', title: '澶囨敞', type: 'string', width: 60, align: 'left', hidden: true},
+            { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, align: 'left', hidden: true },
+            { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', },
+            { field: 'modifier', title: '鏈�鍚庝慨鏀逛汉', type: 'string', sort: true, width: 100, align: 'left' },
+            ]
+        );
+        // const detail = ref({
+        //     cnName: "#detailCnName",
+        //     table: "#detailTable",
+        //     columns: [],
+        //     sortName: "",
+        //     key: ""
+        // });
+        const detail = ref({
+            cnName: "鐩樼偣鍑哄簱鍗曟嵁鏄庣粏淇℃伅",
+            table: "StockInfoDetails",
+            columns: [
+                {
+                    field: "id",
+                    title: "Id",
+                    type: "int",
+                    width: 90,
+                    hidden: true,
+                    readonly: true,
+                    require: true,
+                    align: "left",
+                },
+                {
+                    field: "orderId",
+                    title: "鍑哄簱鍗曟嵁涓婚敭",
+                    type: "string",
+                    width: 90,
+                    align: "left",
+                    hidden: true,
+                },
+                {
+                    field: "materielCode",
+                    title: "鐗╂枡缂栧彿",
+                    type: "string",
+                    width: 150,
+                    align: "left",
+                    edit: { type: "string" },
+                },
+                {
+                    field: "materielName",
+                    title: "鐗╂枡鍚嶇О",
+                    type: "string",
+                    width: 150,
+                    align: "left",
+                    edit: { type: "string" },
+                },
+                {
+                    field: "demandClassification",
+                    title: "闇�姹傚垎绫�",
+                    type: "decimal",
+                    width: 180,
+                    align: "left",
+                    edit: { type: "string" },
+                },
+                {
+                    field: "orderQuantity",
+                    title: "鍗曟嵁鏁伴噺",
+                    type: "string",
+                    width: 120,
+                    align: "left",
+                    edit: { type: "string" },
+                },
+                {
+                    field: "overOutQuantity",
+                    title: "宸插嚭搴撴暟閲�",
+                    type: "int",
+                    width: 90,
+                    align: "left",
+                },
+                {
+                    field: "lockQuantity",
+                    title: "閿佸畾鏁伴噺",
+                    type: "int",
+                    width: 90,
+                    align: "left",
+                    hidden: true,
+                },
+                {
+                    field: "orderDetailStatus",
+                    title: "鍗曟嵁鏄庣粏鐘舵��",
+                    type: "string",
+                    width: 120,
+                    align: "left",
+                    bind: { key: "OrderStateEmun", data: [] },
+                },
+                {
+                    field: "creater",
+                    title: "鍒涘缓浜�",
+                    type: "string",
+                    width: 90,
+                    align: "left",
+                },
+                {
+                    field: "createDate",
+                    title: "鍒涘缓鏃堕棿",
+                    type: "datetime",
+                    width: 160,
+                    align: "left",
+                },
+                {
+                    field: "modifier",
+                    title: "淇敼浜�",
+                    type: "string",
+                    width: 100,
+                    align: "left",
+                    hidden: true,
+                },
+                {
+                    field: "modifyDate",
+                    title: "淇敼鏃堕棿",
+                    type: "datetime",
+                    width: 160,
+                    align: "left",
+                    hidden: true,
+                },
+                {
+                    field: "remark",
+                    title: "澶囨敞",
+                    type: "string",
+                    width: 100,
+                    align: "left",
+                    hidden: true,
+                },
+            ],
+            sortName: "id",
+            key: "id",
+        });
+        return {
+            table,
+            extend,
+            editFormFields,
+            editFormOptions,
+            searchFormFields,
+            searchFormOptions,
+            columns,
+            detail,
+        };
+    },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/Order/OtherOutboundOrder.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/Order/OtherOutboundOrder.vue"
new file mode 100644
index 0000000..84441ff
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/Order/OtherOutboundOrder.vue"
@@ -0,0 +1,201 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/stock/Dt_BillGroupStock.js姝ゅ缂栧啓
+ -->
+
+<template>
+    <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+        :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+        :table="table" :extend="extend">
+    </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/Order/OtherOutboundOrder.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+    setup() {
+        const table = ref({
+            key: 'id',
+            footer: "Foots",
+            cnName: '鍏朵粬鍑哄簱鍗曟嵁淇℃伅',
+            name: '',
+            url: "/OtherOutboundOrder/",
+            sortName: "createDate"
+        });
+        const editFormFields = ref({
+            orderNo:"",
+            upperOrderNo:"",
+            orderType:"",
+            orderStatus:"",
+            createType:"",
+        });
+        const editFormOptions = ref([
+        ]);
+        const searchFormFields = ref({});
+        const searchFormOptions = ref([
+            [
+                { "title": "涓婃父鍗曞彿", "field": "upperOrderNo", "type": "text" },
+                { "title": "璁㈠崟缂栧彿", "field": "orderNo", "type": "text" },
+                { "title": "鍗曟嵁绫诲瀷", "field": "orderType", type: "select", dataKey: "OrderTypeEmun", data: [] },
+
+            ],
+            [
+                { "title": "鍗曟嵁鐘舵��", "field": "orderStatus", type: "select", dataKey: "OrderStateEmun", data: [] },
+                { "title": "鍒涘缓绫诲瀷", "field": "createType", type: "select", dataKey: "OrderCreateTypeEmun", data: [] },
+            ],
+        ]);
+        const columns = ref(
+            [
+            { field: 'id', title: '鍗曟嵁id', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+            { field: 'orderNo', title: '鍗曟嵁缂栧彿', type: 'string', width: 150, align: 'left', },
+            { field: 'upperOrderNo', title: '涓婃父鍗曟嵁缂栧彿', type: 'string', width: 150, align: 'left', },
+            { field: 'orderType', title: '鍗曟嵁绫诲瀷', type: 'int', width: 120, align: 'left', bind: { key: "OrderTypeEmun", data: [] } },
+            { field: 'orderStatus', title: '鍗曟嵁鐘舵��', type: 'int', width: 90, align: 'left', bind: { key: "OrderStateEmun", data: [] } },
+            { field: 'createType', title: '鍒涘缓绫诲瀷', type: 'int', width: 120, align: 'left', bind: { key: "OrderCreateTypeEmun", data: [] } },
+            { field: 'remark', title: '澶囨敞', type: 'string', width: 60, align: 'left', hidden: true},
+            { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, align: 'left', hidden: true },
+            { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', },
+            { field: 'modifier', title: '鏈�鍚庝慨鏀逛汉', type: 'string', sort: true, width: 100, align: 'left' },
+            ]
+        );
+        // const detail = ref({
+        //     cnName: "#detailCnName",
+        //     table: "#detailTable",
+        //     columns: [],
+        //     sortName: "",
+        //     key: ""
+        // });
+        const detail = ref({
+            cnName: "鍑哄簱鍗曟嵁鏄庣粏淇℃伅",
+            table: "StockInfoDetails",
+            columns: [
+                {
+                    field: "id",
+                    title: "Id",
+                    type: "int",
+                    width: 90,
+                    hidden: true,
+                    readonly: true,
+                    require: true,
+                    align: "left",
+                },
+                {
+                    field: "orderId",
+                    title: "鍑哄簱鍗曟嵁涓婚敭",
+                    type: "string",
+                    width: 90,
+                    align: "left",
+                    hidden: true,
+                },
+                {
+                    field: "materielCode",
+                    title: "鐗╂枡缂栧彿",
+                    type: "string",
+                    width: 150,
+                    align: "left",
+                    edit: { type: "string" },
+                },
+                {
+                    field: "materielName",
+                    title: "鐗╂枡鍚嶇О",
+                    type: "string",
+                    width: 150,
+                    align: "left",
+                    edit: { type: "string" },
+                },
+                {
+                    field: "demandClassification",
+                    title: "闇�姹傚垎绫�",
+                    type: "decimal",
+                    width: 180,
+                    align: "left",
+                    edit: { type: "string" },
+                },
+                {
+                    field: "orderQuantity",
+                    title: "鍗曟嵁鏁伴噺",
+                    type: "string",
+                    width: 120,
+                    align: "left",
+                    edit: { type: "string" },
+                },
+                {
+                    field: "overOutQuantity",
+                    title: "宸插嚭搴撴暟閲�",
+                    type: "int",
+                    width: 90,
+                    align: "left",
+                },
+                {
+                    field: "lockQuantity",
+                    title: "閿佸畾鏁伴噺",
+                    type: "int",
+                    width: 90,
+                    align: "left",
+                    hidden: true,
+                },
+                {
+                    field: "orderDetailStatus",
+                    title: "鍗曟嵁鏄庣粏鐘舵��",
+                    type: "string",
+                    width: 120,
+                    align: "left",
+                    bind: { key: "OrderStateEmun", data: [] },
+                },
+                {
+                    field: "creater",
+                    title: "鍒涘缓浜�",
+                    type: "string",
+                    width: 90,
+                    align: "left",
+                },
+                {
+                    field: "createDate",
+                    title: "鍒涘缓鏃堕棿",
+                    type: "datetime",
+                    width: 160,
+                    align: "left",
+                },
+                {
+                    field: "modifier",
+                    title: "淇敼浜�",
+                    type: "string",
+                    width: 100,
+                    align: "left",
+                    hidden: true,
+                },
+                {
+                    field: "modifyDate",
+                    title: "淇敼鏃堕棿",
+                    type: "datetime",
+                    width: 160,
+                    align: "left",
+                    hidden: true,
+                },
+                {
+                    field: "remark",
+                    title: "澶囨敞",
+                    type: "string",
+                    width: 100,
+                    align: "left",
+                    hidden: true,
+                },
+            ],
+            sortName: "id",
+            key: "id",
+        });
+        return {
+            table,
+            extend,
+            editFormFields,
+            editFormOptions,
+            searchFormFields,
+            searchFormOptions,
+            columns,
+            detail,
+        };
+    },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/Order/OutboundOrder.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/Order/OutboundOrder.vue"
deleted file mode 100644
index 44d40de..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/Order/OutboundOrder.vue"
+++ /dev/null
@@ -1,217 +0,0 @@
-<!--
-*Author锛歫xx
- *Contact锛�283591387@qq.com
- *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
- *涓氬姟璇峰湪@/extension/widesea_wms/stock/Dt_BillGroupStock.js姝ゅ缂栧啓
- -->
-
-<template>
-    <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
-        :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
-        :table="table" :extend="extend">
-    </view-grid>
-</template>
-<script>
-import extend from "@/extension/widesea_wms/Order/OutboundOrder.js";
-import { ref, defineComponent } from "vue";
-export default defineComponent({
-    setup() {
-        const table = ref({
-            key: 'id',
-            footer: "Foots",
-            cnName: '鍑哄簱鍗曟嵁淇℃伅',
-            name: '',
-            url: "/OutboundOrder/",
-            sortName: "createDate"
-        });
-        const editFormFields = ref({
-            // orderNo: "",
-            orderType: "",
-            materielCode: "",
-            materielName: "",
-            demandClassification: "",
-            orderQuantity: "",
-        });
-        const editFormOptions = ref([
-            [
-                // { "title": "璁㈠崟缂栧彿", "field": "orderNo", "type": "text" },
-                { "title": "鐗╂枡缂栫爜", "field": "materielCode", type: "text", },
-                { "title": "鐗╂枡鍚嶇О", "field": "materielName", type: "text", dataKey: "OrderTypeEmun", data: [] },
-            ],
-            [
-                { "title": "闇�姹傚垎绫�", "field": "demandClassification", "type": "text" },
-                { "title": "鍗曟嵁鍑哄簱鎬婚噺", "field": "orderQuantity", type: "text" },
-                { "title": "鍗曟嵁绫诲瀷", "field": "orderType", type: "select", dataKey: "OrderTypeEmun", data: [] },
-            ]
-        ]);
-        const searchFormFields = ref({});
-        const searchFormOptions = ref([
-            [
-                { "title": "涓婃父鍗曞彿", "field": "upperOrderNo", "type": "text" },
-                { "title": "璁㈠崟缂栧彿", "field": "orderNo", "type": "text" },
-                { "title": "鍗曟嵁绫诲瀷", "field": "orderType", type: "select", dataKey: "OrderTypeEmun", data: [] },
-
-            ],
-            [
-                { "title": "鍗曟嵁鐘舵��", "field": "orderStatus", type: "select", dataKey: "OrderStateEmun", data: [] },
-                { "title": "鍒涘缓绫诲瀷", "field": "createType", type: "select", dataKey: "OrderCreateTypeEmun", data: [] },
-            ],
-        ]);
-        const columns = ref(
-            [
-            { field: 'id', title: '鍗曟嵁id', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
-            { field: 'orderNo', title: '鍗曟嵁缂栧彿', type: 'string', width: 150, align: 'left', },
-            { field: 'upperOrderNo', title: '涓婃父鍗曟嵁缂栧彿', type: 'string', width: 150, align: 'left', },
-            { field: 'materielCode', title: '鐗╂枡缂栫爜', type: 'string', width: 100, align: 'left', },
-            { field: 'materielName', title: '鐗╂枡鍚嶇О', type: 'string', width: 100, align: 'left', },
-            { field: 'demandClassification', title: '闇�姹傚垎绫�', type: 'string', width: 100, align: 'left', },
-            { field: 'orderQuantity', title: '鍗曟嵁鍑哄簱鎬婚噺', type: 'string', width: 100, align: 'left', },
-            { field: 'overOutQuantity', title: '宸插嚭搴撴暟閲�', type: 'string', width: 100, align: 'left', },
-            { field: 'orderType', title: '鍗曟嵁绫诲瀷', type: 'int', width: 120, align: 'left', bind: { key: "OrderTypeEmun", data: [] } },
-            { field: 'orderStatus', title: '鍗曟嵁鐘舵��', type: 'int', width: 90, align: 'left', bind: { key: "OrderStateEmun", data: [] } },
-            { field: 'createType', title: '鍒涘缓绫诲瀷', type: 'int', width: 120, align: 'left', bind: { key: "OrderCreateTypeEmun", data: [] } },
-            { field: 'remark', title: '澶囨敞', type: 'string', width: 60, align: 'left', hidden: true},
-            { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, align: 'left', hidden: true },
-            { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', },
-            { field: 'modifier', title: '鏈�鍚庝慨鏀逛汉', type: 'string', sort: true, width: 100, align: 'left' },
-            ]
-        );
-        const detail = ref({
-            cnName: "#detailCnName",
-            table: "#detailTable",
-            columns: [],
-            sortName: "",
-            key: ""
-        });
-        // const detail = ref({
-        //     cnName: "鍑哄簱鍗曟嵁鏄庣粏淇℃伅",
-        //     table: "StockInfoDetails",
-        //     columns: [
-        //         {
-        //             field: "id",
-        //             title: "Id",
-        //             type: "int",
-        //             width: 90,
-        //             hidden: true,
-        //             readonly: true,
-        //             require: true,
-        //             align: "left",
-        //         },
-        //         {
-        //             field: "orderId",
-        //             title: "鍑哄簱鍗曟嵁涓婚敭",
-        //             type: "string",
-        //             width: 90,
-        //             align: "left",
-        //             hidden: true,
-        //         },
-        //         {
-        //             field: "materielCode",
-        //             title: "鐗╂枡缂栧彿",
-        //             type: "string",
-        //             width: 150,
-        //             align: "left",
-        //             edit: { type: "string" },
-        //         },
-        //         {
-        //             field: "materielName",
-        //             title: "鐗╂枡鍚嶇О",
-        //             type: "string",
-        //             width: 150,
-        //             align: "left",
-        //             edit: { type: "string" },
-        //         },
-        //         {
-        //             field: "demandClassification",
-        //             title: "闇�姹傚垎绫�",
-        //             type: "decimal",
-        //             width: 180,
-        //             align: "left",
-        //             edit: { type: "string" },
-        //         },
-        //         {
-        //             field: "orderQuantity",
-        //             title: "鍗曟嵁鏁伴噺",
-        //             type: "string",
-        //             width: 120,
-        //             align: "left",
-        //             edit: { type: "string" },
-        //         },
-        //         {
-        //             field: "overOutQuantity",
-        //             title: "宸插嚭搴撴暟閲�",
-        //             type: "int",
-        //             width: 90,
-        //             align: "left",
-        //         },
-        //         {
-        //             field: "lockQuantity",
-        //             title: "閿佸畾鏁伴噺",
-        //             type: "int",
-        //             width: 90,
-        //             align: "left",
-        //             hidden: true,
-        //         },
-        //         {
-        //             field: "orderDetailStatus",
-        //             title: "鍗曟嵁鏄庣粏鐘舵��",
-        //             type: "string",
-        //             width: 120,
-        //             align: "left",
-        //             bind: { key: "OrderStateEmun", data: [] },
-        //         },
-        //         {
-        //             field: "creater",
-        //             title: "鍒涘缓浜�",
-        //             type: "string",
-        //             width: 90,
-        //             align: "left",
-        //         },
-        //         {
-        //             field: "createDate",
-        //             title: "鍒涘缓鏃堕棿",
-        //             type: "datetime",
-        //             width: 160,
-        //             align: "left",
-        //         },
-        //         {
-        //             field: "modifier",
-        //             title: "淇敼浜�",
-        //             type: "string",
-        //             width: 100,
-        //             align: "left",
-        //             hidden: true,
-        //         },
-        //         {
-        //             field: "modifyDate",
-        //             title: "淇敼鏃堕棿",
-        //             type: "datetime",
-        //             width: 160,
-        //             align: "left",
-        //             hidden: true,
-        //         },
-        //         {
-        //             field: "remark",
-        //             title: "澶囨敞",
-        //             type: "string",
-        //             width: 100,
-        //             align: "left",
-        //             hidden: true,
-        //         },
-        //     ],
-        //     sortName: "id",
-        //     key: "id",
-        // });
-        return {
-            table,
-            extend,
-            editFormFields,
-            editFormOptions,
-            searchFormFields,
-            searchFormOptions,
-            columns,
-            detail,
-        };
-    },
-});
-</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/Order/ProductionOutboundOrder.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/Order/ProductionOutboundOrder.vue"
new file mode 100644
index 0000000..a533f4e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/widesea_wms/Order/ProductionOutboundOrder.vue"
@@ -0,0 +1,201 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/stock/Dt_BillGroupStock.js姝ゅ缂栧啓
+ -->
+
+<template>
+    <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+        :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+        :table="table" :extend="extend">
+    </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/Order/ProductionOutboundOrder.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+    setup() {
+        const table = ref({
+            key: 'id',
+            footer: "Foots",
+            cnName: '鐢熶骇棰嗘枡鍗曟嵁淇℃伅',
+            name: '',
+            url: "/ProductionOutboundOrder/",
+            sortName: "createDate"
+        });
+        const editFormFields = ref({
+            orderNo:"",
+            upperOrderNo:"",
+            orderType:"",
+            orderStatus:"",
+            createType:"",
+        });
+        const editFormOptions = ref([
+        ]);
+        const searchFormFields = ref({});
+        const searchFormOptions = ref([
+            [
+                { "title": "涓婃父鍗曞彿", "field": "upperOrderNo", "type": "text" },
+                { "title": "璁㈠崟缂栧彿", "field": "orderNo", "type": "text" },
+                { "title": "鍗曟嵁绫诲瀷", "field": "orderType", type: "select", dataKey: "OrderTypeEmun", data: [] },
+
+            ],
+            [
+                { "title": "鍗曟嵁鐘舵��", "field": "orderStatus", type: "select", dataKey: "OrderStateEmun", data: [] },
+                { "title": "鍒涘缓绫诲瀷", "field": "createType", type: "select", dataKey: "OrderCreateTypeEmun", data: [] },
+            ],
+        ]);
+        const columns = ref(
+            [
+            { field: 'id', title: '鍗曟嵁id', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+            { field: 'orderNo', title: '鍗曟嵁缂栧彿', type: 'string', width: 150, align: 'left', },
+            { field: 'upperOrderNo', title: '涓婃父鍗曟嵁缂栧彿', type: 'string', width: 150, align: 'left', },
+            { field: 'orderType', title: '鍗曟嵁绫诲瀷', type: 'int', width: 120, align: 'left', bind: { key: "OrderTypeEmun", data: [] } },
+            { field: 'orderStatus', title: '鍗曟嵁鐘舵��', type: 'int', width: 90, align: 'left', bind: { key: "OrderStateEmun", data: [] } },
+            { field: 'createType', title: '鍒涘缓绫诲瀷', type: 'int', width: 120, align: 'left', bind: { key: "OrderCreateTypeEmun", data: [] } },
+            { field: 'remark', title: '澶囨敞', type: 'string', width: 60, align: 'left', hidden: true},
+            { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, align: 'left', hidden: true },
+            { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', },
+            { field: 'modifier', title: '鏈�鍚庝慨鏀逛汉', type: 'string', sort: true, width: 100, align: 'left' },
+            ]
+        );
+        // const detail = ref({
+        //     cnName: "#detailCnName",
+        //     table: "#detailTable",
+        //     columns: [],
+        //     sortName: "",
+        //     key: ""
+        // });
+        const detail = ref({
+            cnName: "鐢熶骇棰嗘枡鍗曟嵁鏄庣粏淇℃伅",
+            table: "StockInfoDetails",
+            columns: [
+                {
+                    field: "id",
+                    title: "Id",
+                    type: "int",
+                    width: 90,
+                    hidden: true,
+                    readonly: true,
+                    require: true,
+                    align: "left",
+                },
+                {
+                    field: "orderId",
+                    title: "鍑哄簱鍗曟嵁涓婚敭",
+                    type: "string",
+                    width: 90,
+                    align: "left",
+                    hidden: true,
+                },
+                {
+                    field: "materielCode",
+                    title: "鐗╂枡缂栧彿",
+                    type: "string",
+                    width: 150,
+                    align: "left",
+                    edit: { type: "string" },
+                },
+                {
+                    field: "materielName",
+                    title: "鐗╂枡鍚嶇О",
+                    type: "string",
+                    width: 150,
+                    align: "left",
+                    edit: { type: "string" },
+                },
+                {
+                    field: "demandClassification",
+                    title: "闇�姹傚垎绫�",
+                    type: "decimal",
+                    width: 180,
+                    align: "left",
+                    edit: { type: "string" },
+                },
+                {
+                    field: "orderQuantity",
+                    title: "鍗曟嵁鏁伴噺",
+                    type: "string",
+                    width: 120,
+                    align: "left",
+                    edit: { type: "string" },
+                },
+                {
+                    field: "overOutQuantity",
+                    title: "宸插嚭搴撴暟閲�",
+                    type: "int",
+                    width: 90,
+                    align: "left",
+                },
+                {
+                    field: "lockQuantity",
+                    title: "閿佸畾鏁伴噺",
+                    type: "int",
+                    width: 90,
+                    align: "left",
+                    hidden: true,
+                },
+                {
+                    field: "orderDetailStatus",
+                    title: "鍗曟嵁鏄庣粏鐘舵��",
+                    type: "string",
+                    width: 120,
+                    align: "left",
+                    bind: { key: "OrderStateEmun", data: [] },
+                },
+                {
+                    field: "creater",
+                    title: "鍒涘缓浜�",
+                    type: "string",
+                    width: 90,
+                    align: "left",
+                },
+                {
+                    field: "createDate",
+                    title: "鍒涘缓鏃堕棿",
+                    type: "datetime",
+                    width: 160,
+                    align: "left",
+                },
+                {
+                    field: "modifier",
+                    title: "淇敼浜�",
+                    type: "string",
+                    width: 100,
+                    align: "left",
+                    hidden: true,
+                },
+                {
+                    field: "modifyDate",
+                    title: "淇敼鏃堕棿",
+                    type: "datetime",
+                    width: 160,
+                    align: "left",
+                    hidden: true,
+                },
+                {
+                    field: "remark",
+                    title: "澶囨敞",
+                    type: "string",
+                    width: 100,
+                    align: "left",
+                    hidden: true,
+                },
+            ],
+            sortName: "id",
+            key: "id",
+        });
+        return {
+            table,
+            extend,
+            editFormFields,
+            editFormOptions,
+            searchFormFields,
+            searchFormOptions,
+            columns,
+            detail,
+        };
+    },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db"
index 0349df2..acdba4a 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db-shm" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db-shm"
index 44200ef..201824e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db-shm"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db-shm"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db-wal" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db-wal"
index 573f901..ee79a80 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db-wal"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db-wal"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db"
index ade0a02..5234a83 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-shm" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-shm"
index 997e0f8..3277f24 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-shm"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-shm"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-wal" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-wal"
index 2b0bd43..ff58d32 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-wal"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-wal"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json"
index d08d46c..4d0d54c 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json"
@@ -3,36 +3,48 @@
   "WorkspaceRootPath": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\",
   "Documents": [
     {
+      "AbsoluteMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_storagetaskservices\\aspnetcoreschedule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|solutionrelative:widesea_storagetaskservices\\aspnetcoreschedule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_core\\baserepository\\repositorybase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\baserepository\\repositorybase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_model\\models\\order\\dt_productionoutboundorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\order\\dt_productionoutboundorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_model\\models\\order\\dt_otheroutboundorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\order\\dt_otheroutboundorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_model\\models\\order\\dt_inventoryoutboundorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\order\\dt_inventoryoutboundorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_model\\models\\order\\dt_allocateoutboundorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\order\\dt_allocateoutboundorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_core\\baserepository\\irepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\baserepository\\irepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
       "AbsoluteMoniker": "D:0:0:{4BDE58B2-5B2E-480B-932F-D63C2A7D557C}|WIDESEA_StorageBasicServices\\WIDESEA_StorageBasicServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_storagebasicservices\\stock\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{4BDE58B2-5B2E-480B-932F-D63C2A7D557C}|WIDESEA_StorageBasicServices\\WIDESEA_StorageBasicServices.csproj|solutionrelative:widesea_storagebasicservices\\stock\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_dto\\stock\\generateouttaskdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\stock\\generateouttaskdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|solutionrelative:widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}|WIDESEA_IStorageTaskService\\WIDESEA_IStorageTaskServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_istoragetaskservice\\task\\idt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}|WIDESEA_IStorageTaskService\\WIDESEA_IStorageTaskServices.csproj|solutionrelative:widesea_istoragetaskservice\\task\\idt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_storagetaskservices\\aspnetcoreschedule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|solutionrelative:widesea_storagetaskservices\\aspnetcoreschedule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{20D16B32-8186-420C-B3B7-58B183FC09CF}|WIDESEA_OrderServices\\WIDESEA_OrderServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_orderservices\\dt_otheroutboundorderservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{20D16B32-8186-420C-B3B7-58B183FC09CF}|WIDESEA_OrderServices\\WIDESEA_OrderServices.csproj|solutionrelative:widesea_orderservices\\dt_otheroutboundorderservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_core\\enums\\manageenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\enums\\manageenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
+      "AbsoluteMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|solutionrelative:widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     }
   ],
   "DocumentGroupContainers": [
@@ -42,110 +54,149 @@
       "DocumentGroups": [
         {
           "DockedWidth": 200,
-          "SelectedChildIndex": 4,
+          "SelectedChildIndex": 5,
           "Children": [
             {
               "$type": "Document",
-              "DocumentIndex": 1,
-              "Title": "GenerateOutTaskDto.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Stock\\GenerateOutTaskDto.cs",
-              "RelativeDocumentMoniker": "WIDESEA_DTO\\Stock\\GenerateOutTaskDto.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Stock\\GenerateOutTaskDto.cs",
-              "RelativeToolTip": "WIDESEA_DTO\\Stock\\GenerateOutTaskDto.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAAhAAAAAAAAAA==",
+              "DocumentIndex": 4,
+              "Title": "Dt_InventoryOutboundOrder.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Order\\Dt_InventoryOutboundOrder.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\Order\\Dt_InventoryOutboundOrder.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Order\\Dt_InventoryOutboundOrder.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\Order\\Dt_InventoryOutboundOrder.cs",
+              "ViewState": "AgIAAC0AAAAAAAAAAAAcwDwAAABCAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-23T08:11:21.152Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 3,
-              "Title": "IDt_TaskService.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStorageTaskService\\Task\\IDt_TaskService.cs",
-              "RelativeDocumentMoniker": "WIDESEA_IStorageTaskService\\Task\\IDt_TaskService.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStorageTaskService\\Task\\IDt_TaskService.cs",
-              "RelativeToolTip": "WIDESEA_IStorageTaskService\\Task\\IDt_TaskService.cs",
-              "ViewState": "AgIAAIYAAAAAAAAAAAAjwJgAAABDAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-23T07:38:19.601Z",
+              "WhenOpened": "2025-10-24T08:47:34.235Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 5,
-              "Title": "AspNetCoreSchedule.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\AspNetCoreSchedule.cs",
-              "RelativeDocumentMoniker": "WIDESEA_StorageTaskServices\\AspNetCoreSchedule.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\AspNetCoreSchedule.cs",
-              "RelativeToolTip": "WIDESEA_StorageTaskServices\\AspNetCoreSchedule.cs",
-              "ViewState": "AgIAAJgAAAAAAAAAAAAAALkAAAAJAAAAAAAAAA==",
+              "Title": "Dt_AllocateOutboundOrder.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Order\\Dt_AllocateOutboundOrder.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\Order\\Dt_AllocateOutboundOrder.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Order\\Dt_AllocateOutboundOrder.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\Order\\Dt_AllocateOutboundOrder.cs",
+              "ViewState": "AgIAACgAAAAAAAAAAAAYwDwAAABBAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-23T06:34:09.686Z",
+              "WhenOpened": "2025-10-24T08:47:15.317Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 6,
-              "Title": "ManageEnum.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Enums\\ManageEnum.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Core\\Enums\\ManageEnum.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Enums\\ManageEnum.cs",
-              "RelativeToolTip": "WIDESEA_Core\\Enums\\ManageEnum.cs",
-              "ViewState": "AgIAAF8CAAAAAAAAAAApwHkCAAAjAAAAAAAAAA==",
+              "Title": "IRepository.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseRepository\\IRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\BaseRepository\\IRepository.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseRepository\\IRepository.cs",
+              "RelativeToolTip": "WIDESEA_Core\\BaseRepository\\IRepository.cs",
+              "ViewState": "AgIAADQAAAAAAAAAAAAWwD4AAAAfAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-22T07:40:38.084Z",
+              "WhenOpened": "2025-10-24T08:34:10.267Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 0,
-              "Title": "StockInfoService.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs",
-              "RelativeDocumentMoniker": "WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs",
-              "RelativeToolTip": "WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs",
-              "ViewState": "AgIAAIEAAAAAAAAAAAAIwKcAAABcAAAAAAAAAA==",
+              "DocumentIndex": 1,
+              "Title": "RepositoryBase.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseRepository\\RepositoryBase.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\BaseRepository\\RepositoryBase.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseRepository\\RepositoryBase.cs",
+              "RelativeToolTip": "WIDESEA_Core\\BaseRepository\\RepositoryBase.cs",
+              "ViewState": "AgIAAEUDAAAAAAAAAAAMwIgDAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-22T05:33:37.383Z",
+              "WhenOpened": "2025-10-24T08:33:31.849Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 7,
-              "Title": "appsettings.json",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\appsettings.json",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
-              "RelativeToolTip": "WIDESEA_WMSServer\\appsettings.json",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvxEAAAD0AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
-              "WhenOpened": "2025-10-21T08:37:20.946Z",
+              "Title": "StockInfoService.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs",
+              "RelativeToolTip": "WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs",
+              "ViewState": "AgIAADoAAAAAAAAAAAAAwI4AAACyAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-24T08:02:50.452Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 4,
-              "Title": "TaskController.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
-              "ViewState": "AgIAAEAAAAAAAAAAAAAMwFUAAAAiAAAAAAAAAA==",
+              "DocumentIndex": 0,
+              "Title": "AspNetCoreSchedule.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\AspNetCoreSchedule.cs",
+              "RelativeDocumentMoniker": "WIDESEA_StorageTaskServices\\AspNetCoreSchedule.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\AspNetCoreSchedule.cs",
+              "RelativeToolTip": "WIDESEA_StorageTaskServices\\AspNetCoreSchedule.cs",
+              "ViewState": "AgIAALQAAAAAAAAAAAAIwN0AAAAdAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-21T01:04:19.904Z",
+              "WhenOpened": "2025-10-24T07:56:23.944Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 2,
+              "Title": "Dt_ProductionOutboundOrder.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Order\\Dt_ProductionOutboundOrder.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\Order\\Dt_ProductionOutboundOrder.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Order\\Dt_ProductionOutboundOrder.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\Order\\Dt_ProductionOutboundOrder.cs",
+              "ViewState": "AgIAABkAAAAAAAAAAAAqwD0AAABRAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-24T08:47:48.082Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 3,
+              "Title": "Dt_OtherOutboundOrder.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Order\\Dt_OtherOutboundOrder.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\Order\\Dt_OtherOutboundOrder.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Order\\Dt_OtherOutboundOrder.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\Order\\Dt_OtherOutboundOrder.cs",
+              "ViewState": "AgIAAEcAAAAAAAAAAAAUwGEAAAA+AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-24T08:47:40.565Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 9,
+              "Title": "Dt_OtherOutboundOrderService.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_OrderServices\\Dt_OtherOutboundOrderService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_OrderServices\\Dt_OtherOutboundOrderService.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_OrderServices\\Dt_OtherOutboundOrderService.cs",
+              "RelativeToolTip": "WIDESEA_OrderServices\\Dt_OtherOutboundOrderService.cs",
+              "ViewState": "AgIAALYAAAAAAAAAAAAYwMEAAABAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-24T07:48:16.97Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 8,
+              "Title": "TaskController.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
+              "ViewState": "AgIAAH4AAAAAAAAAAIAwwJwAAAAaAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-24T07:47:38.514Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 10,
               "Title": "Dt_TaskService.cs",
               "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
               "RelativeDocumentMoniker": "WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
               "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
               "RelativeToolTip": "WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
-              "ViewState": "AgIAAPwCAAAAAAAAAAAtwHQEAABBAAAAAAAAAA==",
+              "ViewState": "AgIAAH8DAAAAAAAAAAAAAEoEAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-25T03:08:03.698Z",
+              "WhenOpened": "2025-10-24T07:04:34.588Z",
               "EditorCaption": ""
             }
           ]
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json"
index 752de0e..8473a40 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json"
@@ -3,36 +3,48 @@
   "WorkspaceRootPath": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\",
   "Documents": [
     {
+      "AbsoluteMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_storagetaskservices\\aspnetcoreschedule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|solutionrelative:widesea_storagetaskservices\\aspnetcoreschedule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_core\\baserepository\\repositorybase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\baserepository\\repositorybase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_model\\models\\order\\dt_productionoutboundorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\order\\dt_productionoutboundorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_model\\models\\order\\dt_otheroutboundorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\order\\dt_otheroutboundorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_model\\models\\order\\dt_inventoryoutboundorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\order\\dt_inventoryoutboundorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_model\\models\\order\\dt_allocateoutboundorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\order\\dt_allocateoutboundorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_core\\baserepository\\irepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\baserepository\\irepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
       "AbsoluteMoniker": "D:0:0:{4BDE58B2-5B2E-480B-932F-D63C2A7D557C}|WIDESEA_StorageBasicServices\\WIDESEA_StorageBasicServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_storagebasicservices\\stock\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{4BDE58B2-5B2E-480B-932F-D63C2A7D557C}|WIDESEA_StorageBasicServices\\WIDESEA_StorageBasicServices.csproj|solutionrelative:widesea_storagebasicservices\\stock\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_dto\\stock\\generateouttaskdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\stock\\generateouttaskdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|solutionrelative:widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}|WIDESEA_IStorageTaskService\\WIDESEA_IStorageTaskServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_istoragetaskservice\\task\\idt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}|WIDESEA_IStorageTaskService\\WIDESEA_IStorageTaskServices.csproj|solutionrelative:widesea_istoragetaskservice\\task\\idt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_storagetaskservices\\aspnetcoreschedule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|solutionrelative:widesea_storagetaskservices\\aspnetcoreschedule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{20D16B32-8186-420C-B3B7-58B183FC09CF}|WIDESEA_OrderServices\\WIDESEA_OrderServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_orderservices\\dt_otheroutboundorderservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{20D16B32-8186-420C-B3B7-58B183FC09CF}|WIDESEA_OrderServices\\WIDESEA_OrderServices.csproj|solutionrelative:widesea_orderservices\\dt_otheroutboundorderservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_core\\enums\\manageenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\enums\\manageenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
+      "AbsoluteMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|solutionrelative:widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     }
   ],
   "DocumentGroupContainers": [
@@ -42,110 +54,149 @@
       "DocumentGroups": [
         {
           "DockedWidth": 200,
-          "SelectedChildIndex": 4,
+          "SelectedChildIndex": 5,
           "Children": [
             {
               "$type": "Document",
-              "DocumentIndex": 1,
-              "Title": "GenerateOutTaskDto.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Stock\\GenerateOutTaskDto.cs",
-              "RelativeDocumentMoniker": "WIDESEA_DTO\\Stock\\GenerateOutTaskDto.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Stock\\GenerateOutTaskDto.cs",
-              "RelativeToolTip": "WIDESEA_DTO\\Stock\\GenerateOutTaskDto.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAAhAAAAAAAAAA==",
+              "DocumentIndex": 4,
+              "Title": "Dt_InventoryOutboundOrder.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Order\\Dt_InventoryOutboundOrder.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\Order\\Dt_InventoryOutboundOrder.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Order\\Dt_InventoryOutboundOrder.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\Order\\Dt_InventoryOutboundOrder.cs",
+              "ViewState": "AgIAAC0AAAAAAAAAAAAcwDwAAABCAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-23T08:11:21.152Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 3,
-              "Title": "IDt_TaskService.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStorageTaskService\\Task\\IDt_TaskService.cs",
-              "RelativeDocumentMoniker": "WIDESEA_IStorageTaskService\\Task\\IDt_TaskService.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStorageTaskService\\Task\\IDt_TaskService.cs",
-              "RelativeToolTip": "WIDESEA_IStorageTaskService\\Task\\IDt_TaskService.cs",
-              "ViewState": "AgIAAIYAAAAAAAAAAAAjwJgAAABDAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-23T07:38:19.601Z",
+              "WhenOpened": "2025-10-24T08:47:34.235Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 5,
-              "Title": "AspNetCoreSchedule.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\AspNetCoreSchedule.cs",
-              "RelativeDocumentMoniker": "WIDESEA_StorageTaskServices\\AspNetCoreSchedule.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\AspNetCoreSchedule.cs",
-              "RelativeToolTip": "WIDESEA_StorageTaskServices\\AspNetCoreSchedule.cs",
-              "ViewState": "AgIAAJgAAAAAAAAAAAAAALkAAAAJAAAAAAAAAA==",
+              "Title": "Dt_AllocateOutboundOrder.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Order\\Dt_AllocateOutboundOrder.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\Order\\Dt_AllocateOutboundOrder.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Order\\Dt_AllocateOutboundOrder.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\Order\\Dt_AllocateOutboundOrder.cs",
+              "ViewState": "AgIAACgAAAAAAAAAAAAYwDwAAABBAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-23T06:34:09.686Z",
+              "WhenOpened": "2025-10-24T08:47:15.317Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 6,
-              "Title": "ManageEnum.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Enums\\ManageEnum.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Core\\Enums\\ManageEnum.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Enums\\ManageEnum.cs",
-              "RelativeToolTip": "WIDESEA_Core\\Enums\\ManageEnum.cs",
-              "ViewState": "AgIAAF8CAAAAAAAAAAApwHkCAAAjAAAAAAAAAA==",
+              "Title": "IRepository.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseRepository\\IRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\BaseRepository\\IRepository.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseRepository\\IRepository.cs",
+              "RelativeToolTip": "WIDESEA_Core\\BaseRepository\\IRepository.cs",
+              "ViewState": "AgIAADQAAAAAAAAAAAAWwD4AAAAfAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-22T07:40:38.084Z",
+              "WhenOpened": "2025-10-24T08:34:10.267Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 0,
-              "Title": "StockInfoService.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs",
-              "RelativeDocumentMoniker": "WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs",
-              "RelativeToolTip": "WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs",
-              "ViewState": "AgIAAIEAAAAAAAAAAAAIwKkAAAA+AAAAAAAAAA==",
+              "DocumentIndex": 1,
+              "Title": "RepositoryBase.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseRepository\\RepositoryBase.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\BaseRepository\\RepositoryBase.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseRepository\\RepositoryBase.cs",
+              "RelativeToolTip": "WIDESEA_Core\\BaseRepository\\RepositoryBase.cs",
+              "ViewState": "AgIAAEUDAAAAAAAAAAAMwIgDAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-22T05:33:37.383Z",
+              "WhenOpened": "2025-10-24T08:33:31.849Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 7,
-              "Title": "appsettings.json",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\appsettings.json",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
-              "RelativeToolTip": "WIDESEA_WMSServer\\appsettings.json",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvxEAAAD0AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
-              "WhenOpened": "2025-10-21T08:37:20.946Z",
+              "Title": "StockInfoService.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs",
+              "RelativeToolTip": "WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs",
+              "ViewState": "AgIAADoAAAAAAAAAAAAAwI4AAACyAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-24T08:02:50.452Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 4,
-              "Title": "TaskController.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
-              "ViewState": "AgIAAEAAAAAAAAAAAAAMwFUAAAAiAAAAAAAAAA==",
+              "DocumentIndex": 0,
+              "Title": "AspNetCoreSchedule.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\AspNetCoreSchedule.cs",
+              "RelativeDocumentMoniker": "WIDESEA_StorageTaskServices\\AspNetCoreSchedule.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\AspNetCoreSchedule.cs",
+              "RelativeToolTip": "WIDESEA_StorageTaskServices\\AspNetCoreSchedule.cs",
+              "ViewState": "AgIAAAgBAAAAAAAAAAAIwDkBAAAXAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-21T01:04:19.904Z",
+              "WhenOpened": "2025-10-24T07:56:23.944Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 2,
+              "Title": "Dt_ProductionOutboundOrder.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Order\\Dt_ProductionOutboundOrder.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\Order\\Dt_ProductionOutboundOrder.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Order\\Dt_ProductionOutboundOrder.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\Order\\Dt_ProductionOutboundOrder.cs",
+              "ViewState": "AgIAABkAAAAAAAAAAAAqwD0AAABRAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-24T08:47:48.082Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 3,
+              "Title": "Dt_OtherOutboundOrder.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Order\\Dt_OtherOutboundOrder.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\Order\\Dt_OtherOutboundOrder.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Order\\Dt_OtherOutboundOrder.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\Order\\Dt_OtherOutboundOrder.cs",
+              "ViewState": "AgIAAEcAAAAAAAAAAAAUwGEAAAA+AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-24T08:47:40.565Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 9,
+              "Title": "Dt_OtherOutboundOrderService.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_OrderServices\\Dt_OtherOutboundOrderService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_OrderServices\\Dt_OtherOutboundOrderService.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_OrderServices\\Dt_OtherOutboundOrderService.cs",
+              "RelativeToolTip": "WIDESEA_OrderServices\\Dt_OtherOutboundOrderService.cs",
+              "ViewState": "AgIAALYAAAAAAAAAAAAYwMEAAABAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-24T07:48:16.97Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 8,
+              "Title": "TaskController.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
+              "ViewState": "AgIAAH4AAAAAAAAAAIAwwJwAAAAaAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-24T07:47:38.514Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 10,
               "Title": "Dt_TaskService.cs",
               "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
               "RelativeDocumentMoniker": "WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
               "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
               "RelativeToolTip": "WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
-              "ViewState": "AgIAAPwCAAAAAAAAAAAtwHQEAABBAAAAAAAAAA==",
+              "ViewState": "AgIAAH8DAAAAAAAAAAAAAEoEAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-09-25T03:08:03.698Z",
+              "WhenOpened": "2025-10-24T07:04:34.588Z",
               "EditorCaption": ""
             }
           ]
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs"
index 1c85df2..8c6e4e6 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs"
@@ -60,6 +60,7 @@
         /// <param name="Entity"></param>
         /// <returns></returns>
         Task<bool> AddDataNavAsync(TEntity Entity);
+        Task<bool> AddDataNavAsync(List<TEntity> Entity);
 
         /// <summary>
         /// 娣诲姞澶氭潯鏁版嵁
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs"
index 536bfea..5ea5cb1 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs"
@@ -625,6 +625,11 @@
             return await _db.InsertNav(Entity).IncludesAllFirstLayer().ExecuteCommandAsync();
         }
 
+        public async Task<bool> AddDataNavAsync(List<TEntity> Entity)
+        {
+            return await _db.InsertNav(Entity).IncludesAllFirstLayer().ExecuteCommandAsync();
+        }
+
         public Task<int> AddDataAsync(List<TEntity> listEntity)
         {
             IInsertable<TEntity> insert = _db.Insertable(listEntity);
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Order/OutboundOrderGetDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Order/OutboundOrderGetDTO.cs"
index eed6f4a..128f655 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Order/OutboundOrderGetDTO.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Order/OutboundOrderGetDTO.cs"
@@ -10,6 +10,8 @@
     {
         public string OrderNo { get; set; }
         public int pageNo { get; set; }
+        public int id { get; set; }
+        public string searchValue { get; set; }
 
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/GetStockSelectViewDto.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/GetStockSelectViewDto.cs"
new file mode 100644
index 0000000..d9c0b9e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/GetStockSelectViewDto.cs"
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.Stock
+{
+    public class GetStockSelectViewDto
+    {
+        public string materielCode { get; set; }
+        public string materielName { get; set; }
+        public string demandClassification { get; set; }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_AllocateOutboundOrderDetailRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_AllocateOutboundOrderDetailRepository.cs"
new file mode 100644
index 0000000..6af7974
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_AllocateOutboundOrderDetailRepository.cs"
@@ -0,0 +1,8 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_IOrderRepository;
+
+public interface IDt_AllocateOutboundOrderDetailRepository : IRepository<Dt_AllocateOutboundOrderDetail>
+{
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_AllocateOutboundOrderRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_AllocateOutboundOrderRepository.cs"
new file mode 100644
index 0000000..650ae47
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_AllocateOutboundOrderRepository.cs"
@@ -0,0 +1,8 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_IOrderRepository;
+
+public interface IDt_AllocateOutboundOrderRepository : IRepository<Dt_AllocateOutboundOrder>
+{
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_InventoryOutboundOrderDetailRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_InventoryOutboundOrderDetailRepository.cs"
new file mode 100644
index 0000000..ac4c22a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_InventoryOutboundOrderDetailRepository.cs"
@@ -0,0 +1,8 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_IOrderRepository;
+
+public interface IDt_InventoryOutboundOrderDetailRepository : IRepository<Dt_InventoryOutboundOrderDetail>
+{
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_InventoryOutboundOrderRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_InventoryOutboundOrderRepository.cs"
new file mode 100644
index 0000000..a0bd69f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_InventoryOutboundOrderRepository.cs"
@@ -0,0 +1,8 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_IOrderRepository;
+
+public interface IDt_InventoryOutboundOrderRepository : IRepository<Dt_InventoryOutboundOrder>
+{
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_OtherOutboundOrderDetailRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_OtherOutboundOrderDetailRepository.cs"
new file mode 100644
index 0000000..f88d344
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_OtherOutboundOrderDetailRepository.cs"
@@ -0,0 +1,8 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_IOrderRepository;
+
+public interface IDt_OtherOutboundOrderDetailRepository : IRepository<Dt_OtherOutboundOrderDetail>
+{
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_OtherOutboundOrderRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_OtherOutboundOrderRepository.cs"
new file mode 100644
index 0000000..5c70716
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_OtherOutboundOrderRepository.cs"
@@ -0,0 +1,8 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_IOrderRepository;
+
+public interface IDt_OtherOutboundOrderRepository : IRepository<Dt_OtherOutboundOrder>
+{
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_OutboundOrderDetailRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_OutboundOrderDetailRepository.cs"
deleted file mode 100644
index 333505d..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_OutboundOrderDetailRepository.cs"
+++ /dev/null
@@ -1,8 +0,0 @@
-锘縰sing WIDESEA_Core.BaseRepository;
-using WIDESEA_Model.Models.Order;
-
-namespace WIDESEA_IOrderRepository;
-
-public interface IDt_OutboundOrderDetailRepository : IRepository<Dt_OutboundOrderDetail>
-{
-}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_OutboundOrderRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_OutboundOrderRepository.cs"
deleted file mode 100644
index dd4b2fd..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_OutboundOrderRepository.cs"
+++ /dev/null
@@ -1,8 +0,0 @@
-锘縰sing WIDESEA_Core.BaseRepository;
-using WIDESEA_Model.Models.Order;
-
-namespace WIDESEA_IOrderRepository;
-
-public interface IDt_OutboundOrderRepository : IRepository<Dt_OutboundOrder>
-{
-}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_ProductionOutboundOrderDetailRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_ProductionOutboundOrderDetailRepository.cs"
new file mode 100644
index 0000000..3590e52
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_ProductionOutboundOrderDetailRepository.cs"
@@ -0,0 +1,8 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_IOrderRepository;
+
+public interface IDt_ProductionOutboundOrderDetailRepository : IRepository<Dt_ProductionOutboundOrderDetail>
+{
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_ProductionOutboundOrderRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_ProductionOutboundOrderRepository.cs"
new file mode 100644
index 0000000..d0f3536
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/IDt_ProductionOutboundOrderRepository.cs"
@@ -0,0 +1,8 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_IOrderRepository;
+
+public interface IDt_ProductionOutboundOrderRepository : IRepository<Dt_ProductionOutboundOrder>
+{
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_AllocateOutboundOrderDetailService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_AllocateOutboundOrderDetailService.cs"
new file mode 100644
index 0000000..a24aeca
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_AllocateOutboundOrderDetailService.cs"
@@ -0,0 +1,11 @@
+锘縰sing WIDESEA_Core.BaseServices;
+using WIDESEA_DTO;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_IOrderServices;
+
+public interface IDt_AllocateOutboundOrderDetailService : IService<Dt_AllocateOutboundOrderDetail>
+{
+    
+    
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_AllocateOutboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_AllocateOutboundOrderService.cs"
new file mode 100644
index 0000000..5c8b962
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_AllocateOutboundOrderService.cs"
@@ -0,0 +1,22 @@
+锘縰sing WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO;
+using WIDESEA_DTO.Order;
+using WIDESEA_DTO.Stock;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_IOrderServices;
+
+public interface IDt_AllocateOutboundOrderService : IService<Dt_AllocateOutboundOrder>
+{
+    WebResponseContent GetAllocateOutboundOrder(OutboundOrderGetDTO outboundOrderGetDTO);
+
+    WebResponseContent GetAllocateOutboundOrderDetail(OutboundOrderGetDTO outboundOrderGetDTO);
+
+    /// <summary>
+    /// 鏍规嵁璇锋眰鍑哄簱浠诲姟
+    /// </summary>
+    /// <param name="requestOut"></param>
+    /// <returns></returns>
+    Task<WebResponseContent> GenerateAllocateOutboundTask(GenerateOutTaskDto requestOut);
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_InventoryOutboundOrderDetailService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_InventoryOutboundOrderDetailService.cs"
new file mode 100644
index 0000000..14d148e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_InventoryOutboundOrderDetailService.cs"
@@ -0,0 +1,11 @@
+锘縰sing WIDESEA_Core.BaseServices;
+using WIDESEA_DTO;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_IOrderServices;
+
+public interface IDt_InventoryOutboundOrderDetailService : IService<Dt_InventoryOutboundOrderDetail>
+{
+    
+    
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_InventoryOutboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_InventoryOutboundOrderService.cs"
new file mode 100644
index 0000000..b3ae3b7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_InventoryOutboundOrderService.cs"
@@ -0,0 +1,22 @@
+锘縰sing WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO;
+using WIDESEA_DTO.Order;
+using WIDESEA_DTO.Stock;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_IOrderServices;
+
+public interface IDt_InventoryOutboundOrderService : IService<Dt_InventoryOutboundOrder>
+{
+    WebResponseContent GetInventoryOutboundOrder(OutboundOrderGetDTO outboundOrderGetDTO);
+
+    WebResponseContent GetInventoryOutboundOrderDetail(OutboundOrderGetDTO outboundOrderGetDTO);
+
+    /// <summary>
+    /// 鏍规嵁璇锋眰鍑哄簱浠诲姟
+    /// </summary>
+    /// <param name="requestOut"></param>
+    /// <returns></returns>
+    Task<WebResponseContent> GenerateInventoryOutboundTask(GenerateOutTaskDto requestOut);
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_OutboundOrderDetailService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_OtherOutboundOrderDetailService.cs"
similarity index 60%
rename from "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_OutboundOrderDetailService.cs"
rename to "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_OtherOutboundOrderDetailService.cs"
index 2739d75..58e6342 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_OutboundOrderDetailService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_OtherOutboundOrderDetailService.cs"
@@ -4,7 +4,7 @@
 
 namespace WIDESEA_IOrderServices;
 
-public interface IDt_OutboundOrderDetailService : IService<Dt_OutboundOrderDetail>
+public interface IDt_OtherOutboundOrderDetailService : IService<Dt_OtherOutboundOrderDetail>
 {
     
     
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_OtherOutboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_OtherOutboundOrderService.cs"
new file mode 100644
index 0000000..968a395
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_OtherOutboundOrderService.cs"
@@ -0,0 +1,22 @@
+锘縰sing WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO;
+using WIDESEA_DTO.Order;
+using WIDESEA_DTO.Stock;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_IOrderServices;
+
+public interface IDt_OtherOutboundOrderService : IService<Dt_OtherOutboundOrder>
+{
+    WebResponseContent GetOtherOutboundOrder(OutboundOrderGetDTO outboundOrderGetDTO);
+
+    WebResponseContent GetOtherOutboundOrderDetail(OutboundOrderGetDTO outboundOrderGetDTO);
+
+    /// <summary>
+    /// 鏍规嵁璇锋眰鍑哄簱浠诲姟
+    /// </summary>
+    /// <param name="requestOut"></param>
+    /// <returns></returns>
+    Task<WebResponseContent> GenerateOtherOutboundTask(GenerateOutTaskDto requestOut);
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_OutboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_OutboundOrderService.cs"
deleted file mode 100644
index d4bb720..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_OutboundOrderService.cs"
+++ /dev/null
@@ -1,14 +0,0 @@
-锘縰sing WIDESEA_Core;
-using WIDESEA_Core.BaseServices;
-using WIDESEA_DTO;
-using WIDESEA_DTO.Order;
-using WIDESEA_Model.Models.Order;
-
-namespace WIDESEA_IOrderServices;
-
-public interface IDt_OutboundOrderService : IService<Dt_OutboundOrder>
-{
-    WebResponseContent GetOutboundOrder(OutboundOrderGetDTO outboundOrderGetDTO);
-
-    WebResponseContent GetOutboundOrder(int id);
-}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_ProductionOutboundOrderDetailService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_ProductionOutboundOrderDetailService.cs"
new file mode 100644
index 0000000..da8137c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_ProductionOutboundOrderDetailService.cs"
@@ -0,0 +1,11 @@
+锘縰sing WIDESEA_Core.BaseServices;
+using WIDESEA_DTO;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_IOrderServices;
+
+public interface IDt_ProductionOutboundOrderDetailService : IService<Dt_ProductionOutboundOrderDetail>
+{
+    
+    
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_ProductionOutboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_ProductionOutboundOrderService.cs"
new file mode 100644
index 0000000..53860c7
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_ProductionOutboundOrderService.cs"
@@ -0,0 +1,22 @@
+锘縰sing WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO;
+using WIDESEA_DTO.Order;
+using WIDESEA_DTO.Stock;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_IOrderServices;
+
+public interface IDt_ProductionOutboundOrderService : IService<Dt_ProductionOutboundOrder>
+{
+    WebResponseContent GetProductOutboundOrder(OutboundOrderGetDTO outboundOrderGetDTO);
+
+    WebResponseContent GettProductOutboundOrderDetail(OutboundOrderGetDTO outboundOrderGetDTO);
+
+    /// <summary>
+    /// 鏍规嵁璇锋眰鍑哄簱浠诲姟
+    /// </summary>
+    /// <param name="requestOut"></param>
+    /// <returns></returns>
+    Task<WebResponseContent> GeneratetProductOutboundTask(GenerateOutTaskDto requestOut);
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Stock/IStockInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Stock/IStockInfoService.cs"
index 196fc94..978c813 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Stock/IStockInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Stock/IStockInfoService.cs"
@@ -10,7 +10,9 @@
     /// </summary>
     /// <param name="materielCode"></param>
     /// <returns></returns>
-    List<StockSelectViewDTO> GetStockSelectViews(string materielCode);
+    List<StockSelectViewDTO> GetStockSelectViews(GetStockSelectViewDto viewDto);
+
+    List<DtLocationInfo> GetStockLocations(List<DtLocationInfo>? locations);
 
     /// <summary>
     /// 缁勭洏
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs"
index 56ea6ea..3ff679a 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs"
@@ -121,7 +121,7 @@
     /// <param name="TargetAddress"></param>
     /// <returns></returns>
 
-    Dt_Task RequestAcrossFloorTask(DtLocationInfo StartAddress, DtLocationInfo EndAddress, int TaskType, string palletCode);
+    Dt_Task RequestAcrossFloorTask(DtLocationInfo StartAddress, DtLocationInfo EndAddress, int TaskType, RequestTaskDto taskDto);
 
 
     /// <summary>
@@ -129,7 +129,7 @@
     /// </summary>
     /// <param name="taskDto"></param>
     /// <returns></returns>
-    Dt_Task RequestAGVCarryTask(DtLocationInfo StartAddress, DtLocationInfo EndAddress, int TaskType, string palletCode);
+    Dt_Task RequestAGVCarryTask(DtLocationInfo StartAddress, DtLocationInfo EndAddress, int TaskType, RequestTaskDto taskDto);
 
 
 
@@ -148,7 +148,7 @@
     Task<WebResponseContent> AGVIsNeedRelocationAsync(RequestTaskDto taskDto);
 
 
-    Task<WebResponseContent> SendERPTaskCompletion(string palletCode);
+    Task<WebResponseContent> ERPAllocate(string palletCode);
 
     Task<WebResponseContent> SendWCSTask(List<WMSTaskDTO> taskDTO);
 
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/ERP/WMS_\345\216\237\346\235\220\346\226\231\350\260\203\346\213\250\345\207\272\345\272\223\345\215\225_ST.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/ERP/WMS_\345\216\237\346\235\220\346\226\231\350\260\203\346\213\250\345\207\272\345\272\223\345\215\225_ST.cs"
new file mode 100644
index 0000000..56684eb
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/ERP/WMS_\345\216\237\346\235\220\346\226\231\350\260\203\346\213\250\345\207\272\345\272\223\345\215\225_ST.cs"
@@ -0,0 +1,27 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Model.Models.ERP
+{
+    public class WMS_鍘熸潗鏂欒皟鎷ㄥ嚭搴撳崟_ST
+    {
+        public string 鍗曞彿 { get; set; }
+        public string 椤圭洰绠�绉� { get; set; }
+        public string 鏂欏彿 { get; set; }
+        public string 鍝佸悕 { get; set; }
+        public string 瑙勬牸 { get; set; }
+        public string 瀹為檯鍗曢噸 { get; set; }
+        public string 鍗曚綅 { get; set; }
+        public string 鐢ㄥ弸鏉愯川 { get; set; }
+        public string 鎵ц鏍囧噯鍙� { get; set; }
+        public string 鍝佺墝 { get; set; }
+        public decimal 鍙鏁伴噺 { get; set; }
+        public decimal 宸插嚭搴撴暟 { get; set; }
+        public decimal 棰嗘枡闇�姹� { get; set; }
+        public string PBOM鍗曞彿 { get; set; }
+        public string 琛屽彿 { get; set; }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/ERP/WMS_\347\224\250\345\217\213\345\272\223\345\255\230\344\270\200\350\247\210\350\241\250_ST.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/ERP/WMS_\347\224\250\345\217\213\345\272\223\345\255\230\344\270\200\350\247\210\350\241\250_ST.cs"
index 7d9718a..cca24c7 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/ERP/WMS_\347\224\250\345\217\213\345\272\223\345\255\230\344\270\200\350\247\210\350\241\250_ST.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/ERP/WMS_\347\224\250\345\217\213\345\272\223\345\255\230\344\270\200\350\247\210\350\241\250_ST.cs"
@@ -30,8 +30,6 @@
 
         public string 鎵ц鏍囧噯鍙� { get; set; }
 
-        public string 鍝佺墝 { get; set; }
-
-        
+        public string 鍝佺墝 { get; set; } 
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/ERP/WMS_\347\224\250\345\217\213\347\224\237\344\272\247\351\242\206\346\226\231\345\215\225\344\270\200\350\247\210\350\241\250_ST.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/ERP/WMS_\347\224\250\345\217\213\347\224\237\344\272\247\351\242\206\346\226\231\345\215\225\344\270\200\350\247\210\350\241\250_ST.cs"
new file mode 100644
index 0000000..79d1be1
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/ERP/WMS_\347\224\250\345\217\213\347\224\237\344\272\247\351\242\206\346\226\231\345\215\225\344\270\200\350\247\210\350\241\250_ST.cs"
@@ -0,0 +1,29 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Model.Models.ERP
+{
+    public class WMS_鐢ㄥ弸鐢熶骇棰嗘枡鍗曚竴瑙堣〃_ST
+    {
+        public string 鍗曞彿 { get; set; }
+        public string 闇�姹傚悕绉� { get; set; }
+        public string 璁㈠崟鍝佸悕 { get; set; }
+        public string 瀛愪欢鍥惧彿 { get; set; }
+        public string 瀛愪欢鏂欏彿 { get; set; }
+        public string 瀛愪欢鍝佸悕 { get; set; }
+        public string 瀛愪欢瑙勬牸 { get; set; }
+        public string 瀛愪欢鍗曢噸 { get; set; }
+        public string 瀛愪欢鍗曚綅 { get; set; }
+        public string 鐢ㄥ弸鏉愯川 { get; set; }
+        public string 鎵ц鏍囧噯鍙� { get; set; }
+        public string 鍝佺墝 { get; set; }
+        public decimal 瀛愪欢瀹為檯鐢ㄩ噺 { get; set; }
+        public decimal 瀛愪欢鍙戞斁鏁伴噺 { get; set; }
+        public decimal 瀛愪欢鏈彂鏁伴噺 { get; set; }
+        public string 鐘舵�� { get; set; }
+        public string 璁㈠崟鏂欏彿 { get; set; }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/ERP/WMS_\347\224\250\345\217\213\347\224\265\346\216\247\346\237\234\350\260\203\346\213\250\344\270\200\350\247\210\350\241\250_ST.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/ERP/WMS_\347\224\250\345\217\213\347\224\265\346\216\247\346\237\234\350\260\203\346\213\250\344\270\200\350\247\210\350\241\250_ST.cs"
new file mode 100644
index 0000000..901c599
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/ERP/WMS_\347\224\250\345\217\213\347\224\265\346\216\247\346\237\234\350\260\203\346\213\250\344\270\200\350\247\210\350\241\250_ST.cs"
@@ -0,0 +1,30 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Model.Models.ERP
+{
+    public class WMS_鐢ㄥ弸鐢垫帶鏌滆皟鎷ㄤ竴瑙堣〃_ST
+    {
+        public string 鍗曞彿 { get; set; }
+        public string 闇�姹傚悕绉� { get; set; }
+        public string 璁㈠崟鍝佸悕 { get; set; }
+        public string 瀛愪欢鍥惧彿 { get; set; }
+        public string 瀛愪欢鏂欏彿 { get; set; }
+        public string 瀛愪欢鍝佸悕 { get; set; }
+        public string 瀛愪欢瑙勬牸 { get; set; }
+        public string 瀛愪欢鍗曢噸 { get; set; }
+        public string 瀛愪欢鍗曚綅 { get; set; }
+        public string 鐢ㄥ弸鏉愯川 { get; set; }
+        public string 鎵ц鏍囧噯鍙� { get; set; }
+        public string 鍝佺墝 { get; set; }
+        public decimal 瀛愪欢瀹為檯鐢ㄩ噺 { get; set; }
+        public decimal 瀛愪欢鍙戞斁鏁伴噺 { get; set; }
+        public decimal 瀛愪欢鏈彂鏁伴噺 { get; set; }
+        public string 鐘舵�� { get; set; }
+        public string 璁㈠崟鏂欏彿 { get; set; }
+        public string 璁㈠崟瑙勬牸 { get; set; }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_AllocateOutboundOrder.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_AllocateOutboundOrder.cs"
new file mode 100644
index 0000000..6928021
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_AllocateOutboundOrder.cs"
@@ -0,0 +1,65 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models.Order
+{
+    /// <summary>
+    /// 璋冩嫧鍑哄簱鍗�
+    ///</summary>
+    [SugarTable("Dt_AllocateOutboundOrder")]
+    public class Dt_AllocateOutboundOrder : BaseEntity
+    {
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        [SugarColumn(ColumnName = "OrderNo", Length = 255)]
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 涓婃父鍗曟嵁缂栧彿
+        /// </summary>
+        [SugarColumn(ColumnName = "UpperOrderNo", Length = 255)]
+        public string UpperOrderNo { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁绫诲瀷
+        /// </summary>
+
+        [SugarColumn(ColumnName = "OrderType")]
+        public int OrderType { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        [SugarColumn(ColumnName = "OrderStatus")]
+        public int OrderStatus { get; set; }
+
+
+        /// <summary>
+        /// 鍒涘缓鏂瑰紡
+        /// </summary>
+        [SugarColumn(ColumnName = "CreateType")]
+        public int CreateType { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(ColumnName = "Remark", Length = 255)]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 璋冩嫧鍑哄簱璁㈠崟鏄庣粏
+        /// </summary>
+        [SugarColumn(ColumnName = "Dt_AllocateOutboundOrderDetail")]
+        [Navigate(NavigateType.OneToMany, nameof(Dt_AllocateOutboundOrderDetail.OrderId))]
+        public List<Dt_AllocateOutboundOrderDetail>? Details { get; set; }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OutboundOrderDetail.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_AllocateOutboundOrderDetail.cs"
similarity index 86%
copy from "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OutboundOrderDetail.cs"
copy to "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_AllocateOutboundOrderDetail.cs"
index e9df104..95580fc 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OutboundOrderDetail.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_AllocateOutboundOrderDetail.cs"
@@ -9,10 +9,10 @@
 namespace WIDESEA_Model.Models.Order
 {
     /// <summary>
-    /// 鍑哄簱鍗曟嵁鏄庣粏琛�
+    /// 璋冩嫧鍑哄簱鍗曟嵁鏄庣粏琛�
     ///</summary>
-    [SugarTable("Dt_OutboundOrderDetail")]
-    public class Dt_OutboundOrderDetail : BaseEntity
+    [SugarTable("Dt_AllocateOutboundOrderDetail")]
+    public class Dt_AllocateOutboundOrderDetail : BaseEntity
     {
         [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
         public int Id { get; set; }
@@ -50,10 +50,10 @@
 
 
         /// <summary>
-        /// 閿佸畾鏁伴噺
+        /// 鏈嚭搴撴暟閲�
         /// </summary>
-        [SugarColumn(ColumnName = "LockQuantity")]
-        public decimal LockQuantity { get; set; }
+        [SugarColumn(ColumnName = "NotOutQuantity")]
+        public decimal NotOutQuantity { get; set; }
 
         /// <summary>
         /// 宸插嚭搴撴暟閲�
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_InventoryOutboundOrder.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_InventoryOutboundOrder.cs"
new file mode 100644
index 0000000..bd6855c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_InventoryOutboundOrder.cs"
@@ -0,0 +1,65 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models.Order
+{
+    /// <summary>
+    /// 鐩樼偣鍑哄簱鍗�
+    ///</summary>
+    [SugarTable("Dt_InventoryOutboundOrder")]
+    public class Dt_InventoryOutboundOrder : BaseEntity
+    {
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        [SugarColumn(ColumnName = "OrderNo", Length = 255)]
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 涓婃父鍗曟嵁缂栧彿
+        /// </summary>
+        [SugarColumn(ColumnName = "UpperOrderNo", Length = 255)]
+        public string UpperOrderNo { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁绫诲瀷
+        /// </summary>
+
+        [SugarColumn(ColumnName = "OrderType")]
+        public int OrderType { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        [SugarColumn(ColumnName = "OrderStatus")]
+        public int OrderStatus { get; set; }
+
+
+        /// <summary>
+        /// 鍒涘缓鏂瑰紡
+        /// </summary>
+        [SugarColumn(ColumnName = "CreateType")]
+        public int CreateType { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(ColumnName = "Remark", Length = 255)]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐩樼偣鍑哄簱璁㈠崟鏄庣粏
+        /// </summary>
+        [SugarColumn(ColumnName = "Dt_InventoryOutboundOrderDetail")]
+        [Navigate(NavigateType.OneToMany, nameof(Dt_InventoryOutboundOrderDetail.OrderId))]
+        public List<Dt_InventoryOutboundOrderDetail>? Details { get; set; }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OutboundOrderDetail.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_InventoryOutboundOrderDetail.cs"
similarity index 86%
copy from "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OutboundOrderDetail.cs"
copy to "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_InventoryOutboundOrderDetail.cs"
index e9df104..d9b6508 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OutboundOrderDetail.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_InventoryOutboundOrderDetail.cs"
@@ -9,10 +9,10 @@
 namespace WIDESEA_Model.Models.Order
 {
     /// <summary>
-    /// 鍑哄簱鍗曟嵁鏄庣粏琛�
+    /// 鐩樼偣鍑哄簱鍗曟嵁鏄庣粏琛�
     ///</summary>
-    [SugarTable("Dt_OutboundOrderDetail")]
-    public class Dt_OutboundOrderDetail : BaseEntity
+    [SugarTable("Dt_InventoryOutboundOrderDetail")]
+    public class Dt_InventoryOutboundOrderDetail : BaseEntity
     {
         [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
         public int Id { get; set; }
@@ -50,10 +50,10 @@
 
 
         /// <summary>
-        /// 閿佸畾鏁伴噺
+        /// 鏈嚭搴撴暟閲�
         /// </summary>
-        [SugarColumn(ColumnName = "LockQuantity")]
-        public decimal LockQuantity { get; set; }
+        [SugarColumn(ColumnName = "NotOutQuantity")]
+        public decimal NotOutQuantity { get; set; }
 
         /// <summary>
         /// 宸插嚭搴撴暟閲�
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OtherOutboundOrder.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OtherOutboundOrder.cs"
new file mode 100644
index 0000000..57e2a31
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OtherOutboundOrder.cs"
@@ -0,0 +1,102 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models.Order
+{
+    /// <summary>
+    /// 鍏朵粬鍑哄簱鍗�
+    ///</summary>
+    [SugarTable("Dt_OtherOutboundOrder")]
+    public class Dt_OtherOutboundOrder : BaseEntity
+    {
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        [SugarColumn(ColumnName = "OrderNo", Length = 255)]
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 涓婃父鍗曟嵁缂栧彿
+        /// </summary>
+        [SugarColumn(ColumnName = "UpperOrderNo", Length = 255)]
+        public string UpperOrderNo { get; set; }
+
+        ///// <summary>
+        ///// 鐗╂枡缂栫爜
+        ///// </summary>
+        //[SugarColumn(ColumnName = "MaterielCode", Length = 255)]
+        //public string MaterielCode { get; set; }
+
+        ///// <summary>
+        ///// 鐗╂枡鍚嶇О
+        ///// </summary>
+        //[SugarColumn(ColumnName = "MaterielName", Length = 255)]
+        //public string MaterielName { get; set; }
+
+        ///// <summary>
+        ///// 闇�姹傚垎绫�
+        ///// </summary>
+
+        //[SugarColumn(ColumnName = "DemandClassification", Length = 255)]
+        //public string DemandClassification { get; set; }
+
+        ///// <summary>
+        ///// 鍑哄簱鏁伴噺
+        ///// </summary>
+        //[SugarColumn(ColumnName = "OrderQuantity")]
+        //public decimal OrderQuantity { get; set; }
+
+        ///// <summary>
+        ///// 宸插嚭搴撴暟閲�
+        ///// </summary>
+        //[SugarColumn(ColumnName = "OverOutQuantity")]
+        //public decimal OverOutQuantity { get; set; }
+
+        ///// <summary>
+        ///// 鏈嚭搴撴暟閲�
+        ///// </summary>
+        //[SugarColumn(ColumnName = "NotOutQuantity")]
+        //public decimal NotOutQuantity { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁绫诲瀷
+        /// </summary>
+
+        [SugarColumn(ColumnName = "OrderType")]
+        public int OrderType { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        [SugarColumn(ColumnName = "OrderStatus")]
+        public int OrderStatus { get; set; }
+
+
+        /// <summary>
+        /// 鍒涘缓鏂瑰紡
+        /// </summary>
+        [SugarColumn(ColumnName = "CreateType")]
+        public int CreateType { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(ColumnName = "Remark", Length = 255)]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鍏朵粬鍑哄簱璁㈠崟鏄庣粏
+        /// </summary>
+        [SugarColumn(ColumnName = "Dt_OtherOutboundOrderDetail")]
+        [Navigate(NavigateType.OneToMany, nameof(Dt_OtherOutboundOrderDetail.OrderId))]
+        public List<Dt_OtherOutboundOrderDetail>? Details { get; set; }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OutboundOrderDetail.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OtherOutboundOrderDetail.cs"
similarity index 87%
rename from "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OutboundOrderDetail.cs"
rename to "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OtherOutboundOrderDetail.cs"
index e9df104..f8185b8 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OutboundOrderDetail.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OtherOutboundOrderDetail.cs"
@@ -9,10 +9,10 @@
 namespace WIDESEA_Model.Models.Order
 {
     /// <summary>
-    /// 鍑哄簱鍗曟嵁鏄庣粏琛�
+    /// 鍏朵粬鍑哄簱鍗曟嵁鏄庣粏琛�
     ///</summary>
-    [SugarTable("Dt_OutboundOrderDetail")]
-    public class Dt_OutboundOrderDetail : BaseEntity
+    [SugarTable("Dt_OtherOutboundOrderDetail")]
+    public class Dt_OtherOutboundOrderDetail : BaseEntity
     {
         [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
         public int Id { get; set; }
@@ -50,10 +50,10 @@
 
 
         /// <summary>
-        /// 閿佸畾鏁伴噺
+        /// 鏈嚭搴撴暟閲�
         /// </summary>
-        [SugarColumn(ColumnName = "LockQuantity")]
-        public decimal LockQuantity { get; set; }
+        [SugarColumn(ColumnName = "NotOutQuantity")]
+        public decimal NotOutQuantity { get; set; }
 
         /// <summary>
         /// 宸插嚭搴撴暟閲�
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OutboundOrder.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OutboundOrder.cs"
deleted file mode 100644
index 0f6580e..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OutboundOrder.cs"
+++ /dev/null
@@ -1,102 +0,0 @@
-锘縰sing SqlSugar;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core.DB.Models;
-
-namespace WIDESEA_Model.Models.Order
-{
-    /// <summary>
-    /// 鎵撳嵃鍏ュ簱鍗曟嵁琛�
-    ///</summary>
-    [SugarTable("Dt_OutboundOrder")]
-    public class Dt_OutboundOrder : BaseEntity
-    {
-        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
-        public int Id { get; set; }
-
-        /// <summary>
-        /// 鍗曟嵁缂栧彿
-        /// </summary>
-        [SugarColumn(ColumnName = "OrderNo", Length = 255)]
-        public string OrderNo { get; set; }
-
-        /// <summary>
-        /// 涓婃父鍗曟嵁缂栧彿
-        /// </summary>
-        [SugarColumn(ColumnName = "UpperOrderNo", Length = 255)]
-        public string UpperOrderNo { get; set; }
-
-        /// <summary>
-        /// 鐗╂枡缂栫爜
-        /// </summary>
-        [SugarColumn(ColumnName = "MaterielCode", Length = 255)]
-        public string MaterielCode { get; set; }
-
-        /// <summary>
-        /// 鐗╂枡鍚嶇О
-        /// </summary>
-        [SugarColumn(ColumnName = "MaterielName", Length = 255)]
-        public string MaterielName { get; set; }
-
-        /// <summary>
-        /// 闇�姹傚垎绫�
-        /// </summary>
-
-        [SugarColumn(ColumnName = "DemandClassification", Length = 255)]
-        public string DemandClassification { get; set; }
-
-        /// <summary>
-        /// 鍑哄簱鏁伴噺
-        /// </summary>
-        [SugarColumn(ColumnName = "OrderQuantity")]
-        public decimal OrderQuantity { get; set; }
-
-        /// <summary>
-        /// 宸插嚭搴撴暟閲�
-        /// </summary>
-        [SugarColumn(ColumnName = "OverOutQuantity")]
-        public decimal OverOutQuantity { get; set; }
-
-        /// <summary>
-        /// 鏈嚭搴撴暟閲�
-        /// </summary>
-        [SugarColumn(ColumnName = "NotOutQuantity")]
-        public decimal NotOutQuantity { get; set; }
-
-        /// <summary>
-        /// 鍗曟嵁绫诲瀷
-        /// </summary>
-
-        [SugarColumn(ColumnName = "OrderType")]
-        public int OrderType { get; set; }
-
-        /// <summary>
-        /// 鍗曟嵁鐘舵��
-        /// </summary>
-        [SugarColumn(ColumnName = "OrderStatus")]
-        public int OrderStatus { get; set; }
-
-
-        /// <summary>
-        /// 鍒涘缓鏂瑰紡
-        /// </summary>
-        [SugarColumn(ColumnName = "CreateType")]
-        public int CreateType { get; set; }
-
-        /// <summary>
-        /// 澶囨敞
-        /// </summary>
-        [SugarColumn(ColumnName = "Remark", Length = 255)]
-        public string Remark { get; set; }
-
-        /// <summary>
-        /// 鍑哄簱璁㈠崟鏄庣粏
-        /// </summary>
-        [SugarColumn(ColumnName = "OutorderDetails")]
-        [Navigate(NavigateType.OneToMany, nameof(Dt_OutboundOrderDetail.OrderId))]
-        public List<Dt_OutboundOrderDetail>? OutorderDetails { get; set; }
-    }
-}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_ProductionOutboundOrder.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_ProductionOutboundOrder.cs"
new file mode 100644
index 0000000..44d88e3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_ProductionOutboundOrder.cs"
@@ -0,0 +1,65 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models.Order
+{
+    /// <summary>
+    /// 鐢熶骇棰嗘枡鍑哄簱鍗�
+    ///</summary>
+    [SugarTable("Dt_ProductionOutboundOrder")]
+    public class Dt_ProductionOutboundOrder : BaseEntity
+    {
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        [SugarColumn(ColumnName = "OrderNo", Length = 255)]
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 涓婃父鍗曟嵁缂栧彿
+        /// </summary>
+        [SugarColumn(ColumnName = "UpperOrderNo", Length = 255)]
+        public string UpperOrderNo { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁绫诲瀷
+        /// </summary>
+
+        [SugarColumn(ColumnName = "OrderType")]
+        public int OrderType { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        [SugarColumn(ColumnName = "OrderStatus")]
+        public int OrderStatus { get; set; }
+
+
+        /// <summary>
+        /// 鍒涘缓鏂瑰紡
+        /// </summary>
+        [SugarColumn(ColumnName = "CreateType")]
+        public int CreateType { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(ColumnName = "Remark", Length = 255)]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐢熶骇棰嗘枡鍑哄簱璁㈠崟鏄庣粏
+        /// </summary>
+        [SugarColumn(ColumnName = "Dt_ProductionOutboundOrderDetail")]
+        [Navigate(NavigateType.OneToMany, nameof(Dt_ProductionOutboundOrderDetail.OrderId))]
+        public List<Dt_ProductionOutboundOrderDetail>? Details { get; set; }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OutboundOrderDetail.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_ProductionOutboundOrderDetail.cs"
similarity index 86%
copy from "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OutboundOrderDetail.cs"
copy to "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_ProductionOutboundOrderDetail.cs"
index e9df104..87d105b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OutboundOrderDetail.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_ProductionOutboundOrderDetail.cs"
@@ -9,10 +9,10 @@
 namespace WIDESEA_Model.Models.Order
 {
     /// <summary>
-    /// 鍑哄簱鍗曟嵁鏄庣粏琛�
+    /// 鐢熶骇棰嗘枡鍑哄簱鍗曟嵁鏄庣粏琛�
     ///</summary>
-    [SugarTable("Dt_OutboundOrderDetail")]
-    public class Dt_OutboundOrderDetail : BaseEntity
+    [SugarTable("Dt_ProductionOutboundOrderDetail")]
+    public class Dt_ProductionOutboundOrderDetail : BaseEntity
     {
         [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
         public int Id { get; set; }
@@ -50,10 +50,10 @@
 
 
         /// <summary>
-        /// 閿佸畾鏁伴噺
+        /// 鏈嚭搴撴暟閲�
         /// </summary>
-        [SugarColumn(ColumnName = "LockQuantity")]
-        public decimal LockQuantity { get; set; }
+        [SugarColumn(ColumnName = "NotOutQuantity")]
+        public decimal NotOutQuantity { get; set; }
 
         /// <summary>
         /// 宸插嚭搴撴暟閲�
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_AllocateOutboundOrderDetailRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_AllocateOutboundOrderDetailRepository.cs"
new file mode 100644
index 0000000..fcdd4a1
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_AllocateOutboundOrderDetailRepository.cs"
@@ -0,0 +1,12 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_IOrderRepository;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_OrderRepository;
+
+public class Dt_AllocateOutboundOrderDetailRepository : RepositoryBase<Dt_AllocateOutboundOrderDetail>, IDt_AllocateOutboundOrderDetailRepository
+{
+    public Dt_AllocateOutboundOrderDetailRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+    {
+    }
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_AllocateOutboundOrderRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_AllocateOutboundOrderRepository.cs"
new file mode 100644
index 0000000..84181f9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_AllocateOutboundOrderRepository.cs"
@@ -0,0 +1,12 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_IOrderRepository;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_OrderRepository;
+
+public class Dt_AllocateOutboundOrderRepository : RepositoryBase<Dt_AllocateOutboundOrder>, IDt_AllocateOutboundOrderRepository
+{
+    public Dt_AllocateOutboundOrderRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+    {
+    }
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_InventoryOutboundOrderDetailRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_InventoryOutboundOrderDetailRepository.cs"
new file mode 100644
index 0000000..58311e9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_InventoryOutboundOrderDetailRepository.cs"
@@ -0,0 +1,12 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_IOrderRepository;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_OrderRepository;
+
+public class Dt_InventoryOutboundOrderDetailRepository : RepositoryBase<Dt_InventoryOutboundOrderDetail>, IDt_InventoryOutboundOrderDetailRepository
+{
+    public Dt_InventoryOutboundOrderDetailRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+    {
+    }
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_InventoryOutboundOrderRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_InventoryOutboundOrderRepository.cs"
new file mode 100644
index 0000000..ddaff17
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_InventoryOutboundOrderRepository.cs"
@@ -0,0 +1,12 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_IOrderRepository;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_OrderRepository;
+
+public class Dt_InventoryOutboundOrderRepository : RepositoryBase<Dt_InventoryOutboundOrder>, IDt_InventoryOutboundOrderRepository
+{
+    public Dt_InventoryOutboundOrderRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+    {
+    }
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_OtherOutboundOrderDetailRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_OtherOutboundOrderDetailRepository.cs"
new file mode 100644
index 0000000..2c99987
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_OtherOutboundOrderDetailRepository.cs"
@@ -0,0 +1,12 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_IOrderRepository;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_OrderRepository;
+
+public class Dt_OtherOutboundOrderDetailRepository : RepositoryBase<Dt_OtherOutboundOrderDetail>, IDt_OtherOutboundOrderDetailRepository
+{
+    public Dt_OtherOutboundOrderDetailRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+    {
+    }
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_OtherOutboundOrderRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_OtherOutboundOrderRepository.cs"
new file mode 100644
index 0000000..601182c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_OtherOutboundOrderRepository.cs"
@@ -0,0 +1,12 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_IOrderRepository;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_OrderRepository;
+
+public class Dt_OtherOutboundOrderRepository : RepositoryBase<Dt_OtherOutboundOrder>, IDt_OtherOutboundOrderRepository
+{
+    public Dt_OtherOutboundOrderRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+    {
+    }
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_OutboundOrderDetailRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_OutboundOrderDetailRepository.cs"
deleted file mode 100644
index 7898016..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_OutboundOrderDetailRepository.cs"
+++ /dev/null
@@ -1,12 +0,0 @@
-锘縰sing WIDESEA_Core.BaseRepository;
-using WIDESEA_IOrderRepository;
-using WIDESEA_Model.Models.Order;
-
-namespace WIDESEA_OrderRepository;
-
-public class Dt_OutboundOrderDetailRepository : RepositoryBase<Dt_OutboundOrderDetail>, IDt_OutboundOrderDetailRepository
-{
-    public Dt_OutboundOrderDetailRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
-    {
-    }
-}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_OutboundOrderRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_OutboundOrderRepository.cs"
deleted file mode 100644
index 77f7f96..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_OutboundOrderRepository.cs"
+++ /dev/null
@@ -1,12 +0,0 @@
-锘縰sing WIDESEA_Core.BaseRepository;
-using WIDESEA_IOrderRepository;
-using WIDESEA_Model.Models.Order;
-
-namespace WIDESEA_OrderRepository;
-
-public class Dt_OutboundOrderRepository : RepositoryBase<Dt_OutboundOrder>, IDt_OutboundOrderRepository
-{
-    public Dt_OutboundOrderRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
-    {
-    }
-}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_ProductionOutboundOrderDetailRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_ProductionOutboundOrderDetailRepository.cs"
new file mode 100644
index 0000000..dea18aa
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_ProductionOutboundOrderDetailRepository.cs"
@@ -0,0 +1,12 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_IOrderRepository;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_OrderRepository;
+
+public class Dt_ProductionOutboundOrderDetailRepository : RepositoryBase<Dt_ProductionOutboundOrderDetail>, IDt_ProductionOutboundOrderDetailRepository
+{
+    public Dt_ProductionOutboundOrderDetailRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+    {
+    }
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_ProductionOutboundOrderRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_ProductionOutboundOrderRepository.cs"
new file mode 100644
index 0000000..b3acc92
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/Dt_ProductionOutboundOrderRepository.cs"
@@ -0,0 +1,12 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_IOrderRepository;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_OrderRepository;
+
+public class Dt_ProductionOutboundOrderRepository : RepositoryBase<Dt_ProductionOutboundOrder>, IDt_ProductionOutboundOrderRepository
+{
+    public Dt_ProductionOutboundOrderRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+    {
+    }
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_AllocateOutboundOrderDetailService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_AllocateOutboundOrderDetailService.cs"
new file mode 100644
index 0000000..c00107d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_AllocateOutboundOrderDetailService.cs"
@@ -0,0 +1,62 @@
+锘縰sing SqlSugar;
+using System.Linq.Expressions;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_IOrderRepository;
+using WIDESEA_IOrderServices;
+using WIDESEA_IStorageTaskRepository;
+using WIDESEA_IStorageTaskServices;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_OrderServices
+{
+    public class Dt_AllocateOutboundOrderDetailService : ServiceBase<Dt_AllocateOutboundOrderDetail, IDt_AllocateOutboundOrderDetailRepository>, IDt_AllocateOutboundOrderDetailService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+
+        public Dt_AllocateOutboundOrderDetailService(IDt_AllocateOutboundOrderDetailRepository BaseDal,
+                                        IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+
+        }
+        public override PageGridData<Dt_AllocateOutboundOrderDetail> GetPageData(PageDataOptions options)
+        {
+            string wheres = ValidatePageOptions(options);
+            //鑾峰彇鎺掑簭瀛楁
+            Dictionary<string, OrderByType> orderbyDic = GetPageDataSort(options, TProperties);
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderbyDic)
+            {
+                OrderByModel orderByModel = new()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+
+
+            int totalCount = 0;
+            List<SearchParameters> searchParametersList = new List<SearchParameters>();
+            if (!string.IsNullOrEmpty(options.Wheres))
+            {
+                try
+                {
+                    searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
+                    options.Filter = searchParametersList;
+                }
+                catch { }
+            }
+            var data = BaseDal.Db.Queryable<Dt_AllocateOutboundOrderDetail>()
+                .WhereIF(!wheres.IsNullOrEmpty(), wheres)
+                .OrderBy(orderByModels)
+                .ToPageList(options.Page, options.Rows, ref totalCount);
+            var x=new PageGridData<Dt_AllocateOutboundOrderDetail>(totalCount, data);
+            return new PageGridData<Dt_AllocateOutboundOrderDetail>(totalCount, data);
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_AllocateOutboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_AllocateOutboundOrderService.cs"
new file mode 100644
index 0000000..233b91e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_AllocateOutboundOrderService.cs"
@@ -0,0 +1,339 @@
+锘縰sing MailKit.Search;
+using Masuit.Tools;
+using System.Linq.Expressions;
+using WIDESEA_Common;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO;
+using WIDESEA_DTO.Order;
+using WIDESEA_DTO.Stock;
+using WIDESEA_DTO.WMS;
+using WIDESEA_IOrderRepository;
+using WIDESEA_IOrderServices;
+using WIDESEA_IStorageBasicRepository;
+using WIDESEA_IStorageBasicService;
+using WIDESEA_IStorageTaskRepository;
+using WIDESEA_IStorageTaskServices;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.Order;
+using WIDESEA_OrderRepository;
+using WIDESEA_StorageTaskRepository;
+using WIDESEA_StorageTaskServices;
+
+namespace WIDESEA_OrderServices
+{
+    public class Dt_AllocateOutboundOrderService : ServiceBase<Dt_AllocateOutboundOrder, IDt_AllocateOutboundOrderRepository>, IDt_AllocateOutboundOrderService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly IDt_AllocateOutboundOrderDetailRepository _allocateoutboundOrderDetailRepository;
+        private readonly IStockInfoDetailRepository _stockInfoDetailRepository;
+        private readonly IStockInfoRepository _stockInfoRepository;
+        private readonly IStockInfoService _stockInfoService;
+        private readonly IDt_TaskService _taskService;
+        private readonly ILocationInfoRepository _locationRepository;
+        private readonly IDt_TaskRepository _taskRepository;
+        private readonly ILocationStatusChangeRecordRepository _locationStatusChangeRecordRepository;
+
+        public Dt_AllocateOutboundOrderService(IDt_AllocateOutboundOrderRepository BaseDal,
+                                        IUnitOfWorkManage unitOfWorkManage,
+                                        IDt_AllocateOutboundOrderDetailRepository allocateoutboundOrderDetailRepository,
+                                        IStockInfoDetailRepository stockInfoDetailRepository,
+                                        IStockInfoRepository stockInfoRepository,
+                                        IStockInfoService stockInfoService,
+                                        IDt_TaskService taskService,
+                                        ILocationInfoRepository locationRepository,
+                                        IDt_TaskRepository taskRepository,
+                                        ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _allocateoutboundOrderDetailRepository = allocateoutboundOrderDetailRepository;
+            _stockInfoDetailRepository = stockInfoDetailRepository;
+            _stockInfoRepository = stockInfoRepository;
+            _stockInfoService = stockInfoService;
+            _taskService = taskService;
+            _locationRepository = locationRepository;
+            _taskRepository = taskRepository;
+            _locationStatusChangeRecordRepository = locationStatusChangeRecordRepository;
+        }
+
+        public WebResponseContent GetAllocateOutboundOrder(OutboundOrderGetDTO outboundOrderGetDTO)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                Expression<Func<Dt_AllocateOutboundOrder, bool>> expressionOrder = x => true;
+                if (!string.IsNullOrEmpty(outboundOrderGetDTO.OrderNo))
+                {
+                    expressionOrder = x => x.UpperOrderNo.Contains(outboundOrderGetDTO.OrderNo);
+                }
+                int count = 0;
+                if (outboundOrderGetDTO.OrderNo == "")
+                {
+                    count = BaseDal.QueryData(x => x.OrderStatus != (int)OrderStateEmun.宸插畬鎴�).ToList().Count();
+                }
+                else
+                {
+                    count = BaseDal.QueryData(x => x.OrderStatus != (int)OrderStateEmun.宸插畬鎴� && x.UpperOrderNo == outboundOrderGetDTO.OrderNo).ToList().Count();
+                }
+
+                int maxPage = Convert.ToInt32(Math.Ceiling(count / 10.0));
+                if (outboundOrderGetDTO.pageNo <= maxPage)
+                {
+                    var outboundOrder = BaseDal.Db.Queryable<Dt_AllocateOutboundOrder>().Where(expressionOrder).OrderByDescending(x => x.CreateDate).Skip((outboundOrderGetDTO.pageNo - 1) * 10).Take(10).Select(x => new Dt_AllocateOutboundOrder
+                    {
+                        OrderNo = x.OrderNo,
+                        Id = x.Id,
+                        UpperOrderNo = x.UpperOrderNo,
+                        CreateDate = x.CreateDate,
+                        Creater = x.Creater
+                    }).ToList();
+
+                    content = WebResponseContent.Instance.OK(data: outboundOrder);
+                }
+                else
+                {
+                    var outboundOrder = BaseDal.Db.Queryable<Dt_AllocateOutboundOrder>().Where(expressionOrder).OrderByDescending(x => x.CreateDate).Skip(0 * 10).Take(10).Select(x => new Dt_AllocateOutboundOrder
+                    {
+                        OrderNo = x.OrderNo,
+                        Id = x.Id,
+                        UpperOrderNo = x.UpperOrderNo,
+                        CreateDate = x.CreateDate,
+                        Creater = x.Creater
+                    }).ToList();
+
+                    content = WebResponseContent.Instance.OK(data: outboundOrder);
+                }
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error($"鏌ヨ鍑哄簱鍗曟嵁閿欒,閿欒淇℃伅:{ex.Message}");
+            }
+            return content;
+        }
+
+        public WebResponseContent GetAllocateOutboundOrderDetail(OutboundOrderGetDTO outboundOrderGetDTO)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                var otheroutboundOrder = BaseDal.QueryFirst(x => x.Id == outboundOrderGetDTO.id);
+
+                Expression<Func<Dt_AllocateOutboundOrderDetail, bool>> expression = x => x.OrderId == otheroutboundOrder.Id;
+                if (!string.IsNullOrEmpty(outboundOrderGetDTO.searchValue))
+                {
+                    expression = x => x.OrderId == otheroutboundOrder.Id && x.MaterielCode.Contains(outboundOrderGetDTO.searchValue);
+                }
+
+                var outboundOrderdetail = _allocateoutboundOrderDetailRepository.Db.Queryable<Dt_AllocateOutboundOrderDetail>().Where(expression).Where(x => x.OrderQuantity > x.OverOutQuantity).Select(x => new Dt_AllocateOutboundOrderDetail { MaterielCode = x.MaterielCode, MaterielName = x.MaterielName, OrderQuantity = x.OrderQuantity, OverOutQuantity = x.OverOutQuantity, Id = x.Id }).ToList();
+                content = WebResponseContent.Instance.OK(data: outboundOrderdetail);
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error($"鏌ヨ鍑哄簱鍗曟嵁閿欒,閿欒淇℃伅:{ex.Message}");
+            }
+            return content;
+        }
+
+        #region 鏍规嵁鍗曟嵁鏄庣粏鐢熸垚鍑哄簱浠诲姟
+
+        public async Task<WebResponseContent> GenerateAllocateOutboundTask(GenerateOutTaskDto requestOut)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                foreach (var orderId in requestOut.orderIds)
+                {
+                    List<RequestTaskDto> taskDtos = new List<RequestTaskDto>();
+                    Dt_AllocateOutboundOrderDetail allocateoutboundOrderdetail = _allocateoutboundOrderDetailRepository.QueryFirst(x => x.Id == orderId);
+                    Dt_AllocateOutboundOrder outboundOrder = BaseDal.QueryFirst(x => x.Id == allocateoutboundOrderdetail.OrderId);
+
+                    (bool, string) checkResult = CheckSelectStockDeital(allocateoutboundOrderdetail, requestOut.stockViews, requestOut);
+                    if (!checkResult.Item1) throw new Exception(checkResult.Item2);
+
+                    else
+                    {
+                        var result = AssignStockOutbound(allocateoutboundOrderdetail, requestOut.stockViews);
+
+                        if (result.Item1.Count <= 0)
+                        {
+                            return content.Error("鏈壘鍒板簱瀛樺垎閰嶏紝璇风‘璁ゆ槸鍚﹀瓨鍦ㄥ簱瀛樻垨鍗曟嵁鏁伴噺宸插嚭瀹�");
+                        }
+
+                        result.Item1.Distinct().ForEach(item =>
+                        {
+                            RequestTaskDto task = new RequestTaskDto
+                            {
+                                TaskType = outboundOrder.OrderType,
+                                OrderNo = outboundOrder.OrderNo,
+                                MaterielCode = allocateoutboundOrderdetail.MaterielCode,
+                                Position = item.LocationCode,
+                                PalletCode = item.PalletCode,
+                                AreaId = Convert.ToInt32(requestOut.AreaId),
+                            };
+                            taskDtos.Add(task);
+                            item.StockInfoDetails.Where(x => x.MaterielCode == allocateoutboundOrderdetail.MaterielCode).FirstOrDefault().Status = (int)StockStateEmun.鍑哄簱閿佸畾;
+                            item.StockStatus = (int)StockStateEmun.鍑哄簱閿佸畾;
+                        });
+                        List<Dt_Task> taskNews = new List<Dt_Task>();
+                        List<WMSTaskDTO> taskDTOs = new List<WMSTaskDTO>();
+                        foreach (var item in taskDtos)
+                        {
+                            taskNews.Add(await _taskService.RequestOutboundTaskAsync(item));
+
+                        }
+                        List<DtLocationStatusChangeRecord> locationStatusChangeRecords = new List<DtLocationStatusChangeRecord>();
+                        List<DtLocationInfo> locations = new List<DtLocationInfo>();
+                        foreach (var item in taskNews)
+                        {
+                            taskDTOs.Add(CreateTaskDTO(item));
+                            var result1 = _taskService.UpdateLocationStatus(item.SourceAddress, LocationEnum.InStockDisable, item.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticOutbound);
+                            var result2 = _taskService.UpdateLocationStatus(item.TargetAddress, LocationEnum.Lock, item.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticOutbound);
+                            locationStatusChangeRecords.AddRange(result1.Item1);
+                            locationStatusChangeRecords.AddRange(result2.Item1);
+                            locations.AddRange(result1.Item2);
+                            locations.AddRange(result2.Item2);
+                        }
+
+                        await _unitOfWorkManage.UseTranAsync(async () =>
+                        {
+                            _taskRepository.AddData(taskNews);
+                            _stockInfoRepository.UpdateDataNav(result.Item1);
+                            await _locationStatusChangeRecordRepository.AddDataAsync(locationStatusChangeRecords);
+                            await _locationRepository.UpdateDataAsync(locations);
+                            _allocateoutboundOrderDetailRepository.UpdateData(result.Item2);
+                        });
+                        content = await _taskService.SendWCSTask(taskDTOs);
+                    }
+                }
+                return content;
+            }
+            catch (Exception ex)
+            {
+                return content.Error(ex.Message);
+            }
+
+        }
+        private WMSTaskDTO CreateTaskDTO(Dt_Task task)
+        {
+            return new WMSTaskDTO
+            {
+                TaskNum = task.TaskNum.Value,
+                Grade = task.Grade.Value,
+                PalletCode = task.PalletCode,
+                RoadWay = task.Roadway,
+                SourceAddress = task.SourceAddress,
+                TargetAddress = task.TargetAddress,
+                TaskState = task.TaskState,
+                Id = 0,
+                TaskType = task.TaskType,
+                AGVTaskNum = task.AGVTaskNum,
+                Remark = task.Remark
+            };
+        }
+        public (List<DtStockInfo>, Dt_AllocateOutboundOrderDetail) AssignStockOutbound(Dt_AllocateOutboundOrderDetail allocateoutboundOrderdetail, List<StockSelectViewDTO> stockSelectViews)
+        {
+            decimal originalNeedQuantity = allocateoutboundOrderdetail.OrderQuantity - allocateoutboundOrderdetail.OverOutQuantity;
+
+            decimal needQuantity = originalNeedQuantity;
+
+            List<DtStockInfo> outStocks = new List<DtStockInfo>();
+            if (stockSelectViews != null && stockSelectViews.Count > 0)
+            {
+                outStocks = BaseDal.Db.Queryable<DtStockInfo>().Where(x => stockSelectViews.Select(x => x.PalletCode).ToList().Contains(x.PalletCode)).Includes(x => x.StockInfoDetails).ToList();
+            }
+            else
+            {
+                outStocks = GetStockInfos(allocateoutboundOrderdetail.MaterielCode);
+            }
+
+            List<DtStockInfo> outStockNews = new List<DtStockInfo>();
+
+            foreach (var item in outStocks)
+            {
+                var stockDetail = item.StockInfoDetails
+                .Where(d => d.MaterielCode == allocateoutboundOrderdetail.MaterielCode && d.Quantity > 0);
+                if (needQuantity <= 0)
+                {
+                    continue;
+                }
+                foreach (var detail in stockDetail)
+                {
+                    if (detail != null)
+                    {
+                        if (needQuantity >= detail.Quantity)
+                        {
+                            if (detail.Quantity <= detail.OutboundQuantity)
+                            {
+                                continue;
+                            }
+                            needQuantity -= detail.Quantity;
+                            detail.OutboundQuantity = detail.Quantity;
+                        }
+                        else
+                        {
+                            if (detail.Quantity <= detail.OutboundQuantity)
+                            {
+                                continue;
+                            }
+                            detail.OutboundQuantity = needQuantity;
+                            needQuantity = 0;
+                        }
+                        outStockNews.Add(item);
+                    }
+                }
+
+            }
+            allocateoutboundOrderdetail.OverOutQuantity = allocateoutboundOrderdetail.OrderQuantity - needQuantity;
+
+            if (allocateoutboundOrderdetail.OverOutQuantity != 0)
+            {
+                allocateoutboundOrderdetail.OrderDetailStatus = (int)OrderStateEmun.寮�濮�;
+            }
+            return (outStockNews, allocateoutboundOrderdetail);
+        }
+
+        private (bool, string) CheckSelectStockDeital(Dt_AllocateOutboundOrderDetail allocateoutboundOrderdetail, List<StockSelectViewDTO> stockSelectViews, GenerateOutTaskDto requestOut)
+        {
+            if (allocateoutboundOrderdetail == null)
+            {
+                return (false, "鏈壘鍒板嚭搴撳崟淇℃伅");
+            }
+            if (allocateoutboundOrderdetail.OrderDetailStatus == (int)OrderStateEmun.宸插畬鎴�)
+            {
+                return (false, "璇ユ槑缁嗕笉鍙搷浣�");
+            }
+            if (stockSelectViews != null && stockSelectViews.Sum(x => x.UseableQuantity) > allocateoutboundOrderdetail.OrderQuantity - allocateoutboundOrderdetail.OverOutQuantity)
+            {
+                return (false, "閫夋嫨鏁伴噺瓒呭嚭鍗曟嵁鏁伴噺");
+            }
+            if (allocateoutboundOrderdetail.OrderQuantity <= allocateoutboundOrderdetail.OverOutQuantity)
+            {
+                return (false, "鍗曟嵁鏁伴噺宸插嚭搴撳畬鎴�");
+            }
+            return (true, "鎴愬姛");
+        }
+
+        public List<DtStockInfo> GetStockInfos(string materielCode)
+        {
+            var stocks = BaseDal.Db.Queryable<DtStockInfo>()
+            .Includes(x => x.StockInfoDetails)
+            .Includes(x => x.LocationInfo)
+            .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable)
+            .Where(x => x.StockInfoDetails.Any(d => d.MaterielCode == materielCode && d.Quantity > 0)).ToList().OrderBy(x => x.CreateDate).ToList();
+
+            if (stocks == null || stocks.Count() <= 0)
+            {
+                return stocks;
+            }
+
+            var locations = stocks.Select(s => s.LocationInfo).ToList();
+            List<DtLocationInfo> locationInfos = _stockInfoService.GetStockLocations(locations).Distinct().ToList();
+            stocks = stocks.Where(s => s.LocationInfo != null && locationInfos.Contains(s.LocationInfo)).ToList();
+            return stocks;
+        }
+        #endregion 鏍规嵁鍗曟嵁鏄庣粏鐢熸垚鍑哄簱浠诲姟
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_InventoryOutboundOrderDetailService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_InventoryOutboundOrderDetailService.cs"
new file mode 100644
index 0000000..2895893
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_InventoryOutboundOrderDetailService.cs"
@@ -0,0 +1,62 @@
+锘縰sing SqlSugar;
+using System.Linq.Expressions;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_IOrderRepository;
+using WIDESEA_IOrderServices;
+using WIDESEA_IStorageTaskRepository;
+using WIDESEA_IStorageTaskServices;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_OrderServices
+{
+    public class Dt_InventoryOutboundOrderDetailService : ServiceBase<Dt_InventoryOutboundOrderDetail, IDt_InventoryOutboundOrderDetailRepository>, IDt_InventoryOutboundOrderDetailService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+
+        public Dt_InventoryOutboundOrderDetailService(IDt_InventoryOutboundOrderDetailRepository BaseDal,
+                                        IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+
+        }
+        public override PageGridData<Dt_InventoryOutboundOrderDetail> GetPageData(PageDataOptions options)
+        {
+            string wheres = ValidatePageOptions(options);
+            //鑾峰彇鎺掑簭瀛楁
+            Dictionary<string, OrderByType> orderbyDic = GetPageDataSort(options, TProperties);
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderbyDic)
+            {
+                OrderByModel orderByModel = new()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+
+
+            int totalCount = 0;
+            List<SearchParameters> searchParametersList = new List<SearchParameters>();
+            if (!string.IsNullOrEmpty(options.Wheres))
+            {
+                try
+                {
+                    searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
+                    options.Filter = searchParametersList;
+                }
+                catch { }
+            }
+            var data = BaseDal.Db.Queryable<Dt_InventoryOutboundOrderDetail>()
+                .WhereIF(!wheres.IsNullOrEmpty(), wheres)
+                .OrderBy(orderByModels)
+                .ToPageList(options.Page, options.Rows, ref totalCount);
+            var x=new PageGridData<Dt_InventoryOutboundOrderDetail>(totalCount, data);
+            return new PageGridData<Dt_InventoryOutboundOrderDetail>(totalCount, data);
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_InventoryOutboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_InventoryOutboundOrderService.cs"
new file mode 100644
index 0000000..bb9f4e2
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_InventoryOutboundOrderService.cs"
@@ -0,0 +1,368 @@
+锘縰sing MailKit.Search;
+using Masuit.Tools;
+using System.Linq.Expressions;
+using WIDESEA_Common;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO;
+using WIDESEA_DTO.Order;
+using WIDESEA_DTO.Stock;
+using WIDESEA_DTO.WMS;
+using WIDESEA_IOrderRepository;
+using WIDESEA_IOrderServices;
+using WIDESEA_IStorageBasicRepository;
+using WIDESEA_IStorageBasicService;
+using WIDESEA_IStorageTaskRepository;
+using WIDESEA_IStorageTaskServices;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.Order;
+using WIDESEA_OrderRepository;
+
+namespace WIDESEA_OrderServices
+{
+    public class Dt_InventoryOutboundOrderService : ServiceBase<Dt_InventoryOutboundOrder, IDt_InventoryOutboundOrderRepository>, IDt_InventoryOutboundOrderService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly IDt_InventoryOutboundOrderDetailRepository _inventoryoutboundOrderDetailRepository;
+        private readonly IStockInfoDetailRepository _stockInfoDetailRepository;
+        private readonly IStockInfoRepository _stockInfoRepository;
+        private readonly IStockInfoService _stockInfoService;
+        private readonly IDt_TaskService _taskService;
+        private readonly ILocationInfoRepository _locationRepository;
+        private readonly IDt_TaskRepository _taskRepository;
+        private readonly ILocationStatusChangeRecordRepository _locationStatusChangeRecordRepository;
+
+        public Dt_InventoryOutboundOrderService(IDt_InventoryOutboundOrderRepository BaseDal,
+                                        IUnitOfWorkManage unitOfWorkManage,
+                                        IDt_InventoryOutboundOrderDetailRepository inventoryoutboundOrderDetailRepository,
+                                        IStockInfoDetailRepository stockInfoDetailRepository,
+                                        IStockInfoRepository stockInfoRepository,
+                                        IStockInfoService stockInfoService,
+                                        IDt_TaskService taskService,
+                                        ILocationInfoRepository locationRepository,
+                                        IDt_TaskRepository taskRepository,
+                                        ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _inventoryoutboundOrderDetailRepository = inventoryoutboundOrderDetailRepository;
+            _stockInfoDetailRepository = stockInfoDetailRepository;
+            _stockInfoRepository = stockInfoRepository;
+            _stockInfoService = stockInfoService;
+            _taskService = taskService;
+            _locationRepository = locationRepository;
+            _taskRepository = taskRepository;
+            _locationStatusChangeRecordRepository = locationStatusChangeRecordRepository;
+        }
+
+        public override WebResponseContent AddData(SaveModel saveModel)
+        {
+            saveModel.MainData.Add("orderNo", GetOrderPintCode("OrderNoOut"));
+            saveModel.MainData.Add("upperOrderNo", saveModel.MainData["orderNo"]);
+            saveModel.MainData.Add("orderType", (int)OrderTypeEmun.鐩樼偣鍑哄簱鍗�);
+            saveModel.MainData.Add("orderStatus", (int)OrderStateEmun.鏈紑濮�);
+            saveModel.MainData.Add("createType", (int)OrderCreateTypeEmun.鎵嬪姩鍒涘缓);
+            return base.AddData(saveModel);
+        }
+
+        public WebResponseContent GetInventoryOutboundOrder(OutboundOrderGetDTO outboundOrderGetDTO)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                Expression<Func<Dt_InventoryOutboundOrder, bool>> expressionOrder = x => true;
+                if (!string.IsNullOrEmpty(outboundOrderGetDTO.OrderNo))
+                {
+                    expressionOrder = x => x.UpperOrderNo.Contains(outboundOrderGetDTO.OrderNo);
+                }
+                int count = 0;
+                if (outboundOrderGetDTO.OrderNo == "")
+                {
+                    count = BaseDal.QueryData(x => x.OrderStatus != (int)OrderStateEmun.宸插畬鎴�).ToList().Count();
+                }
+                else
+                {
+                    count = BaseDal.QueryData(x => x.OrderStatus != (int)OrderStateEmun.宸插畬鎴� && x.UpperOrderNo == outboundOrderGetDTO.OrderNo).ToList().Count();
+                }
+
+                int maxPage = Convert.ToInt32(Math.Ceiling(count / 10.0));
+                if (outboundOrderGetDTO.pageNo <= maxPage)
+                {
+                    var outboundOrder = BaseDal.Db.Queryable<Dt_InventoryOutboundOrder>().Where(expressionOrder).OrderByDescending(x => x.CreateDate).Skip((outboundOrderGetDTO.pageNo - 1) * 10).Take(10).Select(x => new Dt_InventoryOutboundOrder
+                    {
+                        OrderNo = x.OrderNo,
+                        Id = x.Id,
+                        UpperOrderNo = x.UpperOrderNo,
+                        CreateDate = x.CreateDate,
+                        Creater = x.Creater
+                    }).ToList();
+
+                    content = WebResponseContent.Instance.OK(data: outboundOrder);
+                }
+                else
+                {
+                    var outboundOrder = BaseDal.Db.Queryable<Dt_InventoryOutboundOrder>().Where(expressionOrder).OrderByDescending(x => x.CreateDate).Skip(0 * 10).Take(10).Select(x => new Dt_InventoryOutboundOrder
+                    {
+                        OrderNo = x.OrderNo,
+                        Id = x.Id,
+                        UpperOrderNo = x.UpperOrderNo,
+                        CreateDate = x.CreateDate,
+                        Creater = x.Creater
+                    }).ToList();
+
+                    content = WebResponseContent.Instance.OK(data: outboundOrder);
+                }
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error($"鏌ヨ鍑哄簱鍗曟嵁閿欒,閿欒淇℃伅:{ex.Message}");
+            }
+            return content;
+        }
+
+        public WebResponseContent GetInventoryOutboundOrderDetail(OutboundOrderGetDTO outboundOrderGetDTO)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                var otheroutboundOrder = BaseDal.QueryFirst(x => x.Id == outboundOrderGetDTO.id);
+
+                Expression<Func<Dt_InventoryOutboundOrderDetail, bool>> expression = x => x.OrderId == otheroutboundOrder.Id;
+                if (!string.IsNullOrEmpty(outboundOrderGetDTO.searchValue))
+                {
+                    expression = x => x.OrderId == otheroutboundOrder.Id && x.MaterielCode.Contains(outboundOrderGetDTO.searchValue);
+                }
+
+                var otheroutboundOrderdetail = _inventoryoutboundOrderDetailRepository.Db.Queryable<Dt_InventoryOutboundOrderDetail>().Where(expression).Where(x => x.OrderQuantity > x.OverOutQuantity).Select(x => new Dt_InventoryOutboundOrderDetail { MaterielCode = x.MaterielCode, MaterielName = x.MaterielName, OrderQuantity = x.OrderQuantity, OverOutQuantity = x.OverOutQuantity, Id = x.Id }).ToList();
+                content = WebResponseContent.Instance.OK(data: otheroutboundOrderdetail);
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error($"鏌ヨ鍑哄簱鍗曟嵁閿欒,閿欒淇℃伅:{ex.Message}");
+            }
+            return content;
+        }
+
+        #region 鏍规嵁鍗曟嵁鏄庣粏鐢熸垚鍑哄簱浠诲姟
+
+        public async Task<WebResponseContent> GenerateInventoryOutboundTask(GenerateOutTaskDto requestOut)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                foreach (var orderId in requestOut.orderIds)
+                {
+                    List<RequestTaskDto> taskDtos = new List<RequestTaskDto>();
+                    Dt_InventoryOutboundOrderDetail outboundOrderdetail = _inventoryoutboundOrderDetailRepository.QueryFirst(x => x.Id == orderId);
+                    Dt_InventoryOutboundOrder outboundOrder = BaseDal.QueryFirst(x => x.Id == outboundOrderdetail.OrderId);
+
+                    (bool, string) checkResult = CheckSelectStockDeital(outboundOrderdetail, requestOut.stockViews, requestOut);
+                    if (!checkResult.Item1) throw new Exception(checkResult.Item2);
+
+                    else
+                    {
+                        var result = AssignStockOutbound(outboundOrderdetail, requestOut.stockViews);
+
+                        if (result.Item1.Count <= 0)
+                        {
+                            return content.Error("鏈壘鍒板簱瀛樺垎閰嶏紝璇风‘璁ゆ槸鍚﹀瓨鍦ㄥ簱瀛樻垨鍗曟嵁鏁伴噺宸插嚭瀹�");
+                        }
+
+                        result.Item1.Distinct().ForEach(item =>
+                        {
+                            RequestTaskDto task = new RequestTaskDto
+                            {
+                                TaskType = outboundOrder.OrderType,
+                                OrderNo = outboundOrder.OrderNo,
+                                MaterielCode = outboundOrderdetail.MaterielCode,
+                                Position = item.LocationCode,
+                                PalletCode = item.PalletCode,
+                                AreaId = Convert.ToInt32(requestOut.AreaId),
+                            };
+                            taskDtos.Add(task);
+                            item.StockInfoDetails.Where(x => x.MaterielCode == outboundOrderdetail.MaterielCode).FirstOrDefault().Status = (int)StockStateEmun.鍑哄簱閿佸畾;
+                            item.StockStatus = (int)StockStateEmun.鍑哄簱閿佸畾;
+                        });
+                        List<Dt_Task> taskNews = new List<Dt_Task>();
+                        List<WMSTaskDTO> taskDTOs = new List<WMSTaskDTO>();
+                        foreach (var item in taskDtos)
+                        {
+                            taskNews.Add(await _taskService.RequestOutboundTaskAsync(item));
+
+                        }
+                        List<DtLocationStatusChangeRecord> locationStatusChangeRecords = new List<DtLocationStatusChangeRecord>();
+                        List<DtLocationInfo> locations = new List<DtLocationInfo>();
+                        foreach (var item in taskNews)
+                        {
+                            taskDTOs.Add(CreateTaskDTO(item));
+                            var result1 = _taskService.UpdateLocationStatus(item.SourceAddress, LocationEnum.InStockDisable, item.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticOutbound);
+                            var result2 = _taskService.UpdateLocationStatus(item.TargetAddress, LocationEnum.Lock, item.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticOutbound);
+                            locationStatusChangeRecords.AddRange(result1.Item1);
+                            locationStatusChangeRecords.AddRange(result2.Item1);
+                            locations.AddRange(result1.Item2);
+                            locations.AddRange(result2.Item2);
+                        }
+
+                        await _unitOfWorkManage.UseTranAsync(async () =>
+                        {
+                            _taskRepository.AddData(taskNews);
+                            _stockInfoRepository.UpdateDataNav(result.Item1);
+                            await _locationStatusChangeRecordRepository.AddDataAsync(locationStatusChangeRecords);
+                            await _locationRepository.UpdateDataAsync(locations);
+                            _inventoryoutboundOrderDetailRepository.UpdateData(result.Item2);
+                        });
+                        content = await _taskService.SendWCSTask(taskDTOs);
+                    }
+                }
+                return content;
+            }
+            catch (Exception ex)
+            {
+                return content.Error(ex.Message);
+            }
+
+        }
+        private WMSTaskDTO CreateTaskDTO(Dt_Task task)
+        {
+            return new WMSTaskDTO
+            {
+                TaskNum = task.TaskNum.Value,
+                Grade = task.Grade.Value,
+                PalletCode = task.PalletCode,
+                RoadWay = task.Roadway,
+                SourceAddress = task.SourceAddress,
+                TargetAddress = task.TargetAddress,
+                TaskState = task.TaskState,
+                Id = 0,
+                TaskType = task.TaskType,
+                AGVTaskNum = task.AGVTaskNum,
+                Remark = task.Remark
+            };
+        }
+        public (List<DtStockInfo>, Dt_InventoryOutboundOrderDetail) AssignStockOutbound(Dt_InventoryOutboundOrderDetail inventoryOutboundOrderDetail, List<StockSelectViewDTO> stockSelectViews)
+        {
+            decimal originalNeedQuantity = inventoryOutboundOrderDetail.OrderQuantity - inventoryOutboundOrderDetail.OverOutQuantity;
+
+            decimal needQuantity = originalNeedQuantity;
+
+            List<DtStockInfo> outStocks = new List<DtStockInfo>();
+            if (stockSelectViews != null && stockSelectViews.Count > 0)
+            {
+                outStocks = BaseDal.Db.Queryable<DtStockInfo>().Where(x => stockSelectViews.Select(x => x.PalletCode).ToList().Contains(x.PalletCode)).Includes(x => x.StockInfoDetails).ToList();
+            }
+            else
+            {
+                outStocks = GetStockInfos(inventoryOutboundOrderDetail.MaterielCode);
+            }
+
+            List<DtStockInfo> outStockNews = new List<DtStockInfo>();
+
+            foreach (var item in outStocks)
+            {
+                var stockDetail = item.StockInfoDetails
+                .Where(d => d.MaterielCode == inventoryOutboundOrderDetail.MaterielCode && d.Quantity > 0);
+                if (needQuantity <= 0)
+                {
+                    continue;
+                }
+                foreach (var detail in stockDetail)
+                {
+                    if (detail != null)
+                    {
+                        if (needQuantity >= detail.Quantity)
+                        {
+                            if (detail.Quantity <= detail.OutboundQuantity)
+                            {
+                                continue;
+                            }
+                            needQuantity -= detail.Quantity;
+                            detail.OutboundQuantity = detail.Quantity;
+                        }
+                        else
+                        {
+                            if (detail.Quantity <= detail.OutboundQuantity)
+                            {
+                                continue;
+                            }
+                            detail.OutboundQuantity = needQuantity;
+                            needQuantity = 0;
+                        }
+                        outStockNews.Add(item);
+                    }
+                }
+
+            }
+            inventoryOutboundOrderDetail.OverOutQuantity = inventoryOutboundOrderDetail.OrderQuantity - needQuantity;
+
+            if (inventoryOutboundOrderDetail.OverOutQuantity != 0)
+            {
+                inventoryOutboundOrderDetail.OrderDetailStatus = (int)OrderStateEmun.寮�濮�;
+            }
+            return (outStockNews, inventoryOutboundOrderDetail);
+        }
+
+        private (bool, string) CheckSelectStockDeital(Dt_InventoryOutboundOrderDetail inventoryOutboundOrderDetail, List<StockSelectViewDTO> stockSelectViews, GenerateOutTaskDto requestOut)
+        {
+            if (inventoryOutboundOrderDetail == null)
+            {
+                return (false, "鏈壘鍒板嚭搴撳崟淇℃伅");
+            }
+            if (inventoryOutboundOrderDetail.OrderDetailStatus == (int)OrderStateEmun.宸插畬鎴�)
+            {
+                return (false, "璇ユ槑缁嗕笉鍙搷浣�");
+            }
+            if (stockSelectViews != null && stockSelectViews.Sum(x => x.UseableQuantity) > inventoryOutboundOrderDetail.OrderQuantity - inventoryOutboundOrderDetail.OverOutQuantity)
+            {
+                return (false, "閫夋嫨鏁伴噺瓒呭嚭鍗曟嵁鏁伴噺");
+            }
+            if (inventoryOutboundOrderDetail.OrderQuantity <= inventoryOutboundOrderDetail.OverOutQuantity)
+            {
+                return (false, "鍗曟嵁鏁伴噺宸插嚭搴撳畬鎴�");
+            }
+            return (true, "鎴愬姛");
+        }
+
+        public List<DtStockInfo> GetStockInfos(string materielCode)
+        {
+            var stocks = BaseDal.Db.Queryable<DtStockInfo>()
+            .Includes(x => x.StockInfoDetails)
+            .Includes(x => x.LocationInfo)
+            .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable)
+            .Where(x => x.StockInfoDetails.Any(d => d.MaterielCode == materielCode && d.Quantity > 0)).ToList().OrderBy(x => x.CreateDate).ToList();
+
+            if (stocks == null || stocks.Count() <= 0)
+            {
+                return stocks;
+            }
+
+            var locations = stocks.Select(s => s.LocationInfo).ToList();
+            List<DtLocationInfo> locationInfos = _stockInfoService.GetStockLocations(locations).Distinct().ToList();
+            stocks = stocks.Where(s => s.LocationInfo != null && locationInfos.Contains(s.LocationInfo)).ToList();
+            return stocks;
+        }
+        #endregion 鏍规嵁鍗曟嵁鏄庣粏鐢熸垚鍑哄簱浠诲姟
+
+
+        public string GetOrderPintCode(string printCode)
+        {
+            string PrintCode = "";
+            var PrintSetting = SqlSugarHelper.DbWMS.Queryable<Dt_PrintSetting>().Where(x => x.PrintCode == printCode).ToList().FirstOrDefault();
+
+            if (PrintSetting.Spare1 == DateTime.Now.ToString("yyyyMMdd"))
+            {
+                PrintCode = PrintSetting.Spare1 + PrintSetting.PrintNo.ToString().PadLeft(PrintSetting.Spare2, '0');
+                PrintSetting.PrintNo = PrintSetting.PrintNo + 1;
+            }
+            else
+            {
+                PrintSetting.Spare1 = DateTime.Now.ToString("yyyyMMdd");
+                PrintSetting.PrintNo = 2;
+                PrintCode = PrintSetting.Spare1 + 1.ToString().PadLeft(PrintSetting.Spare2, '0');
+            }
+            SqlSugarHelper.DbWMS.Updateable(PrintSetting).ExecuteCommand();
+            return PrintCode;
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_OtherOutboundOrderDetailService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_OtherOutboundOrderDetailService.cs"
new file mode 100644
index 0000000..b04a472
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_OtherOutboundOrderDetailService.cs"
@@ -0,0 +1,62 @@
+锘縰sing SqlSugar;
+using System.Linq.Expressions;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_IOrderRepository;
+using WIDESEA_IOrderServices;
+using WIDESEA_IStorageTaskRepository;
+using WIDESEA_IStorageTaskServices;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_OrderServices
+{
+    public class Dt_OtherOutboundOrderDetailService : ServiceBase<Dt_OtherOutboundOrderDetail, IDt_OtherOutboundOrderDetailRepository>, IDt_OtherOutboundOrderDetailService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+
+        public Dt_OtherOutboundOrderDetailService(IDt_OtherOutboundOrderDetailRepository BaseDal,
+                                        IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+
+        }
+        public override PageGridData<Dt_OtherOutboundOrderDetail> GetPageData(PageDataOptions options)
+        {
+            string wheres = ValidatePageOptions(options);
+            //鑾峰彇鎺掑簭瀛楁
+            Dictionary<string, OrderByType> orderbyDic = GetPageDataSort(options, TProperties);
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderbyDic)
+            {
+                OrderByModel orderByModel = new()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+
+
+            int totalCount = 0;
+            List<SearchParameters> searchParametersList = new List<SearchParameters>();
+            if (!string.IsNullOrEmpty(options.Wheres))
+            {
+                try
+                {
+                    searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
+                    options.Filter = searchParametersList;
+                }
+                catch { }
+            }
+            var data = BaseDal.Db.Queryable<Dt_OtherOutboundOrderDetail>()
+                .WhereIF(!wheres.IsNullOrEmpty(), wheres)
+                .OrderBy(orderByModels)
+                .ToPageList(options.Page, options.Rows, ref totalCount);
+            var x=new PageGridData<Dt_OtherOutboundOrderDetail>(totalCount, data);
+            return new PageGridData<Dt_OtherOutboundOrderDetail>(totalCount, data);
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_OtherOutboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_OtherOutboundOrderService.cs"
new file mode 100644
index 0000000..52fca6c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_OtherOutboundOrderService.cs"
@@ -0,0 +1,369 @@
+锘縰sing MailKit.Search;
+using Masuit.Tools;
+using System.Linq.Expressions;
+using WIDESEA_Common;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO;
+using WIDESEA_DTO.Order;
+using WIDESEA_DTO.Stock;
+using WIDESEA_DTO.WMS;
+using WIDESEA_IOrderRepository;
+using WIDESEA_IOrderServices;
+using WIDESEA_IStorageBasicRepository;
+using WIDESEA_IStorageBasicService;
+using WIDESEA_IStorageTaskRepository;
+using WIDESEA_IStorageTaskServices;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.Order;
+using WIDESEA_StorageTaskRepository;
+using WIDESEA_StorageTaskServices;
+
+namespace WIDESEA_OrderServices
+{
+    public class Dt_OtherOutboundOrderService : ServiceBase<Dt_OtherOutboundOrder, IDt_OtherOutboundOrderRepository>, IDt_OtherOutboundOrderService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly IDt_OtherOutboundOrderDetailRepository _outboundOrderDetailRepository;
+        private readonly IStockInfoDetailRepository _stockInfoDetailRepository;
+        private readonly IStockInfoRepository _stockInfoRepository;
+        private readonly IStockInfoService _stockInfoService;
+        private readonly IDt_TaskService _taskService;
+        private readonly ILocationInfoRepository _locationRepository;
+        private readonly IDt_TaskRepository _taskRepository; 
+        private readonly ILocationStatusChangeRecordRepository _locationStatusChangeRecordRepository;
+
+        public Dt_OtherOutboundOrderService(IDt_OtherOutboundOrderRepository BaseDal,
+                                        IUnitOfWorkManage unitOfWorkManage,
+                                        IDt_OtherOutboundOrderDetailRepository outboundOrderDetailRepository,
+                                        IStockInfoDetailRepository stockInfoDetailRepository,
+                                        IStockInfoRepository stockInfoRepository,
+                                        IStockInfoService stockInfoService,
+                                        IDt_TaskService taskService,
+                                        ILocationInfoRepository locationRepository,
+                                        IDt_TaskRepository taskRepository,
+                                        ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _outboundOrderDetailRepository = outboundOrderDetailRepository;
+            _stockInfoDetailRepository = stockInfoDetailRepository;
+            _stockInfoRepository = stockInfoRepository;
+            _stockInfoService = stockInfoService;
+            _taskService = taskService;
+            _locationRepository = locationRepository;
+            _taskRepository = taskRepository;
+            _locationStatusChangeRecordRepository = locationStatusChangeRecordRepository;
+        }
+
+        public override WebResponseContent AddData(SaveModel saveModel)
+        {
+            saveModel.MainData.Add("orderNo", GetOrderPintCode("OrderNoOut"));
+            saveModel.MainData.Add("upperOrderNo", saveModel.MainData["orderNo"]);
+            saveModel.MainData.Add("orderType", (int)OrderTypeEmun.鍏朵粬鍑哄簱鍗�);
+            saveModel.MainData.Add("orderStatus", (int)OrderStateEmun.鏈紑濮�);
+            saveModel.MainData.Add("createType", (int)OrderCreateTypeEmun.鎵嬪姩鍒涘缓);
+            return base.AddData(saveModel);
+        }
+
+
+        public WebResponseContent GetOtherOutboundOrder(OutboundOrderGetDTO outboundOrderGetDTO)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                Expression<Func<Dt_OtherOutboundOrder, bool>> expressionOrder = x => true;
+                if (!string.IsNullOrEmpty(outboundOrderGetDTO.OrderNo))
+                {
+                    expressionOrder = x => x.UpperOrderNo.Contains(outboundOrderGetDTO.OrderNo);
+                }
+                int count = 0;
+                if (outboundOrderGetDTO.OrderNo == "")
+                {
+                    count = BaseDal.QueryData(x => x.OrderStatus != (int)OrderStateEmun.宸插畬鎴�).ToList().Count();
+                }
+                else
+                {
+                    count = BaseDal.QueryData(x => x.OrderStatus != (int)OrderStateEmun.宸插畬鎴� && x.UpperOrderNo == outboundOrderGetDTO.OrderNo).ToList().Count();
+                }
+
+                int maxPage = Convert.ToInt32(Math.Ceiling(count / 10.0));
+                if (outboundOrderGetDTO.pageNo <= maxPage)
+                {
+                    var outboundOrder = BaseDal.Db.Queryable<Dt_OtherOutboundOrder>().Where(expressionOrder).OrderByDescending(x => x.CreateDate).Skip((outboundOrderGetDTO.pageNo - 1) * 10).Take(10).Select(x => new Dt_OtherOutboundOrder
+                    {
+                        OrderNo = x.OrderNo,
+                        Id = x.Id,
+                        UpperOrderNo = x.UpperOrderNo,
+                        CreateDate = x.CreateDate,
+                        Creater = x.Creater
+                    }).ToList();
+
+                    content = WebResponseContent.Instance.OK(data: outboundOrder);
+                }
+                else
+                {
+                    var outboundOrder = BaseDal.Db.Queryable<Dt_OtherOutboundOrder>().Where(expressionOrder).OrderByDescending(x => x.CreateDate).Skip(0 * 10).Take(10).Select(x => new Dt_OtherOutboundOrder
+                    {
+                        OrderNo = x.OrderNo,
+                        Id = x.Id,
+                        UpperOrderNo = x.UpperOrderNo,
+                        CreateDate = x.CreateDate,
+                        Creater = x.Creater
+                    }).ToList();
+
+                    content = WebResponseContent.Instance.OK(data: outboundOrder);
+                }
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error($"鏌ヨ鍑哄簱鍗曟嵁閿欒,閿欒淇℃伅:{ex.Message}");
+            }
+            return content;
+        }
+
+        public WebResponseContent GetOtherOutboundOrderDetail(OutboundOrderGetDTO outboundOrderGetDTO)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                var otheroutboundOrder = BaseDal.QueryFirst(x => x.Id == outboundOrderGetDTO.id);
+
+                Expression<Func<Dt_OtherOutboundOrderDetail, bool>> expression = x => x.OrderId == otheroutboundOrder.Id;
+                if (!string.IsNullOrEmpty(outboundOrderGetDTO.searchValue))
+                {
+                    expression = x => x.OrderId == otheroutboundOrder.Id && x.MaterielCode.Contains(outboundOrderGetDTO.searchValue);
+                }
+
+                var otheroutboundOrderdetail = _outboundOrderDetailRepository.Db.Queryable<Dt_OtherOutboundOrderDetail>().Where(expression).Where(x => x.OrderQuantity > x.OverOutQuantity).Select(x => new Dt_OtherOutboundOrderDetail { MaterielCode = x.MaterielCode, MaterielName = x.MaterielName, OrderQuantity = x.OrderQuantity, OverOutQuantity = x.OverOutQuantity, Id = x.Id }).ToList();
+                content = WebResponseContent.Instance.OK(data: otheroutboundOrderdetail);
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error($"鏌ヨ鍑哄簱鍗曟嵁閿欒,閿欒淇℃伅:{ex.Message}");
+            }
+            return content;
+        }
+
+        #region 鏍规嵁鍗曟嵁鏄庣粏鐢熸垚鍑哄簱浠诲姟
+
+        public async Task<WebResponseContent> GenerateOtherOutboundTask(GenerateOutTaskDto requestOut)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                foreach (var orderId in requestOut.orderIds)
+                {
+                    List<RequestTaskDto> taskDtos = new List<RequestTaskDto>();
+                    Dt_OtherOutboundOrderDetail outboundOrderdetail = _outboundOrderDetailRepository.QueryFirst(x => x.Id == orderId);
+                    Dt_OtherOutboundOrder outboundOrder = BaseDal.QueryFirst(x => x.Id == outboundOrderdetail.OrderId);
+
+                    (bool, string) checkResult = CheckSelectStockDeital(outboundOrderdetail, requestOut.stockViews, requestOut);
+                    if (!checkResult.Item1) throw new Exception(checkResult.Item2);
+
+                    else
+                    {
+                        var result = AssignStockOutbound(outboundOrderdetail, requestOut.stockViews);
+
+                        if (result.Item1.Count <= 0)
+                        {
+                            return content.Error("鏈壘鍒板簱瀛樺垎閰嶏紝璇风‘璁ゆ槸鍚﹀瓨鍦ㄥ簱瀛樻垨鍗曟嵁鏁伴噺宸插嚭瀹�");
+                        }
+
+                        result.Item1.Distinct().ForEach(item =>
+                        {
+                            RequestTaskDto task = new RequestTaskDto
+                            {
+                                TaskType = outboundOrder.OrderType,
+                                OrderNo = outboundOrder.OrderNo,
+                                MaterielCode = outboundOrderdetail.MaterielCode,
+                                Position = item.LocationCode,
+                                PalletCode = item.PalletCode,
+                                AreaId = Convert.ToInt32(requestOut.AreaId),
+                            };
+                            taskDtos.Add(task);
+                            item.StockInfoDetails.Where(x => x.MaterielCode == outboundOrderdetail.MaterielCode).FirstOrDefault().Status = (int)StockStateEmun.鍑哄簱閿佸畾;
+                            item.StockStatus = (int)StockStateEmun.鍑哄簱閿佸畾;
+                        });
+                        List<Dt_Task> taskNews = new List<Dt_Task>();
+                        List<WMSTaskDTO> taskDTOs = new List<WMSTaskDTO>();
+                        foreach (var item in taskDtos)
+                        {
+                            taskNews.Add(await _taskService.RequestOutboundTaskAsync(item));
+
+                        }
+                        List<DtLocationStatusChangeRecord> locationStatusChangeRecords = new List<DtLocationStatusChangeRecord>();
+                        List<DtLocationInfo> locations = new List<DtLocationInfo>();
+                        foreach (var item in taskNews)
+                        {
+                            taskDTOs.Add(CreateTaskDTO(item));
+                            var result1 = _taskService.UpdateLocationStatus(item.SourceAddress, LocationEnum.InStockDisable, item.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticOutbound);
+                            var result2 = _taskService.UpdateLocationStatus(item.TargetAddress, LocationEnum.Lock, item.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticOutbound);
+                            locationStatusChangeRecords.AddRange(result1.Item1);
+                            locationStatusChangeRecords.AddRange(result2.Item1);
+                            locations.AddRange(result1.Item2);
+                            locations.AddRange(result2.Item2);
+                        }
+
+                        await _unitOfWorkManage.UseTranAsync(async () =>
+                        {
+                            _taskRepository.AddData(taskNews);
+                            _stockInfoRepository.UpdateDataNav(result.Item1);
+                            await _locationStatusChangeRecordRepository.AddDataAsync(locationStatusChangeRecords);
+                            await _locationRepository.UpdateDataAsync(locations);
+                            _outboundOrderDetailRepository.UpdateData(result.Item2);
+                        });
+                        content = await _taskService.SendWCSTask(taskDTOs);
+                    }
+                }
+                return content;
+            }
+            catch (Exception ex)
+            {
+                return content.Error(ex.Message);
+            }
+
+        }
+        private WMSTaskDTO CreateTaskDTO(Dt_Task task)
+        {
+            return new WMSTaskDTO
+            {
+                TaskNum = task.TaskNum.Value,
+                Grade = task.Grade.Value,
+                PalletCode = task.PalletCode,
+                RoadWay = task.Roadway,
+                SourceAddress = task.SourceAddress,
+                TargetAddress = task.TargetAddress,
+                TaskState = task.TaskState,
+                Id = 0,
+                TaskType = task.TaskType,
+                AGVTaskNum = task.AGVTaskNum,
+                Remark = task.Remark
+            };
+        }
+        public (List<DtStockInfo>, Dt_OtherOutboundOrderDetail) AssignStockOutbound(Dt_OtherOutboundOrderDetail outboundOrderdetail, List<StockSelectViewDTO> stockSelectViews)
+        {
+            decimal originalNeedQuantity = outboundOrderdetail.OrderQuantity - outboundOrderdetail.OverOutQuantity;
+
+            decimal needQuantity = originalNeedQuantity;
+
+            List<DtStockInfo> outStocks = new List<DtStockInfo>();
+            if (stockSelectViews != null && stockSelectViews.Count > 0)
+            {
+                outStocks = BaseDal.Db.Queryable<DtStockInfo>().Where(x => stockSelectViews.Select(x => x.PalletCode).ToList().Contains(x.PalletCode)).Includes(x => x.StockInfoDetails).ToList();
+            }
+            else
+            {
+                outStocks = GetStockInfos(outboundOrderdetail.MaterielCode);
+            }
+
+            List<DtStockInfo> outStockNews = new List<DtStockInfo>();
+
+            foreach (var item in outStocks)
+            {
+                var stockDetail = item.StockInfoDetails
+                .Where(d => d.MaterielCode == outboundOrderdetail.MaterielCode && d.Quantity > 0);
+                if (needQuantity <= 0)
+                {
+                    continue;
+                }
+                foreach (var detail in stockDetail)
+                {
+                    if (detail != null)
+                    {
+                        if (needQuantity >= detail.Quantity)
+                        {
+                            if (detail.Quantity <= detail.OutboundQuantity)
+                            {
+                                continue;
+                            }
+                            needQuantity -= detail.Quantity;
+                            detail.OutboundQuantity = detail.Quantity;
+                        }
+                        else
+                        {
+                            if (detail.Quantity <= detail.OutboundQuantity)
+                            {
+                                continue;
+                            }
+                            detail.OutboundQuantity = needQuantity;
+                            needQuantity = 0;
+                        }
+                        outStockNews.Add(item);
+                    }
+                }
+
+            }
+            outboundOrderdetail.OverOutQuantity = outboundOrderdetail.OrderQuantity - needQuantity;
+
+            if (outboundOrderdetail.OverOutQuantity != 0)
+            {
+                outboundOrderdetail.OrderDetailStatus = (int)OrderStateEmun.寮�濮�;
+            }
+            return (outStockNews, outboundOrderdetail);
+        }
+
+        private (bool, string) CheckSelectStockDeital(Dt_OtherOutboundOrderDetail outboundOrderdetail, List<StockSelectViewDTO> stockSelectViews, GenerateOutTaskDto requestOut)
+        {
+            if (outboundOrderdetail == null)
+            {
+                return (false, "鏈壘鍒板嚭搴撳崟淇℃伅");
+            }
+            if (outboundOrderdetail.OrderDetailStatus == (int)OrderStateEmun.宸插畬鎴�)
+            {
+                return (false, "璇ユ槑缁嗕笉鍙搷浣�");
+            }
+            if (stockSelectViews != null && stockSelectViews.Sum(x => x.UseableQuantity) > outboundOrderdetail.OrderQuantity - outboundOrderdetail.OverOutQuantity)
+            {
+                return (false, "閫夋嫨鏁伴噺瓒呭嚭鍗曟嵁鏁伴噺");
+            }
+            if (outboundOrderdetail.OrderQuantity <= outboundOrderdetail.OverOutQuantity)
+            {
+                return (false, "鍗曟嵁鏁伴噺宸插嚭搴撳畬鎴�");
+            }
+            return (true, "鎴愬姛");
+        }
+
+        public List<DtStockInfo> GetStockInfos(string materielCode)
+        {
+            var stocks = BaseDal.Db.Queryable<DtStockInfo>()
+            .Includes(x => x.StockInfoDetails)
+            .Includes(x => x.LocationInfo)
+            .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable)
+            .Where(x => x.StockInfoDetails.Any(d => d.MaterielCode == materielCode && d.Quantity > 0)).ToList().OrderBy(x => x.CreateDate).ToList();
+
+            if (stocks == null || stocks.Count() <= 0)
+            {
+                return stocks;
+            }
+
+            var locations = stocks.Select(s => s.LocationInfo).ToList();
+            List<DtLocationInfo> locationInfos = _stockInfoService.GetStockLocations(locations).Distinct().ToList();
+            stocks = stocks.Where(s => s.LocationInfo != null && locationInfos.Contains(s.LocationInfo)).ToList();
+            return stocks;
+        }
+        #endregion 鏍规嵁鍗曟嵁鏄庣粏鐢熸垚鍑哄簱浠诲姟
+
+        public string GetOrderPintCode(string printCode)
+        {
+            string PrintCode = "";
+            var PrintSetting = SqlSugarHelper.DbWMS.Queryable<Dt_PrintSetting>().Where(x => x.PrintCode == printCode).ToList().FirstOrDefault();
+
+            if (PrintSetting.Spare1 == DateTime.Now.ToString("yyyyMMdd"))
+            {
+                PrintCode = PrintSetting.Spare1 + PrintSetting.PrintNo.ToString().PadLeft(PrintSetting.Spare2, '0');
+                PrintSetting.PrintNo = PrintSetting.PrintNo + 1;
+            }
+            else
+            {
+                PrintSetting.Spare1 = DateTime.Now.ToString("yyyyMMdd");
+                PrintSetting.PrintNo = 2;
+                PrintCode = PrintSetting.Spare1 + 1.ToString().PadLeft(PrintSetting.Spare2, '0');
+            }
+            SqlSugarHelper.DbWMS.Updateable(PrintSetting).ExecuteCommand();
+            return PrintCode;
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_OutboundOrderDetailService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_OutboundOrderDetailService.cs"
deleted file mode 100644
index f587c64..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_OutboundOrderDetailService.cs"
+++ /dev/null
@@ -1,23 +0,0 @@
-锘縰sing WIDESEA_Core.BaseRepository;
-using WIDESEA_Core.BaseServices;
-using WIDESEA_IOrderRepository;
-using WIDESEA_IOrderServices;
-using WIDESEA_IStorageTaskRepository;
-using WIDESEA_IStorageTaskServices;
-using WIDESEA_Model.Models;
-using WIDESEA_Model.Models.Order;
-
-namespace WIDESEA_OrderServices
-{
-    public class Dt_OutboundOrderDetailService : ServiceBase<Dt_OutboundOrderDetail, IDt_OutboundOrderDetailRepository>, IDt_OutboundOrderDetailService
-    {
-        private readonly IUnitOfWorkManage _unitOfWorkManage;
-
-        public Dt_OutboundOrderDetailService(IDt_OutboundOrderDetailRepository BaseDal,
-                                        IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
-        {
-            _unitOfWorkManage = unitOfWorkManage;
-
-        }
-    }
-}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_OutboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_OutboundOrderService.cs"
deleted file mode 100644
index 7825738..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_OutboundOrderService.cs"
+++ /dev/null
@@ -1,140 +0,0 @@
-锘縰sing MailKit.Search;
-using Masuit.Tools;
-using System.Linq.Expressions;
-using WIDESEA_Core;
-using WIDESEA_Core.BaseRepository;
-using WIDESEA_Core.BaseServices;
-using WIDESEA_Core.Enums;
-using WIDESEA_Core.Helper;
-using WIDESEA_DTO.Order;
-using WIDESEA_IOrderRepository;
-using WIDESEA_IOrderServices;
-using WIDESEA_IStorageTaskRepository;
-using WIDESEA_IStorageTaskServices;
-using WIDESEA_Model.Models;
-using WIDESEA_Model.Models.Order;
-
-namespace WIDESEA_OrderServices
-{
-    public class Dt_OutboundOrderService : ServiceBase<Dt_OutboundOrder, IDt_OutboundOrderRepository>, IDt_OutboundOrderService
-    {
-        private readonly IUnitOfWorkManage _unitOfWorkManage;
-
-        public Dt_OutboundOrderService(IDt_OutboundOrderRepository BaseDal,
-                                        IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
-        {
-            _unitOfWorkManage = unitOfWorkManage;
-
-        }
-
-        public override WebResponseContent AddData(SaveModel saveModel)
-        {
-            if (Convert.ToInt32(saveModel.MainData["orderType"])== (int)OrderTypeEmun.鍘熸潗鏂欓鏂欏崟 || Convert.ToInt32(saveModel.MainData["orderType"]) == (int)OrderTypeEmun.鐢熶骇棰嗘枡鍗�)
-            {
-                return WebResponseContent.Instance.Error("鐢熶骇棰嗘枡鍗曞拰鍘熸潗鏂欓鏂欏崟鍙兘閫氳繃ERP鎺ㄩ�佺敓鎴�");
-            }
-            saveModel.MainData.Add("orderNo", GetOrderPintCode("OrderNoOut"));
-            saveModel.MainData.Add("upperOrderNo", saveModel.MainData["orderNo"]);
-            return base.AddData(saveModel);
-        }
-
-
-        public WebResponseContent GetOutboundOrder(OutboundOrderGetDTO outboundOrderGetDTO)
-        {
-            WebResponseContent content = new WebResponseContent();
-            try
-            {
-                Expression<Func<Dt_OutboundOrder, bool>> expressionOrder = x => true;
-                if (!string.IsNullOrEmpty(outboundOrderGetDTO.OrderNo))
-                {
-                    expressionOrder = x => x.UpperOrderNo.Contains(outboundOrderGetDTO.OrderNo);
-                }
-                int count = 0;
-                if (outboundOrderGetDTO.OrderNo == "")
-                {
-                    count = BaseDal.QueryData(x => x.OrderStatus != (int)OrderStateEmun.宸插畬鎴�).ToList().Count();
-                }
-                else
-                {
-                    count = BaseDal.QueryData(x => x.OrderStatus != (int)OrderStateEmun.宸插畬鎴� && x.UpperOrderNo == outboundOrderGetDTO.OrderNo).ToList().Count();
-                }
-
-                int maxPage = Convert.ToInt32(Math.Ceiling(count / 10.0));
-                if (outboundOrderGetDTO.pageNo <= maxPage)
-                {
-                    var outboundOrder = BaseDal.Db.Queryable<Dt_OutboundOrder>().Where(expressionOrder).OrderByDescending(x => x.CreateDate).Skip((outboundOrderGetDTO.pageNo - 1) * 10).Take(10).Select(x => new Dt_OutboundOrder
-                    {
-                        OrderNo = x.OrderNo,
-                        Id = x.Id,
-                        MaterielCode = x.MaterielCode,
-                        UpperOrderNo = x.UpperOrderNo,
-                        OrderQuantity = x.OrderQuantity,
-                        OverOutQuantity = x.OverOutQuantity,
-                        CreateDate = x.CreateDate,
-                        Creater = x.Creater
-                    }).ToList();
-
-                    content = WebResponseContent.Instance.OK(data: outboundOrder);
-                }
-                else
-                {
-                    var outboundOrder = BaseDal.Db.Queryable<Dt_OutboundOrder>().Where(expressionOrder).OrderByDescending(x => x.CreateDate).Skip((0) * 10).Take(10).Select(x => new Dt_OutboundOrder
-                    {
-                        OrderNo = x.OrderNo,
-                        Id = x.Id,
-                        MaterielCode = x.MaterielCode,
-                        UpperOrderNo = x.UpperOrderNo,
-                        OrderQuantity = x.OrderQuantity,
-                        OverOutQuantity = x.OverOutQuantity,
-                        CreateDate = x.CreateDate,
-                        Creater = x.Creater
-                    }).ToList();
-
-                    content = WebResponseContent.Instance.OK(data: outboundOrder);
-                    //content = WebResponseContent.Instance.OK(data: null, message: "宸插埌鏈�鍚庝竴椤�");
-                }
-            }
-            catch (Exception ex)
-            {
-                content = WebResponseContent.Instance.Error($"鏌ヨ鍑哄簱鍗曟嵁閿欒,閿欒淇℃伅:{ex.Message}");
-            }
-            return content;
-        }
-
-        public WebResponseContent GetOutboundOrder(int id)
-        {
-            WebResponseContent content = new WebResponseContent();
-            try
-            {
-                var outboundOrderDetail = BaseDal.Db.Queryable<Dt_OutboundOrder>().Where(x => x.Id == id).Take(10).Select(x => new Dt_OutboundOrder { Id = x.Id, MaterielCode = x.MaterielCode, MaterielName = x.MaterielName, OrderQuantity = x.OrderQuantity, OverOutQuantity = x.OverOutQuantity, OrderNo = x.OrderNo, UpperOrderNo = x.UpperOrderNo }).ToList().FirstOrDefault();
-
-                content = WebResponseContent.Instance.OK(data: outboundOrderDetail);
-            }
-            catch (Exception ex)
-            {
-                content = WebResponseContent.Instance.Error($"鏌ヨ鍑哄簱鍗曟嵁閿欒,閿欒淇℃伅:{ex.Message}");
-            }
-            return content;
-        }
-
-        public string GetOrderPintCode(string printCode)
-        {
-            string PrintCode = "";
-            var PrintSetting = SqlSugarHelper.DbWMS.Queryable<Dt_PrintSetting>().Where(x => x.PrintCode == printCode).ToList().FirstOrDefault();
-
-            if (PrintSetting.Spare1 == DateTime.Now.ToString("yyyyMMdd"))
-            {
-                PrintCode = PrintSetting.Spare1 + PrintSetting.PrintNo.ToString().PadLeft(PrintSetting.Spare2, '0');
-                PrintSetting.PrintNo = PrintSetting.PrintNo + 1;
-            }
-            else
-            {
-                PrintSetting.Spare1 = DateTime.Now.ToString("yyyyMMdd");
-                PrintSetting.PrintNo = 2;
-                PrintCode = PrintSetting.Spare1 + 1.ToString().PadLeft(PrintSetting.Spare2, '0');
-            }
-            SqlSugarHelper.DbWMS.Updateable(PrintSetting).ExecuteCommand();
-            return PrintCode;
-        }
-    }
-}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_ProductionOutboundOrderDetailService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_ProductionOutboundOrderDetailService.cs"
new file mode 100644
index 0000000..39b719c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_ProductionOutboundOrderDetailService.cs"
@@ -0,0 +1,62 @@
+锘縰sing SqlSugar;
+using System.Linq.Expressions;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_IOrderRepository;
+using WIDESEA_IOrderServices;
+using WIDESEA_IStorageTaskRepository;
+using WIDESEA_IStorageTaskServices;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_OrderServices
+{
+    public class Dt_ProductionOutboundOrderDetailService : ServiceBase<Dt_ProductionOutboundOrderDetail, IDt_ProductionOutboundOrderDetailRepository>, IDt_ProductionOutboundOrderDetailService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+
+        public Dt_ProductionOutboundOrderDetailService(IDt_ProductionOutboundOrderDetailRepository BaseDal,
+                                        IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+
+        }
+        public override PageGridData<Dt_ProductionOutboundOrderDetail> GetPageData(PageDataOptions options)
+        {
+            string wheres = ValidatePageOptions(options);
+            //鑾峰彇鎺掑簭瀛楁
+            Dictionary<string, OrderByType> orderbyDic = GetPageDataSort(options, TProperties);
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderbyDic)
+            {
+                OrderByModel orderByModel = new()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+
+
+            int totalCount = 0;
+            List<SearchParameters> searchParametersList = new List<SearchParameters>();
+            if (!string.IsNullOrEmpty(options.Wheres))
+            {
+                try
+                {
+                    searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
+                    options.Filter = searchParametersList;
+                }
+                catch { }
+            }
+            var data = BaseDal.Db.Queryable<Dt_ProductionOutboundOrderDetail>()
+                .WhereIF(!wheres.IsNullOrEmpty(), wheres)
+                .OrderBy(orderByModels)
+                .ToPageList(options.Page, options.Rows, ref totalCount);
+            var x=new PageGridData<Dt_ProductionOutboundOrderDetail>(totalCount, data);
+            return new PageGridData<Dt_ProductionOutboundOrderDetail>(totalCount, data);
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_ProductionOutboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_ProductionOutboundOrderService.cs"
new file mode 100644
index 0000000..0b07035
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_ProductionOutboundOrderService.cs"
@@ -0,0 +1,336 @@
+锘縰sing MailKit.Search;
+using Masuit.Tools;
+using System.Linq.Expressions;
+using WIDESEA_Common;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO;
+using WIDESEA_DTO.Order;
+using WIDESEA_DTO.Stock;
+using WIDESEA_DTO.WMS;
+using WIDESEA_IOrderRepository;
+using WIDESEA_IOrderServices;
+using WIDESEA_IStorageBasicRepository;
+using WIDESEA_IStorageBasicService;
+using WIDESEA_IStorageTaskRepository;
+using WIDESEA_IStorageTaskServices;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.Order;
+
+namespace WIDESEA_OrderServices
+{
+    public class Dt_ProductionOutboundOrderService : ServiceBase<Dt_ProductionOutboundOrder, IDt_ProductionOutboundOrderRepository>, IDt_ProductionOutboundOrderService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly IDt_ProductionOutboundOrderDetailRepository _productionoutboundOrderDetailRepository;
+        private readonly IStockInfoDetailRepository _stockInfoDetailRepository;
+        private readonly IStockInfoRepository _stockInfoRepository;
+        private readonly IStockInfoService _stockInfoService;
+        private readonly IDt_TaskService _taskService;
+        private readonly ILocationInfoRepository _locationRepository;
+        private readonly IDt_TaskRepository _taskRepository;
+        private readonly ILocationStatusChangeRecordRepository _locationStatusChangeRecordRepository;
+
+        public Dt_ProductionOutboundOrderService(IDt_ProductionOutboundOrderRepository BaseDal,
+                                        IUnitOfWorkManage unitOfWorkManage,
+                                        IDt_ProductionOutboundOrderDetailRepository productionoutboundOrderDetailRepository,
+                                        IStockInfoDetailRepository stockInfoDetailRepository,
+                                        IStockInfoRepository stockInfoRepository,
+                                        IStockInfoService stockInfoService,
+                                        IDt_TaskService taskService,
+                                        ILocationInfoRepository locationRepository,
+                                        IDt_TaskRepository taskRepository,
+                                        ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _productionoutboundOrderDetailRepository = productionoutboundOrderDetailRepository;
+            _stockInfoDetailRepository = stockInfoDetailRepository;
+            _stockInfoRepository = stockInfoRepository;
+            _stockInfoService = stockInfoService;
+            _taskService = taskService;
+            _locationRepository = locationRepository;
+            _taskRepository = taskRepository;
+            _locationStatusChangeRecordRepository = locationStatusChangeRecordRepository;
+        }
+
+        public WebResponseContent GetProductOutboundOrder(OutboundOrderGetDTO outboundOrderGetDTO)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                Expression<Func<Dt_ProductionOutboundOrder, bool>> expressionOrder = x => true;
+                if (!string.IsNullOrEmpty(outboundOrderGetDTO.OrderNo))
+                {
+                    expressionOrder = x => x.UpperOrderNo.Contains(outboundOrderGetDTO.OrderNo);
+                }
+                int count = 0;
+                if (outboundOrderGetDTO.OrderNo == "")
+                {
+                    count = BaseDal.QueryData(x => x.OrderStatus != (int)OrderStateEmun.宸插畬鎴�).ToList().Count();
+                }
+                else
+                {
+                    count = BaseDal.QueryData(x => x.OrderStatus != (int)OrderStateEmun.宸插畬鎴� && x.UpperOrderNo == outboundOrderGetDTO.OrderNo).ToList().Count();
+                }
+
+                int maxPage = Convert.ToInt32(Math.Ceiling(count / 10.0));
+                if (outboundOrderGetDTO.pageNo <= maxPage)
+                {
+                    var outboundOrder = BaseDal.Db.Queryable<Dt_ProductionOutboundOrder>().Where(expressionOrder).OrderByDescending(x => x.CreateDate).Skip((outboundOrderGetDTO.pageNo - 1) * 10).Take(10).Select(x => new Dt_ProductionOutboundOrder
+                    {
+                        OrderNo = x.OrderNo,
+                        Id = x.Id,
+                        UpperOrderNo = x.UpperOrderNo,
+                        CreateDate = x.CreateDate,
+                        Creater = x.Creater
+                    }).ToList();
+
+                    content = WebResponseContent.Instance.OK(data: outboundOrder);
+                }
+                else
+                {
+                    var outboundOrder = BaseDal.Db.Queryable<Dt_ProductionOutboundOrder>().Where(expressionOrder).OrderByDescending(x => x.CreateDate).Skip(0 * 10).Take(10).Select(x => new Dt_ProductionOutboundOrder
+                    {
+                        OrderNo = x.OrderNo,
+                        Id = x.Id,
+                        UpperOrderNo = x.UpperOrderNo,
+                        CreateDate = x.CreateDate,
+                        Creater = x.Creater
+                    }).ToList();
+
+                    content = WebResponseContent.Instance.OK(data: outboundOrder);
+                }
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error($"鏌ヨ鍑哄簱鍗曟嵁閿欒,閿欒淇℃伅:{ex.Message}");
+            }
+            return content;
+        }
+
+        public WebResponseContent GettProductOutboundOrderDetail(OutboundOrderGetDTO outboundOrderGetDTO)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                var otheroutboundOrder = BaseDal.QueryFirst(x => x.Id == outboundOrderGetDTO.id);
+
+                Expression<Func<Dt_ProductionOutboundOrderDetail, bool>> expression = x => x.OrderId == otheroutboundOrder.Id;
+                if (!string.IsNullOrEmpty(outboundOrderGetDTO.searchValue))
+                {
+                    expression = x => x.OrderId == otheroutboundOrder.Id && x.MaterielCode.Contains(outboundOrderGetDTO.searchValue);
+                }
+
+                var outboundOrderdetail = _productionoutboundOrderDetailRepository.Db.Queryable<Dt_ProductionOutboundOrderDetail>().Where(expression).Where(x => x.OrderQuantity > x.OverOutQuantity).Select(x => new Dt_ProductionOutboundOrderDetail { MaterielCode = x.MaterielCode, MaterielName = x.MaterielName, OrderQuantity = x.OrderQuantity, OverOutQuantity = x.OverOutQuantity, Id = x.Id }).ToList();
+                content = WebResponseContent.Instance.OK(data: outboundOrderdetail);
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error($"鏌ヨ鍑哄簱鍗曟嵁閿欒,閿欒淇℃伅:{ex.Message}");
+            }
+            return content;
+        }
+
+        #region 鏍规嵁鍗曟嵁鏄庣粏鐢熸垚鍑哄簱浠诲姟
+
+        public async Task<WebResponseContent> GeneratetProductOutboundTask(GenerateOutTaskDto requestOut)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                foreach (var orderId in requestOut.orderIds)
+                {
+                    List<RequestTaskDto> taskDtos = new List<RequestTaskDto>();
+                    Dt_ProductionOutboundOrderDetail outboundOrderdetail = _productionoutboundOrderDetailRepository.QueryFirst(x => x.Id == orderId);
+                    Dt_ProductionOutboundOrder outboundOrder = BaseDal.QueryFirst(x => x.Id == outboundOrderdetail.OrderId);
+
+                    (bool, string) checkResult = CheckSelectStockDeital(outboundOrderdetail, requestOut.stockViews, requestOut);
+                    if (!checkResult.Item1) throw new Exception(checkResult.Item2);
+
+                    else
+                    {
+                        var result = AssignStockOutbound(outboundOrderdetail, requestOut.stockViews);
+
+                        if (result.Item1.Count <= 0)
+                        {
+                            return content.Error("鏈壘鍒板簱瀛樺垎閰嶏紝璇风‘璁ゆ槸鍚﹀瓨鍦ㄥ簱瀛樻垨鍗曟嵁鏁伴噺宸插嚭瀹�");
+                        }
+
+                        result.Item1.Distinct().ForEach(item =>
+                        {
+                            RequestTaskDto task = new RequestTaskDto
+                            {
+                                TaskType = outboundOrder.OrderType,
+                                OrderNo = outboundOrder.OrderNo,
+                                MaterielCode = outboundOrderdetail.MaterielCode,
+                                Position = item.LocationCode,
+                                PalletCode = item.PalletCode,
+                                AreaId = Convert.ToInt32(requestOut.AreaId),
+                            };
+                            taskDtos.Add(task);
+                            item.StockInfoDetails.Where(x => x.MaterielCode == outboundOrderdetail.MaterielCode).FirstOrDefault().Status = (int)StockStateEmun.鍑哄簱閿佸畾;
+                            item.StockStatus = (int)StockStateEmun.鍑哄簱閿佸畾;
+                        });
+                        List<Dt_Task> taskNews = new List<Dt_Task>();
+                        List<WMSTaskDTO> taskDTOs = new List<WMSTaskDTO>();
+                        foreach (var item in taskDtos)
+                        {
+                            taskNews.Add(await _taskService.RequestOutboundTaskAsync(item));
+
+                        }
+                        List<DtLocationStatusChangeRecord> locationStatusChangeRecords = new List<DtLocationStatusChangeRecord>();
+                        List<DtLocationInfo> locations = new List<DtLocationInfo>();
+                        foreach (var item in taskNews)
+                        {
+                            taskDTOs.Add(CreateTaskDTO(item));
+                            var result1 = _taskService.UpdateLocationStatus(item.SourceAddress, LocationEnum.InStockDisable, item.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticOutbound);
+                            var result2 = _taskService.UpdateLocationStatus(item.TargetAddress, LocationEnum.Lock, item.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticOutbound);
+                            locationStatusChangeRecords.AddRange(result1.Item1);
+                            locationStatusChangeRecords.AddRange(result2.Item1);
+                            locations.AddRange(result1.Item2);
+                            locations.AddRange(result2.Item2);
+                        }
+
+                        await _unitOfWorkManage.UseTranAsync(async () =>
+                        {
+                            _taskRepository.AddData(taskNews);
+                            _stockInfoRepository.UpdateDataNav(result.Item1);
+                            await _locationStatusChangeRecordRepository.AddDataAsync(locationStatusChangeRecords);
+                            await _locationRepository.UpdateDataAsync(locations);
+                            _productionoutboundOrderDetailRepository.UpdateData(result.Item2);
+                        });
+                        content = await _taskService.SendWCSTask(taskDTOs);
+                    }
+                }
+                return content;
+            }
+            catch (Exception ex)
+            {
+                return content.Error(ex.Message);
+            }
+
+        }
+        private WMSTaskDTO CreateTaskDTO(Dt_Task task)
+        {
+            return new WMSTaskDTO
+            {
+                TaskNum = task.TaskNum.Value,
+                Grade = task.Grade.Value,
+                PalletCode = task.PalletCode,
+                RoadWay = task.Roadway,
+                SourceAddress = task.SourceAddress,
+                TargetAddress = task.TargetAddress,
+                TaskState = task.TaskState,
+                Id = 0,
+                TaskType = task.TaskType,
+                AGVTaskNum = task.AGVTaskNum,
+                Remark = task.Remark
+            };
+        }
+        public (List<DtStockInfo>, Dt_ProductionOutboundOrderDetail) AssignStockOutbound(Dt_ProductionOutboundOrderDetail outboundOrderdetail, List<StockSelectViewDTO> stockSelectViews)
+        {
+            decimal originalNeedQuantity = outboundOrderdetail.OrderQuantity - outboundOrderdetail.OverOutQuantity;
+
+            decimal needQuantity = originalNeedQuantity;
+
+            List<DtStockInfo> outStocks = new List<DtStockInfo>();
+            if (stockSelectViews != null && stockSelectViews.Count > 0)
+            {
+                outStocks = BaseDal.Db.Queryable<DtStockInfo>().Where(x => stockSelectViews.Select(x => x.PalletCode).ToList().Contains(x.PalletCode)).Includes(x => x.StockInfoDetails).ToList();
+            }
+            else
+            {
+                outStocks = GetStockInfos(outboundOrderdetail.MaterielCode);
+            }
+
+            List<DtStockInfo> outStockNews = new List<DtStockInfo>();
+
+            foreach (var item in outStocks)
+            {
+                var stockDetail = item.StockInfoDetails
+                .Where(d => d.MaterielCode == outboundOrderdetail.MaterielCode && d.Quantity > 0);
+                if (needQuantity <= 0)
+                {
+                    continue;
+                }
+                foreach (var detail in stockDetail)
+                {
+                    if (detail != null)
+                    {
+                        if (needQuantity >= detail.Quantity)
+                        {
+                            if (detail.Quantity <= detail.OutboundQuantity)
+                            {
+                                continue;
+                            }
+                            needQuantity -= detail.Quantity;
+                            detail.OutboundQuantity = detail.Quantity;
+                        }
+                        else
+                        {
+                            if (detail.Quantity <= detail.OutboundQuantity)
+                            {
+                                continue;
+                            }
+                            detail.OutboundQuantity = needQuantity;
+                            needQuantity = 0;
+                        }
+                        outStockNews.Add(item);
+                    }
+                }
+
+            }
+            outboundOrderdetail.OverOutQuantity = outboundOrderdetail.OrderQuantity - needQuantity;
+
+            if (outboundOrderdetail.OverOutQuantity != 0)
+            {
+                outboundOrderdetail.OrderDetailStatus = (int)OrderStateEmun.寮�濮�;
+            }
+            return (outStockNews, outboundOrderdetail);
+        }
+
+        private (bool, string) CheckSelectStockDeital(Dt_ProductionOutboundOrderDetail outboundOrderdetail, List<StockSelectViewDTO> stockSelectViews, GenerateOutTaskDto requestOut)
+        {
+            if (outboundOrderdetail == null)
+            {
+                return (false, "鏈壘鍒板嚭搴撳崟淇℃伅");
+            }
+            if (outboundOrderdetail.OrderDetailStatus == (int)OrderStateEmun.宸插畬鎴�)
+            {
+                return (false, "璇ユ槑缁嗕笉鍙搷浣�");
+            }
+            if (stockSelectViews != null && stockSelectViews.Sum(x => x.UseableQuantity) > outboundOrderdetail.OrderQuantity - outboundOrderdetail.OverOutQuantity)
+            {
+                return (false, "閫夋嫨鏁伴噺瓒呭嚭鍗曟嵁鏁伴噺");
+            }
+            if (outboundOrderdetail.OrderQuantity <= outboundOrderdetail.OverOutQuantity)
+            {
+                return (false, "鍗曟嵁鏁伴噺宸插嚭搴撳畬鎴�");
+            }
+            return (true, "鎴愬姛");
+        }
+
+        public List<DtStockInfo> GetStockInfos(string materielCode)
+        {
+            var stocks = BaseDal.Db.Queryable<DtStockInfo>()
+            .Includes(x => x.StockInfoDetails)
+            .Includes(x => x.LocationInfo)
+            .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable)
+            .Where(x => x.StockInfoDetails.Any(d => d.MaterielCode == materielCode && d.Quantity > 0)).ToList().OrderBy(x => x.CreateDate).ToList();
+
+            if (stocks == null || stocks.Count() <= 0)
+            {
+                return stocks;
+            }
+
+            var locations = stocks.Select(s => s.LocationInfo).ToList();
+            List<DtLocationInfo> locationInfos = _stockInfoService.GetStockLocations(locations).Distinct().ToList();
+            stocks = stocks.Where(s => s.LocationInfo != null && locationInfos.Contains(s.LocationInfo)).ToList();
+            return stocks;
+        }
+        #endregion 鏍规嵁鍗曟嵁鏄庣粏鐢熸垚鍑哄簱浠诲姟
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs"
index cfcbc44..d10d516 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs"
@@ -31,8 +31,8 @@
     private readonly ILocationStatusChangeRecordRepository _locationStatusChangeRecordRepository; 
     private readonly IDt_InboundOrderRepository _inboundOrderRepository;
     private readonly IUnitOfWorkManage _unitOfWorkManage;
-    private readonly IDt_OutboundOrderRepository _outorderRepository;
-    private readonly IDt_OutboundOrderDetailRepository _outorderdetailRepository;
+    private readonly IDt_OtherOutboundOrderRepository _OtheroutorderRepository;
+    private readonly IDt_OtherOutboundOrderDetailRepository _OtheroutorderdetailRepository;
     private readonly IStockInfoDetailRepository _stockInfoDetailRepository;
     private readonly IDt_TaskService _taskService;
     private readonly ILocationInfoRepository _locationRepository;
@@ -42,8 +42,8 @@
                                 ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository,
                                 IDt_InboundOrderRepository inboundOrderRepository,
                                 IUnitOfWorkManage unitOfWorkManage,
-                                IDt_OutboundOrderRepository outorderRepository,
-                                IDt_OutboundOrderDetailRepository outorderdetailRepository,
+                                IDt_OtherOutboundOrderRepository OtheroutorderRepository,
+                                IDt_OtherOutboundOrderDetailRepository OtheroutorderdetailRepository,
                                 IStockInfoDetailRepository stockInfoDetailRepository,
                                 IDt_TaskService taskService,
                                 ILocationInfoRepository locationRepository,
@@ -52,8 +52,8 @@
         _locationStatusChangeRecordRepository = locationStatusChangeRecordRepository;
         _inboundOrderRepository = inboundOrderRepository;
         _unitOfWorkManage = unitOfWorkManage;
-        _outorderRepository = outorderRepository;
-        _outorderdetailRepository = outorderdetailRepository;
+        _OtheroutorderRepository = OtheroutorderRepository;
+        _OtheroutorderdetailRepository = OtheroutorderdetailRepository;
         _stockInfoDetailRepository = stockInfoDetailRepository;
         _taskService = taskService;
         _locationRepository = locationRepository;
@@ -134,24 +134,33 @@
 
 
     #region 搴撳瓨瑙嗗浘
-    public List<StockSelectViewDTO> GetStockSelectViews(string materielCode)
+    public List<StockSelectViewDTO> GetStockSelectViews(GetStockSelectViewDto viewDto)
     {
-        var stock = BaseDal.Db.Queryable<DtStockInfo>()
+        var stocks = BaseDal.Db.Queryable<DtStockInfo>()
         .Includes(x => x.StockInfoDetails)
         .Includes(x => x.LocationInfo)
         .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable)
-        .Where(x => x.StockInfoDetails.Any(d => d.MaterielCode == materielCode && d.Quantity > 0 && d.Quantity > d.OutboundQuantity)).ToList().OrderBy(x => x.CreateDate);
+        .Where(x => x.StockInfoDetails.Any(d => d.MaterielCode == viewDto.materielCode && d.Quantity > 0 && d.Quantity > d.OutboundQuantity)).ToList().OrderBy(x => x.CreateDate);
 
-        var result = stock.Select(s => new StockSelectViewDTO
+        List<DtLocationInfo> locationInfos = new List<DtLocationInfo>();
+        List<DtStockInfo> stockNew = new List<DtStockInfo>();
+        if (stocks != null || stocks.Count() > 0)
+        {
+            var locations = stocks.Select(s => s.LocationInfo).ToList();
+            locationInfos = GetStockLocations(locations).Distinct().ToList();
+            stockNew = stocks.Where(s => s.LocationInfo != null && locationInfos.Contains(s.LocationInfo)).ToList();
+        }
+
+        var result = stockNew.Select(s => new StockSelectViewDTO
         {
             MaterielCode = s.StockInfoDetails
-            .FirstOrDefault(d => d.MaterielCode == materielCode)?.MaterielCode ?? string.Empty,
+            .FirstOrDefault(d => d.MaterielCode == viewDto.materielCode)?.MaterielCode ?? string.Empty,
 
             MaterielName = s.StockInfoDetails
-            .FirstOrDefault(d => d.MaterielCode == materielCode)?.MaterielName ?? string.Empty,
+            .FirstOrDefault(d => d.MaterielCode == viewDto.materielCode)?.MaterielName ?? string.Empty,
 
             UseableQuantity = s.StockInfoDetails
-            .Where(d => d.MaterielCode == materielCode && d.Quantity > 0 && d.Quantity > d.OutboundQuantity)
+            .Where(d => d.MaterielCode == viewDto.materielCode && d.Quantity > 0 && d.Quantity > d.OutboundQuantity)
             .Sum(d => (decimal?)d.Quantity - d.OutboundQuantity) ?? 0,  // 澶勭悊绌哄�兼儏鍐�
 
             PalletCode = s.PalletCode ?? string.Empty,
@@ -159,6 +168,58 @@
         }).ToList();
 
         return result;
+    }
+
+    public List<DtLocationInfo> GetStockLocations(List<DtLocationInfo>? locations)
+    {
+        List<DtLocationInfo> locationsNew = new List<DtLocationInfo>();
+        foreach (var item in locations)
+        {
+            if (item.AreaId == 1)
+            {
+                if (item.Depth == 2)
+                {
+                    var locationLateral = _locationRepository.QueryFirst(x => x.Row == 1 && x.Column == item.Column && x.Layer == item.Layer);
+
+                    if (locationLateral.LocationStatus == (int)LocationEnum.Lock && locationLateral.EnalbeStatus == 1)
+                    {
+                        locationsNew.Remove(item);
+                        continue;
+                    }
+                    locationsNew.Add(item);
+                }
+            }
+            else if (item.AreaId == 2)
+            {
+                var locationLateral = _locationRepository.QueryData(x => x.Row == item.Row && x.Column > item.Column && x.Remark == item.Remark);
+
+                foreach (var Lateral in locationLateral)
+                {
+                    if (Lateral.LocationStatus == (int)LocationEnum.Lock && Lateral.EnalbeStatus == 1)
+                    {
+                        locationsNew.Remove(item);
+                        continue;
+                    }
+                    locationsNew.Add(item);
+                }
+            }
+
+            else if (item.AreaId == 5 || item.AreaId == 6)
+            {
+                var locationLateral = _locationRepository.QueryData(x => x.Row == item.Row && x.Column < item.Column && x.Remark == item.Remark);
+
+                foreach (var lateral in locationLateral)
+                {
+                    if (lateral.LocationStatus == (int)LocationEnum.Lock && lateral.EnalbeStatus == 1)
+                    {
+                        locationsNew.Remove(item);
+                        continue;
+                    }
+                    locationsNew.Add(item);
+                }
+            }
+        }
+        return locationsNew;
     }
 
     #endregion
@@ -173,14 +234,15 @@
             foreach (var orderId in requestOut.orderIds)
             {
                 List<RequestTaskDto> taskDtos = new List<RequestTaskDto>();
-                Dt_OutboundOrder outboundOrder = _outorderRepository.QueryFirst(x => x.Id == orderId);
+                Dt_OtherOutboundOrderDetail outboundOrderdetail = _OtheroutorderdetailRepository.QueryFirst(x => x.Id == orderId);
+                Dt_OtherOutboundOrder outboundOrder = _OtheroutorderRepository.QueryFirst(x => x.Id == outboundOrderdetail.OrderId);
 
-                (bool, string) checkResult = CheckSelectStockDeital(outboundOrder, requestOut.stockViews, requestOut);
+                (bool, string) checkResult = CheckSelectStockDeital(outboundOrderdetail, requestOut.stockViews, requestOut);
                 if (!checkResult.Item1) throw new Exception(checkResult.Item2);
 
                 else
                 {
-                    var result = AssignStockOutbound(outboundOrder, requestOut.stockViews);
+                    var result = AssignStockOutbound(outboundOrderdetail, requestOut.stockViews);
 
                     if (result.Item1.Count <= 0)
                     {
@@ -193,13 +255,13 @@
                         {
                             TaskType = outboundOrder.OrderType,
                             OrderNo = outboundOrder.OrderNo,
-                            MaterielCode = outboundOrder.MaterielCode,
+                            MaterielCode = outboundOrderdetail.MaterielCode,
                             Position = item.LocationCode,
                             PalletCode = item.PalletCode,
                             AreaId = Convert.ToInt32(requestOut.AreaId),
                         };
                         taskDtos.Add(task);
-                        item.StockInfoDetails.Where(x => x.MaterielCode == outboundOrder.MaterielCode).FirstOrDefault().Status = (int)StockStateEmun.鍑哄簱閿佸畾;
+                        item.StockInfoDetails.Where(x => x.MaterielCode == outboundOrderdetail.MaterielCode).FirstOrDefault().Status = (int)StockStateEmun.鍑哄簱閿佸畾;
                         item.StockStatus = (int)StockStateEmun.鍑哄簱閿佸畾;
                     });
                     List<Dt_Task> taskNews = new List<Dt_Task>();
@@ -228,7 +290,7 @@
                         BaseDal.UpdateDataNav(result.Item1);
                         await _locationStatusChangeRecordRepository.AddDataAsync(locationStatusChangeRecords);
                         await _locationRepository.UpdateDataAsync(locations);
-                        _outorderRepository.UpdateData(result.Item2);
+                        _OtheroutorderdetailRepository.UpdateData(result.Item2);
                     });
                     content = await _taskService.SendWCSTask(taskDTOs);
                 }
@@ -258,9 +320,9 @@
             Remark = task.Remark
         };
     }
-    public (List<DtStockInfo>, Dt_OutboundOrder) AssignStockOutbound(Dt_OutboundOrder outboundOrder, List<StockSelectViewDTO> stockSelectViews)
+    public (List<DtStockInfo>, Dt_OtherOutboundOrderDetail) AssignStockOutbound(Dt_OtherOutboundOrderDetail outboundOrderdetail, List<StockSelectViewDTO> stockSelectViews)
     {
-        decimal originalNeedQuantity = outboundOrder.OrderQuantity - outboundOrder.OverOutQuantity;
+        decimal originalNeedQuantity = outboundOrderdetail.OrderQuantity - outboundOrderdetail.OverOutQuantity;
 
         decimal needQuantity = originalNeedQuantity;
 
@@ -271,7 +333,7 @@
         }
         else
         {
-            outStocks = GetStockInfos(outboundOrder.MaterielCode);
+            outStocks = GetStockInfos(outboundOrderdetail.MaterielCode);
         }
 
         List<DtStockInfo> outStockNews=new List<DtStockInfo>();
@@ -279,7 +341,7 @@
         foreach (var item in outStocks)
         {
             var stockDetail = item.StockInfoDetails
-            .Where(d => d.MaterielCode == outboundOrder.MaterielCode && d.Quantity > 0);
+            .Where(d => d.MaterielCode == outboundOrderdetail.MaterielCode && d.Quantity > 0);
             if (needQuantity <= 0)
             {
                 continue;
@@ -309,54 +371,55 @@
                     outStockNews.Add(item);
                 }
             }
-            
-        }
-        outboundOrder.OverOutQuantity = outboundOrder.OrderQuantity - needQuantity;
-        outboundOrder.OrderStatus = (int)OrderStateEmun.寮�濮�;
 
-        return (outStockNews, outboundOrder);
+        }
+        outboundOrderdetail.OverOutQuantity = outboundOrderdetail.OrderQuantity - needQuantity;
+
+        if (outboundOrderdetail.OverOutQuantity != 0)
+        {
+            outboundOrderdetail.OrderDetailStatus = (int)OrderStateEmun.寮�濮�;
+        }
+        return (outStockNews, outboundOrderdetail);
     }
 
-    private (bool, string) CheckSelectStockDeital(Dt_OutboundOrder outboundOrder, List<StockSelectViewDTO> stockSelectViews, GenerateOutTaskDto requestOut)
+    private (bool, string) CheckSelectStockDeital(Dt_OtherOutboundOrderDetail outboundOrderdetail, List<StockSelectViewDTO> stockSelectViews, GenerateOutTaskDto requestOut)
     {
-        if (outboundOrder == null)
+        if (outboundOrderdetail == null)
         {
             return (false, "鏈壘鍒板嚭搴撳崟淇℃伅");
         }
-        if (outboundOrder.OrderStatus == (int)OrderStateEmun.宸插畬鎴�)
+        if (outboundOrderdetail.OrderDetailStatus == (int)OrderStateEmun.宸插畬鎴�)
         {
             return (false, "璇ユ槑缁嗕笉鍙搷浣�");
         }
-        if (stockSelectViews != null && stockSelectViews.Sum(x => x.UseableQuantity) > outboundOrder.OrderQuantity - outboundOrder.OverOutQuantity)
+        if (stockSelectViews != null && stockSelectViews.Sum(x => x.UseableQuantity) > outboundOrderdetail.OrderQuantity - outboundOrderdetail.OverOutQuantity)
         {
             return (false, "閫夋嫨鏁伴噺瓒呭嚭鍗曟嵁鏁伴噺");
         }
-        if (outboundOrder.OrderQuantity <= outboundOrder.OverOutQuantity)
+        if (outboundOrderdetail.OrderQuantity <= outboundOrderdetail.OverOutQuantity)
         {
             return (false, "鍗曟嵁鏁伴噺宸插嚭搴撳畬鎴�");
-        }
-        if (stockSelectViews != null && stockSelectViews.Count > 1 && requestOut.AreaId == null)
-        {
-            return (false, "鍑哄簱搴撳瓨澶т簬涓�鏉′笉鑳藉嚭搴撹嚦鎸囧畾搴撲綅!");
-        }
-        if ( requestOut.TargetAddress == null && requestOut.AreaId == null)
-        {
-            return (false, "璇烽�夋嫨鍑哄簱鍦板潃");
-        }
-        if (outboundOrder.OrderStatus == (int)OrderStateEmun.宸插畬鎴�)
-        {
-            return (false, "璇ュ嚭搴撳崟宸插畬鎴愶紝鏃犳硶鐢熸垚鍑哄簱浠诲姟");
         }
         return (true, "鎴愬姛");
     }
 
     public List<DtStockInfo> GetStockInfos(string materielCode)
     {
-        return BaseDal.Db.Queryable<DtStockInfo>()
+        var stocks = BaseDal.Db.Queryable<DtStockInfo>()
         .Includes(x => x.StockInfoDetails)
         .Includes(x => x.LocationInfo)
         .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable)
         .Where(x => x.StockInfoDetails.Any(d => d.MaterielCode == materielCode && d.Quantity > 0)).ToList().OrderBy(x => x.CreateDate).ToList();
+
+        if (stocks == null || stocks.Count() <= 0)
+        {
+            return stocks;
+        }
+
+        var locations = stocks.Select(s => s.LocationInfo).ToList();
+        List<DtLocationInfo> locationInfos = GetStockLocations(locations).Distinct().ToList();
+        stocks = stocks.Where(s => s.LocationInfo != null && locationInfos.Contains(s.LocationInfo)).ToList();
+        return stocks;
     }
     #endregion 鏍规嵁鍗曟嵁鏄庣粏鐢熸垚鍑哄簱浠诲姟
 
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs"
index 78c4035..6240332 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs"
@@ -30,11 +30,14 @@
         private readonly ISys_ConfigService _configService;
         private readonly ILocationInfoRepository _locationRepository;
         private readonly IDt_InboundOrderRepository _inboundOrderRepository;
-        private readonly IDt_OutboundOrderRepository _outboundorderRepository;
+        private readonly IDt_OtherOutboundOrderRepository _otheroutboundorderRepository;
+        private readonly IDt_ProductionOutboundOrderRepository _productionoutboundorderRepository;
+        private readonly IDt_InventoryOutboundOrderRepository _inventoryoutboundorderRepository;
+        private readonly IDt_AllocateOutboundOrderRepository _allocateoutboundorderRepository;
 
         private Timer _timer;
 
-        public MyBackgroundService(ILogger<MyBackgroundService> logger, ILocationInfoRepository locationRepository, IStockInfoRepository stockInfoRepository, IDt_AreaInfoRepository areaInfoRepository, IDt_TaskRepository taskRepository, IDt_StationManagerRepository stationManagerRepository, ISys_ConfigService configService,IDt_InboundOrderRepository inboundOrderRepository, IDt_OutboundOrderRepository outboundorderRepository)
+        public MyBackgroundService(ILogger<MyBackgroundService> logger, ILocationInfoRepository locationRepository, IStockInfoRepository stockInfoRepository, IDt_AreaInfoRepository areaInfoRepository, IDt_TaskRepository taskRepository, IDt_StationManagerRepository stationManagerRepository, ISys_ConfigService configService,IDt_InboundOrderRepository inboundOrderRepository, IDt_OtherOutboundOrderRepository otheroutboundorderRepository, IDt_AllocateOutboundOrderRepository allocateoutboundorderRepository, IDt_InventoryOutboundOrderRepository inventoryOutboundOrderRepository,IDt_ProductionOutboundOrderRepository productionOutboundOrderRepository)
         {
             _logger = logger;
             _locationRepository = locationRepository;
@@ -44,12 +47,15 @@
             _stationManagerRepository = stationManagerRepository;
             _configService = configService;
             _inboundOrderRepository = inboundOrderRepository;
-            _outboundorderRepository = outboundorderRepository;
+            _otheroutboundorderRepository = otheroutboundorderRepository;
+            _allocateoutboundorderRepository = allocateoutboundorderRepository;
+            _inventoryoutboundorderRepository = inventoryOutboundOrderRepository;
+            _productionoutboundorderRepository = productionOutboundOrderRepository;
         }
 
         public Task StartAsync(CancellationToken cancellationToken)
         {
-            _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromMinutes(1));
+            _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromMinutes(5));
             return Task.CompletedTask;
         }
 
@@ -124,40 +130,204 @@
                 }
                 #endregion
 
-                var OutBoundOrder = _outboundorderRepository.QueryData(x => true);
-                List<Dt_OutboundOrder> outboundOrderAdd = new List<Dt_OutboundOrder>();
-                List<Dt_OutboundOrder> outboundOrderUpdate = new List<Dt_OutboundOrder>();
 
                 #region ERP鐢熶骇棰嗘枡鍗曞悓姝�
-                List<WMS_鐢ㄥ弸宸ョ▼鍙戣揣鍗曚竴瑙堣〃_ST> ERPMaterialRequisition = SqlSugarHelper.DBERP.Queryable<WMS_鐢ㄥ弸宸ョ▼鍙戣揣鍗曚竴瑙堣〃_ST>().Where(x => true).ToList();
-                foreach (var item in ERPMaterialRequisition)
+
+                var productionOutOrder = _productionoutboundorderRepository.Db.Queryable<Dt_ProductionOutboundOrder>().Includes(x => x.Details).ToList();
+
+                List<Dt_ProductionOutboundOrder> EngineeringoutboundOrderAdd = new List<Dt_ProductionOutboundOrder>();
+                List<Dt_ProductionOutboundOrder> EngineeringoutboundOrderUpdate = new List<Dt_ProductionOutboundOrder>();
+                List<Dt_ProductionOutboundOrder> productionoutboundOrderAdd = new List<Dt_ProductionOutboundOrder>();
+                List<Dt_ProductionOutboundOrder> productionoutboundOrderUpdate = new List<Dt_ProductionOutboundOrder>();
+                List<WMS_鐢ㄥ弸宸ョ▼鍙戣揣鍗曚竴瑙堣〃_ST> EngineeringERP = SqlSugarHelper.DBERP.Queryable<WMS_鐢ㄥ弸宸ョ▼鍙戣揣鍗曚竴瑙堣〃_ST>().Where(x => true).ToList();
+                List<WMS_鐢ㄥ弸鐢熶骇棰嗘枡鍗曚竴瑙堣〃_ST> productERP = SqlSugarHelper.DBERP.Queryable<WMS_鐢ㄥ弸鐢熶骇棰嗘枡鍗曚竴瑙堣〃_ST>().Where(x => true).ToList();
+                foreach (var item in EngineeringERP)
                 {
-                    var x = OutBoundOrder.Where(x => x.MaterielCode == item.瀛愪欢鏂欏彿 && x.UpperOrderNo == item.鍗曞彿).FirstOrDefault();
-                    if(x == null)
+                    var x = productionOutOrder.Where(x => x.UpperOrderNo == item.鍗曞彿).FirstOrDefault();
+                    if (x == null)
                     {
-                        Dt_OutboundOrder outOrder = new Dt_OutboundOrder()
+                        if(productionoutboundOrderAdd.Where(x => x.UpperOrderNo == item.鍗曞彿).FirstOrDefault()==null)
                         {
-                            OrderNo = GetOrderPintCode("OrderNoOut"),
-                            UpperOrderNo = item.鍗曞彿,
-                            MaterielCode = item.瀛愪欢鏂欏彿,
-                            MaterielName = item.瀛愪欢鍝佸悕,
-                            DemandClassification = item.闇�姹傚悕绉�,
-                            OrderQuantity = item.瀛愪欢瀹為檯鐢ㄩ噺,
-                            OverOutQuantity = item.瀛愪欢鍙戞斁鏁伴噺,
-                            NotOutQuantity = item.瀛愪欢鏈彂鏁伴噺,
-                            OrderStatus =(int)OrderStateEmun.鏈紑濮�,
-                            OrderType =(int)OrderTypeEmun.鐢熶骇棰嗘枡鍗�,
-                            CreateType =(int)OrderCreateTypeEmun.ERP鎺ㄩ��,
-                        };
-                        outboundOrderAdd.Add(outOrder);
+                            Dt_ProductionOutboundOrder outOrder = new Dt_ProductionOutboundOrder()
+                            {
+                                OrderNo = GetOrderPintCode("OrderNoOut"),
+                                UpperOrderNo = item.鍗曞彿,
+                                OrderStatus = (int)OrderStateEmun.鏈紑濮�,
+                                OrderType = (int)OrderTypeEmun.鐢熶骇棰嗘枡鍗�,
+                                CreateType = (int)OrderCreateTypeEmun.ERP鎺ㄩ��,
+                                Details = new List<Dt_ProductionOutboundOrderDetail>()
+                                {
+                                    new Dt_ProductionOutboundOrderDetail()
+                                    {
+                                        MaterielCode = item.瀛愪欢鏂欏彿,
+                                        MaterielName = item.瀛愪欢鍝佸悕,
+                                        DemandClassification = item.闇�姹傚悕绉�,
+                                        OrderQuantity = item.瀛愪欢瀹為檯鐢ㄩ噺,
+                                        NotOutQuantity = item.瀛愪欢鏈彂鏁伴噺,
+                                        OverOutQuantity = item.瀛愪欢鍙戞斁鏁伴噺,
+                                    }
+                                }
+                            };
+                            EngineeringoutboundOrderAdd.Add(outOrder);
+                        }
+                        else
+                        {
+                            var existingOrder = EngineeringoutboundOrderAdd.Where(x => x.UpperOrderNo == item.鍗曞彿).FirstOrDefault();
+                            existingOrder.Details.Add(new Dt_ProductionOutboundOrderDetail()
+                            {
+                                MaterielCode = item.瀛愪欢鏂欏彿,
+                                MaterielName = item.瀛愪欢鍝佸悕,
+                                DemandClassification = item.闇�姹傚悕绉�,
+                                OrderQuantity = item.瀛愪欢瀹為檯鐢ㄩ噺,
+                                NotOutQuantity = item.瀛愪欢鏈彂鏁伴噺,
+                                OverOutQuantity = item.瀛愪欢鍙戞斁鏁伴噺,
+                            });
+                        }
+                    }
+                    //else
+                    //{
+                    //    foreach (var detail in x.Details)
+                    //    {
+                    //        if (detail.MaterielCode != item.瀛愪欢鏂欏彿 && detail.MaterielName != item.瀛愪欢鍝佸悕)
+                    //        {
+                    //            if (EngineeringoutboundOrderUpdate.Where(o => o.UpperOrderNo == item.鍗曞彿).FirstOrDefault() == null)
+                    //            {
+                    //                x.Details = new List<Dt_ProductionOutboundOrderDetail>()
+                    //                        {
+                    //                            new Dt_ProductionOutboundOrderDetail()
+                    //                            {
+                    //                                MaterielCode = item.瀛愪欢鏂欏彿,
+                    //                                MaterielName = item.瀛愪欢鍝佸悕,
+                    //                                DemandClassification = item.闇�姹傚悕绉�,
+                    //                                OrderQuantity = item.瀛愪欢瀹為檯鐢ㄩ噺,
+                    //                                NotOutQuantity = item.瀛愪欢鏈彂鏁伴噺,
+                    //                                OverOutQuantity = item.瀛愪欢鍙戞斁鏁伴噺,
+                    //                            }
+                    //                        };
+                    //                EngineeringoutboundOrderUpdate.Add(x);
+                    //            }
+                    //            else
+                    //            {
+                    //                var existingOrder = EngineeringoutboundOrderUpdate.Where(o => o.UpperOrderNo == item.鍗曞彿).FirstOrDefault();
+                    //                existingOrder.Details.Add(new Dt_ProductionOutboundOrderDetail()
+                    //                {
+                    //                    MaterielCode = item.瀛愪欢鏂欏彿,
+                    //                    MaterielName = item.瀛愪欢鍝佸悕,
+                    //                    DemandClassification = item.闇�姹傚悕绉�,
+                    //                    OrderQuantity = item.瀛愪欢瀹為檯鐢ㄩ噺,
+                    //                    NotOutQuantity = item.瀛愪欢鏈彂鏁伴噺,
+                    //                    OverOutQuantity = item.瀛愪欢鍙戞斁鏁伴噺,
+                    //                });
+                    //            }
+                    //        }
+                    //    }
+                    //}
+                }
+                if (EngineeringoutboundOrderAdd.Count > 0)
+                {
+                    foreach (var order in EngineeringoutboundOrderAdd)
+                    {
+                        _productionoutboundorderRepository.AddDataNavAsync(order);
                     }
                 }
-
-                #endregion
-                if (outboundOrderAdd.Count > 0)
+                if (EngineeringoutboundOrderUpdate.Count > 0)
                 {
-                    _outboundorderRepository.AddData(outboundOrderAdd);
+                    _productionoutboundorderRepository.UpdateDataNav(EngineeringoutboundOrderUpdate);
                 }
+                foreach (var item in productERP)
+                {
+                    var x = productionOutOrder.Where(x => x.UpperOrderNo == item.鍗曞彿).FirstOrDefault();
+                    if (x == null)
+                    {
+                        if (productionoutboundOrderAdd.Where(x => x.UpperOrderNo == item.鍗曞彿).FirstOrDefault() == null)
+                        {
+                            Dt_ProductionOutboundOrder outOrder = new Dt_ProductionOutboundOrder()
+                            {
+                                OrderNo = GetOrderPintCode("OrderNoOut"),
+                                UpperOrderNo = item.鍗曞彿,
+                                OrderStatus = (int)OrderStateEmun.鏈紑濮�,
+                                OrderType = (int)OrderTypeEmun.鐢熶骇棰嗘枡鍗�,
+                                CreateType = (int)OrderCreateTypeEmun.ERP鎺ㄩ��,
+                                Details = new List<Dt_ProductionOutboundOrderDetail>()
+                                {
+                                    new Dt_ProductionOutboundOrderDetail()
+                                    {
+                                        MaterielCode = item.瀛愪欢鏂欏彿,
+                                        MaterielName = item.瀛愪欢鍝佸悕,
+                                        DemandClassification = item.闇�姹傚悕绉�,
+                                        OrderQuantity = item.瀛愪欢瀹為檯鐢ㄩ噺,
+                                        NotOutQuantity = item.瀛愪欢鏈彂鏁伴噺,
+                                        OverOutQuantity = item.瀛愪欢鍙戞斁鏁伴噺,
+                                    }
+                                }
+                            };
+                            productionoutboundOrderAdd.Add(outOrder);
+                        }
+                        else
+                        {
+                            var existingOrder = productionoutboundOrderAdd.Where(x => x.UpperOrderNo == item.鍗曞彿).FirstOrDefault();
+                            existingOrder.Details.Add(new Dt_ProductionOutboundOrderDetail()
+                            {
+                                MaterielCode = item.瀛愪欢鏂欏彿,
+                                MaterielName = item.瀛愪欢鍝佸悕,
+                                DemandClassification = item.闇�姹傚悕绉�,
+                                OrderQuantity = item.瀛愪欢瀹為檯鐢ㄩ噺,
+                                NotOutQuantity = item.瀛愪欢鏈彂鏁伴噺,
+                                OverOutQuantity = item.瀛愪欢鍙戞斁鏁伴噺,
+                            });
+                        }
+                    }
+                    //else
+                    //{
+                    //    foreach (var detail in x.Details)
+                    //    {
+                    //        if (productionoutboundOrderUpdate.Where(o => o.UpperOrderNo == item.鍗曞彿).FirstOrDefault() == null)
+                    //        {
+                    //            x.Details = new List<Dt_ProductionOutboundOrderDetail>()
+                    //                        {
+                    //                            new Dt_ProductionOutboundOrderDetail()
+                    //                            {
+                    //                                MaterielCode = item.瀛愪欢鏂欏彿,
+                    //                                MaterielName = item.瀛愪欢鍝佸悕,
+                    //                                DemandClassification = item.闇�姹傚悕绉�,
+                    //                                OrderQuantity = item.瀛愪欢瀹為檯鐢ㄩ噺,
+                    //                                NotOutQuantity = item.瀛愪欢鏈彂鏁伴噺,
+                    //                                OverOutQuantity = item.瀛愪欢鍙戞斁鏁伴噺,
+                    //                            }
+                    //                        };
+                    //            productionoutboundOrderUpdate.Add(x);
+                    //        }
+                    //        else
+                    //        {
+                    //            var existingOrder = productionoutboundOrderUpdate.Where(o => o.UpperOrderNo == item.鍗曞彿).FirstOrDefault();
+                    //            existingOrder.Details.Add(new Dt_ProductionOutboundOrderDetail()
+                    //            {
+                    //                MaterielCode = item.瀛愪欢鏂欏彿,
+                    //                MaterielName = item.瀛愪欢鍝佸悕,
+                    //                DemandClassification = item.闇�姹傚悕绉�,
+                    //                OrderQuantity = item.瀛愪欢瀹為檯鐢ㄩ噺,
+                    //                NotOutQuantity = item.瀛愪欢鏈彂鏁伴噺,
+                    //                OverOutQuantity = item.瀛愪欢鍙戞斁鏁伴噺,
+                    //            });
+                    //        }
+                    //    }
+                    //}
+                }
+                
+
+                if (productionoutboundOrderAdd.Count > 0)
+                {
+                    foreach (var order in productionoutboundOrderAdd)
+                    {
+                        _productionoutboundorderRepository.AddDataNavAsync(order);
+                    } 
+                }
+                if (productionoutboundOrderUpdate.Count > 0)
+                {
+                    _productionoutboundorderRepository.UpdateDataNav(productionoutboundOrderUpdate);
+                }
+                #endregion
+
             }
             catch (Exception ex)
             {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs"
index 9b5afe4..b6f7c0b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs"
@@ -52,8 +52,8 @@
     private readonly IDt_AreaInfoRepository _areaInfoRepository; //鍖哄煙
     private readonly IDt_StationManagerRepository _stationManagerRepository;
     private readonly ISys_ConfigService _configService;
-    private readonly IDt_OutboundOrderRepository _outorderRepository;
-    private readonly IDt_OutboundOrderDetailRepository _outorderdetailRepository;
+    private readonly IDt_OtherOutboundOrderRepository _OtheroutorderRepository;
+    private readonly IDt_OtherOutboundOrderDetailRepository _OtheroutorderdetailRepository;
 
     public Dt_TaskService(IDt_TaskRepository BaseDal,
                                 IUnitOfWorkManage unitOfWorkManage,
@@ -68,8 +68,8 @@
                                 IStockInfoDetailRepository stockInfoDetailRepository,
                                 IDt_StationManagerRepository stationManagerRepository,
                                 ISys_ConfigService configService,
-                                IDt_OutboundOrderRepository outorderRepository,
-                                IDt_OutboundOrderDetailRepository outorderdetailRepository) : base(BaseDal)
+                                IDt_OtherOutboundOrderRepository OtheroutorderRepository,
+                                IDt_OtherOutboundOrderDetailRepository OtheroutorderdetailRepository) : base(BaseDal)
     {
         _unitOfWorkManage = unitOfWorkManage;
         _stockInfoRepository = stockInfoRepository;
@@ -83,8 +83,8 @@
         _stockInfoDetailRepository = stockInfoDetailRepository;
         _stationManagerRepository = stationManagerRepository;
         _configService = configService;
-        _outorderRepository = outorderRepository;
-        _outorderdetailRepository = outorderdetailRepository;
+        _OtheroutorderRepository = OtheroutorderRepository;
+        _OtheroutorderdetailRepository = OtheroutorderdetailRepository;
     }
 
     #region 澶栭儴鎺ュ彛鏂规硶
@@ -519,11 +519,11 @@
         Dt_Task taskNew = new Dt_Task();
         if (StartAddress.Floor != location.Floor)
         {
-            taskNew = RequestAcrossFloorTask(StartAddress, location, (int)TaskInboundTypeEnum.Inbound, taskDto.PalletCode);
+            taskNew = RequestAcrossFloorTask(StartAddress, location, (int)TaskInboundTypeEnum.Inbound, taskDto);
         }
         else
         {
-            taskNew = RequestAGVCarryTask(StartAddress, location, (int)TaskInboundTypeEnum.Inbound, taskDto.PalletCode);
+            taskNew = RequestAGVCarryTask(StartAddress, location, (int)TaskInboundTypeEnum.Inbound, taskDto);
         }
         return taskNew;
 
@@ -731,9 +731,9 @@
             Roadway = "SC1",
             TargetAddress = location.LocationCode,
             Dispatchertime = DateTime.Now,
-            MaterialNo = "",
+            MaterialNo = taskDto.MaterielCode,
             NextAddress = station.stationChildCode,
-            OrderNo = null,
+            OrderNo = taskDto.OrderNo,
             PalletCode = taskDto.PalletCode,
             SourceAddress = taskDto.Position,
             CurrentAddress = taskDto.Position,
@@ -756,11 +756,11 @@
         Dt_Task taskNew = new Dt_Task();
         if (StartAddress.Floor != location.Floor)
         {
-            taskNew = RequestAcrossFloorTask(StartAddress, location, taskDto.TaskType, taskDto.PalletCode);
+            taskNew = RequestAcrossFloorTask(StartAddress, location, taskDto.TaskType, taskDto);
         }
         else
         {
-            taskNew = RequestAGVCarryTask(StartAddress, location, taskDto.TaskType, taskDto.PalletCode);
+            taskNew = RequestAGVCarryTask(StartAddress, location, taskDto.TaskType,  taskDto);
         }
         return taskNew;
 
@@ -834,7 +834,7 @@
     #endregion
 
     #region 璇锋眰璺ㄦゼ灞備换鍔�
-    public Dt_Task RequestAcrossFloorTask(DtLocationInfo StartAddress, DtLocationInfo EndAddress, int TaskType, string palletCode)
+    public Dt_Task RequestAcrossFloorTask(DtLocationInfo StartAddress, DtLocationInfo EndAddress, int TaskType,  RequestTaskDto taskDto)
     {
         WebResponseContent content = new WebResponseContent();
 
@@ -845,10 +845,10 @@
             Roadway = "AGV",
             TargetAddress = EndAddress.LocationCode,
             Dispatchertime = DateTime.Now,
-            MaterialNo = "",
+            MaterialNo = taskDto.MaterielCode,
             NextAddress = next.stationChildCode,
-            OrderNo = null,
-            PalletCode = palletCode,
+            OrderNo = taskDto.OrderNo,
+            PalletCode = taskDto.PalletCode,
             SourceAddress = StartAddress.LocationCode,
             CurrentAddress = StartAddress.LocationCode,
             TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew,
@@ -865,7 +865,7 @@
     #endregion
 
     #region 璇锋眰AGV鎼繍浠诲姟
-    public Dt_Task RequestAGVCarryTask(DtLocationInfo StartAddress, DtLocationInfo EndAddress, int TaskType, string palletCode)
+    public Dt_Task RequestAGVCarryTask(DtLocationInfo StartAddress, DtLocationInfo EndAddress, int TaskType, RequestTaskDto taskDto)
     {
         WebResponseContent content = new WebResponseContent();
 
@@ -875,10 +875,10 @@
             Roadway = "AGV",
             TargetAddress = EndAddress.LocationCode,
             Dispatchertime = DateTime.Now,
-            MaterialNo = "",
+            MaterialNo = taskDto.MaterielCode,
             NextAddress = EndAddress.LocationCode,
-            OrderNo = null,
-            PalletCode = palletCode,
+            OrderNo = taskDto.OrderNo,
+            PalletCode = taskDto.PalletCode,
             SourceAddress = StartAddress.LocationCode,
             CurrentAddress = StartAddress.LocationCode,
             TaskState = (int)TaskAGVCarryStatusEnum.CarryNew,
@@ -1159,7 +1159,54 @@
         return wcsBasez + address;
     }
 
-    public async Task<WebResponseContent> SendERPTaskCompletion(string palletCode)
+    /// <summary>
+    /// 鐢熶骇棰嗘枡
+    /// </summary>
+    /// <param name="palletCode"></param>
+    /// <returns></returns>
+    public async Task<WebResponseContent> ERPProduction(string palletCode)
+    {
+        WebResponseContent content = new WebResponseContent();
+        try
+        {
+            DtStockInfo stock = await _stockInfoRepository.QueryFirstNavAsync(x => x.PalletCode == palletCode);
+            Dt_Task task = await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode);
+            MaterialRequisition allocate = new MaterialRequisition
+            {
+                context = new Context
+                {
+                    CultureName = "zh-CN",
+                    EntCode = "001",
+                    OrgCode = "102",
+                    UserCode = "MH0551"
+                },
+                documentTypeCode = "TransIn002",
+                businessDate = DateTime.Now.ToString("yyyy-MM-dd"),
+                isApproved = true,
+
+                issueList = new List<issueList>()
+                {
+                    new issueList
+                    {
+                        PickListID = task.OrderNo,
+                        WhCode = "204",
+                        IssueQty = task.OrderNo,
+                    }
+                }
+            };
+            return content.OK(data: allocate);
+        }
+        catch (Exception ex)
+        {
+            return content.Error(ex.Message);
+        }
+    }
+    /// <summary>
+    /// 璋冩嫧
+    /// </summary>
+    /// <param name="palletCode"></param>
+    /// <returns></returns>
+    public async Task<WebResponseContent> ERPAllocate(string palletCode)
     {
         WebResponseContent content = new WebResponseContent();
         try
@@ -1193,7 +1240,123 @@
             return content.Error(ex.Message);
         }
     }
+    /// <summary>
+    /// 鏉傚彂
+    /// </summary>
+    /// <param name="palletCode"></param>
+    /// <returns></returns>
+    public async Task<WebResponseContent> ERPMixedSend(string palletCode)
+    {
+        WebResponseContent content = new WebResponseContent();
+        try
+        {
+            DtStockInfo stock = await _stockInfoRepository.QueryFirstNavAsync(x => x.PalletCode == palletCode);
+            Allocate allocate = new Allocate
+            {
+                context = new Context
+                {
+                    CultureName = "zh-CN",
+                    EntCode = "001",
+                    OrgCode = "102",
+                    UserCode = "MH0551"
+                },
+                documentTypeCode = "TransIn002",
+                businessDate = DateTime.Now.ToString("yyyy-MM-dd"),
+                isApproved = true,
 
+                transferInList = stock.StockInfoDetails.Select(item => new transferInList
+                {
+                    ItemCode = item.MaterielCode,
+                    TransInWHCode = item.Warehouse,
+                    TransInQty = item.Quantity,
+                    TransOutWHCode = "001",
+                }).ToList()
+            };
+            return content.OK(data: allocate);
+        }
+        catch (Exception ex)
+        {
+            return content.Error(ex.Message);
+        }
+    }
+    /// <summary>
+    /// 鏉傛敹
+    /// </summary>
+    /// <param name="palletCode"></param>
+    /// <returns></returns>
+    public async Task<WebResponseContent> ERPMixedReceive(string palletCode)
+    {
+        WebResponseContent content = new WebResponseContent();
+        try
+        {
+            DtStockInfo stock = await _stockInfoRepository.QueryFirstNavAsync(x => x.PalletCode == palletCode);
+            Allocate allocate = new Allocate
+            {
+                context = new Context
+                {
+                    CultureName = "zh-CN",
+                    EntCode = "001",
+                    OrgCode = "102",
+                    UserCode = "MH0551"
+                },
+                documentTypeCode = "TransIn002",
+                businessDate = DateTime.Now.ToString("yyyy-MM-dd"),
+                isApproved = true,
+
+                transferInList = stock.StockInfoDetails.Select(item => new transferInList
+                {
+                    ItemCode = item.MaterielCode,
+                    TransInWHCode = item.Warehouse,
+                    TransInQty = item.Quantity,
+                    TransOutWHCode = "001",
+                }).ToList()
+            };
+            return content.OK(data: allocate);
+        }
+        catch (Exception ex)
+        {
+            return content.Error(ex.Message);
+        }
+    }
+    /// <summary>
+    /// 閫�鏂�
+    /// </summary>
+    /// <param name="palletCode"></param>
+    /// <returns></returns>
+    public async Task<WebResponseContent> ERPreturnMaterialList(string palletCode)
+    {
+        WebResponseContent content = new WebResponseContent();
+        try
+        {
+            DtStockInfo stock = await _stockInfoRepository.QueryFirstNavAsync(x => x.PalletCode == palletCode);
+            Allocate allocate = new Allocate
+            {
+                context = new Context
+                {
+                    CultureName = "zh-CN",
+                    EntCode = "001",
+                    OrgCode = "102",
+                    UserCode = "MH0551"
+                },
+                documentTypeCode = "TransIn002",
+                businessDate = DateTime.Now.ToString("yyyy-MM-dd"),
+                isApproved = true,
+
+                transferInList = stock.StockInfoDetails.Select(item => new transferInList
+                {
+                    ItemCode = item.MaterielCode,
+                    TransInWHCode = item.Warehouse,
+                    TransInQty = item.Quantity,
+                    TransOutWHCode = "001",
+                }).ToList()
+            };
+            return content.OK(data: allocate);
+        }
+        catch (Exception ex)
+        {
+            return content.Error(ex.Message);
+        }
+    }
 
     #endregion
 
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/StockInfoController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/StockInfoController.cs"
index c35f50a..bb09319 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/StockInfoController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/StockInfoController.cs"
@@ -18,9 +18,9 @@
     /// <param name="materielCode"></param>
     /// <returns></returns>
     [HttpPost, HttpGet, Route("GetStockSelectViews"), AllowAnonymous]
-    public List<StockSelectViewDTO> GetStockSelectViews(string materielCode)
+    public List<StockSelectViewDTO> GetStockSelectViews([FromBody]GetStockSelectViewDto viewDto)
     {
-        return Service.GetStockSelectViews(materielCode);
+        return Service.GetStockSelectViews(viewDto);
     }
 
     /// <summary>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/AllocateOutboundOrderController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/AllocateOutboundOrderController.cs"
new file mode 100644
index 0000000..6deb3d1
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/AllocateOutboundOrderController.cs"
@@ -0,0 +1,52 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_BusinessServices;
+using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.Order;
+using WIDESEA_DTO.Stock;
+using WIDESEA_IBusinessServices;
+using WIDESEA_IOrderServices;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.Basic;
+using WIDESEA_Model.Models.Order;
+using WIDESEAWCS_BasicInfoService;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    [Route("api/AllocateOutboundOrder")]
+    [ApiController]
+    public class AllocateOutboundOrderController : ApiBaseController<IDt_AllocateOutboundOrderService, Dt_AllocateOutboundOrder>
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        public AllocateOutboundOrderController(IDt_AllocateOutboundOrderService service, IHttpContextAccessor httpContextAccessor) : base(service)
+        {
+            _httpContextAccessor = httpContextAccessor;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍑哄簱鍗曟嵁淇℃伅
+        /// </summary>
+        /// <param name="outboundOrderGetDTO"></param>
+        /// <returns></returns>
+        [HttpPost, AllowAnonymous, Route("GetAllocateOutboundOrder")]
+        public WebResponseContent GetAllocateOutboundOrder([FromBody] OutboundOrderGetDTO outboundOrderGetDTO)
+        {
+            return Service.GetAllocateOutboundOrder(outboundOrderGetDTO);
+        }
+
+        [HttpPost, HttpGet, AllowAnonymous, Route("GetAllocateOutboundOrderDetail")]
+        public WebResponseContent GetAllocateOutboundOrderDetail([FromBody] OutboundOrderGetDTO outboundOrderGetDTO)
+        {
+            return Service.GetAllocateOutboundOrderDetail(outboundOrderGetDTO);
+        }
+        /// <summary>
+        /// 鏍规嵁璇锋眰鍑哄簱浠诲姟
+        /// </summary>
+        /// <param name="requestOut"></param>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("GenerateAllocateOutboundTask"), AllowAnonymous]
+        public Task<WebResponseContent> GenerateAllocateOutboundTask(GenerateOutTaskDto requestOut)
+        {
+            return Service.GenerateAllocateOutboundTask(requestOut);
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/AllocateOutboundOrderDetailController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/AllocateOutboundOrderDetailController.cs"
new file mode 100644
index 0000000..ed7f49e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/AllocateOutboundOrderDetailController.cs"
@@ -0,0 +1,24 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_BusinessServices;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IBusinessServices;
+using WIDESEA_IOrderServices;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.Basic;
+using WIDESEA_Model.Models.Order;
+using WIDESEAWCS_BasicInfoService;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    [Route("api/AllocateOutboundOrderDetail")]
+    [ApiController]
+    public class AllocateOutboundOrderDetailController : ApiBaseController<IDt_AllocateOutboundOrderDetailService, Dt_AllocateOutboundOrderDetail>
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        public AllocateOutboundOrderDetailController(IDt_AllocateOutboundOrderDetailService service, IHttpContextAccessor httpContextAccessor) : base(service)
+        {
+            _httpContextAccessor = httpContextAccessor;
+        }
+
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/InventoryOutboundOrderController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/InventoryOutboundOrderController.cs"
new file mode 100644
index 0000000..b866586
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/InventoryOutboundOrderController.cs"
@@ -0,0 +1,52 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_BusinessServices;
+using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.Order;
+using WIDESEA_DTO.Stock;
+using WIDESEA_IBusinessServices;
+using WIDESEA_IOrderServices;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.Basic;
+using WIDESEA_Model.Models.Order;
+using WIDESEAWCS_BasicInfoService;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    [Route("api/InventoryOutboundOrder")]
+    [ApiController]
+    public class InventoryOutboundOrderController : ApiBaseController<IDt_InventoryOutboundOrderService, Dt_InventoryOutboundOrder>
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        public InventoryOutboundOrderController(IDt_InventoryOutboundOrderService service, IHttpContextAccessor httpContextAccessor) : base(service)
+        {
+            _httpContextAccessor = httpContextAccessor;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍑哄簱鍗曟嵁淇℃伅
+        /// </summary>
+        /// <param name="outboundOrderGetDTO"></param>
+        /// <returns></returns>
+        [HttpPost, AllowAnonymous, Route("GetInventoryOutboundOrder")]
+        public WebResponseContent GetInventoryOutboundOrder([FromBody] OutboundOrderGetDTO outboundOrderGetDTO)
+        {
+            return Service.GetInventoryOutboundOrder(outboundOrderGetDTO);
+        }
+
+        [HttpPost, HttpGet, AllowAnonymous, Route("GetInventoryOutboundOrderDetail")]
+        public WebResponseContent GetInventoryOutboundOrderDetail([FromBody] OutboundOrderGetDTO outboundOrderGetDTO)
+        {
+            return Service.GetInventoryOutboundOrderDetail(outboundOrderGetDTO);
+        }
+        /// <summary>
+        /// 鏍规嵁璇锋眰鍑哄簱浠诲姟
+        /// </summary>
+        /// <param name="requestOut"></param>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("GenerateInventoryOutboundTask"), AllowAnonymous]
+        public Task<WebResponseContent> GenerateInventoryOutboundTask(GenerateOutTaskDto requestOut)
+        {
+            return Service.GenerateInventoryOutboundTask(requestOut);
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/InventoryOutboundOrderDetailController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/InventoryOutboundOrderDetailController.cs"
new file mode 100644
index 0000000..2be5ce0
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/InventoryOutboundOrderDetailController.cs"
@@ -0,0 +1,24 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_BusinessServices;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IBusinessServices;
+using WIDESEA_IOrderServices;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.Basic;
+using WIDESEA_Model.Models.Order;
+using WIDESEAWCS_BasicInfoService;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    [Route("api/InventoryOutboundOrderDetail")]
+    [ApiController]
+    public class InventoryOutboundOrderDetailController : ApiBaseController<IDt_InventoryOutboundOrderDetailService, Dt_InventoryOutboundOrderDetail>
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        public InventoryOutboundOrderDetailController(IDt_InventoryOutboundOrderDetailService service, IHttpContextAccessor httpContextAccessor) : base(service)
+        {
+            _httpContextAccessor = httpContextAccessor;
+        }
+
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/OtherOutboundOrderController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/OtherOutboundOrderController.cs"
new file mode 100644
index 0000000..fcea740
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/OtherOutboundOrderController.cs"
@@ -0,0 +1,53 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_BusinessServices;
+using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.Order;
+using WIDESEA_DTO.Stock;
+using WIDESEA_IBusinessServices;
+using WIDESEA_IOrderServices;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.Basic;
+using WIDESEA_Model.Models.Order;
+using WIDESEAWCS_BasicInfoService;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    [Route("api/OtherOutboundOrder")]
+    [ApiController]
+    public class OtherOutboundOrderController : ApiBaseController<IDt_OtherOutboundOrderService, Dt_OtherOutboundOrder>
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        public OtherOutboundOrderController(IDt_OtherOutboundOrderService service, IHttpContextAccessor httpContextAccessor) : base(service)
+        {
+            _httpContextAccessor = httpContextAccessor;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍑哄簱鍗曟嵁淇℃伅
+        /// </summary>
+        /// <param name="outboundOrderGetDTO"></param>
+        /// <returns></returns>
+        [HttpPost, AllowAnonymous, Route("GetOtherOutboundOrder")]
+        public WebResponseContent GetOtherOutboundOrder([FromBody]OutboundOrderGetDTO outboundOrderGetDTO)
+        {
+            return Service.GetOtherOutboundOrder(outboundOrderGetDTO);
+        }
+
+        [HttpPost,HttpGet, AllowAnonymous, Route("GetOtherOutboundOrderDetail")]
+        public WebResponseContent GetOtherOutboundOrderDetail([FromBody] OutboundOrderGetDTO outboundOrderGetDTO)
+        {
+            return Service.GetOtherOutboundOrderDetail(outboundOrderGetDTO);
+        }
+        /// <summary>
+        /// 鏍规嵁璇锋眰鍑哄簱浠诲姟
+        /// </summary>
+        /// <param name="requestOut"></param>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("GenerateOtherOutboundTask"), AllowAnonymous]
+        public Task<WebResponseContent> GenerateOtherOutboundTask(GenerateOutTaskDto requestOut)
+        {
+            return Service.GenerateOtherOutboundTask(requestOut);
+        }
+
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/OutboundOrderDetailController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/OtherOutboundOrderDetailController.cs"
similarity index 61%
rename from "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/OutboundOrderDetailController.cs"
rename to "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/OtherOutboundOrderDetailController.cs"
index 521b9a1..ea18d4f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/OutboundOrderDetailController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/OtherOutboundOrderDetailController.cs"
@@ -10,12 +10,12 @@
 
 namespace WIDESEA_WMSServer.Controllers
 {
-    [Route("api/OutboundOrderDetail")]
+    [Route("api/OtherOutboundOrderDetail")]
     [ApiController]
-    public class OutboundOrderDetailController : ApiBaseController<IDt_OutboundOrderDetailService, Dt_OutboundOrderDetail>
+    public class OtherOutboundOrderDetailController : ApiBaseController<IDt_OtherOutboundOrderDetailService, Dt_OtherOutboundOrderDetail>
     {
         private readonly IHttpContextAccessor _httpContextAccessor;
-        public OutboundOrderDetailController(IDt_OutboundOrderDetailService service, IHttpContextAccessor httpContextAccessor) : base(service)
+        public OtherOutboundOrderDetailController(IDt_OtherOutboundOrderDetailService service, IHttpContextAccessor httpContextAccessor) : base(service)
         {
             _httpContextAccessor = httpContextAccessor;
         }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/OutboundOrderController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/OutboundOrderController.cs"
deleted file mode 100644
index 56d298f..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/OutboundOrderController.cs"
+++ /dev/null
@@ -1,41 +0,0 @@
-锘縰sing Microsoft.AspNetCore.Mvc;
-using WIDESEA_BusinessServices;
-using WIDESEA_Core.BaseController;
-using WIDESEA_DTO.Order;
-using WIDESEA_IBusinessServices;
-using WIDESEA_IOrderServices;
-using WIDESEA_Model.Models;
-using WIDESEA_Model.Models.Basic;
-using WIDESEA_Model.Models.Order;
-using WIDESEAWCS_BasicInfoService;
-
-namespace WIDESEA_WMSServer.Controllers
-{
-    [Route("api/OutboundOrder")]
-    [ApiController]
-    public class OutboundOrderController : ApiBaseController<IDt_OutboundOrderService, Dt_OutboundOrder>
-    {
-        private readonly IHttpContextAccessor _httpContextAccessor;
-        public OutboundOrderController(IDt_OutboundOrderService service, IHttpContextAccessor httpContextAccessor) : base(service)
-        {
-            _httpContextAccessor = httpContextAccessor;
-        }
-
-        /// <summary>
-        /// 鑾峰彇鍑哄簱鍗曟嵁淇℃伅
-        /// </summary>
-        /// <param name="outboundOrderGetDTO"></param>
-        /// <returns></returns>
-        [HttpPost, AllowAnonymous, Route("GetOutboundOrder")]
-        public WebResponseContent GetOutboundOrder([FromBody]OutboundOrderGetDTO outboundOrderGetDTO)
-        {
-            return Service.GetOutboundOrder(outboundOrderGetDTO);
-        }
-
-        [HttpPost, AllowAnonymous, Route("GetOutboundOrderDetail")]
-        public WebResponseContent GetOutboundOrder(int id)
-        {
-            return Service.GetOutboundOrder(id);
-        }
-    }
-}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/ProductionOutboundOrderController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/ProductionOutboundOrderController.cs"
new file mode 100644
index 0000000..99e461e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/ProductionOutboundOrderController.cs"
@@ -0,0 +1,51 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_BusinessServices;
+using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.Order;
+using WIDESEA_DTO.Stock;
+using WIDESEA_IBusinessServices;
+using WIDESEA_IOrderServices;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.Basic;
+using WIDESEA_Model.Models.Order;
+using WIDESEAWCS_BasicInfoService;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    [Route("api/ProductionOutboundOrder")]
+    [ApiController]
+    public class ProductionOutboundOrderController : ApiBaseController<IDt_ProductionOutboundOrderService, Dt_ProductionOutboundOrder>
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        public ProductionOutboundOrderController(IDt_ProductionOutboundOrderService service, IHttpContextAccessor httpContextAccessor) : base(service)
+        {
+            _httpContextAccessor = httpContextAccessor;
+        }
+        /// <summary>
+        /// 鑾峰彇鍑哄簱鍗曟嵁淇℃伅
+        /// </summary>
+        /// <param name="outboundOrderGetDTO"></param>
+        /// <returns></returns>
+        [HttpPost, AllowAnonymous, Route("GetProductOutboundOrder")]
+        public WebResponseContent GetProductOutboundOrder([FromBody] OutboundOrderGetDTO outboundOrderGetDTO)
+        {
+            return Service.GetProductOutboundOrder(outboundOrderGetDTO);
+        }
+
+        [HttpPost, HttpGet, AllowAnonymous, Route("GettProductOutboundOrderDetail")]
+        public WebResponseContent GettProductOutboundOrderDetail([FromBody] OutboundOrderGetDTO outboundOrderGetDTO)
+        {
+            return Service.GettProductOutboundOrderDetail(outboundOrderGetDTO);
+        }
+        /// <summary>
+        /// 鏍规嵁璇锋眰鍑哄簱浠诲姟
+        /// </summary>
+        /// <param name="requestOut"></param>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("GeneratetProductOutboundTask"), AllowAnonymous]
+        public Task<WebResponseContent> GeneratetProductOutboundTask(GenerateOutTaskDto requestOut)
+        {
+            return Service.GeneratetProductOutboundTask(requestOut);
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/ProductionOutboundOrderDetailController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/ProductionOutboundOrderDetailController.cs"
new file mode 100644
index 0000000..a93b87e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/ProductionOutboundOrderDetailController.cs"
@@ -0,0 +1,24 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_BusinessServices;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IBusinessServices;
+using WIDESEA_IOrderServices;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.Basic;
+using WIDESEA_Model.Models.Order;
+using WIDESEAWCS_BasicInfoService;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    [Route("api/ProductionOutboundOrderDetail")]
+    [ApiController]
+    public class ProductionOutboundOrderDetailController : ApiBaseController<IDt_ProductionOutboundOrderDetailService, Dt_ProductionOutboundOrderDetail>
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        public ProductionOutboundOrderDetailController(IDt_ProductionOutboundOrderDetailService service, IHttpContextAccessor httpContextAccessor) : base(service)
+        {
+            _httpContextAccessor = httpContextAccessor;
+        }
+
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Task/TaskController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Task/TaskController.cs"
index 41cf112..6970330 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Task/TaskController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Task/TaskController.cs"
@@ -152,8 +152,8 @@
 
     [HttpPost, AllowAnonymous, Route("SendERPTaskCompletion")]
     [TypeFilter(typeof(ThrottleFilter), Arguments = new object[] { 5 })]
-    public Task<WebResponseContent> SendERPTaskCompletion(string palletCode)
+    public Task<WebResponseContent> ERPAllocate(string palletCode)
     {
-        return Service.SendERPTaskCompletion(palletCode);
+        return Service.ERPAllocate(palletCode);
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3