| | |
| | | } |
| | | |
| | | |
| | | ///// <summary> |
| | | ///// 切割 |
| | | ///// </summary> |
| | | ///// <returns></returns> |
| | | //private async Task HanlderForCutAsync() |
| | | //{ |
| | | |
| | | // var plcTaskNo = await _variableService.ReadValueAsync("切割进站PLC任务号"); |
| | | |
| | | // if (string.IsNullOrEmpty(plcTaskNo?.Content?.Value.SafeString().ToString())) |
| | | // { |
| | | |
| | | // } |
| | | // else |
| | | // { |
| | | // var myTaskNo = plcTaskNo.Content.Value.SafeString().ToString(); |
| | | // //TODO:暂时先写入 内部变量 |
| | | // Dictionary<string, object?> keyValuePairs = new Dictionary<string, object?> |
| | | // { |
| | | // { "切割位置1", "555555" }, |
| | | // { "切割位置2", "66666" }, |
| | | // { "切割位置3", "77777" } |
| | | // }; |
| | | // _variableService.WriteValueAsync(keyValuePairs); |
| | | |
| | | // //TODO:模拟采集参数 |
| | | // keyValuePairs = new Dictionary<string, object?> |
| | | // { |
| | | // { "切割速度", 99}, |
| | | // { "切割质量", 1}, |
| | | // }; |
| | | // var ret2 = _variableService.WriteValueAsync(keyValuePairs); |
| | | |
| | | // //TODO:暂时生成产品ID |
| | | // //获取上一个工序的产品ID |
| | | // //根据工序名获取工序对象 |
| | | // var _workSectionManager = _serviceProvider.GetRequiredService<IWorkSectionManager>(); |
| | | // var lastWorkSection = "打码工序"; |
| | | // var workSection = await _workSectionManager.GetByNameAsync(lastWorkSection); |
| | | |
| | | // //获取工单数据(从末工序查询3个产品) |
| | | // //读取scms_productions表,根据当前时间查询最近3条记录 |
| | | // var traceManager = _serviceProvider.GetRequiredService<ITraceProvider>(); |
| | | // GetTracesRequest request = new GetTracesRequest() |
| | | // { |
| | | // WorkSectionId = workSection.Id, |
| | | // }; |
| | | // TraceModel traceModel = null; |
| | | // var list = await traceManager.GetTracesAsync(request); |
| | | // if (list?.Count > 0) |
| | | // { |
| | | // //重新排序 |
| | | // list = list.OrderByDescending(x => x.FinishTime).ToList(); |
| | | // traceModel = list.First(); |
| | | // } |
| | | // //var productID = Guid.NewGuid().ToString(); |
| | | // var productID = DateTime.Now.ToString("yyyyMMddHHmmssfff"); |
| | | // if (traceModel != null) |
| | | // { |
| | | // productID = traceModel.SerialNumber; |
| | | // } |
| | | // keyValuePairs = new Dictionary<string, object?> |
| | | // { |
| | | // { "切割_ProductID", productID}, |
| | | // }; |
| | | // var ret = _variableService.WriteValueAsync(keyValuePairs); |
| | | // } |
| | | //} |
| | | |
| | | /// <summary> |
| | | /// 切割 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | private async Task HanlderForCutAsync() |
| | | { |
| | | |
| | | var workPlanAppService = _serviceProvider.GetRequiredService<IWorkPlanAppService>(); |
| | | var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>(); |
| | | var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>(); |
| | | |
| | | using var scope = _serviceProvider.CreateScope(); |
| | | var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>(); |
| | | using var uow = unitOfWorkManager.Begin(requiresNew: true); |
| | | |
| | | var plcTaskNo = await _variableService.ReadValueAsync("切割进站PLC任务号"); |
| | | |
| | |
| | | } |
| | | else |
| | | { |
| | | |
| | | |
| | | |
| | | var myTaskNo = plcTaskNo.Content.Value.SafeString().ToString(); |
| | | //TODO:暂时先写入 内部变量 |
| | | CallMaterialOrder callMaterialOrder = null; |
| | | try |
| | | { |
| | | //根据wms任务号寻找 叫料工单 |
| | | callMaterialOrder = await callMaterialOrderAppService.FindByWmsTaskNoAsync(myTaskNo); |
| | | if (callMaterialOrder == null) return;//结束 |
| | | |
| | | |
| | | |
| | | //根据原料标识寻找 作业计划 |
| | | var workPlanList = await workPlanAppService.FindByDataIdentifierAsync(callMaterialOrder.DataIdentifier); |
| | | if (workPlanList?.Count == 0) return;//结束 |
| | | |
| | | //TODO:暂时生成产品ID |
| | | //var productID = DateTime.Now.ToString("yyyyMMddHHmmssfff"); |
| | | var productID = workPlanList.First().PipeSpecCode; |
| | | Dictionary<string, object?> keyValuePairs_productID = new Dictionary<string, object?> |
| | | { |
| | | { "切割_ProductID", productID}, |
| | | }; |
| | | var ret = _variableService.WriteValueAsync(keyValuePairs_productID); |
| | | |
| | | //更新为生产中 |
| | | foreach (var item in workPlanList) |
| | | { |
| | | item.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.生产中; |
| | | } |
| | | await workPlanRepository.UpdateManyAsync(workPlanList); |
| | | |
| | | //得到码值 |
| | | decimal code1 = 0; |
| | | decimal code2 = 0; |
| | | decimal code3 = 0; |
| | | var new_workPlanList = workPlanList.Where(x => x.ProcessRouteNumber == "装配").ToList(); |
| | | for (int i = 0; i < new_workPlanList.Count; i++) |
| | | { |
| | | if (i == 0) |
| | | { |
| | | code1 = new_workPlanList[i].CuttingPosition; |
| | | } |
| | | if (i == 1) |
| | | { |
| | | code2 = new_workPlanList[i].CuttingPosition; |
| | | } |
| | | if (i == 2) |
| | | { |
| | | code3 = new_workPlanList[i].CuttingPosition; |
| | | } |
| | | } |
| | | Dictionary<string, object?> keyValuePairs = new Dictionary<string, object?> |
| | | { |
| | | { "切割位置1", "555555" }, |
| | | { "切割位置2", "66666" }, |
| | | { "切割位置3", "77777" } |
| | | { "切割位置1",code1}, |
| | | { "切割位置2", code2}, |
| | | { "切割位置3", code3 }, |
| | | { "切割管段编码", new_workPlanList.First().PipeSpecCode }, |
| | | { "切割管段名称", new_workPlanList.First().PipeSectionName }, |
| | | { "切割原料管型号", new_workPlanList.First().MaterialMode }, |
| | | { "切割原料标识", new_workPlanList.First().DataIdentifier } |
| | | }; |
| | | _variableService.WriteValueAsync(keyValuePairs); |
| | | |
| | |
| | | }; |
| | | var ret2 = _variableService.WriteValueAsync(keyValuePairs); |
| | | |
| | | //TODO:暂时生成产品ID |
| | | //获取上一个工序的产品ID |
| | | //根据工序名获取工序对象 |
| | | var _workSectionManager = _serviceProvider.GetRequiredService<IWorkSectionManager>(); |
| | | var lastWorkSection = "打码工序"; |
| | | var workSection = await _workSectionManager.GetByNameAsync(lastWorkSection); |
| | | |
| | | //获取工单数据(从末工序查询3个产品) |
| | | //读取scms_productions表,根据当前时间查询最近3条记录 |
| | | var traceManager = _serviceProvider.GetRequiredService<ITraceProvider>(); |
| | | GetTracesRequest request = new GetTracesRequest() |
| | | { |
| | | WorkSectionId = workSection.Id, |
| | | }; |
| | | TraceModel traceModel = null; |
| | | var list = await traceManager.GetTracesAsync(request); |
| | | if (list?.Count > 0) |
| | | { |
| | | //重新排序 |
| | | list = list.OrderByDescending(x => x.FinishTime).ToList(); |
| | | traceModel = list.First(); |
| | | |
| | | |
| | | uow.CompleteAsync(); |
| | | } |
| | | //var productID = Guid.NewGuid().ToString(); |
| | | var productID = DateTime.Now.ToString("yyyyMMddHHmmssfff"); |
| | | if (traceModel != null) |
| | | catch (Exception) |
| | | { |
| | | productID = traceModel.SerialNumber; |
| | | uow.RollbackAsync(); |
| | | throw; |
| | | } |
| | | keyValuePairs = new Dictionary<string, object?> |
| | | { |
| | | { "切割_ProductID", productID}, |
| | | }; |
| | | var ret = _variableService.WriteValueAsync(keyValuePairs); |
| | | } |
| | | } |
| | | } |