From 02abdb2a7821e1eacc2b8ddc91e398cd9906c8cf Mon Sep 17 00:00:00 2001
From: chengsc <11752@DESKTOP-DS49RCP>
Date: 星期四, 13 三月 2025 18:36:54 +0800
Subject: [PATCH] 修改问题

---
 Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs   |    6 
 Wms/WMS.BLL/Logic/AllotSku.cs                    |  111 ++-
 Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs |    2 
 Wms/WMS.BLL/BllSoServer/WaveMageServer.cs        |    7 
 HTML/views/StatisticalReport/BoxInfor.html       |   44 
 HTML/views/ASNSetting/ArrivalLogTask.html        |    2 
 HTML/views/SOSetting/ExportNoticeEditFrom.html   |   66 +
 HTML/views/ASNSetting/RequestLocation.html       |    2 
 HTML/views/SOSetting/ExportNoticeAddFrom.html    |   86 +-
 Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs    | 1600 ++++++++++++++++++++++++----------------------
 HTML/views/SOSetting/ExportSelectSkuFrom.html    |    1 
 Wms/Wms/Controllers/BllSoController.cs           |    2 
 HTML/views/SOSetting/ExportNotice.html           |   39 
 Wms/Model/ModelVm/BllSoVm/ExportNoticeVm.cs      |    4 
 Wms/WMS.Entity/BllSoEntity/BLLExportNotice.cs    |    9 
 15 files changed, 1,069 insertions(+), 912 deletions(-)

diff --git a/HTML/views/ASNSetting/ArrivalLogTask.html b/HTML/views/ASNSetting/ArrivalLogTask.html
index 4584c60..3c8a8a2 100644
--- a/HTML/views/ASNSetting/ArrivalLogTask.html
+++ b/HTML/views/ASNSetting/ArrivalLogTask.html
@@ -556,7 +556,7 @@
 							var field = data.field; //鑾峰彇鎻愪氦鐨勫瓧娈�
 							//鎻愪氦 Ajax 鎴愬姛鍚庯紝闈欐�佹洿鏂拌〃鏍间腑鐨勬暟鎹�
 							var param = {
-								PalletNo: field.PalletNo + "A", //鎵樼洏鍙�
+								PalletNo: field.PalletNo, //鎵樼洏鍙�
 								HouseNo: field.HouseNo, //鎵�灞炰粨搴�
 								RoadwayNo: field.RoadwayNo, //鎵�灞炲贩閬�
 							};
diff --git a/HTML/views/ASNSetting/RequestLocation.html b/HTML/views/ASNSetting/RequestLocation.html
index 7e1c94f..252653e 100644
--- a/HTML/views/ASNSetting/RequestLocation.html
+++ b/HTML/views/ASNSetting/RequestLocation.html
@@ -21,7 +21,7 @@
                 <div class="layui-input-block">
                     <select name="HouseNo" id="HouseNo" lay-filter="HouseNo" lay-verify="required" lay-search>
                         <option value=""></option>
-                        <option value="W01">绔嬪簱</option>
+                        <option value="W02">绔嬪簱</option>
                         <!-- <option value="W02">闆剁搴�</option> -->
                     </select>
                 </div>
diff --git a/HTML/views/SOSetting/ExportNotice.html b/HTML/views/SOSetting/ExportNotice.html
index ffa8410..e10b7b3 100644
--- a/HTML/views/SOSetting/ExportNotice.html
+++ b/HTML/views/SOSetting/ExportNotice.html
@@ -62,14 +62,13 @@
 						<div class="layui-input-inline">
 							<select name="Type" id="Type" lay-filter="Type" lay-search>
 								<option value=""></option>
-								<!--JC26-->
+								<!--JC34  鐢熶骇棰嗘枡銆佸叾浠栭鏂欍�侀攢鍞�佷笉鍚堟牸鎶ュ簾銆佹娊妫�銆佸叾浠�-->
 								<option value="0">鎴愬搧鍑哄簱</option>
 								<option value="1">棰嗘枡鍑哄簱</option>
 								<option value="2">鎶芥鍑哄簱</option>
 								<option value="4">涓嶅悎鏍煎搧鍑哄簱</option>
-								<option value="5">涓棿鍝佸嚭搴�</option>
-								<!-- <option value="7">鍏朵粬鍑哄簱</option> -->
-								<option value="9">閲囪喘閫�璐у嚭搴�</option>								
+								<option value="7">鍏朵粬鍑哄簱</option>
+								<option value="9">鐢熶骇棰嗘枡鍑哄簱</option>								
 							</select>
 						</div>
 					</div>
@@ -210,7 +209,7 @@
 										case "8":
 											return "瀵勫瓨鍑哄簱";
 										case "9":
-											return "閲囪喘閫�璐у嚭搴�";
+											return "鐢熶骇棰嗘枡鍑哄簱";
 										default:
 											return "";
 									}
@@ -491,23 +490,27 @@
 			var TotalColsArr = [[
 				{ field: '', title: '搴忓彿', type: 'numbers', width: 50, align: 'center', fixed: 'left', "disabled": true },
 				{ field: 'SONo', title: '鍑哄簱鍗曞彿', align: 'center', fixed: 'left', width: 165, "disabled": true },
-				{ field: 'Type', title: '鍗曟嵁绫诲瀷', align: 'center', templet: '#templetType' },
-				{ field: 'Status', title: '鎵ц鐘舵��', align: 'center', templet: '#templetStatus' },
-				{ field: 'LogisticsName', title: '鎵胯繍鍟�', align: 'center' },
-				{ field: 'CustomerName', title: '瀹㈡埛鍚嶇О', align: 'center' },
+				{ field: 'Type', title: '鍗曟嵁绫诲瀷', align: 'center', templet: '#templetType' , width: 120,},
+				{ field: 'Status', title: '鎵ц鐘舵��', align: 'center', templet: '#templetStatus', width: 90, },
+				{ field: 'LogisticsName', title: '鎵胯繍鍟�', align: 'center', width: 120, },
+				{ field: 'CustomerName', title: '瀹㈡埛鍚嶇О', align: 'center', width: 120, },
+				{ field: 'WareHouseName', title: '浠撳簱', align: 'center', width: 90, },
+				{ field: 'Origin', title: '鏉ユ簮', align: 'center', width: 90, },
+				{ field: 'Demo', title: '澶囨敞', align: 'center', width: 180 },
+				{ field: 'CreateUserName', title: '鍒涘缓浜�', align: 'center' , width: 110},
+				{ field: 'CreateTime', title: '鍒涘缓鏃堕棿', align: 'center', width: 160, templet: '#templetCreateTime' },
+				{ field: 'UpdateUserName', title: '淇敼浜�', align: 'center', width: 110 },
+				{ field: 'UpdateTime', title: '淇敼鏃堕棿', align: 'center', width: 160, templet: '#templetUpdateTime' },
+				{ field: 'CheckUserName', title: '澶嶆牳浜�', align: 'center', width: 110 },
+				{ field: 'CheckTime', title: '澶嶆牳鏃堕棿', align: 'center', width: 160, templet: '#templetCheckTime' },
+
+
 				{ field: 'LotNo', title: '鎵规鍙�', align: 'center' },
 				{ field: 'LotNoText', title: '鎵规鎻忚堪', align: 'center' },
 				{ field: 'IsDespatch', title: '鏄惁鍙戣繍', align: 'center', templet: '#templetIsDespatch' },
 				{ field: 'SupplierLot', title: '渚涜揣鎵规', align: 'center' },
-				{ field: 'Origin', title: '鏉ユ簮', align: 'center' },
-				{ field: 'Demo', title: '澶囨敞', align: 'center', width: 180 },
-				{ field: 'CreateUserName', title: '鍒涘缓浜�', align: 'center' },
-				{ field: 'CreateTime', title: '鍒涘缓鏃堕棿', align: 'center', templet: '#templetCreateTime' },
-				{ field: 'UpdateUserName', title: '淇敼浜�', align: 'center' },
-				{ field: 'UpdateTime', title: '淇敼鏃堕棿', align: 'center', templet: '#templetUpdateTime' },
-				{ field: 'CheckUserName', title: '澶嶆牳浜�', align: 'center', width: 110 },
-				{ field: 'CheckTime', title: '澶嶆牳鏃堕棿', align: 'center', templet: '#templetCheckTime' },
-				{ field: 'caozuo', title: '鎿嶄綔', fixed: 'right', align: 'center', width: 200, toolbar: '#table-content-list', "disabled": false }
+				
+				{ field: 'caozuo', title: '鎿嶄綔', fixed: 'right', align: 'center', width: 360, toolbar: '#table-content-list', "disabled": false }
 			]];
 			var TotalColsSysArr = encodeURIComponent(encodeURIComponent(JSON.stringify(TotalColsArr)))//灏嗚〃澶存暟鎹繘琛寀rl缂栫爜
 			//#endregion
diff --git a/HTML/views/SOSetting/ExportNoticeAddFrom.html b/HTML/views/SOSetting/ExportNoticeAddFrom.html
index 95df954..a77c389 100644
--- a/HTML/views/SOSetting/ExportNoticeAddFrom.html
+++ b/HTML/views/SOSetting/ExportNoticeAddFrom.html
@@ -20,14 +20,7 @@
 	<body> 
 		<div class="layui-form" lay-filter="layuiadmin-app-form-list" style="padding: 20px 0 0 0;">
 			<div class="layui-form-item" style="margin-bottom: 0px;">
-				<!-- <div class="layui-inline">
-					<label class="layui-form-label">鍑哄簱浠撳簱</label>
-					<div class="layui-input-inline">
-						<select name="WarehouseId" id="WarehouseId" lay-filter="WarehouseId" lay-verify="required" lay-search>
-							<option value=""></option>
-						</select>
-					</div>
-				</div> -->
+				
 				<div class="layui-inline">
 					<label class="layui-form-label">鍗曟嵁绫诲瀷</label>
 					<div class="layui-input-inline">
@@ -38,9 +31,16 @@
 							<option value="1">棰嗘枡鍑哄簱</option>
 							<option value="2">鎶芥鍑哄簱</option>
 							<option value="4">涓嶅悎鏍煎搧鍑哄簱</option>
-							<option value="5">涓棿鍝佸嚭搴�</option>
-							<!-- <option value="7">鍏朵粬鍑哄簱</option> -->
-							<option value="9">閲囪喘閫�璐у嚭搴�</option>
+							<option value="7">鍏朵粬鍑哄簱</option>
+							<option value="9">鐢熶骇棰嗘枡鍑哄簱</option>
+						</select>
+					</div>
+				</div>
+				<div class="layui-inline">
+					<label class="layui-form-label">鍑哄簱浠撳簱</label>
+					<div class="layui-input-inline">
+						<select name="WarehouseId" id="WarehouseId" lay-filter="WarehouseId" lay-verify="required" lay-search>
+							<option value=""></option>
 						</select>
 					</div>
 				</div>
@@ -104,7 +104,7 @@
 					table = layui.table,
 					layer = layui.layer;
 					 
-				// getWareHouseList();
+				getWareHouseList();
 				getCustomerList();
 				getLogisticsInfoList();
 				
