using AngleSharp.Common; using Newtonsoft.Json; using OfficeOpenXml.ConditionalFormatting; using System; using System.Collections.Generic; using System.Linq; using System.Runtime; 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.Helper; using WIDESEAWCS_BasicInfoService; using WIDESEAWCS_Model.Models; namespace WIDESEA_StoragIntegrationServices { /// /// 车身绑定工单 焊-涂、涂-总工单绑定 /// public partial class MESService { public WebResponseContent bindWorkOrder(string stationNo, string rfid) { WebResponseContent content = new WebResponseContent(); try { var configs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_MESIPAddress); var wmsBase = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.MESIPAddress)?.ConfigValue; var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.bindWorkOrder)?.ConfigValue; if (wmsBase == null || ipAddress == null) { throw new InvalidOperationException("WMS IP 未配置"); } var wmsIpAddress = wmsBase + ipAddress; var stationInfo = _stationManagerRepository.QueryFirst(x => x.stationChildCode == stationNo); var carBodyInfo = _carBodyRepository.QueryFirst(x => x.RFID == rfid); if (carBodyInfo == null) throw new Exception($"未找到PVI{rfid}的车身数据"); BindWorkOrder bindOrder = new BindWorkOrder() { unionKey = Guid.NewGuid().ToString(), stationCode = "", messageTime = DateTime.Now.ToString(), plantCode = "1052", pvi = carBodyInfo.PVI, workOrderNo = stationNo == "EL01RB" ? carBodyInfo.workOrderNo : carBodyInfo.plantingWorkNo, workOrderType = stationNo == "EL01RB" ? "0" : "1", //carBodyInfo.workOrderType, workshopCode = stationNo == "EL01RB" ? "HZ" : "TZ", }; var MESrespon = HttpHelper.PostAsync(wmsIpAddress, bindOrder.ToJson(), contentType, headers).Result; Console.WriteLine(MESrespon); WebResponseContent webResponse = JsonConvert.DeserializeObject(MESrespon.ToString()); if (webResponse.Code != 200) { throw new Exception($"{webResponse.msg}"); } BindWorkOrderRespon characterRespon = JsonConvert.DeserializeObject(webResponse.Data.ToJson()); _unitOfWorkManage.BeginTran(); if (stationInfo.stationChildCode == "EL01RB") //焊装-涂装提升机 { var paintingOrderInfo = _paintingOrderInfoRepository.QueryFirst(x => x.workOrderNo == characterRespon.workOrderNo); if (paintingOrderInfo == null) throw new Exception($"绑定失败:未找到涂装工单信息{characterRespon.workOrderNo}"); paintingOrderInfo.pvi = characterRespon.pvi; _paintingOrderInfoRepository.UpdateData(paintingOrderInfo); carBodyInfo.pbMaterial = paintingOrderInfo.pbMaterial; carBodyInfo.plantingWorkNo = paintingOrderInfo.workOrderNo; carBodyInfo.carBodyCharacteristic = paintingOrderInfo.carBodyCharacteristic; _carBodyRepository.UpdateData(carBodyInfo); } else if (stationInfo.stationChildCode == "EL01RB01") //涂装精排点 { var assemblyOrderInfo = _assemblyOrderInfoRepository.QueryFirst(x => x.workOrderNo == characterRespon.workOrderNo); if (assemblyOrderInfo == null) throw new Exception($"绑定失败:未找到总装工单信息{characterRespon.workOrderNo}"); assemblyOrderInfo.pvi = characterRespon.pvi; _assemblyOrderInfoRepository.UpdateData(assemblyOrderInfo); carBodyInfo.assemblyWorrkNo = characterRespon.workOrderNo; _carBodyRepository.UpdateData(carBodyInfo); } LogFactory.GetLog("BDC请求绑定工单信息").Info(true, $"\r\r--------------------------------------"); LogFactory.GetLog("BDC请求绑定工单信息").Info(true, $"工位号:{stationNo},RFID:{rfid},响应信息:{webResponse.ToJson()}"); _unitOfWorkManage.CommitTran(); return content.OK(); } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); LogFactory.GetLog("BDC请求绑定工单信息").Info(true, $"绑定失败:{ex.Message}"); return content.Error(ex.Message); } } } }