From 16865166b741233bad83756ab30899440ecc0dd3 Mon Sep 17 00:00:00 2001
From: chengsc <11752@DESKTOP-DS49RCP>
Date: 星期六, 19 四月 2025 08:15:30 +0800
Subject: [PATCH] 修改问题

---
 Wms/WMS.Entity/DataEntity/DataStockDetail.cs     |    6 
 Wms/Wms/Controllers/PdaCrController.cs           |   45 +
 Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs  |    4 
 Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs |    9 
 Pda/View/SoSetting/pinTuoOut.html                |    6 
 HTML/views/StatisticalReport/BoxInfor.html       |   17 
 Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs   |  147 ++--
 Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs         |   94 --
 Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs          |   15 
 Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs    |  669 ++++++++++++------------
 Wms/WMS.Entity/LogEntity/LogTask.cs              |    2 
 Wms/Model/ModelVm/PdaVm/PdaCrVm.cs               |    6 
 Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs          |   95 ++-
 HTML/views/HouseWithinSetting/CRLogTask.html     |    3 
 Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs          |  179 +++++-
 HTML/views/ASNSetting/LabelPrint.html            |    6 
 HTML/views/SOSetting/ExportNotice.html           |   64 +
 Wms/WMS.Entity/DataEntity/DataBoxInfo.cs         |    4 
 Pda/View/HouseDataSetting/ConfirmReceipt.html    |  177 ++++++
 Wms/Wms/Controllers/DownApiController.cs         |   29 +
 20 files changed, 1,003 insertions(+), 574 deletions(-)

diff --git a/HTML/views/ASNSetting/LabelPrint.html b/HTML/views/ASNSetting/LabelPrint.html
index b1a4656..7492276 100644
--- a/HTML/views/ASNSetting/LabelPrint.html
+++ b/HTML/views/ASNSetting/LabelPrint.html
@@ -70,9 +70,9 @@
                     </tr>
                     <tr>
                         <td>鐗╂枡浠g爜</td>
-                        <td id="SkuNo"></td>
-                        <td>鏁�   閲�</td>
-                        <td id="qty"></td> 
+                        <td colspan="3" id="SkuNo"></td>
+                        <!-- <td>鏁�   閲�</td>
+                        <td id="qty"></td>  -->
                     </tr>
                     <tr>
                         <td>鏈夋晥鏈熻嚦</td>
diff --git a/HTML/views/HouseWithinSetting/CRLogTask.html b/HTML/views/HouseWithinSetting/CRLogTask.html
index 9fd6296..00fa7f6 100644
--- a/HTML/views/HouseWithinSetting/CRLogTask.html
+++ b/HTML/views/HouseWithinSetting/CRLogTask.html
@@ -50,6 +50,7 @@
 								<option value="2">鎵ц瀹屾垚</option>
 								<option value="3">寮傚父缁撴潫</option>
 								<option value="4">宸插彇娑�</option>
+								<option value="5">绛夊緟纭</option>
 							</select>
 						</div>
 					</div>
@@ -203,6 +204,8 @@
 							html = `<button class="layui-btn layui-btn-radius layui-btn-warm layui-btn-xs">寮傚父缁撴潫</button>`; 
 						} else if(d.Status=='4') { 
 							html = `<button class="layui-btn layui-btn-radius layui-btn-warm layui-btn-xs">宸插彇娑�</button>`; 
+						} else if(d.Status=='5') { 
+							html = `<button class="layui-btn layui-btn-radius layui-btn-warm layui-btn-xs">绛夊緟纭</button>`; 
 						} else {
 							
 						}
diff --git a/HTML/views/SOSetting/ExportNotice.html b/HTML/views/SOSetting/ExportNotice.html
index 88b2f83..b301111 100644
--- a/HTML/views/SOSetting/ExportNotice.html
+++ b/HTML/views/SOSetting/ExportNotice.html
@@ -1272,8 +1272,12 @@
 						area: ['1200px', '90%'],
 					});
 				} else if (obj.event === 'outKu') {
-					$("#PickingArea").val('');
-					outFunction(data.SONo);
+					
+					//if(data.WareHouseName =="鎴愬搧搴�"){
+						outFunction(data.SONo);
+					// }else{
+					// 	outFunction2(data.SONo)
+					// }
 
 				} else if (obj.event === 'beiLiaoOutKu') {
 					if (orderType != "1") {
@@ -1395,20 +1399,11 @@
 					area: ['350px', '285px'],
 					btn: ['纭畾', '鍙栨秷'],
 					yes: function (index, layero) {
-						var pa = $('#PickingArea').val();
-						console.log(pa)
+						
 						if (isChongFu == true) {
 							isChongFu = false;
-							if (pa == null) {
-								layer.msg("璇峰嬁閲嶅鐐瑰嚮", {
-									icon: 2,
-									time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
-								});
-								return;
-							}
 							
-							console.log($("#PickingArea").val())
-							if ($("#PickingArea").val() == '') {
+							if ($("#PickingArea").val() == '' || $('#PickingArea').val() == null) {
 								layer.msg("璇烽�夋嫨鍑哄簱鍙�", {
 									icon: 2,
 									time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
@@ -1419,7 +1414,7 @@
 							var param = {
 								soNo: soNo,
 								//unstackingMode: $('#UnstackWay').val(),
-								outMode: pa,
+								outMode: $("#PickingArea").val(),
 								//loadingAddre: $('#LoadingArea').val()
 							};
 							console.log(param);
@@ -1454,6 +1449,47 @@
 					}
 				});
 			}
+			
+			//涓嶉�夋嫨鍑哄簱鍙g殑寮圭獥鏂规硶
+			function outFunction2(soNo) {
+				layer.confirm('纭畾褰撳墠鍗曟嵁鍑哄簱鍚楋紵', function (index) {
+					
+					if (isChongFu == true) {
+						isChongFu = false;
+						
+						var param = {
+							soNo: soNo,
+						};
+						console.log(param);
+						sendData(IP + "/DownApi/IssueOutHouse", param, 'get', function (res) {
+							console.log(res);
+							if (res.code == 0) { //鎴愬姛
+								layer.msg(res.msg, {
+									icon: 1,
+									time: 3000 //1绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+								}, function () {
+									refreshTable();
+									isChongFu = true;
+								});
+							} else { //涓嶆垚鍔�
+								layer.msg(res.msg, {
+									icon: 2,
+									time: 3000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+								}, function () {
+									refreshTable();
+									isChongFu = true;
+								});
+							}
+							layer.close(index);
+						});
+					} else {
+						layer.msg("璇峰嬁閲嶅鐐瑰嚮", {
+							icon: 2,
+							time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+						});
+					}
+				});
+			}
 
 			//閫夋嫨鍑哄簱鍙e脊绐楁柟娉�
 			function beiLiaoOutFunction(soNo) {
diff --git a/HTML/views/StatisticalReport/BoxInfor.html b/HTML/views/StatisticalReport/BoxInfor.html
index 24a9b54..dcefb00 100644
--- a/HTML/views/StatisticalReport/BoxInfor.html
+++ b/HTML/views/StatisticalReport/BoxInfor.html
@@ -225,7 +225,21 @@
 					</div>
 
 				</div>
-
+				<script type="text/html" id="buttonTpl">
+					{{#  if(d.Status=='0'){ }}
+					  <button class="layui-btn layui-btn-radius layui-btn-danger layui-btn-xs">寰呭垎閰�</button>
+					{{#  } else if(d.Status == '1') { }}
+					  <button class="layui-btn layui-btn-radius layui-btn-xs">閮ㄥ垎鍒嗛厤</button>
+					{{#  } else if(d.Status == '2') { }}
+						<button class="layui-btn layui-btn-radius layui-btn-xs">宸插垎閰�</button>
+					{{#  } else if(d.Status == '3') { }}
+					   <button class="layui-btn layui-btn-radius layui-btn-xs">鐩樼偣閿佸畾</button>
+					{{#  } else if(d.Status == '4') { }}
+						<button class="layui-btn layui-btn-radius layui-btn-xs">绉诲簱閿佸畾</button>
+					{{#  } else if(d.Status == '5') { }}
+						<button class="layui-btn layui-btn-radius layui-btn-xs layui-btn-danger">寮傚父閿佸畾</button>
+					{{#  } }}
+				  </script>
 				<script type="text/html" id="BoxStatus">
                         {{#  if(d.Status=='0'){ }}
                             <p>鏈粍鎵�</p>
@@ -363,6 +377,7 @@
 				{ field: 'LockQty', title: '閿佸畾鏁伴噺', align: 'center',width: 90, },
 				{ field: 'FrozenQty', title: '鍐荤粨鏁伴噺', align: 'center',width: 90, },
 				
+				{ field: 'Status', title: '搴撳瓨鐘舵��', align: 'center', templet: '#buttonTpl', 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,},
diff --git a/Pda/View/HouseDataSetting/ConfirmReceipt.html b/Pda/View/HouseDataSetting/ConfirmReceipt.html
new file mode 100644
index 0000000..d62155e
--- /dev/null
+++ b/Pda/View/HouseDataSetting/ConfirmReceipt.html
@@ -0,0 +1,177 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="UTF-8" />
+		<meta name="viewport" content="user-scalable=0,width=device-width,initial-scale=1.0" />
+		<!-- <meta name="viewport" content="width=device-width, initial-scale=0.665, minimum-scale=0.5, maximum-scale=2.0, user-scalable=no" /> -->
+		<meta http-equiv="X-UA-Compatible" content="ie=edge" />
+		<title>Boxline PDA</title>
+
+		<link rel="stylesheet" href="/layui/css/layui.css" />
+		<link rel="stylesheet" href="/css/style.css" />
+		<script src="/js/adaptive.js"></script>
+		<link rel="stylesheet" href="/css/my.css" />
+		<link rel="stylesheet" href="/css/adapter.css" />
+		<style type="text/css">
+			.layout-bill-info {
+				height: 255px;
+			}
+			.layout-tbl-submit {
+				margin-top: 10px;
+			}
+		</style>
+	</head>
+	<body>
+		<div id="" class="main-content">
+			<div id="" class="layout-title">
+				<table border="" cellspacing="" cellpadding="">
+					<tr>
+						<td class="img-back"><a href="../index.html"><img src="/assets/back.jpg" ></a></td>
+						<td class="title-text">杞﹂棿鏀惰揣</td>
+						<td class="title-menu-icon"><img id="menuImg" src="/assets/menu.jpg" ></td>
+					</tr>
+				</table>
+			</div>
+			<div id="" class="layout-sub-content">
+				<div id="menuList" class="menu">
+					<ul class="" style="text-align: center;">
+						<li><a href="../index.html">涓婚〉</a></li>
+						<!-- <li><a href="productEnterConfirm.html">鍏ュ簱淇℃伅纭</a></li> -->
+						<li><a href="../login.html">閲嶆柊鐧诲綍</a></li>
+					</ul>
+				</div>
+				
+				<div id="" class="layout-bill-info">
+					<form class="layui-form" action="">
+                        <div id="layout-pallet" class="layui-form-item layout-input">
+                            <label class="layui-form-label" lang>鎵樼洏鏉$爜锛�</label>
+                            <div class="layui-input-block">
+                                <input id="palletNo" type="text" lay-verify="required" lang langholder
+                                    placeholder="璇锋壂鎻忔墭鐩樻潯鐮�" autocomplete="off" class="layui-input">
+                            </div>
+                        </div>
+                        <div id="layout-soNo" class="layui-form-item layout-input">
+							<label class="layui-form-label">鍑哄簱鍗曪細</label>
+							<div class="layui-input-block">
+                                <input id="SoNo" type="text" disabled lang langholder
+                                placeholder="" autocomplete="off" class="layui-input">
+							</div>
+						</div>
+						<table class="layout-tbl-submit" border="" cellspacing="" cellpadding="">
+                            <tr>
+                                <td style="width: 23%;"></td>
+                                <td>
+                                    <button class="layout-btn layout-btn-red" lang type="button" lay-submit
+                                        lay-filter="formUnbind">鏀惰揣</button>
+                                </td>
+                                <td style="width: 33%;"></td>
+                            </tr>
+                        </table>
+					</form>
+				</div>
+			</div>
+		</div>
+		
+		
+		<script src="/js/jquery-3.5.1.min.js"></script>
+		<script src="/layui/layui.js"></script>
+		<script src="/js/public.js"></script>
+		<script src="/js/jquery.cookie.js"></script>
+		<script>
+			layui.use(['form', 'jquery'], function() {
+				var form = layui.form
+				
+							
+				//褰撴墭鐩樻潯鐮佽緭鍏ユ鏂囨湰鏀瑰彉鏃�,妫�鏌ヤ竴涓嬫墭鐩樼姸鎬� 
+                $("#palletNo").on('input', function () {
+
+                    if ($("#palletNo").val() == "" || $("#palletNo").val().length < 8) {
+                        return
+                    }
+                    if ($("#palletNo").val().length >= 8) {
+                        $("#palletNo").val($("#palletNo").val().substr(-8))
+                    }
+                    checkPalletState()
+                })
+                //妫�鏌ユ墭鐩樼姸鎬�
+                function checkPalletState() {
+                    $('#SoNo').val('');
+                    var param = {
+                        "PalletNo": $("#palletNo").val()
+                    }
+                    synData(IP + "/PdaCr/GetReceiptSoNoByPallet", param, 'post', function (res) {
+
+                        if (res.code == 0) { //鎴愬姛 
+                            $('#SoNo').val(res.data);
+                        } else { //涓嶆垚鍔�
+                            layer.msg(res.msg, {
+                                icon: 2,
+                                time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+                            }, function () { });
+                        }
+                    });
+                }
+                    
+                var isChongFu = true;
+				form.on('submit(formUnbind)', function(data) {					
+					 
+                    if (!$("#palletNo").val()) {
+						layer.msg('璇锋壂鎻忔墭鐩樻潯鐮�', {
+							icon: 2,
+							time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+						});
+						return;
+					}
+					if (isChongFu == true) {
+                        isChongFu = false; 
+                        var param = {
+                            "PalletNo":$("#palletNo").val(),
+                        }
+                        sendData(IP + "/PdaCr/ConfirmReceipt", param, 'post', function(res) {
+                            if (res.code == 0) { //鎴愬姛
+                                layer.msg("鎴愬姛", {
+                                    icon: 1,
+                                    time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+                                }, function () { 
+                                    isChongFu = true;
+                                });
+                            } else { //涓嶆垚鍔�
+                                layer.msg(res.msg, {
+                                    icon: 2,
+                                    time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+                                }, function() {isChongFu = true;});
+                            }
+                        });					
+                        return false; //闃绘琛ㄥ崟璺宠浆銆傚鏋滈渶瑕佽〃鍗曡烦杞紝鍘绘帀杩欐鍗冲彲銆�
+                    }else{
+						layer.msg("璇峰嬁閲嶅鐐瑰嚮", {
+							icon: 2,
+							time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+						});
+					}
+					
+				});
+				
+				// form.verify({
+				// 	stock: [/^[\S]{6}$/, '鎵樼洏鏉$爜蹇呴』涓哄叚浣嶅瓧绗�']
+				// });
+
+                $("#menuImg").click(function(e){
+					//console.log("menuImg")
+					e.stopPropagation()
+					
+					if($("#menuList").is(":hidden")){
+						$("#menuList").show()
+					}else{
+						$("#menuList").hide()
+					}
+				})
+				$('body').click(function(){
+					// //console.log("body")
+					$("#menuList").hide()
+				})	
+
+			})
+		</script>
+	</body>
+</html>
diff --git a/Pda/View/SoSetting/pinTuoOut.html b/Pda/View/SoSetting/pinTuoOut.html
index 2475d5f..d58ad03 100644
--- a/Pda/View/SoSetting/pinTuoOut.html
+++ b/Pda/View/SoSetting/pinTuoOut.html
@@ -1259,7 +1259,7 @@
 							console.log(2)
 							updateSkuLotNoList2();
 							updateQtyList2();
-							// getBar2();
+							getBar2();
 							// GetDataInfo();
 						}
 
@@ -1315,14 +1315,14 @@
 						for (var i = 0; i < res.data.length; i++) {
 							if (i == 0) {
 								$("#skuLotNo2").append('<option value =' + res.data[i].SoDetailId + ' selected>' + res.data[i].SkuName);
-								if (res.data[i].LotNo == null) {
+								if (res.data[i].LotNo != null) {
 									$("#skuLotNo2").append(" - " + res.data[i].LotNo);
 								}
 								$("#skuLotNo2").append('</option>');
 
 							} else {
 								$("#skuLotNo2").append('<option value =' + res.data[i].SoDetailId + '>' + res.data[i].SkuName);
-								if (res.data[i].LotNo == null) {
+								if (res.data[i].LotNo != null) {
 									$("#skuLotNo2").append(" - " + res.data[i].LotNo);
 								}
 								$("#skuLotNo2").append('</option>');
diff --git a/Wms/Model/ModelVm/PdaVm/PdaCrVm.cs b/Wms/Model/ModelVm/PdaVm/PdaCrVm.cs
index fd24b15..ba58759 100644
--- a/Wms/Model/ModelVm/PdaVm/PdaCrVm.cs
+++ b/Wms/Model/ModelVm/PdaVm/PdaCrVm.cs
@@ -82,4 +82,10 @@
         public decimal DevanQty { get; set; }
         public string BoxNo { get; set; }
     }
+
+    public class PdaReceiptVm
+    {
+        public string PalletNo { get; set; } 
+    }
+
 }
diff --git a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
index 16cb84d..33bac31 100644
--- a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
+++ b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
@@ -149,6 +149,10 @@
                 }
 
                 var labelQty = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNDetailNo == id).Sum(m => m.Qty + (m.SamplingQty == null? 0: m.SamplingQty));
+                if (labelQty == null)
+                {
+                    labelQty = 0;
+                }
                 var qty = detail.Qty - labelQty;
                 if (qty<0)
                 {
diff --git a/Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs b/Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs
index 22739af..eb93eca 100644
--- a/Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs
+++ b/Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs
@@ -1686,90 +1686,99 @@
             try
             {
                 //褰撳墠浠诲姟淇℃伅
-                var task = await Db.Queryable<LogTask>().FirstAsync(m => m.TaskNo == taskNo && m.IsDel == "0");
+                var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0");
                 if (task == null)
                 {
-                    throw Oops.Bah($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅");
+                    throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅");
                 }
                 if (task.Status == "2")
                 {
-                    throw Oops.Bah("褰撳墠浠诲姟宸插畬鎴�");
+                    throw new Exception("褰撳墠浠诲姟宸插畬鎴�");
                 }
                 Db.BeginTran();
                 //搴撳瓨涓綋鍓嶆墭鐩樼殑淇℃伅
-                var stockDetail = await Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToListAsync();
-                var locateNo = stockDetail.Select(m => m.LocatNo).Distinct().FirstOrDefault();
-
-                //褰撳墠浠诲姟涓殑鍌ㄤ綅淇℃伅
-                var locate = await Db.Queryable<SysStorageLocat>().FirstAsync(m => m.LocatNo == locateNo);
-
-                //鏇存敼浠诲姟
-                task.Status = "2";//浠诲姟鐘舵��
-                task.IsSend = 0;
-                task.IsCancel = 0;
-                task.IsFinish = 0;
-                task.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿
-                Db.Updateable(task).ExecuteCommand();
-                // 鏇存敼褰撳墠浠诲姟涓殑鍌ㄤ綅鐘舵�侊紙鏀逛负0绌哄偍浣嶏級
-                locate.Status = "0";
-                Db.Updateable(locate).ExecuteCommand();
-
-                //鐩爣鍌ㄤ綅淇℃伅
-                var endLocate = await Db.Queryable<SysStorageLocat>().FirstAsync(m => m.LocatNo == task.EndLocat);
-                if (endLocate != null)
+                var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList();
+                //褰撳墠浠诲姟涓殑鐩爣鍌ㄤ綅淇℃伅
+                //褰撳墠浠诲姟涓殑鍘熷偍浣�
+                var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.StartLocat);
+                if (locate == null)
                 {
-                    if (endLocate.Status != "0")
+                    throw new Exception($"WMS绯荤粺涓病鏈夎{task.StartLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�");
+                }
+                var locate2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.EndLocat);
+                if (locate2 == null)
+                {
+                    throw new Exception($"WMS绯荤粺涓病鏈夎{task.EndLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�");
+                }
+                //骞冲簱涓偍浣嶉泦鍚�
+                var pingKuLocate = Db.Queryable<SysStorageLocat>().Where(m => m.WareHouseNo == "W04" && m.IsDel == "0").ToList();
+                //杞﹂棿鏆傚瓨鍖�
+                var pingKuLocate2 = Db.Queryable<SysStorageLocat>().Where(m => m.WareHouseNo == "W04" && m.IsDel == "0" && (m.AreaNo == "B06" || m.AreaNo == "B07")).ToList();
+                var pingKuList = pingKuLocate.Select(m => m.LocatNo).ToList();
+                try
+                {
+
+                    task.Status = "2";//浠诲姟鐘舵��
+                    //鍒ゆ柇璧峰鐩爣浣嶇疆閮芥槸骞冲簱  
+                    if (pingKuList.Contains(task.StartLocat) && pingKuList.Contains(task.EndLocat))
                     {
-                        throw Oops.Bah("鐩爣鍌ㄤ綅鐘舵�侀潪绌哄偍浣�");
+                        task.Status = "5";
                     }
-                }
-                //鏇存敼搴撳瓨鏄庣粏
-                foreach (var item in stockDetail)
-                {
-                    item.Status = "0";//寰呭垎閰�
-                    item.LockQty = 0;//閿佸畾鏁伴噺鏀逛负0
-                    if (endLocate != null)//鏈夌洰鏍囧偍浣嶈鏄庣Щ鍒板叾浠栧尯鍩熷偍浣�
-                    {
-                        item.LocatNo = endLocate.LocatNo;//鍌ㄤ綅鏇存敼
-                        item.WareHouseNo = endLocate.WareHouseNo;//鎵�灞炰粨搴撴洿鏀�
-                        item.RoadwayNo = endLocate.RoadwayNo;//鎵�灞炲贩閬撴洿鏀�
-                        item.AreaNo = endLocate.AreaNo;//鎵�灞炲尯鍩熸洿鏀�
-                    }
-                    else//娌℃湁鐩爣鍌ㄤ綅璇存槑绉诲埌鍏ュ簱鍙�
-                    {
-                        item.LocatNo = "";//鍌ㄤ綅鏇存敼锛堟敼涓虹┖锛�
-                        item.WareHouseNo = "";//鎵�灞炰粨搴撴洿鏀癸紙鏀逛负绌猴級
-                        item.RoadwayNo = "";//鎵�灞炲贩閬撴洿鏀癸紙鏀逛负绌猴級
-                        item.AreaNo = "";//鎵�灞炲尯鍩熸洿鏀癸紙鏀逛负绌猴級
-                    }
-                    await Db.Updateable(item).ExecuteCommandAsync();
 
-                    //鏇存敼搴撳瓨鎬昏〃
-                    var stock = Db.Queryable<DataStock>().First(w => w.IsDel == "0" && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo);
-                    stock.LockQty -= (decimal)item.Qty;
-                    await Db.Updateable(stock).ExecuteCommandAsync();
-                }
-                if (endLocate != null)
-                {
-                    //鏇存敼鐩爣鍌ㄤ綅鐘舵��
-                    endLocate.Status = "1";//鏈夌墿鍝�
-                    await Db.Updateable(endLocate).ExecuteCommandAsync();
-                }
+                    task.IsSend = 0;
+                    task.IsCancel = 0;
+                    task.IsFinish = 0;
+                    task.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿
+                    Db.Updateable(task).ExecuteCommand();
 
-                if (_userManager.UserId != 0)
-                {
-                    //娣诲姞鎿嶄綔鏃ュ織璁板綍
-                    //var k = new OperationCrServer().AddLogOperationCr("搴撳唴浣滀笟", "搴撳唴鏃ュ織", taskNo, "瀹屾垚", $"鐐瑰嚮瀹屾垚鎸夐挳銆佸畬鎴愪换鍔″彿涓猴細{taskNo}鐨勪换鍔�", userId);
-                    await _operation.AddLogOperationCr(new OperationInputVm()
+                    #region 淇敼鍌ㄤ綅鐘舵��
+
+                    if (!pingKuList.Contains(task.StartLocat))
                     {
-                        ParentName = "搴撳唴浣滀笟",
-                        MenuName = "搴撳唴鏃ュ織",
-                        FkNo = taskNo,
-                        TypeName = "瀹屾垚",
-                        Msg = $"鐐瑰嚮瀹屾垚鎸夐挳銆佸畬鎴愪换鍔″彿涓猴細{taskNo}鐨勪换鍔�"
-                    });
+                        //鍘熷偍浣嶆敼涓虹┖鍌ㄤ綅 0
+                        locate.Status = "0";
+                        Db.Updateable(locate).ExecuteCommand();
+                    }
+
+
+                    //鐩爣鍌ㄤ綅鏀逛负鏈夎揣鐗� 1
+                    locate2.Status = "1";
+                    Db.Updateable(locate2).ExecuteCommand();
+                    //鍒ゆ柇鐩爣浣嶇疆濡傛灉涓嶆槸鏄溅闂存殏瀛樺尯  骞朵笖鏄钩搴撳偍浣� 鏇存敼搴撳瓨浣嶇疆
+                    if (pingKuLocate2.Count(m=>m.LocatNo == task.EndLocat)<=0 && pingKuList.Contains(task.EndLocat))
+                    {
+                        foreach (var item in stockDetail)
+                        {
+                            item.WareHouseNo = locate2.WareHouseNo;
+                            item.AreaNo = locate2.AreaNo;
+                            item.RoadwayNo = locate2.RoadwayNo;
+                            item.LocatNo = locate2.LocatNo;
+                        }
+                        Db.Updateable(stockDetail).ExecuteCommand();
+                    }
+
+
+                    #endregion
+                    if (_userManager.UserId != 0)
+                    {
+                        //娣诲姞鎿嶄綔鏃ュ織璁板綍
+                        //var k = new OperationCrServer().AddLogOperationCr("搴撳唴浣滀笟", "搴撳唴鏃ュ織", taskNo, "瀹屾垚", $"鐐瑰嚮瀹屾垚鎸夐挳銆佸畬鎴愪换鍔″彿涓猴細{taskNo}鐨勪换鍔�", userId);
+                        await _operation.AddLogOperationCr(new OperationInputVm()
+                        {
+                            ParentName = "搴撳唴浣滀笟",
+                            MenuName = "搴撳唴鏃ュ織",
+                            FkNo = taskNo,
+                            TypeName = "瀹屾垚",
+                            Msg = $"鐐瑰嚮瀹屾垚鎸夐挳銆佸畬鎴愪换鍔″彿涓猴細{taskNo}鐨勪换鍔�"
+                        });
+                    }
+                    Db.CommitTran();
                 }
-                Db.CommitTran();
+                catch (Exception ex)
+                {
+                    Db.RollbackTran();
+                    throw new Exception(ex.Message);
+                }
 
             }
             catch (Exception ex)
diff --git a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
index 9de08a8..09749f0 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -128,39 +128,8 @@
                 var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 
                 var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 
 
-                if (pack == null)
-                {
-                    throw new Exception("鑾峰彇鐗╂枡鍖呰淇℃伅澶辫触锛岃鏍稿疄!");
-                }
-                if (pack.L5Num.HasValue)
-                {
-                    pNum = (int)pack.L5Num;
-                    bNum = (int)pack.L4Num;
-                }
-                else if (pack.L4Num.HasValue)
-                {
-                    pNum = (int)pack.L4Num;
-                    bNum = (int)pack.L3Num;
-                }
-                else if (pack.L3Num.HasValue)
-                {
-                    pNum = (int)pack.L3Num;
-                    bNum = (int)pack.L2Num;
-                }
-                else if (pack.L2Num.HasValue)
-                {
-                    pNum = (int)pack.L2Num;
-                    bNum = (int)pack.L1Num;
-                }
-                else if (pack.L1Num.HasValue)
-                {
-                    pNum = (int)pack.L1Num;
-                    bNum = (int)pack.L1Num;
-                }
-                if (pNum == 0 || bNum == 0)
-                {
-                    throw new Exception($"缁戝畾澶辫触锛寋detail.SkuNo}鐗╁搧鍖呰鏈壘鍒帮紒");
-                }
+                //鍏叡鏂规硶鑾峰彇鍖呰鏁伴噺
+                new Common().GetPackQtyInfo(detail.PackagNo, ref pNum, ref bNum);
 
                 #endregion
 
@@ -1123,6 +1092,7 @@
         {
             try
             {
+                Db.BeginTran();
                 #region 鍒ゆ柇
 
                 //0锛氭垚鍝佸叆搴� 1锛氶噰璐叆搴� 3锛氶��璐у叆搴� 4锛氳溅闂翠綑鏂欏叆搴� 8锛氱敓浜ч��鏂欏叆搴�
@@ -1197,44 +1167,13 @@
                 #region 鍖呰
 
                 var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo);
-                var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == detail.PackagNo);    // liudl 鐢盨ku鍖呰缂栧彿鍙樻洿涓哄叆搴撳崟鏄庣粏鍖呰缂栧彿
+                //var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == detail.PackagNo);    // liudl 鐢盨ku鍖呰缂栧彿鍙樻洿涓哄叆搴撳崟鏄庣粏鍖呰缂栧彿
 
                 var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 
                 var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 
-
-                if (pack == null)
-                {
-                    throw new Exception("鑾峰彇鐗╂枡鍖呰澶辫触锛岃鏍稿疄!");
-                }
-                if (pack.L5Num.HasValue)
-                {
-                    pNum = (int)pack.L5Num;
-                    bNum = (int)pack.L4Num;
-                }
-                else if (pack.L4Num.HasValue)
-                {
-                    pNum = (int)pack.L4Num;
-                    bNum = (int)pack.L3Num;
-                }
-                else if (pack.L3Num.HasValue)
-                {
-                    pNum = (int)pack.L3Num;
-                    bNum = (int)pack.L2Num;
-                }
-                else if (pack.L2Num.HasValue)
-                {
-                    pNum = (int)pack.L2Num;
-                    bNum = (int)pack.L1Num;
-                }
-                else if (pack.L1Num.HasValue)
-                {
-                    pNum = (int)pack.L1Num;
-                    bNum = (int)pack.L1Num;
-                }
-                if (pNum == 0 || bNum == 0)
-                {
-                    throw new Exception($"缁戝畾澶辫触锛寋detail.SkuNo}鐗╁搧鍖呰鏈壘鍒帮紒");
-                }
+                //鍏叡鏂规硶鑾峰彇鍖呰鏁伴噺
+                new Common().GetPackQtyInfo(detail.PackagNo, ref pNum, ref bNum);
+                 
 
                 #endregion
 
@@ -1330,10 +1269,16 @@
                 {
                     tags = "1";
                 }
-
+                //楠岃瘉搴撳瓨鎵樼洏鏄惁鏈夎创鏍囩墿鏂�
+                var skuStr = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0" && m.IsPasteCode == "1").Select(m => m.SkuNo).ToList();
+                var sdHave = Db.Queryable<DataStockDetail>().Count(m => m.IsDel == "0" && m.PalletNo == model.PalletNo && skuStr.Contains(m.SkuNo));
+                if (sdHave>0)
+                {
+                    throw new Exception("褰撳墠鎵樼洏鍚湁璐存爣鐗╂枡淇℃伅锛屼笉鑳界粍鎵�");
+                }
                 // 鍒ゆ柇搴撳瓨鏄庣粏鏄惁宸叉湁姝ゆ墭鐩樹俊鎭�  
                 var sd1 = Db.Queryable<DataStockDetail>()
-                    .First(m => m.IsDel == "0" && m.ASNDetailNo == bind.ASNDetailNo && m.PalletNo == model.PalletNo && m.LotNo == bind.LotNo);
+                    .First(m => m.IsDel == "0" && m.ASNDetailNo == bind.ASNDetailNo && m.PalletNo == model.PalletNo && m.SkuNo == detail.SkuNo && m.LotNo == bind.LotNo);
                 var sdId1 = 0;
                 if (sd1 != null)
                 {
@@ -1426,8 +1371,6 @@
                 }
                 #endregion
 
-
-
                 #region 鏇存敼缁勬墭淇℃伅
 
                 var isSample = "0";//鏄惁鍙栨牱
@@ -1497,10 +1440,12 @@
                 Db.Updateable(notice).ExecuteCommand();
                 #endregion
 
-                #region 搴撳瓨鏄庣粏
+                #region 鏇存敼搴撳瓨鏄庣粏鏁伴噺
+
                 sd1.Qty = bind.Qty;
                 //鏇存敼搴撳瓨鏄庣粏鏁伴噺
                 Db.Updateable(sd1).Where(m => m.Id == sdId1).ExecuteCommand();
+
                 #endregion
 
                 #region 搴撳瓨
@@ -1574,9 +1519,12 @@
                 sqlStr += $"insert into LogPalletTrack values('{model.PalletNo}','{model.AsnNo}','缁勭洏','0',getDate(),{userId},NULL,NULL);";
                 Db.Ado.ExecuteCommand(sqlStr);
                 new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "鎵樼洏缁戝畾", model.AsnNo, "娣诲姞", $"娣诲姞浜嗘墭鐩樼爜涓猴細{model.PalletNo}鐨勭粍鐩樹俊鎭�", userId);
+
+                Db.CommitTran();
             }
             catch (Exception e)
             {
+                Db.RollbackTran();
                 throw new Exception(e.Message);
             }
         }
diff --git a/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
index a0e216c..142058b 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
@@ -6,6 +6,7 @@
 using System.Threading.Tasks;
 using Dm;
 using Model.InterFaceModel;
+using Model.ModelDto;
 using Model.ModelDto.BllCheckDto;
 using Model.ModelDto.PdaDto;
 using Newtonsoft.Json;
@@ -689,7 +690,7 @@
             {
                 throw Oops.Bah("鎵樼洏鍌ㄤ綅淇℃伅涓嶅瓨鍦�,璇锋鏌�!");
             }
-            if (models.WareHouseNo != "W02")
+            if (models.WareHouseNo != "W04")
             {
                 throw Oops.Bah("璇ユ墭鐩樻湭鍦ㄥ钩搴撳唴,璇锋鏌�!");
             }
@@ -719,7 +720,7 @@
                 {
                     throw Oops.Bah("鎵樼洏鍌ㄤ綅淇℃伅涓嶅瓨鍦�,璇锋鏌�!");
                 }
-                if (models.WareHouseNo != "W02")
+                if (models.WareHouseNo != "W04")
                 {
                     throw Oops.Bah("璇ユ墭鐩樻湭鍦ㄥ钩搴撳唴,璇锋鏌�!");
                 }
@@ -729,14 +730,9 @@
                     throw Oops.Bah("鍌ㄤ綅淇℃伅涓嶅瓨鍦�,璇锋鏌�!");
                 }
 
-                if (storageLocat.AreaNo.Contains("B0"))
-                {
-                    storageArea = await Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.Status == "0" && w.AreaNo.Contains("B0") && w.WareHouseNo == "W02").OrderBy(o => o.AreaNo).ToListAsync();
-                }
-                else
-                {
-                    storageArea = await Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.Status == "0" && w.AreaNo.Contains("B1") && w.WareHouseNo == "W02").OrderBy(o => o.AreaNo).ToListAsync();
-                }
+                
+                storageArea = await Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.Status == "0" && w.AreaNo != storageLocat.AreaNo && w.WareHouseNo == "W04").OrderBy(o => o.AreaNo).ToListAsync();
+                
             }
             return storageArea;
         }
@@ -817,7 +813,7 @@
                     {
                         throw Oops.Bah("鎵�閫夊尯鍩熶俊鎭笉瀛樺湪,璇锋鏌�!");
                     }
-                    EndLocat = await GetLocat(areaNo, stockDetail.SkuNo, stockDetail.LotNo, palletNo);
+                    EndLocat = await GetLocat(areaNo);
                 }
                 else
                 {
@@ -846,7 +842,7 @@
                 var storageLocatEnd = new SysStorageLocat();
                 if (!string.IsNullOrEmpty(areaNo))
                 {
-                    storageLocatEnd = await Db.Queryable<SysStorageLocat>().FirstAsync(w => w.IsDel == "0" && w.LocatNo == EndLocat && w.Flag == "0" && w.Status == "0");
+                    storageLocatEnd = await Db.Queryable<SysStorageLocat>().FirstAsync(w => w.IsDel == "0" && w.LocatNo == EndLocat && w.Flag == "0");
                     if (storageLocatEnd == null)
                     {
                         throw Oops.Bah("鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦�,璇锋鏌�!");
@@ -1019,7 +1015,7 @@
                     throw Oops.Bah($"鎵樼洏鍙凤細{item.PalletNo}鎵�鍦ㄧ殑鍌ㄤ綅淇℃伅涓嶅瓨鍦�,璇锋鏌�!");
                 }
                 //鑾峰彇鐩爣鍌ㄤ綅
-                EndLocat = await GetLocat(areaNo, item.SkuNo, item.LotNo, palletNo);
+                EndLocat = await GetLocat(areaNo);
                 if (string.IsNullOrEmpty(EndLocat))
                 {
                     throw Oops.Bah("鍒嗛厤鐩爣鍌ㄤ綅澶辫触,璇锋鏌�!");
@@ -1101,28 +1097,23 @@
         /// <param name="skuNo"></param>
         /// <param name="lotNo"></param>
         /// <returns></returns>
-        private async Task<string> GetLocat(string areaNo, string skuNo, string lotNo, string palletNo, string hasLocatNoList = "")
+        private async Task<string> GetLocat(string areaNo)
         {
             string endLocat = string.Empty;//鐩爣鍌ㄤ綅
-                                           //褰撶劧鍖哄煙鎵�鏈夊偍浣嶄俊鎭�
-            var storageLocatList = await Db.Queryable<SysStorageLocat>().Where(w => w.WareHouseNo == "W02" && w.AreaNo == areaNo).ToListAsync();
-            //鍚屽尯鍩熷悓鎵规鐗╂枡鐨勫偍浣嶄俊鎭�
-            List<string> locatList = await Db.Queryable<DataStockDetail>().Where(w => w.IsDel == "0" && w.SkuNo == skuNo && w.LotNo == lotNo && w.WareHouseNo == "W02" && w.AreaNo == areaNo && w.PalletNo != palletNo)
-                .OrderByDescending(o => o.LocatNo).Select(s => s.LocatNo).Distinct().ToListAsync();
-            foreach (var item in locatList)
-            {
-                var locatInfo = storageLocatList.Where(w => w.LocatNo == item).First();
+            //褰撳墠鍖哄煙鎵�鏈夊偍浣嶄俊鎭�
+            var storageLocatList = await Db.Queryable<SysStorageLocat>().Where(w => w.WareHouseNo == "W04" && w.AreaNo == areaNo).ToListAsync();
+           
+            var locatInfo2 = storageLocatList.Where(w => w.IsDel == "0" && w.Flag == "0" && w.Status == "0")
+                           .OrderByDescending(m => m.Layer).OrderByDescending(m => m.Column).OrderByDescending(m => m.Row).First();
 
-                var locatInfo2 = storageLocatList.Where(w => w.IsDel == "0" && w.Status == "0" && w.Flag == "0" && w.LocatNo != locatInfo.LocatNo && w.Row == locatInfo.Row && !hasLocatNoList.Contains(w.LocatNo))
-                    .OrderByDescending(o => o.Column).First();
-                if (locatInfo2 != null)
-                {
-                    endLocat = locatInfo2.LocatNo;
-                }
+            if (locatInfo2 != null)
+            {
+                endLocat = locatInfo2.LocatNo;
             }
+
             if (string.IsNullOrEmpty(endLocat))
             {
-                var locatInfo3 = storageLocatList.Where(w => w.IsDel == "0" && w.Flag == "0" && w.Status == "0" && !hasLocatNoList.Contains(w.LocatNo))
+                var locatInfo3 = storageLocatList.Where(w => w.IsDel == "0" && w.Flag == "0")
                             .OrderByDescending(m => m.Layer).OrderByDescending(m => m.Column).OrderByDescending(m => m.Row).First();
 
                 if (locatInfo3 != null)
@@ -1216,7 +1207,7 @@
         }
         #endregion
 
-        #region 绠辩爜鎷嗙璐存爣
+        #region 绠辩爜鎷嗙璐存爣銆佷汉宸ョ‘璁ゆ敹璐�
         /// <summary>
         /// 鎷嗙娣诲姞鏍囩
         /// </summary>
@@ -1252,7 +1243,18 @@
                 Db.Updateable(boxInfo).ExecuteCommand();
 
                 var boxStr = boxInfo.BoxNo.Substring(0, boxInfo.BoxNo.Length - 6);//鑾峰彇绠辩爜鍓嶇紑-闄ゅ悗鍏綅娴佹按澶�
-                var maxBoxCode = Db.Queryable<BllBoxInfo>().Where(m => m.BoxNo.Contains(boxStr) && m.IsDel == "0" && m.Origin == "WMS鐢熸垚").Max(a => a.BoxNo);
+                var maxBoxCode1 = Db.Queryable<BllBoxInfo>().Where(m => m.BoxNo.Contains(boxStr) && m.IsDel == "0" && m.Origin == "WMS鐢熸垚").Max(a => a.BoxNo);
+
+                var maxBoxCode2 = Db.Queryable<DataBoxInfo>().Where(m => m.BoxNo.Contains(boxStr) && m.IsDel == "0").Max(a => a.BoxNo);
+                //濡傛灉缁撴灉涓�0锛屽垯璇存槑涓や釜瀛楃涓茬浉绛夛紱  ABC  BCE
+                //濡傛灉缁撴灉灏忎簬0锛屽垯璇存槑绗竴涓瓧绗︿覆灏忎簬绗簩涓瓧绗︿覆锛�
+                //濡傛灉缁撴灉澶т簬0锛屽垯璇存槑绗竴涓瓧绗︿覆澶т簬绗簩涓瓧绗︿覆銆�
+                var maxBoxCode = maxBoxCode1;
+                var bol = String.CompareOrdinal(maxBoxCode1, maxBoxCode2);
+                if (bol<0)
+                {
+                    maxBoxCode = maxBoxCode2;
+                }
                 var boxNoNew = maxBoxCode.Substring(0, maxBoxCode.Length - 6) + (int.Parse(maxBoxCode.Substring(maxBoxCode.Length - 6, 6)) + 1).ToString().PadLeft(6, '0');
 
                 // 娣诲姞鏂扮鐮佷俊鎭�
@@ -1296,6 +1298,121 @@
                 throw new Exception(e.Message);
             }
         }
+
+
+        public string GetReceiptSoNoByPallet(string palletNo)
+        {
+            try
+            {
+                var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == palletNo).GroupBy(m=>m.SONo).Select(m=>m.SONo).ToList();
+                if (stockDetail.Count == 0)
+                {
+                    throw new Exception("娌℃湁鏌ヨ鍒版墭鐩樺簱瀛樹俊鎭�");
+                }
+                if (stockDetail.Count != 1)
+                {
+                    throw new Exception("搴撳瓨鎵樼洏涓嶆槸鍞竴鍑哄簱鍗�");
+                }
+                var detail = stockDetail.First();
+                if (string.IsNullOrWhiteSpace(detail))
+                {
+                    throw new Exception("鎵樼洏娌℃湁鍑哄簱鍗曚俊鎭�");
+                }
+                var task = Db.Queryable<LogTask>().First(m => m.PalletNo == palletNo && m.IsDel == "0" && m.Status == "5");
+                if (task == null)
+                {
+                    throw new Exception("娌℃湁鏌ヨ鍒版墭鐩樹换鍔′俊鎭�");
+                }
+                if (task.Status != "5")
+                {
+                    throw new Exception("浠诲姟鐘舵�佷笉鏄瓑寰呯‘璁�");
+                }
+                return detail;
+            }
+            catch (Exception e)
+            {
+                throw new Exception(e.Message);
+            }
+        }
+
+
+        /// <summary>
+        /// 浜哄伐纭鏀惰揣
+        /// </summary>
+        /// <param name="palletNo"></param>
+        /// <param name="userId"></param>
+        public void ConfirmReceipt(string palletNo, int userId)
+        {
+            try
+            {
+                Db.BeginTran();
+                var task = Db.Queryable<LogTask>().First(m => m.PalletNo == palletNo && m.IsDel == "0" && m.Status == "5");
+                if (task == null)
+                {
+                    throw new Exception("娌℃湁鏌ヨ鍒版墭鐩樹换鍔′俊鎭�");
+                }
+                if (task.Status != "5")
+                {
+                    throw new Exception("浠诲姟鐘舵�佷笉鏄瓑寰呯‘璁�");
+                }
+                //浠诲姟鐘舵�佸彉鏇翠负鎵ц瀹屾垚
+                task.Status = "2";
+                Db.Updateable(task).ExecuteCommand();
+                var locatList = Db.Queryable<SysStorageLocat>().Where(m=>m.WareHouseNo == "W04" && (m.AreaNo == "B06" || m.AreaNo == "B07") && m.IsDel == "0").ToList();
+                var locat = locatList.FirstOrDefault(m => m.LocatNo == task.EndLocat);
+                //鍒ゆ柇鎵樼洏鍌ㄤ綅鏄惁鍦ㄨ溅闂�
+                if (locat == null)
+                {
+                    throw new Exception("鍌ㄤ綅淇℃伅娌℃湁鍦ㄨ溅闂村伐浣嶄笂");
+                }
+                locat.Status = "0";
+                Db.Updateable(locat).ExecuteCommand();
+                //鍒ゆ柇鎵樼洏淇℃伅
+                var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).ToList();
+                foreach (var item in stockDetail)
+                {
+                    if (item.UDF5 != "1" || string.IsNullOrWhiteSpace(item.SONo))
+                    {
+                        continue;
+                    }
+                   
+                    //item.WareHouseNo = "";
+                    //item.RoadwayNo = "";
+                    //item.AreaNo = "";
+                    item.LocatNo = "";
+                    item.PalletNo = "";
+                    item.LockQty = 0; // 閿佸畾鏁伴噺鏇翠负0
+                    item.Status = "0"; // 鐘舵�佸彉涓哄緟鍒嗛厤
+                    var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.StockDetailId == item.Id).ToList();
+                    foreach (var item2 in boxInfo)
+                    {
+                        item2.Status = "2"; //鐘舵�佸彉涓哄凡鍏ュ簱
+                    }
+
+                    Db.Updateable(boxInfo).ExecuteCommand();
+                }
+                Db.Updateable(stockDetail).ExecuteCommand();
+                //鎵樼洏鍙樻洿鐘舵��
+                var pallet = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNo);
+                if (pallet == null)
+                {
+                    throw new Exception("娌℃湁鏌ヨ鍒版墭鐩樹俊鎭�");
+                }
+                pallet.Status = "0";
+                Db.Updateable(pallet).ExecuteCommand();
+                //娣诲姞鎿嶄綔鏃ュ織
+                new OperationCrServer().AddLogOperationCr("搴撳唴浣滀笟", "鎿嶄綔鏃ュ織", palletNo, "缂栬緫", $"杞﹂棿鏀惰揣锛歿palletNo}鎵樼洏鏀惰揣", userId);
+                Db.CommitTran();
+            }
+            catch (Exception e)
+            {
+                Db.RollbackTran();
+                throw new Exception(e.Message);
+            }
+        }
+
+
+
         #endregion
 
     }
diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
index 5a9d722..512b2d9 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
@@ -118,20 +118,20 @@
                 #region 鎷兼墭淇℃伅
                 var sdId = 0;
                 bool isNew = false;
-                var pinStockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew);
+                
+                var pinStockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.SkuNo == stockDetail.SkuNo && m.LotNo == stockDetail.LotNo);
+                 
                 if (pinStockDetail != null)
                 {
                     if (palletNo != palletNoNew)//闈炴暣鎵樻嫞璐�
                     {
-                        if (pinStockDetail.SONo != notice.SONo)
+                        var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Id!= pinStockDetail.Id).ToList();
+                        if (pinStockDetails.Count(m=>m.SONo != notice.SONo) > 0)
                         {
                             throw Oops.Bah("鎷兼墭鎵樼洏涓婂彧鑳芥斁鍚屼竴涓嚭搴撳崟涓嬬殑鐗╂枡锛�");
                         }
-                        if (pinStockDetail.SkuName != stockDetail.SkuName || pinStockDetail.LotNo != stockDetail.LotNo)
-                        {
-                            isNew = true;
-                        }
                     }
+                    
                     sdId = pinStockDetail.Id;
                 }
                 else
@@ -147,6 +147,7 @@
                     newPalletInfo.Status = "1";
                     await Db.Updateable(newPalletInfo).ExecuteCommandAsync();
                 }
+                
                 var sd = new DataStockDetail();
                 if (isNew)
                 {
@@ -189,7 +190,7 @@
                     sd.IsDel = "0";
                     sd.CreateUser = userId;
                     sd.CreateTime = nowDate;
-
+                    sd.UDF5 = "1";
                     //鏂板鎷兼墭搴撳瓨鏄庣粏淇℃伅
                     sdId = await Db.Insertable(sd).ExecuteReturnIdentityAsync();
                 }
@@ -269,6 +270,7 @@
 
                     if (palletNo != palletNoNew)
                     {
+                        var locateStr = stockDetail.LocatNo;
                         //鍒犻櫎鍘熸墭鐩樺簱瀛樻槑缁�
                         await Db.Deleteable(stockDetail).ExecuteCommandAsync();
 
@@ -280,10 +282,19 @@
                         }
                         pallet.Status = "0";
                         await Db.Updateable(pallet).ExecuteCommandAsync();
+
+                        //鏇存敼鍌ㄤ綅鐘舵�佷负绌哄偍浣�
+                        var locate = Db.Queryable<SysStorageLocat>().First(m => m.IsDel == "0" && m.LocatNo == locateStr);
+                        if (locate != null)
+                        {
+                            locate.Status = "0";
+                            Db.Updateable(locate).ExecuteCommand();
+                        }
                     }
                     else
                     {
                         stockDetail.SONo = soNo;
+                        stockDetail.UDF5 = "1";
                         await Db.Updateable(stockDetail).ExecuteCommandAsync();
                     }
 
@@ -301,14 +312,13 @@
                 }
                 else
                 {
-                    var biaoShi = "0";//0锛氭暣绠辨嫞璐с��1锛氭暎鏀嫞璐с��2锛氭暟閲忔嫞璐�
                     List<DataBoxInfo> boxInfos;
                     var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo);
                     if (await boxInfo.CountAsync() == 0)
                     {
                         throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佺殑淇℃伅");
                     }
-                    
+                    boxInfos = boxInfo.ToList();
                     var comDetailList = await Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToListAsync();
                     
                     //鏁寸鎷h揣
@@ -322,7 +332,7 @@
                     {
                         throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
                     }
-                    boxInfos = await boxInfo.ToListAsync();
+                    
                     foreach (var item in boxInfos)
                     {
                         if (comDetailList.Any(m => m.BoxNo == item.BoxNo))
@@ -360,9 +370,13 @@
                         comList.Add(completeDetail);
 
                         //淇敼搴撳瓨绠辩爜鏄庣粏
-                        item.StockDetailId = sdId;
-                        item.BindNo = null;//鎵樼洏缁戝畾鍙�
-                        item.PalletNo = palletNoNew;
+                        if (palletNo != palletNoNew)
+                        {
+                            item.StockDetailId = sdId;
+                            item.BindNo = null;//鎵樼洏缁戝畾鍙�
+                            item.PalletNo = palletNoNew;
+                        }
+                        
                         item.Status = "5";//绠辨敮鐘舵�侊紝0锛氭湭缁勬墭  1锛氬凡缁勬墭 2锛氬凡鍏ュ簱 3锛氬凡鍑哄簱 4:宸插垎閰� 5锛氬凡鎷h揣
                         await Db.Updateable(item).ExecuteCommandAsync();
 
@@ -382,6 +396,7 @@
                     stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇�
                     stockDetail.Qty -= pickQty;
                     stockDetail.LockQty -= pickQty;
+                    stockDetail.UDF5 = "1";
                     if (stockDetail.Qty == stockDetail.LockQty)
                     {
                         stockDetail.Status = "2";
@@ -397,15 +412,9 @@
 
                     if (stockDetail.Qty <= 0)
                     {
+                        var locateStr = stockDetail.LocatNo;
                         await Db.Deleteable(stockDetail).ExecuteCommandAsync();
-                    }
-                    else
-                    {
-                        await Db.Updateable(stockDetail).ExecuteCommandAsync();
-                    }
-                    var num2 = await Db.Queryable<DataStockDetail>().CountAsync(m => m.IsDel == "0" && m.PalletNo == palletNo);
-                    if (num2 <= 0)
-                    {
+
                         //鏀瑰彉鎵樼洏鐘舵��
                         var pallet = await Db.Queryable<SysPallets>().FirstAsync(m => m.PalletNo == palletNo && m.IsDel == "0");
                         if (pallet == null)
@@ -414,7 +423,20 @@
                         }
                         pallet.Status = "0";
                         await Db.Updateable(pallet).ExecuteCommandAsync();
+
+                        //鏇存敼鍌ㄤ綅鐘舵�佷负绌哄偍浣�
+                        var locate = Db.Queryable<SysStorageLocat>().First(m => m.IsDel == "0" && m.LocatNo == locateStr);
+                        if (locate != null)
+                        {
+                            locate.Status = "0";
+                            Db.Updateable(locate).ExecuteCommand();
+                        }
                     }
+                    else
+                    {
+                        await Db.Updateable(stockDetail).ExecuteCommandAsync();
+                    }
+                     
                     //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
                     noticeDetail.CompleteQty += pickQty;
                     await Db.Updateable(noticeDetail).ExecuteCommandAsync();
@@ -542,18 +564,15 @@
 
                 #region 鎷兼墭淇℃伅
                 bool isNew = false;
-                var pinStockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew);
+                var pinStockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.SkuNo== stockDetail.SkuNo && m.LotNo == stockDetail.LotNo);
                 if (pinStockDetail != null)
                 {
                     if (palletNo != palletNoNew)//闈炴暣鎵樻嫞璐�
                     {
-                        if (pinStockDetail.SONo != notice.SONo)
+                        var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Id != pinStockDetail.Id).ToList();
+                        if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0)
                         {
                             throw Oops.Bah("鎷兼墭鎵樼洏涓婂彧鑳芥斁鍚屼竴涓嚭搴撳崟涓嬬殑鐗╂枡锛�");
-                        }
-                        if (pinStockDetail.SkuName != stockDetail.SkuName || pinStockDetail.LotNo != stockDetail.LotNo)
-                        {
-                            isNew = true;
                         }
                     }
                 }
