CodeManagement/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/CodeChunks.dbBinary files differ
CodeManagement/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/CodeChunks.db-shmBinary files differ
CodeManagement/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/CodeChunks.db-walBinary files differ
CodeManagement/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/SemanticSymbols.dbBinary files differ
CodeManagement/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-shmBinary files differ
CodeManagement/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-walBinary files differ
CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_BZ/CommonConveyorLine_BZJob.cs
@@ -186,6 +186,13 @@ public void RequestOutbound(CommonConveyorLine_BZ conveyorLine, ConveyorLineTaskCommand_After command, Dt_StationManager station) { //查询对应产线的在途数据 ConveyorLineTaskCommand_After readSignal = conveyorLine.ReadCustomer<ConveyorLineTaskCommand_After>(station.stationLocation); if (readSignal.Reserved5 == 1) { ConsoleHelper.WriteErrorLine($"包装{station.productLine}开始清料"); return; } dt_needBarcode needBarcode = _needBarcodeRepository.QueryFirst(x => x.productLine == station.productLine && x.toArea == station.stationChildCode); needBarcode.inLineNum = _taskRepository.QueryData(x => x.TargetAddress == station.stationChildCode).Count(); CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/CommonConveyorLine_GWJob.cs
@@ -426,6 +426,22 @@ conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTargetAddress, taskCommand.ConveyorLineTargetAddress, childDeviceCode); conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineBarcode, taskCommand.ConveyorLineBarcode, childDeviceCode); conveyorLine.Communicator.Write(address, 1); var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == childDeviceCode && x.stationArea == "Call" && x.stationType == 12); CommonConveyorLine_BZ? commonConveyorBZ = Storage.Devices.FirstOrDefault(x => x.DeviceCode == station.stationPLC) as CommonConveyorLine_BZ; if (commonConveyorBZ != null) { ConveyorLineTaskCommand_After readSignal = conveyorLine.ReadCustomer<ConveyorLineTaskCommand_After>(station.stationLocation); if (readSignal.Reserved5 == 1) { var tasks = _taskRepository.QueryData(x => x.TargetAddress == childDeviceCode); if (tasks.Count == 0) { commonConveyorBZ.SetValue(ConveyorLineDBName_After.ResponState, Convert.ToInt16(1), station.stationLocation); } } } WriteInfo($"{conveyorLine.DeviceName}输送线出库完成", $"子节点【{childDeviceCode}】托盘号:【{command.ConveyorLineBarcode}】"); } else @@ -473,6 +489,21 @@ conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTargetAddress, taskCommand.ConveyorLineTargetAddress, childDeviceCode); conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineBarcode, taskCommand.ConveyorLineBarcode, childDeviceCode); conveyorLine.Communicator.Write(address, 1); var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == childDeviceCode && x.stationArea == "Call" && x.stationType == 12); CommonConveyorLine_BZ? commonConveyorBZ = Storage.Devices.FirstOrDefault(x => x.DeviceCode == station.stationPLC) as CommonConveyorLine_BZ; if (commonConveyorBZ != null) { ConveyorLineTaskCommand_After readSignal = conveyorLine.ReadCustomer<ConveyorLineTaskCommand_After>(station.stationLocation); if (readSignal.Reserved5 == 1) { var tasks = _taskRepository.QueryData(x => x.TargetAddress == childDeviceCode); if (tasks.Count == 0) { commonConveyorBZ.SetValue(ConveyorLineDBName_After.ResponState, Convert.ToInt16(1), station.stationLocation); } } } WriteInfo($"{conveyorLine.DeviceName}输送线出库完成", $"子节点【{childDeviceCode}】托盘号:【{command.ConveyorLineBarcode}】"); } } CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/ConfigConst.cs
@@ -113,6 +113,11 @@ public const string AgingOutput = "AgingOutput"; /// <summary> /// 设备状态上传 /// </summary> public const string EqptRun = "EqptRun"; /// <summary> /// 工艺路线申请 /// </summary> public const string ProcessApply = "ProcessApply"; CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/ResponeAgingInputDto.cs
@@ -91,4 +91,29 @@ /// </summary> public string ParameterCode { get; set; } } public class EqptRunDTO : BasicResult { public string WipOrderNo { get; set; } public string ProductDesc { get; set; } public string FirstArticleNum { get; set; } public string DebugNum { get; set; } public string ParamVersion { get; set; } public string ParamRefreshFlag { get; set; } public string ProductType { get; set; } public bool ProductModel { get; set; } public string ParameterInfo { get; set; } public string IsProcessed { get; set; } public string PreProductNo { get; set; } } } CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationRepository/obj/Debug/net6.0/WIDESEA_IStoragIntegrationRepository.AssemblyInfo.cs
@@ -14,7 +14,7 @@ [assembly: System.Reflection.AssemblyCompanyAttribute("WIDESEA_IStoragIntegrationRepository")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b2feeabc23454a2c9e161aa3b26d0edf938e55bd")] [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+1c637ea862816ae6fa53945fa0327b95c79aa18b")] [assembly: System.Reflection.AssemblyProductAttribute("WIDESEA_IStoragIntegrationRepository")] [assembly: System.Reflection.AssemblyTitleAttribute("WIDESEA_IStoragIntegrationRepository")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationServices/MOM/AgingInOrOutInput/IAgingInOrOutInputService.cs
@@ -18,4 +18,11 @@ /// <param name="input">出库数据</param> /// <returns></returns> Task<WebResponseContent> GetOCVOutputAsync(AgingOutputDto input); /// <summary> /// 修改设备型号 /// </summary> /// <param name="input"></param> /// <returns></returns> Task<WebResponseContent> Change(EqptRunDto input); } CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationRepository/obj/Debug/net6.0/WIDESEA_StoragIntegrationRepository.AssemblyInfo.cs
@@ -14,7 +14,7 @@ [assembly: System.Reflection.AssemblyCompanyAttribute("WIDESEA_StoragIntegrationRepository")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b2feeabc23454a2c9e161aa3b26d0edf938e55bd")] [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+1c637ea862816ae6fa53945fa0327b95c79aa18b")] [assembly: System.Reflection.AssemblyProductAttribute("WIDESEA_StoragIntegrationRepository")] [assembly: System.Reflection.AssemblyTitleAttribute("WIDESEA_StoragIntegrationRepository")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/AgingInOrOutInput/AgingInOrOutInputService.cs
@@ -123,4 +123,37 @@ } return content; } public async Task<WebResponseContent> Change(EqptRunDto input) { WebResponseContent content = new WebResponseContent(); try { input.SessionId = Guid.NewGuid().ToString(); input.EmployeeNo = "MITest"; input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ"); var inputJson = Masuit.Tools.ObjectExtensions.ToDictionary(input); // Specify the namespace explicitly var configs = _configService.GetConfigsByCategory(CateGoryConst.SYS_MOMIPAddress); var MOMBase = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.MOMBaseIP)?.ConfigValue; var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.EqptRun)?.ConfigValue; if (MOMBase == null || ipAddress == null) { throw new InvalidOperationException("WMS IP 未配置"); } var MOMIpAddress = MOMBase + ipAddress; var result = HttpsClient.PostAsync(MOMIpAddress, inputJson).Result; content.OK(data: result); LogFactory.GetLog("换型").Info(true, $"\r\r--------------------------------------"); LogFactory.GetLog("换型").Info(true, input.EquipmentCode); LogFactory.GetLog("换型").Info(true, result); } catch (Exception err) { LogFactory.GetLog("换型").Error(true, $"\r\r--------------------------------------"); LogFactory.GetLog("换型").Error(true, err.StackTrace); content.Error(err.Message); } return content; } } CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -758,11 +758,13 @@ else { // 处理异常电芯情况 var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1 && x.SerialNoStatus != 4).ToList(); if (serialNosError.Count > 0) { return await HandleErrorCells(input, area, serialNosError); } #region 电芯分结果异常不需要我们处理 //var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1 && x.SerialNoStatus != 4).ToList(); //if (serialNosError.Count > 0) //{ // return await HandleErrorCells(input, area, serialNosError); //} #endregion var boxing = CreateBoxingInfo(result, input.PalletCode); if (boxing == null) return content.Error("组盘失败"); @@ -873,21 +875,46 @@ // 获取组盘信息 private DtBoxingInfo CreateBoxingInfo(ResultTrayCellsStatus result, string palletCode) { return new DtBoxingInfo var boxing = _boxingInfoRepository.QueryFirst(x => x.PalletCode == palletCode); if (boxing == null) { PalletCode = palletCode, IsFull = true, ProcessCode = result.ProcessCode, ProductionLine = result.ProductionLine, BoxingInfoDetails = result.SerialNos.Select(serialNoObj => new DtBoxingInfoDetail return new DtBoxingInfo { SerialNumber = serialNoObj.SerialNo, OrderNo = serialNoObj.PositionNo.ToString(), Status = serialNoObj.SerialNoStatus, MaterielCode = result.BindCode, Remark = result.TrayBarcodePropertys.ToJsonString(), }).ToList() }; PalletCode = palletCode, IsFull = true, ProcessCode = result.ProcessCode, ProductionLine = result.ProductionLine, BoxingInfoDetails = result.SerialNos.Select(serialNoObj => new DtBoxingInfoDetail { SerialNumber = serialNoObj.SerialNo, OrderNo = serialNoObj.PositionNo.ToString(), Status = serialNoObj.SerialNoStatus, MaterielCode = result.BindCode, Remark = result.TrayBarcodePropertys.ToJsonString(), }).ToList() }; } else { _boxingInfoRepository.Db.DeleteNav<DtBoxingInfo>(x => x.Id == boxing.Id) .Include(x => x.BoxingInfoDetails) .ExecuteCommandAsync(); return new DtBoxingInfo { PalletCode = palletCode, IsFull = true, ProcessCode = result.ProcessCode, ProductionLine = result.ProductionLine, BoxingInfoDetails = result.SerialNos.Select(seriaINoObj => new DtBoxingInfoDetail { SerialNumber = seriaINoObj.SerialNo, OrderNo = seriaINoObj.PositionNo.ToString(), Status = seriaINoObj.SerialNoStatus, MaterielCode = result.BindCode, Remark = result.TrayBarcodePropertys.ToJsonString(), }).ToList() }; } } // 获取工艺申请 CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
@@ -1046,33 +1046,76 @@ Dt_StationManager station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == json.Position && x.stationType == 12 && x.stationArea == "Call"); if (station == null) { throw new Exception($"未找到包装站台信息,请检查传入参数{json.Position}"); } EqptRunDto basic = new EqptRunDto() { EquipmentModel = "0", Password = "", EmployeeNo = "82412152", SessionId = Guid.NewGuid().ToString(), RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ"), Software = "包装上料", EquipmentCode = station.stationEquipMOM, }; var result = _agingInOrOutInputService.Change(basic).Result; var respone = JsonConvert.DeserializeObject<EqptRunDTO>(result.Data.ToString()); if (!result.Status || !respone.Success) { throw new Exception($"{station.productLine}获取MOM换型数据异常,异常信息{respone.MOMMessage}"); } var deviceCode = SqlSugarHelper.DbWCS.Queryable<Dt_DeviceInfo>() .Where(x => x.DeviceStatus == "1") .Where(x => x.DeviceCode.Contains("CWSC")) // 过滤条件 .ToList().Select(x => x.DeviceCode).ToList(); var outBoundMateriel = _dt_ChangeoversRepository.QueryData(x => x.Status == "1").ToList(); List<string>? materielCodes = outBoundMateriel.Count != 0 ? outBoundMateriel.Where(x => x.ProductionLine == station.productLine && x.ProcessCode == "CWSC3") .Select(x => x.MaterielCode) .ToList() : null; #region 旧的查询代码 //var outBoundMateriel = _dt_ChangeoversRepository.QueryData(x => x.Status == "1").ToList(); //List<string>? materielCodes = outBoundMateriel.Count != 0 // ? outBoundMateriel.Where(x => x.ProductionLine == station.productLine && x.ProcessCode == "CWSC3") // .Select(x => x.MaterielCode) // .ToList() // : null; // 修改后的查询代码 var stockInfo = await _stockInfoRepository.Db.Queryable<DtStockInfo>() .Includes(x => x.LocationInfo) .Includes(x => x.StockInfoDetails) .Where(x => x.ProductionLine == station.productLine) .Where(x => x.AreaCode == "CWSC3" && x.IsFull == true) // 增加对 LocationInfo 的空值检查 .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock) // 增加对 LocationInfo 的空值检查 .WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo)) .WhereIF(!materielCodes.IsNullOrEmpty(), x => x.StockInfoDetails.Any(y => materielCodes.Contains(y.MaterielCode))) .OrderBy(x => x.OutboundTime) .FirstAsync(); //var stockInfo = await _stockInfoRepository.Db.Queryable<DtStockInfo>() // .Includes(x => x.LocationInfo) // .Includes(x => x.StockInfoDetails) // .Where(x => x.ProductionLine == station.productLine) // .Where(x => x.AreaCode == "CWSC3" && x.IsFull == true) // // 增加对 LocationInfo 的空值检查 // .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock) // // 增加对 LocationInfo 的空值检查 // .WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo)) // .WhereIF(!materielCodes.IsNullOrEmpty(), x => x.StockInfoDetails.Any(y => materielCodes.Contains(y.MaterielCode))) // .OrderBy(x => x.OutboundTime) // .FirstAsync(); #endregion if (stockInfo.IsNullOrEmpty()) throw new Exception($"CWSC3库内{station.productLine}无满足条件的库存可出库"); DtStockInfo stockInfo = null; var stockInfoList = await _stockInfoRepository.Db.Queryable<DtStockInfo>() .Includes(x => x.LocationInfo) .Where(x => x.ProductionLine == station.productLine && x.AreaCode == "CWSC3" && x.IsFull == true && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock) .WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo)) .OrderBy(x => x.OutboundTime) .ToListAsync(); foreach (var stock in stockInfoList) { var hasMatchingDetail = await _stockInfoRepository.Db.Queryable<DtStockInfoDetail>() .Where(d => d.StockId == stock.Id && respone.PreProductNo.Contains(d.MaterielCode)) .AnyAsync(); if (hasMatchingDetail) { stockInfo = stock; break; } } if (stockInfo.IsNullOrEmpty()) throw new Exception($"CWSC3库内【{station.productLine}】,【物料编码{respone.PreProductNo}】无满足条件的库存可出库"); DtLocationInfo locationInfo = _locationRepository.QueryFirst(x => x.AreaId == 5 && x.LocationCode == stockInfo.LocationCode); @@ -1114,6 +1157,9 @@ catch (Exception ex) { Console.WriteLine($"CW3至包装出库异常:{ex.ToString()}"); LogFactory.GetLog($"包装请求出库任务").Info(true, $"【异常】:【{ex.Message}】{Environment.NewLine}【{ex.StackTrace}】{Environment.NewLine}{Environment.NewLine}"); return content.Error($"失败:{ex.Message}"); } }