|  |  | 
 |  |  | using WIDESEA_Entity.DomainModels; | 
 |  |  | using WIDESEA_WMS.IRepositories; | 
 |  |  | using WIDESEA_WMS.Repositories; | 
 |  |  | using static FreeSql.Internal.GlobalFilter; | 
 |  |  |  | 
 |  |  | namespace WIDESEA_WMS.Common | 
 |  |  | { | 
 |  |  | 
 |  |  |                 agv_worktype = task.agv_worktype, | 
 |  |  |                 agv_remark = task.agv_remark, | 
 |  |  |                 bindSN = task.bindSN, | 
 |  |  |                 jobID = task.jobID, | 
 |  |  |                 agv_materbarcode = task.agv_materbarcode, | 
 |  |  |             }; | 
 |  |  |             htyRepository.Add(agvtask_Hty, true); | 
 |  |  | 
 |  |  |         /// <param name="task"></param> | 
 |  |  |         public static void Updateinventory(dt_agvtask task) | 
 |  |  |         { | 
 |  |  |             string[] bindSNs = task.bindSN.Split(","); | 
 |  |  |             int count = 0; | 
 |  |  |             if (bindSNs.Length > 0) | 
 |  |  |             VOLContext context = new VOLContext(); | 
 |  |  |             Idt_inventoryRepository inventoryRepository = new dt_inventoryRepository(context); | 
 |  |  |             if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Carry.ToString()) | 
 |  |  |             { | 
 |  |  |                 if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() || task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceCarry.ToString()) | 
 |  |  |                 var inventorys = inventoryRepository.Find(x => x.stationCode == task.agv_fromaddress).ToList(); | 
 |  |  |                 foreach (var inventory in inventorys) | 
 |  |  |                 { | 
 |  |  |                     foreach (var bindSN in bindSNs) | 
 |  |  |                     { | 
 |  |  |                         //List<dt_inventory> inventorys = new List<dt_inventory>(); | 
 |  |  |                         var inventory = freeDB.Select<dt_inventory>().Where(x => x.SN == bindSN).First(); | 
 |  |  |                         //inventorys.Add(inventory); | 
 |  |  |                         count = freeDB.Remove(inventory); | 
 |  |  |                         if (count < 1) | 
 |  |  |                             throw new Exception("åºåæ¸
é¤å¤±è´¥ï¼SNå·:" + bindSN); | 
 |  |  |                     } | 
 |  |  |  | 
 |  |  |                     inventory.stationCode = task.agv_toaddress; | 
 |  |  |                     inventoryRepository.Update(inventory, true); | 
 |  |  |                 } | 
 |  |  |                 else if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Inbound.ToString()) | 
 |  |  |                 { | 
 |  |  |                     List<dt_inventory> inventorys = new List<dt_inventory>(); | 
 |  |  |                     foreach (string bindSN in bindSNs) | 
 |  |  |                     { | 
 |  |  |                         var mes_detail = freeDB.Select<dt_mes_detail>().Where(x => x.SN == bindSN).First(); | 
 |  |  |                         var mes_head = freeDB.Select<dt_mes_head>().Where(x => x.jobID == mes_detail.jobID).First(); | 
 |  |  |                         var station = freeDB.Select<dt_stationinfo>().Where(x => x.stationCode == task.agv_toaddress).First(); | 
 |  |  |                         dt_inventory inventory = new dt_inventory() | 
 |  |  |                         { | 
 |  |  |                             SN = bindSN, | 
 |  |  |                             Name = mes_head.productName, | 
 |  |  |                             FigureNumber = mes_head.drawingNo, | 
 |  |  |                             //HearthNumber = "", | 
 |  |  |                             HeatNumber = mes_detail.heatID, | 
 |  |  |                             BilletNumber = mes_detail.billetID, | 
 |  |  |                             OnlineTime = task.agv_finishedtime, | 
 |  |  |                             Operator = "admin", | 
 |  |  |                             stationCode = task.agv_toaddress, | 
 |  |  |                             area = station.area, | 
 |  |  |                             jobID = mes_detail.jobID, | 
 |  |  |                             ID = Guid.NewGuid() | 
 |  |  |                         }; | 
 |  |  |                         inventorys.Add(inventory); | 
 |  |  |                     } | 
 |  |  |                     count = freeDB.AddRange(inventorys); | 
 |  |  |                     if (count < 1) | 
 |  |  |                         throw new Exception("åºåæ·»å å¤±è´¥ï¼åºä½å·:" + task.agv_toaddress); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 //var Materiel = QueryData.QueryMateriel(task.agv_materielid); | 
 |  |  |                 //List<dt_inventory> inventorys = new List<dt_inventory>(); | 
 |  |  |                 //foreach (string bindSN in bindSNs) | 
 |  |  |                 //{ | 
 |  |  |                 //    dt_inventory inventory = new dt_inventory() | 
 |  |  |                 //    { | 
 |  |  |                 //        SN = bindSN,//å¾
å®å | 
 |  |  |                 //        Name = "", | 
 |  |  |                 //        FigureNumber = "", | 
 |  |  |                 //        //HearthNumber = "", | 
 |  |  |                 //        HeatNumber = "", | 
 |  |  |                 //        //BilletNumber=, | 
 |  |  |                 //        OnlineTime = task.agv_finishedtime, | 
 |  |  |                 //        Operator = "admin", | 
 |  |  |                 //        stationCode = task.agv_toaddress, | 
 |  |  |                 //        area = "", | 
 |  |  |                 //        jobID = "", | 
 |  |  |                 //    }; | 
 |  |  |                 //    inventorys.Add(inventory); | 
 |  |  |                 //} | 
 |  |  |                 //if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Inbound.ToString() || task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceInbound.ToString()) | 
 |  |  |                 //    freeDB.AddRange(inventorys); | 
 |  |  |                 //else if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() || task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceOutbound.ToString()) | 
 |  |  |                 //    freeDB.Remove(inventorys); | 
 |  |  |             } | 
 |  |  |             else if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() || task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceCarry.ToString()) | 
 |  |  |             { | 
 |  |  |                 string[] bindSNs = task.bindSN.Split(","); | 
 |  |  |                 int count = 0; | 
 |  |  |                 foreach (var bindSN in bindSNs) | 
 |  |  |                 { | 
 |  |  |                     //List<dt_inventory> inventorys = new List<dt_inventory>(); | 
 |  |  |                     var inventory = freeDB.Select<dt_inventory>().Where(x => x.SN == bindSN).First(); | 
 |  |  |                     //inventorys.Add(inventory); | 
 |  |  |                     count = freeDB.Remove(inventory); | 
 |  |  |                     if (count < 1) | 
 |  |  |                         throw new Exception("åºåæ¸
é¤å¤±è´¥ï¼SNå·:" + bindSN); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             else if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Inbound.ToString()) | 
 |  |  |             { | 
 |  |  |                 string[] bindSNs = task.bindSN.Split(","); | 
 |  |  |                 int count = 0; | 
 |  |  |                 List<dt_inventory> inventorys = new List<dt_inventory>(); | 
 |  |  |                 foreach (string bindSN in bindSNs) | 
 |  |  |                 { | 
 |  |  |                     var mes_Work = freeDB.Select<VV_Mes_Workinfo>().Where(x => x.SN == bindSN && x.processCode == "17").First(); | 
 |  |  |                     if (mes_Work == null) | 
 |  |  |                         throw new Exception("æªæ¾å°å·¥åä¿¡æ¯ï¼"); | 
 |  |  |                     var station = freeDB.Select<dt_stationinfo>().Where(x => x.stationCode == task.agv_toaddress).First(); | 
 |  |  |                     dt_inventory inventory = new dt_inventory() | 
 |  |  |                     { | 
 |  |  |                         SN = bindSN, | 
 |  |  |                         Name = mes_Work.productName, | 
 |  |  |                         FigureNumber = mes_Work.drawingNo, | 
 |  |  |                         materialCode = task.agv_materbarcode, | 
 |  |  |                         HeatNumber = mes_Work.heatID, | 
 |  |  |                         drawingNoVer = mes_Work.drawingNoVer, | 
 |  |  |                         BilletNumber = mes_Work.billetID, | 
 |  |  |                         OnlineTime = task.agv_finishedtime, | 
 |  |  |                         Operator = "admin", | 
 |  |  |                         stationCode = task.agv_toaddress, | 
 |  |  |                         area = station.area, | 
 |  |  |                         jobID = mes_Work.jobID, | 
 |  |  |                         workOrder = mes_Work.workOrder, | 
 |  |  |                         ID = Guid.NewGuid() | 
 |  |  |                     }; | 
 |  |  |                     inventorys.Add(inventory); | 
 |  |  |                 } | 
 |  |  |                 count = freeDB.AddRange(inventorys); | 
 |  |  |                 if (count < 1) | 
 |  |  |                     throw new Exception("åºåæ·»å å¤±è´¥ï¼åºä½å·:" + task.agv_toaddress); | 
 |  |  |             } | 
 |  |  |             #region MyRegion | 
 |  |  |             //var Materiel = QueryData.QueryMateriel(task.agv_materielid); | 
 |  |  |             //List<dt_inventory> inventorys = new List<dt_inventory>(); | 
 |  |  |             //foreach (string bindSN in bindSNs) | 
 |  |  |             //{ | 
 |  |  |             //    dt_inventory inventory = new dt_inventory() | 
 |  |  |             //    { | 
 |  |  |             //        SN = bindSN,//å¾
å®å | 
 |  |  |             //        Name = "", | 
 |  |  |             //        FigureNumber = "", | 
 |  |  |             //        //HearthNumber = "", | 
 |  |  |             //        HeatNumber = "", | 
 |  |  |             //        //BilletNumber=, | 
 |  |  |             //        OnlineTime = task.agv_finishedtime, | 
 |  |  |             //        Operator = "admin", | 
 |  |  |             //        stationCode = task.agv_toaddress, | 
 |  |  |             //        area = "", | 
 |  |  |             //        jobID = "", | 
 |  |  |             //    }; | 
 |  |  |             //    inventorys.Add(inventory); | 
 |  |  |             //} | 
 |  |  |             //if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Inbound.ToString() || task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceInbound.ToString()) | 
 |  |  |             //    freeDB.AddRange(inventorys); | 
 |  |  |             //else if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() || task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceOutbound.ToString()) | 
 |  |  |             //    freeDB.Remove(inventorys); | 
 |  |  |             #endregion | 
 |  |  |  | 
 |  |  |             //} | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         /// <summary> | 
 |  |  | 
 |  |  |         { | 
 |  |  |             VOLContext context = new VOLContext(); | 
 |  |  |             Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context); | 
 |  |  |             var station1 = stationinfoRepository.FindFirst(t => t.stationCode == task.agv_fromaddress); | 
 |  |  |             var station2 = stationinfoRepository.FindFirst(t => t.stationCode == task.agv_toaddress); | 
 |  |  |  | 
 |  |  |             station2.quantity = station1.quantity; | 
 |  |  |             station2.bindSN = station1.bindSN; | 
 |  |  |             station2.location_state = LocationStateEnum.Stroge.ToString(); | 
 |  |  |             station2.Number = task.jobID; | 
 |  |  |             station2.heatNumber = station1.heatNumber; | 
 |  |  |             station2.stationType = station1.stationType; | 
 |  |  |             station2.tray_status = station1.tray_status;//横æ¾/ç«æ¾ | 
 |  |  |             stationinfoRepository.Update(station2, true); | 
 |  |  |  | 
 |  |  |             station1.quantity = 0; | 
 |  |  |             station1.bindSN = string.Empty; | 
 |  |  |             station1.location_state = LocationStateEnum.Empty.ToString(); | 
 |  |  |             station1.Number = string.Empty; | 
 |  |  |             station1.heatNumber = string.Empty; | 
 |  |  |             station1.stationType = string.Empty; | 
 |  |  |             station1.tray_status = LocationStateEnum.Empty.ToString(); | 
 |  |  |             stationinfoRepository.Update(station1, true); | 
 |  |  |             if (task.agv_taskstate == AGVTaskStateEnum.Complete1.ToString()) | 
 |  |  |             { | 
 |  |  |                 var station2 = stationinfoRepository.FindFirst(t => t.stationCode == task.agv_toaddress); | 
 |  |  |                 if (station2 == null) throw new Exception("æªæ¾å°ç»ç¹å°åï¼"); | 
 |  |  |                 ////空æä»»å¡éä¿®æ¹é»è¾ | 
 |  |  |                 if (station2.stationCode.Contains("X")) | 
 |  |  |                     station2.quantity = 0;// task.agv_tasktype.Contains("TaskType_EmptyPallet") ? 0 : task.agv_qty; //task.agv_qty; | 
 |  |  |                 else if (station2.area == "10" || station2.area == "11" || (station2.stationCode.Contains("C") && task.agv_tasktype == "TaskType_EmptyPallet") || station2.stationCode.Contains("DD")) //å
¥åºç©ºæä»»å¡ | 
 |  |  |                     station2.quantity = station2.quantity + task.agv_qty; | 
 |  |  |                 else | 
 |  |  |                     station2.quantity = task.agv_qty; | 
 |  |  |                 station2.bindSN = task.bindSN; | 
 |  |  |                 station2.location_state = LocationStateEnum.Stroge.ToString(); | 
 |  |  |                 station2.Number = task.jobID; | 
 |  |  |                 //station2.heatNumber = station1.heatNumber; | 
 |  |  |                 station2.stationType = task.agv_materielid; | 
 |  |  |                 station2.tray_status = task.agv_TrayStatus;//横æ¾/ç«æ¾ | 
 |  |  |                 station2.tray_type = task.agv_Traytype; | 
 |  |  |                 station2.lastUpdateTime = DateTime.Now; | 
 |  |  |                 stationinfoRepository.Update(station2, true); | 
 |  |  |             } | 
 |  |  |             else if (task.agv_taskstate == AGVTaskStateEnum.Complete.ToString()) | 
 |  |  |             { | 
 |  |  |                 var station1 = stationinfoRepository.FindFirst(t => t.stationCode == task.agv_fromaddress); | 
 |  |  |                 if (station1 == null) throw new Exception("æªæ¾å°èµ·ç¹å°åï¼"); | 
 |  |  |                 #region MyRegion | 
 |  |  |                 //if (station1.stationCode.Contains("S")) | 
 |  |  |                 //    station1.quantity = 0; | 
 |  |  |                 //else if (station2.stationCode.Contains("X") || station2.stationCode.Contains("W01001004") || station2.stationCode.Contains("W01001005"))//åºåºç©ºæä»»å¡ | 
 |  |  |                 //{ | 
 |  |  |                 //    station1.location_state = LocationStateEnum.Stroge.ToString(); | 
 |  |  |                 //    station1.quantity = station1.quantity - 1; | 
 |  |  |                 //} | 
 |  |  |                 //else | 
 |  |  |                 //    station1.quantity = 0; | 
 |  |  |                 #endregion | 
 |  |  |                 if (station1.stationCode.Contains("DD"))//å çåºä½ | 
 |  |  |                 { | 
 |  |  |                     station1.quantity = station1.quantity - task.agv_qty; | 
 |  |  |                     station1.location_state = LocationStateEnum.Stroge.ToString(); | 
 |  |  |                 } | 
 |  |  |                 else if (station1.area == "10" || station1.area == "11" | 
 |  |  |                     || ((station1.stationCode.Contains("C") || station1.stationCode.Contains("B")) | 
 |  |  |                     && task.agv_tasktype == AGVTaskTypeEnum.TaskType_EmptyPallet.ToString())) //åºåºç©ºæä»»å¡ | 
 |  |  |                 { | 
 |  |  |                     station1.location_state = LocationStateEnum.Stroge.ToString(); | 
 |  |  |                     station1.quantity = station1.quantity - 1; | 
 |  |  |                 } | 
 |  |  |                 else | 
 |  |  |                     station1.quantity = 0; | 
 |  |  |                 station1.bindSN = string.Empty; | 
 |  |  |                 //station1.location_state = station1.quantity == 0 ? LocationStateEnum.Empty.ToString() : LocationStateEnum.Stroge.ToString(); | 
 |  |  |                 if (station1.quantity == 0) | 
 |  |  |                 { | 
 |  |  |                     station1.location_state = LocationStateEnum.Empty.ToString(); | 
 |  |  |                     station1.Number = string.Empty; | 
 |  |  |                     station1.billetID = string.Empty; | 
 |  |  |                     station1.heatNumber = string.Empty; | 
 |  |  |                     station1.stationType = string.Empty; | 
 |  |  |                     station1.tray_status = string.Empty; | 
 |  |  |                     station1.remark = string.Empty; | 
 |  |  |                     //if (!station1.stationCode.Contains("X") && !station1.stationCode.Contains("S") && !station1.stationCode.Contains("W01001004") && !station1.stationCode.Contains("W01001005")) | 
 |  |  |                     //    station1.tray_type = string.Empty; | 
 |  |  |                 } | 
 |  |  |                 if (!station1.stationCode.Contains("DD")) | 
 |  |  |                     station1.lastUpdateTime = DateTime.Now; | 
 |  |  |                 stationinfoRepository.Update(station1, true); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | } |