From 7e469b73ac4f022cb78689c6d2b0c4ddee26d18c Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周一, 02 12月 2024 15:37:34 +0800
Subject: [PATCH] 优化

---
 CC/iWareCC_ASRS/ThreadService/04_BZ21(搬运整垛机器人)/DataProcess_BZ21.cs |  315 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 305 insertions(+), 10 deletions(-)

diff --git "a/CC/iWareCC_ASRS/ThreadService/04_BZ21\357\274\210\346\220\254\350\277\220\346\225\264\345\236\233\346\234\272\345\231\250\344\272\272\357\274\211/DataProcess_BZ21.cs" "b/CC/iWareCC_ASRS/ThreadService/04_BZ21\357\274\210\346\220\254\350\277\220\346\225\264\345\236\233\346\234\272\345\231\250\344\272\272\357\274\211/DataProcess_BZ21.cs"
index 9c62d16..77a06ef 100644
--- "a/CC/iWareCC_ASRS/ThreadService/04_BZ21\357\274\210\346\220\254\350\277\220\346\225\264\345\236\233\346\234\272\345\231\250\344\272\272\357\274\211/DataProcess_BZ21.cs"
+++ "b/CC/iWareCC_ASRS/ThreadService/04_BZ21\357\274\210\346\220\254\350\277\220\346\225\264\345\236\233\346\234\272\345\231\250\344\272\272\357\274\211/DataProcess_BZ21.cs"
@@ -1,7 +1,15 @@
-锘縰sing iWareCommon.Utils;
+锘縰sing Admin.NET.Application;
+using iWareCC.Common.Helper;
+using iWareCC.StationService;
+using iWareCommon.Common.Globle;
+using iWareCommon.Utils;
+using iWareModel;
+using iWareSql.DataAccess;
 using iWareSql.WmsDBModel;
+using Newtonsoft.Json.Linq;
 using System;
 using System.Collections.Generic;
+using System.ComponentModel;
 using System.Linq;
 using System.Text;
 using System.Threading;
