|  |  |  | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //寻æ¾ä¸æ¬¡çBZ01éªè¯è®°å½ | 
|---|
|  |  |  | using (WmsDBModel wmsDB = new WmsDBModel()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var lastRecord = wmsDB.wms_record_upi_process.Where(x => x.Upi == lastUpi && x.Location == "BZ01").OrderByDescending(x => x.Id).FirstOrDefault(); | 
|---|
|  |  |  | if (lastRecord != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //忝妠é½å | 
|---|
|  |  |  | bool my_qitaoReault = false; | 
|---|
|  |  |  | if (lastRecord.UpiStatus == (int)UpiStatusEnum.å·²é½å
) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | my_qitaoReault = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //æ¨éPLC | 
|---|
|  |  |  | using (StationServiceClient client = new StationServiceClient()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var res = await client.WriteQiTaoInfoAsync((int)EDevice.Station, rgvLocation, my_qitaoReault); | 
|---|
|  |  |  | if (!res.result) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | SystemWarningMsg._lbl_alert_DataProcess_BZ01 = $"{rgvLocation.ToString()}-ãåç¬æ¨éPLCãæ¨éé½å¥ç»æå¤±è´¥,WriteQiTaoInfoAsyncè¿å:{res.resMsg}"; | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Log4NetHelper.WriteInfoLog(logType, $"{rgvLocation.ToString()}-ãåç¬æ¨éPLCãæ¨éé½å¥ç»ææå,WriteQiTaoInfoAsyncï¼åæ°: ç«ç¹{rgvLocation},é½å¥ç»æ:{my_qitaoReault}"); | 
|---|
|  |  |  | SystemWarningMsg._lbl_alert_DataProcess_BZ01 = $"{rgvLocation.ToString()}-ãåç¬æ¨éPLCãæ¨éé½å¥ç»ææå"; | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | SystemWarningMsg._lbl_alert_DataProcess_BZ01 = $"{rgvLocation.ToString()}-éå¤çUPI{result}"; | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //*/ | 
|---|
|  |  |  | var upiCode = result; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | //} | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | lastUpi = upiCode; | 
|---|
|  |  |  | using (StationServiceClient client = new StationServiceClient()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var res = await client.WriteQiTaoInfoAsync((int)EDevice.Station, rgvLocation, qitaoReault); | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Log4NetHelper.WriteInfoLog(logType, $"{rgvLocation.ToString()}-æ¨éé½å¥ç»ææå,WriteQiTaoInfoAsyncï¼åæ°: ç«ç¹{rgvLocation},é½å¥ç»æ:{qitaoReault}"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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ç¶æ | 
|---|
|  |  |  | 
|---|
|  |  |  | 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_BZ01 = $"没æé
ç½® Wait_269 å¼"; | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | int i = 0; | 
|---|
|  |  |  | bool right = int.TryParse(bz30Config.Value, out i); | 
|---|
|  |  |  | if (right == false) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | SystemWarningMsg._lbl_alert_DataProcess_BZ01 = $"é
ç½® 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_BZ01 = $"é
ç½® 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|