@@ -617,6 +636,7 @@
                     sd.IsDel = "0";
                     sd.CreateUser = userId;
                     sd.CreateTime = nowDate;
+                    sd.UDF5 = "1";
 
                     //鏂板鎷兼墭搴撳瓨鏄庣粏淇℃伅
                     await Db.Insertable(sd).ExecuteReturnIdentityAsync();
@@ -628,11 +648,13 @@
                         //淇敼鎷兼墭鎵樼洏搴撳瓨鏄庣粏
                         pinStockDetail.Qty += int.Parse(PickQty);
                         pinStockDetail.LockQty += int.Parse(PickQty);
+                        pinStockDetail.UDF5 = "1";
                         await Db.Updateable(pinStockDetail).ExecuteCommandAsync();
                     }
                     else
                     {
                         pinStockDetail.SONo = soNo;
+                        pinStockDetail.UDF5 = "1";
                         await Db.Updateable(pinStockDetail).ExecuteCommandAsync();
                     }
                 }
@@ -697,7 +719,7 @@
                 await Db.Updateable(allot).ExecuteCommandAsync();
 
                 int isDel = 0;
-
+                var locateStr = stockDetail.LocatNo;
                 if (palletNo != palletNoNew)
                 {
                     //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁�
@@ -742,6 +764,15 @@
 
                     pallet.Status = "0";
                     await Db.Updateable(pallet).ExecuteCommandAsync();
+
+                    //鏇存敼鍌ㄤ綅鐘舵�佷负绌哄偍浣�
+                    var locate = Db.Queryable<SysStorageLocat>().First(m=>m.IsDel == "0" && m.LocatNo == locateStr);
+                    if (locate!=null)
+                    {
+                        locate.Status = "0";
+                        Db.Updateable(locate).ExecuteCommand();
+                    }
+
                 }
 
                 //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
