From 82149871f30f4564d84272649352496a2ab0a38e Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期四, 23 十月 2025 17:12:52 +0800
Subject: [PATCH] 1

---
 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json                                |   79 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/GenerateOutTaskDto.cs                                      |    3 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs                           |  896 ++++++++++---------
 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json                         |   79 
 项目代码/PDA/pages/Order/Outorderboxing.vue                                                                 |  154 +-
 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-wal |    0 
 项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/Order/OutboundOrder.vue                                |   10 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-wal |    0 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Order/OutboundOrderGetDTO.cs                                     |   15 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Order/Dt_OutboundOrder.cs                               |    6 
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGV/CommonAGVJob.cs                                         |  115 --
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db          |    0 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db-shm      |    0 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/ERP/WMS_用友工程发货单一览表_ST.cs                                |   29 
 项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/extend/StockSelect.vue                       |    9 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json                                |  181 +--
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs                          |   12 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Task/TaskController.cs                         |    2 
 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/CodeChunks.db-shm      |    0 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs                            |   50 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json                         |  158 +--
 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-shm |    0 
 项目代码/PDA/pages/Order/OutboundOrder.vue                                                                  |  212 ++++
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/StockInfoController.cs                   |    8 
 项目代码/PDA/pages.json                                                                                     |   14 
 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/SemanticSymbols.db     |    0 
 项目代码/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/Order/extend/HandOutbound.vue                      |   31 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs                       |  231 ++++
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs                                |    5 
 /dev/null                                                                                               |  183 ----
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json                                           |    4 
 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/CodeChunks.db          |    0 
 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/CodeChunks.db-wal      |    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_Core/BaseRepository/IRepository.cs                                   |    7 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Stock/IStockInfoService.cs                      |    2 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Order/OutboundOrderController.cs               |   17 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/IDt_OutboundOrderService.cs                           |    9 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfoDetail.cs                         |    6 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Dt_OutboundOrderService.cs                             |  119 ++
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-shm |    0 
 42 files changed, 1,429 insertions(+), 1,217 deletions(-)

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 a975b27..4dfcca5 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"
@@ -55,6 +55,20 @@
 				"enablePullDownRefresh": false
 			}
 		},
+		{
+			"path": "pages/Order/OutboundOrder",
+			"style": {
+				"navigationBarTitleText": "鍑哄簱鍗曟嵁",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/Order/Outorderboxing",
+			"style": {
+				"navigationBarTitleText": "鍏ュ簱鏄庣粏",
+				"enablePullDownRefresh": false
+			}
+		},
 		//璁剧疆
 		{
 			"path": "pages/index/settings",
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Order/OutOrderDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Order/OutOrderDetail.vue"
deleted file mode 100644
index e3b0de9..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Order/OutOrderDetail.vue"
+++ /dev/null
@@ -1,183 +0,0 @@
-<template>
-	<view>
-		<uni-segmented-control :current="current" :values="items" @clickItem="onClickItem">
-		</uni-segmented-control>
-		<view v-show="current === 0">
-			<uni-list-item direction="column" v-for="item in orderDetail" :key="item.palletCode">
-				<template v-slot:body>
-					<view class="uni-list-box">
-						<checkbox @click="click(item)" style="margin-right: 20px;"></checkbox>
-						<view class="uni-content">
-							<view style="font-size: 18px;">鐗╂枡缂栫爜锛歿{item.materielCode}}</view>
-							<view style="font-size: 18px;">鐗╂枡鍚嶇О锛歿{item.materielName}}</view>
-							<view style="font-size: 18px;">鎵樼洏缂栫爜锛歿{item.palletCode}}</view>
-							<view style="font-size: 18px;">璐т綅缂栫爜锛歿{item.locationCode}}</view>
-							<view style="font-size: 18px;">鍙敤鏁伴噺锛歿{item.useableQuantity}}</view>
-						</view>
-					</view>
-				</template>
-			</uni-list-item>
-			<button @click="OutBound" type="primary" size="default" style="margin-top: 2%;">鍑哄簱</button>
-			<u-toast ref="uToasts" />
-		</view>
-		<view v-show="current === 1">
-			<uni-list-item direction="column" v-for="item in orderDetail" :key="item.palletCode">
-				<template v-slot:body>
-					<view class="uni-list-box">
-						<checkbox @click="clicks(item)" style="margin-right: 20px;"></checkbox>
-						<view class="uni-content">
-							<view style="font-size: 18px;">鐗╂枡缂栫爜锛歿{item.materielCode}}</view>
-							<view style="font-size: 18px;">鐗╂枡鍚嶇О锛歿{item.materielName}}</view>
-							<view style="font-size: 18px;">鎵樼洏缂栫爜锛歿{item.palletCode}}</view>
-							<view style="font-size: 18px;">璐т綅缂栫爜锛歿{item.locationCode}}</view>
-							<view style="font-size: 18px;">鍙敤鏁伴噺锛歿{item.useableQuantity}}</view>
-						</view>
-					</view>
-				</template>
-			</uni-list-item>
-			<button @click="LockOutboundStock" type="primary" size="default" style="margin-top: 2%;">閿佸畾</button>
-			<u-toast ref="uToast" />
-		</view>
-		
-	</view>
-	</view>
-</template>
-
-<script>
-	const innerAudioContext = uni.createInnerAudioContext();
-	export default {
-		data() {
-			return {
-				items: ['鎸囧畾鍑哄簱', "閿佸畾搴撳瓨"],
-				current: 0,
-				materielCode: "",
-				label: "",
-				orderDetail: [],
-				focus: false,
-				key: [],
-				keys: [],
-				id:"",
-			}
-		},
-		onShow() {},
-		onLoad(res) {
-			this.focus = false;
-			this.addressFocus = false;
-			this.materielCode = res.materielCode;
-			this.id = res.id;
-			this.getData();
-		},
-		methods: {
-			voiceSpeech(src) {
-				innerAudioContext.src = src; 
-				innerAudioContext.play();
-			},
-			getData() {
-				var postData = this.materielCode;
-				this.$u.post('/api/StockInfo/GetStockSelectViews', postData).then((res) => {
-					this.orderDetail = res;
-					
-				})
-			},
-			OutBound() {
-				var postData = this.key;
-				this.$u.post('/api/Task/GenerateOutboundTask?id='+this.id, postData).then(res => {
-					if (res.status) {
-						this.items = [];
-						this.$refs.uToasts.show({
-							title: res.message,
-							type: "error"
-						})
-					} else {
-						this.$refs.uToasts.show({
-							title: res.message,
-							type: "error"
-						})
-					}
-				}).catch(err => {
-					this.$refs.uToast.show({
-						title: err.message,
-						type: "error"
-					})
-				})
-			},
-			LockOutboundStock() {
-				var postData = this.keys;
-				this.$u.post('/api/OutboundOrderDetail/LockOutboundStock?id='+this.id, 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.palletCode == e.palletCode)) {
-					this.key.map((item, index) => {
-						if (item.palletCode == e.palletCode) {
-							this.key.splice(index, 1);
-						}
-					})
-				} else {
-					this.key.push(e);
-				}
-			},
-			clicks(e) {
-				if (this.keys.find(x => x.palletCode == e.palletCode)) {
-					this.keys.map((item, index) => {
-						if (item.palletCode == e.palletCode) {
-							this.keys.splice(index, 1);
-						}
-					})
-				} else {
-					this.keys.push(e);
-				}
-			},
-			onClickItem(e) {
-				this.focus = false;
-				this.addressFocus = false;
-				if (this.current !== e.currentIndex) {
-					this.current = e.currentIndex;
-					if (this.current == 2) {
-						this.getData();
-					}
-				}
-			},
-		}
-	}
-</script>
-
-<style lang="scss">
-	@import '@/common/uni-ui.scss';
-
-	.content {
-		display: flex;
-		height: 150px;
-	}
-
-	.content-text {
-		font-size: 14px;
-		color: #666;
-	}
-
-	.itemstyle {
-		margin-top: 30px;
-		margin-left: 5%;
-	}
-
-	.headerstyle {
-		width: 90%;
-	}
-</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/Order/OutboundOrder.vue"
new file mode 100644
index 0000000..ef5e6b9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/PDA/pages/Order/OutboundOrder.vue"
@@ -0,0 +1,212 @@
+<template>
+	<view>
+		<u-sticky>
+			<view style="background-color: #ffffff;">
+				<uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar>
+			</view>
+		</u-sticky>
+		<uni-list :border="true">
+			<uni-list-item direction="column" clickable @click="groupClick(item.id)" link :to="page+item.orderNo"
+				v-for="item in allReceivingOrders" :key="item.orderNo">
+				<template v-slot:body>
+					<!-- <uni-group margin-top="20">
+						<view> 鍗曞彿:{{item.orderNo}} </view>
+						<view> 涓婃父鍗曞彿:{{item.upperOrderNo}} </view>
+						<view> 鐗╂枡缂栫爜:{{item.materielCode}} </view>
+						<view> 鍗曟嵁鏁伴噺:{{item.orderQuantity}} </view>
+						<view> 宸插嚭搴撴暟閲�:{{item.overOutQuantity}} </view>
+					</uni-group> -->
+					<uni-group margin-top="20">
+						<view class="flex-row">
+							<view class="label">鍗曞彿:</view>
+							<view class="value">{{item.orderNo}}</view>
+						</view>
+						<view class="flex-row">
+							<view class="label">涓婃父鍗曞彿:</view>
+							<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>
+					</uni-group>
+				</template>
+			</uni-list-item>
+
+		</uni-list>
+		<uni-load-more :status="status" v-if="loadVisible"></uni-load-more>
+
+		<u-back-top :scroll-top="scrollTop" top="400"></u-back-top>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				page: "/pages/Order/Outorderboxing?orderNo=",
+				loadVisible: false,
+				searchValue: "",
+				status: "more",
+				allReceivingOrders: [],
+				pageNo: 1,
+				scrollTop: 0
+			}
+		},
+		onLoad(res) {
+			this.getData();
+		},
+		onReachBottom() {
+			this.pageNo += 1;
+			this.getData();
+		},
+		onPageScroll(e) {
+			this.scrollTop = e.scrollTop;
+		},
+		methods: {
+			search(res) {
+				this.getData();
+			},
+			groupClick(Id) {
+				window.location="/pages/Order/Outorderboxing?Id="+Id;
+				// console.log(Id);
+			},
+			getData() {
+				var postData = {
+					orderNo: this.searchValue,
+					pageNo: this.pageNo
+				}
+				this.$u.post('/api/OutboundOrder/GetOutboundOrder', postData).then((res) => {
+					if (res.status) {
+						if (this.searchValue == '') {
+							this.allReceivingOrders = this.allReceivingOrders.concat(res.data);
+							if (this.allReceivingOrders.length > 3) {
+								this.loadVisible = true;
+							} else {
+								this.loadVisible = false;
+							}
+						} else {
+							this.allReceivingOrders = res.data;
+							if (this.allReceivingOrders.length > 3) {
+								this.loadVisible = true;
+							} else {
+								this.loadVisible = false;
+							}
+						}
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import '@/common/uni-ui.scss';
+
+	page {
+		display: flex;
+		flex-direction: column;
+		box-sizing: border-box;
+		background-color: #efeff4;
+		min-height: 100%;
+		height: auto;
+	}
+
+	.tips {
+		color: #67c23a;
+		font-size: 14px;
+		line-height: 40px;
+		text-align: center;
+		background-color: #f0f9eb;
+		height: 0;
+		opacity: 0;
+		transform: translateY(-100%);
+		transition: all 0.3s;
+	}
+
+	.tips-ani {
+		transform: translateY(0);
+		height: 40px;
+		opacity: 1;
+	}
+
+	.content {
+		width: 100%;
+		display: flex;
+	}
+
+	.list-picture {
+		width: 100%;
+		height: 145px;
+	}
+
+	.thumb-image {
+		width: 100%;
+		height: 100%;
+	}
+
+	.ellipsis {
+		display: flex;
+		overflow: hidden;
+	}
+
+	.uni-ellipsis-1 {
+		overflow: hidden;
+		white-space: nowrap;
+		text-overflow: ellipsis;
+	}
+
+	.uni-ellipsis-2 {
+		overflow: hidden;
+		text-overflow: ellipsis;
+		display: -webkit-box;
+		-webkit-line-clamp: 2;
+		-webkit-box-orient: vertical;
+	}
+
+	.customcss {
+		display: flex;
+		position: fixed;
+		width: 100%;
+		top: 10px;
+		text-align: center;
+		z-index: 999;
+		left: 30px;
+		height: 20%;
+	}
+
+	.footer {
+		padding-top: 50%;
+	}
+
+	.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"
index 3ee044e..789eb49 100644
--- "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"
@@ -3,94 +3,98 @@
 		</uni-segmented-control>
 		<view class="content">
 			<view v-if="current === 0" class="headerstyle">
-				<u-sticky>
-					<view style="background-color: #ffffff;">
-						<!-- <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar> -->
+				<div style="padding: 30px;">
+					<view class="flex-row">
+						<view class="label">鍗曞彿:</view>
+						<view class="value">{{orderDetail.orderNo}}</view>
 					</view>
-				</u-sticky>
-				<uni-list-item direction="column" v-for="(item) in orderDetail" :key="item.id">
-					<template v-slot:body>
-						<view class="uni-list-box">
-							<checkbox @click="click(item)" style="margin-right: 20px;"></checkbox>
-							<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.overOutQuantity}}</view>
-								<view style="font-size: 18px;">閿佸畾鏁伴噺锛歿{item.lockQuantity}}</view>
-							</view>
-						</view>
-					</template>
-				</uni-list-item>
-				<button @click="OutBound" type="primary" size="default" style="margin-top: 2%;">鍑哄簱</button>
-				<u-toast ref="uToast" />
-			</view>
-			<view v-if="current === 1" class="headerstyle">
-				<u-sticky>
-					<view style="background-color: #ffffff;">
-						<!-- <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar> -->
+					<view class="flex-row">
+						<view class="label">涓婃父鍗曞彿:</view>
+						<view class="value">{{orderDetail.upperOrderNo}}</view>
 					</view>
-				</u-sticky>
-				<uni-list :border="true">
-					<uni-list-item direction="column" clickable @click="groupClick(item.materielCode,item.id)" link
-				:to="page+materielCode+'&id='+item.id" v-for="item in orderDetail" :key="item.materielCode">
-						<template v-slot:body>
-							<uni-group margin-top="20">
-								<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.overOutQuantity}}</view>
-								<view style="font-size: 18px;">閿佸畾鏁伴噺锛歿{item.lockQuantity}}</view>
-							</uni-group>
-						</template>
-					</uni-list-item>
-				</uni-list>
+					<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 {
-				page: "/pages/materielGroup/OutOrderDetail?materielCode=",
-				items: ['鐩存帴鍑哄簱', '鎸囧畾鍑哄簱'],
+				items: ['鐩存帴鍑哄簱'],
 				current: 0,
 				orderNo: "",
+				Id: 0,
+				AreaId:"",
+				orderIds:[],
 				label: "",
-				orderDetail: [],
+				range: [],
+				orderDetail: {
+					// id: "",
+					// orderNo: "",
+					// upperOrderNo: "",
+					// materielCode: "",
+					// materielName: "",
+					// orderQuantity: "",
+					// overOutQuantity: "",
+				},
 				focus: false,
-				orderDetailId: [],
-				key:[],
-				materielCode:"",
+				key: [],
+				materielCode: "",
 			}
 		},
 		onShow() {},
 		onLoad(res) {
+			console.log(res);
 			this.focus = false;
 			this.addressFocus = false;
-			this.orderNo = res.orderNo;
-			this.label = "鍗曟嵁缂栧彿锛�" + this.orderNo;
+			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)
+			groupClick(materielCode, id) {
+				// window.location="/pages/materielGroup/OutOrderDetail?materielCode="+materielCode+"&id="+id;
+				// console.log(materielCode,id)
 			},
 			getData() {
-				var postData = this.orderNo
-				this.$u.post('/api/OutboundOrder/GetOutboundOrderDetail', postData).then((res) => {
+				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;
-						}
+						// if (this.orderDetail.length > 3) {
+						// 	this.loadVisible = true;
+						// }
 					}
 				})
 			},
