| | |
| | | { |
| | | VOLContext context = new VOLContext(); |
| | | Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context); |
| | | Idt_mes_headRepository mes_HeadRepository = new dt_mes_headRepository(context); |
| | | Idt_mes_detailRepository mes_DetailRepository = new dt_mes_detailRepository(context); |
| | | Idt_inventoryRepository inventoryRepository = new dt_inventoryRepository(context); |
| | | Idt_agvtaskRepository agvtaskRepository = new dt_agvtaskRepository(context); |
| | | IVV_Mes_WorkinfoRepository workinfoRepository = new VV_Mes_WorkinfoRepository(context); |
| | | |
| | | var mes_heads = mes_HeadRepository.Find(x => x.processCode == "28").OrderBy(x => x.expectedStartTime).ToList(); |
| | | //var mes_heads = mes_HeadRepository.Find(x => x.processCode == "28").OrderByDescending(x => x.CreateTime).ToList(); |
| | | foreach (var mes_head in mes_heads) |
| | | var Mes_Works = workinfoRepository.Find(x => x.processCode == "28").OrderBy(x => x.CreateTime).ToList(); |
| | | foreach (var Mes_Work in Mes_Works) |
| | | { |
| | | #region æ ¹æ®åºåå
¥åºæ¶é´æææ¥è¯¢ |
| | | var inventory = inventoryRepository.Find(x => x.FigureNumber == mes_head.drawingNo).OrderByDescending(x => x.OnlineTime).FirstOrDefault(); |
| | | var inventory = inventoryRepository.Find(x => x.SN == Mes_Work.SN).FirstOrDefault(); |
| | | if (inventory != null) |
| | | { |
| | | var Station = stationinfoRepository.Find(x => x.stationCode == inventory.stationCode).FirstOrDefault(); |
| | | var Station = stationinfoRepository.Find(x => x.stationCode == inventory.stationCode).FirstOrDefault();//æ¥æ¾åºåè´§ä½ |
| | | if (Station != null) |
| | | { |
| | | #region åå¨å
¥åºä»»å¡ä¸è½åºåº |
| | | var InTask = stationinfoRepository.Find(x => x.line == Station.line && x.area == Station.area && x.location_state == LocationStateEnum.InBusy.ToString()).Any(); |
| | | if (InTask) continue; |
| | | dt_stationinfo stationinfo = null; |
| | | |
| | | #region åºåºä¸ |
| | | if (Station.area == "1") |
| | | { |
| | | //æ¥æ¾å½åè´§ä½å忝å¦åå¨å
¥åºä»»å¡ |
| | | if (stationinfoRepository.Find(x => x.column == Station.column && x.area == "1" && x.location_state == LocationStateEnum.InBusy.ToString()).Any()) continue; |
| | | |
| | | stationinfo = stationinfoRepository.Find(x => x.column == Station.column && x.enable && x.area == "1" && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).OrderBy(x => x.line).FirstOrDefault(); |
| | | } |
| | | #endregion |
| | | var stationinfo = stationinfoRepository.Find(x => x.line == Station.line && x.area == Station.area && x.enable && x.location_state == LocationStateEnum.Stroge.ToString()).OrderByDescending(x => x.column).FirstOrDefault(); |
| | | else |
| | | { |
| | | //æ¥æ¾å½åè´§ä½å忝å¦åå¨å
¥åºä»»å¡ |
| | | if (stationinfoRepository.Find(x => x.line == Station.line && x.area == Station.area && x.location_state == LocationStateEnum.InBusy.ToString()).Any()) continue; |
| | | |
| | | stationinfo = stationinfoRepository.Find(x => x.line == Station.line && x.area == Station.area && x.enable && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).OrderByDescending(x => x.column).FirstOrDefault(); |
| | | } |
| | | |
| | | if (stationinfo != null) |
| | | { |
| | | if (string.IsNullOrEmpty(stationinfo.bindSN)) |
| | |
| | | stationinfo.location_state = "Abnormal"; |
| | | stationinfoRepository.Update(stationinfo, true); |
| | | continue; |
| | | //throw new Exception(stationinfo.stationCode + "车轮SNå·ä¿¡æ¯å¼å¸¸!"); |
| | | } |
| | | if (agvtaskRepository.Find(x => x.agv_fromaddress == stationinfo.stationCode).Any()) |
| | | continue; |
| | | |
| | | if (agvtaskRepository.Find(x => x.agv_fromaddress == stationinfo.stationCode).Any()) continue; |
| | | |
| | | List<string> lists = new List<string>(); |
| | | var SNS = stationinfo.bindSN.Split(","); |
| | | foreach (var SN in SNS) |
| | |
| | | if (!string.IsNullOrEmpty(SN)) |
| | | lists.Add(SN); |
| | | } |
| | | foreach (var item in lists) |
| | | { |
| | | //var a = mes_DetailRepository.Find(x => x.jobID == mes_head.jobID /*&& x.SN == item*/).ToList(); |
| | | //var b = a.Where(x => x.SN == item).FirstOrDefault(); |
| | | |
| | | if (mes_DetailRepository.Find(x => x.jobID == mes_head.jobID && x.SN == item).Any()) |
| | | #region è´§ä½è½¦è½®å
¨é¨å
å«å¨å·¥åå
åä¸åä»»å¡ |
| | | var count = 0; |
| | | foreach (var SN in lists) |
| | | { |
| | | //if (!workinfoRepository.Find(x => x.processCode == "28" && x.SN.Contains(SN)).Any()) return; |
| | | if (workinfoRepository.Find(x => x.processCode == "28" && x.SN.Contains(SN)).Any()) count++; |
| | | |
| | | } |
| | | if (count != lists.Count) continue; |
| | | dt_agvtask agvtask = new dt_agvtask() |
| | | { |
| | | agv_fromaddress = stationinfo.stationCode, |
| | |
| | | agv_toaddress = "", |
| | | agv_userid = "ç³»ç»", |
| | | bindSN = stationinfo.bindSN, |
| | | jobID = mes_head.jobID, |
| | | agv_worktype = Convert.ToInt32(mes_head.processCode), |
| | | agv_materbarcode = mes_head.materialCode, |
| | | jobID = Mes_Work.jobID, |
| | | agv_worktype = Convert.ToInt32(Mes_Work.processCode), |
| | | agv_materbarcode = Mes_Work.materialCode, |
| | | agv_Traytype = stationinfo.tray_type, |
| | | agv_TrayStatus = stationinfo.tray_status |
| | | }; |
| | |
| | | stationinfoRepository.Update(stationinfo, true); |
| | | agvtaskRepository.Add(agvtask, true); |
| | | WriteDBLog.Success("å建åºåºä»»å¡", $"ä»»å¡ç¼å·ï¼{agvtask.agv_tasknum}", "PCS"); |
| | | return; |
| | | } |
| | | } |
| | | } |
| | | var stationinfos = stationinfoRepository.Find(x => x.stationType == mes_head.drawingNo && x.line != Station.line && x.area == Station.area && x.location_state == "Stroge").OrderBy(x => x.line).ThenByDescending(x => x.column).ToList(); |
| | | foreach (var item in stationinfos) |
| | | { |
| | | if (item != null && stationinfo.enable) |
| | | { |
| | | if (item.bindSN == null) |
| | | { |
| | | stationinfo.remark = "车轮SNå·ä¿¡æ¯å¼å¸¸"; |
| | | stationinfo.location_state = "Abnormal"; |
| | | stationinfoRepository.Update(stationinfo, true); |
| | | continue; |
| | | } |
| | | if (agvtaskRepository.Find(x => x.agv_fromaddress == stationinfo.stationCode).Any()) |
| | | continue; |
| | | List<string> lists = new List<string>(); |
| | | var SNS = stationinfo.bindSN.Split(","); |
| | | foreach (var SN in SNS) |
| | | { |
| | | if (!string.IsNullOrEmpty(SN)) |
| | | lists.Add(SN); |
| | | } |
| | | foreach (var list in lists) |
| | | { |
| | | if (mes_DetailRepository.Find(x => x.jobID == mes_head.jobID && x.SN == list).Any()) |
| | | { |
| | | dt_agvtask agvtask = new dt_agvtask() |
| | | { |
| | | agv_fromaddress = stationinfo.stationCode, |
| | | agv_id = Guid.NewGuid(), |
| | | agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"), |
| | | agv_grade = 1, |
| | | agv_createtime = DateTime.Now, |
| | | agv_taskstate = "Queue", |
| | | agv_materielid = stationinfo.stationType, |
| | | agv_qty = stationinfo.quantity, |
| | | jobID = mes_head.jobID, |
| | | agv_tasktype = "TaskType_Outbound", |
| | | agv_toaddress = "", |
| | | agv_userid = "ç³»ç»", |
| | | bindSN = stationinfo.bindSN, |
| | | agv_worktype = Convert.ToInt32(mes_head.processCode), |
| | | agv_materbarcode = mes_head.materialCode, |
| | | agv_Traytype = stationinfo.tray_type, |
| | | agv_TrayStatus = stationinfo.tray_status |
| | | }; |
| | | WriteDBLog.Success("å建åºåºä»»å¡", $"ä»»å¡ç¼å·ï¼{agvtask.agv_tasknum}", "PCS"); |
| | | agvtaskRepository.Add(agvtask, true); |
| | | return; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | #region MyRegion |
| | | //if (stationinfo != null && stationinfo.enable) |
| | | #endregion |
| | | |
| | | #region è´§ä½è½¦è½®æä¸ä¸ªå
å«å¨å·¥åå
åä¸åä»»å¡ |
| | | //foreach (var SN in lists) |
| | | //{ |
| | | // if (stationinfo.bindSN == null) |
| | | // throw new Exception(stationinfo.stationCode + "车轮SNå·ä¿¡æ¯å¼å¸¸!"); |
| | | // List<string> lists = new List<string>(); |
| | | // var SNS = stationinfo.bindSN.Split(","); |
| | | // foreach (var SN in SNS) |
| | | // { |
| | | // if (!string.IsNullOrEmpty(SN)) |
| | | // lists.Add(SN); |
| | | // } |
| | | // foreach (var item in lists) |
| | | // { |
| | | // if (freeDB.Select<dt_mes_detail>().Where(x => x.jobID == mes_head.jobID && x.SN == item).Any()) |
| | | // if (mes_DetailRepository.Find(x => x.jobID == mes_head.jobID && x.SN == SN).Any()) |
| | | // { |
| | | // dt_agvtask agvtask = new dt_agvtask() |
| | | // { |
| | | // agv_fromaddress = stationinfo.stationCode, |
| | | // agv_id = Guid.NewGuid(), |
| | | // agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"), |
| | | // agv_grade = 1, |
| | | // agv_grade = 2, |
| | | // agv_createtime = DateTime.Now, |
| | | // agv_taskstate = "Queue", |
| | | // agv_materielid = stationinfo.stationType, |
| | |
| | | // agv_toaddress = "", |
| | | // agv_userid = "ç³»ç»", |
| | | // bindSN = stationinfo.bindSN, |
| | | // jobID = mes_head.jobID, |
| | | // agv_worktype = Convert.ToInt32(mes_head.processCode), |
| | | // agv_materbarcode = mes_head.materialCode, |
| | | // agv_Traytype = stationinfo.tray_type, |
| | | // agv_TrayStatus = stationinfo.tray_status |
| | | // }; |
| | | // dt_stationinfo TargetLocation = GetEmptyLocation(stationinfoRepository); |
| | | // if (TargetLocation != null) |
| | | // { |
| | | // agvtask.agv_taskstate = "Create"; |
| | | // agvtask.agv_toaddress = TargetLocation.stationCode; |
| | | // TargetLocation.location_state = LocationStateEnum.Busy.ToString(); |
| | | // freeDB.Update(TargetLocation); |
| | | // } |
| | | // freeDB.Add(agvtask); |
| | | // return; |
| | | // } |
| | | // stationinfo.location_state = LocationStateEnum.OutBusy.ToString(); |
| | | // stationinfoRepository.Update(stationinfo, true); |
| | | // agvtaskRepository.Add(agvtask, true); |
| | | // WriteDBLog.Success("å建åºåºä»»å¡", $"ä»»å¡ç¼å·ï¼{agvtask.agv_tasknum}", "PCS"); |
| | | // continue; |
| | | // } |
| | | //} |
| | | #endregion |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region MyRegion |
| | | //var station = stationinfoRepository.Find(x => x.stationType == mes_head.drawingNo && x.line != x.line).OrderBy(x => x.line).ThenByDescending(x => x.column).FirstOrDefault(); |
| | | //bool ok = false; |
| | | //List<string> list = new List<string>(); |
| | | //if (station != null && station.location_state == LocationStateEnum.Stroge.ToString() && station.enable) |
| | | //{ |
| | | // var SNS = station.bindSN.Split(","); |
| | | // foreach (var SN in SNS) |
| | | // { |
| | | // if (!string.IsNullOrEmpty(SN)) |
| | | // list.Add(SN); |
| | | // } |
| | | //} |
| | | //foreach (var SN in list) |
| | | //{ |
| | | // if (ok = freeDB.Select<dt_mes_detail>().Where(x => x.jobID == mes_head.jobID && x.SN == SN).Any()) continue; |
| | | //} |
| | | //if (ok) |
| | | //{ |
| | | // dt_agvtask agvtask = new dt_agvtask() |
| | | // { |
| | | // agv_fromaddress = station.stationCode, |
| | | // agv_id = Guid.NewGuid(), |
| | | // agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"), |
| | | // agv_grade = 1, |
| | | // agv_createtime = DateTime.Now, |
| | | // agv_taskstate = "Queue", |
| | | // agv_materielid = station.stationType, |
| | | // agv_qty = station.quantity, |
| | | // agv_tasktype = "TaskType_Outbound", |
| | | // agv_toaddress = "", |
| | | // agv_userid = "ç³»ç»", |
| | | // bindSN = station.bindSN, |
| | | // agv_worktype = Convert.ToInt32(mes_head.processCode), |
| | | // agv_materbarcode = mes_head.materialCode, |
| | | // agv_barcode = station.tray_type |
| | | // }; |
| | | // dt_stationinfo TargetLocation = GetEmptyLocation(stationinfoRepository); |
| | | // if (TargetLocation != null) |
| | | // { |
| | | // agvtask.agv_taskstate = "Create"; |
| | | // agvtask.agv_toaddress = TargetLocation.stationCode; |
| | | // TargetLocation.location_state = LocationStateEnum.Busy.ToString(); |
| | | // freeDB.Update(TargetLocation); |
| | | // } |
| | | // freeDB.Add(agvtask); |
| | | //} |
| | | #endregion |
| | | |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |