From 34971d1815420aab6548d1603fee08c787d53a23 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期二, 25 十一月 2025 09:07:42 +0800
Subject: [PATCH] 优化叫脏桶处理逻辑

---
 Wms/WMS.BLL/BllTransServer/RcsServer.cs |  243 +++++++++++++++++++++++++++++++-----------------
 1 files changed, 155 insertions(+), 88 deletions(-)

diff --git a/Wms/WMS.BLL/BllTransServer/RcsServer.cs b/Wms/WMS.BLL/BllTransServer/RcsServer.cs
index a00753c..4a17d93 100644
--- a/Wms/WMS.BLL/BllTransServer/RcsServer.cs
+++ b/Wms/WMS.BLL/BllTransServer/RcsServer.cs
@@ -14,6 +14,7 @@
 using WMS.BLL.LogServer;
 using WMS.DAL;
 using WMS.Entity.BllAsnEntity;
+using WMS.Entity.BllQualityEntity;
 using WMS.Entity.BllSoEntity;
 using WMS.Entity.Context;
 using WMS.Entity.DataEntity;
@@ -115,6 +116,24 @@
                                 Db.Updateable(pallet).ExecuteCommand();
 
                                 taskMsg = "璁惧鍙噣妗朵换鍔�";
+
+                                try
+                                {
+                                    #region 璇锋眰MES鎺ュ彛鍙戦�佸噣妗剁紪鍙�
+                                    var reObj = new
+                                    {
+                                        deviceCode = pallet.PackagNo,
+                                        reqType = "1"
+                                    };
+                                    string jsonReq = JsonConvert.SerializeObject(reObj);
+                                    var response = HttpHelper.DoPost(urlMes, jsonReq, "鍥炰紶MES鍑�妗剁紪鍙锋帴鏂欒澶�", "MES").ToString();
+                                    var obj = JsonConvert.DeserializeObject<ReMes>(response);//瑙f瀽杩斿洖鏁版嵁                                   
+                                    #endregion
+                                }
+                                catch
+                                { 
+                                
+                                }
                             }
                             break;
                         case "1"://娣锋枡璁惧鍙枡妗讹紙娣锋枡锛�
@@ -216,7 +235,7 @@
                             }
                             break;
                         case "3"://娓呮礂璁惧鍙剰妗�
-                            {
+                            {                               
                                 //鍙《鐩爣鍌ㄤ綅鍦板潃淇℃伅
                                 endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 1);// Column=1 娓呮礂鍌ㄤ綅锛孋olumn=2 娓呮礂瀹屾枡鍌ㄤ綅 
                                 if (endLoction == null)
@@ -247,25 +266,28 @@
                                     throw new Exception("鏆傛棤鑴忔《鍙垎閰�");
                                 }
                                 taskMsg = "璁惧鍙剰妗朵换鍔�";
+                                int callResult = 0;//鏄惁鍙剰妗舵垚鍔�
                                 //閬嶅巻搴撳瓨鑴忔《锛岃繑鍥濵ES楠岃瘉
                                 foreach (var item in palletList)
                                 {
-                                    #region 鍘绘帀MES
+                                    #region 璇锋眰MES鎺ュ彛楠岃瘉璇ユ《鏄惁鏀寔灏忔竻娲�
                                     var reObj = new
                                     {
-                                        devive = item.PackagNo
+                                        deviceCode = item.PalletNo,
+                                        reqType = "0"
                                     };
                                     string jsonReq = JsonConvert.SerializeObject(reObj);
                                     var response = HttpHelper.DoPost(urlMes, jsonReq, "鍥炰紶MES鑴忔《缂栧彿鍒ゆ柇鏄惁鍙竻娲�", "MES").ToString();
                                     var obj = JsonConvert.DeserializeObject<ReMes>(response);//瑙f瀽杩斿洖鏁版嵁
                                     if (obj.state == "200")
                                     {
-                                        if (obj.data != "1")//涓嶅彲娓呮礂锛屽皢鑴忔《鍐荤粨
+                                        if (obj.data.status != "1")//涓嶅彲娓呮礂锛屽皢鑴忔《鍐荤粨
                                         {
                                             item.Status = "5";//寮傚父鍐荤粨
                                             //淇敼璇ユ《搴撳瓨鐘舵��
                                             Db.Updateable(item).ExecuteCommand();
 
+                                            callResult = 1;
                                             continue;
                                         }
                                     }
@@ -276,76 +298,23 @@
                                     #endregion
 
                                     item.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰�
-                                                      //鏇存柊妗跺簱瀛樻槑缁�
+                                    //鏇存柊妗跺簱瀛樻槑缁�
                                     Db.Updateable(item).ExecuteCommand();
-                                    //璧峰鍌ㄤ綅鍦板潃淇℃伅
-                                    var startLoction2 = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == item.LocatNo);
-                                    if (startLoction2 == null)
-                                    {
-                                        throw new Exception($"璧峰鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦紝妗跺彿锛歿item.LocatNo}");
-                                    }
 