@@ -105,8 +109,12 @@
 				}
 			},
 			OutBound() {
-				var postData = this.key;
-				this.$u.post('/api/Task/GenerateOutboundTasks', postData).then(res => {
+				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);
@@ -144,22 +152,26 @@
 <style lang="scss">
 	@import '@/common/uni-ui.scss';
 
-	.content {
+	.flex-row {
 		display: flex;
-		height: 150px;
+		justify-content: space-between;
+		/* 宸﹀彸瀵归綈 */
+		align-items: center;
+		/* 鍨傜洿灞呬腑 */
+		padding: 10rpx 0;
 	}
 
-	.content-text {
-		font-size: 14px;
+	.label {
 		color: #666;
+		width: 200rpx;
+		/* 鍥哄畾鏍囩瀹藉害 */
+		text-align: left;
 	}
 
-	.itemstyle {
-		margin-top: 30px;
-		margin-left: 5%;
-	}
-
-	.headerstyle {
-		width: 90%;
+	.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 4fba76a..776bc67 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"
index c791dd6..2f692a6 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-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"
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"
index 5ac2ff6..138f098 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-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"
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 7f5fa3d..96b1197 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"
index f14fe49..85d8cf8 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-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"
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"
index a30c470..32d1007 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-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"
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 1083940..51e9589 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"
@@ -3,16 +3,24 @@
   "WorkspaceRootPath": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\",
   "Documents": [
     {
+      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\agv\\commonagvjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\agv\\commonagvjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
       "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|solutionrelative:wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\agv\\agvsignal.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\agv\\agvsignal.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\agv\\commonagvjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\agv\\commonagvjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\stackercranejob\\commonstackercranejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\stackercranejob\\commonstackercranejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\agv\\agvsignal.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\agv\\agvsignal.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_common\\taskenum\\tasktypeenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -31,16 +39,8 @@
       "RelativeMoniker": "D:0:0:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|solutionrelative:wideseawcs_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
       "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\stackercranejob\\commonstackercranejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\stackercranejob\\commonstackercranejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
@@ -54,23 +54,11 @@
       "DocumentGroups": [
         {
           "DockedWidth": 200,
-          "SelectedChildIndex": 3,
+          "SelectedChildIndex": 4,
           "Children": [
             {
               "$type": "Document",
-              "DocumentIndex": 3,
-              "Title": "TaskTypeEnum.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
-              "RelativeToolTip": "WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
-              "ViewState": "AgIAAD8AAAAAAAAAAAAnwFQAAAAFAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-16T07:16:14.933Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 5,
+              "DocumentIndex": 7,
               "Title": "EnumHelper.cs",
               "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Enums\\EnumHelper.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Enums\\EnumHelper.cs",
@@ -82,7 +70,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 6,
+              "DocumentIndex": 8,
               "Title": "ITaskService.cs",
               "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
@@ -94,20 +82,20 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 0,
+              "DocumentIndex": 1,
               "Title": "TaskService.cs",
               "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\TaskService.cs",
               "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs",
               "RelativeToolTip": "WIDESEAWCS_TaskInfoService\\TaskService.cs",
-              "ViewState": "AgIAAJQCAAAAAAAAAAApwLgCAAAWAAAAAAAAAA==",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAgCAACWAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-09-25T03:21:17.498Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 1,
+              "DocumentIndex": 4,
               "Title": "AGVSignal.cs",
               "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\AGV\\AGVSignal.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\AGV\\AGVSignal.cs",
@@ -115,25 +103,24 @@
               "RelativeToolTip": "WIDESEAWCS_Tasks\\AGV\\AGVSignal.cs",
               "ViewState": "AgIAAFAAAAAAAAAAAAAnwGUAAAArAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-13T01:17:34.312Z",
-              "EditorCaption": ""
+              "WhenOpened": "2025-10-13T01:17:34.312Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 2,
+              "DocumentIndex": 0,
               "Title": "CommonAGVJob.cs",
               "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\AGV\\CommonAGVJob.cs",
               "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": "AgIAACcAAAAAAAAAAAAnwEEAAAAUAAAAAAAAAA==",
+              "ViewState": "AgIAABwAAAAAAAAAAAA9wIsAAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-10-09T05:11:29.775Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 4,
+              "DocumentIndex": 6,
               "Title": "CommonElevatorJob.cs",
               "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ElevatorJob\\CommonElevatorJob.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\ElevatorJob\\CommonElevatorJob.cs",
@@ -157,31 +144,43 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 9,
+              "DocumentIndex": 3,
               "Title": "CommonStackerCraneJob.cs",
               "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
               "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
               "RelativeToolTip": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
-              "ViewState": "AgIAAEIBAAAAAAAAAAAAAGsBAAAzAAAAAAAAAA==",
+              "ViewState": "AgIAAPkAAAAAAAAAAAAQwBIBAABPAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-10-08T02:55:34.719Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 7,
+              "DocumentIndex": 2,
               "Title": "CommonConveyorLineJob.cs",
               "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs",
               "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs",
               "RelativeToolTip": "WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs",
-              "ViewState": "AgIAAEIAAAAAAAAAAAAawF8AAABKAAAAAAAAAA==",
+              "ViewState": "AgIAAEgAAAAAAAAAAAAjwFkAAABTAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-10-09T03:25:18.917Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 8,
+              "DocumentIndex": 5,
+              "Title": "TaskTypeEnum.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
+              "RelativeToolTip": "WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
+              "ViewState": "AgIAAD8AAAAAAAAAAAAnwFQAAAAFAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-16T07:16:14.933Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 9,
               "Title": "TaskController.cs",
               "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json"
index 7fcaeac..f1d4906 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json"
@@ -3,16 +3,24 @@
   "WorkspaceRootPath": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\",
   "Documents": [
     {
+      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\agv\\commonagvjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\agv\\commonagvjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
       "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|solutionrelative:wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\agv\\agvsignal.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\agv\\agvsignal.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\agv\\commonagvjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\agv\\commonagvjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\stackercranejob\\commonstackercranejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\stackercranejob\\commonstackercranejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\agv\\agvsignal.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\agv\\agvsignal.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_common\\taskenum\\tasktypeenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -31,16 +39,8 @@
       "RelativeMoniker": "D:0:0:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|solutionrelative:wideseawcs_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
       "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\stackercranejob\\commonstackercranejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\stackercranejob\\commonstackercranejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
@@ -54,23 +54,11 @@
       "DocumentGroups": [
         {
           "DockedWidth": 200,
-          "SelectedChildIndex": 3,
+          "SelectedChildIndex": 4,
           "Children": [
             {
               "$type": "Document",
-              "DocumentIndex": 3,
-              "Title": "TaskTypeEnum.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
-              "RelativeToolTip": "WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
-              "ViewState": "AgIAAD8AAAAAAAAAAAAnwFQAAAAFAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-16T07:16:14.933Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 5,
+              "DocumentIndex": 7,
               "Title": "EnumHelper.cs",
               "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Enums\\EnumHelper.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Enums\\EnumHelper.cs",
@@ -82,7 +70,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 6,
+              "DocumentIndex": 8,
               "Title": "ITaskService.cs",
               "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
@@ -94,20 +82,20 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 0,
+              "DocumentIndex": 1,
               "Title": "TaskService.cs",
               "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\TaskService.cs",
               "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs",
               "RelativeToolTip": "WIDESEAWCS_TaskInfoService\\TaskService.cs",
-              "ViewState": "AgIAAKkCAAAAAAAAAAAnwMMCAAAIAAAAAAAAAA==",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAgCAACWAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-09-25T03:21:17.498Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 1,
+              "DocumentIndex": 4,
               "Title": "AGVSignal.cs",
               "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\AGV\\AGVSignal.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\AGV\\AGVSignal.cs",
@@ -115,25 +103,24 @@
               "RelativeToolTip": "WIDESEAWCS_Tasks\\AGV\\AGVSignal.cs",
               "ViewState": "AgIAAFAAAAAAAAAAAAAnwGUAAAArAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-13T01:17:34.312Z",
-              "EditorCaption": ""
+              "WhenOpened": "2025-10-13T01:17:34.312Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 2,
+              "DocumentIndex": 0,
               "Title": "CommonAGVJob.cs",
               "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\AGV\\CommonAGVJob.cs",
               "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": "AgIAACcAAAAAAAAAAAAnwEEAAAAUAAAAAAAAAA==",
+              "ViewState": "AgIAAB0AAAAAAAAAAAAlwDoAAAAUAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-10-09T05:11:29.775Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 4,
+              "DocumentIndex": 6,
               "Title": "CommonElevatorJob.cs",
               "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ElevatorJob\\CommonElevatorJob.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\ElevatorJob\\CommonElevatorJob.cs",
@@ -157,31 +144,43 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 9,
+              "DocumentIndex": 3,
               "Title": "CommonStackerCraneJob.cs",
               "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
               "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
               "RelativeToolTip": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
-              "ViewState": "AgIAAEIBAAAAAAAAAAAAAGsBAAAzAAAAAAAAAA==",
+              "ViewState": "AgIAAPkAAAAAAAAAAAAQwBIBAABPAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-10-08T02:55:34.719Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 7,
+              "DocumentIndex": 2,
               "Title": "CommonConveyorLineJob.cs",
               "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs",
               "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs",
               "RelativeToolTip": "WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs",
-              "ViewState": "AgIAAEIAAAAAAAAAAAAawF8AAABKAAAAAAAAAA==",
+              "ViewState": "AgIAAEgAAAAAAAAAAAAjwFkAAABTAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-10-09T03:25:18.917Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 8,
+              "DocumentIndex": 5,
+              "Title": "TaskTypeEnum.cs",
+              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
+              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
+              "RelativeToolTip": "WIDESEAWCS_Common\\TaskEnum\\TaskTypeEnum.cs",
+              "ViewState": "AgIAAD8AAAAAAAAAAAAnwFQAAAAFAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-10-16T07:16:14.933Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 9,
               "Title": "TaskController.cs",
               "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGV/CommonAGVJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGV/CommonAGVJob.cs"
index 7221859..a03904e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGV/CommonAGVJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGV/CommonAGVJob.cs"
@@ -49,13 +49,6 @@
                 }
             }
 
-            var taskCarry = _taskRepository.QueryData(x => x.TaskState == (int)TaskAcrossFloorStatusEnum.CarryNew);
-            #region 鍑哄簱浠诲姟
-
-            AGVOutTask(taskCarry.Where(x => x.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup).ToList());
-            
-            #endregion
-
             #region AGV璺ㄦゼ灞備换鍔�
             var AcrossFloorTask = _taskRepository.QueryFirst(x => x.TaskState == (int)TaskAcrossFloorStatusEnum.CarryNew);
             if (AcrossFloorTask != null)
@@ -68,6 +61,7 @@
                     {
                         if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.Model) == 1)
                         {
+                            Relocation(AcrossFloorTask);
                             if (AcrossFloorTask.Floor == "1F")
                             {
                                 elevator.SetValue(ElevatorDBName.FlagBit, Convert.ToInt16(1));
@@ -101,79 +95,11 @@
             #region AGV鍚屽眰鎼繍浠诲姟
 
 
-            Dt_Task Carry = null;
+            Dt_Task Carry = _taskRepository.QueryFirst(x => _taskService.TaskAGVCarryboundStates.Contains(x.TaskState) && x.TaskState == (int)TaskAGVCarryStatusEnum.CarryNew);
             if (Carry != null)
             {
-                var task = _taskRepository.QueryFirst(x => x.TaskState > (int)TaskAGVCarryStatusEnum.CarryNew);
-                if (task == null)
-                {
-                    var taskDto = new RequestTaskDto()
-                    {
-                        Position = Carry.SourceAddress,
-                        PalletCode = Carry.PalletCode,
-                        TaskNum = Carry.TaskNum
-                    };
-
-                    // 鑾峰彇WMSip鍦板潃
-                    var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
-                    var wmsBasez = configz.Where(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE).FirstOrDefault()?.ConfigValue;
-                    var requestLocation = configz.Where(x => x.ConfigKey == SysConfigKeyConst.AGVIsNeedRelocation).FirstOrDefault()?.ConfigValue;
-                    if (wmsBasez == null || requestLocation == null)
-                    {
-                        throw new InvalidOperationException("WMS IP 鏈厤缃�");
-                    }
-                    var wmsIpAddrss = wmsBasez + requestLocation;
-
-                    var result = HttpHelper.PostAsync(wmsIpAddrss, taskDto.ToJsonString()).Result;
-
-                    WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
-
-                    if (!content.Status)
-                    {
-                        Carry.ExceptionMessage = content.Message;
-                        _taskRepository.UpdateData(Carry);
-                        return null;
-                    }
-
-                    // 鍙嶅簭鍒楀寲浠诲姟鏁版嵁
-                    var taskDTO = JsonConvert.DeserializeObject<List<WMSTaskDTO>>(content.Data.ToString());
-                    bool IsAddTask = false;
-                    foreach (var t in taskDTO)
-                    {
-                        if (t.TaskNum == Carry.TaskNum)
-                        {
-                            IsAddTask = true;
-                            break;
-                        }
-                        else
-                        {
-                            IsAddTask = true;
-                        }
-                    }
-                    if (IsAddTask)
-                        _taskService.ReceiveWMSTask(taskDTO);
-
-                    var taskNew = _taskRepository.QueryData(x => x.TaskType == (int)TaskAGVCarryTypeEnum.CarryReloction && x.TaskState == (int)TaskAGVCarryStatusEnum.CarryNew);
-                    if (taskNew.Count > 0)
-                    {
-                        if (taskNew[0].Remark == "2")
-                        {
-                            foreach (var item in taskNew.OrderBy(x => x.Grade).ToList())
-                            {
-                                AGVSendTask(item);
-                            }
-                        }
-                        else
-                        {
-                            foreach (var item in taskNew.OrderByDescending(x => x.Grade).ToList())
-                            {
-                                AGVSendTask(item);
-                            }
-                        }
-                    }
-
-                    AGVSendTask(Carry);
-                }
+                Relocation(Carry);
+                AGVSendTask(Carry);
             }
 
             #endregion
@@ -201,7 +127,7 @@
                             {
                                 return Task.CompletedTask;
                             }
-
+                            Relocation(InTask);
                             _taskService.SendAgvTask("LIFANG", InTask.TaskNum);
 
                             _taskService.UpdateTaskStatusToNext(InTask.TaskNum);
@@ -214,32 +140,6 @@
 
             return Task.CompletedTask;
         }
-
-        /// <summary>
-        /// AGV鍑哄簱浠诲姟
-        /// </summary>
-        /// <param name="tasks"></param>
-        public void AGVOutTask(List<Dt_Task> tasks)
-        {
-            if(tasks.Count > 0)
-            {
-                var OutTaskOneFloor = _taskRepository.QueryFirst(x => x.TaskState >= (int)TaskOutStatusEnum.OutNew && x.TaskState < (int)TaskOutStatusEnum.AGV_OutExecuting && x.Floor=="1F");
-                var OutTaskTwoFloor = _taskRepository.QueryFirst(x => x.TaskState >= (int)TaskOutStatusEnum.OutNew && x.TaskState < (int)TaskOutStatusEnum.AGV_OutExecuting && x.Floor=="1F");
-                if(OutTaskOneFloor == null)
-                {
-                    var task = tasks.Where(x => x.Floor == "1F").OrderByDescending(x => x.Grade).FirstOrDefault();
-                    if (task != null)
-                        Relocation(task);
-                }
-                if (OutTaskTwoFloor == null)
-                {
-                    var task = (tasks.Where(x => x.Floor == "2F").OrderBy(x => x.Grade).FirstOrDefault());
-                    if (task != null)
-                        Relocation(task);
-                }
-            }
-        }
-
 
         public void AGVSendTask(Dt_Task task)
         {
@@ -319,18 +219,17 @@
                 {
                     foreach (var item in taskNew.OrderBy(x => x.Grade).ToList())
                     {
-                        //AGVSendTask(item);
+                        AGVSendTask(item);
                     }
                 }
                 else
                 {
                     foreach (var item in taskNew.OrderByDescending(x => x.Grade).ToList())
                     {
-                        //AGVSendTask(item);
+                        AGVSendTask(item);
                     }
                 }
             }
-            //AGVSendTask(task);
         }
     }
 }
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"
index a7316f4..d6f43cd 100644
--- "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"
@@ -1,25 +1,18 @@
 <template>
-  <vol-box v-model="show" title="鎵嬪姩鍑哄簱" :width="800" :height="600">
+  <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="鎵樼洏鍙�">
-          <el-input type="text" v-model="this.form.palletCode" readonly></el-input>
-        </el-form-item>
-        <el-form-item label="鍑哄簱绔欏彴" prop="TargetAddress">
-          <el-select v-model="form.TargetAddress" placeholder="璇烽�夋嫨鍑哄簱绔欏彴">
-            <el-option label="绔欏彴1" value="001-000-001" />
-            <el-option label="绔欏彴2" value="001-022-001" />
-            <el-option label="绔欏彴3" value="004-000-001" />
-            <el-option label="绔欏彴4" value="004-022-001" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="搴撳尯" prop="SCNo">
-          <el-select v-model="form.SCNo" placeholder="璇烽�夋嫨搴撳尯">
-            <el-option label="姝f瀬搴�" value="SC01" />
-            <el-option label="璐熸瀬搴�" value="SC02" />
-          </el-select>
-        </el-form-item>
-      </el-form>
+          <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>
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/extend/StockSelect.vue"
index 95a819b..48e50fe 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/extend/StockSelect.vue"
@@ -26,7 +26,7 @@
           <el-form-item label="缁堢偣鍦板潃">
             <el-input type="text" v-model="this.form.TargetAddress"></el-input>
           </el-form-item>
-          <el-form-item label="鍑哄簱绔欏彴" prop="TargetAddress">
+          <el-form-item label="鍑哄簱鍖哄煙" prop="areaId">
             <el-select v-model="form.areaId" placeholder="璇烽�夋嫨鍑哄簱鍖哄煙">
               <el-option label="鍫嗗灈鏈哄尯鍩�" value="1" />
               <el-option label="涓�妤糀GV鍑哄簱缂撳瓨鍖�" value="2" />
@@ -107,6 +107,7 @@
         },
       ],
       selection: [],
+      ids:[],
       selectionSum: 0,
       selectionClass: "less-style",
       originalQuantity: 0,
@@ -132,11 +133,13 @@
         this.$message.error("璇烽�夋嫨闇�瑕佸嚭搴撶殑鎵樼洏");
         return;
       }
+      this.ids.push(this.row.id);
       var param = {
-        "orderId": this.row.id,
+        // "orderId": this.row.id,
+        "orderIds":this.ids,
         "stockViews": this.selection,
         "TargetAddress": this.form.TargetAddress,
-        "AreaId": this.form.AreaId,
+        "AreaId": this.form.areaId,
       }
       console.log(param);
       this.http
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"
index e6a40ce..44d40de 100644
--- "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"
@@ -25,7 +25,7 @@
             sortName: "createDate"
         });
         const editFormFields = ref({
-            orderNo: "",
+            // orderNo: "",
             orderType: "",
             materielCode: "",
             materielName: "",
@@ -34,7 +34,7 @@
         });
         const editFormOptions = ref([
             [
-                { "title": "璁㈠崟缂栧彿", "field": "orderNo", "type": "text" },
+                // { "title": "璁㈠崟缂栧彿", "field": "orderNo", "type": "text" },
                 { "title": "鐗╂枡缂栫爜", "field": "materielCode", type: "text", },
                 { "title": "鐗╂枡鍚嶇О", "field": "materielName", type: "text", dataKey: "OrderTypeEmun", data: [] },
             ],
@@ -47,8 +47,8 @@
         const searchFormFields = ref({});
         const searchFormOptions = ref([
             [
-                { "title": "璁㈠崟缂栧彿", "field": "orderNo", "type": "text" },
                 { "title": "涓婃父鍗曞彿", "field": "upperOrderNo", "type": "text" },
+                { "title": "璁㈠崟缂栧彿", "field": "orderNo", "type": "text" },
                 { "title": "鍗曟嵁绫诲瀷", "field": "orderType", type: "select", dataKey: "OrderTypeEmun", data: [] },
 
             ],
@@ -60,8 +60,8 @@
         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: 110, align: 'left', },
-            { field: 'upperOrderNo', title: '涓婃父鍗曟嵁缂栧彿', type: 'string', width: 100, 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', },
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 38912e3..0349df2 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 58b2898..44200ef 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 4446e1f..573f901 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 f9bf737..ade0a02 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 babcff7..997e0f8 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 79f3a7f..2b0bd43 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 549e881..d08d46c 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,52 +3,36 @@
   "WorkspaceRootPath": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\",
   "Documents": [
     {
-      "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:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_dto\\stock\\stockselectviewdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\stock\\stockselectviewdto.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:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\basic\\stockinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\basic\\stockinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{B8B1C352-0398-4A54-B202-D774D48367EB}|WIDESEA_IStorageBasicService\\WIDESEA_IStorageBasicServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_istoragebasicservice\\stock\\istockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{B8B1C352-0398-4A54-B202-D774D48367EB}|WIDESEA_IStorageBasicService\\WIDESEA_IStorageBasicServices.csproj|solutionrelative:widesea_istoragebasicservice\\stock\\istockinfoservice.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\\basic\\requesttaskdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\basic\\requesttaskdto.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:{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:{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\\system\\sys_dictionarycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\system\\sys_dictionarycontroller.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:{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:{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:{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}"
     }
   ],
   "DocumentGroupContainers": [
@@ -58,160 +42,108 @@
       "DocumentGroups": [
         {
           "DockedWidth": 200,
-          "SelectedChildIndex": 3,
+          "SelectedChildIndex": 4,
           "Children": [
             {
               "$type": "Document",
-              "DocumentIndex": 4,
-              "Title": "IStockInfoService.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStorageBasicService\\Stock\\IStockInfoService.cs",
-              "RelativeDocumentMoniker": "WIDESEA_IStorageBasicService\\Stock\\IStockInfoService.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStorageBasicService\\Stock\\IStockInfoService.cs",
-              "RelativeToolTip": "WIDESEA_IStorageBasicService\\Stock\\IStockInfoService.cs",
-              "ViewState": "AgIAAAoAAAAAAAAAAAAcwCIAAAABAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-22T08:58:23.236Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 3,
-              "Title": "StockInfoController.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Basic\\StockInfoController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Basic\\StockInfoController.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Basic\\StockInfoController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Basic\\StockInfoController.cs",
-              "ViewState": "AgIAAB8AAAAAAAAAAIA2wDIAAAAXAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-22T08:53:04.13Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
               "DocumentIndex": 1,
-              "Title": "StockSelectViewDTO.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Stock\\StockSelectViewDTO.cs",
-              "RelativeDocumentMoniker": "WIDESEA_DTO\\Stock\\StockSelectViewDTO.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Stock\\StockSelectViewDTO.cs",
-              "RelativeToolTip": "WIDESEA_DTO\\Stock\\StockSelectViewDTO.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvwgAAAAEAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-22T08:51:02.987Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 0,
               "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": "AgIAAAAAAAAAAAAAAAAuwB0AAAAXAAAAAAAAAA==",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAAhAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-22T08:43:04.818Z",
+              "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",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 5,
-              "Title": "RequestTaskDto.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Basic\\RequestTaskDto.cs",
-              "RelativeDocumentMoniker": "WIDESEA_DTO\\Basic\\RequestTaskDto.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Basic\\RequestTaskDto.cs",
-              "RelativeToolTip": "WIDESEA_DTO\\Basic\\RequestTaskDto.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAuwB0AAAAEAAAAAAAAAA==",
+              "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==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-22T07:45:40.767Z",
+              "WhenOpened": "2025-10-23T06:34:09.686Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 7,
+              "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": "AgIAAHkAAAAAAAAAAAAAwIoAAAARAAAAAAAAAA==",
+              "ViewState": "AgIAAF8CAAAAAAAAAAApwHkCAAAjAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-10-22T07:40:38.084Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 2,
+              "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": "AgIAAI8AAAAAAAAAAAAjwJMAAAAEAAAAAAAAAA==",
+              "ViewState": "AgIAAIEAAAAAAAAAAAAIwKcAAABcAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-10-22T05:33:37.383Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 8,
-              "Title": "Sys_DictionaryController.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_DictionaryController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\System\\Sys_DictionaryController.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_DictionaryController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\System\\Sys_DictionaryController.cs",
-              "ViewState": "AgIAACICAAAAAAAAAAAlwCwCAABXAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-22T03:11:21.896Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 9,
+              "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": "AgIAAAAAAAAAAAAAAADwvwcAAAB1AAAAAAAAAA==",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvxEAAAD0AAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
               "WhenOpened": "2025-10-21T08:37:20.946Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 11,
+              "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": "AgIAAIgAAAAAAAAAAAApwJwAAAAnAAAAAAAAAA==",
+              "ViewState": "AgIAAEAAAAAAAAAAAAAMwFUAAAAiAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-10-21T01:04:19.904Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 10,
-              "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": "AgIAAC0AAAAAAAAAAAAWwJIAAAAcAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-20T04:05:33.05Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 6,
+              "DocumentIndex": 2,
               "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": "AgIAALIAAAAAAAAAAAAqwHEBAABQAAAAAAAAAA==",
+              "ViewState": "AgIAAPwCAAAAAAAAAAAtwHQEAABBAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-09-25T03:08:03.698Z",
               "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 0404d17..752de0e 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,56 +3,36 @@
   "WorkspaceRootPath": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\",
   "Documents": [
     {
-      "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:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_dto\\stock\\stockselectviewdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\stock\\stockselectviewdto.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\\basic\\stockinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\basic\\stockinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{B8B1C352-0398-4A54-B202-D774D48367EB}|WIDESEA_IStorageBasicService\\WIDESEA_IStorageBasicServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_istoragebasicservice\\stock\\istockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{B8B1C352-0398-4A54-B202-D774D48367EB}|WIDESEA_IStorageBasicService\\WIDESEA_IStorageBasicServices.csproj|solutionrelative:widesea_istoragebasicservice\\stock\\istockinfoservice.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\\wms\\groupedstockinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\wms\\groupedstockinfo.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\\basic\\groupplate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\basic\\groupplate.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:{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:{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\\system\\sys_dictionarycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\system\\sys_dictionarycontroller.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:{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:{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:{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}"
     }
   ],
   "DocumentGroupContainers": [
@@ -62,173 +42,108 @@
       "DocumentGroups": [
         {
           "DockedWidth": 200,
-          "SelectedChildIndex": 5,
+          "SelectedChildIndex": 4,
           "Children": [
             {
               "$type": "Document",
-              "DocumentIndex": 5,
-              "Title": "GroupPlate.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Basic\\GroupPlate.cs",
-              "RelativeDocumentMoniker": "WIDESEA_DTO\\Basic\\GroupPlate.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Basic\\GroupPlate.cs",
-              "RelativeToolTip": "WIDESEA_DTO\\Basic\\GroupPlate.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvwwAAAAyAAAAAAAAAA==",
+              "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==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-22T09:05:31.445Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 4,
-              "Title": "GroupedStockInfo.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\WMS\\GroupedStockInfo.cs",
-              "RelativeDocumentMoniker": "WIDESEA_DTO\\WMS\\GroupedStockInfo.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\WMS\\GroupedStockInfo.cs",
-              "RelativeToolTip": "WIDESEA_DTO\\WMS\\GroupedStockInfo.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-22T09:04:54.385Z",
+              "WhenOpened": "2025-10-23T08:11:21.152Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 3,
-              "Title": "IStockInfoService.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStorageBasicService\\Stock\\IStockInfoService.cs",
-              "RelativeDocumentMoniker": "WIDESEA_IStorageBasicService\\Stock\\IStockInfoService.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStorageBasicService\\Stock\\IStockInfoService.cs",
-              "RelativeToolTip": "WIDESEA_IStorageBasicService\\Stock\\IStockInfoService.cs",
-              "ViewState": "AgIAAAoAAAAAAAAAAAAcwCIAAAABAAAAAAAAAA==",
+              "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-22T08:58:23.236Z",
+              "WhenOpened": "2025-10-23T07:38:19.601Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 2,
-              "Title": "StockInfoController.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Basic\\StockInfoController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Basic\\StockInfoController.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Basic\\StockInfoController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Basic\\StockInfoController.cs",
-              "ViewState": "AgIAAB8AAAAAAAAAAIA2wDIAAAAXAAAAAAAAAA==",
+              "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==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-22T08:53:04.13Z",
+              "WhenOpened": "2025-10-23T06:34:09.686Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 1,
-              "Title": "StockSelectViewDTO.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Stock\\StockSelectViewDTO.cs",
-              "RelativeDocumentMoniker": "WIDESEA_DTO\\Stock\\StockSelectViewDTO.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Stock\\StockSelectViewDTO.cs",
-              "RelativeToolTip": "WIDESEA_DTO\\Stock\\StockSelectViewDTO.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvwgAAAAjAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-22T08:51:02.987Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 0,
-              "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": "AgIAAAAAAAAAAAAAAAAAAAwAAAAPAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-22T08:43:04.818Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 8,
+              "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": "AgIAAHkAAAAAAAAAAAAAwIoAAAARAAAAAAAAAA==",
+              "ViewState": "AgIAAF8CAAAAAAAAAAApwHkCAAAjAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-10-22T07:40:38.084Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 6,
+              "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": "AgIAAI8AAAAAAAAAAAAjwJIAAABFAAAAAAAAAA==",
+              "ViewState": "AgIAAIEAAAAAAAAAAAAIwKkAAAA+AAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-10-22T05:33:37.383Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 9,
-              "Title": "Sys_DictionaryController.cs",
-              "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_DictionaryController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\System\\Sys_DictionaryController.cs",
-              "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_DictionaryController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\System\\Sys_DictionaryController.cs",
-              "ViewState": "AgIAACICAAAAAAAAAAAlwCwCAABXAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-22T03:11:21.896Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 10,
+              "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": "AgIAAAAAAAAAAAAAAADwvwcAAAB1AAAAAAAAAA==",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvxEAAAD0AAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
               "WhenOpened": "2025-10-21T08:37:20.946Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 12,
+              "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": "AgIAAIgAAAAAAAAAAAApwJwAAAAnAAAAAAAAAA==",
+              "ViewState": "AgIAAEAAAAAAAAAAAAAMwFUAAAAiAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-10-21T01:04:19.904Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 11,
-              "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": "AgIAAC0AAAAAAAAAAAAWwJIAAAAcAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-10-20T04:05:33.05Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 7,
+              "DocumentIndex": 2,
               "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": "AgIAALIAAAAAAAAAAAAqwHEBAABQAAAAAAAAAA==",
+              "ViewState": "AgIAAPwCAAAAAAAAAAAtwHQEAABBAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-09-25T03:08:03.698Z",
               "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 c04251f..1c85df2 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"
@@ -143,6 +143,13 @@
         bool UpdateDataNav(TEntity Entity);
 
         /// <summary>
+        /// 瀵艰埅鏇存柊鏁版嵁(鍙敮鎸�2绾�)
+        /// </summary>
+        /// <param name="Entity"></param>
+        /// <returns></returns>
+        bool UpdateDataNav(List<TEntity> Entity);
+
+        /// <summary>
         /// 鎸囧畾鍒楁洿鏂版暟鎹�
         /// </summary>
         /// <param name="entity"></param>
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 7032f8e..536bfea 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"
@@ -893,6 +893,11 @@
             return _db.UpdateNav(Entity).IncludesAllFirstLayer().ExecuteCommand();
         }
 
+        public bool UpdateDataNav(List<TEntity> Entity)
+        {
+            return _db.UpdateNav(Entity).IncludesAllFirstLayer().ExecuteCommand();
+        }
+
         public bool DeleteAndMoveIntoHty(TEntity entity, OperateTypeEnum operateType)
         {
             Type type = entity.GetType();
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"
new file mode 100644
index 0000000..eed6f4a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Order/OutboundOrderGetDTO.cs"
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.Order
+{
+    public class OutboundOrderGetDTO
+    {
+        public string OrderNo { get; set; }
+        public int pageNo { get; set; }
+
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/GenerateOutTaskDto.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/GenerateOutTaskDto.cs"
index 7bfe221..64dd2dd 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/GenerateOutTaskDto.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/GenerateOutTaskDto.cs"
@@ -9,12 +9,13 @@
     public class GenerateOutTaskDto
     {
         public int orderId { get; set; }
+        public List<int> orderIds { get; set; }
 
         public List<StockSelectViewDTO> stockViews { get; set; }
 
         public string TargetAddress { get; set; }
 
-        public int AreaId { get; set; }
+        public string AreaId { get; set; }
     }
 
     public class StockViewDTO
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"
index 1c4bcb7..d4bb720 100644
--- "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"
@@ -1,11 +1,14 @@
-锘縰sing WIDESEA_Core.BaseServices;
+锘縰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_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 8a139e4..196fc94 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"
@@ -31,5 +31,5 @@
     /// </summary>
     /// <param name="requestOut"></param>
     /// <returns></returns>
-    WebResponseContent GenerateOutboundTask(GenerateOutTaskDto requestOut);
+    Task<WebResponseContent> GenerateOutboundTask(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_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 33d0c44..56ea6ea 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"
@@ -1,4 +1,6 @@
-锘縰sing WIDESEA_DTO;
+锘縰sing WIDESEA_Core.Enums;
+using WIDESEA_DTO;
+using WIDESEA_DTO.WMS;
 
 namespace WIDESEA_IStorageTaskServices;
 
@@ -86,7 +88,7 @@
     /// <param name="areaCode">鍖哄煙缂栫爜</param>
     /// <param name="roadways">宸烽亾鍒楄〃</param>
     /// <returns>杩斿洖缁撴灉闆�</returns>
-    Task<WebResponseContent> RequestOutboundTaskAsync(RequestTaskDto taskDto);
+    Task<Dt_Task> RequestOutboundTaskAsync(RequestTaskDto taskDto);
 
 
     /// <summary>
@@ -147,4 +149,10 @@
 
 
     Task<WebResponseContent> SendERPTaskCompletion(string palletCode);
+
+    Task<WebResponseContent> SendWCSTask(List<WMSTaskDTO> taskDTO);
+
+    (List<DtLocationStatusChangeRecord>, List<DtLocationInfo>) UpdateLocationStatus(DtLocationInfo location, LocationEnum locationStatus, int taskNum, int StatusChangeType);
+
+    (List<DtLocationStatusChangeRecord>, List<DtLocationInfo>) UpdateLocationStatus(string locationCode, LocationEnum locationStatus, int taskNum, int StatusChangeType);
 }
\ 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_Model/Models/BasicModel/DtStockInfoDetail.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfoDetail.cs"
index 3602552..d2cb05b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfoDetail.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfoDetail.cs"
@@ -82,6 +82,12 @@
     public decimal Quantity { get; set; }
 
     /// <summary>
+    /// 鍑哄簱鏁伴噺
+    /// </summary>
+    [SugarColumn(IsNullable = true, DecimalDigits = 4, ColumnDescription = "鏁伴噺", DefaultValue = "0")]
+    public decimal OutboundQuantity { get; set; }
+
+    /// <summary>
     /// 缁勭洏鐘舵�� 鐢佃姱鐘舵��
     /// </summary>
     [Required]
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\267\245\347\250\213\345\217\221\350\264\247\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\345\267\245\347\250\213\345\217\221\350\264\247\345\215\225\344\270\200\350\247\210\350\241\250_ST.cs"
new file mode 100644
index 0000000..b12e8f8
--- /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\345\267\245\347\250\213\345\217\221\350\264\247\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/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"
index c6193a5..0f6580e 100644
--- "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"
@@ -61,6 +61,12 @@
         public decimal OverOutQuantity { get; set; }
 
         /// <summary>
+        /// 鏈嚭搴撴暟閲�
+        /// </summary>
+        [SugarColumn(ColumnName = "NotOutQuantity")]
+        public decimal NotOutQuantity { get; set; }
+
+        /// <summary>
         /// 鍗曟嵁绫诲瀷
         /// </summary>
 
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"
index 915a1eb..7825738 100644
--- "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"
@@ -1,5 +1,12 @@
-锘縰sing WIDESEA_Core.BaseRepository;
+锘縰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;
@@ -19,5 +26,115 @@
             _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_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 5815c76..cfcbc44 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"
@@ -1,4 +1,5 @@
 锘縰sing AngleSharp.Dom;
+using Dm;
 using Mapster;
 using Masuit.Tools;
 using NewLife.Reflection;
@@ -12,13 +13,16 @@
 using WIDESEA_Cache;
 using WIDESEA_Common;
 using WIDESEA_Core;
+using WIDESEA_Core.Enums;
 using WIDESEA_DTO;
 using WIDESEA_DTO.Basic;
 using WIDESEA_DTO.Stock;
+using WIDESEA_DTO.WMS;
 using WIDESEA_IOrderRepository;
 using WIDESEA_Model.Models;
 using WIDESEA_Model.Models.Order;
 using WIDESEA_OrderRepository;
+using WIDESEA_StorageTaskRepository;
 
 namespace WIDESEA_StorageBasicService;
 
@@ -29,18 +33,31 @@
     private readonly IUnitOfWorkManage _unitOfWorkManage;
     private readonly IDt_OutboundOrderRepository _outorderRepository;
     private readonly IDt_OutboundOrderDetailRepository _outorderdetailRepository;
+    private readonly IStockInfoDetailRepository _stockInfoDetailRepository;
+    private readonly IDt_TaskService _taskService;
+    private readonly ILocationInfoRepository _locationRepository;
+    private readonly IDt_TaskRepository _taskRepository;
+
     public StockInfoService(IStockInfoRepository BaseDal, 
                                 ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository,
                                 IDt_InboundOrderRepository inboundOrderRepository,
                                 IUnitOfWorkManage unitOfWorkManage,
                                 IDt_OutboundOrderRepository outorderRepository,
-                                IDt_OutboundOrderDetailRepository outorderdetailRepository) : base(BaseDal)
+                                IDt_OutboundOrderDetailRepository outorderdetailRepository,
+                                IStockInfoDetailRepository stockInfoDetailRepository,
+                                IDt_TaskService taskService,
+                                ILocationInfoRepository locationRepository,
+                                IDt_TaskRepository taskRepository) : base(BaseDal)
     {
         _locationStatusChangeRecordRepository = locationStatusChangeRecordRepository;
         _inboundOrderRepository = inboundOrderRepository;
         _unitOfWorkManage = unitOfWorkManage;
         _outorderRepository = outorderRepository;
         _outorderdetailRepository = outorderdetailRepository;
+        _stockInfoDetailRepository = stockInfoDetailRepository;
+        _taskService = taskService;
+        _locationRepository = locationRepository;
+        _taskRepository = taskRepository;
     }
 
     /// <summary>
@@ -115,13 +132,15 @@
         return new PageGridData<DtStockInfo>(totalCount, data);
     }
 
+
+    #region 搴撳瓨瑙嗗浘
     public List<StockSelectViewDTO> GetStockSelectViews(string materielCode)
     {
         var stock = 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);
+        .Where(x => x.StockInfoDetails.Any(d => d.MaterielCode == materielCode && d.Quantity > 0 && d.Quantity > d.OutboundQuantity)).ToList().OrderBy(x => x.CreateDate);
 
         var result = stock.Select(s => new StockSelectViewDTO
         {
@@ -132,8 +151,8 @@
             .FirstOrDefault(d => d.MaterielCode == materielCode)?.MaterielName ?? string.Empty,
 
             UseableQuantity = s.StockInfoDetails
-            .Where(d => d.MaterielCode == materielCode && d.Quantity > 0)
-            .Sum(d => (decimal?)d.Quantity) ?? 0,  // 澶勭悊绌哄�兼儏鍐�
+            .Where(d => d.MaterielCode == materielCode && d.Quantity > 0 && d.Quantity > d.OutboundQuantity)
+            .Sum(d => (decimal?)d.Quantity - d.OutboundQuantity) ?? 0,  // 澶勭悊绌哄�兼儏鍐�
 
             PalletCode = s.PalletCode ?? string.Empty,
             LocationCode = s.LocationInfo?.LocationCode ?? string.Empty
@@ -142,56 +161,79 @@
         return result;
     }
 
+    #endregion
+
     #region 鏍规嵁鍗曟嵁鏄庣粏鐢熸垚鍑哄簱浠诲姟
 
-    public WebResponseContent GenerateOutboundTask(GenerateOutTaskDto requestOut)
+    public async Task<WebResponseContent> GenerateOutboundTask(GenerateOutTaskDto requestOut)
     {
         WebResponseContent content = new WebResponseContent();
         try
         {
-            List<RequestTaskDto> taskDtos = new List<RequestTaskDto>();
-            Dt_OutboundOrder outboundOrder = _outorderRepository.QueryFirst(x => x.Id == requestOut.orderId);
+            foreach (var orderId in requestOut.orderIds)
+            {
+                List<RequestTaskDto> taskDtos = new List<RequestTaskDto>();
+                Dt_OutboundOrder outboundOrder = _outorderRepository.QueryFirst(x => x.Id == orderId);
 
-            if (outboundOrder == null)
-            {
-                throw new Exception("鏈壘鍒板嚭搴撳崟鏄庣粏淇℃伅!");
-            }
-            List<DtStockInfo>? stockInfos = null;
-            Dt_OutboundOrderDetail? orderDetail = null;
-            List<DtLocationInfo>? locationInfos = null;
-            if (outboundOrder.OrderStatus != OrderStateEmun.宸插畬鎴�.ObjToInt())
-            {
-                return content.Error("璇ュ嚭搴撳崟宸插畬鎴愶紝鏃犳硶鐢熸垚鍑哄簱浠诲姟");
-            }
-            else
-            {
-                if (requestOut.stockViews.Count == 0)
-                {
+                (bool, string) checkResult = CheckSelectStockDeital(outboundOrder, requestOut.stockViews, requestOut);
+                if (!checkResult.Item1) throw new Exception(checkResult.Item2);
 
-                }
                 else
                 {
-                    foreach (var item in requestOut.stockViews)
+                    var result = AssignStockOutbound(outboundOrder, requestOut.stockViews);
+
+                    if (result.Item1.Count <= 0)
                     {
-                        decimal availableQuantity = item.UseableQuantity;
-                        if (availableQuantity <= 0)
-                        {
-                            continue; // 鏃犲彲鐢ㄥ簱瀛橈紝缁х画涓嬩竴涓�
-                        }
-                        var stock = BaseDal.QueryFirst(x => x.LocationCode == item.LocationCode && x.PalletCode == item.PalletCode);
-                        // 鍒涘缓浠诲姟
+                        return content.Error("鏈壘鍒板簱瀛樺垎閰嶏紝璇风‘璁ゆ槸鍚﹀瓨鍦ㄥ簱瀛樻垨鍗曟嵁鏁伴噺宸插嚭瀹�");
+                    }
+
+                    result.Item1.Distinct().ForEach(item =>
+                    {
                         RequestTaskDto task = new RequestTaskDto
                         {
-                            TaskType = outboundOrder.OrderStatus,
+                            TaskType = outboundOrder.OrderType,
                             OrderNo = outboundOrder.OrderNo,
-                            MaterielCode = item.MaterielCode,
+                            MaterielCode = outboundOrder.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.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);
+                        BaseDal.UpdateDataNav(result.Item1);
+                        await _locationStatusChangeRecordRepository.AddDataAsync(locationStatusChangeRecords);
+                        await _locationRepository.UpdateDataAsync(locations);
+                        _outorderRepository.UpdateData(result.Item2);
+                    });
+                    content = await _taskService.SendWCSTask(taskDTOs);
                 }
             }
-            return content.OK("鍑哄簱浠诲姟鐢熸垚鎴愬姛");
+            return content;
         }
         catch (Exception ex)
         {
@@ -199,10 +241,126 @@
         }
                
     }
+    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_OutboundOrder) AssignStockOutbound(Dt_OutboundOrder outboundOrder, List<StockSelectViewDTO> stockSelectViews)
+    {
+        decimal originalNeedQuantity = outboundOrder.OrderQuantity - outboundOrder.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(outboundOrder.MaterielCode);
+        }
+
+        List<DtStockInfo> outStockNews=new List<DtStockInfo>();
+
+        foreach (var item in outStocks)
+        {
+            var stockDetail = item.StockInfoDetails
+            .Where(d => d.MaterielCode == outboundOrder.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);
+                }
+            }
+            
+        }
+        outboundOrder.OverOutQuantity = outboundOrder.OrderQuantity - needQuantity;
+        outboundOrder.OrderStatus = (int)OrderStateEmun.寮�濮�;
+
+        return (outStockNews, outboundOrder);
+    }
+
+    private (bool, string) CheckSelectStockDeital(Dt_OutboundOrder outboundOrder, List<StockSelectViewDTO> stockSelectViews, GenerateOutTaskDto requestOut)
+    {
+        if (outboundOrder == null)
+        {
+            return (false, "鏈壘鍒板嚭搴撳崟淇℃伅");
+        }
+        if (outboundOrder.OrderStatus == (int)OrderStateEmun.宸插畬鎴�)
+        {
+            return (false, "璇ユ槑缁嗕笉鍙搷浣�");
+        }
+        if (stockSelectViews != null && stockSelectViews.Sum(x => x.UseableQuantity) > outboundOrder.OrderQuantity - outboundOrder.OverOutQuantity)
+        {
+            return (false, "閫夋嫨鏁伴噺瓒呭嚭鍗曟嵁鏁伴噺");
+        }
+        if (outboundOrder.OrderQuantity <= outboundOrder.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>()
+        .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();
+    }
     #endregion 鏍规嵁鍗曟嵁鏄庣粏鐢熸垚鍑哄簱浠诲姟
 
-
+    #region 缁勭洏
     public async Task<WebResponseContent> AddGroupPlateAsync(GroupPlate groupPlate)
     {
         WebResponseContent content = new WebResponseContent();
@@ -283,7 +441,9 @@
             return content.Error(ex.Message);
         }
     }
+    #endregion
 
+    #region 瑙g洏
     public async Task<WebResponseContent> DeleteGroupPlateAsync(GroupPlate groupPlate)
     {
         WebResponseContent content = new WebResponseContent();
@@ -365,4 +525,5 @@
             return WebResponseContent.Instance.Error(ex.Message);
         }
     }
+    #endregion
 }
\ 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_StorageTaskServices/AspNetCoreSchedule.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs"
index 2e84e57..78c4035 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,10 +30,11 @@
         private readonly ISys_ConfigService _configService;
         private readonly ILocationInfoRepository _locationRepository;
         private readonly IDt_InboundOrderRepository _inboundOrderRepository;
+        private readonly IDt_OutboundOrderRepository _outboundorderRepository;
 
         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)
+        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)
         {
             _logger = logger;
             _locationRepository = locationRepository;
@@ -43,6 +44,7 @@
             _stationManagerRepository = stationManagerRepository;
             _configService = configService;
             _inboundOrderRepository = inboundOrderRepository;
+            _outboundorderRepository = outboundorderRepository;
         }
 
         public Task StartAsync(CancellationToken cancellationToken)
@@ -55,8 +57,8 @@
         {
             try
             {
+                #region 鍏ュ簱鍗曟嵁鍚屾
                 List<WMS_閲囪喘鍏ユ垚鍝佸叆搴撹嚜鍔ㄦ墦鍗版竻鍗昣ST> ERPPrintChecklist =SqlSugarHelper.DBERP.Queryable<WMS_閲囪喘鍏ユ垚鍝佸叆搴撹嚜鍔ㄦ墦鍗版竻鍗昣ST>().Where(x => true).ToList();
-
                 
                 var printCheckList = _inboundOrderRepository.QueryData(x => true);
                 List<Dt_InboundOrder> inboundOrderAdd = new List<Dt_InboundOrder>();
@@ -68,7 +70,7 @@
                     {
                         Dt_InboundOrder Print = new Dt_InboundOrder()
                         {
-                            OrderNo = GetOrderPintCode(),
+                            OrderNo = GetOrderPintCode("OrderNoIn"),
                             UpperOrderNo = item.鍗曞彿,
                             DemandClassification = item.闇�姹傚垎绫�,
                             OrderType = item.鍗曟嵁绫诲瀷,
@@ -92,7 +94,7 @@
                     {
                         if (x.OrderNo == null || x.OrderNo == "")
                         {
-                            x.OrderNo = GetOrderPintCode();
+                            x.OrderNo = GetOrderPintCode("OrderNoIn");
                             x.UpperOrderNo = item.鍗曞彿;
                             x.DemandClassification = item.闇�姹傚垎绫�;
                             x.OrderType = item.鍗曟嵁绫诲瀷;
@@ -120,6 +122,42 @@
                 {
                     _inboundOrderRepository.UpdateData(inboundOrderUpdate);
                 }
+                #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 x = OutBoundOrder.Where(x => x.MaterielCode == item.瀛愪欢鏂欏彿 && x.UpperOrderNo == item.鍗曞彿).FirstOrDefault();
+                    if(x == null)
+                    {
+                        Dt_OutboundOrder outOrder = new Dt_OutboundOrder()
+                        {
+                            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);
+                    }
+                }
+
+                #endregion
+                if (outboundOrderAdd.Count > 0)
+                {
+                    _outboundorderRepository.AddData(outboundOrderAdd);
+                }
             }
             catch (Exception ex)
             {
@@ -127,10 +165,10 @@
             }
         }
 
-        public string GetOrderPintCode()
+        public string GetOrderPintCode(string printCode)
         {
             string PrintCode = "";
-            var PrintSetting = SqlSugarHelper.DbWMS.Queryable<Dt_PrintSetting>().Where(x => x.PrintCode == "OrderNo").ToList().FirstOrDefault();
+            var PrintSetting = SqlSugarHelper.DbWMS.Queryable<Dt_PrintSetting>().Where(x => x.PrintCode == printCode).ToList().FirstOrDefault();
 
             if (PrintSetting.Spare1 == DateTime.Now.ToString("yyyyMMdd"))
             {
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 ede4e60..9b5afe4 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"
@@ -9,6 +9,7 @@
 using SixLabors.Fonts.Tables.AdvancedTypographic;
 using SqlSugar;
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.Linq.Expressions;
 using System.Reflection;
@@ -108,15 +109,19 @@
             //stockInfo_Hty.ModifyDate = DateTime.Now; 
             stock.ModifyDate = DateTime.Now;
             stock.LocationCode = task.TargetAddress;
+            var result1 = UpdateLocationStatus(locationStart, LocationEnum.Free, task.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticOutbound);
+            var result2 = UpdateLocationStatus(locationEnd, LocationEnum.InStock, task.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticOutbound);
+            
             await _unitOfWorkManage.UseTranAsync(async () =>
             {
                 //await DeleteStockInfoAsync(stock.Id);
                 //await DeleteStockInfoDetailsAsync(stock.StockInfoDetails);
                 //await AddStockInfoHtyAsync(stockInfo_Hty);
                 _stockInfoRepository.UpdateData(stock);
-
-                UpdateLocationStatus(locationStart, LocationEnum.Free, task.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticOutbound);
-                UpdateLocationStatus(locationEnd, LocationEnum.InStock, task.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticOutbound);
+                await _locationStatusChangeRecordRepository.AddDataAsync(result1.Item1);
+                await _locationStatusChangeRecordRepository.AddDataAsync(result2.Item1);
+                await _locationRepository.UpdateDataAsync(result1.Item2);
+                await _locationRepository.UpdateDataAsync(result2.Item2);
 
                 await DeleteTaskAsync(task.TaskId);
                 await AddTaskHtyAsync(taskHty);
@@ -157,11 +162,12 @@
 
             stock.ModifyDate = DateTime.Now;
             stock.LocationCode = task.TargetAddress;
-
+            var result = UpdateLocationStatus(locationEnd, LocationEnum.InStock, task.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticRelocation);
             await _unitOfWorkManage.UseTranAsync(async () =>
             {
                 //UpdateLocationStatus(locationStart, LocationEnum.Free, task.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticInbound);
-                UpdateLocationStatus(locationEnd, LocationEnum.InStock, task.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticRelocation);
+                await _locationStatusChangeRecordRepository.AddDataAsync(result.Item1);
+                await _locationRepository.UpdateDataAsync(result.Item2);
                 _stockInfoRepository.UpdateData(stock);
                 await DeleteTaskAsync(task.TaskId);
                 await AddTaskHtyAsync(taskHty);
@@ -205,14 +211,18 @@
             taskHty.FinishTime = DateTime.Now;
             taskHty.OperateType = App.User.UserName != null ? (int)OperateTypeEnum.浜哄伐瀹屾垚 : (int)OperateTypeEnum.鑷姩瀹屾垚;
             taskHty.Creater = App.User.UserName != null ? App.User.UserName : "System";
-
+            var result1 = UpdateLocationStatus(locationStart, LocationEnum.Free, task.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticInbound);
+            var result2 = UpdateLocationStatus(locationEnd, LocationEnum.InStock, task.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticInbound);
             await _unitOfWorkManage.UseTranAsync(async () =>
             {
                 await _stockInfoRepository.UpdateDataAsync(stock);
                 await DeleteTaskAsync(task.TaskId);
                 await AddTaskHtyAsync(taskHty);
-                UpdateLocationStatus(locationStart, LocationEnum.Free, task.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticInbound);
-                UpdateLocationStatus(locationEnd, LocationEnum.InStock, task.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticInbound);
+                await _locationStatusChangeRecordRepository.AddDataAsync(result1.Item1);
+                await _locationStatusChangeRecordRepository.AddDataAsync(result2.Item1);
+                await _locationRepository.UpdateDataAsync(result1.Item2);
+                await _locationRepository.UpdateDataAsync(result2.Item2);
+
             });
             content.OK("鍏ュ簱瀹屾垚");
         }
@@ -396,37 +406,45 @@
             {
                 return content.Error($"璧风偣搴撲綅{StartAddress.LocationCode}鎼繍璺緞琚崰鐢紝璇蜂汉宸ョ‘璁ゅ啀涓嬪彂浠诲姟");
             }
+            Dt_Task taskNew = new Dt_Task();
+            DtLocationInfo Endlocation= new DtLocationInfo();
             if (taskDto.AreaId != 0)
             {
                 switch (taskDto.AreaId)
                 {
                     case 1:
-                        return await InboundStakerArea(taskDto, StartAddress);
+                        Endlocation = await GetEmptyLocation("SC1");
+                        taskNew = InboundStakerArea(taskDto, StartAddress, Endlocation);
+                        break;
                     case 2:
                     case 3:
                     case 4:
                     case 5:
                     case 6:
-                        return await InboundAGVCacheArea(taskDto, StartAddress, await GetAGVEmptyCacheLocation(taskDto.AreaId, StartAddress));
+                        Endlocation = await GetAGVEmptyCacheLocation(taskDto.AreaId, StartAddress);
+                        taskNew = InboundAGVCacheArea(taskDto, StartAddress, Endlocation);
+                        break;
                     default:
                         return content.Error("璇烽�夋嫨姝g‘鐨勫尯鍩熶俊鎭�");
                 }
             }
             else if (taskDto.TargetAddress != null)
             {
-                var location = _locationRepository.QueryFirst(x => x.LocationCode == taskDto.TargetAddress);
-                if (location != null && location.LocationStatus == (int)LocationEnum.Free && location.EnalbeStatus == 1)
+                Endlocation = _locationRepository.QueryFirst(x => x.LocationCode == taskDto.TargetAddress);
+                if (Endlocation != null && Endlocation.LocationStatus == (int)LocationEnum.Free && Endlocation.EnalbeStatus == 1)
                 {
-                    switch (location.AreaId)
+                    switch (Endlocation.AreaId)
                     {
                         case 1:
-                            return await InboundStakerArea(taskDto, StartAddress);
+                            taskNew = InboundStakerArea(taskDto, StartAddress, Endlocation);
+                            break;
                         case 2:
                         case 3:
                         case 4:
                         case 5:
                         case 6:
-                            return await InboundAGVCacheArea(taskDto, StartAddress, location);
+                            taskNew = InboundAGVCacheArea(taskDto, StartAddress, Endlocation);
+                            break;
                         default:
                             return content.Error("璐т綅鍖哄煙鏈壘鍒�");
                     }
@@ -438,8 +456,22 @@
             }
             else
             {
-                return content.OK("璇烽�夋嫨鍏ュ簱鍖哄煙鎴栫粓鐐瑰湴鍧�");
+                return content.Error("璇烽�夋嫨鍏ュ簱鍖哄煙鎴栫粓鐐瑰湴鍧�");
             }
+            var taskDTO = CreateListTaskDTO(taskNew);
+            
+            var result1 = UpdateLocationStatus(StartAddress, LocationEnum.Lock, taskNew.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticInbound);
+            var result2 = UpdateLocationStatus(Endlocation, LocationEnum.InStockDisable, taskNew.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticInbound);
+
+            await _unitOfWorkManage.UseTranAsync(async () =>
+            {
+                await _locationStatusChangeRecordRepository.AddDataAsync(result1.Item1);
+                await _locationStatusChangeRecordRepository.AddDataAsync(result2.Item1);
+                await _locationRepository.UpdateDataAsync(result1.Item2);
+                await _locationRepository.UpdateDataAsync(result2.Item2);
+                BaseDal.AddData(taskNew);
+            });
+            return content = await SendWCSTask(taskDTO);
         }
         catch (Exception err)
         {
@@ -447,86 +479,54 @@
         }
     }
 
-    public async Task<WebResponseContent> InboundStakerArea(RequestTaskDto taskDto,DtLocationInfo StartAddress)
+    public Dt_Task InboundStakerArea(RequestTaskDto taskDto, DtLocationInfo StartAddress,DtLocationInfo EndLocation)
     {
-        WebResponseContent content = new WebResponseContent();
-        try
+        var station = _stationManagerRepository.QueryFirst(x => x.stationType == 1 && x.Roadway == "SC1");
+        if (EndLocation == null)
         {
-            var station = _stationManagerRepository.QueryFirst(x => x.stationType == 1 && x.Roadway == "SC1");
-
-            Dt_Task taskNew = new Dt_Task
-            {
-                Grade = 1,
-                Roadway = "SC1",
-                TargetAddress = "SC1",
-                Dispatchertime = DateTime.Now,
-                MaterialNo = "",
-                NextAddress = station.stationChildCode,
-                OrderNo = null,
-                PalletCode = taskDto.PalletCode,
-                SourceAddress = taskDto.Position,
-                CurrentAddress = taskDto.Position,
-                TaskState = (int)TaskInStatusEnum.InNew,
-                TaskType = (int)TaskInboundTypeEnum.Inbound,
-                TaskNum = BaseDal.GetTaskNo().Result,
-                CreateDate = DateTime.Now,
-                TaskId = 0,
-                AGVTaskNum = GenerateUniqueId(),
-                Floor = "1F",
-            };
-            var taskDTO = CreateListTaskDTO(taskNew);
-
-            BaseDal.AddData(taskNew);
-
-            UpdateLocationStatus(StartAddress, LocationEnum.InStockDisable, taskNew.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticInbound);
-            //UpdateLocationStatus(location, LocationEnum.Lock, taskNew.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticInbound);
-            
-            //return content.OK();
-            return content = await SendWCSTask(taskDTO);
+            throw new Exception("鏃犳硶鑾峰彇璐т綅淇℃伅");
         }
-        catch (Exception ex)
+        return new Dt_Task
         {
-            _unitOfWorkManage.RollbackTran();
-            return content.Error(ex.Message);
-        }
+            Grade = 1,
+            Roadway = "SC1",
+            TargetAddress = EndLocation.LocationCode,
+            Dispatchertime = DateTime.Now,
+            MaterialNo = "",
+            NextAddress = station.stationChildCode,
+            OrderNo = null,
+            PalletCode = taskDto.PalletCode,
+            SourceAddress = taskDto.Position,
+            CurrentAddress = taskDto.Position,
+            TaskState = (int)TaskInStatusEnum.InNew,
+            TaskType = (int)TaskInboundTypeEnum.Inbound,
+            TaskNum = BaseDal.GetTaskNo().Result,
+            CreateDate = DateTime.Now,
+            TaskId = 0,
+            AGVTaskNum = GenerateUniqueId(),
+            Floor = "1F",
+        };
     }
 
-    public async Task<WebResponseContent> InboundAGVCacheArea(RequestTaskDto taskDto, DtLocationInfo StartAddress, DtLocationInfo location)
+    public Dt_Task InboundAGVCacheArea(RequestTaskDto taskDto, DtLocationInfo StartAddress, DtLocationInfo location)
     {
         WebResponseContent content = new WebResponseContent();
-        try
+
+        if (location == null)
         {
-            if (location == null)
-            {
-                return content.Error("璧风偣鏈畾涔夋垨缁堢偣鍖哄煙鏈壘鍒扮┖闂插簱浣�");
-            }
-            Dt_Task taskNew = new Dt_Task();
-            if (StartAddress.Floor != location.Floor)
-            {
-                taskNew= RequestAcrossFloorTask(StartAddress,location, (int)TaskInboundTypeEnum.Inbound,taskDto.PalletCode);
-            }
-            else
-            {
-                taskNew = RequestAGVCarryTask(StartAddress, location, (int)TaskInboundTypeEnum.Inbound, taskDto.PalletCode);
-            }
-                
-            var taskDTO = CreateListTaskDTO(taskNew);
-            _unitOfWorkManage.BeginTran();
-
-            UpdateLocationStatus(StartAddress, LocationEnum.InStockDisable, taskNew.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticInbound);
-            UpdateLocationStatus(location, LocationEnum.Lock, taskNew.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticInbound);
-
-            BaseDal.AddData(taskNew);
-
-            _unitOfWorkManage.CommitTran();
-            //return content.OK();
-            return content = await SendWCSTask(taskDTO);
+            throw new Exception("鏃犳硶鑾峰彇璐т綅淇℃伅");
         }
-        catch (Exception ex)
+        Dt_Task taskNew = new Dt_Task();
+        if (StartAddress.Floor != location.Floor)
         {
-            _unitOfWorkManage.RollbackTran();
-            return content.Error(ex.Message);
+            taskNew = RequestAcrossFloorTask(StartAddress, location, (int)TaskInboundTypeEnum.Inbound, taskDto.PalletCode);
         }
+        else
+        {
+            taskNew = RequestAGVCarryTask(StartAddress, location, (int)TaskInboundTypeEnum.Inbound, taskDto.PalletCode);
+        }
+        return taskNew;
+
     }
     #endregion 璇锋眰浠诲姟鍏ュ簱
 
@@ -637,7 +637,9 @@
             {
                 return content.Error("璇ユ墭鐩樺簱瀛樺凡鍦ㄥ嚭搴撶紦瀛樺尯");
             }
-            return await RequestOutboundTaskAsync(new RequestTaskDto { PalletCode = palletCode, AreaId = 2, Position = stcok.LocationCode ,TaskType = (int)TaskOutboundTypeEnum.OutOther });
+
+            Dt_Task taskNew= await RequestOutboundTaskAsync(new RequestTaskDto { PalletCode = palletCode, AreaId = 2, Position = stcok.LocationCode, TaskType = (int)TaskOutboundTypeEnum.OutOther });
+            return content.OK(data: taskNew);
         }
         catch (Exception ex)
         {
@@ -651,156 +653,117 @@
     /// </summary>
     /// <param name="taskDto"></param>
     /// <returns></returns>
-    public async Task<WebResponseContent> RequestOutboundTaskAsync(RequestTaskDto taskDto)
+    public async Task<Dt_Task> RequestOutboundTaskAsync(RequestTaskDto taskDto)
     {
-        WebResponseContent content = new WebResponseContent();
-        try
+        DtStockInfo stcok = await _stockInfoRepository.QueryFirstAsync(x => x.PalletCode == taskDto.PalletCode);
+        if (stcok == null)
         {
-            DtStockInfo stcok = await _stockInfoRepository.QueryFirstAsync(x => x.PalletCode == taskDto.PalletCode);
-            if (stcok == null)
-            {
-                return content.Error("鎵樼洏淇℃伅涓嶅瓨鍦紝璇风‘璁ゆ墭鐩樺凡鍏ュ簱鎴愬姛");
-            }
+            throw new Exception("鎵樼洏淇℃伅涓嶅瓨鍦紝璇风‘璁ゆ墭鐩樺凡鍏ュ簱鎴愬姛");
+        }
 
-            var StartAddress = await _locationRepository.QueryFirstAsync(x => x.LocationCode == taskDto.Position);
-            if (StartAddress == null)
+        var StartAddress = await _locationRepository.QueryFirstAsync(x => x.LocationCode == taskDto.Position);
+        if (StartAddress == null)
+        {
+            throw new Exception("璧风偣搴撲綅鏈壘鍒�");
+        }
+        if (!LocationIsOutBound(StartAddress))
+        {
+            throw new Exception($"璧风偣搴撲綅{StartAddress.LocationCode}鍑哄簱璺緞琚崰鐢紝璇蜂汉宸ョ‘璁ゅ啀涓嬪彂浠诲姟");
+        }
+        DtLocationInfo location = null;
+        if (taskDto.AreaId != 0)
+        {
+            if (taskDto.AreaId == 1)
             {
-                return content.Error("璧风偣搴撲綅鏈壘鍒�");
-            }
-            if (!LocationIsOutBound(StartAddress))
-            {
-                return content.Error($"璧风偣搴撲綅{StartAddress.LocationCode}鍑哄簱璺緞琚崰鐢紝璇蜂汉宸ョ‘璁ゅ啀涓嬪彂浠诲姟");
-            }
-            DtLocationInfo location = null;
-            if (taskDto.AreaId != 0)
-            {
-                if (taskDto.AreaId == 1)
-                {
-                    location = await GetEmptyLocation("SC1");
-                }
-                else
-                {
-                    location = await GetAGVEmptyCacheLocation(taskDto.AreaId, StartAddress);
-                }
-                    
-            }
-            else if (taskDto.TargetAddress != null)
-            {
-                location = _locationRepository.QueryFirst(x => x.LocationCode == taskDto.TargetAddress);
-
-                if (location != null && location.LocationStatus != (int)LocationEnum.Free && location.EnalbeStatus == 1)
-                {
-                    return content.OK("鐩爣搴撲綅涓嶅彲鐢�");
-                }
+                location = await GetEmptyLocation("SC1");
             }
             else
             {
-                return content.OK("璇烽�夋嫨鍏ュ簱鍖哄煙鎴栫粓鐐瑰湴鍧�");
+                location = await GetAGVEmptyCacheLocation(taskDto.AreaId, StartAddress);
             }
 
-            switch (StartAddress.AreaId)
+        }
+        else if (taskDto.TargetAddress != null)
+        {
+            location = _locationRepository.QueryFirst(x => x.LocationCode == taskDto.TargetAddress);
+
+            if (location != null && location.LocationStatus != (int)LocationEnum.Free && location.EnalbeStatus == 1)
             {
-                case 1:
-                    return await OutboundStakerArea(taskDto, StartAddress, location);
-                case 2:
-                case 3:
-                case 4:
-                case 5:
-                case 6:
-                    return await OutboundAGVCacheArea(taskDto, StartAddress, location);
-                default:
-                    return content.Error("璇烽�夋嫨姝g‘鐨勫尯鍩熶俊鎭�");
+                throw new Exception("鐩爣搴撲綅涓嶅彲鐢�");
             }
         }
-        catch (Exception ex)
+        else
         {
-            return content.Error(ex.Message);
+            throw new Exception("璇烽�夋嫨鍏ュ簱鍖哄煙鎴栫粓鐐瑰湴鍧�");
+        }
+        switch (StartAddress.AreaId)
+        {
+            case 1:
+                return OutboundStakerArea(taskDto, StartAddress, location);
+            case 2:
+            case 3:
+            case 4:
+            case 5:
+            case 6:
+                return OutboundAGVCacheArea(taskDto, StartAddress, location);
+            default:
+                throw new Exception("璇烽�夋嫨姝g‘鐨勫尯鍩熶俊鎭�");
         }
     }
 
-    public async Task<WebResponseContent> OutboundStakerArea(RequestTaskDto taskDto, DtLocationInfo StartAddress, DtLocationInfo location)
+
+    public Dt_Task OutboundStakerArea(RequestTaskDto taskDto, DtLocationInfo StartAddress, DtLocationInfo location)
     {
-        WebResponseContent content = new WebResponseContent();
-        try
+        var station = _stationManagerRepository.QueryFirst(x => x.stationType == 1 && x.Roadway == "SC1");
+
+        if (location == null)
         {
-            var station = _stationManagerRepository.QueryFirst(x => x.stationType == 1 && x.Roadway == "SC1");
-
-            if (location == null)
-            {
-                return content.Error("缁堢偣鍖哄煙鏈壘鍒扮┖闂插簱浣�");
-            }
-
-            if (location.AreaId == 5 || location.AreaId == 6)
-            {
-                return content.Error("褰撳墠鍖哄煙涓嶅彲鍑哄簱锛岃鑱旂郴绠$悊鍛�");
-            }
-            Dt_Task taskNew = new Dt_Task
-            {
-                Grade = Convert.ToInt32(StartAddress.Remark),
-                Roadway = "SC1",
-                TargetAddress = location.LocationCode,
-                Dispatchertime = DateTime.Now,
-                MaterialNo = "",
-                NextAddress = station.stationChildCode,
-                OrderNo = null,
-                PalletCode = taskDto.PalletCode,
-                SourceAddress = taskDto.Position,
-                CurrentAddress = taskDto.Position,
-                TaskState = (int)TaskOutStatusEnum.OutNew,
-                TaskType = taskDto.TaskType,
-                TaskNum = BaseDal.GetTaskNo().Result,
-                CreateDate = DateTime.Now,
-                TaskId = 0,
-                AGVTaskNum = GenerateUniqueId(),
-                Floor = "1F",
-            };
-            var taskDTO = CreateListTaskDTO(taskNew);
-
-            UpdateLocationStatus(StartAddress, LocationEnum.InStockDisable, taskNew.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticOutbound);
-            UpdateLocationStatus(location, LocationEnum.Lock, taskNew.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticOutbound);
-
-            BaseDal.AddData(taskNew);
-            //return content.OK();
-            return content = await SendWCSTask(taskDTO);
+            throw new Exception("缁堢偣鍖哄煙鏈壘鍒扮┖闂插簱浣�");
         }
-        catch (Exception ex)
+
+        if (location.AreaId == 5 || location.AreaId == 6)
         {
-            return content.Error(ex.Message);
+            throw new Exception("褰撳墠鍖哄煙涓嶅彲鍑哄簱锛岃鑱旂郴绠$悊鍛�");
         }
+        return new Dt_Task
+        {
+            Grade = Convert.ToInt32(StartAddress.Remark),
+            Roadway = "SC1",
+            TargetAddress = location.LocationCode,
+            Dispatchertime = DateTime.Now,
+            MaterialNo = "",
+            NextAddress = station.stationChildCode,
+            OrderNo = null,
+            PalletCode = taskDto.PalletCode,
+            SourceAddress = taskDto.Position,
+            CurrentAddress = taskDto.Position,
+            TaskState = (int)TaskOutStatusEnum.OutNew,
+            TaskType = taskDto.TaskType,
+            TaskNum = BaseDal.GetTaskNo().Result,
+            CreateDate = DateTime.Now,
+            TaskId = 0,
+            AGVTaskNum = GenerateUniqueId(),
+            Floor = "1F",
+        };
     }
 
-    public async Task<WebResponseContent> OutboundAGVCacheArea(RequestTaskDto taskDto, DtLocationInfo StartAddress, DtLocationInfo location)
+    public Dt_Task OutboundAGVCacheArea(RequestTaskDto taskDto, DtLocationInfo StartAddress, DtLocationInfo location)
     {
-        WebResponseContent content = new WebResponseContent();
-        try
+        if (location == null)
         {
-            if (location == null)
-            {
-                return content.Error("璧风偣鏈畾涔夋垨缁堢偣鍖哄煙鏈壘鍒扮┖闂插簱浣�");
-            }
-            Dt_Task taskNew = new Dt_Task();
-            if (StartAddress.Floor != location.Floor)
-            {
-                taskNew = RequestAcrossFloorTask(StartAddress, location, taskDto.TaskType, taskDto.PalletCode);
-            }
-            else
-            {
-                taskNew = RequestAGVCarryTask(StartAddress, location, taskDto.TaskType, taskDto.PalletCode);
-            }
-
-            var taskDTO = CreateListTaskDTO(taskNew);
-
-            UpdateLocationStatus(StartAddress, LocationEnum.InStockDisable, taskNew.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticOutbound);
-            UpdateLocationStatus(location, LocationEnum.Lock, taskNew.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticOutbound);
-
-            BaseDal.AddData(taskNew);
-            //return content.OK();
-            return content = await SendWCSTask(taskDTO);
+            throw new Exception("璧风偣鏈畾涔夋垨缁堢偣鍖哄煙鏈壘鍒扮┖闂插簱浣�");
         }
-        catch (Exception ex)
+        Dt_Task taskNew = new Dt_Task();
+        if (StartAddress.Floor != location.Floor)
         {
-            return content.Error(ex.Message);
+            taskNew = RequestAcrossFloorTask(StartAddress, location, taskDto.TaskType, taskDto.PalletCode);
         }
+        else
+        {
+            taskNew = RequestAGVCarryTask(StartAddress, location, taskDto.TaskType, taskDto.PalletCode);
+        }
+        return taskNew;
+
     }
     #endregion 璇锋眰鍑哄簱锛堝疄鐩�&绌虹洏锛�
 
@@ -871,38 +834,33 @@
     #endregion
 
     #region 璇锋眰璺ㄦゼ灞備换鍔�
-    public Dt_Task RequestAcrossFloorTask(DtLocationInfo StartAddress,DtLocationInfo EndAddress,int TaskType,string palletCode)
+    public Dt_Task RequestAcrossFloorTask(DtLocationInfo StartAddress, DtLocationInfo EndAddress, int TaskType, string palletCode)
     {
         WebResponseContent content = new WebResponseContent();
-        try
+
+        var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == StartAddress.Floor);
+        return new Dt_Task
         {
-            var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == StartAddress.Floor);
-            return new Dt_Task
-            {
-                Grade = StartAddress.Column,
-                Roadway = "AGV",
-                TargetAddress = EndAddress.LocationCode,
-                Dispatchertime = DateTime.Now,
-                MaterialNo = "",
-                NextAddress = next.stationChildCode,
-                OrderNo = null,
-                PalletCode = palletCode,
-                SourceAddress = StartAddress.LocationCode,
-                CurrentAddress = StartAddress.LocationCode,
-                TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew,
-                TaskType = TaskType,
-                TaskNum = BaseDal.GetTaskNo().Result,
-                CreateDate = DateTime.Now,
-                TaskId = 0,
-                Remark = StartAddress.AreaId.ToString(),
-                AGVTaskNum = GenerateUniqueId(),
-                Floor = StartAddress.Floor,
-            };
-        }
-        catch (Exception ex)
-        {
-            return null;
-        }
+            Grade = StartAddress.Column,
+            Roadway = "AGV",
+            TargetAddress = EndAddress.LocationCode,
+            Dispatchertime = DateTime.Now,
+            MaterialNo = "",
+            NextAddress = next.stationChildCode,
+            OrderNo = null,
+            PalletCode = palletCode,
+            SourceAddress = StartAddress.LocationCode,
+            CurrentAddress = StartAddress.LocationCode,
+            TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew,
+            TaskType = TaskType,
+            TaskNum = BaseDal.GetTaskNo().Result,
+            CreateDate = DateTime.Now,
+            TaskId = 0,
+            Remark = StartAddress.AreaId.ToString(),
+            AGVTaskNum = GenerateUniqueId(),
+            Floor = StartAddress.Floor,
+        };
+
     }
     #endregion
 
@@ -910,34 +868,28 @@
     public Dt_Task RequestAGVCarryTask(DtLocationInfo StartAddress, DtLocationInfo EndAddress, int TaskType, string palletCode)
     {
         WebResponseContent content = new WebResponseContent();
-        try
+
+        return new Dt_Task
         {
-            return new Dt_Task
-            {
-                Grade = StartAddress.Column,
-                Roadway = "AGV",
-                TargetAddress = EndAddress.LocationCode,
-                Dispatchertime = DateTime.Now,
-                MaterialNo = "",
-                NextAddress = EndAddress.LocationCode,
-                OrderNo = null,
-                PalletCode = palletCode,
-                SourceAddress = StartAddress.LocationCode,
-                CurrentAddress = StartAddress.LocationCode,
-                TaskState = (int)TaskAGVCarryStatusEnum.CarryNew,
-                TaskType = TaskType,
-                TaskNum = BaseDal.GetTaskNo().Result,
-                CreateDate = DateTime.Now,
-                TaskId = 0,
-                Remark = StartAddress.AreaId.ToString(),
-                AGVTaskNum = GenerateUniqueId(),
-                Floor = StartAddress.Floor,
-            };
-        }
-        catch (Exception ex)
-        {
-            return null;
-        }
+            Grade = StartAddress.Column,
+            Roadway = "AGV",
+            TargetAddress = EndAddress.LocationCode,
+            Dispatchertime = DateTime.Now,
+            MaterialNo = "",
+            NextAddress = EndAddress.LocationCode,
+            OrderNo = null,
+            PalletCode = palletCode,
+            SourceAddress = StartAddress.LocationCode,
+            CurrentAddress = StartAddress.LocationCode,
+            TaskState = (int)TaskAGVCarryStatusEnum.CarryNew,
+            TaskType = TaskType,
+            TaskNum = BaseDal.GetTaskNo().Result,
+            CreateDate = DateTime.Now,
+            TaskId = 0,
+            Remark = StartAddress.AreaId.ToString(),
+            AGVTaskNum = GenerateUniqueId(),
+            Floor = StartAddress.Floor,
+        };
     }
 
     #endregion
@@ -1247,7 +1199,7 @@
 
     #region 鍐呴儴璋冪敤鏂规硶
 
-    public void UpdateLocationStatus(DtLocationInfo location, LocationEnum locationStatus, int taskNum, int StatusChangeType)
+    public (List<DtLocationStatusChangeRecord>,List<DtLocationInfo>) UpdateLocationStatus(DtLocationInfo location, LocationEnum locationStatus, int taskNum, int StatusChangeType)
     {
         List<DtLocationInfo> locations = GetGroupLocations(location);
 
@@ -1305,26 +1257,116 @@
                 }
             }
         }
-        List<LocationChangeRecordDto> changeRecordDto = new List<LocationChangeRecordDto>();
+        List<DtLocationStatusChangeRecord> changeRecordDto = new List<DtLocationStatusChangeRecord>();
         foreach (var item in Beforelocation)
         {
             var loc = locations.Where(x => x.LocationCode == item.LocationCode).FirstOrDefault();
             if (loc != null)
             {
-                changeRecordDto.Add(new LocationChangeRecordDto()
+                DtLocationStatusChangeRecord dtLocationStatusChangeRecord = new DtLocationStatusChangeRecord()
                 {
+                    ChangeType = StatusChangeType,
+                    LocationCode = item.LocationCode,
+                    LocationId = loc.Id,
+                    Creater = "System",
+                    TaskNum = taskNum,
                     AfterStatus = loc.LocationStatus,
                     BeforeStatus = item.LocationStatus,
-                    TaskNum = taskNum,
-                    LocationId = loc.Id,
-                    LocationCode = loc.LocationCode,
-                    ChangeType = StatusChangeType,
-                });
+                };
+
+                changeRecordDto.Add(dtLocationStatusChangeRecord);
             }
         }
-        _locationStatusChangeRecordRepository.AddStatusChangeRecord(changeRecordDto);
+        //_locationStatusChangeRecordRepository.AddStatusChangeRecord(changeRecordDto);
 
-        _locationRepository.UpdateData(locations);
+        //_locationRepository.UpdateData(locations);
+        return (changeRecordDto,locations);
+    }
+
+    public (List<DtLocationStatusChangeRecord>, List<DtLocationInfo>) UpdateLocationStatus(string locationCode, LocationEnum locationStatus, int taskNum, int StatusChangeType)
+    {
+        var location = _locationRepository.QueryFirst(x => x.LocationCode == locationCode);
+
+        List<DtLocationInfo> locations = GetGroupLocations(location);
+
+        List<DtLocationInfo> Beforelocation = locations.Select(x => new DtLocationInfo
+        {
+            Id = x.Id,
+            LocationCode = x.LocationCode,
+            LocationStatus = x.LocationStatus
+        }).ToList();
+
+        foreach (var item in locations)
+        {
+            if (locationStatus == LocationEnum.Lock)
+            {
+                if (item.LocationCode == location.LocationCode)
+                {
+                    item.LocationStatus = (int)LocationEnum.Lock;
+                }
+                else if (item.LocationStatus == (int)LocationEnum.Free)
+                {
+                    item.LocationStatus = (int)LocationEnum.FreeDisable;
+                }
+            }
+            else if (locationStatus == LocationEnum.InStock)
+            {
+                if (item.LocationCode == location.LocationCode)
+                {
+                    item.LocationStatus = (int)LocationEnum.InStock;
+                }
+                else if (item.LocationStatus == (int)LocationEnum.FreeDisable)
+                {
+                    item.LocationStatus = (int)LocationEnum.Free;
+                }
+            }
+            else if (locationStatus == LocationEnum.InStockDisable)
+            {
+                if (item.LocationStatus == (int)LocationEnum.InStock)
+                {
+                    item.LocationStatus = (int)LocationEnum.InStockDisable;
+                }
+                else if (item.LocationStatus == (int)LocationEnum.Free)
+                {
+                    item.LocationStatus = (int)LocationEnum.FreeDisable;
+                }
+            }
+            else if (locationStatus == LocationEnum.Free)
+            {
+                if (item.LocationCode == location.LocationCode)
+                {
+                    item.LocationStatus = (int)LocationEnum.Free;
+                }
+                else if (item.LocationStatus == (int)LocationEnum.FreeDisable || item.LocationStatus == (int)LocationEnum.InStockDisable)
+                {
+                    item.LocationStatus = (int)LocationEnum.Free;
+                }
+            }
+        }
+        List<DtLocationStatusChangeRecord> changeRecordDto = new List<DtLocationStatusChangeRecord>();
+        foreach (var item in Beforelocation)
+        {
+            var loc = locations.Where(x => x.LocationCode == item.LocationCode).FirstOrDefault();
+            if (loc != null)
+            {
+                DtLocationStatusChangeRecord dtLocationStatusChangeRecord = new DtLocationStatusChangeRecord()
+                {
+                    ChangeType = StatusChangeType,
+                    LocationCode = item.LocationCode,
+                    LocationId = loc.Id,
+                    Creater = "System",
+                    TaskNum = taskNum,
+                    AfterStatus = loc.LocationStatus,
+                    BeforeStatus = item.LocationStatus,
+                };
+
+                changeRecordDto.Add(dtLocationStatusChangeRecord);
+            }
+        }
+        //_locationStatusChangeRecordRepository.AddStatusChangeRecord(changeRecordDto);
+
+        //_locationRepository.UpdateData(locations);
+        return (changeRecordDto, locations);
     }
 
     public List<DtLocationInfo> GetGroupLocations(DtLocationInfo location)
@@ -1606,74 +1648,59 @@
     /// <returns></returns>
     public async Task<DtLocationInfo> GetEmptyLocation(string roadWay)
     {
-        try
+        List<DtLocationInfo> locations = await _locationRepository.QueryDataAsync(x => x.RoadwayNo == "SC1" && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1);
+        if (locations.Count < 2)
         {
-            List<DtLocationInfo> locations = await _locationRepository.QueryDataAsync(x => x.RoadwayNo == "SC1" && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1);
-            if (locations.Count < 2)
-            {
-                return null;
-            }
-
-            List<DtLocationInfo> locationInfos = new List<DtLocationInfo>();
-            var locationInside = locations.Where(x => x.Row == 3).ToList();
-
-            if (locations.Where(x => x.Row == 2).OrderBy(x => x.Layer).ThenBy(x => x.Column).FirstOrDefault() != null)
-            {
-                return locations.Where(x => x.Row == 2).ToList().OrderBy(x => x.Layer).ThenBy(x => x.Column).FirstOrDefault();
-            }
-            else if (locationInside.Count > 0)
-            {
-                foreach (var item in locationInside)
-                {
-                    var locationLateral = _locationRepository.QueryFirst(x => x.Row == 1 && x.Layer == item.Layer && x.Column == item.Column);
-                    if (locationLateral.LocationStatus == (int)LocationEnum.Free && locationLateral.EnalbeStatus == 1)
-                    {
-                        locationInfos.Add(item);
-                    }
-                }
-
-                return locationInfos.Distinct().OrderBy(x => x.Layer).ThenBy(x => x.Column).FirstOrDefault();
-            }
-            else if (locations.Where(x => x.Row == 1).OrderBy(x => x.Layer).ThenBy(x => x.Column).FirstOrDefault() != null)
-            {
-                return locations.Where(x => x.Row == 1).OrderBy(x => x.Layer).ThenBy(x => x.Column).FirstOrDefault();
-            }
-            else
-            {
-                return null;
-            }
+            return null;
         }
-        catch (Exception ex)
+
+        List<DtLocationInfo> locationInfos = new List<DtLocationInfo>();
+        var locationInside = locations.Where(x => x.Row == 3).ToList();
+
+        if (locations.Where(x => x.Row == 2).OrderBy(x => x.Layer).ThenBy(x => x.Column).FirstOrDefault() != null)
         {
-            throw new Exception(ex.Message);
+            return locations.Where(x => x.Row == 2).ToList().OrderBy(x => x.Layer).ThenBy(x => x.Column).FirstOrDefault();
+        }
+        else if (locationInside.Count > 0)
+        {
+            foreach (var item in locationInside)
+            {
+                var locationLateral = _locationRepository.QueryFirst(x => x.Row == 1 && x.Layer == item.Layer && x.Column == item.Column);
+                if (locationLateral.LocationStatus == (int)LocationEnum.Free && locationLateral.EnalbeStatus == 1)
+                {
+                    locationInfos.Add(item);
+                }
+            }
+
+            return locationInfos.Distinct().OrderBy(x => x.Layer).ThenBy(x => x.Column).FirstOrDefault();
+        }
+        else if (locations.Where(x => x.Row == 1).OrderBy(x => x.Layer).ThenBy(x => x.Column).FirstOrDefault() != null)
+        {
+            return locations.Where(x => x.Row == 1).OrderBy(x => x.Layer).ThenBy(x => x.Column).FirstOrDefault();
+        }
+        else
+        {
+            return null;
         }
     }
 
     public async Task<DtLocationInfo> GetAGVEmptyCacheLocation(int AreaId, DtLocationInfo loc)
     {
-        try
+        if (loc == null)
         {
-            if(loc==null)
-            {
-                return null;
-            }
-            switch (AreaId)
-            {
-                case 2:
-                    return await FromShallowToDeep(AreaId, loc);
-                case 3:
-                    return await AGVLIKU(AreaId);
-                case 5:
-                case 6:
-                    return  await FromDeepToShallow(AreaId, loc);
-                default:
-                    return null;
-            }
-
+            return null;
         }
-        catch (Exception ex)
+        switch (AreaId)
         {
-            throw new Exception(ex.Message);
+            case 2:
+                return await FromShallowToDeep(AreaId, loc);
+            case 3:
+                return await AGVLIKU(AreaId);
+            case 5:
+            case 6:
+                return await FromDeepToShallow(AreaId, loc);
+            default:
+                return null;
         }
     }
 
@@ -1684,45 +1711,38 @@
     /// <returns></returns>
     public async Task<DtLocationInfo> FromDeepToShallow(int AreaId, DtLocationInfo loc)
     {
-        try
-        {
-            List<DtLocationInfo> locations = new List<DtLocationInfo>();
+        List<DtLocationInfo> locations = new List<DtLocationInfo>();
 
-            if (AreaId == loc.AreaId)
+        if (AreaId == loc.AreaId)
+        {
+            locations = await _locationRepository.QueryDataAsync(x => x.AreaId == AreaId && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1 && x.Row != loc.Row);
+        }
+        else
+        {
+            locations = await _locationRepository.QueryDataAsync(x => x.AreaId == AreaId && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1);
+        }
+        if (locations.Count == 0)
+        {
+            return null;
+        }
+        List<DtLocationInfo> locationInfos = new List<DtLocationInfo>();
+        foreach (var item in locations)
+        {
+            var locationLateral = _locationRepository.QueryData(x => x.Row == item.Row && x.Column < item.Column && x.Remark == item.Remark);
+            bool Isavailable = true;
+            foreach (var lateral in locationLateral)
             {
-                locations = await _locationRepository.QueryDataAsync(x => x.AreaId == AreaId && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1 && x.Row != loc.Row);
-            }
-            else
-            {
-                locations = await _locationRepository.QueryDataAsync(x => x.AreaId == AreaId && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1);
-            }
-            if (locations.Count == 0)
-            {
-                return null;
-            }
-            List<DtLocationInfo> locationInfos = new List<DtLocationInfo>();
-            foreach (var item in locations)
-            {
-                var locationLateral = _locationRepository.QueryData(x => x.Row == item.Row && x.Column < item.Column && x.Remark == item.Remark);
-                bool Isavailable = true;
-                foreach (var lateral in locationLateral)
+                if (lateral.LocationStatus != (int)LocationEnum.Free && lateral.EnalbeStatus == 1)
                 {
-                    if (lateral.LocationStatus != (int)LocationEnum.Free && lateral.EnalbeStatus == 1)
-                    {
-                        Isavailable = false;
-                        continue;
-                    }
+                    Isavailable = false;
+                    continue;
                 }
-                if(Isavailable)
-                    locationInfos.Add(item);
             }
+            if (Isavailable)
+                locationInfos.Add(item);
+        }
 
-            return locationInfos.Distinct().OrderByDescending(x => x.Column).ThenBy(x => x.Row).FirstOrDefault();
-        }
-        catch (Exception ex)
-        {
-            throw new Exception(ex.Message);
-        }
+        return locationInfos.Distinct().OrderByDescending(x => x.Column).ThenBy(x => x.Row).FirstOrDefault();
     }
 
     /// <summary>
@@ -1732,118 +1752,102 @@
     /// <returns></returns>
     public async Task<DtLocationInfo> FromShallowToDeep(int AreaId, DtLocationInfo loc)
     {
-        try
+        List<DtLocationInfo> locations = new List<DtLocationInfo>();
+
+        if (AreaId == loc.AreaId)
         {
-            List<DtLocationInfo> locations = new List<DtLocationInfo>();
+            locations = await _locationRepository.QueryDataAsync(x => x.AreaId == AreaId && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1 && x.Row != loc.Row);
+        }
+        else
+        {
+            locations = await _locationRepository.QueryDataAsync(x => x.AreaId == AreaId && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1);
+        }
 
-            if (AreaId == loc.AreaId)
+        if (locations.Count == 0)
+        {
+            return null;
+        }
+        List<DtLocationInfo> locationInfos = new List<DtLocationInfo>();
+        foreach (var item in locations)
+        {
+            var locationLateral = _locationRepository.QueryData(x => x.Row == item.Row && x.Column > item.Column && x.Remark == item.Remark);
+            if (locationLateral.Count == 0)
             {
-                locations = await _locationRepository.QueryDataAsync(x => x.AreaId == AreaId && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1 && x.Row != loc.Row);
+                locationInfos.Add(item);
+                continue;
             }
-            else
+            foreach (var Lateral in locationLateral)
             {
-                locations = await _locationRepository.QueryDataAsync(x => x.AreaId == AreaId && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1);
-            }
-
-            if (locations.Count == 0)
-            {
-                return null;
-            }
-            List<DtLocationInfo> locationInfos = new List<DtLocationInfo>();
-            foreach (var item in locations)
-            {
-                var locationLateral = _locationRepository.QueryData(x => x.Row == item.Row && x.Column > item.Column && x.Remark == item.Remark);
-                if (locationLateral.Count == 0)
+                if (locationInfos.Contains(Lateral))
+                    continue;
+                if (Lateral.LocationStatus == (int)LocationEnum.Free && Lateral.EnalbeStatus == 1)
                 {
                     locationInfos.Add(item);
-                    continue;
-                }
-                foreach (var Lateral in locationLateral)
-                {
-                    if (locationInfos.Contains(Lateral))
-                        continue;
-                    if (Lateral.LocationStatus == (int)LocationEnum.Free && Lateral.EnalbeStatus == 1)
-                    {
-                        locationInfos.Add(item);
-                    }
                 }
             }
+        }
 
-            return locationInfos.Distinct().OrderBy(x => x.Column).ThenBy(x => x.Row).FirstOrDefault();
-        }
-        catch (Exception ex)
-        {
-            throw new Exception(ex.Message);
-        }
+        return locationInfos.Distinct().OrderBy(x => x.Column).ThenBy(x => x.Row).FirstOrDefault();
+
     }
 
 
     public async Task<DtLocationInfo> AGVLIKU(int AreaId)
     {
         WebResponseContent content = new WebResponseContent();
-        try
-        {
-            List<DtLocationInfo> locations = await _locationRepository.QueryDataAsync(x => x.AreaId == AreaId && x.LocationStatus == 0 && x.EnalbeStatus == 1);
-            var location = locations.OrderBy(x => x.Layer).ThenBy(x => x.Column).FirstOrDefault();
-            return location;
-        }
-        catch (Exception ex)
-        {
-            throw new Exception(ex.Message);
-        }
+
+        List<DtLocationInfo> locations = await _locationRepository.QueryDataAsync(x => x.AreaId == AreaId && x.LocationStatus == 0 && x.EnalbeStatus == 1);
+        var location = locations.OrderBy(x => x.Layer).ThenBy(x => x.Column).FirstOrDefault();
+        return location;
+
     }
 
 
     public bool LocationIsOutBound(DtLocationInfo location)
     {
-        try
+
+        int sum = 0;
+        if (location.AreaId == 1)
         {
-            int sum = 0;
-            if (location.AreaId == 1)
+            if (location.Depth == 2)
             {
-                if (location.Depth == 2)
-                {
-                    var locationLateral = _locationRepository.QueryFirst(x => x.Row == 1 && x.Column == location.Column && x.Layer == location.Layer);
+                var locationLateral = _locationRepository.QueryFirst(x => x.Row == 1 && x.Column == location.Column && x.Layer == location.Layer);
 
-                    if (locationLateral.LocationStatus == (int)LocationEnum.Lock && locationLateral.EnalbeStatus == 1)
-                    {
-                        return false;
-                    }
+                if (locationLateral.LocationStatus == (int)LocationEnum.Lock && locationLateral.EnalbeStatus == 1)
+                {
+                    return false;
                 }
             }
-
-            else if (location.AreaId == 2)
-            {
-                var locationLateral = _locationRepository.QueryData(x => x.Row == location.Row && x.Column > location.Column && x.Remark == location.Remark);
-
-                foreach (var Lateral in locationLateral)
-                {
-                    if (Lateral.LocationStatus == (int)LocationEnum.Lock && Lateral.EnalbeStatus == 1)
-                    {
-                        return false;
-                    }
-                }
-            }
-
-            else if (location.AreaId == 5 || location.AreaId == 6)
-            {
-                var locationLateral = _locationRepository.QueryData(x => x.Row == location.Row && x.Column < location.Column && x.Remark == location.Remark);
-
-                foreach (var lateral in locationLateral)
-                {
-                    if (lateral.LocationStatus == (int)LocationEnum.Lock && lateral.EnalbeStatus == 1)
-                    {
-                        return false;
-                    }
-                }
-            }
-
-            return true;
         }
-        catch (Exception)
+
+        else if (location.AreaId == 2)
         {
-            return false;
+            var locationLateral = _locationRepository.QueryData(x => x.Row == location.Row && x.Column > location.Column && x.Remark == location.Remark);
+
+            foreach (var Lateral in locationLateral)
+            {
+                if (Lateral.LocationStatus == (int)LocationEnum.Lock && Lateral.EnalbeStatus == 1)
+                {
+                    return false;
+                }
+            }
         }
+
+        else if (location.AreaId == 5 || location.AreaId == 6)
+        {
+            var locationLateral = _locationRepository.QueryData(x => x.Row == location.Row && x.Column < location.Column && x.Remark == location.Remark);
+
+            foreach (var lateral in locationLateral)
+            {
+                if (lateral.LocationStatus == (int)LocationEnum.Lock && lateral.EnalbeStatus == 1)
+                {
+                    return false;
+                }
+            }
+        }
+
+        return true;
+
     }
 
 
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 3881f84..c35f50a 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"
@@ -40,15 +40,15 @@
     /// <param name="groupPlate"></param>
     /// <returns></returns>
     [HttpPost, HttpGet, Route("DeleteGroupPlateAsync"), AllowAnonymous]
-    public Task<WebResponseContent> DeleteGroupPlateAsync([FromBody] GroupPlate groupPlate)
+    public async Task<WebResponseContent> DeleteGroupPlateAsync([FromBody] GroupPlate groupPlate)
     {
-        return Service.DeleteGroupPlateAsync(groupPlate);
+        return await Service.DeleteGroupPlateAsync(groupPlate);
     }
 
     [HttpPost, HttpGet, Route("GenerateOutboundTask"), AllowAnonymous]
-    public WebResponseContent GenerateOutboundTask([FromBody] GenerateOutTaskDto requestOut)
+    public async Task<WebResponseContent> GenerateOutboundTask([FromBody] GenerateOutTaskDto requestOut)
     {
-        return Service.GenerateOutboundTask(requestOut);
+        return await Service.GenerateOutboundTask(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_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"
index 0e01de4..56d298f 100644
--- "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"
@@ -1,6 +1,7 @@
 锘縰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;
@@ -20,5 +21,21 @@
             _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/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 c336623..41cf112 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"
@@ -81,7 +81,7 @@
     /// <returns></returns>
     [HttpPost, AllowAnonymous, Route("RequestOutboundTaskAsync")]
     [TypeFilter(typeof(ThrottleFilter), Arguments = new object[] { 5 })]
-    public async Task<WebResponseContent> RequestOutboundTaskAsync([FromBody] RequestTaskDto taskDto)
+    public async Task<Dt_Task> RequestOutboundTaskAsync([FromBody] RequestTaskDto taskDto)
     {
         return await Service.RequestOutboundTaskAsync(taskDto);
     }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json"
index 61b240c..965da2b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json"
@@ -13,9 +13,9 @@
   "DBType": "MySql",
   //"DBType": "SqlServer",
   //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=",
-  "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWMS_MHLK;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
+  "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWMS_MHLK;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultipleActiveResultSets=True",
   //"ConnectionStringWCS": "Data Source=.;Initial Catalog=WIDESEAWCS_MHLK;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
-  "ConnectionStringERP": "Data Source=192.168.117.110;Initial Catalog=MHI;User ID=wms2;Password=Wms2025;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
+  "ConnectionStringERP": "Data Source=192.168.117.110;Initial Catalog=MHI;User ID=wms2;Password=Wms2025;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=true",
   //璺ㄥ煙
   "Cors": {
     "PolicyName": "CorsIpAccess", //绛栫暐鍚嶇О

--
Gitblit v1.9.3