@@ -248,13 +248,13 @@
 				var $ = layui.$;
 				var	active = {
 					add: function() { 
-						// if ($("#WarehouseId").val()== "") {
-						// 	layer.msg("璇烽�夋嫨浠撳簱锛�", {
-						// 		icon: 2,
-						// 		time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
-						// 	},function() {});
-						// 	return;
-						// }
+						if ($("#WarehouseId").val()== "") {
+							layer.msg("璇烽�夋嫨浠撳簱锛�", {
+								icon: 2,
+								time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+							},function() {});
+							return;
+						}
 						if ($("#Type").val()== "") {
 							layer.msg("璇烽�夋嫨鍗曟嵁绫诲瀷锛�", {
 								icon: 2,
@@ -273,10 +273,12 @@
 								return;
 							}
 						}
+						console.log($("#WarehouseId").val());
+						
 						layer.open({
 							type: 2,
 							title: '閫夋嫨鐗╁搧淇℃伅',
-							content: 'ExportSelectSkuFrom.html?Type='+$("#Type").val()+'&OwnerNo='+$("#CustomerNo").val(),
+							content: 'ExportSelectSkuFrom.html?houseId='+$("#WarehouseId").val()+'&Type='+$("#Type").val()+'&OwnerNo='+$("#CustomerNo").val(),
 							maxmin: true,
 							area: ['950px', '90%'],
 							fixed: false,
@@ -349,7 +351,7 @@
 						}
 					}
 					var DataList = [];
-					console.log(infoOptions.data);
+					
 					for (var i in infoOptions.data) {
 						console.log(infoOptions.data[i].ExQty);
 						if (infoOptions.data[i].ExQty == "") {
@@ -415,7 +417,7 @@
 					var param = {
 						Type: data.field.Type,
 						CustomerNo: data.field.CustomerNo,
-						
+						WareHouseNo:data.field.WarehouseId,
 						LogisticsId: parseInt(data.field.LogisticsId), 
 						Detail: DataList
 					}
@@ -453,27 +455,27 @@
 						TypeValue=value;
 					}
 				});
-				//鑾峰彇浠撳簱涓嬫媺妗嗕俊鎭�
-				// function getWareHouseList(){
-				// 	sendData(IP + "/Sys/GetWarehouseDic", {}, 'get', function(res) {
+				//鑾峰彇浠撳簱淇℃伅
+				function getWareHouseList(){
+					sendData(IP + "/Sys/GetWarehouseDic", {}, 'get', function(res) {
 						
-				// 		if (res.code == 0) { //鎴愬姛
-				// 			$("#WarehouseId").empty();
-				// 			// $("#WarehouseId").append('<option value =""></option>');
-				// 			for (var i = 0; i < res.data.length; i++) {
-				// 				$("#WarehouseId").append('<option value =' + res.data[i].WareHouseNo + '>' + 
-				// 					res.data[i].WareHouseName + '</option>');
-				// 			} 
-				// 			$("#WarehouseId option[value='W01']").attr("selected", "selected")
-				// 			form.render('select');
-				// 		} else { //涓嶆垚鍔�
-				// 			layer.msg(res.msg, {
-				// 				icon: 2,
-				// 				time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
-				// 			}, function() {});
-				// 		}
-				// 	});
-				// }
+						if (res.code == 0) { //鎴愬姛
+							$("#WarehouseId").empty();
+							$("#WarehouseId").append('<option value =""></option>');
+							for (var i = 0; i < res.data.length; i++) {
+								$("#WarehouseId").append('<option value =' + res.data[i].WareHouseNo + '>' + 
+									res.data[i].WareHouseName + '</option>');
+							} 
+							//$("#WarehouseId option[value='W01']").attr("selected", "selected")
+							form.render('select');
+						} else { //涓嶆垚鍔�
+							layer.msg(res.msg, {
+								icon: 2,
+								time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+							}, function() {});
+						}
+					});
+				}
 				//鑾峰彇瀹㈡埛涓嬫媺妗嗕俊鎭�
 				function getCustomerList() {
 					sendData(IP + "/Basis/GetCustomerSelect", {}, 'get', function(res) {
diff --git a/HTML/views/SOSetting/ExportNoticeEditFrom.html b/HTML/views/SOSetting/ExportNoticeEditFrom.html
index 73e2f4d..1182401 100644
--- a/HTML/views/SOSetting/ExportNoticeEditFrom.html
+++ b/HTML/views/SOSetting/ExportNoticeEditFrom.html
@@ -13,14 +13,7 @@
 
 		<div class="layui-form" style="padding: 20px 0 0 0;">
 			<div class="layui-form-item" style="margin-bottom: 0px;">
-				<!-- <div class="layui-inline">
-					<label class="layui-form-label">鍑哄簱浠撳簱</label>
-					<div class="layui-input-inline">
-						<select name="WarehouseId" id="WarehouseId" lay-filter="WarehouseId" lay-verify="required" lay-search>
-							<option value=""></option>
-						</select>
-					</div>
-				</div> -->
+				
 				<div class="layui-inline">
 					<label class="layui-form-label">鍗曟嵁绫诲瀷</label>
 					<div class="layui-input-inline">
@@ -31,9 +24,16 @@
 							<option value="1">棰嗘枡鍑哄簱</option>
 							<option value="2">鎶芥鍑哄簱</option>
 							<option value="4">涓嶅悎鏍煎搧鍑哄簱</option>
-							<option value="5">涓棿鍝佸嚭搴�</option>
-							<!-- <option value="7">鍏朵粬鍑哄簱</option> -->
-							<option value="9">閲囪喘閫�璐у嚭搴�</option>
+							<option value="7">鍏朵粬鍑哄簱</option>
+							<option value="9">鐢熶骇棰嗘枡鍑哄簱</option>
+						</select>
+					</div>
+				</div>
+				<div class="layui-inline">
+					<label class="layui-form-label">鍑哄簱浠撳簱</label>
+					<div class="layui-input-inline">
+						<select name="WarehouseId" id="WarehouseId" lay-filter="WarehouseId" lay-verify="required" disabled lay-search>
+							<option value=""></option>
 						</select>
 					</div>
 				</div>
@@ -102,7 +102,7 @@
 				var id = getQueryString("id");
 				console.log(soNo);
 				console.log(id);
-				// getWareHouseList();
+				
 				
 				getData();//鑾峰彇鍏ュ簱鍗曠被鍨�
 				var arr = []; 
@@ -259,7 +259,7 @@
 						layer.open({
 							type: 2,
 							title: '閫夋嫨鐗╁搧淇℃伅',
-							content: 'ExportSelectSkuFrom.html?Type='+$("#Type").val(),
+							content: 'ExportSelectSkuFrom.html?houseId='+$("#WarehouseId").val()+'&Type='+$("#Type").val(),
 							maxmin: true,
 							area: ['950px', '90%'],
 							fixed: false,
@@ -428,7 +428,8 @@
 							 
 							form.render('select');
 							refreshTable(res.data.Detail);
-
+							//浠撳簱
+							getWareHouseList(res.data.WareHouseNo)
 							//鑾峰彇瀹㈡埛/璐т富
 							getCustomerList(res.data.CustomerNo);
 							//鑾峰彇渚涘簲鍟�
@@ -459,25 +460,26 @@
 				// 	} 
 				// });
 				//鑾峰彇浠撳簱涓嬫媺妗嗕俊鎭�
-				// function getWareHouseList(){
-				// 	sendData(IP + "/Sys/GetWarehouseDic", {}, 'get', function(res) {
+				function getWareHouseList(houseNo){
+					sendData(IP + "/Sys/GetWarehouseDic", {}, 'get', function(res) {
 						
-				// 		if (res.code == 0) { //鎴愬姛
-				// 			$("#WarehouseId").empty();
-				// 			$("#WarehouseId").append('<option value =""></option>');
-				// 			for (var i = 0; i < res.data.length; i++) {
-				// 				$("#WarehouseId").append('<option value =' + res.data[i].WareHouseNo + '>' + 
-				// 					res.data[i].WareHouseName + '</option>');
-				// 			} 
-				// 			form.render('select');
-				// 		} else { //涓嶆垚鍔�
-				// 			layer.msg(res.msg, {
-				// 				icon: 2,
-				// 				time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
-				// 			}, function() {});
-				// 		}
-				// 	});
-				// }
+						if (res.code == 0) { //鎴愬姛
+							$("#WarehouseId").empty();
+							$("#WarehouseId").append('<option value =""></option>');
+							for (var i = 0; i < res.data.length; i++) {
+								$("#WarehouseId").append('<option value =' + res.data[i].WareHouseNo + '>' + 
+									res.data[i].WareHouseName + '</option>');
+							} 
+							$("#WarehouseId option[value='"+ houseNo +"']").attr("selected", "selected")
+							form.render('select');
+						} else { //涓嶆垚鍔�
+							layer.msg(res.msg, {
+								icon: 2,
+								time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+							}, function() {});
+						}
+					});
+				}
 				//鑾峰彇瀹㈡埛涓嬫媺妗嗕俊鎭�
 				function getCustomerList(customerNo) {
 					sendData(IP + "/Basis/GetCustomerSelect", {}, 'get', function(res) {
diff --git a/HTML/views/SOSetting/ExportSelectSkuFrom.html b/HTML/views/SOSetting/ExportSelectSkuFrom.html
index 548ed45..6a06df0 100644
--- a/HTML/views/SOSetting/ExportSelectSkuFrom.html
+++ b/HTML/views/SOSetting/ExportSelectSkuFrom.html
@@ -75,6 +75,7 @@
 				});  
 
 				function refreshTable() {
+					
 					var param = {
 						WareHouseNo:getQueryString('houseId'),
 						Type:getQueryString('Type'),
diff --git a/HTML/views/StatisticalReport/BoxInfor.html b/HTML/views/StatisticalReport/BoxInfor.html
index 04858a6..24a9b54 100644
--- a/HTML/views/StatisticalReport/BoxInfor.html
+++ b/HTML/views/StatisticalReport/BoxInfor.html
@@ -349,27 +349,31 @@
 			//#region 鑷畾涔夎〃澶�
 			var TotalColsArr = [[
 				{ field: '', title: '搴忓彿', type: 'numbers', align: 'center', fixed: 'left', "disabled": true },
-				{ field: 'WareHouseName', title: '鎵�灞炰粨搴�', align: 'center' },
-				{ field: 'RoadwayName', title: '鎵�灞炲贩閬�', align: 'center' },
-				{ field: 'AreaName', title: '鎵�灞炲尯鍩�', align: 'center' },
-				{ field: 'LocatNo', title: '鍌ㄤ綅鍦板潃', align: 'center' },
-				{ field: 'PalletNo', title: '鎵樼洏鍙�', align: 'center' },
-				{ field: 'SkuNo', title: '鐗╂枡缂栫爜', align: 'center' },
-				{ field: 'SkuName', title: '鐗╂枡鍚嶇О', align: 'center' },
-				{ field: 'OwnerNo', title: '璐т富缂栫爜', align: 'center' },
-				{ field: 'OwnerName', title: '璐т富鍚嶇О', align: 'center' },
-				{ field: 'SupplierNo', title: '渚涘簲鍟嗙紪鐮�', align: 'center' },
-				{ field: 'SupplierName', title: '渚涘簲鍟嗗悕绉�', align: 'center' },
-				{ field: 'LotNo', title: '鎵规鍙�', align: 'center' },
-				{ field: 'LotText', title: '鎵规鎻忚堪', align: 'center' },
-				{ field: 'SupplierLot', title: '渚涜揣鎵规', align: 'center' },
-				{ field: 'Qty', title: '鏁伴噺', align: 'center' },
-				{ field: 'LockQty', title: '閿佸畾鏁伴噺', align: 'center', },
-				{ field: 'FrozenQty', title: '鍐荤粨鏁伴噺', align: 'center' },
-				{ field: 'InspectMark', title: '鎶芥鏍囪', align: 'center', templet: '#InspectMarkStatus' },
+				{ field: 'WareHouseName', title: '鎵�灞炰粨搴�', align: 'center' , width: 120,},
+				{ field: 'RoadwayName', title: '鎵�灞炲贩閬�', align: 'center', width: 120, },
+				{ field: 'AreaName', title: '鎵�灞炲尯鍩�', align: 'center', width: 120, },
+				{ field: 'LocatNo', title: '鍌ㄤ綅鍦板潃', align: 'center', width: 100, },
+				{ field: 'PalletNo', title: '鎵樼洏鍙�', align: 'center' , width: 100,},
+				{ field: 'SkuNo', title: '鐗╂枡缂栫爜', align: 'center' , width: 120,},
+				{ field: 'SkuName', title: '鐗╂枡鍚嶇О', align: 'center', width: 120,},
+				{ field: 'LotNo', title: '鎵规鍙�', align: 'center' , width: 100,},
+				//{ field: 'LotText', title: '鎵规鎻忚堪', align: 'center' },
+				{ field: 'SupplierLot', title: '渚涜揣鎵规', align: 'center' , width: 120,},
+				{ field: 'Qty', title: '鏁伴噺', align: 'center' ,width: 90,},
+				{ field: 'LockQty', title: '閿佸畾鏁伴噺', align: 'center',width: 90, },
+				{ field: 'FrozenQty', title: '鍐荤粨鏁伴噺', align: 'center',width: 90, },
+				
+				{ field: 'InspectStatus', templet: '#InspectStatus1', title: '璐ㄦ鐘舵��', align: 'center' ,width: 100,},
+				{ field: 'InspectMark', title: '鎶芥鏍囪', align: 'center', templet: '#InspectMarkStatus' ,width: 100,},
+				{ field: 'BitPalletMark', title: '闆舵墭鏍囪', align: 'center', templet: '#BitPalletMarkStatus',width: 100,},
+				
 				{ field: 'ProductionTime', title: '鐢熶骇鏃ユ湡', align: 'center', templet: '#templetProductionTime' },
-				{ field: 'InspectStatus', templet: '#InspectStatus1', title: '璐ㄦ鐘舵��', align: 'center' },
-				{ field: 'BitPalletMark', title: '闆舵墭鏍囪', align: 'center', templet: '#BitPalletMarkStatus' },
+				{ field: 'OwnerNo', title: '璐т富缂栫爜', align: 'center' , width: 100,},
+				{ field: 'OwnerName', title: '璐т富鍚嶇О', align: 'center' , width: 100,},
+				{ field: 'SupplierNo', title: '渚涘簲鍟嗙紪鐮�', align: 'center' , width: 100,},
+				{ field: 'SupplierName', title: '渚涘簲鍟嗗悕绉�', align: 'center' , width: 100,},
+				
+				
 			]];
 			var TotalColsSysArr = encodeURIComponent(encodeURIComponent(JSON.stringify(TotalColsArr)))//灏嗚〃澶存暟鎹繘琛寀rl缂栫爜
 			//#endregion
diff --git a/Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs b/Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs
index 7cadc25..3cc96d0 100644
--- a/Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs
+++ b/Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs
@@ -23,6 +23,11 @@
         public string Status { get; set; }
 
         /// <summary>
+        /// Desc:浠撳簱 
+        /// </summary>           
+        public string WareHouseName { get; set; }
+
+        /// <summary>
         /// Desc:鏉ユ簮
         /// </summary>           
         public string Origin { get; set; }
@@ -134,6 +139,7 @@
     {
         public string Origin { get; set; }
         public string SoNo { get; set; }
+        public string WareHouseNo { get; set; }
         public string Type { get; set; }       //鍗曟嵁绫诲瀷
         public string CustomerNo { get; set; }       //瀹㈡埛缂栫爜
         public int? LogisticsId { get; set; }       //鎵胯繍鍟� 
diff --git a/Wms/Model/ModelVm/BllSoVm/ExportNoticeVm.cs b/Wms/Model/ModelVm/BllSoVm/ExportNoticeVm.cs
index 57eb70f..296cdb8 100644
--- a/Wms/Model/ModelVm/BllSoVm/ExportNoticeVm.cs
+++ b/Wms/Model/ModelVm/BllSoVm/ExportNoticeVm.cs
@@ -30,9 +30,13 @@
     public class AddEditExportNoticeVm
     {
         public int? Id { get; set; }       //Id
+        /// <summary>
+        /// 0:鎴愬搧鍑哄簱銆�1:棰嗘枡鍑哄簱銆�2:鎶芥鍑哄簱銆�4:涓嶅悎鏍煎搧鍑哄簱銆�7:鍏朵粬鍑哄簱銆�9鐢熶骇棰嗘枡鍑哄簱 ///3锛氱墿鏂欏彇鏍峰嚭搴撱��5:涓棿鍝佸嚭搴撱��6:浠e偍鍑哄簱銆�8:瀵勫瓨鍑哄簱
+        /// </summary>
         [Required]
         [MaxLength(3)]
         public string Type { get; set; }       //鍗曟嵁绫诲瀷
+        public string WareHouseNo { get; set; }       //浠撳簱鍙�
         public string CustomerNo { get; set; }       //瀹㈡埛缂栫爜
         public int? LogisticsId { get; set; }       //鎵胯繍鍟�
         public List<AddEditExportNoticeDetailVm> Detail { get; set; }
diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index 230ca96..a8be286 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -812,6 +812,8 @@
 
         #endregion
 
+        #region JC34
+
         #region 鍩虹鍔熻兘
 
         public async Task<List<ExportNoticeDto>> GetExportNoticeList(GetExportNoticeVm model, RefAsync<int> count)
@@ -839,12 +841,14 @@
                 .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id)
                 .LeftJoin<SysUserInfor>((a, b, c, d) => a.CreateUser == d.Id)
                 .LeftJoin<SysUserInfor>((a, b, c, d, e) => a.CheckUser == e.Id)
-                .Select((a, b, c, d, e) => new ExportNoticeDto()
+                .LeftJoin<SysWareHouse>((a, b, c, d, e,f) => a.WareHouseNo == f.WareHouseNo)
+                .Select((a, b, c, d, e,f) => new ExportNoticeDto()
                 {
                     Id = a.Id,
                     SONo = a.SONo,
                     Type = a.Type,
                     Status = a.Status,
+                    WareHouseName = f.WareHouseName,
                     Origin = a.Origin,
                     CustomerNo = a.CustomerNo,
                     CustomerName = a.CustomerName,
@@ -873,10 +877,14 @@
         }
 
         //鑾峰彇娣诲姞/缂栬緫鍑哄簱鍗曟椂閫夋嫨鐗╂枡鏄庣粏淇℃伅
-        public List<ExStockInfoDto> GetStockGroupList(string type, string ownerNo, string msg)
+        public List<ExStockInfoDto> GetStockGroupList(string house, string type, string ownerNo, string msg)
         {
             try
             {
+                if (string.IsNullOrEmpty(house))
+                {
+                    throw new Exception("璇烽�夋嫨鍑哄簱浠撳簱");
+                }
                 if (string.IsNullOrEmpty(type))
                 {
                     throw new Exception("璇烽�夋嫨鍑哄簱鍗曠被鍨�");
@@ -893,23 +901,52 @@
                 switch (type)//0锛氬師鏂� 1锛氬寘鏉� 2锛氭垚鍝� 3锛氳�楁潗 4锛氬崐鎴愬搧
                 {
                     case "0"://鎴愬搧鍑哄簱
+                        if (house !="W01")
+                        {
+                            throw new Exception("鎴愬搧鍑哄簱鍙兘閫夋嫨鎴愬搧搴�");
+                        }
                         skuType = "(2)";
                         inspectStatus = "1";
                         break;
                     case "1"://棰嗘枡鍑哄簱
+                        if (house != "W02")
+                        {
+                            throw new Exception("棰嗘枡鍑哄簱鍙兘閫夋嫨鍘熸枡搴�");
+                        }
                         skuType = "(0,1,3)";
                         inspectStatus = "1";
                         break;
                     case "2"://鎶芥鍑哄簱
-                        skuType = "(0,1,2,3)";
+                        if (house == "W01")
+                        {
+                            skuType = "(2)";
+                        }
+                        if (house == "W02")
+                        {
+                            skuType = "(0,1,3)";
+                        }
                         inspectStatus = "0,1,2";
                         break;
                     case "3"://鐗╂枡鍙栨牱鍑哄簱
-                        skuType = "(0,1,2,3)";
+                        if (house == "W01")
+                        {
+                            skuType = "(2)";
+                        }
+                        if (house == "W02")
+                        {
+                            skuType = "(0,1,3)";
+                        }
                         inspectStatus = "0";
                         break;
                     case "4"://涓嶅悎鏍煎搧鍑哄簱
-                        skuType = "(0,1,2,3)";
+                        if (house == "W01")
+                        {
+                            skuType = "(2)";
+                        }
+                        if (house == "W02")
+                        {
+                            skuType = "(0,1,3)";
+                        }
                         inspectStatus = "2";
                         break;
                     case "5"://涓棿鍝佸嚭搴�
@@ -920,14 +957,38 @@
                         skuType = "(2)";
                         inspectStatus = "0,1";
                         break;
-                    case "8"://瀵勫瓨鍑哄簱
-                        skuType = "(0,1,2,3)";
+                    case "7"://鍏跺畠鍑哄簱
+                        if (house == "W01")
+                        {
+                            skuType = "(2)";
+                        }
+                        if (house == "W02")
+                        {
+                            skuType = "(0,1,3,4)";
+                        }
                         inspectStatus = "0,1";
+                        break;
+                    case "8"://瀵勫瓨鍑哄簱
+                        if (house == "W01")
+                        {
+                            skuType = "(2)";
+                        }
+                        if (house == "W02")
+                        {
+                            skuType = "(0,1,3)";
+                        }
+                        inspectStatus = "0,1";
+                        break;
+                    case "9"://鐢熶骇棰嗘枡鍑哄簱
+                        if (house != "W02")
+                        {
+                            throw new Exception("鐢熶骇棰嗘枡鍑哄簱鍙兘閫夋嫨鍘熸枡搴�");
+                        }
+                        skuType = "(0,1,3)";
+                        inspectStatus = "1";
                         break;
                     default: //鍏跺畠鍑哄簱
-                        skuType = "(0,1,2,3,4)";
-                        inspectStatus = "0,1";
-                        break;
+                        throw new Exception("鍗曟嵁绫诲瀷閿欒");
                 }
                 var skuList = sku.Where(m => skuType.Contains(m.Type)).ToList();
                 if (skuList.Count == 0)
@@ -937,9 +998,9 @@
 
                 if (type == "6")
                 {
-                    skuList = skuList.Where(m=> string.IsNullOrWhiteSpace(m.PackagNo)).ToList();
+                    skuList = skuList.Where(m => string.IsNullOrWhiteSpace(m.PackagNo)).ToList();
                 }
-                if (type!="8")
+                if (type != "8")
                 {
                     skuList = skuList.Where(m => m.SkuNo != "100088").ToList();
                 }
@@ -951,7 +1012,7 @@
                 var stockRst = new StockServer();
                 var stockDetailRst = new StockDetailServer();
                 Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>()
-                    //.And(it => it.WareHouseNo == wareHouseNo)
+                    .And(it => it.WareHouseNo == house)
                     .AndIF(!string.IsNullOrWhiteSpace(inspectStatus), it => inspectStatus.Contains(it.InspectStatus))
                     .And(m => skuStrList.Contains(m.SkuNo))
                     .AndIF(type == "6", m => m.OwnerNo == ownerNo)//浠e偍鍑哄簱闇�瑕佸叧鑱旇揣涓�
@@ -1035,6 +1096,23 @@
                 var skuNos = model.Detail.Select(a => a.SkuNo).Distinct().ToList();
                 //鏍规嵁鐗╂枡鍙疯幏鍙栫墿鏂欎俊鎭�佸簱瀛樻槑缁嗕腑鑾峰彇鎵规鎻忚堪渚涜揣鎵规绛�
                 var skuList = Db.Queryable<SysMaterials>().Where(a => skuNos.Contains(a.SkuNo) && a.IsDel == "0").ToList();
+                switch (model.WareHouseNo)
+                {
+                    case "W01"://鎴愬搧搴�
+                        if (skuList.Any(m=>m.Type !="2"))
+                        {
+                            throw new Exception("浠撳簱涓庡嚭搴撶墿鏂欎笉绗�");
+                        }
+                        break;
+                    case "W02"://鍘熸枡搴�
+                        if (skuList.Any(m => m.Type == "2"))
+                        {
+                            throw new Exception("浠撳簱涓庡嚭搴撶墿鏂欎笉绗�");
+                        }
+                        break;
+                    default:
+                        throw new Exception("浠撳簱鍙烽敊璇�");
+                }
                 var stockList = Db.Queryable<DataStock>().Where(s => skuNos.Contains(s.SkuNo) && (s.Qty - s.FrozenQty - s.LockQty) > 0).ToList();
                 //var palletList = contextDb.Queryable<DataStockDetail>().Where(s => skuNos.Contains(s.SkuNo) && (s.Qty - s.FrozenQty - s.LockQty) > 0).ToList();
                 //瀹㈡埛淇℃伅
@@ -1068,7 +1146,7 @@
                             throw new Exception($"鐗╂枡淇℃伅涓湭鏌ヨ鍒板嚭搴撶墿鏂欎俊鎭�:{d.SkuNo}");
                         }
 
-                        //0:鎴愬搧鍑哄簱銆�1:棰嗘枡鍑哄簱銆�2:鎶芥鍑哄簱銆�4:涓嶅悎鏍煎搧鍑哄簱銆�6:浠e偍鍑哄簱銆�7:鍏朵粬鍑哄簱銆� ///3锛氱墿鏂欏彇鏍峰嚭搴撱��5:涓棿鍝佸嚭搴撱��8:瀵勫瓨鍑哄簱
+                        //0:鎴愬搧鍑哄簱銆�1:棰嗘枡鍑哄簱銆�2:鎶芥鍑哄簱銆�4:涓嶅悎鏍煎搧鍑哄簱銆�7:鍏朵粬鍑哄簱銆�9鐢熶骇棰嗘枡鍑哄簱 ///3锛氱墿鏂欏彇鏍峰嚭搴撱��5:涓棿鍝佸嚭搴撱��6:浠e偍鍑哄簱銆�8:瀵勫瓨鍑哄簱
                         if (model.Type == "0" || model.Type == "2" || model.Type == "4" || model.Type == "7")
                         {
                             if (string.IsNullOrWhiteSpace(d.LotNo))
@@ -1077,20 +1155,20 @@
                             }
                         }
 
-                        if (model.Type == "1")
-                        {
-                            if (list.Count(m=>m.SkuNo == d.SkuNo)>=2)
-                            {
-                                throw new Exception("棰嗘枡鍑哄簱鍗曞悓鍗曟嵁鍚岀墿鏂欎笉鍏佽瓒呰繃3涓壒娆℃贩鎵瑰嚭搴�");
-                            }
-                        }
-                        else
-                        {
-                            if (list.Count(m => m.SkuNo == d.SkuNo) >= 1)
-                            {
-                                throw new Exception("鍑哄簱鍗曞悓鍗曟嵁鍚岀墿鏂欎笉鍏佽瓒呰繃2涓壒娆℃贩鎵瑰嚭搴�");
-                            }
-                        }
+                        //if (model.Type == "1")
+                        //{
+                        //    if (list.Count(m=>m.SkuNo == d.SkuNo)>=2)
+                        //    {
+                        //        throw new Exception("棰嗘枡鍑哄簱鍗曞悓鍗曟嵁鍚岀墿鏂欎笉鍏佽瓒呰繃3涓壒娆℃贩鎵瑰嚭搴�");
+                        //    }
+                        //}
+                        //else
+                        //{
+                        //    if (list.Count(m => m.SkuNo == d.SkuNo) >= 1)
+                        //    {
+                        //        throw new Exception("鍑哄簱鍗曞悓鍗曟嵁鍚岀墿鏂欎笉鍏佽瓒呰繃2涓壒娆℃贩鎵瑰嚭搴�");
+                        //    }
+                        //}
                         //搴撳瓨
                         List<DataStock> stocks;
 
@@ -1141,7 +1219,7 @@
                         };
                         list.Add(item);
 
-                        
+
                         stocks.First().LockQty += d.Qty;//閿佸畾鏁伴噺
                         var i = Db.Updateable(stocks.First()).UpdateColumns(it => new { it.LockQty })
                             .ExecuteCommand();
@@ -1218,6 +1296,7 @@
                 {
                     SoNo = notify.SONo,
                     Type = notify.Type,
+                    WareHouseNo = notify.WareHouseNo,
                     CustomerNo = notify.CustomerNo,
                     LogisticsId = notify.LogisticsId,
                     //ExportWarehouseId = notify.ExportWarehouseId,
@@ -1618,10 +1697,10 @@
                     //鏌ヨ鏀瑰悗鐨勫崟鎹俊鎭� 鍚庢湡鎺ュ彛瀵规帴瀹屽悗闇�鏀瑰姩鍥炰紶鍙傛暟
                     var detail = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == notice.SONo).Select(m => new SelectStockSkuDto
                     {
-                        LotNo =m.LotNo,
+                        LotNo = m.LotNo,
                         SkuNo = m.SkuNo,
                         SkuName = m.SkuName,
-                        Qty = m.Qty, 
+                        Qty = m.Qty,
                         ExQty = decimal.Parse(m.CompleteQty.ToString()),
                         Standard = m.Standard,
                         IsBale = m.IsBale,
@@ -2154,6 +2233,743 @@
         }
 
         #endregion
+
+        #region 鑷姩鍒嗛厤銆佸彇娑堝垎閰嶃�佽幏鍙栨墜鍔ㄥ垎閰嶇殑鏁版嵁婧愩�佹墜鍔ㄥ垎閰�
+
+        // 鍒ゆ柇鏄惁鏄法鎵瑰嚭搴�
+        public bool IsCrossLotNo(string soNo)
+        {
+            try
+            {
+                //鏂规硶杩斿洖缁撴灉锛歜l
+                var bl = true;
+                //鏌ヨ鍗曟嵁淇℃伅
+                var notice = Db.Queryable<BllExportNotice>().First(m => m.SONo == soNo && m.IsDel == "0");
+                //鍒ゆ柇鍗曟嵁绫诲瀷  鎴愬搧鍑哄簱銆侀鏂欏嚭搴擄紙鍏跺畠绫诲瀷璺冲嚭姝ゆ柟娉曪級
+                if (notice.Type != "0" && notice.Type != "1")
+                {
+                    return bl;
+                }
+                //鏌ヨ鍒板綋鍓嶅崟鎹笅鐨勫嚭搴撳崟鏄庣粏淇℃伅
+                var noticeDetail = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == soNo).ToList();
+                //搴撳瓨鎬昏〃淇℃伅
+                var data = Db.Queryable<DataStock>().Where(m => m.IsDel == "0").ToList();
+                //搴撳瓨鏄庣粏涓楠屽悎鏍兼壒娆¢泦鍚�
+                var dataDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.InspectStatus == "1").GroupBy(g => g.LotNo).Select(s => s.LotNo).ToList();
+                //搴撳瓨鏄庣粏琛ㄤ俊鎭�
+                var dataBoxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0").ToList();
+
+
+                //寰幆鍗曟嵁鏄庣粏淇℃伅
+                foreach (var item in noticeDetail)
+                {
+                    //楠岃瘉鍏堣繘鍏堝嚭鍘熷垯
+                    //鑾峰彇褰撳墠鐗╂枡鐨勬墍鏈夋壒娆′俊鎭�(鎺掗櫎鍗曟嵁鐨勬壒娆★紝闃叉鍗曟嵁鎵�鍦ㄦ壒娆¢攣瀹氭暟閲忓悗楠岃瘉灏忎簬绛変簬0)
+                    var forData = data.Where(m => m.SkuNo == item.SkuNo
+                    && m.LotNo != item.LotNo && (m.Qty - m.FrozenQty - m.LockQty) > 0
+                    && dataDetail.Contains(m.LotNo)).Select(m => m.LotNo).ToList();
+
+                    forData.Add(item.LotNo);  //闆嗗悎娣诲姞鍗曟嵁鐨勬壒娆�
+                    //鑾峰彇鎺掑簭鍚庣殑绗竴涓壒娆�
+                    var firstLotNo = forData.OrderBy(m => m).First();
+                    if (firstLotNo != item.LotNo)
+                    {
+                        bl = false;
+                        break;
+                    }
+
+                    //楠岃瘉鏁堟湡浼樺厛鍘熷垯
+                    var forDataBox = dataBoxInfo.Where(m => m.SkuNo == item.SkuNo && m.LotNo != item.LotNo && m.Qty > 0).ToList();
+                    //鑾峰彇褰撳墠鍗曟嵁鎵规鐨勬渶杩戞晥鏈�
+                    var expirationTimedt = dataBoxInfo.Where(m => m.SkuNo == item.SkuNo
+                    && m.LotNo == item.LotNo && m.Qty > 0).ToList();
+                    if (expirationTimedt.Count > 0)
+                    {
+                        var expirationTime = expirationTimedt.OrderBy(m => m.ExpirationTime).Select(m => m.ExpirationTime).First();
+                        //鑾峰彇搴撳瓨涓叾瀹冩壒娆℃晥鏈熷ぇ浜庡綋鍓嶅崟鎹壒娆$殑鏁堟湡鏁伴噺
+                        var num = forDataBox.Count(m => m.ExpirationTime > expirationTime);
+                        //鍒ゆ柇鏄惁澶т簬0
+                        if (num > 0)
+                        {
+                            bl = false;
+                            break;
+                        }
+                    }
+                    else
+                    {
+                        var dataDetailtime = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.InspectStatus == "1").
+                            Where(m => m.SkuNo == item.SkuNo
+                            && m.LotNo == item.LotNo && m.Qty > 0)
+                            .OrderBy(m => m.ExpirationTime)
+                            .Select(m => m.ExpirationTime).First();
+
+                        var num = forDataBox.Count(m => m.ExpirationTime > dataDetailtime);
+                        //鍒ゆ柇鏄惁澶т簬0
+                        if (num > 0)
+                        {
+                            bl = false;
+                            break;
+                        }
+                    }
+                }
+
+
+                return bl;
+            }
+            catch (Exception e)
+            {
+                throw new Exception(e.Message);
+            }
+        }
+
+        /// <summary>
+        /// 鑷姩鍒嗛厤
+        /// </summary>
+        /// <param name="soNo"></param>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
+        public bool AutoAllot(string soNo, int userId)
+        {
+            try
+            {
+                #region 鍒ゆ柇鏉′欢锛堝嚭搴撳崟銆佸嚭搴撳崟鏄庣粏锛� 
+                //鍑哄簱鍗�
+                var notice = Db.Queryable<BllExportNotice>().Where(m => m.IsDel == "0" && m.SONo == soNo).ToList().FirstOrDefault();
+                if (notice == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌鍑哄簱鍗曟嵁淇℃伅");
+                }
+                if (notice.Status != "0" && notice.Status != "1")
+                {
+                    throw new Exception("鍙傛暟寮傚父,璇锋鏌ョ姸鎬佹槸鍚︿负绛夊緟鎵ц鎴栭儴鍒嗗垎閰�;");
+                }
+                //鍑哄簱鍗曟槑缁�
+                var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == soNo && (m.AllotQty - m.Qty) <= 0).ToList();
+                if (!detailList.Any())
+                {
+                    throw new Exception("鏈煡璇㈠埌绗﹀悎鍒嗛厤鏉′欢鐨勫嚭搴撳崟鎹槑缁嗕俊鎭�");
+                }
+
+                #endregion
+
+                var exAllotList = new List<BllExportAllot>();
+                var assign = new AllotSku();
+                Db.BeginTran();
+                try
+                {
+                    List<SoDetailInfo> soDetailList = new List<SoDetailInfo>();
+                    foreach (var detail in detailList)
+                    {
+                        if (detail.AllotQty >= detail.Qty)
+                        {
+                            continue;
+                        }
+                        //杩橀渶瑕佸垎閰嶇殑鏁伴噺
+                        decimal needQty = detail.Qty - (detail.AllotQty == null ? 0 : decimal.Parse(detail.AllotQty.ToString()));
+                        //搴撳瓨鏄庣粏 Status 0锛氬緟鍒嗛厤 1锛氶儴鍒嗗垎閰�  2锛氬凡鍒嗛厤 
+                        var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.SkuNo == detail.SkuNo && (m.Qty - m.FrozenQty - m.LockQty + m.InspectQty) > 0 && (m.Status == "0" || m.Status == "1") && m.IsDel == "0").ToList();
+
+
+                        //鍒ゆ柇鍗曞彿鏄惁鎸囧畾鎵规
+                        if (!string.IsNullOrWhiteSpace(detail.LotNo))
+                        {
+                            stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.LotNo == detail.LotNo && m.IsDel == "0").ToList();
+                        }
+                        else
+                        {
+                            stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.IsDel == "0" && string.IsNullOrWhiteSpace(m.LotNo)).ToList();
+                        }
+
+                        if (stockDetail.Count < 1)
+                        {
+                            throw new Exception("搴撳瓨涓嶈冻,鏃犲彲鍑哄簱搴撳瓨");
+                        }
+                        //0:鎴愬搧鍑哄簱銆�1:棰嗘枡鍑哄簱銆�2锛氭娊妫�鍑哄簱銆�4:涓嶅悎鏍煎搧鍑哄簱銆�7:鍏朵粬鍑哄簱銆�9:鐢熶骇棰嗘枡鍑哄簱 ///3:鍙栨牱鍑哄簱銆�5:涓棿鍝佸嚭搴撱��8:瀵勫瓨鍑哄簱
+                        if (notice.Type == "0" || notice.Type == "1" || notice.Type == "9")//鎴愬搧銆侀鏂欏嚭搴�
+                        {
+                            stockDetail = stockDetail.Where(m => m.InspectStatus == "1").ToList();
+                        }
+                        else if (notice.Type == "2")//鎶芥鍑哄簱
+                        {
+                            stockDetail = stockDetail.Where(m => m.InspectStatus == "0" || m.InspectStatus == "1" || m.InspectStatus == "2").ToList();
+                        }
+                        else if (notice.Type == "4")//涓嶅悎鏍煎嚭搴�
+                        {
+                            stockDetail = stockDetail.Where(m => m.InspectStatus == "2").ToList();
+                        }
+                        else if (notice.Type == "7") //銆佸叾瀹�
+                        {
+                            stockDetail = stockDetail.Where(m => m.InspectStatus == "0" || m.InspectStatus == "1").ToList();
+                        }
+                        if (stockDetail.Sum(m => m.Qty - m.LockQty) < needQty)
+                        {
+                            throw new Exception("搴撳瓨鏄庣粏鏁伴噺涓嶈冻");
+                        }
+                        #region 鍖呰淇℃伅
+
+                        var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺
+                        var bNum = 0;//绠辩墿鍝佹暟閲�
+                        //鍏叡鏂规硶鑾峰彇鍖呰鏁伴噺
+                        new Common().GetPackQtyInfo(detail.PackagNo, ref pNum, ref bNum);
+
+                        #endregion
+
+                        //鍙栧悎閫傚簱瀛樺晢鍝�
+                        Dictionary<int, decimal> stockQtyDic = new Dictionary<int, decimal>();//鎵樺嚭搴撶墿鍝佹暟
+                        var qty = 0m;
+                        var house = "";
+                        if (notice.Type == "0")
+                        {
+                            house = "W01";
+                        }
+                        //鍒嗛厤璐х墿
+                        qty += assign.AllotPallets(stockDetail, needQty, pNum, bNum, stockQtyDic, house);
+                        foreach (var sc in stockQtyDic)
+                        {
+                            var s = stockDetail.FirstOrDefault(m => m.Id == sc.Key);
+                            //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+                            var allot = new BllExportAllot
+                            {
+                                SONo = notice.SONo,
+                                WaveNo = "",
+                                SODetailNo = detail.Id,
+                                StockId = sc.Key,
+                                LotNo = s.LotNo,
+                                LotText = s.LotText,
+                                SupplierLot = s.SupplierLot,
+                                SkuNo = s.SkuNo,
+                                SkuName = s.SkuName,
+                                Standard = s.Standard,
+                                PalletNo = s.PalletNo,
+                                IsBale = detail.IsBale == "0" ? "0" : s.IsBale == "1" ? "0" : "1", //鏄惁瑁瑰寘
+                                IsBelt = detail.IsBelt == "0" ? "0" : s.IsBelt == "1" ? "0" : "1", //鏄惁鎵撳甫
+
+                                Qty = sc.Value,
+                                CompleteQty = 0,
+                                //BoxexQty = s.Qty, //绠卞唴鏁伴噺
+                                Status = "0",
+                                LogisticsId = notice.LogisticsId,
+                                IsAdvance = "0",
+                                OutMode = "",//鍑哄簱鍙�
+
+                                CreateUser = userId,
+                                CreateTime = DateTime.Now
+                            };
+                            exAllotList.Add(allot);
+
+                            s.LockQty += stockQtyDic[s.Id];
+
+                            if (s.LockQty == s.Qty)
+                            {
+                                s.Status = "2";
+                            }
+                            else
+                            {
+                                s.Status = "1";
+                            }
+
+                            var sd = Db.Updateable(s).UpdateColumns(it => new { it.LockQty, it.Status }).ExecuteCommand();
+
+                        }
+                        detail.AllotQty += qty;
+                        detail.UpdateUser = userId;
+                        detail.UpdateTime = DateTime.Now;
+                        if (detail.Status == "0")
+                        {
+                            detail.Status = "1";
+                        }
+                        if (qty > detail.Qty)
+                        {
+                            //搴撳瓨鎬昏〃
+                            var stock = Db.Queryable<DataStock>().First(d => d.IsDel == "0"
+                            && d.SkuNo == detail.SkuNo
+                            && d.LotNo == detail.LotNo);
+                            stock.LockQty += qty - detail.Qty;
+                            Db.Updateable(stock).ExecuteCommand();
+
+                            //娣诲姞鍥炰紶涓婃父绯荤粺閿佸畾鏁伴噺鏇存敼浠g爜
+                            SoDetailInfo soDetail = new SoDetailInfo();
+                            soDetail.OrderDetailCode = detail.OrderDetailCode;
+                            soDetail.LockQty = qty - detail.Qty;
+                            soDetail.LotNo = detail.LotNo;
+
+                            soDetailList.Add(soDetail);
+                        }
+
+                    }
+
+                    var mx = Db.Updateable(detailList).ExecuteCommand();
+                    var fp = Db.Insertable(exAllotList).ExecuteCommand();
+
+                    //淇敼鍒嗛厤鍗曟嵁鐨勭姸鎬�
+                    if (notice.Status == "0" || notice.Status == "1")
+                    {
+                        var bl = 0;
+                        var bl2 = 0;
+                        foreach (var item in detailList)
+                        {
+                            if (item.AllotQty <= 0)
+                            {
+                                continue;
+                            }
+                            if (item.AllotQty < item.Qty)
+                            {
+                                bl = 1;
+                            }
+                            else
+                            {
+                                bl2 = 1;
+                            }
+                        }
+
+                        switch (bl2)
+                        {
+                            case 1 when bl == 1:
+                                notice.Status = "1";//璇佹槑閮ㄥ垎鍒嗛厤鏁伴噺鍏ㄩ儴澶т簬绛変簬鍑哄簱鏁伴噺  淇敼涓哄凡鍒嗛厤
+                                break;
+                            case 0 when bl == 1:
+                                notice.Status = "1";//璇佹槑閮ㄥ垎鍒嗛厤鏁伴噺鍏ㄩ儴澶т簬绛変簬鍑哄簱鏁伴噺  淇敼涓哄凡鍒嗛厤
+                                break;
+                            case 1 when bl == 0:
+                                notice.Status = "2";//璇佹槑鍒嗛厤鏁伴噺鍏ㄩ儴澶т簬绛変簬鍑哄簱鏁伴噺  淇敼涓哄凡鍒嗛厤
+                                break;
+                            case 0 when bl == 0:
+                                //璇佹槑鎵�鏈夊垎閰嶆暟閲忓叏閮ㄥ皬浜庣瓑浜庡嚭搴撴暟閲� 涓嶅仛淇敼
+                                break;
+                        }
+
+                    }
+                    notice.UpdateUser = userId;
+                    notice.UpdateTime = DateTime.Now;
+                    var zd = Db.Updateable(notice).ExecuteCommand();
+
+                    //娣诲姞鎿嶄綔鏃ュ織璁板綍
+                    var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁",
+                        notice.SONo, "鍒嗛厤", $"鑷姩鍒嗛厤浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId);
+
+                    if (zd > 0 && mx > 0 && fp > 0 && k)
+                    {
+                        #region 閫氳繃鎺ュ彛鍙戦�佽嚦erp
+                        //绯荤粺瀵规帴鍚庢斁寮�
+                        /*var jsonData = JsonConvert.SerializeObject(soDetailList);
+
+                        var response = HttpHelper.DoPost(url, jsonData, "搴撳瓨閿佸畾鏁伴噺鍙樻洿", "ERP");
+
+                        var obj = JsonConvert.DeserializeObject<ErpModel>(response);//瑙f瀽杩斿洖鏁版嵁
+                        if (obj.Success != 0)
+                        {
+                            throw new Exception("涓婁紶澶辫触" + obj.Message);
+                        }*/
+                        #endregion
+
+                        Db.CommitTran();
+                        return true;
+                    }
+                    Db.RollbackTran();
+                    return false;
+                }
+                catch (Exception e)
+                {
+                    Db.RollbackTran();
+                    throw new Exception(e.Message);
+                }
+            }
+            catch (Exception e)
+            {
+                throw new Exception("鑷姩鍒嗛厤澶辫触锛�" + e.Message);
+            }
+        }
+
+        //鍙栨秷鍒嗛厤
+        public bool CancelAllot(string soNo, int userId)
+        {
+            try
+            {
+
+                var notice = Db.Queryable<BllExportNotice>().Where(m => m.IsDel == "0" && m.SONo == soNo).ToList().FirstOrDefault();
+                if (notice == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌鍑哄簱鍗曟嵁淇℃伅");
+                }
+                if (notice.Status != "1" && notice.Status != "2")
+                {
+                    throw new Exception("鍙傛暟寮傚父,璇锋鏌ョ姸鎬佹槸鍚︿负宸插垎閰嶆垨閮ㄥ垎鍒嗛厤鎴栨潵婧愭槸鍚︽槸WMS");
+                }
+                //璇ュ崟鎹殑鍒嗛厤淇℃伅 Status 0锛氫换鍔′笅鍙� 1锛氬緟鎷h揣 2锛氶儴鍒嗘嫞璐� 3锛氬緟鍥炲簱 4锛氬凡瀹屾垚
+                var allotList = Db.Queryable<BllExportAllot>().Where(o => o.IsDel == "0" && o.SONo == soNo).ToList();
+                //鏈夊凡鎵ц鐨勫垎閰嶆暟鎹笉鑳藉彇娑�
+                if (allotList.Any(o => o.Status != "0"))
+                {
+                    throw new Exception("褰撳墠鍗曟嵁鐨勫垎閰嶄俊鎭凡鏈夋墽琛屼腑锛屼笉鑳藉彇娑堝垎閰�");
+                }
+                List<SoDetailInfo> soDetailList = new List<SoDetailInfo>();
+                //寮�鍚簨鍔�
+                Db.BeginTran();
+                try
+                {
+                    //鏌ヨ鍒嗛厤鐨勬槑缁�
+                    var detail = Db.Queryable<BllExportNoticeDetail>().Where(d => d.SONo == soNo && d.AllotQty > 0 && d.IsDel == "0").ToList();
+                    foreach (var d in detail)
+                    {
+                        var orders = allotList.Where(o => o.SODetailNo == d.Id).ToList();
+                        foreach (var o in orders)
+                        {
+                            var pq = Db.Queryable<DataStockDetail>().Where(t => t.Id == o.StockId);
+
+                            var pq2 = !string.IsNullOrWhiteSpace(o.LotNo) ? pq.Where(t => t.LotNo == o.LotNo).ToList() : pq.Where(t => string.IsNullOrWhiteSpace(t.LotNo)).ToList();
+
+                            var pallet = pq2.FirstOrDefault();
+                            if (pallet != null)
+                            {
+                                pallet.LockQty -= o.Qty;
+                                pallet.Status = pallet.LockQty == 0 ? "0" : "1"; //濡傛灉閿佸畾鏁伴噺鏄�0鐘舵�佸彉鏇翠负寰呭垎閰� 鍚﹀垯涓洪儴鍒嗗垎閰�
+                                Db.Updateable(pallet).ExecuteCommand();
+
+                                //搴撳瓨鎬昏〃
+                                //var stock = Db.Queryable<DataStock>().First(t => t.SkuNo == pallet.SkuNo && t.IsDel == "0");
+                                //stock.LockQty -= o.Qty;
+                                //Db.Updateable(stock).ExecuteCommand();
+                            }
+
+                        }
+                        Db.Deleteable<BllExportAllot>(orders).ExecuteCommand();
+
+                        if (d.AllotQty > d.Qty)
+                        {
+                            //搴撳瓨鎬昏〃
+                            var stock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == d.SkuNo && m.LotNo == d.LotNo);
+                            stock.LockQty -= (decimal)d.AllotQty - d.Qty;
+                            Db.Updateable(stock).ExecuteCommand();
+
+                            //娣诲姞鍥炰紶涓婃父绯荤粺閿佸畾鏁伴噺鏇存敼浠g爜
+                            SoDetailInfo soDetail = new SoDetailInfo();
+                            soDetail.OrderDetailCode = d.OrderDetailCode;
+                            soDetail.LockQty = (decimal)(d.Qty - d.AllotQty);
+                            soDetail.LotNo = d.LotNo;
+
+                            soDetailList.Add(soDetail);
+                        }
+                        d.AllotQty = 0;
+                        d.Status = "0";
+                        d.UpdateUser = userId;
+                        d.UpdateTime = DateTime.Now;
+                        //if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1锛氶鏂欏嚭搴撱��
+                        //{
+                        //    if (d.IsIssueLotNo != "1")
+                        //    {
+                        //        d.LotNo = "";
+                        //    }
+
+                        //}
+                    }
+
+                    //鏌ヨ褰撳墠鍗曟嵁鏄惁宸叉坊鍔犲鏂欎换鍔�
+                    if (notice.Type == "1")
+                    {
+                        var task = Db.Queryable<BllExportTimingTask>().First(m => m.IsDel == "0" && m.SoNo == soNo);
+                        if (task != null)
+                        {
+                            task.IsDel = "1";
+                            task.UpdateUser = userId;
+                            task.UpdateTime = DateTime.Now;
+                            Db.Updateable(task).ExecuteCommand();
+                        }
+                    }
+                    notice.Status = "0";
+                    notice.UpdateUser = userId;
+                    notice.UpdateTime = DateTime.Now;
+                    Db.Updateable(detail).ExecuteCommand();
+                    Db.Updateable(notice).ExecuteCommand();
+
+                    //绯荤粺瀵规帴鍚庢斁寮�
+                    /*var jsonData = JsonConvert.SerializeObject(soDetailList);
+
+                    var response = HttpHelper.DoPost(url, jsonData, "搴撳瓨閿佸畾鏁伴噺鍙樻洿", "ERP");
+
+                    var obj = JsonConvert.DeserializeObject<ErpModel>(response);//瑙f瀽杩斿洖鏁版嵁
+                    if (obj.Success != 0)
+                    {
+                        throw new Exception("涓婁紶澶辫触" + obj.Message);
+                    }*/
+
+                    //娣诲姞鎿嶄綔鏃ュ織璁板綍
+                    var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "鍙栨秷鍒嗛厤", $"鍙栨秷鍒嗛厤浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId);
+                    Db.CommitTran();
+                }
+                catch (Exception e)
+                {
+                    Db.RollbackTran();
+                    throw new Exception(e.Message);
+                }
+                return true;
+            }
+            catch (Exception e)
+            {
+                throw new Exception("鍙栨秷鍒嗛厤澶辫触" + e.Message);
+            }
+        }
+
+        /// <summary>
+        /// 缁存姢鍑哄簱鍗曞娉ㄤ俊鎭�
+        /// </summary>
+        /// <param name="id"></param>
+        /// <param name="demo"></param>
+        /// <param name="userId"></param>
+        public void EditNoticeDemo(int id, string demo, int userId)
+        {
+            try
+            {
+                var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.Id == id);
+                if (notice == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌鍑哄簱鍗曟嵁淇℃伅");
+                }
+                notice.Demo = demo + "".Trim();
+                notice.UpdateUser = userId;
+                notice.UpdateTime = DateTime.Now;
+
+                int i = Db.Updateable(notice).ExecuteCommand();
+                if (i > 0)
+                {
+                    //娣诲姞鎿嶄綔鏃ュ織
+                    new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "缂栬緫", $"缂栬緫浜嗗崟鎹彿涓簕notice.SONo}鐨勫娉ㄤ俊鎭�", userId);
+                }
+            }
+            catch (Exception ex)
+            {
+                throw new Exception(ex.Message);
+            }
+        }
+
+        //鑾峰彇搴撳瓨鏄庣粏淇℃伅锛堝嚭搴撳崟鎵嬪姩鍒嗛厤閫夋嫨鏁版嵁婧愶級
+        public List<StockDetailDto> GetHandOutList(int detailId, string houseNo, string roadwayNo, string locateNo, string msg, string palletNo)
+        {
+            try
+            {
+                var detail = Db.Queryable<BllExportNoticeDetail>().First(d => d.Id == detailId);
+
+                #region 鍒ゆ柇鏉′欢
+
+                if (detail == null)
+                {
+                    throw new Exception("鑾峰彇澶辫触锛屾湭鎵惧埌鎸囧畾鍑哄簱鍗曪紒");
+                }
+                if (detail.Status != "0" && detail.Status != "1" && detail.AllotQty >= detail.Qty)
+                {
+                    throw new Exception("鑾峰彇澶辫触锛屽嚭搴撳崟鐘舵�佷笉鏄瓑寰呮墽琛屾垨鍒嗛厤涓紒");
+                }
+                if (detail.AllotQty >= detail.Qty)
+                {
+                    throw new Exception("鑾峰彇澶辫触锛屽嚭搴撳崟宸插垎閰嶅畬鎴�!");
+                }
+                var notice = Db.Queryable<BllExportNotice>().First(a => a.SONo == detail.SONo);
+                if (notice == null)
+                {
+                    throw new Exception("鑾峰彇澶辫触锛屾湭鎵惧埌鎸囧畾鍑哄簱鍗�!");
+                }
+                if (notice.Status == "3" && detail.AllotQty >= detail.Qty || notice.Status == "4" || notice.Status == "5")
+                {
+                    throw new Exception("鑾峰彇澶辫触锛屽嚭搴撳崟鐘舵�佷笉鍏佽!");
+                }
+                #endregion
+
+                Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>()
+                    .AndIF(!string.IsNullOrWhiteSpace(houseNo), m => m.WareHouseNo == houseNo)
+                    .AndIF(!string.IsNullOrWhiteSpace(roadwayNo), m => m.RoadwayNo == roadwayNo)
+                    .AndIF(!string.IsNullOrWhiteSpace(locateNo), m => m.LocatNo == locateNo)
+                    .AndIF(!string.IsNullOrWhiteSpace(palletNo), m => m.PalletNo == palletNo)
+                    .AndIF(!string.IsNullOrWhiteSpace(msg),
+                        m => m.SkuNo.Contains(msg.Trim())
+                             || m.SkuName.Contains(msg.Trim())
+                             || m.LocatNo.Contains(msg.Trim()))
+                    .And(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo && m.LotNo == detail.LotNo && (m.Status == "0" || m.Status == "1"))
+                    .ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏�
+
+                var list = Db.Queryable<DataStockDetail>().Where(item).Select(a => new StockDetailDto
+                {
+                    Id = a.Id,
+                    SkuNo = a.SkuNo,
+                    SkuName = a.SkuName,
+                    Standard = a.Standard,
+                    LotNo = a.LotNo,
+                    LotText = a.LotText,
+                    SupplierLot = a.SupplierLot,
+                    Qty = a.Qty - a.LockQty - a.FrozenQty,
+                    LocatNo = a.LocatNo,
+                    RoadwayNo = a.RoadwayNo,
+                    PalletNo = a.PalletNo,
+                    Demo = a.Demo,
+                }).ToList();
+
+                return list;
+            }
+            catch (Exception e)
+            {
+                throw new Exception(e.Message);
+            }
+        }
+
+        //鎵嬪姩鍒嗛厤鍑哄簱鍗曟槑缁�
+        public void AddHandOutAllot(AddHandOutVm model, int userId)
+        {
+            try
+            {
+                #region 鍒ゆ柇鏉′欢
+                //鏁版嵁楠岃瘉
+                var detail = Db.Queryable<BllExportNoticeDetail>().First(a => a.IsDel == "0" && a.Id == model.Id);
+                if (detail == null)
+                {
+                    throw new Exception("鎿嶄綔澶辫触锛屾湭鎵惧埌鎸囧畾鍑哄簱鍗曡鎯咃紒");
+                }
+                if (detail.AllotQty >= detail.Qty || (detail.Status != "0" && detail.Status != "1"))
+                {
+                    throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撳崟宸插垎閰嶅畬鎴愶紒");
+                }
+                var notice = Db.Queryable<BllExportNotice>().First(a => a.IsDel == "0" && a.SONo == detail.SONo);
+                if (notice == null)
+                {
+                    throw new Exception("鎿嶄綔澶辫触锛屾湭鎵惧埌鎸囧畾鍑哄簱鍗曪紒");
+                }
+                if (notice.Status == "3" && detail.AllotQty >= detail.Qty || notice.Status == "4" || notice.Status == "5")
+                {
+                    throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撳崟宸插垎閰嶅畬鎴愶紒");
+                }
+                #endregion
+
+                //鍗曟嵁鏄庣粏闇�瑕佺殑鍑哄簱鏁伴噺
+                var needQty = detail.Qty - detail.AllotQty;
+                //鍒嗛厤鐨勫嚭搴撴暟閲�
+                var outQty = model.StockList.Select(s => s.Qty).ToList().Sum();
+                if (outQty != needQty)
+                {
+                    throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撴暟閲忎笌璁″垝鏁伴噺涓嶄竴鑷达紒");
+                }
+                var stockIds = model.StockList.Select(a => a.StockId).ToList();
+                //搴撳瓨鏄庣粏
+                var stockList = Db.Queryable<DataStockDetail>().Where(a => stockIds.Contains(a.Id)).ToList();
+
+                //鍒嗛厤淇℃伅
+                var allots = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SODetailNo == detail.Id && m.Status == "0").ToList();
+
+                //搴撳瓨鎬昏〃
+                //var stockz = Db.Queryable<DataStock>().First(d => d.IsDel == "0" && d.SkuNo == detail.SkuNo && d.LotNo == detail.LotNo);
+
+                var allotList = new List<BllExportAllot>();
+                decimal outQtys = 0;
+                foreach (var st in model.StockList)
+                {
+                    var stock = stockList.First(a => a.Id == st.StockId);
+                    if (stock == null)
+                    {
+                        throw new Exception("鎿嶄綔澶辫触锛岄儴鍒嗗偍浣嶅簱瀛樺紓甯革紒");
+                    }
+                    if (st.Qty > (stock.Qty - stock.LockQty - stock.FrozenQty))     // 杈撳叆鐨勬暟閲� -  鎵樼洏涓婂彲鐢ㄧ殑鏁伴噺锛堟墭鐩樹笂鏁伴噺-閿佸畾鐨勬暟閲�-鍐荤粨鐨勬暟閲忥級
+                    {
+                        throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撴暟閲忚秴鍑哄簱瀛樻暟閲忥紒");
+                    }
+
+                    var bl = allots.FirstOrDefault(m => m.StockId == st.StockId);
+                    if (bl == null)
+                    {
+                        //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+                        var allot = new BllExportAllot
+                        {
+                            SONo = notice.SONo,
+                            WaveNo = "",
+                            SODetailNo = detail.Id,
+                            StockId = st.StockId,
+                            LotNo = stock.LotNo,
+                            LotText = stock.LotText,
+                            SupplierLot = stock.SupplierLot,
+                            SkuNo = stock.SkuNo,
+                            SkuName = stock.SkuName,
+                            Standard = stock.Standard,
+                            PalletNo = stock.PalletNo,
+                            IsBale = stock.IsBale,
+                            IsBelt = stock.IsBelt,
+                            Qty = st.Qty,
+                            CompleteQty = 0,
+                            Status = "0",
+                            LogisticsId = notice.LogisticsId,
+                            IsAdvance = "0",
+                            OutMode = "",//鍑哄簱鍙�
+
+                            CreateUser = userId,
+                            CreateTime = DateTime.Now
+                        };
+                        allotList.Add(allot);
+                    }
+                    else
+                    {
+                        bl.Qty += st.Qty;
+                        Db.Updateable(bl).ExecuteCommand();
+                    }
+
+                    //搴撳瓨鏄庣粏
+                    stock.LockQty += st.Qty;
+                    stock.Status = stock.LockQty == stock.Qty ? "2" : "1";
+
+                    //搴撳瓨鎬昏〃
+                    //stockz.LockQty += st.Qty;
+                    //Db.Updateable(stockz).ExecuteCommand();
+
+
+                    Db.Updateable(stock).UpdateColumns(it => new { it.LockQty, it.Status }).ExecuteCommand();
+                    outQtys += st.Qty;
+                }
+                Db.Insertable(allotList).ExecuteCommand();
+                //淇敼鍗曟嵁鏄庣粏
+                detail.AllotQty += outQtys;
+                detail.UpdateUser = userId;
+                detail.UpdateTime = DateTime.Now;
+                if (detail.Status == "0")
+                {
+                    detail.Status = "1";
+                }
+
+                Db.Updateable(detail).ExecuteCommand();
+                var detailList = Db.Queryable<BllExportNoticeDetail>()
+                    .Where(m => m.IsDel == "0" && m.SONo == notice.SONo).ToList();
+                //淇敼鍑哄簱鍗曠姸鎬� 
+                if (notice.Status == "0" || notice.Status == "1")
+                {
+                    decimal totalQty = 0;
+                    decimal totalAllotQty = 0;
+                    foreach (var item in detailList)
+                    {
+                        totalQty += item.Qty;
+                        totalAllotQty += Convert.ToInt32(item.AllotQty);
+                    }
+
+                    if (totalAllotQty >= totalQty)
+                    {
+                        notice.Status = "2";//璇佹槑鍒嗛厤鏁伴噺澶т簬绛変簬鍑哄簱鏁伴噺  淇敼涓哄凡鍒嗛厤
+                    }
+                    else if (totalAllotQty < totalQty && totalAllotQty > 0)
+                    {
+                        notice.Status = "1";//璇佹槑鍒嗛厤鏁伴噺灏忎簬绛変簬鍑哄簱鏁伴噺  淇敼涓洪儴鍒嗗垎閰�
+                    }
+                    Db.Updateable(notice).ExecuteCommand();
+                }
+                //娣诲姞鎿嶄綔鏃ュ織璁板綍
+                var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "鍒嗛厤", $"鎵嬪姩鍒嗛厤浜嗗崟鎹彿涓簕notice.SONo}銆佺墿鏂欙細{detail.SkuNo}銆佹壒娆★細{detail.LotNo}鐨勫崟鎹俊鎭�", userId);
+
+                Db.CommitTran();
+
+            }
+            catch (Exception e)
+            {
+                Db.RollbackTran();
+                throw new Exception(e.Message);
+            }
+        }
+
+        #endregion
+
+        #endregion
+
+
 
         //------------------------------------------------------------------
 
@@ -4289,727 +5105,7 @@
         }
         #endregion
 
-        #region 鑷姩鍒嗛厤銆佸彇娑堝垎閰嶃�佽幏鍙栨墜鍔ㄥ垎閰嶇殑鏁版嵁婧愩�佹墜鍔ㄥ垎閰�
-
-        // 鍒ゆ柇鏄惁鏄法鎵瑰嚭搴�
-        public bool IsCrossLotNo(string soNo)
-        {
-            try
-            {
-                //鏂规硶杩斿洖缁撴灉锛歜l
-                var bl = true;
-                //鏌ヨ鍗曟嵁淇℃伅
-                var notice = Db.Queryable<BllExportNotice>().First(m=>m.SONo == soNo && m.IsDel == "0");
-                //鍒ゆ柇鍗曟嵁绫诲瀷  鎴愬搧鍑哄簱銆侀鏂欏嚭搴擄紙鍏跺畠绫诲瀷璺冲嚭姝ゆ柟娉曪級
-                if (notice.Type!="0" && notice.Type!="1")
-                {
-                    return bl;
-                }
-                //鏌ヨ鍒板綋鍓嶅崟鎹笅鐨勫嚭搴撳崟鏄庣粏淇℃伅
-                var noticeDetail = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == soNo).ToList();
-                //搴撳瓨鎬昏〃淇℃伅
-                var data = Db.Queryable<DataStock>().Where(m => m.IsDel == "0").ToList();
-                //搴撳瓨鏄庣粏涓楠屽悎鏍兼壒娆¢泦鍚�
-                var dataDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.InspectStatus == "1").GroupBy(g => g.LotNo).Select(s => s.LotNo).ToList();
-                //搴撳瓨鏄庣粏琛ㄤ俊鎭�
-                var dataBoxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0").ToList();
-
-
-                //寰幆鍗曟嵁鏄庣粏淇℃伅
-                foreach (var item in noticeDetail)
-                {
-                    //楠岃瘉鍏堣繘鍏堝嚭鍘熷垯
-                    //鑾峰彇褰撳墠鐗╂枡鐨勬墍鏈夋壒娆′俊鎭�(鎺掗櫎鍗曟嵁鐨勬壒娆★紝闃叉鍗曟嵁鎵�鍦ㄦ壒娆¢攣瀹氭暟閲忓悗楠岃瘉灏忎簬绛変簬0)
-                    var forData = data.Where(m => m.SkuNo == item.SkuNo 
-                    && m.LotNo != item.LotNo && (m.Qty - m.FrozenQty - m.LockQty) > 0 
-                    && dataDetail.Contains(m.LotNo)).Select(m=>m.LotNo).ToList(); 
-
-                    forData.Add(item.LotNo);  //闆嗗悎娣诲姞鍗曟嵁鐨勬壒娆�
-                    //鑾峰彇鎺掑簭鍚庣殑绗竴涓壒娆�
-                    var firstLotNo = forData.OrderBy(m => m).First();
-                    if (firstLotNo != item.LotNo)
-                    {
-                        bl = false;
-                        break;
-                    }
-
-                    //楠岃瘉鏁堟湡浼樺厛鍘熷垯
-                    var forDataBox = dataBoxInfo.Where(m => m.SkuNo == item.SkuNo && m.LotNo != item.LotNo && m.Qty > 0).ToList();
-                    //鑾峰彇褰撳墠鍗曟嵁鎵规鐨勬渶杩戞晥鏈�
-                    var expirationTimedt = dataBoxInfo.Where(m => m.SkuNo == item.SkuNo
-                    && m.LotNo == item.LotNo && m.Qty > 0).ToList();
-                    if (expirationTimedt.Count > 0)
-                    {
-                        var expirationTime = expirationTimedt.OrderBy(m => m.ExpirationTime).Select(m => m.ExpirationTime).First();
-                        //鑾峰彇搴撳瓨涓叾瀹冩壒娆℃晥鏈熷ぇ浜庡綋鍓嶅崟鎹壒娆$殑鏁堟湡鏁伴噺
-                        var num = forDataBox.Count(m => m.ExpirationTime > expirationTime);
-                        //鍒ゆ柇鏄惁澶т簬0
-                        if (num > 0)
-                        {
-                            bl = false;
-                            break;
-                        }
-                    }
-                    else 
-                    {
-                        var dataDetailtime = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.InspectStatus == "1").
-                            Where(m => m.SkuNo == item.SkuNo
-                            && m.LotNo == item.LotNo && m.Qty > 0)
-                            .OrderBy(m => m.ExpirationTime)
-                            .Select(m => m.ExpirationTime).First();
-
-                        var num = forDataBox.Count(m => m.ExpirationTime > dataDetailtime);
-                        //鍒ゆ柇鏄惁澶т簬0
-                        if (num > 0)
-                        {
-                            bl = false;
-                            break;
-                        }
-                    }
-                }
-
-
-                return bl;
-            }
-            catch (Exception e)
-            {
-                throw new Exception(e.Message);
-            }
-        }
-
-        //鑷姩鍒嗛厤
-        public bool AutoAllot(string soNo, int userId)
-        {
-            try
-            {
-                #region 鍒ゆ柇鏉′欢锛堝嚭搴撳崟銆佸嚭搴撳崟鏄庣粏锛� 
-                //鍑哄簱鍗�
-                var notice = Db.Queryable<BllExportNotice>().Where(m => m.IsDel == "0" && m.SONo == soNo).ToList().FirstOrDefault();
-                if (notice == null)
-                {
-                    throw new Exception("鏈煡璇㈠埌鍑哄簱鍗曟嵁淇℃伅");
-                }
-                if (notice.Status != "0" && notice.Status != "1")
-                {
-                    throw new Exception("鍙傛暟寮傚父,璇锋鏌ョ姸鎬佹槸鍚︿负绛夊緟鎵ц鎴栭儴鍒嗗垎閰�;");
-                }
-                //鍑哄簱鍗曟槑缁�
-                var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == soNo && (m.AllotQty - m.Qty) <= 0).ToList();
-                if (!detailList.Any())
-                {
-                    throw new Exception("鏈煡璇㈠埌绗﹀悎鍒嗛厤鏉′欢鐨勫嚭搴撳崟鎹槑缁嗕俊鎭�");
-                }
-
-                #endregion
-
-                var exAllotList = new List<BllExportAllot>();
-                var assign = new AllotSku();
-                Db.BeginTran();
-                try
-                {
-                    List<SoDetailInfo> soDetailList = new List<SoDetailInfo>();
-                    foreach (var detail in detailList)
-                    {
-                        if (detail.AllotQty >= detail.Qty)
-                        {
-                            continue;
-                        }
-                        //杩橀渶瑕佸垎閰嶇殑鏁伴噺
-                        decimal needQty = detail.Qty - (detail.AllotQty == null? 0: decimal.Parse(detail.AllotQty.ToString()));
-                        //搴撳瓨鏄庣粏 Status 0锛氬緟鍒嗛厤 1锛氶儴鍒嗗垎閰�  2锛氬凡鍒嗛厤 
-                        var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.SkuNo == detail.SkuNo && (m.Qty - m.FrozenQty - m.LockQty + m.InspectQty) > 0 && (m.Status == "0" || m.Status == "1") && m.IsDel == "0").ToList();
-
-
-                        //鍒ゆ柇鍗曞彿鏄惁鎸囧畾鎵规
-                        if (!string.IsNullOrWhiteSpace(detail.LotNo))
-                        {
-                            stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.LotNo == detail.LotNo && m.IsDel == "0").ToList();
-                        }
-                        else
-                        {
-                            stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.IsDel == "0" && string.IsNullOrWhiteSpace(m.LotNo)).ToList();
-                        }
-
-                        if (stockDetail.Count < 1)
-                        {
-                            throw new Exception("搴撳瓨涓嶈冻,鏃犲彲鍑哄簱搴撳瓨");
-                        }
-                        //0:鎴愬搧鍑哄簱銆�1:棰嗘枡鍑哄簱銆�2锛氭娊妫�鍑哄簱銆�4:涓嶅悎鏍煎搧鍑哄簱銆�6:浠e偍鍑哄簱銆�7:鍏朵粬鍑哄簱銆� ///3:鍙栨牱鍑哄簱銆�5:涓棿鍝佸嚭搴撱��8:瀵勫瓨鍑哄簱
-                        if (notice.Type == "0" || notice.Type == "1" )//鎴愬搧銆侀鏂欏嚭搴�
-                        {
-                            stockDetail = stockDetail.Where(m => m.InspectStatus == "1").ToList();
-                        }
-                        else if (notice.Type == "2" )//鎶芥鍑哄簱
-                        {
-                            stockDetail = stockDetail.Where(m => m.InspectStatus == "0" || m.InspectStatus == "1" || m.InspectStatus == "2").ToList();
-                        }
-                        else if (notice.Type == "6" || notice.Type == "7" ) //浠e偍銆佸叾瀹�
-                        {
-                            stockDetail = stockDetail.Where(m => m.InspectStatus == "0" || m.InspectStatus == "1").ToList();
-                        }
-                        else if (notice.Type == "4")//涓嶅悎鏍煎嚭搴�
-                        {
-                            stockDetail = stockDetail.Where(m => m.InspectStatus == "2").ToList();
-                        }
-                        if (stockDetail.Sum(m=>m.Qty-m.LockQty) < needQty)
-                        {
-                            throw new Exception("搴撳瓨鏄庣粏鏁伴噺涓嶈冻");
-                        }
-                        #region 鍖呰淇℃伅
-
-                        var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺
-                        var bNum = 0;//绠辩墿鍝佹暟閲�
-                        //鍏叡鏂规硶鑾峰彇鍖呰鏁伴噺
-                        new Common().GetPackQtyInfo(detail.PackagNo,ref pNum,ref bNum);
-
-                        #endregion
-
-                        //鍙栧悎閫傚簱瀛樺晢鍝�
-                        Dictionary<int, decimal> stockQtyDic = new Dictionary<int, decimal>();//鎵樺嚭搴撶墿鍝佹暟
-                        var qty = 0m;
-                        //鍒嗛厤璐х墿
-                        qty += assign.AllotPallets(stockDetail, needQty, pNum, bNum, stockQtyDic, detail.LotNo, detail.IsMixBox);
-                        foreach (var sc in stockQtyDic)
-                        {
-                            var s = stockDetail.FirstOrDefault(m => m.Id == sc.Key);
-                            //娣诲姞鍒嗛厤琛ㄤ俊鎭�
-                            var allot = new BllExportAllot
-                            {
-                                SONo = notice.SONo,
-                                WaveNo = "",
-                                SODetailNo = detail.Id,
-                                StockId = sc.Key,
-                                LotNo = s.LotNo,
-                                LotText = s.LotText,
-                                SupplierLot = s.SupplierLot,
-                                SkuNo = s.SkuNo,
-                                SkuName = s.SkuName,
-                                Standard = s.Standard,
-                                PalletNo = s.PalletNo,
-                                IsBale = detail.IsBale == "0" ? "0" : s.IsBale == "1" ? "0" : "1", //鏄惁瑁瑰寘
-                                IsBelt = detail.IsBelt == "0" ? "0" : s.IsBelt == "1" ? "0" : "1", //鏄惁鎵撳甫
-
-                                Qty = sc.Value,
-                                CompleteQty = 0,
-                                //BoxexQty = s.Qty, //绠卞唴鏁伴噺
-                                Status = "0",
-                                LogisticsId = notice.LogisticsId,
-                                IsAdvance = "0",
-                                OutMode = "",//鍑哄簱鍙�
-
-                                CreateUser = userId,
-                                CreateTime = DateTime.Now
-                            };
-                            exAllotList.Add(allot);
-
-                            s.LockQty += stockQtyDic[s.Id];
-
-                            if (s.LockQty == s.Qty)
-                            {
-                                s.Status = "2";
-                            }
-                            else
-                            {
-                                s.Status = "1";
-                            }
-
-                            var sd = Db.Updateable(s).UpdateColumns(it => new { it.LockQty, it.Status }).ExecuteCommand();
-                            
-                        }
-                        detail.AllotQty += qty;
-                        detail.UpdateUser = userId;
-                        detail.UpdateTime = DateTime.Now;
-                        if (detail.Status == "0")
-                        {
-                            detail.Status = "1";
-                        }
-                        if (qty > detail.Qty)
-                        {
-                            //搴撳瓨鎬昏〃
-                            var stock = Db.Queryable<DataStock>().First(d => d.IsDel == "0" 
-                            && d.SkuNo == detail.SkuNo 
-                            && d.LotNo == detail.LotNo);
-                            stock.LockQty += qty-detail.Qty;
-                            Db.Updateable(stock).ExecuteCommand();
-
-                            //娣诲姞鍥炰紶涓婃父绯荤粺閿佸畾鏁伴噺鏇存敼浠g爜
-                            SoDetailInfo soDetail = new SoDetailInfo();
-                            soDetail.OrderDetailCode = detail.OrderDetailCode;
-                            soDetail.LockQty = qty - detail.Qty;
-                            soDetail.LotNo = detail.LotNo;
-
-                            soDetailList.Add(soDetail);
-                        }
-                       
-                    }
-
-                    var mx = Db.Updateable(detailList).ExecuteCommand();
-                    var fp = Db.Insertable(exAllotList).ExecuteCommand();
-
-                    //淇敼鍒嗛厤鍗曟嵁鐨勭姸鎬�
-                    if (notice.Status == "0" || notice.Status == "1")
-                    {
-                        var bl = 0;
-                        var bl2 = 0;
-                        foreach (var item in detailList)
-                        {
-                            if (item.AllotQty <= 0)
-                            {
-                                continue;
-                            }
-                            if (item.AllotQty < item.Qty)
-                            {
-                                bl = 1;
-                            }
-                            else
-                            {
-                                bl2 = 1;
-                            }
-                        }
-
-                        switch (bl2)
-                        {
-                            case 1 when bl == 1:
-                                notice.Status = "1";//璇佹槑閮ㄥ垎鍒嗛厤鏁伴噺鍏ㄩ儴澶т簬绛変簬鍑哄簱鏁伴噺  淇敼涓哄凡鍒嗛厤
-                                break;
-                            case 0 when bl == 1:
-                                notice.Status = "1";//璇佹槑閮ㄥ垎鍒嗛厤鏁伴噺鍏ㄩ儴澶т簬绛変簬鍑哄簱鏁伴噺  淇敼涓哄凡鍒嗛厤
-                                break;
-                            case 1 when bl == 0:
-                                notice.Status = "2";//璇佹槑鍒嗛厤鏁伴噺鍏ㄩ儴澶т簬绛変簬鍑哄簱鏁伴噺  淇敼涓哄凡鍒嗛厤
-                                break;
-                            case 0 when bl == 0:
-                                //璇佹槑鎵�鏈夊垎閰嶆暟閲忓叏閮ㄥ皬浜庣瓑浜庡嚭搴撴暟閲� 涓嶅仛淇敼
-                                break;
-                        }
-
-                    }
-                    notice.UpdateUser = userId;
-                    notice.UpdateTime = DateTime.Now;
-                    var zd = Db.Updateable(notice).ExecuteCommand();
-
-                    //娣诲姞鎿嶄綔鏃ュ織璁板綍
-                    var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", 
-                        notice.SONo, "鍒嗛厤", $"鑷姩鍒嗛厤浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId);
-
-                    if (zd > 0 && mx > 0 && fp > 0 && k)
-                    {
-                        #region 閫氳繃鎺ュ彛鍙戦�佽嚦erp
-                        //绯荤粺瀵规帴鍚庢斁寮�
-                        /*var jsonData = JsonConvert.SerializeObject(soDetailList);
-
-                        var response = HttpHelper.DoPost(url, jsonData, "搴撳瓨閿佸畾鏁伴噺鍙樻洿", "ERP");
-
-                        var obj = JsonConvert.DeserializeObject<ErpModel>(response);//瑙f瀽杩斿洖鏁版嵁
-                        if (obj.Success != 0)
-                        {
-                            throw new Exception("涓婁紶澶辫触" + obj.Message);
-                        }*/
-                        #endregion
-
-                        Db.CommitTran();
-                        return true;
-                    }
-                    Db.RollbackTran();
-                    return false;
-                }
-                catch (Exception e)
-                {
-                    Db.RollbackTran();
-                    throw new Exception(e.Message);
-                }
-            }
-            catch (Exception e)
-            {
-                throw new Exception("鑷姩鍒嗛厤澶辫触锛�" + e.Message);
-            }
-        }
-
-        //鍙栨秷鍒嗛厤
-        public bool CancelAllot(string soNo, int userId)
-        {
-            try
-            {
-
-                var notice = Db.Queryable<BllExportNotice>().Where(m => m.IsDel == "0" && m.SONo == soNo).ToList().FirstOrDefault();
-                if (notice == null)
-                {
-                    throw new Exception("鏈煡璇㈠埌鍑哄簱鍗曟嵁淇℃伅");
-                }
-                if (notice.Status != "1" && notice.Status != "2")
-                {
-                    throw new Exception("鍙傛暟寮傚父,璇锋鏌ョ姸鎬佹槸鍚︿负宸插垎閰嶆垨閮ㄥ垎鍒嗛厤鎴栨潵婧愭槸鍚︽槸WMS");
-                }
-                //璇ュ崟鎹殑鍒嗛厤淇℃伅 Status 0锛氫换鍔′笅鍙� 1锛氬緟鎷h揣 2锛氶儴鍒嗘嫞璐� 3锛氬緟鍥炲簱 4锛氬凡瀹屾垚
-                var allotList = Db.Queryable<BllExportAllot>().Where(o => o.IsDel == "0" && o.SONo == soNo).ToList();
-                //鏈夊凡鎵ц鐨勫垎閰嶆暟鎹笉鑳藉彇娑�
-                if (allotList.Any(o => o.Status != "0"))
-                {
-                    throw new Exception("褰撳墠鍗曟嵁鐨勫垎閰嶄俊鎭凡鏈夋墽琛屼腑锛屼笉鑳藉彇娑堝垎閰�");
-                }
-                List<SoDetailInfo> soDetailList = new List<SoDetailInfo>();
-                //寮�鍚簨鍔�
-                Db.BeginTran();
-                try
-                {
-                    //鏌ヨ鍒嗛厤鐨勬槑缁�
-                    var detail = Db.Queryable<BllExportNoticeDetail>().Where(d => d.SONo == soNo && d.AllotQty > 0 && d.IsDel == "0").ToList();
-                    foreach (var d in detail)
-                    {
-                        var orders = allotList.Where(o => o.SODetailNo == d.Id).ToList();
-                        foreach (var o in orders)
-                        {
-                            var pq = Db.Queryable<DataStockDetail>().Where(t => t.Id == o.StockId);
-
-                            var pq2 = !string.IsNullOrWhiteSpace(o.LotNo) ? pq.Where(t => t.LotNo == o.LotNo).ToList() : pq.Where(t => string.IsNullOrWhiteSpace(t.LotNo)).ToList();
-
-                            var pallet = pq2.FirstOrDefault();
-                            if (pallet != null)
-                            {
-                                pallet.LockQty -= o.Qty;
-                                pallet.Status = pallet.LockQty == 0 ? "0" : "1"; //濡傛灉閿佸畾鏁伴噺鏄�0鐘舵�佸彉鏇翠负寰呭垎閰� 鍚﹀垯涓洪儴鍒嗗垎閰�
-                                Db.Updateable(pallet).ExecuteCommand();
-
-                                //搴撳瓨鎬昏〃
-                                //var stock = Db.Queryable<DataStock>().First(t => t.SkuNo == pallet.SkuNo && t.IsDel == "0");
-                                //stock.LockQty -= o.Qty;
-                                //Db.Updateable(stock).ExecuteCommand();
-                            }
-
-                        }
-                        Db.Deleteable<BllExportAllot>(orders).ExecuteCommand();
-                        
-                        if (d.AllotQty > d.Qty)
-                        {
-                            //搴撳瓨鎬昏〃
-                            var stock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == d.SkuNo && m.LotNo == d.LotNo);
-                            stock.LockQty -= (decimal)d.AllotQty - d.Qty;
-                            Db.Updateable(stock).ExecuteCommand();
-
-                            //娣诲姞鍥炰紶涓婃父绯荤粺閿佸畾鏁伴噺鏇存敼浠g爜
-                            SoDetailInfo soDetail = new SoDetailInfo();
-                            soDetail.OrderDetailCode = d.OrderDetailCode;
-                            soDetail.LockQty = (decimal)(d.Qty-d.AllotQty);
-                            soDetail.LotNo = d.LotNo;
-
-                            soDetailList.Add(soDetail);
-                        }
-                        d.AllotQty = 0;
-                        d.Status = "0";
-                        d.UpdateUser = userId;
-                        d.UpdateTime = DateTime.Now;
-                        //if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1锛氶鏂欏嚭搴撱��
-                        //{
-                        //    if (d.IsIssueLotNo != "1")
-                        //    {
-                        //        d.LotNo = "";
-                        //    }
-
-                        //}
-                    }
-
-                    //鏌ヨ褰撳墠鍗曟嵁鏄惁宸叉坊鍔犲鏂欎换鍔�
-                    if (notice.Type == "1")
-                    {
-                        var task = Db.Queryable<BllExportTimingTask>().First(m => m.IsDel == "0" && m.SoNo == soNo);
-                        if (task!=null)
-                        {
-                            task.IsDel = "1";
-                            task.UpdateUser = userId;
-                            task.UpdateTime = DateTime.Now;
-                            Db.Updateable(task).ExecuteCommand();
-                        }
-                    }
-                    notice.Status = "0";
-                    notice.UpdateUser = userId;
-                    notice.UpdateTime = DateTime.Now;
-                    Db.Updateable(detail).ExecuteCommand();
-                    Db.Updateable(notice).ExecuteCommand();
-
-                    //绯荤粺瀵规帴鍚庢斁寮�
-                    /*var jsonData = JsonConvert.SerializeObject(soDetailList);
-
-                    var response = HttpHelper.DoPost(url, jsonData, "搴撳瓨閿佸畾鏁伴噺鍙樻洿", "ERP");
-
-                    var obj = JsonConvert.DeserializeObject<ErpModel>(response);//瑙f瀽杩斿洖鏁版嵁
-                    if (obj.Success != 0)
-                    {
-                        throw new Exception("涓婁紶澶辫触" + obj.Message);
-                    }*/
-
-                    //娣诲姞鎿嶄綔鏃ュ織璁板綍
-                    var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "鍙栨秷鍒嗛厤", $"鍙栨秷鍒嗛厤浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId);
-                    Db.CommitTran();
-                }
-                catch (Exception e)
-                {
-                    Db.RollbackTran();
-                    throw new Exception(e.Message);
-                }
-                return true;
-            }
-            catch (Exception e)
-            {
-                throw new Exception("鍙栨秷鍒嗛厤澶辫触" + e.Message);
-            }
-        }
-
-        /// <summary>
-        /// 缁存姢鍑哄簱鍗曞娉ㄤ俊鎭�
-        /// </summary>
-        /// <param name="id"></param>
-        /// <param name="demo"></param>
-        /// <param name="userId"></param>
-        public void EditNoticeDemo(int id, string demo, int userId)
-        {
-            try
-            {
-                var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.Id == id);
-                if (notice == null)
-                {
-                    throw new Exception("鏈煡璇㈠埌鍑哄簱鍗曟嵁淇℃伅");
-                }
-                notice.Demo = demo + "".Trim();
-                notice.UpdateUser = userId;
-                notice.UpdateTime = DateTime.Now;
-
-                int i = Db.Updateable(notice).ExecuteCommand();
-                if (i > 0)
-                {
-                    //娣诲姞鎿嶄綔鏃ュ織
-                    new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "缂栬緫", $"缂栬緫浜嗗崟鎹彿涓簕notice.SONo}鐨勫娉ㄤ俊鎭�", userId);
-                }
-            }
-            catch (Exception ex)
-            {
-                throw new Exception(ex.Message);
-            }
-        }
-
-        //鑾峰彇搴撳瓨鏄庣粏淇℃伅锛堝嚭搴撳崟鎵嬪姩鍒嗛厤閫夋嫨鏁版嵁婧愶級
-        public List<StockDetailDto> GetHandOutList(int detailId, string houseNo, string roadwayNo, string locateNo, string msg, string palletNo)
-        {
-            try
-            {
-                var detail = Db.Queryable<BllExportNoticeDetail>().First(d => d.Id == detailId);
-
-                #region 鍒ゆ柇鏉′欢
-
-                if (detail == null)
-                {
-                    throw new Exception("鑾峰彇澶辫触锛屾湭鎵惧埌鎸囧畾鍑哄簱鍗曪紒");
-                }
-                if (detail.Status != "0" && detail.Status != "1" && detail.AllotQty >= detail.Qty)
-                {
-                    throw new Exception("鑾峰彇澶辫触锛屽嚭搴撳崟鐘舵�佷笉鏄瓑寰呮墽琛屾垨鍒嗛厤涓紒");
-                }
-                if (detail.AllotQty >= detail.Qty)
-                {
-                    throw new Exception("鑾峰彇澶辫触锛屽嚭搴撳崟宸插垎閰嶅畬鎴�!");
-                }
-                var notice = Db.Queryable<BllExportNotice>().First(a => a.SONo == detail.SONo);
-                if (notice == null)
-                {
-                    throw new Exception("鑾峰彇澶辫触锛屾湭鎵惧埌鎸囧畾鍑哄簱鍗�!");
-                }
-                if (notice.Status == "3" && detail.AllotQty >= detail.Qty || notice.Status == "4" || notice.Status == "5")
-                {
-                    throw new Exception("鑾峰彇澶辫触锛屽嚭搴撳崟鐘舵�佷笉鍏佽!");
-                }
-                #endregion
-
-                Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>()
-                    .AndIF(!string.IsNullOrWhiteSpace(houseNo), m => m.WareHouseNo == houseNo)
-                    .AndIF(!string.IsNullOrWhiteSpace(roadwayNo), m => m.RoadwayNo == roadwayNo)
-                    .AndIF(!string.IsNullOrWhiteSpace(locateNo), m => m.LocatNo == locateNo)
-                    .AndIF(!string.IsNullOrWhiteSpace(palletNo), m => m.PalletNo == palletNo)
-                    .AndIF(!string.IsNullOrWhiteSpace(msg),
-                        m => m.SkuNo.Contains(msg.Trim())
-                             || m.SkuName.Contains(msg.Trim())
-                             || m.LocatNo.Contains(msg.Trim()))
-                    .And(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo && m.LotNo == detail.LotNo && (m.Status == "0" || m.Status == "1"))
-                    .ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏�
-
-                var list = Db.Queryable<DataStockDetail>().Where(item).Select(a => new StockDetailDto
-                {
-                    Id = a.Id,
-                    SkuNo = a.SkuNo,
-                    SkuName = a.SkuName,
-                    Standard = a.Standard,
-                    LotNo = a.LotNo,
-                    LotText = a.LotText,
-                    SupplierLot = a.SupplierLot,
-                    Qty = a.Qty - a.LockQty - a.FrozenQty,
-                    LocatNo = a.LocatNo,
-                    RoadwayNo = a.RoadwayNo,
-                    PalletNo = a.PalletNo,
-                    Demo = a.Demo,
-                }).ToList();
-
-                return list;
-            }
-            catch (Exception e)
-            {
-                throw new Exception(e.Message);
-            }
-        }
-
-        //鎵嬪姩鍒嗛厤鍑哄簱鍗曟槑缁�
-        public void AddHandOutAllot(AddHandOutVm model, int userId)
-        {
-            try
-            {
-                #region 鍒ゆ柇鏉′欢
-                //鏁版嵁楠岃瘉
-                var detail = Db.Queryable<BllExportNoticeDetail>().First(a => a.IsDel == "0" && a.Id == model.Id);
-                if (detail == null)
-                {
-                    throw new Exception("鎿嶄綔澶辫触锛屾湭鎵惧埌鎸囧畾鍑哄簱鍗曡鎯咃紒");
-                }
-                if (detail.AllotQty >= detail.Qty || (detail.Status != "0" && detail.Status != "1"))
-                {
-                    throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撳崟宸插垎閰嶅畬鎴愶紒");
-                }
-                var notice = Db.Queryable<BllExportNotice>().First(a => a.IsDel == "0" && a.SONo == detail.SONo);
-                if (notice == null)
-                {
-                    throw new Exception("鎿嶄綔澶辫触锛屾湭鎵惧埌鎸囧畾鍑哄簱鍗曪紒");
-                }
-                if (notice.Status == "3" && detail.AllotQty >= detail.Qty || notice.Status == "4" || notice.Status == "5")
-                {
-                    throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撳崟宸插垎閰嶅畬鎴愶紒");
-                }
-                #endregion
-
-                //鍗曟嵁鏄庣粏闇�瑕佺殑鍑哄簱鏁伴噺
-                var needQty = detail.Qty - detail.AllotQty;
-                //鍒嗛厤鐨勫嚭搴撴暟閲�
-                var outQty = model.StockList.Select(s => s.Qty).ToList().Sum();
-                if (outQty != needQty)
-                {
-                    throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撴暟閲忎笌璁″垝鏁伴噺涓嶄竴鑷达紒");
-                }
-                var stockIds = model.StockList.Select(a => a.StockId).ToList();
-                //搴撳瓨鏄庣粏
-                var stockList = Db.Queryable<DataStockDetail>().Where(a => stockIds.Contains(a.Id)).ToList();
-
-                //鍒嗛厤淇℃伅
-                var allots = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SODetailNo == detail.Id && m.Status == "0").ToList();
-
-                //搴撳瓨鎬昏〃
-                //var stockz = Db.Queryable<DataStock>().First(d => d.IsDel == "0" && d.SkuNo == detail.SkuNo && d.LotNo == detail.LotNo);
-
-                var allotList = new List<BllExportAllot>();
-                decimal outQtys = 0;
-                foreach (var st in model.StockList)
-                {
-                    var stock = stockList.First(a => a.Id == st.StockId);
-                    if (stock == null)
-                    {
-                        throw new Exception("鎿嶄綔澶辫触锛岄儴鍒嗗偍浣嶅簱瀛樺紓甯革紒");
-                    }
-                    if (st.Qty > (stock.Qty - stock.LockQty - stock.FrozenQty))     // 杈撳叆鐨勬暟閲� -  鎵樼洏涓婂彲鐢ㄧ殑鏁伴噺锛堟墭鐩樹笂鏁伴噺-閿佸畾鐨勬暟閲�-鍐荤粨鐨勬暟閲忥級
-                    {
-                        throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撴暟閲忚秴鍑哄簱瀛樻暟閲忥紒");
-                    }
-
-                    var bl = allots.FirstOrDefault(m => m.StockId == st.StockId);
-                    if (bl == null)
-                    {
-                        //娣诲姞鍒嗛厤琛ㄤ俊鎭�
-                        var allot = new BllExportAllot
-                        {
-                            SONo = notice.SONo,
-                            WaveNo = "",
-                            SODetailNo = detail.Id,
-                            StockId = st.StockId,
-                            LotNo = stock.LotNo,
-                            LotText = stock.LotText,
-                            SupplierLot = stock.SupplierLot,
-                            SkuNo = stock.SkuNo,
-                            SkuName = stock.SkuName,
-                            Standard = stock.Standard,
-                            PalletNo = stock.PalletNo,
-                            IsBale = stock.IsBale,
-                            IsBelt = stock.IsBelt,
-                            Qty = st.Qty,
-                            CompleteQty = 0,
-                            Status = "0",
-                            LogisticsId = notice.LogisticsId,
-                            IsAdvance = "0",
-                            OutMode = "",//鍑哄簱鍙�
-
-                            CreateUser = userId,
-                            CreateTime = DateTime.Now
-                        };
-                        allotList.Add(allot);
-                    }
-                    else
-                    {
-                        bl.Qty += st.Qty;
-                        Db.Updateable(bl).ExecuteCommand();
-                    }
-                    
-                    //搴撳瓨鏄庣粏
-                    stock.LockQty += st.Qty;
-                    stock.Status = stock.LockQty == stock.Qty ? "2" : "1";
-
-                    //搴撳瓨鎬昏〃
-                    //stockz.LockQty += st.Qty;
-                    //Db.Updateable(stockz).ExecuteCommand();
-
-
-                    Db.Updateable(stock).UpdateColumns(it => new { it.LockQty, it.Status }).ExecuteCommand();
-                    outQtys += st.Qty;
-                }
-                Db.Insertable(allotList).ExecuteCommand();
-                //淇敼鍗曟嵁鏄庣粏
-                detail.AllotQty += outQtys;
-                detail.UpdateUser = userId;
-                detail.UpdateTime = DateTime.Now;
-                if (detail.Status == "0")
-                {
-                    detail.Status = "1";
-                }
-
-                Db.Updateable(detail).ExecuteCommand();
-                var detailList = Db.Queryable<BllExportNoticeDetail>()
-                    .Where(m => m.IsDel == "0" && m.SONo == notice.SONo).ToList();
-                //淇敼鍑哄簱鍗曠姸鎬� 
-                if (notice.Status == "0" || notice.Status == "1")
-                {
-                    decimal totalQty = 0;
-                    decimal totalAllotQty = 0;
-                    foreach (var item in detailList)
-                    {
-                        totalQty += item.Qty;
-                        totalAllotQty += Convert.ToInt32(item.AllotQty);
-                    }
-
-                    if (totalAllotQty >= totalQty)
-                    {
-                        notice.Status = "2";//璇佹槑鍒嗛厤鏁伴噺澶т簬绛変簬鍑哄簱鏁伴噺  淇敼涓哄凡鍒嗛厤
-                    }
-                    else if (totalAllotQty < totalQty && totalAllotQty > 0)
-                    {
-                        notice.Status = "1";//璇佹槑鍒嗛厤鏁伴噺灏忎簬绛変簬鍑哄簱鏁伴噺  淇敼涓洪儴鍒嗗垎閰�
-                    }
-                    Db.Updateable(notice).ExecuteCommand();
-                }
-                //娣诲姞鎿嶄綔鏃ュ織璁板綍
-                var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "鍒嗛厤", $"鎵嬪姩鍒嗛厤浜嗗崟鎹彿涓簕notice.SONo}銆佺墿鏂欙細{detail.SkuNo}銆佹壒娆★細{detail.LotNo}鐨勫崟鎹俊鎭�", userId);
-
-                Db.CommitTran();
-
-            }
-            catch (Exception e)
-            {
-                Db.RollbackTran();
-                throw new Exception(e.Message);
-            }
-        }
-
-        #endregion
+        
 
         /// <summary>
         /// 鍒ゆ柇鍑哄簱鏄惁闇�瑕佹媶绠�
