From b71144811c970ddb7296f5243f722ec6b00cf805 Mon Sep 17 00:00:00 2001
From: liudl <673013083@qq.com>
Date: 星期四, 13 三月 2025 18:52:52 +0800
Subject: [PATCH] 程序修改

---
 Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs |  316 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 312 insertions(+), 4 deletions(-)

diff --git a/Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs b/Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs
index 467a690..ea89850 100644
--- a/Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs
+++ b/Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs
@@ -1,4 +1,7 @@
-锘縰sing DocumentFormat.OpenXml.Presentation;
+锘縰sing Dm.filter;
+using DocumentFormat.OpenXml.Drawing.Charts;
+using DocumentFormat.OpenXml.Office.CustomUI;
+using DocumentFormat.OpenXml.Presentation;
 using Elastic.Clients.Elasticsearch;
 using Furion.Logging;
 using Newtonsoft.Json;
@@ -145,7 +148,7 @@
     }
 
     /// <summary>
-    /// WCS鎺ユ敹WMS涓嬪彂鐨勫叆搴撳崟浠诲姟
+    /// WCS鎺ユ敹WMS涓嬪彂鐨勫嚭鍏ュ簱鍗曚换鍔�
     /// </summary>
     /// <param name="models"></param>
     /// <returns></returns>
@@ -158,12 +161,17 @@
         {
             foreach (var item in models)
             {
+                string str = JsonConvert.SerializeObject(models);
+                Log.Information("鎺ユ敹WMS鎺ㄩ�佺殑绠辩爜淇℃伅锛�" + str);
                 // 楠岃瘉浠诲姟鏄惁宸插瓨鍦�
                 //var taskInfo = _db.Queryable<WcsOderTask>().First(w => w.OrderNo == item.OrderNo && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo);
                 //if (taskInfo == null)
                 //{
-                    var orderAdd = new WcsOderTask()
+                //var taskid = _db.Queryable<WcsOderTask>().OrderByDescending(w=>w.CreateTime).First();
+                //int newid = (int)taskid.Id + 1;
+                var orderAdd = new WcsOderTask()
                     {
+                        
                         OrderNo = item.OrderNo,
                         TaskNo = "",
                         LotNo = item.LotNo,
@@ -172,6 +180,8 @@
                         BoxType = item.BoxType,
                         Qty = item.Qty,
                         TaskType = (TaskTypeEnum)item.TaskType,
+                        CreateTime = DateTime.Now,
+                        Status = TaskStatusEnum.Wait,
                     };
                     _db.Insertable(orderAdd).ExecuteCommand();
                //}
@@ -262,6 +272,7 @@
                         SkuName = models.SkuName,
                         Standard = models.Standard,
                         LotNo = models.LotNo,
+                        LineNo = models.LineNo,                 // 浜х嚎鍙锋垨浜х嚎鍚嶇О
                         Qty = item2.Qty,
                         FullQty = models.FullQty,
                         //SupplierLot = models.SupplierLot,
@@ -277,7 +288,7 @@
                         BoxNo3 = item2.BoxNo3,
                         QtyCount = item2.QtyCount,
                         QtyOrd = item2.QtyOrd,
-
+                        
                         Status = "0",
                         Level = level,
 
@@ -340,4 +351,301 @@
         }
     }
 
