| | |
| | | using System.Linq; |
| | | using System.Net.NetworkInformation; |
| | | using System.Reflection.Emit; |
| | | using System.Security.Cryptography.X509Certificates; |
| | | using System.ServiceModel.Configuration; |
| | | using System.Text; |
| | | using System.Threading; |
| | |
| | | /// </summary> |
| | | public static class DataProcess_BZ01 |
| | | { |
| | | public static string timingForWait = "";//宿¶å¨ï¼çå¾
æ°æ® |
| | | |
| | | /// <summary> |
| | | /// BZ01å·¥ä½ï¼æ¸
ç°ï¼æ´æ¿åå·¥ä½ï¼ |
| | | /// </summary> |
| | |
| | | { |
| | | var alertMsg = ""; |
| | | LogType logType = LogType.DataProcess_BZ01; |
| | | string lastUpi = "";//æåè®°å½çUPIæ°æ® |
| | | |
| | | while (true) |
| | | { |
| | | Thread.Sleep(1000);//ä¼ç 2ç§ï¼å°ä¼ç åå°åé¢ï¼æ¯ä¸ºäºä¸é¢çcontinueæ¹æ³æ§è¡å䏿¾ç¤ºé误信æ¯çæç¤ºï¼ï¼ï¼ãEditBy shaocx,2022-05-24ã |
| | |
| | | SystemWarningMsg._lbl_alert_DataProcess_BZ01 = $"æ£å¨å¹²åºåºæ¨¡å¼ï¼æ¤æ¹æ³æåãã "; |
| | | continue; |
| | | } |
| | | |
| | | |
| | | var rgvLocation = StationLocationEnum.BZ01.ToString(); |
| | | /* |
| | |
| | | SystemWarningMsg._lbl_alert_DataProcess_BZ01 = $"{rgvLocation.ToString()}-请æ±äºè§£ç ï¼ä½æ¯ç»ææ¯ç©ºç,æ¤æ¬¡å¾ªç¯ç»æ"; |
| | | continue; |
| | | } |
| | | if (lastUpi == result) |
| | | { |
| | | SystemWarningMsg._lbl_alert_DataProcess_BZ01 = $"{rgvLocation.ToString()}-éå¤çUPI{result}"; |
| | | continue; |
| | | } |
| | | var upiCode = result; |
| | | lastUpi = upiCode; |
| | | |
| | | var qitaoReault = false;//é½å
ç»æ |
| | | using (WmsDBModel wmsDB = new WmsDBModel()) |
| | | { |
| | |
| | | continue; |
| | | } |
| | | |
| | | //å¢å 坹忰é
ç½®ç管ç ãEditby shaocx,2024-12-13ã |
| | | var sysConfig = wmsDB.SysConfig.Where(x => x.Code == "LastUpi_BZ01").FirstOrDefault(); |
| | | if (sysConfig == null) |
| | | { |
| | | SystemWarningMsg._lbl_alert_DataProcess_BZ01 = $"没æè·åå° LastUpi_BZ01çé
ç½®ä¿¡æ¯ "; |
| | | continue; |
| | | } |
| | | var config_value = sysConfig.Value; |
| | | if (config_value.IndexOf('|') > -1) |
| | | {//æ ¼å¼ä¸º å
å·|UPI|次åº|é½å
ç¶æ |
| | | var arr = config_value.Split('|'); |
| | | var lastPackageCode = arr[0]; |
| | | var lastUpi_BZ01 = arr[1]; |
| | | var lastShelf = Convert.ToInt32(arr[2]); |
| | | var lastQitaoReault = arr[3]; |
| | | |
| | | if (upiObj.PackageCode == lastPackageCode) |
| | | { |
| | | if (upiObj.Shelf == (lastShelf + 1)) |
| | | { |
| | | //é½å
ç¶æ |
| | | if (lastQitaoReault == "é½å
") |
| | | { |
| | | qitaoReault = true; |
| | | } |
| | | else |
| | | { |
| | | qitaoReault = false; |
| | | } |
| | | } |
| | | else |
| | | {//ä¸é½å
|
| | | qitaoReault = false; |
| | | } |
| | | } |
| | | else |
| | | {//è¯´ææ¯æ¢äºå
å·ï¼éæ°éªè¯ é½å
ç¶æ |
| | | #region è®¡ç®æ¯å¦é½å
|
| | | qitaoReault = ValidateQiBao(wmsDB, upiObj); |
| | | #endregion |
| | | } |
| | | } |
| | | else |
| | | {//è¡¨ç¤ºè¿æ²¡æé
ç½® ï¼éæ°éªè¯ é½å
ç¶æ |
| | | #region è®¡ç®æ¯å¦é½å
|
| | | qitaoReault = ValidateQiBao(wmsDB, upiObj); |
| | | #endregion |
| | | } |
| | | |
| | | //å¢å ä¼åéªè¯ ãEditby shaocx,2024-12-16ã |
| | | if (qitaoReault == false) |
| | | { |
| | | var lastPackageUpi_269 = FormCC.Globle_269_LastPackageUpi; |
| | | if (!string.IsNullOrEmpty(lastPackageUpi_269)) |
| | | { |
| | | var arr = lastPackageUpi_269.Split('|'); |
| | | if (upiObj.PackageCode == arr[0]) |
| | | {//æå䏿¬¡å¨269æ«æçå
å· è· ç°å¨BZ01çå
å·ä¸è´,è¦çå¾
|
| | | //wait |
| | | var isWaitOutTime = Wait269(wmsDB); |
| | | if (isWaitOutTime == false) |
| | | { |
| | | continue; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //ç»§ç»å¾ä¸èµ° |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //wait |
| | | var isWaitOutTime = Wait269(wmsDB); |
| | | if (isWaitOutTime == false) |
| | | { |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | |
| | | timingForWait = "";//éç½®æ°æ® |
| | | if (qitaoReault == false) |
| | | { |
| | | upiObj.AreaCode = (int)AreaCodeEnum.ç¼å忣åº; |
| | | } |
| | | else |
| | | { |
| | | upiObj.AreaCode = (int)AreaCodeEnum.ç ååºå; |
| | | } |
| | | /* |
| | | //æ¥è¯¢æ¯å¦é½å
|
| | | var allList = wmsDB.mes_batchOrderUPI_new.Where(x => x.PackageCode == upiObj.PackageCode).ToList(); |
| | | var isQiTaoList = allList.Where(x => x.AreaCode == (int)AreaCodeEnum.å¾
ç¼ååæ£åº |
| | |
| | | } |
| | | else |
| | | { |
| | | qitaoReault = true; |
| | | upiObj.AreaCode = (int)AreaCodeEnum.ç ååºå; |
| | | var isJiXuValidate = true; |
| | | if (upiObj.Shelf != 1) |
| | | { |
| | | var qianmianList = allList.Where(x => x.Shelf < upiObj.Shelf).ToList(); |
| | | //ç以åçæ¿å¨åªéï¼å¿
é¡»é½å¨ ç ååºå |
| | | var yiqianQuyu = AreaCodeEnum.ç ååºå; |
| | | var count_MD = qianmianList.Where(x => x.AreaCode == (int)yiqianQuyu).Count(); |
| | | if (count_MD != qianmianList.Count()) |
| | | { |
| | | isJiXuValidate = false; |
| | | qitaoReault = false; |
| | | upiObj.AreaCode = (int)AreaCodeEnum.ç¼å忣åº; |
| | | } |
| | | } |
| | | |
| | | if (isJiXuValidate) |
| | | {//æ¯å¦ç»§ç»éªè¯ |
| | | //è¿éè¦éªè¯å¨è¿äºåºåä¸ï¼æ¯å¦æ£ç¡®æéï¼å¦ææ²¡ææ£ç¡®æéï¼é£ä¹å°±è®¤ä¸ºä¸é½å¥ ãEditby shaocx,2024-12-12ã |
| | | var queueList = wmsDB.mes_upi_linequeue.Where(x => x.PackageCode == upiObj.PackageCode && x.AreaCode == queryAreaCode) |
| | | .OrderBy(x => x.Id).ToList(); |
| | | var fisrtId = queueList.OrderBy(x => x.Id).First().Id; |
| | | var endId = queueList.OrderByDescending(x => x.Id).First().Id; |
| | | //ç»§ç»æ¥è¯¢è¿ä¸ªæ¶é´æ®µå
çéåæ°æ® |
| | | //éå该éå |
| | | queueList = wmsDB.mes_upi_linequeue.Where(x => x.Id >= fisrtId && x.Id <= endId).OrderBy(x => x.Id).ToList(); |
| | | var syCount = allList.Where(x => x.Shelf >= upiObj.Shelf).Count(); |
| | | if (queueList.Count() != syCount) |
| | | { |
| | | qitaoReault = false; |
| | | upiObj.AreaCode = (int)AreaCodeEnum.ç¼å忣åº; |
| | | } |
| | | else |
| | | { |
| | | //夿æ¯å¦ä¹±åº |
| | | bool isLuanXuan = false; |
| | | int temp_shelf = 0; |
| | | for (int i = 0; i < queueList.Count; i++) |
| | | { |
| | | if (i == 0) |
| | | { |
| | | temp_shelf = queueList[i].Shelf; |
| | | if (temp_shelf != upiObj.Shelf) |
| | | { |
| | | qitaoReault = false; |
| | | isLuanXuan = true; |
| | | upiObj.AreaCode = (int)AreaCodeEnum.ç¼å忣åº; |
| | | break;//è·³åºå¾ªç¯ |
| | | } |
| | | if (queueList[i].Upi != upiObj.UPI) |
| | | { |
| | | qitaoReault = false; |
| | | isLuanXuan = true; |
| | | upiObj.AreaCode = (int)AreaCodeEnum.ç¼å忣åº; |
| | | break;//è·³åºå¾ªç¯ |
| | | } |
| | | } |
| | | else |
| | | { |
| | | temp_shelf = temp_shelf + 1; |
| | | if (temp_shelf != queueList[i].Shelf) |
| | | {//认为乱åºäº |
| | | qitaoReault = false; |
| | | isLuanXuan = true; |
| | | upiObj.AreaCode = (int)AreaCodeEnum.ç¼å忣åº; |
| | | break;//è·³åºå¾ªç¯ |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (isLuanXuan == false) |
| | | { |
| | | qitaoReault = true; |
| | | upiObj.AreaCode = (int)AreaCodeEnum.ç ååºå; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | //注æï¼è¦å é¤è¯¥éåæ°æ®å¦ |
| | | wmsDB.mes_upi_linequeue.Remove(lastUpiLineQueue); |
| | | } |
| | | } |
| | | //*/ |
| | | //if (qitaoReault == false) { |
| | | // //ä¸´æ¶ |
| | | // SystemWarningMsg._lbl_alert_DataProcess_BZ01 = $"模æååï¼æååå"; |
| | | // continue; |
| | | //} |
| | | |
| | | using (StationServiceClient client = new StationServiceClient()) |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | var str_qitaoReault = (qitaoReault ? "é½å
" : "ä¸é½å
"); |
| | | //è®°å½ä¸ç»æ |
| | | sysConfig.Value = upiObj.PackageCode + "|" + upiObj.UPI + "|" + upiObj.Shelf + "|" + str_qitaoReault; |
| | | |
| | | //å é¤è¯¥UPIçç¼åéåæ°æ® |
| | | int queryAreaCode2 = (int)AreaCodeEnum.å¾
ç¼å忣åº; |
| | | var curUpiLineQueue = wmsDB.mes_upi_linequeue.Where(x => x.Upi == upiObj.UPI && x.AreaCode == queryAreaCode2) |
| | | .FirstOrDefault(); |
| | | if (curUpiLineQueue != null) |
| | | { |
| | | wmsDB.mes_upi_linequeue.Remove(curUpiLineQueue); |
| | | } |
| | | |
| | | //æ´æ°UPIç¶æ |
| | | var upiObjList = wmsDB.mes_batchOrderUPI_new.Where(x => x.UPI == upiCode).ToList(); |
| | | foreach (var item in upiObjList) |
| | |
| | | item.UpiStatus = (int)UpiStatusEnum.ä¸é½å
; |
| | | } |
| | | } |
| | | //æ´æ°å
ç¶æ [Editby shaocx,2024-12-15] |
| | | var packageObj = wmsDB.mes_package_gather.Where(x => x.PackageCode == upiObj.PackageCode).FirstOrDefault(); |
| | | if (packageObj != null) |
| | | { |
| | | if (qitaoReault) |
| | | { |
| | | packageObj.UpiStatus = (int)UpiStatusEnum.å·²é½å
; |
| | | packageObj.IsQiBao = true; |
| | | } |
| | | else |
| | | { |
| | | packageObj.UpiStatus = (int)UpiStatusEnum.ä¸é½å
; |
| | | packageObj.IsQiBao = false; |
| | | } |
| | | } |
| | | |
| | | //æ´æ° æå䏿¬¡å¨ BZ_01çç³»ç»å¤ççæ¿ä»¶ æ°æ® |
| | | var rbRunMode = wmsDB.wms_rbline_runmode.FirstOrDefault(); |
| | | rbRunMode.UPI = upiObj.UPI; |
| | | rbRunMode.PlanNo = upiObj.PlanNo; |
| | | rbRunMode.OrderId = upiObj.OrderId; |
| | | rbRunMode.PackageCode = upiObj.PackageCode; |
| | | |
| | | WmsRecordUpiProcessHandler.SaveWmsRecordUpiProcess(wmsDB, upiObj, "BZ01", "é½å
éªè¯:" + (qitaoReault ? "é½å
" : "ä¸é½å
")); |
| | | WmsRecordUpiProcessHandler.SaveWmsRecordUpiProcess(wmsDB, upiObj, "BZ01", "é½å
éªè¯:" + str_qitaoReault); |
| | | |
| | | wmsDB.SaveChanges(); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | SystemWarningMsg._lbl_alert_DataProcess_BZ01 = $"{rgvLocation.ToString()}-没æè¦å¤ççæ°æ®"; |
| | | using (WmsDBModel wmsDB = new WmsDBModel()) |
| | | { |
| | | var isAllow = IsAllloRunOutTaskMode(wmsDB, null); |
| | |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è¶
æ¶éªè¯ |
| | | /// </summary> |
| | | /// <param name="wmsDB"></param> |
| | | /// <param name="time"></param> |
| | | /// <returns>true:è¶
æ¶ falseï¼æªè¶
æ¶</returns> |
| | | private static bool Wait269(WmsDBModel wmsDB) |
| | | { |
| | | var bz30Config = wmsDB.SysConfig.Where(x => x.Code == "Wait_269").FirstOrDefault(); |
| | | if (bz30Config == null) |
| | | { |
| | | SystemWarningMsg._lbl_Alert_DataProcess_ValidateQiTao = $"没æé
ç½® Wait_269 å¼"; |
| | | return false; |
| | | } |
| | | int i = 0; |
| | | bool right = int.TryParse(bz30Config.Value, out i); |
| | | if (right == false) |
| | | { |
| | | SystemWarningMsg._lbl_Alert_DataProcess_ValidateQiTao = $"é
ç½® Wait_269 å¼ä¸æ¯æ´æ°"; |
| | | return false; |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(timingForWait)) |
| | | { |
| | | timingForWait = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); |
| | | } |
| | | |
| | | string time = timingForWait; |
| | | //å¨269æ«æçæ¶é´ |
| | | var time_269 = Convert.ToDateTime(time); |
| | | TimeSpan ts = DateTime.Now - time_269; |
| | | var sec = ts.Seconds; |
| | | if (sec >= i) |
| | | { |
| | | //è¶
æ¶ |
| | | return true; |
| | | } |
| | | SystemWarningMsg._lbl_Alert_DataProcess_ValidateQiTao = $"é
ç½® Wait_269 弿¯{i},å½åé´éæ¯{sec}ç§,æªè¶
æ¶ãå¼å§çå¾
æ¶é´{timingForWait}"; |
| | | return false; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦å¯ä»¥æ§è¡åºåºæ¨¡å¼ |
| | |
| | | /// <returns></returns> |
| | | private static bool IsAllloRunOutTaskMode(WmsDBModel wmsDB, mes_batchOrderUPI_new curUpiObj) |
| | | { |
| | | //ä¸å夿 ãEditby shaocx,2024-12-14ã |
| | | return false; |
| | | |
| | | /* |
| | | //é¦å
æ¥è¯¢æ°æ®åºä¸æ¯å¦æ è¦åºåºçæ°æ® |
| | | var isExistOutTaskForNewCreated = wmsDB.wms_rbline_task.Where(x => |
| | | (x.RbTaskType == (int)RbTaskTypeEnum.é½å
åºåºä»»å¡ || x.RbTaskType == (int)RbTaskTypeEnum.强å¶åºåºä»»å¡) |
| | |
| | | |
| | | FormCC.IsAllowRunOutMode = true; |
| | | return true; |
| | | |
| | | //*/ |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 夿æ¯å¦é½å
|
| | | /// </summary> |
| | | /// <param name="wmsDB"></param> |
| | | /// <param name="upiObj"></param> |
| | | /// <returns></returns> |
| | | private static bool ValidateQiBao(WmsDBModel wmsDB, mes_batchOrderUPI_new upiObj) |
| | | { |
| | | if (upiObj.Shelf != 1) |
| | | { |
| | | return false; |
| | | } |
| | | //æ¥è¯¢æ¯å¦é½å
|
| | | var allList = wmsDB.mes_batchOrderUPI_new.Where(x => x.PackageCode == upiObj.PackageCode).ToList(); |
| | | var isQiTaoList = allList.Where(x => x.AreaCode == (int)AreaCodeEnum.å¾
ç¼ååæ£åº |
| | | || |
| | | x.AreaCode == (int)AreaCodeEnum.ç ååºå |
| | | ).ToList(); |
| | | if (isQiTaoList.Count() != allList.Count()) |
| | | {//ä¸é½å
|
| | | return false; |
| | | } |
| | | else |
| | | {//é½å
|
| | | //è¿éåå¢å 个é»è¾ï¼å¿
é¡»æ¯æç
§æ¬¡åºè¿å
¥çæçæ£çç®é½å
[Editby shaocx,2024-12-06] |
| | | //å¯»æ¾æ¬å
å
çåä¸åæ¿çä½ç½® |
| | | int queryAreaCode = (int)AreaCodeEnum.å¾
ç¼å忣åº; |
| | | var lastUpiLineQueue = wmsDB.mes_upi_linequeue.Where(x => x.PackageCode == upiObj.PackageCode && x.AreaCode == queryAreaCode) |
| | | .OrderBy(x => x.Id).FirstOrDefault();//æ¥è¯¢è¯¥å
éåç第ä¸åæ¿ |
| | | if (lastUpiLineQueue == null) |
| | | {//说æ éå䏿²¡æè¯¥å
çæ°æ® |
| | | return false; |
| | | } |
| | | else |
| | | { |
| | | if (lastUpiLineQueue.Shelf != upiObj.Shelf) |
| | | { |
| | | return false; |
| | | } |
| | | else |
| | | { |
| | | var isJiXuValidate = true; |
| | | if (upiObj.Shelf != 1) |
| | | { |
| | | var qianmianList = allList.Where(x => x.Shelf < upiObj.Shelf).ToList(); |
| | | //ç以åçæ¿å¨åªéï¼å¿
é¡»é½å¨ ç ååºå |
| | | var yiqianQuyu = AreaCodeEnum.ç ååºå; |
| | | var count_MD = qianmianList.Where(x => x.AreaCode == (int)yiqianQuyu).Count(); |
| | | if (count_MD != qianmianList.Count()) |
| | | { |
| | | isJiXuValidate = false; |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | if (isJiXuValidate) |
| | | {//æ¯å¦ç»§ç»éªè¯ |
| | | //è¿éè¦éªè¯å¨è¿äºåºåä¸ï¼æ¯å¦æ£ç¡®æéï¼å¦ææ²¡ææ£ç¡®æéï¼é£ä¹å°±è®¤ä¸ºä¸é½å¥ ãEditby shaocx,2024-12-12ã |
| | | var queueList = wmsDB.mes_upi_linequeue.Where(x => x.PackageCode == upiObj.PackageCode && x.AreaCode == queryAreaCode) |
| | | .OrderBy(x => x.Id).ToList(); |
| | | var fisrtId = queueList.OrderBy(x => x.Id).First().Id; |
| | | var endId = queueList.OrderByDescending(x => x.Id).First().Id; |
| | | //ç»§ç»æ¥è¯¢è¿ä¸ªæ¶é´æ®µå
çéåæ°æ® |
| | | //éå该éå |
| | | queueList = wmsDB.mes_upi_linequeue.Where(x => x.Id >= fisrtId && x.Id <= endId).OrderBy(x => x.Id).ToList(); |
| | | var syCount = allList.Where(x => x.Shelf >= upiObj.Shelf).Count(); |
| | | if (queueList.Count() != syCount) |
| | | { |
| | | return false; |
| | | } |
| | | else |
| | | { |
| | | //夿æ¯å¦ä¹±åº |
| | | bool isLuanXuan = false; |
| | | int temp_shelf = 0; |
| | | for (int i = 0; i < queueList.Count; i++) |
| | | { |
| | | if (i == 0) |
| | | { |
| | | temp_shelf = queueList[i].Shelf; |
| | | if (temp_shelf != upiObj.Shelf) |
| | | { |
| | | isLuanXuan = true; |
| | | return false; |
| | | } |
| | | if (queueList[i].Upi != upiObj.UPI) |
| | | { |
| | | isLuanXuan = true; |
| | | return false; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | temp_shelf = temp_shelf + 1; |
| | | if (temp_shelf != queueList[i].Shelf) |
| | | {//认为乱åºäº |
| | | isLuanXuan = true; |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (isLuanXuan == false) |
| | | { |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | } |
| | | } |