| | |
| | | using Newtonsoft.Json; |
| | | using Microsoft.EntityFrameworkCore; |
| | | using Newtonsoft.Json; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Threading.Tasks; |
| | |
| | | using WIDESEA_Comm.MES_Info.Request; |
| | | using WIDESEA_Comm.TaskNo; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_Core.BaseProvider; |
| | | using WIDESEA_Core.EFDbContext; |
| | | using WIDESEA_Core.ManageUser; |
| | | using WIDESEA_Core.Utilities; |
| | |
| | | { |
| | | public partial class ToMesServer |
| | | { |
| | | /// <summary> |
| | | /// 人工åºåº |
| | | /// </summary> |
| | | /// <param name="saveModel"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent Outsource(SaveModel saveModel) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | VOLContext context = new VOLContext(); |
| | | Idt_inventoryRepository inventoryRepository = new dt_inventoryRepository(context); |
| | | Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context); |
| | | string sn = saveModel.MainData["dataSN"].ToString(); //车轮SNå· |
| | | string user = saveModel.MainData["creator"].ToString(); |
| | | string str = ""; |
| | | try |
| | | { |
| | | List<string> list = new List<string>(); |
| | | foreach (var SN in sn.Split(",")) |
| | | { |
| | | if (!string.IsNullOrEmpty(SN)) |
| | | list.Add(SN); |
| | | } |
| | | var inventoryList = inventoryRepository.Find(x => list.Contains(x.SN)).ToList(); |
| | | |
| | | foreach (var inventorys in inventoryList.GroupBy(x => x.stationCode)) |
| | | { |
| | | try |
| | | { |
| | | List<detail> lists = new List<detail>(); |
| | | foreach (var inventory in inventorys) |
| | | { |
| | | detail detail = new detail(); |
| | | detail.sn = inventory.SN; |
| | | lists.Add(detail); |
| | | str += str == "" ? inventory.SN : "," + inventory.SN; |
| | | } |
| | | agvInWarehousePara outWarehousePara = new agvInWarehousePara() |
| | | { |
| | | zoneID = inventorys.Key, |
| | | details = lists, |
| | | layerNo = 1, |
| | | stackID = "1", |
| | | warehouseName = "Agvåº", |
| | | Operator = UserContext.Current.UserName, |
| | | }; |
| | | |
| | | Idt_info_to_mesRepository mesRepository = new dt_info_to_mesRepository(context); |
| | | var postJson = JsonConvert.SerializeObject(outWarehousePara); |
| | | dt_info_to_mes info_To_Mes = new dt_info_to_mes() |
| | | { |
| | | Info = postJson, |
| | | ActionName = "agvOutWarehouse", |
| | | Createtime = DateTime.Now, |
| | | Remark = "äººå·¥åæ¥MES车轮åºåº", |
| | | State = false |
| | | }; |
| | | mesRepository.Add(info_To_Mes, true); |
| | | |
| | | foreach (var inventory in inventorys) |
| | | { |
| | | var station = stationinfoRepository.Find(x => x.stationCode == inventory.stationCode).FirstOrDefault(); |
| | | station.quantity = station.quantity - 1; |
| | | if (station.quantity < 1) |
| | | { |
| | | station.quantity = 0; |
| | | station.stationType = string.Empty; |
| | | station.heatNumber = string.Empty; |
| | | station.Number = string.Empty; |
| | | station.billetID = string.Empty; |
| | | station.bindSN = string.Empty; |
| | | station.enable = false; |
| | | station.tray_status = string.Empty; |
| | | station.location_state = LocationStateEnum.Empty.ToString(); |
| | | } |
| | | else |
| | | { |
| | | var bindSNS = station.bindSN.Split(","); |
| | | station.bindSN = OperStr(bindSNS, inventory.SN); |
| | | var billetS = station.billetID.Split(","); |
| | | station.billetID = OperStr(billetS, inventory.BilletNumber.ToString()); |
| | | } |
| | | |
| | | #region åæ¶è·è¸ªDbContextä¸è¢«è·è¸ªçå®ä½ |
| | | var currentEntry = stationinfoRepository.DbContext.ChangeTracker.Entries<dt_stationinfo>().FirstOrDefault(); |
| | | if (currentEntry != null) currentEntry.State = EntityState.Detached; |
| | | #endregion |
| | | |
| | | stationinfoRepository.Update(station, true); |
| | | inventoryRepository.Delete(inventory, true); |
| | | } |
| | | WriteDBLog.Write($"人工åºåºæå ", $"è´§ä½ç¼å·ï¼{inventorys.Key}ï¼SNå·ï¼{str}", LogState.Sucess, "PDA", user); |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Message = ex.Message; |
| | | WriteDBLog.Write($"人工åºåºå¤±è´¥ ", new { éè¯¯ä¿¡æ¯ = ex.Message, æ°æ® = str }, LogState.Error, "PDA", user); |
| | | } |
| | | |
| | | } |
| | | |
| | | content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error($"人工åºåºå¤±è´¥ï¼:{ex.Message}"); |
| | | WriteDBLog.Write($"人工åºåºå¤±è´¥ ", new { éè¯¯ä¿¡æ¯ = ex.Message, æ°æ® = sn }, LogState.Error, "PDA", user); |
| | | } |
| | | return content; |
| | | } |
| | | public static string OperStr(string[] strArrty, string SN) |
| | | { |
| | | string[] newstr = strArrty.Where(x => x != SN).ToArray(); |
| | | string Newsn = string.Join(",", newstr); |
| | | |
| | | return Newsn; |
| | | } |
| | | /// <summary> |
| | | /// å¤ååºåº(æ£æµä¸æ) |
| | | /// </summary> |
| | |
| | | return content.Error("车轮SNå·æè¯¯ï¼è¯·éæ°æ«æï¼"); |
| | | #endregion |
| | | |
| | | dt_mes_detail info = null; |
| | | dt_mes_head mes_head = null; |
| | | //dt_mes_detail info = null; |
| | | //dt_mes_head mes_head = null; |
| | | VV_Mes_Workinfo mes_Work = null; |
| | | |
| | | int count = 0; //车轮æ°é |
| | | foreach (var item in sn.Split(",")) |
| | | string bindSN = ""; |
| | | List<string> list = new List<string>(); |
| | | foreach (var SN in sn.Split(",")) |
| | | { |
| | | if (!string.IsNullOrEmpty(SN)) |
| | | list.Add(SN); |
| | | } |
| | | foreach (var item in list) |
| | | { |
| | | if (item != null) |
| | | { |
| | | count++; |
| | | info = freeDB.Select<dt_mes_detail>().Where(x => x.SN == item).First(); |
| | | if (info == null) |
| | | return content.Error($"第{count}ä¸ªè½¦è½®æ æ£æµä¸æå·¥å详æ
ï¼è¯·æ ¸æ¥å·¥åå卿«æï¼"); |
| | | mes_head = freeDB.Select<dt_mes_head>().Where(x => x.jobID == info.jobID && x.processCode == "28").First(); |
| | | if (mes_head == null) |
| | | bindSN += bindSN == "" ? item : "," + item; |
| | | |
| | | mes_Work = freeDB.Select<VV_Mes_Workinfo>().Where(x => x.SN == item && x.processCode == "28").First(); |
| | | if (mes_Work == null) |
| | | return content.Error($"第{count}ä¸ªè½¦è½®æ æ£æµä¸æå·¥åä¿¡æ¯ï¼è¯·æ ¸æ¥å·¥åå卿«æï¼"); |
| | | //info = freeDB.Select<dt_mes_detail>().Where(x => x.SN == item).First(); |
| | | //if (info == null) |
| | | // return content.Error($"第{count}ä¸ªè½¦è½®æ æ£æµä¸æå·¥å详æ
ï¼è¯·æ ¸æ¥å·¥åå卿«æï¼"); |
| | | //mes_head = freeDB.Select<dt_mes_head>().Where(x => x.jobID == info.jobID && x.processCode == "28").First(); |
| | | //if (mes_head == null) |
| | | // return content.Error($"第{count}ä¸ªè½¦è½®æ æ£æµä¸æå·¥åä¿¡æ¯ï¼è¯·æ ¸æ¥å·¥åå卿«æï¼"); |
| | | } |
| | | } |
| | | VOLContext Context = new VOLContext(); |
| | |
| | | if (!station.enable) |
| | | return content.Error($"䏿å£{stationNo}被ç¦ç¨ï¼è¯·æ ¸å®ï¼"); |
| | | station.quantity = count; |
| | | station.bindSN = sn; |
| | | station.stationType = mes_head.drawingNo; |
| | | station.bindSN = bindSN; |
| | | station.stationType = mes_Work.drawingNo; |
| | | station.location_state = "Stroge"; |
| | | station.Number = mes_head.jobID; |
| | | if (info.heatID != null) |
| | | station.heatNumber = info.heatID; |
| | | station.Number = mes_Work.jobID; |
| | | if (mes_Work.heatID != null) |
| | | station.heatNumber = mes_Work.heatID; |
| | | station.tray_status = "StrogeTray"; |
| | | |
| | | stationinfoRepository.Update(station, true); |
| | |
| | | agv_fromaddress = station.stationCode, |
| | | agv_id = Guid.NewGuid(), |
| | | agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"), |
| | | agv_grade = 2, |
| | | agv_grade = 3, |
| | | agv_createtime = DateTime.Now, |
| | | agv_taskstate = "Queue", |
| | | agv_materielid = station.stationType, |
| | |
| | | agv_tasktype = "TaskType_OutsourceOutbound", |
| | | agv_toaddress = "", |
| | | agv_userid = user,//"ç³»ç»", |
| | | jobID = mes_head.jobID, |
| | | jobID = mes_Work.jobID, |
| | | bindSN = station.bindSN, |
| | | agv_worktype = Convert.ToInt32(mes_head.processCode), |
| | | agv_materbarcode = mes_head.materialCode, |
| | | agv_worktype = Convert.ToInt32(mes_Work.processCode), |
| | | agv_materbarcode = mes_Work.materialCode, |
| | | agv_Traytype = station.tray_type, |
| | | agv_TrayStatus = station.tray_status |
| | | }; |