From ea4fe1a6d1decf926292d3d71e7656bbcff4c937 Mon Sep 17 00:00:00 2001
From: Administrator <Administrator@DESKTOP-5BIMHQ3>
Date: 星期三, 03 七月 2024 16:58:52 +0800
Subject: [PATCH] 修改问题

---
 Wms/WMS.BLL/BllTransServer/RcsServer.cs |  227 +++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 156 insertions(+), 71 deletions(-)

diff --git a/Wms/WMS.BLL/BllTransServer/RcsServer.cs b/Wms/WMS.BLL/BllTransServer/RcsServer.cs
index 672a451..eff7a95 100644
--- a/Wms/WMS.BLL/BllTransServer/RcsServer.cs
+++ b/Wms/WMS.BLL/BllTransServer/RcsServer.cs
@@ -1,5 +1,4 @@
-锘縰sing Microsoft.IdentityModel.Protocols;
-using Newtonsoft.Json;
+锘縰sing Newtonsoft.Json;
 using SqlSugar;
 using System;
 using System.Collections.Generic;
@@ -30,7 +29,6 @@
         public void GetPalletNo(Pallnetmsg pallnetmsg)
         {
             DataStockDetail pallet = new DataStockDetail();
-            SysStorageLocat locat = new SysStorageLocat();
             try
             {
                 var house = "W01";//鍙《浣嶇疆锛屽悗缁牴鎹綅缃叧鑱旀垨瀹氫箟锛屾潵鍒ゆ柇鍙《浣嶇疆鎵�灞炶溅闂�
@@ -40,66 +38,13 @@
                 switch (pallnetmsg.Type)
                 {
                     case "0"://鍙噣妗�
-                        List<DataStockDetail> jtpallet = new List<DataStockDetail>();
-                        sql += $"and  WareHouseNo = '{house}' and AreaNo like '%01' order by CreateTime desc";
-                        jtpallet = Db.Ado.SqlQuery<DataStockDetail>(sql).ToList();
-                        if (jtpallet.Count == 0)
+                        sql += $"and WareHouseNo = '{house}' and AreaNo like '%01' and PalletStatus = '0' order by CreateTime desc";
+                        pallet = Db.Ado.SqlQuery<DataStockDetail>(sql).FirstOrDefault();
+                        if (pallet == null)
                         {
                             throw new Exception("鏆傛棤鍑�妗跺彲鍒嗛厤");
                         }
-                        //閬嶅巻搴撳瓨鍑�妗讹紝杩斿洖MES楠岃瘉
-                        foreach (var item in jtpallet)
-                        {
-                            string jsonReq = JsonConvert.SerializeObject(item.PalletNo);
-                            var response = HttpHelper.DoPost(url, jsonReq, "鍥炰紶MES鍑�妗剁紪鍙�", "RCS").ToString();
-                            var obj = JsonConvert.DeserializeObject<ReMes>(response);//瑙f瀽杩斿洖鏁版嵁
-                            if (obj.Success == "0")
-                            {
-                                if (obj.Result != "0")//鍙敤锛岀敓鎴愬皬杞︽媺鍑�妗朵换鍔�
-                                {
-                                    //鏌ユ壘鏄惁鏈夌┖浣欒剰妗朵綅
-                                    sql = $"select LocatNo from SysStorageLocat where AreaNo like '%04' and WareHouseNo = '{house}' and Status = 0";
-                                    locat = Db.Ado.SqlQuery<SysStorageLocat>(sql).FirstOrDefault();
-                                    if (locat == null)
-                                    {
-                                        Db.Ado.BeginTran();
-                                        //鑴忔《鍖烘棤绌轰綑搴撲綅锛屽垯閿佸畾姝ゅ噣妗跺簱瀛�,骞堕噸鏂伴亶鍘�
-                                        sql = $"UPDATE DataStockDetail Set Status = '5' Where locat ='{locat.LocatNo}'";
-                                        Db.Ado.ExecuteCommand(sql);
-                                        Db.Ado.CommitTran();
-                                        break;
-                                    }
-                                    //鐢熸垚璋冨害灏忚溅鍑�妗跺幓鑴忔《鍖轰换鍔�
-                                    var ztask = new TaskDetial
-                                    {
-                                        Startport = item.LocatNo,
-                                        Endport = locat.LocatNo,
-                                        Pallno = item.PalletNo,
-                                        Type = "3",
-                                        Crtype = "0",
-                                        Noticedetailno = int.Parse(noticeno),
-                                    };
-                                    CreateLotTask(ztask);
-                                    continue;
-                                }
-                                //涓嬪彂灏忚溅浠诲姟
-                                var task2 = new TaskDetial
-                                {
-                                    Startport = item.LocatNo,
-                                    Endport = pallnetmsg.Location,
-                                    Pallno = item.PalletNo,
-                                    Type = pallnetmsg.Type,
-                                    Crtype = "1",
-                                    Noticedetailno = int.Parse(noticeno),
-                                };
-                                CreateLotTask(task2);
-                                return;
-                            }
-                            else
-                            {
-                                throw new Exception("鍥炰紶MES鍑�妗剁紪鍙峰け璐ワ紒");
-                            }
-                        }
+
                         break;
                     case "1"://鍙枡妗讹紙娣锋枡锛�
                         //鍒ゆ柇鏄惁鏈夋壒娆″彿
@@ -117,8 +62,8 @@
                         }
                         noticeno = ArriveMes.Id.ToString();*/
                         //鏌ユ壘搴撳瓨涓槸鍚︽湁鍙敤鐨勬鎵规鐨勬贩鏂欐《
-                        sql= $"select PalletNo,LocatNo from DataStockDetail where LotNo =  '{pallnetmsg.LotNo}'and AreaNo like '%02' " +
-                            $"and WareHouseNo = '{house}' and status = '0' order by CompleteTime desc";
+                        sql= $@"select PalletNo,LocatNo from DataStockDetail where LotNo =  '{pallnetmsg.LotNo}'and AreaNo like '%02'
+                                   and WareHouseNo = '{house}' and status = '0' and PalletStatus = '1' order by CompleteTime desc";
                         pallet = Db.Ado.SqlQuery<DataStockDetail>(sql).FirstOrDefault();
                         if (pallet == null)
                         {
@@ -142,8 +87,8 @@
                         }
                         noticeno = bllSo.Id.ToString();
                         //鏌ユ壘搴撳瓨涓槸鍚︽湁姝ゆ壒娆$殑涓嬫枡妗�
-                        sql = $"select PalletNo,LocatNo from DataStockDetail where LotNo =  '{pallnetmsg.LotNo}'and AreaNo like '%03' " +
-                            $"and WareHouseNo = '{house}' and status = '0' order by CompleteTime desc";
+                        sql = $@"select PalletNo,LocatNo from DataStockDetail where LotNo = '{pallnetmsg.LotNo}'and AreaNo like '%03' 
+                                    and WareHouseNo = '{house}' and status = '0' and PalletStatus = '2' order by CompleteTime desc";
                         pallet = Db.Ado.SqlQuery<DataStockDetail>(sql).FirstOrDefault();
                         if (pallet == null)
                         {
@@ -152,13 +97,46 @@
 
                         break;
                     case "3"://鍙剰妗�
-                        sql += $"and WareHouseNo = '{house}' and AreaNo like '%04' order by CreateTime desc";
-                        pallet = Db.Ado.SqlQuery<DataStockDetail>(sql).FirstOrDefault();
-                        if (pallet == null)
+                        sql += $"and WareHouseNo = '{house}' and AreaNo like '%04' and PalletStatus='3' order by CreateTime desc";
+                        List<DataStockDetail> palletList = Db.Ado.SqlQuery<DataStockDetail>(sql).ToList();
+                        if (palletList.Count <= 0)
                         {
                             throw new Exception("鏆傛棤鑴忔《鍙垎閰�");
                         }
+                        //閬嶅巻搴撳瓨鑴忔《锛岃繑鍥濵ES楠岃瘉
+                        foreach (var item in palletList)
+                        {
+                            string jsonReq = JsonConvert.SerializeObject(item.PalletNo);
+                            var response = HttpHelper.DoPost(url, jsonReq, "鍥炰紶MES鑴忔《缂栧彿", "RCS").ToString();
+                            var obj = JsonConvert.DeserializeObject<ReMes>(response);//瑙f瀽杩斿洖鏁版嵁
+                            if (obj.Success == "0")
+                            {
+                                if (obj.Result != "1")//涓嶅彲娓呮礂锛屽皢鑴忔《鍐荤粨
+                                {
+                                    item.Status = "5";//寮傚父鍐荤粨
+                                    //淇敼璇ユ《搴撳瓨鐘舵��
+                                    Db.Updateable(item).ExecuteCommand();
 
+                                    continue;
+                                }
+                                //涓嬪彂灏忚溅浠诲姟
+                                var task2 = new TaskDetial
+                                {
+                                    Startport = item.LocatNo,
+                                    Endport = pallnetmsg.Location,
+                                    Pallno = item.PalletNo,
+                                    Type = pallnetmsg.Type,
+                                    Crtype = "1",
+                                    Noticedetailno = int.Parse(noticeno),
+                                };
+                                CreateLotTask(task2);
+                                return;
+                            }
+                            else
+                            {
+                                throw new Exception("鍥炰紶MES鍑�妗剁紪鍙峰け璐ワ紒");
+                            }
+                        }
                         break;
                 }
                 //涓嬪彂灏忚溅浠诲姟
@@ -178,6 +156,102 @@
             catch (Exception ex)
             {
                 Db.Ado.RollbackTran();
+                throw ex;
+            }
+        }
+
+        /// <summary>
+        /// MES涓嬪彂灏嗗噣妗舵敼涓鸿剰妗跺苟鎷夊埌鑴忔《鍖�
+        /// </summary>
+        /// <param name="PalletNo"></param>
+        /// <returns></returns>
+        public void ChangePalletStatus(string PalletNo)
+        {
+            try
+            {
+                var detail = Db.Queryable<DataStockDetail>().First(w => w.PalletNo == PalletNo && w.PalletStatus == "0");
+                if (detail == null)
+                {
+                    throw new Exception($"搴撳瓨涓笉瀛樺湪妗跺彿涓猴細{PalletNo}鐨勫簱瀛�!");
+                }
+                //璧峰鐩爣鍌ㄤ綅淇℃伅
+                var statrtLocat = Db.Queryable<SysStorageLocat>().First(w => w.WareHouseNo == detail.WareHouseNo && w.AreaNo == detail.AreaNo && w.LocatNo == detail.LocatNo);
+                if (statrtLocat == null)
+                {
+                    throw new Exception($"璇ユ《鎵�鍦ㄧ殑鍌ㄤ綅淇℃伅涓嶅瓨鍦�!");
+                }
+                //寮�鍚簨鍔�
+                Db.BeginTran();
+
+                //鏌ユ壘鏄惁鏈夌┖浣欒剰妗朵綅
+                var endLocat = Db.Queryable<SysStorageLocat>().First(w => w.WareHouseNo == detail.WareHouseNo && w.AreaNo.Contains("04") && w.Status == "0" && w.Flag=="0");
+                if (endLocat == null)
+                {
+                    detail.Status = "5";//寮傚父閿佸畾
+                    detail.PalletStatus = "3";//鑴忔《
+                    //淇敼搴撳瓨鐘舵��
+                    Db.Updateable(detail).ExecuteCommand();
+                }
+                else
+                {
+                    //鐢熸垚璋冨害灏忚溅鍑�妗跺幓鑴忔《鍖轰换鍔�
+                    var ztask = new TaskDetial
+                    {
+                        Startport = detail.LocatNo,
+                        Endport = endLocat.LocatNo,
+                        Pallno = PalletNo,
+                        Type = "3",
+                        Crtype = "2",
+                        Noticedetailno = 0,
+                    };
+                    CreateLotTask(ztask);
+
+                    statrtLocat.Status = "3";//鍑哄簱涓�
+                    //淇敼璧峰鍌ㄤ綅鐘舵��
+                    Db.Updateable(statrtLocat).ExecuteCommand();
+
+                    detail.Status = "5";//寮傚父閿佸畾
+                    detail.PalletStatus = "3";//鑴忔《
+                    //淇敼搴撳瓨鐘舵��
+                    Db.Updateable(detail).ExecuteCommand();
+                }
+                Db.CommitTran();
+            }
+            catch (Exception ex)
+            {
+                Db.RollbackTran();
+                throw ex;
+            }
+        }
+
+        /// <summary>
+        /// MES涓嬪彂娓呮礂閿佸畾鑴忔《
+        /// </summary>
+        /// <param name="pallnetmsg"></param>
+        public void CleanPallet(Pallnetmsg pallnetmsg)
+        {
+            try
+            {
+                var detail = Db.Queryable<DataStockDetail>().First(w => w.PalletNo == pallnetmsg.PalletNo && w.PalletStatus == "3");
+                if (detail == null)
+                {
+                    throw new Exception($"搴撳瓨涓笉瀛樺湪妗跺彿涓猴細{pallnetmsg.PalletNo}鐨勫簱瀛�!");
+                }
+                //涓嬪彂灏忚溅浠诲姟
+                var task = new TaskDetial
+                {
+                    Startport = detail.LocatNo,
+                    Endport = pallnetmsg.Location,
+                    Pallno = detail.PalletNo,
+                    Type = "3",
+                    Crtype = "1",
+                    Noticedetailno = 0,
+                    LotNo = "",
+                };
+                CreateLotTask(task);
+            }
+            catch (Exception ex)
+            {
                 throw ex;
             }
         }
@@ -262,7 +336,7 @@
                 {
                     Startport = pallnetmsg.Location,
                     Endport = loction.LocatNo,
-                    Pallno = pallnetmsg.Palletno,
+                    Pallno = pallnetmsg.PalletNo,
                     Type = pallnetmsg.Type,
                     Crtype = "0",
                     Noticedetailno = int.Parse(noticeno),
@@ -371,7 +445,19 @@
             {
                 //寮�鍚簨鍔�
                 Db.BeginTran();
-                var na = taskDetial.Crtype == "0"?"鍏ュ簱":"鍑哄簱";
+                var na = "";
+                switch (taskDetial.Crtype)
+                {
+                    case "0":
+                        na = "鍏ュ簱";
+                        break;
+                    case "1":
+                        na = "鍑哄簱";
+                        break;
+                    case "2":
+                        na = "绉诲簱";
+                        break;
+                }
                 var bz = "";
                 switch (taskDetial.Type)
                 {
@@ -459,7 +545,7 @@
                 logTaskEntry.IsSuccess = 1;
                 logTaskEntry.BackDate = DateTime.Now;
                 logTaskEntry.Status = "1";
-                if (taskDetial.Crtype == "0")
+                if (taskDetial.Crtype == "0" || taskDetial.Crtype == "2")
                 {
                     sql = $"UPDATE SysStorageLocat SET Status = '2' where LocatNo = '{taskDetial.Endport}'";
                     if (taskDetial.Type == "2")
@@ -483,7 +569,6 @@
                 Db.RollbackTran();
                 throw ex;
             }
-
         }
     }
 }

--
Gitblit v1.8.0