diff --git a/Wms/WMS.BLL/BllSoServer/WaveMageServer.cs b/Wms/WMS.BLL/BllSoServer/WaveMageServer.cs
index 393fd6d..60f2d6e 100644
--- a/Wms/WMS.BLL/BllSoServer/WaveMageServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/WaveMageServer.cs
@@ -480,7 +480,12 @@
                         Dictionary<string, int> zxQtyDic = new Dictionary<string, int>();//鎵樺嚭鏁寸鏁�
                         //鍒嗛厤璐х墿
                         //assign.AllocatePallets(stocks, pNum, bNum, needQty, stockQtyDic, zxQtyDic);
-                        var qty = assign.AllotPallets(stockDetail, decimal.Parse(needQty.ToString()), pNum, bNum, stockQtyDic, detail.LotNo, detail.IsMixBox);
+                        var house = "";
+                        if (notice.Type == "0")
+                        {
+                            house = "W01";
+                        }
+                        var qty = assign.AllotPallets(stockDetail, decimal.Parse(needQty.ToString()), pNum, bNum, stockQtyDic,"");
                        
                         foreach (var sc in stockQtyDic)
                         {
diff --git a/Wms/WMS.BLL/Logic/AllotSku.cs b/Wms/WMS.BLL/Logic/AllotSku.cs
index 03ae06d..4a44dff 100644
--- a/Wms/WMS.BLL/Logic/AllotSku.cs
+++ b/Wms/WMS.BLL/Logic/AllotSku.cs
@@ -23,7 +23,7 @@
         /// <param name="lotNo">鎵规</param>
         /// <param name="isMixBox">鏄惁鎺ュ彈鎷肩 0锛氬惁  1锛氭槸</param>
         /// <returns></returns>
-        public decimal AllotPallets(List<DataStockDetail> palletList, decimal needQty, int fullPalletQty, int fullBoxQty, Dictionary<int, decimal> stockQtyDic,string lotNo,string isMixBox)
+        public decimal AllotPallets(List<DataStockDetail> palletList, decimal needQty, int fullPalletQty, int fullBoxQty, Dictionary<int, decimal> stockQtyDic,string house)
         {
             //浼樺厛鍏堣繘鍏堝嚭锛堝揩杩囨湡鐨勫厛鍑猴級
             //浼樺厛闆剁銆侀浂鎵橈紙鍑哄畬闆剁鍑烘暣绠憋級
@@ -55,8 +55,13 @@
                     }
                 }
                 #endregion