-                                    taskNo = new Common().GetMaxNo("TN");//浠诲姟鍙�
-                                    var logTaskEntry2 = new LogTask
-                                    {
-                                        TaskNo = taskNo,
-                                        Sender = "WMS",
-                                        Receiver = "RCS",
-                                        //IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
-                                        SendDate = DateTime.Now,  //鍙戦�佹椂闂�
-                                                                  //BackDate = DateTime.Now,  //杩斿洖鏃堕棿
-                                        StartLocat = item.LocatNo,//璧峰浣嶇疆
-                                        EndLocat = endLoction.LocatNo,//鐩爣浣嶇疆
-                                        PalletNo = item.PalletNo,//鎵樼洏鐮�
-                                        IsSend = 1,//鏄惁鍙啀娆′笅鍙�
-                                        IsCancel = 1,//鏄惁鍙彇娑�
-                                        IsFinish = 1,//鏄惁鍙畬鎴�
-                                        Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
-                                        OrderType = "3",//鍗曟嵁绫诲瀷 0 鍏ュ簱 1 鍑哄簱 3 绉诲簱
-                                        Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
-                                        NoticeDetailNo = int.Parse(noticeNo),
-                                        Msg = taskMsg, //鍏抽敭淇℃伅
-                                        LotNo = item.LotNo//鎵规鍙�
-                                    };
-                                    //缁勭粐涓嬪彂灏忚溅浠诲姟淇℃伅
-                                    var task2 = new TaskDetial
-                                    {
-                                        Taskno = taskNo,//浠诲姟鍙�
-                                        Startport = item.LocatNo,
-                                        Endport = model.Location,//endLoction.LocatNo,
-                                        Pallno = item.PalletNo,
-                                        Crtype = "1",//鍙《
-                                        WareHouseNo = houseNo
-                                    };
-                                    //缁欎笅杞︿笅鍙戜换鍔�
-                                    logTaskEntry2.SendDate = DateTime.Now;//鍙戦�佹椂闂�
-                                    var agvResult2 = CreateTaskForAgv(task2, url, out agvMsg);
-                                    if (agvResult2)//鎴愬姛
-                                    {
-                                        //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬�
-                                        logTaskEntry2.IsSuccess = 1;
-                                        logTaskEntry2.IsSend = 0;
-                                        //logTaskEntry2.IsCancel = 0;
-                                        logTaskEntry2.BackDate = DateTime.Now;
-                                        logTaskEntry2.Status = "1";
-                                        Db.Insertable(logTaskEntry2).ExecuteCommand();
-
-                                        startLoction2.Status = "3";//鍑哄簱涓�
-                                        Db.Updateable(startLoction2).ExecuteCommand();
-
-                                        endLoction.Status = "2";//鍏ュ簱涓�
-                                        Db.Updateable(endLoction).ExecuteCommand();
-                                    }
-                                    else//澶辫触
-                                    {
-                                        logTaskEntry2.IsSuccess = 0;
-                                        logTaskEntry2.Information = agvMsg;
-                                        Db.Insertable(logTaskEntry2).ExecuteCommand();
-
-                                    }
+                                    pallet = item;
+                                    
+                                    callResult = 2;
+                                    break;
+                                }
+                                if (callResult == 1)
+                                {
                                     //鎻愪氦浜嬪姟
                                     Db.CommitTran();
-                                    return;
+                                    throw new Exception("鏆傛棤鑴忔《鍙垎閰�");
+                                }
+                                else if (callResult == 0)
+                                {
+                                    throw new Exception("鏆傛棤鑴忔《鍙垎閰�");
                                 }
                             }
                             break;