@@ -803,10 +834,10 @@
                 throw Oops.Bah("鎵樼洏鐮佷负绌猴紝璇疯緭鍏ユ墭鐩樼爜");
             }
             var palletInfo = await Db.Queryable<DataStockDetail>().FirstAsync(w => w.IsDel == "0" && w.PalletNo == palletNo);
-            if (!string.IsNullOrEmpty(palletInfo.WareHouseNo) && type != "1")
-            {
-                throw Oops.Bah("璇ユ墭鐩樿繕鏈嚭搴�");
-            }
+            //if (!string.IsNullOrEmpty(palletInfo.WareHouseNo) && type != "1")
+            //{
+            //    throw Oops.Bah("璇ユ墭鐩樿繕鏈嚭搴�");
+            //}
             if (type == "1")//骞冲簱鍑哄簱鑾峰彇鍗曟嵁
             {
                 var allotList = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.Status == "1" && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync();
diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index e0f4851..398927b 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -29,6 +29,7 @@
 using System.Diagnostics;
 using System.Drawing.Drawing2D;
 using Model.ModelDto.LogDto;
+using AutoMapper.Internal;
 
 namespace WMS.BLL.BllSoServer
 {
@@ -1016,7 +1017,7 @@
                 var stockRst = new StockServer();
                 var stockDetailRst = new StockDetailServer();
                 Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>()
-                    .And(it => it.WareHouseNo == house)
+                    .And(it => it.WareHouseNo == house || string.IsNullOrWhiteSpace(it.LocatNo))
                     .AndIF(!string.IsNullOrWhiteSpace(inspectStatus), it => inspectStatus.Contains(it.InspectStatus))
                     .And(m => skuStrList.Contains(m.SkuNo))
                     .AndIF(type == "6", m => m.OwnerNo == ownerNo)//浠e偍鍑哄簱闇�瑕佸叧鑱旇揣涓�
@@ -1249,7 +1250,7 @@
                         IsWave = "0",
                         WaveNo = "",
                         IsDespatch = "0",
-
+                        WareHouseNo = model.WareHouseNo,
                         CreateUser = userId,
                     };
 
@@ -3025,9 +3026,40 @@
                 try
                 {
                     List<LogTask> logTaskList = new List<LogTask>();//姝ゆ鍑哄簱浠诲姟闆嗗悎锛屼负搴斿鍚屾墭鐩樹笉鍚岀墿鏂欏嚭搴�
+                    var i = 0;
+                    var outLocatelist1 = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.AreaNo == "B02" && m.Flag == "0").ToList();
+                    var outLocatelist2 = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.AreaNo == "B05" && m.Flag == "0").ToList();
                     //寰幆鍒嗛厤鐨勪俊鎭敓鎴愬嚭搴撲换鍔�
                     foreach (var item in list)
                     {
+                        var outModeLocate = "";
+                        if (outMode == "1")
+                        {
+                            if (i < outLocatelist1.Count)
+                            {
+                                outModeLocate = outLocatelist1[i].LocatNo;
+                            }
+                            else
+                            {
+                                var j = i % outLocatelist1.Count;
+                                
+                                outModeLocate = outLocatelist1[j].LocatNo;
+                            }
+                        }
+                        else if(outMode == "2")
+                        {
+                            if (i < outLocatelist1.Count)
+                            {
+                                outModeLocate = outLocatelist2[i].LocatNo;
+                            }
+                            else
+                            {
+                                var j = i % outLocatelist1.Count;
+
+                                outModeLocate = outLocatelist2[j].LocatNo;
+                            }
+                        }
+                        
                         var taskNoStr = "";
                                            
                         // 鍌ㄤ綅鍙�
@@ -3050,7 +3082,7 @@
                             {
                                 //濡傛灉涓嶅湪浠撳簱鍐咃紝褰撳墠鍒嗛厤淇℃伅鐩存帴鏇存柊鍑哄簱瀹屾垚 
                                 item.Status = "2";//鐘舵��
-                                item.OutMode = outMode;//鍑哄簱鍙� 
+                                item.OutMode = outModeLocate;//鍑哄簱鍙� 
                                 Db.Updateable(item).ExecuteCommand();
                                 var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo);
                                 if (noticeDetail != null) //鏇存柊鍑哄簱鍗曟嵁鐨勪笅鍙戞暟閲�
@@ -3072,6 +3104,7 @@
                             }
                             flagList.Add(0);
                             continue;