+                var list = palletList;
                 decimal qty = 0; //鍒嗛厤鐨勬�绘暟閲�
-                var list = GetDataListOrderByDept(palletList);
+
+                if (house == "W01") //浠撳簱鏄瘑闆嗗簱鍏堣繘琛屾帓搴�
+                {
+                    list = GetDataListOrder(palletList);
+                }
 
                 if (fullPalletQty == 0)//鏃犲寘瑁呯墿鏂欏垎閰�
                 {
@@ -96,14 +101,7 @@
                                                                                                                           //鏁f墭
                         foreach (var s in st)
                         {
-                            decimal otherLotQty = 0;//娣风涓叾浠栨壒娆℃暟閲�
-                            //涓嶆帴鍙楁嫾绠�
-                            if (isMixBox == "0")
-                            {
-                                //鏌ユ壘鍑烘贩绠遍泦鍚�
-                                otherLotQty = GetMixBoxQty(s.Id, lotNo);
-                            }
-                            var detailQty = decimal.Parse((s.Qty - s.LockQty - s.FrozenQty - otherLotQty).ToString());
+                            var detailQty = decimal.Parse((s.Qty - s.LockQty - s.FrozenQty).ToString());
                             if (needQty - qty < detailQty)
                             {
                                 var num = needQty - qty;
@@ -126,14 +124,7 @@
                             var zt = zps.OrderBy(s => s.ExpirationTime).ToList();//鎵�鏈夋湭浣跨敤鐨勬墭鐩橈紙鏈鍒嗛厤鐨勶級
                             foreach (var ss in zt)
                             {
-                                decimal otherLotQty = 0;//娣风涓叾浠栨壒娆℃暟閲�
-                                //涓嶆帴鍙楁嫾绠�
-                                if (isMixBox == "0")
-                                {
-                                    //鏌ユ壘鍑烘贩绠遍泦鍚�
-                                    otherLotQty = GetMixBoxQty(ss.Id, lotNo);
-                                }
-                                var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty - otherLotQty).ToString());
+                                var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString());
                                 if (needQty - qty < detailQty)
                                 {
                                     var num = needQty - qty;
@@ -164,14 +155,7 @@
                             var zt = zps.OrderBy(s => s.ExpirationTime).ToList();//鎵�鏈夋湭浣跨敤鐨勬墭鐩橈紙鏈鍒嗛厤鐨勶級
                             foreach (var ss in zt)
                             {
-                                decimal otherLotQty = 0;//娣风涓叾浠栨壒娆℃暟閲�
-                                //涓嶆帴鍙楁嫾绠�
-                                if (isMixBox == "0")
-                                {
-                                    //鏌ユ壘鍑烘贩绠遍泦鍚�
-                                    otherLotQty = GetMixBoxQty(ss.Id, lotNo);
-                                }
-                                var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty - otherLotQty).ToString());
+                                var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString());
                                 if (needQty - qty < detailQty)
                                 {
                                     break;
@@ -192,14 +176,7 @@
 
                             foreach (var ss in zt)
                             {
-                                decimal otherLotQty = 0;//娣风涓叾浠栨壒娆℃暟閲�
-                                //涓嶆帴鍙楁嫾绠�
-                                if (isMixBox == "0")
-                                {
-                                    //鏌ユ壘鍑烘贩绠遍泦鍚�
-                                    otherLotQty = GetMixBoxQty(ss.Id, lotNo);
-                                }
-                                var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty - otherLotQty).ToString());
+                                var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString());
                                 if (needQty - qty < detailQty)
                                 {
                                     var num = needQty - qty;
@@ -222,14 +199,7 @@
                             var zt = zps.Where(s => !sIds.Contains(s.Id)).OrderBy(s => s.ExpirationTime).ThenBy(m => m.Qty - m.LockQty - m.FrozenQty).ToList();//鎵�鏈夋湭浣跨敤锛堟湭琚垎閰嶇殑锛�
                             foreach (var ss in zt)
                             {
-                                decimal otherLotQty = 0;//娣风涓叾浠栨壒娆℃暟閲�
-                                //涓嶆帴鍙楁嫾绠�
-                                if (isMixBox == "0")
-                                {
-                                    //鏌ユ壘鍑烘贩绠遍泦鍚�
-                                    otherLotQty = GetMixBoxQty(ss.Id, lotNo);
-                                }
-                                var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty - otherLotQty).ToString());
+                                var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString());
                                 if (needQty - qty < detailQty)
                                 {
                                     var num = needQty - qty;
@@ -261,6 +231,63 @@
             }
 
         }
