using AngleSharp.Common; using Masuit.Tools; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_Common; using WIDESEA_Common.MES; using WIDESEA_Common.MES.Request; using WIDESEA_Core; using WIDESEA_Core.Const; using WIDESEA_Core.Enums; using WIDESEA_Core.Helper; using WIDESEA_DTO.WMS; using WIDESEA_Model.Models; using WIDESEAWCS_BasicInfoService; using WIDESEAWCS_Model.Models; namespace WIDESEA_StoragIntegrationServices { /// /// 车身绑定工单(焊装直通涂装) /// public partial class MESService { public WebResponseContent pullLock(object jsondata) { WebResponseContent content = new WebResponseContent(); try { if (string.IsNullOrEmpty(jsondata.ToString())) throw new Exception("请求参数为空"); Console.WriteLine(jsondata); var result = JsonConvert.DeserializeObject>(jsondata.ToString()); foreach (var item in result) { var assemblyOrderInfo = _assemblyOrderInfoRepository.QueryFirst(x => x.workOrderNo == item.workOrderNo && x.orderType == item.workOrderType); if (assemblyOrderInfo == null) throw new Exception($"拉动锁车失败:未知总装工单号{item.workOrderNo}"); Dt_PalletStockInfo carinfo = null; VV_StockInfo OutStock = new VV_StockInfo(); Dt_CarBodyInfo carbodyinfo = null; if (!string.IsNullOrEmpty(item.pvi)) { // carinfo = _palletStockInfoRepository.QueryFirst(x => x.PVI == item.pvi && x.pbMaterial == item.pbMaterial); //carbodyinfo = _carBodyRepository.QueryFirst(x => x.pbMaterial == item.pbMaterial && x.PVI == item.pvi); OutStock = _VVStockInfoRepository.QueryFirst(X => X.PVI == item.pvi && X.pbMaterial == item.pbMaterial); if (OutStock == null) { throw new Exception($"未找到指定PVI车身信息{item.pvi}"); } } else { //carinfo = _palletStockInfoRepository.QueryData(x => x.pbMaterial == item.pbMaterial).OrderBy(x => x.biwInPassTime).FirstOrDefault(); //carbodyinfo = _carBodyRepository.QueryData(x => x.pbMaterial == item.pbMaterial && x.BodyStatus == 0).OrderBy(x => x.biwInPassTime).FirstOrDefault(); OutStock = _VVStockInfoRepository.QueryData(x => x.pbMaterial == item.pbMaterial && x.StockStatus == 0 && x.LockOrder == 0 && x.workOrderType == item.workOrderType).OrderBy(x => x.biwInPassTime).FirstOrDefault(); } if (OutStock == null) { throw new Exception("未匹配到车身,拉动锁定失败"); } var stockInfo = _palletStockInfoRepository.QueryFirst(x => x.CarBodyInfo.PVI == OutStock.PVI); var carBody = _carBodyRepository.QueryFirst(x => x.PVI == OutStock.PVI); var lockInfo = _MESLockInfoRepository.QueryData().OrderByDescending(x => x.sequenceNo).FirstOrDefault(); int serial = 1; if (lockInfo != null) { serial = lockInfo.sequenceNo + 1; } Dt_MESLockInfo mESLockInfo = new Dt_MESLockInfo { carBodyID = stockInfo.carBodyID, CarBodyInfo = carBody, CreateDate = DateTime.Now, Creater = "System", LockStatue = 0, sequenceNo = serial, TCLine = OutStock.RoadwayNo }; #region 任务下发 //Dt_Task task = new Dt_Task() //{ // CreateDate = DateTime.Now, // Creater = "System", // CurrentAddress = carinfo.LocationCode, // Grade = 5, // PalletCode = carinfo.PalletCode, // PVI = item.pvi, // Roadway = carinfo.RoadwayNo, // SourceAddress = carinfo.LocationCode, // TaskNum = _taskRepository.GetTaskNo().Result, // TaskType = (int)TaskOutboundTypeEnum.Outbound, // TaskState = (int)TaskOutStatusEnum.OutNew, // TargetAddress = "" //}; //WMSTaskDTO taskDTO = new WMSTaskDTO() //{ // Grade = task.Grade.Value, // PalletCode = task.PalletCode, // SourceAddress = task.SourceAddress, // TargetAddress = task.TargetAddress, // RoadWay = task.Roadway, // TaskState = task.TaskState.Value, // TaskType = task.TaskType, // TaskNum = task.TaskNum.Value //}; //var configs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); //var wmsBase = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.WCSIPAddress)?.ConfigValue; //var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.ReceiveTask)?.ConfigValue; //if (wmsBase == null || ipAddress == null) //{ // throw new InvalidOperationException("WMS IP 未配置"); //} //var wmsIpAddress = wmsBase + ipAddress; #endregion _unitOfWorkManage.BeginTran(); //var WCSresult = HttpHelper.PostAsync(wmsIpAddress, taskDTO.ToJsonString()).Result; //content = JsonConvert.DeserializeObject(WCSresult); //if (content != null && content.Status) //{ stockInfo.StockStatus = 0; stockInfo.LockOrder = 1; carBody.BodyStatus = 1; _MESLockInfoRepository.AddData(mESLockInfo); //_taskRepository.AddData(task); _palletStockInfoRepository.UpdateData(stockInfo); //_carBodyRepository.UpdateData(carbodyinfo); _unitOfWorkManage.CommitTran(); //} LogFactory.GetLog("MES拉动锁车").Info(true, $"\r\r--------------------------------------"); LogFactory.GetLog("MES拉动锁车").Info(true, jsondata.ToJsonString()); LockResult lockResult = new LockResult { result = "1", lockPvi = carBody.PVI }; content.OK(data: lockResult); } } catch (Exception ex) { LogFactory.GetLog("MES拉动锁车").Info(true, $"锁车失败:{ex.Message};请求参数{jsondata.ToJsonString()}; "); _unitOfWorkManage.RollbackTran(); content.result = "2"; LockResult result = new LockResult { result = "2", lockPvi = "" }; content.Error(ex.Message, result); } return content; } } }