diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingRequestReader.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingRequestReader.cs index efbb754bb..6a4ff413a 100644 --- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingRequestReader.cs +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingRequestReader.cs @@ -21,6 +21,8 @@ using System.IdentityModel.Tokens.Jwt; using Volo.Abp; using System.Net.NetworkInformation; using Win_in.Sfs.Shared.Domain.Shared.Enums.Store; +using System.Threading; +using System.Diagnostics; namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent.Incoming; public class InjectionMoldingRequestReader : IReader @@ -62,113 +64,150 @@ public class InjectionMoldingRequestReader : IReader { try { - // 获取注塑叫料任务数量 - //var count = await _injectionRequest.GetCountAsync().ConfigureAwait(false); - //List joblist = new List(); - //if (count == 0) - //{ - // 调用 ReaderCameraApi 方法获取摄像头信息 + var sleepTime = (_options.Value.AutoRemote.TimeCycle*60/ _options.Value.AutoRemote.Interval)-10; + var invterval = _options.Value.AutoRemote.Interval; + + var successTime = 0; + + + for (int i = 0; i (); + return new List(); } - if (string.IsNullOrEmpty(_options.Value.AutoRemote.AreaIDs)) { _logger.LogInformation($"没有设置指定区域AutoRemote->AreaIDs"); return new List(); } - - var ids=_options.Value.AutoRemote.AreaIDs.Split(","); + var ids = _options.Value.AutoRemote.AreaIDs.Split(","); List camralist = new List(); foreach (var itm in ids)//遍历区域查找所有货物 { - var idsList= await client.GetCargoStaticAsync(itm).ConfigureAwait(false); - camralist.AddRange(idsList); + var idsList = await client.GetCargoStaticAsync(itm).ConfigureAwait(false); + camralist.AddRange(idsList); } - camralist = camralist.Where(p=>p.Flag==0).ToList(); - + successTime++; + if (successTime == invterval) + { - List inputdetail=new List(); - foreach (var item in camralist) - { - UnCompletedRequestDto jobrequestinput = new UnCompletedRequestDto(); - jobrequestinput.ItemCode = item.PartCode; - jobrequestinput.LocCode = item.AreaID.ToString(); - jobrequestinput.PositionCode = item.CargoID.ToString(); - inputdetail.Add(jobrequestinput); - } + List inputdetail = new List(); + foreach (var item in camralist) + { + UnCompletedRequestDto jobrequestinput = new UnCompletedRequestDto(); + jobrequestinput.ItemCode = item.PartCode; + jobrequestinput.LocCode = item.AreaID.ToString(); + jobrequestinput.PositionCode = item.CargoID.ToString(); + inputdetail.Add(jobrequestinput); + } - var uncompletelist= await _injectionRequest.GetUnCompletedRequestAsync(inputdetail).ConfigureAwait(false);//将所有库位零件信息查找未完成记录 + var uncompletelist = await _injectionRequest.GetUnCompletedRequestAsync(inputdetail).ConfigureAwait(false);//将所有库位零件信息查找未完成记录 - var query = from itm in camralist - join itm1 in uncompletelist on new { locCode = itm.AreaID.ToString(), itmCode = itm.PartCode, PositionCode = itm.CargoID.ToString() } - equals new { locCode = itm1.LocCode, itmCode = itm1.ItemCode, PositionCode = itm1.PositionCode} into temp - from tm in temp.DefaultIfEmpty() - where tm == null - select itm; - var injectionList=query.ToList();//已经完成的记录 + var query = from itm in camralist + join itm1 in uncompletelist on new { locCode = itm.AreaID.ToString(), itmCode = itm.PartCode, PositionCode = itm.CargoID.ToString() } + equals new { locCode = itm1.LocCode, itmCode = itm1.ItemCode, PositionCode = itm1.PositionCode } into temp + from tm in temp.DefaultIfEmpty() + where tm == null + select itm; + var injectionList = query.ToList();//已经完成的记录 - foreach (var inject in injectionList) - { - List cameraList = new List(); - - InjectionIssueRequestEditInput input = new InjectionIssueRequestEditInput(); - input.Worker = "Vision"; - input.IssueRequestType = EnumIssueRequestType.Vision; - input.AutoSubmit = true; - input.ActiveDate = DateTime.Now; - input.UseOnTheWayLocation = false; - input.Remark = "视觉叫料"; - List injectionRequestDetails = new List(); - //foreach (var job in cameraList) - //{ + foreach (var inject in injectionList) + { + List cameraList = new List(); + + InjectionIssueRequestEditInput input = new InjectionIssueRequestEditInput(); + input.Worker = "Vision"; + input.IssueRequestType = EnumIssueRequestType.Vision; + input.AutoSubmit = true; + input.ActiveDate = DateTime.Now; + input.UseOnTheWayLocation = false; + input.Remark = "视觉叫料"; + List injectionRequestDetails = new List(); + //foreach (var job in cameraList) + //{ var detailInput = new InjectionIssueRequestDetailInput() { ItemCode = inject.PartCode, ToLocationCode = inject.AreaID.ToString(), - PositionCode=inject.CargoID, + PositionCode = inject.CargoID, Qty = 1, RecommendType = EnumRecommendType.RAW, IssuedQty = 0, ReceivedQty = 0, Status = EnumStatus.Open, RequestStatus = EnumRequestStatus.New, - BoxQty=1 + BoxQty = 1 }; // 添加注塑叫料明细任务数据 injectionRequestDetails.Add(detailInput); - //} - input.Details.AddRange(injectionRequestDetails); - // 通过 BindAsync 方法对零件仓库进行赋值 - var errors = await BindAsync(input.Details).ConfigureAwait(false); - if (errors.Count > 0) - { - // 记录错误日志并返回空列表 - foreach (var error in errors) + //} + input.Details.AddRange(injectionRequestDetails); + // 通过 BindAsync 方法对零件仓库进行赋值 + var errors = await BindAsync(input.Details).ConfigureAwait(false); + if (errors.Count > 0) { - _logger.LogInformation(error); + // 记录错误日志并返回空列表 + foreach (var error in errors) + { + _logger.LogInformation(error); + } + return new List(); } - return new List(); + // 创建新的注塑请求并将数据写入数据库 + await _injectionRequest.CreateAsync(input).ConfigureAwait(false); } - // 创建新的注塑请求并将数据写入数据库 - await _injectionRequest.CreateAsync(input).ConfigureAwait(false); - } + else + { + Thread.Sleep(sleepTime * 1000); + } + sw.Stop(); + _logger.LogInformation($"读取成功次数{successTime},耗时 ${sw.ElapsedMilliseconds / 1000 / 60}分钟"); + } + + + //Client client = new Client(_options.Value.AutoRemote.IpAddress, _httpClientFactory.CreateClient());//调用客户记录 + + //var flag= await client.GetMacStaticAsync().ConfigureAwait(false); + //if (flag!=1) + //{ + // // 记录错误日志并返回空列表 + // _logger.LogInformation($"读取到摄像头信息为不可用{DateTime.Now},请检查摄像头"); + // return new List(); //} - //else + + //if (string.IsNullOrEmpty(_options.Value.AutoRemote.AreaIDs)) //{ - // _logger.LogInformation("注塑叫料任务已存在,无需读取"); + // _logger.LogInformation($"没有设置指定区域AutoRemote->AreaIDs"); + // return new List(); //} + + //var ids=_options.Value.AutoRemote.AreaIDs.Split(","); + //List camralist = new List(); + //foreach (var itm in ids)//遍历区域查找所有货物 + //{ + // var idsList= await client.GetCargoStaticAsync(itm).ConfigureAwait(false); + // camralist.AddRange(idsList); + //} + //camralist = camralist.Where(p=>p.Flag==0).ToList(); + + + + //} + + } // 捕获特定异常并记录日志 diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingTaskIncomingBackgroundWorker.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingTaskIncomingBackgroundWorker.cs index e9464cf25..146a50cca 100644 --- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingTaskIncomingBackgroundWorker.cs +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingTaskIncomingBackgroundWorker.cs @@ -24,7 +24,7 @@ public class InjectionMoldingTaskIncomingBackgroundWorker : AsyncPeriodicBackgro ) : base(timer, serviceScopeFactory) { _options = options; - Timer.Period = options.Value.IncomingOptions.PeriodSeconds * 1000; //default 10 minutes + Timer.Period = options.Value.AutoRemote.TimeCycle * 60 * 1000; //default 10 minutes } [UnitOfWork] diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/InjectionMoldingTaskOptions.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/InjectionMoldingTaskOptions.cs index a4915d6d5..01b357e1d 100644 --- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/InjectionMoldingTaskOptions.cs +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/InjectionMoldingTaskOptions.cs @@ -27,6 +27,10 @@ public class InjectionAutoRemote public string AreaIDs { set; get; } + public int Interval { set; get; } // interval + + public int TimeCycle { set; get; } + } @@ -36,7 +40,7 @@ public class InjectionAutoRemote public class DataExchangeOptions { public bool Active { get; set; } - public int PeriodSeconds { get; set; } = 60; + public int PeriodSeconds { get; set; } = 300; public int BatchSize { get; set; } = 10; public int MaxCount { get; set; } = 100; public int RetryTimes { get; set; } = 3; diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/appsettings.json b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/appsettings.json index 8103c9102..6924783cf 100644 --- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/appsettings.json +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/appsettings.json @@ -71,7 +71,12 @@ "UserName": "", "Password": "", "Token": "", - "AreaIDs": "1" + "AreaIDs": "1", + + + "Interval" : "3", // interval + + "TimeCycle" :"5" }, "IncomingOptions": { diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/test/TestAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/test/TestAppService.cs index 11f7020c5..194c19364 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/test/TestAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/test/TestAppService.cs @@ -36,36 +36,36 @@ public class TestService:ApplicationService _options = options; } - ///// - ///// 生命周期操作 - ///// - //[HttpPost("GetMacStatic")] - //public async Task GetMacStatic() - //{ - // return 1; - //} + /// + /// 生命周期操作 + /// + [HttpPost("GetMacStatic")] + public async Task GetMacStatic() + { + return 1; + } - //[HttpPost("GetCargoStatic")] - ///// - ///// 异步开始生命周期操作不能堵塞 - ///// - //public async Task> GetCargoStatic(string p_AreaID) - //{ + [HttpPost("GetCargoStatic")] + /// + /// 异步开始生命周期操作不能堵塞 + /// + public async Task> GetCargoStatic(string p_AreaID) + { - // List result = new List(); + List result = new List(); - // result.Add(new ResponCargoItem() { AreaID = "1", CargoID = "PTXB1", PartCode = "TMDLYA0A071AB", Flag = 0 }); - // result.Add(new ResponCargoItem() { AreaID = "1", CargoID = "PTXB2", PartCode = "TMDLYA0A061AB", Flag = 0 }); - // result.Add(new ResponCargoItem() { AreaID = "2", CargoID = "ZSXB2", PartCode = "TMDLYD0ABM5A", Flag = 0 }); + result.Add(new ResponCargoItem() { AreaID = "1", CargoID = "PTXB1", PartCode = "TMDLYA0A071AB", Flag = 0 }); + result.Add(new ResponCargoItem() { AreaID = "1", CargoID = "PTXB2", PartCode = "TMDLYA0A061AB", Flag = 0 }); + result.Add(new ResponCargoItem() { AreaID = "2", CargoID = "ZSXB2", PartCode = "TMDLYD0ABM5A", Flag = 0 }); - // result = result.Where(p => p.AreaID == p_AreaID).ToList(); - + result = result.Where(p => p.AreaID == p_AreaID).ToList(); - // return result; - //} + return result; + + } [HttpPost("SyncIssueJobStereo")] public virtual async Task SyncIssueJobStereoAsync(IssueJobToRestoDTO input) diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs index d030f8a55..6d183390a 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs @@ -397,13 +397,11 @@ public class KittingIssueJobAppService main.Details = IssueJobToRestoDetailDTOs; var httpclient = _httpClientFactory.CreateClient(); #if DEBUG - string json= System.Text.Json.JsonSerializer.Serialize(main); _options.Value.Address = "http://localhost:59094/";//测试地址 _options.Value.Token = "";//测试token _options.Value.UserName = "";//测试用户名 _options.Value.Password = "";//测试密码 - #endif if (!string.IsNullOrEmpty(_options.Value.Token)) { @@ -426,9 +424,7 @@ public class KittingIssueJobAppService ret.Message=ex.Message; ret.OperateTime = DateTime.Now.ToString("yyyy-MM-dd"); } - return ret; - } [HttpPost("receive-issue-job-stereo")] @@ -447,7 +443,6 @@ public class KittingIssueJobAppService }; try { - if (input.Jobs.Count > 0) { var jobs = input.Jobs; diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/IssueJobToRestoClient.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/IssueJobToRestoClient.cs index 034c0a0ae..0f801929b 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/IssueJobToRestoClient.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/IssueJobToRestoClient.cs @@ -95,7 +95,7 @@ namespace MyNamespace var urlBuilder_ = new System.Text.StringBuilder(); if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); // Operation Path: "CargoState/SyncIssueJobStereo" - urlBuilder_.Append("CargoState/SyncIssueJobStereo");//修改路由按需求 + urlBuilder_.Append("CargoState/SyncIssueJobStereo");//修改路由需求 PrepareRequest(client_, request_, urlBuilder_);