+
+        /// <summary>
+        /// 鏍规嵁鍌ㄤ綅娣卞害鑾峰彇鍒嗛厤鐨勪紭鍏堢骇鍒俊鎭�(瀵嗛泦搴�)
+        /// </summary>
+        /// <param name="palletList"></param>
+        /// <returns></returns>
+        private List<DataStockDetail> GetDataListOrder(List<DataStockDetail> palletList)
+        {
+            try
+            {
+                var Db = DataContext.Db;
+                var data = new List<DataStockDetail>();
+                var locateList = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.WareHouseNo == "W01").ToList(); 
+                var list = palletList;
+                //搴撳鎵樼洏
+                var detail1 = list.Where(m => string.IsNullOrWhiteSpace(m.LocatNo)).OrderByDescending(a => a.PalletTags).ToList();
+                // 搴撳
+                data.AddRange(detail1);             
+                //瀵嗛泦搴撳唴鎵樼洏
+                var detail2 = list.Where(m => m.WareHouseNo == "W01").ToList();
+
+                var detail3 = list.GroupBy(m=>m.RoadwayNo).OrderBy(m=>m.Key).ToList();
+
+                foreach (var item in detail3)
+                {
+                    var locates = locateList.Where(m => m.RoadwayNo == item.Key).FirstOrDefault();
+                    if (locates == null)
+                    {
+                        throw new Exception("鏈煡璇㈠埌宸烽亾鍐呯殑鍌ㄤ綅淇℃伅");
+                    }
+                    //濡傛灉缁撴灉涓�0锛屽垯璇存槑涓や釜瀛楃涓茬浉绛夛紱  ABC  BCE
+                    //濡傛灉缁撴灉灏忎簬0锛屽垯璇存槑绗竴涓瓧绗︿覆灏忎簬绗簩涓瓧绗︿覆锛�
+                    //濡傛灉缁撴灉澶т簬0锛屽垯璇存槑绗竴涓瓧绗︿覆澶т簬绗簩涓瓧绗︿覆銆�
+                    var bol = String.CompareOrdinal(locates.LocatNo, locates.AisleOne);
+
+                    //鍌ㄤ綅灏忎簬閫氶亾鍙�   鍊掑簭
+                    //鍌ㄤ綅澶т簬閫氶亾鍙�   姝e簭
+                    if (bol < 0)
+                    {
+                        //var s = item.OrderByDescending(m => m.LocatNo).ToList();
+                        data.AddRange(item.OrderByDescending(m => m.LocatNo));
+                    }
+                    if (bol > 0)
+                    {
+                        data.AddRange(item.OrderBy(m => m.LocatNo));
+                    }
+
+                }
+                
+                return data;
+            }
+            catch (Exception e)
+            {
+                throw new Exception(e.Message);
+            }
+        }
+
         /// <summary>
         /// 鏌ユ壘鍑烘贩绠变腑鍏朵粬鎵规鎬绘暟閲�
         /// </summary>