+                            
                         }
 
                         var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == locateNo && m.IsDel == "0");//褰撳墠鍑哄簱鐨勫偍浣嶄俊鎭�
@@ -3102,7 +3135,7 @@
                                 IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
 
                                 StartLocat = locate.LocatNo,//璧峰浣嶇疆
-                                EndLocat = outMode,//鐩爣浣嶇疆
+                                EndLocat = outModeLocate,//鐩爣浣嶇疆
                                 PalletNo = item.PalletNo,//鎵樼洏鐮�
                                 IsSend = 1,//鏄惁鍙啀娆′笅鍙�
                                 IsCancel = 1,//鏄惁鍙彇娑�
@@ -3110,7 +3143,7 @@
                                 Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
                                 Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
                                 OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
-                                Msg = "浠�" + locate.LocatNo + "鍒�" + outMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+                                Msg = "浠�" + locate.LocatNo + "鍒�" + outModeLocate + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
                             };
                             Db.Insertable(exTask).ExecuteCommand();
                             logTaskList.Add(exTask);
@@ -3120,10 +3153,10 @@
                                 PalletNo = item.PalletNo,//鎵樼洏鍙�
                                 StartLocate = locate.LocatNo, // 璧峰浣嶇疆
                                 StartRoadway = locate.RoadwayNo,//鍏跺疄宸烽亾