@@ -356,7 +325,7 @@
                     var startLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == pallet.LocatNo);
                     if (startLoction == null)
                     {
-                        throw new Exception($"璧峰鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦紝妗跺彿锛歿pallet.LocatNo}");
+                        throw new Exception($"璧峰鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦紝妗跺彿锛歿pallet.PalletNo}");
                     }
 
                     taskNo = new Common().GetMaxNo("TN");//浠诲姟鍙�
@@ -774,7 +743,7 @@
                 Db.BeginTran();
 
                 //鏌ユ壘鏄惁鏈夌┖浣欒剰妗朵綅
-                var endLocat = Db.Queryable<SysStorageLocat>().First(w => w.WareHouseNo == detail.WareHouseNo && w.AreaNo.Contains("04") && w.Status == "0" && w.Flag == "0");
+                var endLocat = GetLocatModel(detail.WareHouseNo, "3");
                 if (endLocat == null)
                 {
                     detail.Status = "5";//寮傚父閿佸畾
@@ -784,27 +753,71 @@
                 }
                 else
                 {
-                    //鐢熸垚璋冨害灏忚溅鍑�妗跺幓鑴忔《鍖轰换鍔�
-                    var ztask = new TaskDetial
+                    var taskNo = new Common().GetMaxNo("TN");//浠诲姟鍙�
+                    //浠诲姟淇℃伅
+                    var logTaskEntry = new LogTask
                     {
-                        Startport = detail.LocatNo,
-                        Endport = endLocat.LocatNo,
-                        Pallno = PalletNo,
-                        Crtype = "2",
+                        TaskNo = taskNo,
+                        Sender = "WMS",
+                        Receiver = "RCS",
+                        //IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+                        SendDate = DateTime.Now,  //鍙戦�佹椂闂�
+                        //BackDate = DateTime.Now,  //杩斿洖鏃堕棿
+                        StartLocat = statrtLocat.LocatNo,//璧峰浣嶇疆
+                        EndLocat = endLocat.LocatNo,//鐩爣浣嶇疆
+                        PalletNo = detail.PalletNo,//妗跺彿
+                        IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+                        IsCancel = 1,//鏄惁鍙彇娑�
+                        IsFinish = 1,//鏄惁鍙畬鎴�
+                        Type = "0",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
+                        OrderType = "3",//鍗曟嵁绫诲瀷 0 鍏ュ簱 1 鍑哄簱 3 绉诲簱
+                        Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+                        NoticeDetailNo = 0,
+                        Msg = "MES涓嬪彂灏嗗噣妗舵敼涓鸿剰妗跺苟鎷夊埌鑴忔《鍖�", //鍏抽敭淇℃伅
+                        LotNo = ""//鎵规鍙�
                     };
-                    string taskNo = "";
+                    var task = new TaskDetial
+                    {
+                        Taskno = taskNo,//浠诲姟鍙�
+                        Startport = statrtLocat.LocatNo,//璧峰浣嶇疆
+                        Endport = endLocat.LocatNo,//鐩爣浣嶇疆
+                        Pallno = detail.PalletNo,
+                        Crtype = "2",//骞冲眰鎼繍
+                        WareHouseNo = detail.WareHouseNo
+                    };
                     string agvMsg = string.Empty;
-                    CreateTaskForAgv(ztask, url, out agvMsg);
+                    //缁欎笅杞︿笅鍙戜换鍔�
+                    logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂�
+                    var agvResult = CreateTaskForAgv(task, url, out agvMsg);
+                    if (agvResult)//鎴愬姛
+                    {
+                        //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬�
+                        logTaskEntry.IsSuccess = 1;
+                        logTaskEntry.IsSend = 0;
+                        //logTaskEntry.IsCancel = 0;
+                        logTaskEntry.BackDate = DateTime.Now;
+                        logTaskEntry.Status = "1";//姝e湪鎵ц
+                        Db.Insertable(logTaskEntry).ExecuteCommand();
 
-                    statrtLocat.Status = "3";//鍑哄簱涓�
-                    //淇敼璧峰鍌ㄤ綅鐘舵��
-                    Db.Updateable(statrtLocat).ExecuteCommand();
+                        statrtLocat.Status = "3";//鍑哄簱涓�
+                        Db.Updateable(statrtLocat).ExecuteCommand();
 
-                    detail.Status = "5";//寮傚父閿佸畾
-                    detail.PalletStatus = "3";//鑴忔《
-                    //淇敼搴撳瓨鐘舵��
-                    Db.Updateable(detail).ExecuteCommand();
+                        endLocat.Status = "2";//鍏ュ簱涓�
+                        Db.Updateable(endLocat).ExecuteCommand();
+
+                        detail.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰�
+                        //鏇存柊妗跺簱瀛樻槑缁�
+                        Db.Updateable(detail).ExecuteCommand();
+
+                    }
+                    else//澶辫触
+                    {
+                        logTaskEntry.IsSuccess = 0;
+                        logTaskEntry.Information = agvMsg;
+                        Db.Insertable(logTaskEntry).ExecuteCommand();
+                    }                  
                 }
