| | |
| | | { |
| | | private readonly IWorkPlanRepository workPlanRepository; |
| | | private readonly IServiceProvider _serviceProvider; |
| | | private readonly SharedService _sharedService; |
| | | |
| | | /// <summary> |
| | | /// Initializes a new instance of the <see cref="WorkPlanAppService"/> class. |
| | | /// </summary> |
| | | /// <param name="WorkPlanRepository">The task job repository.</param> |
| | | public WorkPlanAppService(IWorkPlanRepository _WorkPlanRepository, IServiceProvider serviceProvider) |
| | | public WorkPlanAppService(IWorkPlanRepository _WorkPlanRepository, IServiceProvider serviceProvider, SharedService sharedService) |
| | | { |
| | | workPlanRepository = _WorkPlanRepository; |
| | | _serviceProvider = serviceProvider; |
| | | _sharedService = sharedService; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | //转换数据 |
| | | var result = ObjectMapper.Map<List<WorkPlansImportModel.WorkPlanImportModel>, List<WorkPlanInput>>(input.WorkPlans); |
| | | |
| | | await CreatebyApsAsync(result); |
| | | //await CreatebyApsAsync(result); |
| | | await _sharedService.CommonCreatebyApsAsync(result, _serviceProvider, this); |
| | | } |
| | | |
| | | |
| | | public async Task<MesOrderResponse> CreatebyApsAsync(List<WorkPlanInput> input) |
| | | { |
| | | if (input == null) |
| | | { |
| | | throw new UserFriendlyException("输入参数不能为空"); |
| | | } |
| | | |
| | | if (input.Count == 0) |
| | | { |
| | | throw new UserFriendlyException("输入参数Data不能为空"); |
| | | } |
| | | |
| | | var orderManager = _serviceProvider.GetRequiredService<IOrderManager>(); |
| | | var productProvider = _serviceProvider.GetRequiredService<IProductProvider>(); |
| | | var formulaProvider = _serviceProvider.GetRequiredService<IFormulaProvider>(); |
| | | List<OrderModel> orderModels = new List<OrderModel>(); |
| | | //按照任务编号分组 |
| | | var groupTask = input.GroupBy(x => x.TaskCode); |
| | | foreach (var gTask in groupTask) |
| | | { |
| | | var taskCode = gTask.Key; |
| | | var order = await orderManager.GetByCodeAsync(taskCode); |
| | | if (order != null) |
| | | { |
| | | throw new UserFriendlyException($"任务编号[{taskCode}]已存在"); |
| | | } |
| | | |
| | | |
| | | //var product = await productProvider.FindByNameAsync(orderItem.PipeSectionName); |
| | | //if (product == null) |
| | | //{ |
| | | // throw new UserFriendlyException($"产品名称[{orderItem.PipeSectionName}]不存在"); |
| | | //} |
| | | |
| | | //var formula = await formulaProvider.GetFormulaAsync(product.Id); |
| | | //if (formula == null) |
| | | //{ |
| | | // throw new UserFriendlyException($"产品型号[{orderItem.MaterialCode}]无关联配方"); |
| | | //} |
| | | //首先要创建 打码切割的工单 |
| | | var productForCut = await productProvider.FindByNameAsync("切割原料管"); |
| | | if (productForCut == null) |
| | | { |
| | | throw new UserFriendlyException($"产品名称[切割原料管]不存在"); |
| | | } |
| | | var formulaForCut = await formulaProvider.GetFormulaAsync(productForCut.Id); |
| | | if (formulaForCut == null) |
| | | { |
| | | throw new UserFriendlyException($"产品名称[切割原料管]无关联配方"); |
| | | } |
| | | //分组数据 |
| | | var group = gTask.ToList().GroupBy(x => x.DataIdentifier); |
| | | foreach (var item in group) |
| | | { |
| | | OrderModel orderModelForCut = new OrderModel() |
| | | { |
| | | Id = Guid.NewGuid(), |
| | | Code = "Cut_" + taskCode, |
| | | Source = "APS推送", |
| | | PlanStartTime = gTask.ToList().First().PlannedStartTime, |
| | | PlanFinishTime = gTask.ToList().First().PlannedEndTime, |
| | | PlanQty = (ulong)item.ToList().Count, |
| | | Status = OrderStatus.NotActive, |
| | | Product = new AssociationProductModel() { Id = productForCut.Id, Name = productForCut.Name, Model = productForCut.Model, ShortNumber = productForCut.ShortNumber }, |
| | | Formula = new AssociationFormulaModel() { Id = formulaForCut.Id, Code = formulaForCut.Code, Name = formulaForCut.Name } |
| | | }; |
| | | orderModelForCut.ExtraProperties["OuterDiameter"] = gTask.ToList().First().OuterDiameter;//外径 |
| | | orderModelForCut.ExtraProperties["Material"] = gTask.ToList().First().Material;//材质 |
| | | orderModelForCut.ExtraProperties["Length"] = gTask.ToList().First().Length;//长度 |
| | | |
| | | var orderForCut = await orderManager.GetByCodeAsync(orderModelForCut.Code); |
| | | if (orderForCut != null) |
| | | { |
| | | //throw new UserFriendlyException($"工单[{orderModelForCut.Code}]已存在"); |
| | | //不再抛异常,直接跳过 |
| | | break; |
| | | } |
| | | |
| | | var orderModelResultForCut = await orderManager.CreateAsync(orderModelForCut); |
| | | if (orderModelResultForCut == null) |
| | | { |
| | | throw new UserFriendlyException($"工单[{orderModelForCut.Code}]创建失败"); |
| | | } |
| | | orderModels.Add(orderModelResultForCut); |
| | | |
| | | |
| | | //OrderModel orderModel = new OrderModel(); |
| | | //orderModel.Id = Guid.NewGuid(); |
| | | //orderModel.Code = orderItem.TaskCode; |
| | | //orderModel.Source = "APS推送"; |
| | | //orderModel.Product = new AssociationProductModel() { Id = product.Id, Name = product.Name, Model = product.Model, ShortNumber = product.ShortNumber }; |
| | | ////orderModel.Formula = new AssociationFormulaModel() { Id = formula.Id, Code = formula.Code, Name = formula.Name }; |
| | | //orderModel.PlanStartTime = orderItem.PlannedStartTime; |
| | | //orderModel.PlanFinishTime = orderItem.PlannedEndTime; |
| | | //orderModel.PlanQty = (ulong?)orderItem.OrderQty; |
| | | //orderModel.Status = OrderStatus.NotActive; |
| | | //orderModel.ExtraProperties["Source"] = "ddd"; |
| | | //var source = orderModel.ExtraProperties["Source"]; |
| | | //var orderModelResult = await orderManager.CreateAsync(orderModel); |
| | | //if (orderModelResult == null) |
| | | //{ |
| | | // throw new UserFriendlyException($"工单[{orderItem.TaskCode}]创建失败"); |
| | | //} |
| | | //orderModels.Add(orderModelResult); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | //保存到表中 |
| | | foreach (var item in input) |
| | | { |
| | | var insertObj = ObjectMapper.Map<WorkPlanInput, WorkPlanCreateDto>(item); |
| | | //insertObj.OrgMaterialCode = "1111"; |
| | | insertObj.Sort = 1; |
| | | await CreateAsync(insertObj); |
| | | } |
| | | |
| | | |
| | | // 发布事件 |
| | | //await _eventBus.PublishAsync(new EntityChangedEto("MESCREATE", input, null, EntityChangeType.Add, true)); |
| | | |
| | | var response = new MesOrderResponse |
| | | { |
| | | Code = "000000", |
| | | Data = orderModels, |
| | | Fail = false, |
| | | Mesg = "处理成功", |
| | | Success = true, |
| | | Time = DateTime.UtcNow |
| | | }; |
| | | var response=await _sharedService.CommonCreatebyApsAsync(input, _serviceProvider, this); |
| | | |
| | | return response; |
| | | } |
| | | |