diff --git a/Wms/WMS.Entity/BllSoEntity/BLLExportNotice.cs b/Wms/WMS.Entity/BllSoEntity/BLLExportNotice.cs
index a62535a..9cb9591 100644
--- a/Wms/WMS.Entity/BllSoEntity/BLLExportNotice.cs
+++ b/Wms/WMS.Entity/BllSoEntity/BLLExportNotice.cs
@@ -22,7 +22,7 @@
 
         /// <summary>
         /// Desc:鍗曟嵁绫诲瀷
-        /// Default:
+        /// Default: 0:鎴愬搧鍑哄簱銆�1:棰嗘枡鍑哄簱銆�2:鎶芥鍑哄簱銆�3锛氱墿鏂欏彇鏍峰嚭搴撱��4:涓嶅悎鏍煎搧鍑哄簱銆�5:涓棿鍝佸嚭搴撱��6:浠e偍鍑哄簱銆�7:鍏朵粬鍑哄簱銆�8:瀵勫瓨鍑哄簱銆�9鐢熶骇棰嗘枡鍑哄簱
         /// Nullable:True
         /// </summary>           
         public string Type {get;set;}
@@ -33,6 +33,13 @@
         /// Nullable:True
         /// </summary>           
         public string Status {get;set;}
+        
+        /// <summary>
+        /// Desc:鍑哄簱浠撳簱鍙�
+        /// Default:
+        /// Nullable:True
+        /// </summary>   
+        public string WareHouseNo { get; set; }
 
         /// <summary>
         /// Desc:鏉ユ簮
