From 2e435c4920c87c4ffc0ebfa300dc438488ceb74c Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周四, 28 11月 2024 10:29:59 +0800
Subject: [PATCH] 增加 强制出库

---
 CC/iWareCC_ASRS/ThreadService/01_BZ01工位(清灰,洗板后工位)/DataProcess_BZ01.cs |  158 ++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 144 insertions(+), 14 deletions(-)

diff --git "a/CC/iWareCC_ASRS/ThreadService/01_BZ01\345\267\245\344\275\215\357\274\210\346\270\205\347\201\260\357\274\214\346\264\227\346\235\277\345\220\216\345\267\245\344\275\215\357\274\211/DataProcess_BZ01.cs" "b/CC/iWareCC_ASRS/ThreadService/01_BZ01\345\267\245\344\275\215\357\274\210\346\270\205\347\201\260\357\274\214\346\264\227\346\235\277\345\220\216\345\267\245\344\275\215\357\274\211/DataProcess_BZ01.cs"
index 8c4b728..e2c6727 100644
--- "a/CC/iWareCC_ASRS/ThreadService/01_BZ01\345\267\245\344\275\215\357\274\210\346\270\205\347\201\260\357\274\214\346\264\227\346\235\277\345\220\216\345\267\245\344\275\215\357\274\211/DataProcess_BZ01.cs"
+++ "b/CC/iWareCC_ASRS/ThreadService/01_BZ01\345\267\245\344\275\215\357\274\210\346\270\205\347\201\260\357\274\214\346\264\227\346\235\277\345\220\216\345\267\245\344\275\215\357\274\211/DataProcess_BZ01.cs"
@@ -9,6 +9,8 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Net.NetworkInformation;
+using System.Reflection.Emit;
 using System.ServiceModel.Configuration;
 using System.Text;
 using System.Threading;