-                                EndLocate = outMode, // 鐩爣浣嶇疆 
+                                EndLocate = outModeLocate, // 鐩爣浣嶇疆 
                                 TaskNo = exTask.TaskNo, // 浠诲姟鍙�
                                 TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)0鍏� 1鍑� 2绉� 
-                                OutMode = outMode,  //鍑哄簱鍙� 
+                                OutMode = outModeLocate,  //鍑哄簱鍙� 
                                 Order = 1,
 
                                 //UnstackingMode = "unstackingMode2",//鎷h揣鏂瑰紡 0鏈哄櫒鎷嗘墭鍑�  1 浜哄伐鎷h揣鍑�
@@ -3157,17 +3190,21 @@
                             }
                             locate.Status = "3"; //瑕佸嚭搴撶殑鍌ㄤ綅鏀瑰彉鐘舵�� 姝e湪鍑哄簱
                             Db.Updateable(locate).ExecuteCommand();
+                            var locate2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == outModeLocate && m.IsDel == "0");//褰撳墠鍑哄簱鐨勭洰鏍囧偍浣嶄俊鎭�
+                            locate2.Status = "4";
+                            Db.Updateable(locate2).ExecuteCommand();
 
                             item.TaskNo = taskNoStr; // 鍑哄簱鍒嗛厤淇℃伅涓洿鏂颁换鍔″彿
                             item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛� 
                             //item.UnstackingMode = unstackingMode2;//鎷嗗灈鏂瑰紡
-                            item.OutMode = outMode;//鍑哄簱鍙�
+                            item.OutMode = outModeLocate;//鍑哄簱鍙�
                             //item.LoadingAddre = unstackingMode2 == "0" ? loadingAddre : "";//瑁呰溅鍙�
                             Db.Updateable(item).ExecuteCommand();
 
                             #endregion
 
                             flagList.Add(0);
+                            i++;
                         }
                         else if (locate.Status == "3") //鍑哄簱涓�
                         {
@@ -4100,7 +4137,6 @@
             return bl;
         }
 
-
         private class addreClass
         {
             public string slotCode { get; set; }
@@ -4113,6 +4149,289 @@
             public string AisleOne { get; set; }
              
         }
+
+        /// <summary>
+        /// wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙鍑哄簱鎴愬姛锛�
+        /// </summary>
+        /// <param name="taskNo"></param>
+        /// <param name="userId"></param>
+        /// <exception cref="Exception"></exception>
+        public void ExportSuccess(string taskNo, int userId)
+        {
+            try
+            {
+                //褰撳墠浠诲姟淇℃伅
+                var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0");
+                if (task == null)
+                {
+                    throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅");
+                }
+                if (task.Status == "2")
+                {
+                    throw new Exception("褰撳墠浠诲姟宸插畬鎴�");
+                }
+                Db.BeginTran();
+                //搴撳瓨涓綋鍓嶆墭鐩樼殑淇℃伅
+                var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList();
+                var locateNo = stockDetail.Select(m => m.LocatNo).Distinct().FirstOrDefault();
+                //褰撳墠浠诲姟涓殑鍌ㄤ綅淇℃伅
+                var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == locateNo);
+                try
+                {
+                    task.Status = "2";//浠诲姟鐘舵��
+                    task.IsSend = 0;
+                    task.IsCancel = 0;
+                    task.IsFinish = 0;
+                    task.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿
+                    Db.Updateable(task).ExecuteCommand();
+                    if (locate != null)
+                    {
+                        locate.Status = "0"; // 鏇存敼褰撳墠浠诲姟涓殑鍌ㄤ綅鐘舵�侊紙鏀逛负0绌哄偍浣嶏級
+                        Db.Updateable(locate).ExecuteCommand();
+                    }
+                    foreach (var item in stockDetail)
+                    {
+                        if (item.SkuNo == "100099")//鍒ゆ柇鏄惁鏄┖鎵樺嚭搴�
+                        {
+                            //鍒ゆ柇鎬诲簱瀛樻槸鍚︿负0锛屽鏋滀负0鍒犻櫎 鍚﹀垯鍑忓幓鏁伴噺
+                            var stock = Db.Queryable<DataStock>().First(m => m.SkuNo == "100099");
+
+                            if (stock != null)
+                            {
+                                if (item.LockQty != null)
+                                {
+                                    stock.Qty -= item.LockQty.Value;
+                                    stock.LockQty -= item.LockQty.Value;
+                                    Db.Updateable(stock).ExecuteCommand();
+                                }
+
+                                if (stock.Qty == 0)
+                                {
+                                    Db.Deleteable(stock).ExecuteCommand();
+                                }
+                            }
+
+                            //鎵樼洏鐘舵�佹敼涓烘湭浣跨敤
+                            var sCode = Db.Queryable<SysPallets>().First(m => m.PalletNo == item.PalletNo);
+                            if (sCode != null)
+                            {
+                                sCode.Status = "0";
+                                Db.Updateable(sCode).ExecuteCommand();
+                            }
+                            Db.Deleteable(item).ExecuteCommand();
+
+                            continue;
+                        }
+                        item.LocatNo = "";//鍌ㄤ綅鏇存敼锛堟敼涓虹┖锛�
+                        item.WareHouseNo = "";//鎵�灞炰粨搴撴洿鏀癸紙鏀逛负绌猴級
+                        item.RoadwayNo = "";//鎵�灞炲贩閬撴洿鏀癸紙鏀逛负绌猴級
+                        item.AreaNo = "";//鎵�灞炲尯鍩熸洿鏀癸紙鏀逛负绌猴級
+                        
+                    }
+                    //鍑哄簱娴佹按锛堟洿鏀圭姸鎬侊級
+                    var allot = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.TaskNo == taskNo || (m.Status == "1" && m.PalletNo == task.PalletNo))).ToList();
+                    var PalletType = "0"; //0锛氱墿鏂欐墭  1锛氱┖鎵樼洏鎵�
+                    
+                    foreach (var item in allot)
+                    {
+                        if (item.SkuNo == "100099")
+                        {
+                            item.Status = "5";
+                            item.CompleteQty += stockDetail[0].Qty;
+                            PalletType = "1";
+                        }
+                        else
+                        {
+                            item.Status = "2";
+                        }
+
+                    }
+
+                    var endLocateList = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && (m.AreaNo == "B02" || m.AreaNo == "B05")).Select(m=>m.LocatNo).ToList();
+                    //鍒ゆ柇鏄惁鏄師杈呮枡鍑哄簱浠诲姟  璐ф灦鍌ㄤ綅=銆嬪钩搴撳偍浣�
+                    if ( endLocateList.Contains(task.EndLocat) && PalletType == "0")
+                    {
+                        //淇敼鐩爣鍦板潃鐘舵��
+                        var endLocat = Db.Queryable<SysStorageLocat>().First(m => m.IsDel == "0" && m.LocatNo == task.EndLocat);
+                        endLocat.Status = "1";
+                        Db.Updateable(endLocat).ExecuteCommand();
+                        foreach (var item in stockDetail)
+                        {
+                            item.LocatNo = endLocat.LocatNo;//鍌ㄤ綅鏇存敼锛堟敼涓虹┖锛�
+                            item.WareHouseNo = endLocat.WareHouseNo;//鎵�灞炰粨搴撴洿鏀癸紙鏀逛负绌猴級
+                            item.RoadwayNo = endLocat.RoadwayNo;//鎵�灞炲贩閬撴洿鏀癸紙鏀逛负绌猴級
+                            item.AreaNo = endLocat.AreaNo;//鎵�灞炲尯鍩熸洿鏀癸紙鏀逛负绌猴級
+                        }
+                    }
+                    Db.Updateable(stockDetail).ExecuteCommand();
+                    Db.Updateable(allot).ExecuteCommand();
+
+                    if (userId != 0)
+                    {
+                        //娣诲姞鎿嶄綔鏃ュ織璁板綍
+                        var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鏃ュ織", taskNo, "瀹屾垚", $"鐐瑰嚮瀹屾垚鎸夐挳銆佸畬鎴愪换鍔″彿涓猴細{taskNo}鐨勪换鍔�", userId);
+                    }
+
+                    Db.CommitTran();
+                }
+                catch (Exception ex)
+                {
+                    Db.RollbackTran();
+                    throw new Exception(ex.Message);
+                }
+            }
+            catch (Exception ex)
+            {
+                throw new Exception("瀹屾垚鍙嶉澶辫触锛�" + ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙绉诲簱鎴愬姛锛�
+        /// </summary>
+        /// <param name="taskNo">浠诲姟鍙�</param>
+        /// <param name="userId">鎿嶄綔浜�</param>
+        /// <exception cref="Exception"></exception>
+        public void RelocationSuccess(string taskNo, int userId)
+        {
+            try
+            {
+                //褰撳墠浠诲姟淇℃伅
+                var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0");
+                if (task == null)
+                {
+                    throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅");
+                }
+                if (task.Status == "2")
+                {
+                    throw new Exception("褰撳墠浠诲姟宸插畬鎴�");
+                }
+                Db.BeginTran();
+                //搴撳瓨涓綋鍓嶆墭鐩樼殑淇℃伅
+                var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList();
+                //褰撳墠浠诲姟涓殑鐩爣鍌ㄤ綅淇℃伅
+                //褰撳墠浠诲姟涓殑鍘熷偍浣�
+                var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.StartLocat);
+                if (locate == null)
+                {
+                    throw new Exception($"WMS绯荤粺涓病鏈夎{task.StartLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�");
+                }
+                var locate2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.EndLocat);
+                if (locate2 == null)
+                {
+                    throw new Exception($"WMS绯荤粺涓病鏈夎{task.EndLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�");
+                }
+                //骞冲簱涓偍浣嶉泦鍚�
+                var pingKuLocate = Db.Queryable<SysStorageLocat>().Where(m => m.WareHouseNo == "W04" && m.IsDel == "0").ToList();
+                var pingKuList = pingKuLocate.Select(m => m.LocatNo).ToList();
+                try
+                {
+
+                    task.Status = "5";//浠诲姟鐘舵��
+                    //鍒ゆ柇璧峰鐩爣浣嶇疆閮芥槸骞冲簱  
+                    if (pingKuList.Contains(task.StartLocat) && pingKuList.Contains(task.EndLocat))
+                    {
+                        task.Status = "2";
+                    }
+                    
+                    task.IsSend = 0;
+                    task.IsCancel = 0;
+                    task.IsFinish = 0;
+                    task.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿
+                    Db.Updateable(task).ExecuteCommand();
+
+                    #region 淇敼鍌ㄤ綅鐘舵��
+
+                    if (!pingKuList.Contains(task.StartLocat))
+                    {
+                        //鍘熷偍浣嶆敼涓虹┖鍌ㄤ綅 0
+                        locate.Status = "0";
+                        Db.Updateable(locate).ExecuteCommand();
+                    }
+                    
+
+                    //鐩爣鍌ㄤ綅鏀逛负鏈夎揣鐗� 1
+                    locate2.Status = "1";
+                    Db.Updateable(locate2).ExecuteCommand();
+                    //鍒ゆ柇璧峰鐩爣浣嶇疆閮芥槸骞冲簱  
+                    if ( pingKuList.Contains(task.EndLocat))
+                    {
+                        foreach (var item in stockDetail)
+                        {
+                            item.WareHouseNo = locate2.WareHouseNo;
+                            item.AreaNo = locate2.AreaNo;
+                            item.RoadwayNo = locate2.RoadwayNo;
+                            item.LocatNo = locate2.LocatNo;
+                        }
+                        Db.Updateable(stockDetail).ExecuteCommand();
+                    }
+                    
+
+                    #endregion
+
+                    Db.CommitTran();
+                }
+                catch (Exception ex)
+                {
+                    Db.RollbackTran();
+                    throw new Exception(ex.Message);
+                }
+            }
+            catch (Exception ex)
+            {
+                throw new Exception("瀹屾垚鍙嶉澶辫触锛�" + ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// AGV浠诲姟鍙栬揣瀹屾垚鍙嶉
+        /// </summary>
+        /// <param name="taskNo"></param> 
+        public void AGVQuHuoSuccess(string taskNo)
+        {
+            try
+            {
+                Db.BeginTran();
+                var task = Db.Queryable<LogTask>().First(m=>m.IsDel =="0" && m.TaskNo == taskNo);
+                if (task == null)
+                {
+                    throw new Exception("娌℃湁鏌ヨ鍒颁换鍔′俊鎭�");
+                }
+                if (task.Status!="1")
+                {
+                    throw new Exception("浠诲姟鐘舵�佷笉鏄鍦ㄦ墽琛岋紝璇锋牳瀹�");
+                }
+                var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.StartLocat && m.IsDel == "0");
+                if (locate == null)
+                {
+                    throw new Exception("娌℃湁鏌ヨ鍒拌捣濮嬪偍浣嶄俊鎭�");
+                }
+                if (locate.WareHouseNo!="W04")
+                {
+                    throw new Exception("璧峰鍌ㄤ綅涓嶆槸骞冲簱鍌ㄤ綅锛岃鏍稿疄");
+                }
+                locate.Status = "0"; //鏇存敼鍌ㄤ綅鐘舵�佷负绌哄偍浣�
+                Db.Updateable(locate).ExecuteCommand();
+                //鏌ヨ鍑烘墭鐩樹俊鎭�  鏇存敼搴撳瓨鍌ㄤ綅淇℃伅
+                var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == task.PalletNo).ToList();
+                foreach (var item in stockDetail)
+                {
+                    item.WareHouseNo = "";
+                    item.AreaNo = "";
+                    item.RoadwayNo = "";
+                    item.LocatNo = "";
+                }
+                Db.Updateable(stockDetail).ExecuteCommand();
+                Db.CommitTran();
+            }
+            catch (Exception e)
+            {
+                Db.RollbackTran();
+                throw new Exception(e.Message);
+            }
+        }
+
+        
         #endregion
 
         #endregion
@@ -5599,338 +5918,6 @@
             }
         }
         