diff --git a/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs b/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs
index c5939bc..c5ea03f 100644
--- a/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs
+++ b/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs
@@ -57,7 +57,7 @@
         /// <param name="type">绫诲瀷</param>
         /// <param name="msg">鐗╂祦缂栫爜銆佸悕绉般�佹壒娆�</param>
         /// <returns></returns>
-        List<ExStockInfoDto> GetStockGroupList( string type, string ownerNo, string msg);
+        List<ExStockInfoDto> GetStockGroupList(string house, string type, string ownerNo, string msg);
         /// <summary>
         /// 娣诲姞鍑哄簱鍗�
         /// </summary>
diff --git a/Wms/Wms/Controllers/BllSoController.cs b/Wms/Wms/Controllers/BllSoController.cs
index 73a6d6d..0750860 100644
--- a/Wms/Wms/Controllers/BllSoController.cs
+++ b/Wms/Wms/Controllers/BllSoController.cs
@@ -76,7 +76,7 @@
         {
             try
             {
-                var bolls = _exNoticeSvc.GetStockGroupList(model.Type,model.OwnerNo,model.Msg);
+                var bolls = _exNoticeSvc.GetStockGroupList(model.WareHouseNo,model.Type,model.OwnerNo,model.Msg);
 
                 return Ok(new { code = 0, count=0, msg = "鍑哄簱鍗曚俊鎭�", data = bolls });
             }

--
Gitblit v1.8.0