@@ -31,12 +33,18 @@
             LogType logType = LogType.DataProcess_BZ01;
             while (true)
             {
-                Thread.Sleep(2000);//浼戠湢2绉掞紝灏嗕紤鐪犲啓鍒板墠闈紝鏄负浜嗕笅闈㈢殑continue鏂规硶鎵ц鍚庝笉鏄剧ず閿欒淇℃伅鐨勬彁绀猴紒锛侊紒銆怑ditBy shaocx,2022-05-24銆�
+                Thread.Sleep(1000);//浼戠湢2绉掞紝灏嗕紤鐪犲啓鍒板墠闈紝鏄负浜嗕笅闈㈢殑continue鏂规硶鎵ц鍚庝笉鏄剧ず閿欒淇℃伅鐨勬彁绀猴紒锛侊紒銆怑ditBy shaocx,2022-05-24銆�
                 SystemWarningMsg._lbl_alert_DataProcess_BZ01 = string.Empty;
                 try
                 {
                     if (SystemValue.isAllowRuning_DataProcess_BZ01 && SystemValue.isStartedModel)
                     {
+                        if (FormCC.IsAllowRunOutMode == true)
+                        {
+                            SystemWarningMsg._lbl_alert_DataProcess_BZ01 = $"姝e湪骞插嚭搴撴ā寮忥紝姝ゆ柟娉曟殏鍋溿�傘�� ";
+                            continue;
+                        }
+
                         var rgvLocation = StationLocationEnum.BZ01.ToString();
                         /*
                          * 1銆佷粠鏁版嵁搴撲腑鍒ゆ柇鏄惁榻愬
@@ -61,31 +69,76 @@
                                     SystemWarningMsg._lbl_alert_DataProcess_BZ01 = $"{rgvLocation.ToString()},鏍规嵁UPI:{upiCode}娌℃湁鎵惧埌瀵硅薄 ";
                                     continue;
                                 }
+
+                                var isAllow = IsAllloRunOutTaskMode(wmsDB, upiObj);
+                                if (isAllow)
+                                {
+                                    SystemWarningMsg._lbl_alert_DataProcess_BZ01 = $"{rgvLocation.ToString()},鍒ゆ柇瑕佹墽琛屽嚭搴撴ā寮忎簡锛屾鏂规硶鏆傚仠銆傘�� ";
+                                    continue;
+                                }
+
                                 //鏌ヨ鏄惁榻愬寘
                                 var allList = wmsDB.mes_batchOrderUPI_new.Where(x => x.PackageCode == upiObj.PackageCode).ToList();
-                                var isQiTaoList = allList.Where(x => x.AreaCode == (int)AreaCodeEnum.缂撳瓨鍒嗘嫞鍖�).ToList();
+                                var isQiTaoList = allList.Where(x => x.AreaCode == (int)AreaCodeEnum.寰呯紦瀛樺垎鎷e尯
+                                ||
+                                x.AreaCode == (int)AreaCodeEnum.缂撳瓨鍒嗘嫞鍖�
+                                 ||
+                                x.AreaCode == (int)AreaCodeEnum.鐮佸灈鍖哄煙
+                                  ||
+                                x.AreaCode == (int)AreaCodeEnum.鏈哄櫒浜哄矝缂撳瓨鍖哄煙
+                                ).ToList();
                                 if (isQiTaoList.Count() != allList.Count())
                                 {//涓嶉綈鍖�
                                     qitaoReault = false;
+                                    upiObj.AreaCode = (int)AreaCodeEnum.缂撳瓨鍒嗘嫞鍖�;
                                 }
                                 else
                                 {//榻愬寘
                                     qitaoReault = true;
+                                    upiObj.AreaCode = (int)AreaCodeEnum.鐮佸灈鍖哄煙;
                                 }
-                            }
 
-                            using (StationServiceClient client = new StationServiceClient())
+                                using (StationServiceClient client = new StationServiceClient())
+                                {
+                                    var res = await client.WriteQiTaoInfoAsync((int)EDevice.Station, rgvLocation, qitaoReault);
+                                    if (!res.result)
+                                    {
+                                        SystemWarningMsg._lbl_alert_DataProcess_BZ01 = $"{rgvLocation.ToString()}-鎺ㄩ�侀綈濂楃粨鏋滃け璐�,WriteQiTaoInfoAsync杩斿洖:{res.resMsg}";
+                                        continue;
+                                    }
+                                    else
+                                    {
+                                        Log4NetHelper.WriteInfoLog(logType, $"{rgvLocation.ToString()}-鎺ㄩ�侀綈濂楃粨鏋滄垚鍔�,WriteQiTaoInfoAsync锛屽弬鏁�: 绔欑偣{rgvLocation},榻愬缁撴灉:{qitaoReault}");
+                                    }
+                                }
+
+                                //鏇存柊UPI鐘舵��
+                                var upiObjList = wmsDB.mes_batchOrderUPI_new.Where(x => x.UPI == upiCode).ToList();
+                                foreach (var item in upiObjList)
+                                {
+                                    if (qitaoReault)
+                                    {
+                                        item.UpiStatus = (int)UpiStatusEnum.宸查綈鍖�;
+                                    }
+                                    else
+                                    {
+                                        item.UpiStatus = (int)UpiStatusEnum.涓嶉綈鍖�;
+                                    }
+                                }
+                                //鏇存柊 鏈�鍚庝竴娆″湪 BZ_01鐨勭郴缁熷鐞嗙殑鏉夸欢 鏁版嵁
+                                var rbRunMode = wmsDB.wms_rbline_runmode.FirstOrDefault();
+                                rbRunMode.PlanNo = upiObj.PlanNo;
+                                rbRunMode.OrderId = upiObj.OrderId;
+                                rbRunMode.PackageCode = upiObj.PackageCode;
+
+                                wmsDB.SaveChanges();
+                            }
+                        }
+                        else
+                        {
+                            using (WmsDBModel wmsDB = new WmsDBModel())
                             {
-                                var res = await client.WriteQiTaoInfoAsync((int)EDevice.Station, rgvLocation, qitaoReault);
-                                if (!res.result)
-                                {
-                                    SystemWarningMsg._lbl_alert_DataProcess_BZ01 = $"{rgvLocation.ToString()}-鎺ㄩ�侀綈濂楃粨鏋滃け璐�,WriteQiTaoInfoAsync杩斿洖:{res.resMsg}";
-                                    continue;
-                                }
-                                else
-                                {
-                                    Log4NetHelper.WriteInfoLog(logType, $"{rgvLocation.ToString()}-鎺ㄩ�侀綈濂楃粨鏋滄垚鍔�,WriteQiTaoInfoAsync锛屽弬鏁�: 绔欑偣{rgvLocation},榻愬缁撴灉:{qitaoReault}");
-                                }
+                                var isAllow = IsAllloRunOutTaskMode(wmsDB, null);
                             }
                         }
                     }
@@ -98,5 +151,82 @@
             }
         }
 
+
+        /// <summary>
+        /// 鏄惁鍙互鎵ц鍑哄簱妯″紡
+        /// </summary>
+        /// <param name="wmsDB"></param>
+        /// <param name="curUpiObj"></param>
+        /// <returns></returns>
+        private static bool IsAllloRunOutTaskMode(WmsDBModel wmsDB, mes_batchOrderUPI_new curUpiObj)
+        {
+            //棣栧厛鏌ヨ鏁版嵁搴撲腑鏄惁鏈� 瑕佸嚭搴撶殑鏁版嵁
+            var isExistOutTaskForNewCreated = wmsDB.wms_rbline_task.Where(x => x.RbTaskType == (int)RbTaskTypeEnum.鍑哄簱浠诲姟
+               && x.TaskStatus == (int)TaskStatusEnum.鏂板缓
+              ).Count();
+            if (isExistOutTaskForNewCreated == 0)
+            {
+                FormCC.IsAllowRunOutMode = false;
+                return false;//涓嶈兘鎵ц 鍑哄簱妯″紡
+            }
+
+            var rbRunMode = wmsDB.wms_rbline_runmode.FirstOrDefault();
+            var lastUpi = rbRunMode.UPI;
+            var lastPackageCode = rbRunMode.PackageCode;
+
+            if (curUpiObj == null)
+            {//琛ㄧず姝ゆ椂鏃犳柊鏉胯繃鏉�
+                if (!string.IsNullOrEmpty(lastUpi))
+                {
+                    var lastObj = wmsDB.mes_batchOrderUPI_new.Where(x => x.UPI == lastUpi).FirstOrDefault();
+                    if (lastObj.UpiStatus == (int)UpiStatusEnum.涓嶉綈鍖� || lastObj.UpiStatus == (int)UpiStatusEnum.鍒濆)
+                    {//琛ㄧず鏈�鍚庤繃鍘荤殑鏉挎槸涓嶉綈鍖呯殑鏉�
+                        //鍙互杩愯鎵ц 鍑哄簱妯″紡
+                    }
+                    else
+                    {//琛ㄧず鏈�鍚庤繃鍘荤殑鏉挎槸榻愬寘鐨勬澘
+                        //瑕佺户缁垽鏂悗闈� 寰呭垎鎷e尯鍩熻繕瀛樺湪鐩稿悓鍖呯殑鏉挎暟鎹悧
+                        var isExistSamePackageCode = wmsDB.mes_batchOrderUPI_new.Where(x => x.PackageCode == lastPackageCode
+                                && x.AreaCode == (int)AreaCodeEnum.寰呯紦瀛樺垎鎷e尯).Count();
+                        if (isExistSamePackageCode > 0)
+                        {
+                            FormCC.IsAllowRunOutMode = false;
+                            return false;//涓嶈兘鎵ц 鍑哄簱妯″紡
+                        }
+                        else
+                        {
+                            //鍙互杩愯鎵ц 鍑哄簱妯″紡
+                        }
+                    }
+                }
+                else
+                {
+                    //鍙互杩愯鎵ц 鍑哄簱妯″紡
+                }
+            }
+            else
+            {//琛ㄧず姝ゆ椂鏈夋柊鏉胯繃鏉�
+                if (!string.IsNullOrEmpty(lastUpi))
+                {
+                    if (lastPackageCode == curUpiObj.PackageCode)
+                    {
+                        FormCC.IsAllowRunOutMode = false;
+                        return false;//涓嶈兘鎵ц 鍑哄簱妯″紡
+                    }
+                    else
+                    {//鏂板寘杩囨潵浜�
+                        //鍙互杩愯鎵ц 鍑哄簱妯″紡
+                    }
+                }
+                else
+                {
+                    //鍙互杩愯鎵ц 鍑哄簱妯″紡
+                }
+            }
+
+            FormCC.IsAllowRunOutMode = true;
+            return true;
+        }
+
     }
 }

--
Gitblit v1.9.3