-        //wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙鍑哄簱鎴愬姛锛�
-        public void ExportSuccess(string taskNo, int userId)
-        {
-            try
-            {
-                //褰撳墠浠诲姟淇℃伅
-                var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0");
-                if (task == null)
-                {
-                    throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅");
-                }
-                if (task.Status == "2")
-                {
-                    throw new Exception("褰撳墠浠诲姟宸插畬鎴�");
-                }
-                Db.BeginTran();
-                //搴撳瓨涓綋鍓嶆墭鐩樼殑淇℃伅
-                var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList();
-                var locateNo = stockDetail.Select(m => m.LocatNo).Distinct().FirstOrDefault();
-                //褰撳墠浠诲姟涓殑鍌ㄤ綅淇℃伅
-                var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == locateNo);
-                try
-                {
-                    task.Status = "2";//浠诲姟鐘舵��
-                    task.IsSend = 0;
-                    task.IsCancel = 0;
-                    task.IsFinish = 0;
-                    task.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿
-                    Db.Updateable(task).ExecuteCommand();
-                    if (locate != null)
-                    {
-                        locate.Status = "0"; // 鏇存敼褰撳墠浠诲姟涓殑鍌ㄤ綅鐘舵�侊紙鏀逛负0绌哄偍浣嶏級
-                        Db.Updateable(locate).ExecuteCommand();
-                    }
-                    foreach (var item in stockDetail)
-                    {
-                        if (item.SkuNo == "100099")//鍒ゆ柇鏄惁鏄┖鎵樺嚭搴�
-                        {
-                            //鍒ゆ柇鎬诲簱瀛樻槸鍚︿负0锛屽鏋滀负0鍒犻櫎 鍚﹀垯鍑忓幓鏁伴噺
-                            var stock = Db.Queryable<DataStock>().First(m => m.SkuNo == "100099");
-
-                            if (stock != null)
-                            {
-                                if (item.LockQty != null)
-                                {
-                                    stock.Qty -= item.LockQty.Value;
-                                    stock.LockQty -= item.LockQty.Value;
-                                    Db.Updateable(stock).ExecuteCommand();
-                                }
-
-                                if (stock.Qty == 0)
-                                {
-                                    Db.Deleteable(stock).ExecuteCommand();
-                                }
-                            }
-
-                            //鎵樼洏鐘舵�佹敼涓烘湭浣跨敤
-                            var sCode = Db.Queryable<SysPallets>().First(m => m.PalletNo == item.PalletNo);
-                            if (sCode != null)
-                            {
-                                sCode.Status = "0";
-                                Db.Updateable(sCode).ExecuteCommand();
-                            }
-                            Db.Deleteable(item).ExecuteCommand();
-
-                            #region 鎷h揣淇℃伅
-
-                            //var pickQty = 0;//鎷h揣鐨勬暟閲�
-                            //var comList = new List<BllCompleteDetail>();
-                            //    //娣诲姞鎷h揣鏄庣粏
-                            //    var completeDetail = new BllCompleteDetail()
-                            //    {
-                            //        SONo = "",
-                            //        SODetailNo = 0,
-                            //        ExportAllotId = 0,
-                            //        StockId = exportAllot.StockId,
-                            //        BoxNo = item.BoxNo,
-                            //        BoxNo2 = item.BoxNo2,
-                            //        BoxNo3 = item.BoxNo3,
-
-                            //        LotNo = exportAllot.LotNo,
-                            //        LotText = exportAllot.LotText,
-                            //        SupplierLot = exportAllot.SupplierLot,
-                            //        SkuNo = exportAllot.SkuNo,
-                            //        SkuName = exportAllot.SkuName,
-                            //        Standard = exportAllot.Standard,
-                            //        PalletNo = palletNo,
-                            //        CompleteQty = item.Qty,
-
-                            //        CreateUser = userId
-                            //    };
-                            //    comList.Add(completeDetail);
-
-                            //    //鍒犻櫎搴撳瓨绠辩爜鏄庣粏
-                            //    Db.Deleteable(item).ExecuteCommand();
-                            //    pickQty += item.Qty;
-
-                            //    exportAllot.Status = "5"; //寰呭洖搴� : 宸插畬鎴�
-                            //    exportAllot.CompleteQty += item.Qty; //鎷h揣鏁伴噺
-                            //    exportAllot.UpdateUser = userId; //淇敼浜�
-                            //    exportAllot.UpdateTime = serverTime; //淇敼鏃堕棿
-
-                            //    Db.Updateable(exportAllot).ExecuteCommand();
-
-                            //    //楠岃瘉鎷h揣淇℃伅鏄惁涓哄凡瀹屾垚
-                            //    if (exportAllot.Status == "5")
-                            //    {
-                            //        break;
-                            //    }
-
-
-                            //Db.Insertable(comList).ExecuteCommand();
-
-
-                            #endregion
-
-                            continue;
-                        }
-                        item.LocatNo = "";//鍌ㄤ綅鏇存敼锛堟敼涓虹┖锛�
-                        item.WareHouseNo = "";//鎵�灞炰粨搴撴洿鏀癸紙鏀逛负绌猴級
-                        item.RoadwayNo = "";//鎵�灞炲贩閬撴洿鏀癸紙鏀逛负绌猴級
-                        item.AreaNo = "";//鎵�灞炲尯鍩熸洿鏀癸紙鏀逛负绌猴級
-                        Db.Updateable(item).ExecuteCommand();
-                    }
-                    //鍑哄簱娴佹按锛堟洿鏀圭姸鎬侊級
-                    var allot = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.TaskNo == taskNo || (m.Status == "1" && m.PalletNo == task.PalletNo))).ToList();
-                    var PalletType = "0"; //0锛氱墿鏂欐墭  1锛氱┖鎵樼洏鎵�
-                    var soNo = "";
-                    var sku = "";
-                    foreach (var item in allot)
-                    {
-                        if (item.SkuNo == "100099")
-                        {
-                            item.Status = "5";
-                            item.CompleteQty += stockDetail[0].Qty;
-                            PalletType = "1";
-                        }
-                        else
-                        {
-                            item.Status = "2";
-                            soNo = item.SONo;
-                            sku = item.SkuNo;
-                        }
-
-                    }
-                    //涓嬪彂鍥涙ゼ璋冨害AGV鐨勪换鍔�
-                    if ((task.EndLocat == "outMode" || task.EndLocat == "outMode") && PalletType == "0")
-                    {
-                        foreach (var item in allot)
-                        {
-                            var detail = Db.Queryable<DataStockDetail>().First(m => m.Id == item.StockId);
-                            detail.SONo = item.SONo;
-                            Db.Updateable(detail).ExecuteCommand();
-                        }
-
-                        var locatePing = new AllotLocation().GetPingLocate(soNo, sku);
-                        if (locatePing == null)
-                        {
-                            throw new Exception("骞冲簱鏈煡璇㈠埌绌轰綅缃�");
-                        }
-                        var exTask = new LogTask    //鍑哄簱浠诲姟
-                        {
-                            TaskNo = new Common().GetMaxNo("TK"),
-                            Sender = "WMS",
-                            Receiver = "AGV",
-                            IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
-
-                            StartLocat = task.EndLocat,//璧峰浣嶇疆
-                            EndLocat = locatePing.LocatNo,//outMode,//鐩爣浣嶇疆
-                            PalletNo = task.PalletNo,//鎵樼洏鐮�
-                            IsSend = 1,//鏄惁鍙啀娆′笅鍙�
-                            IsCancel = 1,//鏄惁鍙彇娑�
-                            IsFinish = 1,//鏄惁鍙畬鎴�
-                            Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
-                            Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
-                            OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
-                            Msg = "浠�" + task.EndLocat + "鍒�" + locatePing.LocatNo + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
-                        };
-                        Db.Insertable(exTask).ExecuteCommand();
-
-                        var outDto = new List<OutCommandDto>
-                        {
-                            new OutCommandDto()
-                            {
-                                PalletNo = task.PalletNo,//鎵樼洏鍙�
-                                StartLocate = task.EndLocat, // 璧峰浣嶇疆
-                                StartRoadway = "",//鍏跺疄宸烽亾
-                                EndLocate = locatePing.LocatNo,//outMode, // 鐩爣浣嶇疆 
-                                TaskNo = exTask.TaskNo, // 浠诲姟鍙�
-                                TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)0鍏� 1鍑� 2绉� 
-                                OutMode = "",  //鍑哄簱鍙� 
-                                Order = 1,
-
-                                //UnstackingMode = unstackingMode2,//鎷h揣鏂瑰紡 0鏈哄櫒鎷嗘墭鍑�  1 浜哄伐鎷h揣鍑�
-                                //CompleteQty = outCount2,  //鎷嗙殑浠舵暟
-                                //BoxexQty = outCount,      //鎬讳欢鏁�
-                            }
-                        };
-                        // 姝e紡杩愯绋嬪簭鏀惧紑
-                        var list2 = outDto.Select(m => m.TaskNo).ToList();
-                        var jsonData = JsonConvert.SerializeObject(outDto);
-                        string response = "";
-
-                        try
-                        {
-                            var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss")
-                            //response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS");
-                            var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
-
-                            //////瑙f瀽杩斿洖鏁版嵁 
-                            //var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
-                            //if (wcsModel.StatusCode == 0)
-                            //{
-                            //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
-                            new TaskServer().EditTaskIssueOk(list2, time1, time2); 
-                            //}
-                            //if (wcsModel.StatusCode == -1)
-                            //{
-                            //    new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg);
-                            //    throw new Exception(wcsModel.Msg);
-                            //}
-                        }
-                        catch (Exception ex)
-                        {
-                            throw new Exception(ex.Message);
-                        }
-                    }
-
-                    Db.Updateable(allot).ExecuteCommand();
-
-                    if (userId != 0)
-                    {
-                        //娣诲姞鎿嶄綔鏃ュ織璁板綍
-                        var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鏃ュ織", taskNo, "瀹屾垚", $"鐐瑰嚮瀹屾垚鎸夐挳銆佸畬鎴愪换鍔″彿涓猴細{taskNo}鐨勪换鍔�", userId);
-                    }
-
-                   
-
-                    Db.CommitTran();
-                }
-                catch (Exception ex)
-                {
-                    Db.RollbackTran();
-                    throw new Exception(ex.Message);
-                }
-            }
-            catch (Exception ex)
-            {
-                throw new Exception("瀹屾垚鍙嶉澶辫触锛�" + ex.Message);
-            }
-        }
-
-        /// <summary>
-        /// wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙绉诲簱鎴愬姛锛�
-        /// </summary>
-        /// <param name="taskNo">浠诲姟鍙�</param>
-        /// <param name="userId">鎿嶄綔浜�</param>
-        /// <exception cref="Exception"></exception>
-        public void RelocationSuccess(string taskNo, int userId)
-        {
-            try
-            {
-                //褰撳墠浠诲姟淇℃伅
-                var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0");
-                if (task == null)
-                {
-                    throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅");
-                }
-                if (task.Status == "2")
-                {
-                    throw new Exception("褰撳墠浠诲姟宸插畬鎴�");
-                }
-                Db.BeginTran();
-                //搴撳瓨涓綋鍓嶆墭鐩樼殑淇℃伅
-                var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList();
-                //褰撳墠浠诲姟涓殑鐩爣鍌ㄤ綅淇℃伅
-                //褰撳墠浠诲姟涓殑鍘熷偍浣�
-                var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.StartLocat);
-                if (locate == null)
-                {
-                    throw new Exception($"WMS绯荤粺涓病鏈夎{task.StartLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�");
-                }
-                var locate2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.EndLocat);
-                if (locate2 == null)
-                {
-                    throw new Exception($"WMS绯荤粺涓病鏈夎{task.EndLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�");
-                }
-
-                try
-                {
-                    task.Status = "2";//浠诲姟鐘舵��
-                    task.IsSend = 0;
-                    task.IsCancel = 0;
-                    task.IsFinish = 0;
-                    task.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿
-                    Db.Updateable(task).ExecuteCommand();
-
-                    #region 淇敼鍌ㄤ綅鐘舵��
-
-                    //鍘熷偍浣嶆敼涓虹┖鍌ㄤ綅 0
-                    locate.Status = "0";
-                    Db.Updateable(locate).ExecuteCommand();
-
-                    //鐩爣鍌ㄤ綅鏀逛负鏈夎揣鐗� 1
-                    locate2.Status = "1";
-                    Db.Updateable(locate2).ExecuteCommand();
-                    foreach (var item in stockDetail)
-                    {
-                        item.WareHouseNo = locate2.WareHouseNo;
-                        item.AreaNo = locate2.AreaNo;
-                        item.RoadwayNo = locate2.RoadwayNo;
-                        item.LocatNo = locate2.LocatNo;
-                    }
-                    Db.Updateable(stockDetail).ExecuteCommand();
-
-                    #endregion
-
-                    Db.CommitTran();
-                }
-                catch (Exception ex)
-                {
-                    Db.RollbackTran();
-                    throw new Exception(ex.Message);
-                }
-            }
-            catch (Exception ex)
-            {
-                throw new Exception("瀹屾垚鍙嶉澶辫触锛�" + ex.Message);
-            }
-        }
-
-
         //閲嶆柊涓嬪彂鍑哄簱浠诲姟
         public OutCommandDto AgainSendSoTask(string taskNo, int userId, string url)
         {
diff --git a/Wms/WMS.Entity/DataEntity/DataBoxInfo.cs b/Wms/WMS.Entity/DataEntity/DataBoxInfo.cs
index da64106..0d2e776 100644
--- a/Wms/WMS.Entity/DataEntity/DataBoxInfo.cs
+++ b/Wms/WMS.Entity/DataEntity/DataBoxInfo.cs
@@ -79,10 +79,10 @@
         /// Default:
         /// Nullable:True
         /// </summary>           
-        public decimal? FullQty {get;set;}
+        public decimal? FullQty {get;set; }
 
         /// <summary>
-        /// Desc:鐘舵��
+        /// Desc:鐘舵�� 0 鏈粍鎵�  1宸茬粍鎵� 2 宸插叆搴� 3 宸插嚭搴�  4 宸插垎閰� 5 宸叉嫞璐�
         /// Default:
         /// Nullable:True
         /// </summary>           
diff --git a/Wms/WMS.Entity/DataEntity/DataStockDetail.cs b/Wms/WMS.Entity/DataEntity/DataStockDetail.cs
index 49e77d1..74efbbb 100644
--- a/Wms/WMS.Entity/DataEntity/DataStockDetail.cs
+++ b/Wms/WMS.Entity/DataEntity/DataStockDetail.cs
@@ -269,6 +269,12 @@
         /// Nullable:True
         /// </summary>           
         public string Demo { get; set; }
+        /// <summary>
+        /// Desc:鏄惁闇�瑕佹敹璐ф墭鐩�  1 杞﹂棿鏀惰揣   2 浠撳簱鏀惰揣
+        /// Default:
+        /// Nullable:True
+        /// </summary>           
+        public string UDF5 { get; set; }
 
     }
 }
diff --git a/Wms/WMS.Entity/LogEntity/LogTask.cs b/Wms/WMS.Entity/LogEntity/LogTask.cs
index 6856df2..35bcb33 100644
--- a/Wms/WMS.Entity/LogEntity/LogTask.cs
+++ b/Wms/WMS.Entity/LogEntity/LogTask.cs
@@ -136,7 +136,7 @@
 
         /// <summary>
         /// Desc:鐘舵��
-        /// Default:0 绛夊緟鎵ц 1 姝e湪鎵ц 2 鎵ц瀹屾垚 3 寮傚父缁撴潫 4 宸插彇娑�
+        /// Default:0 绛夊緟鎵ц 1 姝e湪鎵ц 2 鎵ц瀹屾垚 3 寮傚父缁撴潫 4 宸插彇娑�  5绛夊緟纭
         /// Nullable:True
         /// </summary>           
         public string Status {get;set;}
diff --git a/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs b/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs
index fddfb06..80b504d 100644
--- a/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs
+++ b/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs
@@ -195,8 +195,6 @@
         /// <returns>涓嬪彂鐨勬寚浠ら泦鍚�</returns>
         List<OutCommandDto> IssueOutHouse(string soNo, string unstackingMode, string outMode, string loadingAddre, int userId,string url,out string str);
 
-        
-
         /// <summary>
         /// wcs杩斿洖鐨勬垚鍔熶俊鍙锋垨鎵嬪姩瀹屾垚锛堝嚭搴撴垚鍔燂級
         /// </summary>
@@ -213,6 +211,13 @@
         void RelocationSuccess(string taskNo, int userId);
 
         /// <summary>
+        /// AGV浠诲姟鍙栬揣瀹屾垚鍙嶉
+        /// </summary>
+        /// <param name="taskNo"></param>
+        void AGVQuHuoSuccess(string taskNo);
+
+
+        /// <summary>
         /// 閲嶆柊涓嬪彂鍑哄簱浠诲姟
         /// </summary>
         /// <param name="taskNo">浠诲姟鍙�</param> 
diff --git a/Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs b/Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs
index 9c0210f..aaa18a1 100644
--- a/Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs
+++ b/Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs
@@ -156,6 +156,21 @@
         #region 绠辩爜鎷嗙璐存爣
         //绠辩爜鎷嗙娣诲姞鏍囩淇℃伅
         void AddLableByDevanning(string boxNo,decimal devanQty, int userId);
+
+
+        /// <summary>
+        /// 鏍规嵁鏀惰揣鎵樼洏鑾峰彇鍑哄簱鍗曚俊鎭�
+        /// </summary>
+        /// <param name="palletNo"></param>
+        string GetReceiptSoNoByPallet(string palletNo);
+
+        /// <summary>
+        /// 杞﹂棿鏀惰揣
+        /// </summary>
+        /// <param name="palletNo"></param>
+        /// <param name="userId"></param>
+        void ConfirmReceipt(string palletNo, int userId);
+
         #endregion
 
 
diff --git a/Wms/Wms/Controllers/DownApiController.cs b/Wms/Wms/Controllers/DownApiController.cs
index bf8ff98..210aeea 100644
--- a/Wms/Wms/Controllers/DownApiController.cs
+++ b/Wms/Wms/Controllers/DownApiController.cs
@@ -504,7 +504,7 @@
                         }
                         break;
                     case "2"://鐩樺簱瀹屾垚浠诲姟
-                        if (model.TaskType == "1")//0锛氬叆搴� 1锛氬嚭搴� 3锛氱Щ搴�
+                        if (model.TaskType == "1")//0锛氬叆搴� 1锛氬嚭搴� 2锛氱Щ搴�
                         {
                             _crCheckSvc.CheckSuccess(model.TaskNo, 0);
                             return Ok(new WcsModel { StatusCode = 0, Msg = "鐩樼偣鍑哄簱瀹屾垚" });
@@ -516,7 +516,7 @@
                         }
                         break;
                     case "3"://绉诲簱瀹屾垚浠诲姟銆佷紭鍖栧偍浣�
-                        if (model.TaskType == "3") //0锛氬叆搴� 1锛氬嚭搴� 3锛氱Щ搴�
+                        if (model.TaskType == "3") //0锛氬叆搴� 1锛氬嚭搴� 2锛氱Щ搴�
                         {
                             //濉啓绉诲簱瀹屾垚浠g爜
                         }
@@ -534,6 +534,31 @@
 
 
         /// <summary>
+        /// WCS鍙嶉AGV浠诲姟鍙栬揣瀹屾垚
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public IActionResult AGVQuHuoSuccess(ReceiveWcsSignal model)
+        {
+            var logStr = $@".\log\WCS\AGV鍙栬揣瀹屾垚鍙嶉" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
+            try
+            {
+                var jsonData = JsonConvert.SerializeObject(model);
+                LogFile.SaveLogToFile($"AGV鍙栬揣瀹屾垚鍙嶉锛�( {jsonData} ),", logStr);
+
+                _exNoticeSvc.AGVQuHuoSuccess(model.TaskNo);
+                var data = new HttpReturnModel { Success = "0", Message = "鎴愬姛" };
+                LogFile.SaveLogToFile($"AGV鍙栬揣瀹屾垚鍙嶉锛�({JsonConvert.SerializeObject(data)}),", logStr);
+                return Ok(data);
+            }
+            catch (Exception e)
+            {
+                LogFile.SaveLogToFile($"AGV鍙栬揣瀹屾垚鍙嶉锛�( {e.Message} ),", logStr);
+                return Ok(new HttpReturnModel { Success = "-1", Message = e.Message });
+            }
+        }
+
+        /// <summary>
         /// 绌哄彇寮傚父
         /// </summary>
         /// <returns></returns>
diff --git a/Wms/Wms/Controllers/PdaCrController.cs b/Wms/Wms/Controllers/PdaCrController.cs
index 9dea8fb..9a2d0d9 100644
--- a/Wms/Wms/Controllers/PdaCrController.cs
+++ b/Wms/Wms/Controllers/PdaCrController.cs
@@ -323,5 +323,50 @@
         }
         #endregion
 
+        #region 纭鏀惰揣
+
+        /// <summary>
+        /// 鏍规嵁鏀惰揣鎵樼洏鑾峰彇鍑哄簱鍗曚俊鎭�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public IActionResult GetReceiptSoNoByPallet(PdaReceiptVm model)
+        {
+            try
+            {
+
+                var soNo = _pdaCrSvc.GetReceiptSoNoByPallet(model.PalletNo);
+
+                return Ok(new { data = soNo, code = 0, msg = "鎴愬姛" });
+            }
+            catch (Exception e)
+            {
+                return Ok(new { data = "", code = 1, msg = $"寮傚父锛歿e.Message}" });
+            }
+        }
+
+        /// <summary>
+        /// 纭鏀惰揣
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public IActionResult ConfirmReceipt(PdaReceiptVm model)
+        {
+            try
+            {
+                _pdaCrSvc.ConfirmReceipt(model.PalletNo, _userManager.UserId);
+
+                return Ok(new { data = "", code = 0, msg = "鎴愬姛" });
+            }
+            catch (Exception e)
+            {
+                return Ok(new { data = "", code = 1, msg = $"寮傚父锛歿e.Message}" });
+            }
+        }
+
+        #endregion
+
     }
 }

--
Gitblit v1.8.0