+                //鎻愪氦浜嬪姟
                 Db.CommitTran();
             }
             catch (Exception ex)
@@ -879,7 +892,7 @@
                 {
                     Taskno = taskNo,//浠诲姟鍙�
                     Startport = startLoction.LocatNo,//璧峰浣嶇疆
-                    Endport = endLoction.LocatNo,//鐩爣浣嶇疆
+                    Endport = pallnetmsg.Location,//鐩爣浣嶇疆
                     Pallno = detail.PalletNo,//妗跺彿
                     Crtype = "1",//鍙《
                     WareHouseNo = detail.WareHouseNo//杞﹂棿缂栫爜
@@ -1558,5 +1571,59 @@
                 throw new Exception(e.Message);
             }
         }
+
+        /// <summary>
+        /// 璐ㄩ噺缁撴灉涓嬪彂
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
+        public void QualityResult(QualityResultVm model)
+        {
+            try
+            {
+                //楠岃瘉鎵规鍙锋槸鍚︿负绌�
+                if (string.IsNullOrEmpty(model.LotNo))
+                {
+                    throw new Exception("鎵规鍙蜂笉鍙负绌猴紝璇锋牳鏌ワ紒");
+                }
+                //寮�鍚簨鍔�
+                Db.BeginTran();
+
+                BllQualityInspect inspectModel = new BllQualityInspect();
+                inspectModel.InspectNo = "";
+                inspectModel.ASNNo = "";
+                inspectModel.LotNo = model.LotNo;
+                inspectModel.IsQualified = model.IsQualified;
+                inspectModel.Origin = "LIMS"; //鏉ユ簮
+                inspectModel.CreateTime = Db.GetDate(); //鍒涘缓鏃ユ湡
+                inspectModel.SkuNo = ""; //鐗╂枡鍙�
+                inspectModel.SkuName = ""; //鐗╂枡鍚嶇О
+                inspectModel.PassQty = 0; //鍚堟牸鏁伴噺
+                inspectModel.FailQty = 0; //涓嶅悎鏍兼暟閲�
+                inspectModel.Standard = ""; //瑙勬牸
+                inspectModel.CreateUser = 0;
+                //鎻掑叆璐ㄦ淇℃伅
+                Db.Insertable(inspectModel).ExecuteCommand();
+
+                //鏌ユ壘搴撳瓨鏄庣粏淇℃伅
+                List<DataStockDetail> detail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.LotNo == model.LotNo).ToList();
+                foreach (var item in detail)
+                {
+                    item.InspectStatus = model.IsQualified == "1" ? "1" : "2";//0:寰呮楠岋紝1锛氬悎鏍硷紝2锛氫笉鍚堟牸
+
+                    Db.Updateable(item).ExecuteCommand();
+                }
+
+                //鎻愪氦浜嬪姟
+                Db.CommitTran();
+            }
+            catch (Exception ex)
+            {
+                //鍥炴粴浜嬪姟
+                Db.RollbackTran();
+                throw new Exception(ex.Message);
+            }
+        }
     }
 }

--
Gitblit v1.8.0