@@ -11,7 +19,255 @@
 {
     public class DataProcess_BZ21
     {
+        public static void Hander()
+        {
+            var alertMsg = "";
+            LogType logType = LogType.DataProcess_BZ21;
+            while (true)
+            {
+                Thread.Sleep(2000);//浼戠湢2绉掞紝灏嗕紤鐪犲啓鍒板墠闈紝鏄负浜嗕笅闈㈢殑continue鏂规硶鎵ц鍚庝笉鏄剧ず閿欒淇℃伅鐨勬彁绀猴紒锛侊紒銆怑ditBy shaocx,2022-05-24銆�
+                SystemWarningMsg._lbl_alert_DataProcess_BZ21 = string.Empty;
+                try
+                {
+                    if (SystemValue.isStartedModel)
+                    {
 
+                        var rgvLocation = StationLocationEnum.BZ21.ToString();
+                        /*
+                         * 1銆佷粠鏁版嵁搴撲腑鍒ゆ柇鏄惁榻愬
+                         * 2銆佹牴鎹綈濂楃粨鏋滐紝鎺ㄩ�佺粰PLC
+                         */
+                        var obj = FormCC.stationView.R_StationForReadCommList.Where(x => x.StationCode == rgvLocation.ToString()).FirstOrDefault();
+                        if (obj.R_PalletizingAck)
+                        {
+                            //缁橮LC鎺ㄩ�佷换鍔″畬鎺ユ敹瀹屾垚澶嶄綅淇″彿
+                            using (StationServiceClient client = new StationServiceClient())
+                            {
+                                var res = client.WriteStation_ACK((int)EDevice.Station, false, rgvLocation);
+                                if (!res.result)
+                                {
+                                    SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTask = $"{rgvLocation.ToString()}-涓嬪彂鐮佹澘浠诲姟 澶辫触,SetPalletizingTaskFinishAck 杩斿洖:{res.resMsg}";
+                                    continue;
+                                }
+                                else
+                                {
+                                    Log4NetHelper.WriteInfoLog(logType, $"{rgvLocation.ToString()}-涓嬪彂鍏ュ簱浠诲姟 鎴愬姛,SetPalletizingTaskFinishAck锛屽弬鏁�: 绔欑偣{rgvLocation}");
+                                }
+                            }
+
+
+                        }
+                        if (obj.R_ReqParseData)
+                        {
+                            var result = obj.R_ReadCodeResult;
+                            if (string.IsNullOrEmpty(result))
+                            {
+                                SystemWarningMsg._lbl_alert_DataProcess_BZ21 = $"{rgvLocation.ToString()}-璇锋眰浜嗚В鐮侊紝浣嗘槸缁撴灉鏄┖鐨�,姝ゆ寰幆缁撴潫";
+                                continue;
+                            }
+                            short cartonwidth = 0;//绾哥瀹�
+                            short cartonhigh = 0;//绾哥楂�
+                            string place = "22";
+                            using (WmsDBModel wmsDB = new WmsDBModel())
+                            {
+                                //瑕佹槸鏈夊凡涓嬪彂鐨勪换鍔★紝灏变笉瑕佹墽琛�
+                                var isValidate = TaskHandler.ValidateIssueTaskForBZ21(wmsDB, result);
+                                if (!isValidate)
+                                {
+                                    SystemWarningMsg._lbl_alert_DataProcess_BZ21 = $"{rgvLocation.ToString()}-鏈夆�樺凡涓嬪彂鈥欑殑浠诲姟锛屼笉鑳藉鐞�,姝ゆ寰幆缁撴潫";
+                                    continue;
+                                }
+                                var upiObj = wmsDB.mes_batchOrderUPI_new.Where(x => x.UPI == result).FirstOrDefault();
+                                if (upiObj == null)
+                                {
+                                    SystemWarningMsg._lbl_alert_DataProcess_BZ21 = $"{rgvLocation.ToString()},鏍规嵁UPI:{result}娌℃湁鎵惧埌瀵硅薄 ";
+                                    continue;
+                                }
+                                //string upi = "LS070700101B0001GS";
+                                //璋冪敤鍑虹焊鏈烘帴鍙�
+                                var res = new HTTPService("http://172.17.1.22:44374/api/LuLi/").getContent<Respone>("cartons-machine?PackageCode=" + upiObj.PackageCode, Guid.NewGuid(), 10000);
+                                if (res.iState == 0)
+                                {
+                                    /*
+                                    var papertable = wmsDB.mes_push_papercut.Where(x => x.PackageCode == upiObj.PackageCode).OrderByDescending(x => x.Id).FirstOrDefault();
+                                    if (papertable != null)
+                                    {
+                                        papertable.PushStatus = (int)PushStatusEnum.PushSuccess;
+                                        papertable.ApiMessage = res.message;
+                                        papertable.PushNum++;
+                                    }
+                                    else
+                                    {
+                                        var papercut = ClassHelper.RotationMapping<mes_push_papercut, mes_batchOrderUPI_new>(upiObj);
+                                        papercut.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+                                        papercut.ApiMessage = res.message;
+                                        papercut.PushNum = 1;
+                                        papercut.PushStatus = (int)PushStatusEnum.PushSuccess;
+                                        wmsDB.mes_push_papercut.Add(papercut);
+                                    }
+                                    //*/
+                                    var papercut = ClassHelper.RotationMapping<mes_push_papercut, mes_batchOrderUPI_new>(upiObj);
+                                    papercut.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+                                    papercut.ApiMessage = res.message;
+                                    papercut.PushNum = 1;
+                                    papercut.PushStatus = (int)PushStatusEnum.PushSuccess;
+                                    wmsDB.mes_push_papercut.Add(papercut);
+                                }
+                                else
+                                {
+                                    /*
+                                    var papertable = wmsDB.mes_push_papercut.Where(x => x.PackageCode == upiObj.PackageCode).OrderByDescending(x => x.Id).FirstOrDefault();
+                                    if (papertable != null)
+                                    {
+                                        papertable.PushStatus = (int)PushStatusEnum.PushFail;
+                                        papertable.ApiMessage = res.message;
+                                        papertable.PushNum++;
+                                    }
+                                    else
+                                    {
+                                        var papercut = ClassHelper.RotationMapping<mes_push_papercut, mes_batchOrderUPI_new>(upiObj);
+                                        papercut.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+                                        papercut.ApiMessage = res.message;
+                                        papercut.PushNum = 1;
+                                        papercut.PushStatus = (int)PushStatusEnum.PushFail;
+                                        wmsDB.mes_push_papercut.Add(papercut);
+                                    }
+                                    //*/
+                                    var papercut = ClassHelper.RotationMapping<mes_push_papercut, mes_batchOrderUPI_new>(upiObj);
+                                    papercut.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+                                    papercut.ApiMessage = res.message;
+                                    papercut.PushNum = 1;
+                                    papercut.PushStatus = (int)PushStatusEnum.PushFail;
+                                    wmsDB.mes_push_papercut.Add(papercut);
+                                    continue;
+                                }
+                                //鏇存柊琛�
+                                var mesgather = wmsDB.mes_package_gather.Where(x => x.PackageCode == upiObj.PackageCode).FirstOrDefault();
+                                if (mesgather != null)
+                                {
+                                    mesgather.AreaCode = (int)AreaCodeEnum.鍚堝寘瑁佸垏鍖�;
+                                    mesgather.UpiStatus = (int)UpiStatusEnum.宸插悎鍖�;
+                                }
+                                var upilist = wmsDB.mes_batchOrderUPI_new.Where(x => x.PackageCode == upiObj.PackageCode).ToList();
+                                var upilength = upilist.Max(x => x.Length);
+                                var upiwidth = upilist.Max(x => x.Width);
+                                cartonhigh = (short)upiObj.Info3;
+                                cartonwidth = (short)upiObj.Info2;
+                                upiObj.UpiStatus = (int)UpiStatusEnum.宸插悎鍖�;
+                                upiObj.AreaCode = (int)AreaCodeEnum.鍚堝寘瑁佸垏鍖�;
+                                //璁板綍浠诲姟
+                                var _id = Yitter.IdGenerator.YitIdHelper.NextId();
+                                var putpakegecodeid = Yitter.IdGenerator.YitIdHelper.NextId();
+                                var plcTaskNo = BusinessHelper.CreatePlcTaskIdForSrmTask();
+                                //鏂板琛�
+                                var mesinequeue = ClassHelper.RotationMapping<mes_package_linequeue, mes_batchOrderUPI_new>(upiObj);
+                                mesinequeue.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+                                //鏂板mes鎺ㄩ�佽〃
+                                var putpakegecode = new mes_push_packagecode()
+                                {
+                                    Id = putpakegecodeid,
+                                    PackageCode = upiObj.PackageCode,
+                                    PushStatus = 0,
+                                    PushNum = 0,
+                                    ApiMessage = "寰呮帹閫�",
+                                    CreateTime = DateTime.Now,
+                                    CreateUserName = "CC",
+                                    UpdateTime = DateTime.Now,
+                                    UpdateUserName = "CC",
+                                    CreateOrgName = "11"
+                                };
+                                //鏂板浠诲姟琛�
+                                var task = new wms_rbline_task()
+                                {
+                                    Id = _id,
+                                    TaskNo = plcTaskNo,
+                                    UPI = upiObj.UPI,
+                                    Length = upiObj.Length,
+                                    Width = upiObj.Width,
+                                    Thk = upiObj.Thk,
+                                    IssueTime = DateTime.Now,
+                                    PlanNo = upiObj.PlanNo,
+                                    OrderId = upiObj.OrderId,
+                                    PackageCode = upiObj.PackageCode,
+                                    RbTaskType = (int)RbTaskTypeEnum.澶规澘浠诲姟,
+                                    RbTaskTypeEnumName = RbTaskTypeEnum.澶规澘浠诲姟.ToString(),
+                                    TaskStatus = (int)TaskStatusEnum.宸蹭笅鍙�,
+                                    TaskStatusName = TaskStatusEnum.宸蹭笅鍙�.ToString(),
+                                    TaskMsg = "澶规澘",
+                                    CreateTime = DateTime.Now,
+                                    CreateUserName = "CC",
+                                    UpdateTime = DateTime.Now,
+                                    UpdateUserName = "CC",
+                                    PlaceCode = place
+                                };
+                                //鏂板鎵撳嵃琛�
+                                var printid = Yitter.IdGenerator.YitIdHelper.NextId();
+                                var print = ClassHelper.RotationMapping<wms_record_print, mes_batchOrderUPI_new>(upiObj);
+                                print.Id = printid;
+                                print.PrintType = (int)PrintTypeEnum.鍖呰鏉$爜;
+                                print.PrintSource = (int)PrintSourceEnum.鍖呰鏉$爜鎵撳嵃;
+                                print.PrintSheetNum = 1;
+                                print.PrintNum = 0;
+                                print.PrintStatus = (int)PrintStatuEnum.鏈墦鍗�;
+                                print.IsAllowPrint = true;
+                                print.CreateTime = print.UpdateTime = DateTime.Now;
+                                wmsDB.wms_record_print.Add(print);
+                                var printtwo = ClassHelper.RotationMapping<wms_record_print, mes_batchOrderUPI_new>(upiObj);
+                                printtwo.PrintType = (int)PrintTypeEnum.鍖呰鏉$爜;
+                                printtwo.PrintSource = (int)PrintSourceEnum.鍖呰鏉$爜鎵撳嵃;
+                                printtwo.PrintSheetNum = 1;
+                                printtwo.PrintNum = 0;
+                                printtwo.PrintStatus = (int)PrintStatuEnum.鏈墦鍗�;
+                                printtwo.IsAllowPrint = true;
+                                printtwo.CreateTime = print.UpdateTime = DateTime.Now;
+                                printtwo.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+                                wmsDB.wms_record_print.Add(printtwo);
+
+                                wmsDB.mes_package_linequeue.Add(mesinequeue);
+                                wmsDB.wms_rbline_task.Add(task);
+                                wmsDB.mes_push_packagecode.Add(putpakegecode);
+
+                                //澶勭悊琛�  mes_order_gather
+                                var errmsg = "";
+                                var package = wmsDB.mes_package_gather.Where(x => x.PackageCode == upiObj.PackageCode).FirstOrDefault();
+                                var resultAlert = MyExtendHelper.HandlerOrderGather(wmsDB, package, "", "", out errmsg);
+                                if (resultAlert == false)
+                                {
+                                    SystemWarningMsg._lbl_alert_DataProcess_BZ21 = errmsg;
+                                    continue;
+                                }
+
+                                using (StationServiceClient client = new StationServiceClient())
+                                {
+
+                                    var plcres = client.WriteSurroundTaskInfo((int)EDevice.Station, rgvLocation, short.Parse(task.TaskNo),
+                                          (short)upilength, (short)upiwidth, cartonhigh, cartonwidth, 0, 0);
+                                    if (!plcres.result)
+                                    {
+                                        SystemWarningMsg._lbl_alert_DataProcess_BZ12 = $"{rgvLocation.ToString()}-涓嬪彂鍏ュ簱浠诲姟 澶辫触,WriteInStoreTaskInfoAsync 杩斿洖:{plcres.resMsg}";
+                                        continue;
+                                    }
+                                    else
+                                    {
+                                        Log4NetHelper.WriteInfoLog(logType, $"{rgvLocation.ToString()}-涓嬪彂鍏ュ簱浠诲姟 鎴愬姛,WriteInStoreTaskInfoAsync锛屽弬鏁�: 绔欑偣{rgvLocation}");
+                                    }
+                                }
+
+                                wmsDB.SaveChanges();
+                            }
+                        }
+                    }
+                }
+                catch (Exception ex)
+                {
+                    SystemWarningMsg._lbl_alert_DataProcess_BZ21 += " 鍑虹幇寮傚父:" + ex.Message + SysGloble.SPLIT_STR;
+                    Log4NetHelper.WriteErrorLog(logType, " 鍑虹幇寮傚父锛�" + ex.Message, ex);
+                }
+            }
+        }
+        /// <summary>
+        /// 鍚憁es鎺ㄩ�佸寘瑁呭畬鎴�
+        /// </summary>
         public static void PushPackageCode()
         {
             while (true)
@@ -19,13 +275,28 @@
                 Thread.Sleep(2000);
                 using (WmsDBModel edm = new WmsDBModel())
                 {
-                    var value = edm.mes_PushPackageCode.Where(x => x.PushStatus == 0 || x.PushStatus == 1).FirstOrDefault();
+                    var value = edm.mes_push_packagecode.Where(x => x.PushStatus == 0 || x.PushStatus == 1).FirstOrDefault();
                     if (value != null)
                     {
                         PushPackageCodeInput input = new PushPackageCodeInput();
                         input.PackageCode = value.PackageCode;
                         var res = HttpHelper.GetHttpResponse<PushPackageCodeInput, Respone>(" ", input, 10000);
-
+                        if (res.iState == 0)
+                        {
+                            value.PushStatus = (int)PushStatusEnum.PushSuccess;
+                            value.ApiMessage = res.message;
+                        }
+                        else
+                        {
+                            value.PushStatus = (int)PushStatusEnum.Pushing;
+                            value.PushNum++;
+                            value.ApiMessage += res.message;
+                            if (value.PushNum == 3)
+                            {
+                                value.PushStatus = (int)PushStatusEnum.PushFail;
+                            }
+                        }
+                        edm.SaveChanges();
                     }
                 }
             }
@@ -39,7 +310,7 @@
             /// <summary>
             /// 杩斿洖鐮�
             /// </summary>
-            public string code { get; set; }
+            public int iState { get; set; }
 
             /// <summary>
             /// 杩斿洖娑堟伅
@@ -47,14 +318,38 @@
             public string message { get; set; }
 
             /// <summary>
-            /// 璇锋眰缂栧彿
-            /// </summary>
-            public string reqCode { get; set; }
-
-            /// <summary>
-            /// 鑷畾涔夎繑鍥烇紙杩斿洖浠诲姟鍗曞彿锛�
+            /// 鑷畾涔夎繑鍥�
             /// </summary>
             public string data { get; set; }
         }
+        /// <summary>
+        /// 鎺ㄩ�佺姸鎬�  
+        /// </summary>
+        public enum PushStatusEnum
+        {
+            /// <summary>
+            /// 鏈帹閫�
+            /// </summary>
+            [Description("鏈帹閫�")]
+            NotPush = 0,
+
+            /// <summary>
+            /// 鎺ㄩ�佷腑
+            /// </summary>
+            [Description("鎺ㄩ�佷腑")]
+            Pushing = 1,
+
+            /// <summary>
+            /// 鎺ㄩ�佹垚鍔�
+            /// </summary>
+            [Description("鎺ㄩ�佹垚鍔�")]
+            PushSuccess = 2,
+
+            /// <summary>
+            /// 鎺ㄩ�佸け璐�
+            /// </summary>
+            [Description("鎺ㄩ�佸け璐�")]
+            PushFail = 3,
+        }
     }
 }

--
Gitblit v1.9.3