using Newtonsoft.Json; using System; using WIDESEA_Comm; using WIDESEA_Comm.LogInfo; using WIDESEA_Common; using WIDESEA_Core.EFDbContext; using WIDESEA_Core.ManageUser; using WIDESEA_Core.Utilities; using WIDESEA_Entity.DomainModels; using WIDESEA_Entity.DomainModels.Mes; using WIDESEA_WMS.IRepositories; using WIDESEA_WMS.Repositories; namespace WIDESEA_WMS { public partial class ToMesServer { /// /// 手动移库 /// /// /// public WebResponseContent AddToFloat3(MesRequestTemp requestTemp) { WebResponseContent content = new WebResponseContent(); try { //var route = freeDB.Select().Where(t => t.stationCode == requestTemp.from_address && t.route_end == requestTemp.to_address).ToOne(); var station1 = freeDB.Select().Where(t => t.stationCode == requestTemp.from_address).First(); var station2 = freeDB.Select().Where(t => t.stationCode == requestTemp.to_address).First(); if (station1 == null || station2 == null) { throw new Exception($"路径{requestTemp.from_address}到{requestTemp.to_address},不存在!"); } if (station1.location_state != LocationStateEnum.Stroge.ToString()) throw new Exception($"起点{requestTemp.from_address}未找到物料!"); if (station2.location_state != LocationStateEnum.Empty.ToString()) throw new Exception($"终点{requestTemp.to_address}不是空货位!"); if (string.IsNullOrEmpty(station1.stationType)) throw new Exception($"起点{requestTemp.from_address}未绑定物料类型!"); if (station1.stationType != station2.stationType) throw new Exception($"起点与终点绑定物料类型不一致!"); var haveInTask = freeDB.Select() .Where(t => t.agv_fromaddress == requestTemp.from_address || t.agv_fromaddress == requestTemp.to_address || t.agv_toaddress == requestTemp.from_address || t.agv_toaddress == requestTemp.to_address ).Any(); if (!haveInTask) { station2.quantity = station1.quantity; station2.bindSN = station1.bindSN; station2.location_state = LocationStateEnum.Stroge.ToString(); station2.tray_status = station1.tray_status; freeDB.Update(station2); station1.quantity = 0; station1.bindSN = string.Empty; station1.location_state = LocationStateEnum.Empty.ToString(); station1.tray_status = string.Empty; freeDB.Update(station1); } else { throw new Exception("起始或目的地址,已存在任务!"); } content.OK(); WriteDBLog.Success($"手动移库", new { 数据 = requestTemp }, "WMS", UserContext.Current.UserName + UserContext.Current.UserTrueName); } catch (Exception ex) { WriteDBLog.Error($"手动移库", new { 数据 = requestTemp, 异常信息 = ex.Message }, "WMS", UserContext.Current.UserName + UserContext.Current.UserTrueName); content.Error(ex.Message); } return content; } /// /// 外协货位扫码确认物料已被取走 /// /// /// public WebResponseContent Confirmedcut(SaveModel saveModel) { WebResponseContent content = new WebResponseContent(); try { VOLContext context = new VOLContext(); Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context); string sn = saveModel.MainData["from_address"].ToString(); var station = stationinfoRepository.Find(x => x.bindSN.Contains(sn) && (x.stationCode.Contains("W01001001") || x.stationCode.Contains("W01001002") || x.stationCode.Contains("W01001003"))).FirstOrDefault(); if (station == null) throw new Exception($"未找到车轮SN号:{sn}的外协货位信息!"); station.Number = string.Empty; station.billetID = string.Empty; station.heatNumber = string.Empty; station.stationType = string.Empty; station.tray_status = "EmptyTray"; station.lastUpdateTime = DateTime.Now; stationinfoRepository.Update(station, true); content.OK(); } catch (Exception ex) { content.Message = ex.Message; } return content; } } }