+    /// <summary>
+    /// WCS鎺ュ彈璧嬬爜绯荤粺鎺ㄩ�佺殑缁撴壒鎬绘暟閲�
+    /// </summary>
+    /// <param name="models">缁撴壒鏁伴噺淇℃伅</param>
+    /// <returns>鍙嶉淇℃伅</returns>
+    [HttpPost]
+    [AllowAnonymous]
+    public ResponseFuMaModel HttpTotalNum(FumaJiepiModel models)
+    {
+
+        try
+        {
+            string str = JsonConvert.SerializeObject(models);
+            Log.Information("鎺ユ敹璧嬬爜鎺ㄩ�佺殑瀹屽伐缁撴壒鎬绘暟閲忥細" + str);
+            //鏌ョ湅璧嬬爜涓嬪彂鐨勪换鍔′俊鎭槸鍚︽鍦ㄥ垎鎷�
+            var num = _db.Queryable<WcsCheckTask>().Where(m => m.SkuNo == models.SkuNo &&m.LotNo == models.LotNo && m.Status == "1").ToList();
+            if (num.Count < 1)
+            {
+                return new ResponseFuMaModel() { Success = "-1", Message = "璇ユ壒娆℃湭杩涜鍒嗘嫞鎴栧凡缁撴壒" };
+            }
+
+            //鑾峰彇鍖呰鏁伴噺
+            int Fqty = int.Parse(models.FinishQty);
+            int bzQty = 0;
+            var boxinfolog = _db.Queryable<WcsBoxInfoLog>().Where(m => m.SkuNo == models.SkuNo && m.LotNo == models.LotNo && m.BitBoxMark == "0").First();
+            if (boxinfolog == null)
+            {
+                var boxinfo = _db.Queryable<WcsBoxInfo>().Where(m => m.SkuNo == models.SkuNo && m.LotNo == models.LotNo && m.BitBoxMark == "0").First();
+                Fqty = (int)(Fqty /boxinfo.QtyCount);
+                bzQty = (int)boxinfo.QtyCount;
+            }
+            else
+            {
+                Fqty = (int)(Fqty / boxinfolog.QtyCount);
+                bzQty = (int)boxinfolog.QtyCount;
+            }
+            int Jpqty = 0;
+            //鍐欏叆璇ヤ换鍔″畬鎴愭暟閲�
+            foreach (var item in num)
+            {
+                item.FinishQty = Fqty;
+                //鍒ゆ柇褰撳墠鍗曟嵁鐮佸灈鏁伴噺鏄惁鍜屽畬宸ユ暟閲忕浉绛夛紝鏄垯缁撴壒璇ュ崟鎹�
+                var checkNum = _db.Queryable<WcsBoxInfoLog>().Where(m => m.SkuNo == models.SkuNo && m.LotNo == models.LotNo && m.OrderCode == item.OrderNo).ToList();//缁勭洏琛ㄧ鐮佷俊鎭�
+                if (checkNum.Count>0)
+                {
+                    if (checkNum.First().Qty != 0)//鏈夋敮鐮�
+                    {
+                        foreach (var item2 in checkNum)
+                        {
+                            Jpqty = (int)(Jpqty + item2.Qty);
+                        }
+                    }
+                    else//鏃犳敮鐮�
+                    {
+                        foreach (var item2 in checkNum)
+                        {
+                            Jpqty = (int)(Jpqty + item2.QtyCount);
+                        }
+                    }
+                }
+                var checkNum2 = _db.Queryable<WcsBoxInfo>().Where(m => m.SkuNo == models.SkuNo && m.LotNo == models.LotNo && m.OrderCode == item.OrderNo).ToList();//绠辩爜琛ㄥ凡鐮佸灈绠辩爜淇℃伅
+                if (checkNum2.Count>0)
+                {
+                    if (checkNum2.First().Qty != 0)//鏈夋敮鐮�
+                    {
+                        foreach (var item2 in checkNum)
+                        {
+                            Jpqty = (int)(Jpqty + item2.Qty);
+                        }
+                    }
+                    else//鏃犳敮鐮�
+                    {
+                        foreach (var item2 in checkNum)
+                        {
+                            Jpqty = (int)(Jpqty + item2.QtyCount);
+                        }
+                    }
+                }
+                if (Jpqty/bzQty == Fqty)
+                {
+                    //棰勭粨鎵逛俊鍙蜂笅鍙�
+                    var modPlc = _db.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.ConveyorLine && s.Text == ("2灞傛墭鐩樿緭閫佺嚎")).First();
+                    if (modPlc == null)
+                        throw Oops.Bah("鏈壘鍒拌緭閫佺嚎PLC");
+                    PLCUtil plcConn = new PLCUtil(modPlc);
+                    //鑾峰彇宸ヤ綅鐐逛綅淇℃伅
+                    var portno = item.Port;
+                    var modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno).First();
+                    var listPlcDevice = _db.Queryable<WcsDevice>().Where(s => s.StationNum == portno && s.Text.Contains("2妤�")).First();
+                    var ret = plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, "1");//鍐欏叆寮�濮嬬粨鎵逛俊鍙�
+                    if (ret.IsSucceed)
+                    {
+                        item.Status = "2";//缁撴壒涓�
+                    }
+                    else { throw new Exception("瀹屽伐缁撴壒淇″彿涓嬪彂缁橮LC閿欒"); }
+                }
+                _db.Updateable(item).ExecuteCommand();
+                return new ResponseFuMaModel() { Success = "0", Message = "鎺ュ彈瀹屽伐缁撴壒鏁伴噺鎴愬姛" };
+            }
+            
+            return new ResponseFuMaModel() { Success = "0", Message = "鎺ュ彈瀹屽伐缁撴壒鏁伴噺鎴愬姛" };
+        }
+        catch (Exception ex)
+        {
+            return new ResponseFuMaModel() { Success = "-1", Message = ex.Message };
+        }
+    }
+
+
+    /// <summary>
+    /// WCS鎺ュ彈WMS鍏ュ簱鏀捐揣纭鎺ュ彛
+    /// </summary>
+    /// <param name="models"></param>
+    /// <returns>鍙嶉淇℃伅</returns>
+    [HttpPost]
+    [AllowAnonymous]
+    public IsBaleModel2 HttpInConfirm(PortModel models)
+    {
+
+        try
+        {
+            string str = JsonConvert.SerializeObject(models);
+            Log.Information("鎺ユ敹WMS鍏ュ簱鏀捐揣纭锛屾斁璐у彛锛�" + models.Port+"鍏ュ簱鍙�");
+
+            var portno = models.Port;
+            var layer = "3";
+            switch (models.Port)
+            {
+                case "033":
+                    portno = "33";
+                    layer = "1";
+                    break;
+                case "039":
+                    portno = "39";
+                    layer = "1";
+                    break;
+                case "044":
+                    portno = "44";
+                    layer = "1";
+                    break;
+                case "051":
+                    portno = "51";
+                    layer = "1";
+                    break;
+            }
+
+            //妫�娴嬪叆搴撳彛鐘舵�侊紝120涓哄彲鏀撅紝鍗犵敤鍒欎慨鏀逛负130
+            var modPlc = _db.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.ConveyorLine && s.Text == (layer + "灞傛墭鐩樿緭閫佺嚎")).First();
+            if (modPlc == null)
+                throw Oops.Bah("鏈壘鍒拌緭閫佺嚎PLC");
+            PLCUtil plcConn = new PLCUtil(modPlc);
+            //鑾峰彇宸ヤ綅鐐逛綅淇℃伅
+            var listPlcDevice = _db.Queryable<WcsDevice>().Where(s => s.LedIP != null && s.StationNum == portno).First();
+            var modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "PLC").First();
+
+            var (res1, val) = plcConn.GetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos);
+            if (val.ToString() == "120")
+            {
+                //璇诲彇鎴愬姛鍚庡啓鍏�130
+                modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "WCS").First();
+                var ret = plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, "130");//鍗犵敤姝ゅ伐浣�
+                if (ret.IsSucceed)
+                {
+                    //鍥炰紶WMS鍙斁淇″彿
+                    return new IsBaleModel2() { Success = 0, Message = "鎺ュ彈鎴愬姛" };
+                }
+            }
+            return new IsBaleModel2() { Success = -1, Message = "璇诲彇PLC鐐逛綅淇℃伅澶辫触" };
+        }
+        catch (Exception ex)
+        {
+            return new IsBaleModel2() { Success = -1, Message = ex.Message };
+        }
+    }
+
+
+    /// <summary>
+    /// WCS鎺ュ彈WMS鍏ュ簱鏀捐揣璇锋眰鎺ュ彛
+    /// </summary>
+    /// <param name="models"></param>
+    /// <returns>鍙嶉淇℃伅</returns>
+    [HttpPost]
+    [AllowAnonymous]
+    public IsBaleModel2 HttpInRequest(PortRequestModel models)
+    {
+        try
+        {
+            string str = JsonConvert.SerializeObject(models);
+            Log.Information("鎺ユ敹WMS鍏ュ簱鏀捐揣璇锋眰锛屾斁璐у彛锛�" + models.Port + "鍏ュ簱鍙�");
+
+            var portno = models.Port;
+            var layer = "3";
+            switch (models.Port)
+            {
+                case "033":
+                    portno = "33";
+                    layer = "1";
+                    break;
+                case "039":
+                    portno = "39";
+                    layer = "1";
+                    break;
+                case "044":
+                    portno = "44";
+                    layer = "1";
+                    break;
+                case "051":
+                    portno = "51";
+                    layer = "1";
+                    break;
+            }
+
+            var modPlc = _db.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.ConveyorLine && s.Text == (layer + "灞傛墭鐩樿緭閫佺嚎")).First();
+            if (modPlc == null)
+                throw Oops.Bah("鏈壘鍒拌緭閫佺嚎PLC");
+            PLCUtil plcConn = new PLCUtil(modPlc);
+            //鑾峰彇宸ヤ綅鐐逛綅淇℃伅
+            var listPlcDevice = _db.Queryable<WcsDevice>().Where(s=>s.LedIP != null && s.StationNum == portno).First();
+            var modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "浠诲姟鍙�").First();
+            plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, models.TaskNo);//鍐欏叆浠诲姟鍙�
+                                                                                                              //
+            modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "WCS").First();
+            var ret = plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, "140");//鍐欏叆寮�濮嬫斁璐т俊鍙�
+            if (ret.IsSucceed)
+            {
+                //鍥炰紶WMS鏀捐揣淇″彿
+                return new IsBaleModel2() { Success = 0, Message = "鎺ュ彈鎴愬姛" };
+            }
+            return new IsBaleModel2() { Success = -1, Message = "璇诲彇PLC鐐逛綅淇℃伅澶辫触" };
+        }
+        catch (Exception ex)
+        {
+            return new IsBaleModel2() { Success = -1, Message = ex.Message };
+        }
+    }
+
+
+
+    /// <summary>
+    /// WCS鎺ュ彈WMS灏忚溅鏀惧畬鎴愭帴鍙�
+    /// </summary>
+    /// <param name="models"></param>
+    /// <returns>鍙嶉淇℃伅</returns>
+    [HttpPost]
+    [AllowAnonymous]
+    public IsBaleModel2 HttpInFinish(PortModel models)
+    {
+
+        try
+        {
+            string str = JsonConvert.SerializeObject(models);
+            Log.Information("鎺ユ敹WMS鍏ュ簱鏀捐揣瀹屾垚锛屾斁璐у彛锛�" + models.Port + "鍏ュ簱鍙�");
+
+            var portno = models.Port;
+            var layer = "3";
+            switch (models.Port)
+            {
+                case "033":
+                    portno = "33";
+                    layer = "1";
+                    break;
+                case "039":
+                    portno = "39";
+                    layer = "1";
+                    break;
+                case "044":
+                    portno = "44";
+                    layer = "1";
+                    break;
+                case "051":
+                    portno = "51";
+                    layer = "1";
+                    break;
+            }
+
+            var modPlc = _db.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.ConveyorLine && s.Text == (layer + "灞傛墭鐩樿緭閫佺嚎")).First();
+            if (modPlc == null)
+                throw Oops.Bah("鏈壘鍒拌緭閫佺嚎PLC");
+            PLCUtil plcConn = new PLCUtil(modPlc);
+            //鑾峰彇宸ヤ綅鐐逛綅淇℃伅
+            var listPlcDevice = _db.Queryable<WcsDevice>().Where(s => s.LedIP != null && s.StationNum == portno).First();
+            var modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "WCS").First();
+
+            var ret = plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, "160");//鏀惧畬鎴�
+            if (ret.IsSucceed)
+            {
+                //鍥炰紶WMS鏀捐揣淇″彿
+                return new IsBaleModel2() { Success = 0, Message = "鎺ュ彈鎴愬姛" };
+            }
+            return new IsBaleModel2() { Success = -1, Message = "璇诲彇PLC鐐逛綅淇℃伅澶辫触" };
+        }
+        catch (Exception ex)
+        {
+            return new IsBaleModel2() { Success = -1, Message = ex.Message };
+        }
+    }
+
 }
\ No newline at end of file

--
Gitblit v1.8.0