using Newtonsoft.Json; using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical; using System; using System.Collections.Generic; using System.Threading.Tasks; using System.Xml.Linq; using WIDESEA_Comm; using WIDESEA_Comm.LogInfo; using WIDESEA_Comm.MES_Info; using WIDESEA_Comm.MES_Info.Request; using WIDESEA_Comm.TaskNo; 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.Common; using WIDESEA_WMS.IRepositories; using WIDESEA_WMS.Repositories; using static WIDESEA_Comm.MES_Info.BasicSN; namespace WIDESEA_WMS { public partial class ToMesServer { /// /// PDA移库交接 /// /// /// public WebResponseContent agvTransferList(SaveModel saveModel) { WebResponseContent content = new WebResponseContent(); string postJson = ""; string mesData = ""; try { string sn = saveModel.MainData["sn"].ToString(); string user = saveModel.MainData["creator"].ToString(); VOLContext Context = new VOLContext(); Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context); Idt_inventoryRepository inventoryRepository = new dt_inventoryRepository(Context); Idt_agvtaskRepository agvtaskRepository = new dt_agvtaskRepository(Context); //return content.Error($"{user}无操作权限!"); //工单号生成 string jobID = "TW" + DateTime.Now.ToString("HH-mm-ss-ff"); //根据库存查询车轮信息 dt_inventory inventory = inventoryRepository.Find(x => x.SN.Contains(sn)).FirstOrDefault(); if (inventory == null) { return content.Error($"无此车轮{sn}SN号,请核查库存记录!"); } var station = stationinfoRepository.Find(x => x.stationCode == inventory.stationCode).FirstOrDefault(); //if (!station.enable) return content.Error($"库位{station.stationCode}未启用,请核实!"); if (agvtaskRepository.Find(x => x.agv_fromaddress == station.stationCode || x.agv_toaddress == station.stationCode).Any()) return content.Error($"库位{station.stationCode}存在AGV任务,请核实!"); List list = new List(); //车轮信息 foreach (var item in station.bindSN.Split(",")) { detail detail = new detail(); detail.sn = item; list.Add(detail); } agvTransferListPara listPara = new agvTransferListPara { details = list, transferListID = jobID,// station.Number, toWarehouse = "毛轮库", fromWarehouse = "AGV库", updateTime = DateTime.Now.ToString(), drawingNoVer = inventory.drawingNoVer, materialCode = inventory.materialCode, Operator = user == null ? "admin" : user }; postJson = JsonConvert.SerializeObject(listPara); mesData = Request.RequestData(postJson, MESAPIAddress.IPAddress_MES + "agvTransferList"); if (mesData.Contains("连接尝试失败")) throw new Exception(mesData); var requestMes = JsonConvert.DeserializeObject(mesData); if (requestMes.code == "200" && requestMes.Type == "success") { dt_agvtask agvtask = new dt_agvtask() { agv_fromaddress = station.stationCode, agv_id = Guid.NewGuid(), agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"), agv_grade = 0, agv_createtime = DateTime.Now, agv_taskstate = "Queue", agv_materielid = station.stationType, agv_qty = station.quantity, agv_tasktype = "TaskType_OutsourceCarry", agv_toaddress = "", agv_userid = user,//"系统", jobID = jobID,// mes_head.jobID, bindSN = station.bindSN, agv_worktype = 101, //Convert.ToInt32(mes_head.processCode), agv_materbarcode = inventory.materialCode, agv_Traytype = station.tray_type, agv_TrayStatus = station.tray_status }; agvtaskRepository.Add(agvtask, true); station.location_state = LocationStateEnum.OutBusy.ToString(); stationinfoRepository.Update(station, true); content.OK("下发移库外协成功!"); //日志记录上传数据成功 WriteWMSLog.LogAdd("", "成功", "MES", "WMS", postJson, mesData, "AB库移库外协", "agvTransferList", requestMes.message); } else throw new Exception(requestMes.message); } catch (Exception ex) { content.Error(ex.Message); WriteWMSLog.LogAdd("", "失败", "MES", "WMS", postJson, mesData, "AB库移库外协", "agvTransferList", ex.Message); } return content; } } }