| | |
| | | using CmsQueryExtensions; |
| | | using CmsQueryExtensions.Entitys; |
| | | using CmsQueryExtensions.Extension; |
| | | using Humanizer; |
| | | using KissUtil.Extensions; |
| | | using Microsoft.Extensions.DependencyInjection; |
| | | using Newtonsoft.Json; |
| | |
| | | /// </summary> |
| | | public class SharedService : CMSPluginAppService |
| | | { |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 忣åè½ |
| | |
| | | |
| | | |
| | | /// <summary> |
| | | /// è£
é
å·¥åºå®å·¥ |
| | | /// è£
é
/çæ¥å·¥åºå®å·¥ |
| | | /// </summary> |
| | | /// <param name="_serviceProvider"></param> |
| | | /// <param name="input"></param> |
| | |
| | | throw new UserFriendlyException($"管段ç¼ç ä¸è½ä¸ºç©º"); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | #region äºå¡ |
| | | |
| | | using var scope = _serviceProvider.CreateScope(); |
| | | var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>(); |
| | | using var uow = unitOfWorkManager.Begin(requiresNew: true); |
| | | |
| | | try |
| | | { |
| | | #region æ°æ®å¤ç |
| | | |
| | | VariableService _variableService = _serviceProvider.GetRequiredService<VariableService>(); |
| | | var _workSectionManager = _serviceProvider.GetRequiredService<IWorkSectionManager>(); |
| | |
| | | Value = value.SafeString() |
| | | }); |
| | | } |
| | | |
| | | #region äºå¡ |
| | | |
| | | using var scope = _serviceProvider.CreateScope(); |
| | | var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>(); |
| | | using var uow = unitOfWorkManager.Begin(requiresNew: true); |
| | | |
| | | try |
| | | { |
| | | #region æ°æ®å¤ç |
| | | |
| | | firstWorkTask.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.已宿; |
| | | await workTaskRepository.UpdateAsync(firstWorkTask); |
| | |
| | | |
| | | await traceProvider.CreateTraceAsync(traceModel); |
| | | |
| | | |
| | | |
| | | #endregion |
| | | |
| | | await uow.CompleteAsync(); |
| | | |
| | | var response = new MesOrderResponse |
| | | { |
| | | Code = "200", |
| | |
| | | Time = DateTime.UtcNow |
| | | }; |
| | | return response; |
| | | |
| | | #endregion |
| | | |
| | | await uow.CompleteAsync(); |
| | | } |
| | | catch (Exception) |
| | | { |
| | |
| | | |
| | | } |
| | | |
| | | #region æ³å
°å²ç |
| | | |
| | | |
| | | /// <summary> |
| | | ///ä¸åæ³å
°å²ç å¼å·¥ |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <param name="_serviceProvider"></param> |
| | | /// <param name="myCurrentUser"></param> |
| | | /// <returns></returns> |
| | | /// <exception cref="UserFriendlyException"></exception> |
| | | public async Task<MesOrderResponse> SendFlangeCode_StartProduction(SendFlangeCodeInput input, IServiceProvider _serviceProvider, MyCurrentUser myCurrentUser) |
| | | { |
| | | if (string.IsNullOrEmpty(input.TaskCode.ToString())) |
| | | { |
| | | throw new UserFriendlyException("ä»»å¡ç¼ç ä¸è½ä¸ºç©º"); |
| | | } |
| | | |
| | | string processName = "æ³å
°å²ç "; |
| | | |
| | | VariableService _variableService = _serviceProvider.GetRequiredService<VariableService>(); |
| | | var callMaterialOrderRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRepository>(); |
| | | var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>(); |
| | | var workTaskRepository = _serviceProvider.GetRequiredService<IWorkTaskRepository>(); |
| | | var callMaterialOrderRecordRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRecordRepository>(); |
| | | var orderManager = _serviceProvider.GetRequiredService<IOrderManager>(); |
| | | var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>(); |
| | | |
| | | var workTaskAppService = _serviceProvider.GetRequiredService<IWorkTaskAppService>(); |
| | | |
| | | |
| | | // æ¥æ¾æ°æ® |
| | | var workTask = await workTaskRepository.GetSingleByFilterAsync(x => x.Son_TaskCode == input.Son_TaskCode); |
| | | if (workTask == null) |
| | | { |
| | | throw new UserFriendlyException($"æ²¡ææ¾å°åä»»å¡ç¼å·{input.Son_TaskCode}ç任塿°æ®"); |
| | | } |
| | | if (workTask.WorkPlanStatus != Domain.Shared.Enums.WorkPlanStatusEnum.æªç产) |
| | | { |
| | | throw new UserFriendlyException($"åä»»å¡ç¼å·{input.Son_TaskCode}çä»»å¡ç¶æä¸æ¯'{Domain.Shared.Enums.WorkPlanStatusEnum.æªç产.ToString()}'"); |
| | | } |
| | | var workPlan = await workPlanRepository.GetSingleByFilterAsync(x => x.TaskCode == input.TaskCode); |
| | | if (workPlan == null) |
| | | { |
| | | throw new UserFriendlyException($"æ¾ä¸å°ä½ä¸è®¡å"); |
| | | } |
| | | |
| | | |
| | | // éªè¯ç¶æ |
| | | if (workPlan.WorkPlanStatus != Domain.Shared.Enums.WorkPlanStatusEnum.æåä¸ && workPlan.WorkPlanStatus != Domain.Shared.Enums.WorkPlanStatusEnum.æªç产) |
| | | { |
| | | //ææ¶æ³¨é |
| | | //throw new UserFriendlyException($"ä»»å¡ç¼ç '{input.TaskCode}' çå½ç¶æä¸º '{workPlan.WorkPlanStatus}'ï¼ä¸å
许å¼å·¥"); |
| | | } |
| | | |
| | | var callMaterialOrder = await callMaterialOrderAppService.GetSingleByFilterAsync(x => x.DataIdentifier == workPlan.DataIdentifier); |
| | | #region äºå¡ |
| | | |
| | | using var scope = _serviceProvider.CreateScope(); |
| | | var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>(); |
| | | using var uow = unitOfWorkManager.Begin(requiresNew: true); |
| | | |
| | | try |
| | | { |
| | | #region æ°æ®å¤ç |
| | | |
| | | //1ãæ´æ°ä½ä¸è®¡å表为 çäº§ä¸ |
| | | //2ãç»PLCåå·¥èºåæ°æä»¤,å¹¶åå
¥ plcä¸ äº§åid |
| | | //if (workPlan.ProcessName == "è£
é
å·¥åº") |
| | | //{ |
| | | // workPlan.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.ç产ä¸; |
| | | //} |
| | | //else if (workPlan.ProcessName == "çæ¥å·¥åº") |
| | | //{ |
| | | // workPlan.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.已宿; |
| | | //} |
| | | workPlan.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.ç产ä¸; |
| | | workTask.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.ç产ä¸; |
| | | |
| | | await workPlanRepository.UpdateAsync(workPlan); |
| | | |
| | | await workTaskRepository.UpdateAsync(workTask); |
| | | |
| | | Dictionary<string, object?> keyValuePairs = new Dictionary<string, object?> |
| | | { |
| | | { $"{processName}_ProductID", workPlan.PipeSpecCode }, |
| | | { $"{processName}管段ç¼ç ", workPlan.PipeSpecCode }, |
| | | { $"{processName}管段åç§°", workPlan.PipeSectionName }, |
| | | { $"{processName}åæç®¡æ¹æ¬¡", callMaterialOrder.MaterialBatch }, |
| | | { $"{processName}åæç®¡åå·", callMaterialOrder.MaterialMode }, |
| | | { $"{processName}åæç®¡æ è¯", callMaterialOrder.DataIdentifier }, |
| | | { $"{processName}项ç®å·", workPlan.ProjectNumber }, |
| | | { $"{processName}è¹å·", workPlan.ShipNumber }, |
| | | |
| | | //ééæ°æ®æ¨¡æåå
¥ |
| | | { $"{processName}åå", "10.0 MPa" }, |
| | | { $"{processName}é度", "18mm/s"}, |
| | | |
| | | { $"{processName}å
容", workTask.PipeAllowableStress}, |
| | | |
| | | { $"{processName}人", myCurrentUser.UserAccount}, |
| | | { $"{processName}é´é","15mm"}, |
| | | { $"{processName}ä½ç½®", "10,23,24"}, |
| | | }; |
| | | _variableService.WriteValueAsync(keyValuePairs); |
| | | |
| | | |
| | | #endregion |
| | | |
| | | await uow.CompleteAsync(); |
| | | |
| | | // è¿åç»æ |
| | | var response = new MesOrderResponse |
| | | { |
| | | Code = "200", |
| | | Message = "å¤çæå", |
| | | Time = DateTime.UtcNow |
| | | }; |
| | | return response; |
| | | } |
| | | catch (Exception) |
| | | { |
| | | await uow.RollbackAsync(); |
| | | throw; |
| | | } |
| | | finally |
| | | { |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | #endregion |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// ä¸åæ³å
°å²ç å®å·¥ |
| | | /// </summary> |
| | | /// <param name="_serviceProvider"></param> |
| | | /// <param name="input"></param> |
| | | /// <param name="myCurrentUser"></param> |
| | | /// <returns></returns> |
| | | public async Task<MesOrderResponse> SendFlangeCode_CompleteAssemblyProcess(IServiceProvider _serviceProvider, CompleteAssemblyProcessInput input, MyCurrentUser myCurrentUser) |
| | | { |
| | | //1ãè®°å½åæ£è®°å½è¡¨ |
| | | //2ãæ´æ°ä½ä¸è®¡å表çç¶æ =已忣 |
| | | //3ãåå
¥ 忣åé |
| | | //4ãåå
¥è¿½æº¯æ¥è¡¨ |
| | | //5ãç©æç»ç |
| | | |
| | | if (string.IsNullOrEmpty(input.PipeSpecCode)) |
| | | { |
| | | throw new UserFriendlyException($"管段ç¼ç ä¸è½ä¸ºç©º"); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | #region äºå¡ |
| | | |
| | | using var scope = _serviceProvider.CreateScope(); |
| | | var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>(); |
| | | using var uow = unitOfWorkManager.Begin(requiresNew: true); |
| | | |
| | | try |
| | | { |
| | | #region æ°æ®å¤ç |
| | | |
| | | VariableService _variableService = _serviceProvider.GetRequiredService<VariableService>(); |
| | | var _workSectionManager = _serviceProvider.GetRequiredService<IWorkSectionManager>(); |
| | | var _workStationManager = _serviceProvider.GetRequiredService<IWorkStationManager>(); |
| | | var traceProvider = _serviceProvider.GetRequiredService<ITraceProvider>(); |
| | | var materialProvider = _serviceProvider.GetRequiredService<IMaterialProvider>(); |
| | | var workPlanAppService = _serviceProvider.GetRequiredService<IWorkPlanAppService>(); |
| | | var workTaskAppService = _serviceProvider.GetRequiredService<IWorkTaskAppService>(); |
| | | var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>(); |
| | | var workTaskRepository = _serviceProvider.GetRequiredService<IWorkTaskRepository>(); |
| | | var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>(); |
| | | |
| | | string processName = "æ³å
°å²ç "; |
| | | var firstWorkTask = await workTaskAppService.GetSingleByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode && x.ProcessName == (input.ProcessName)); |
| | | if (firstWorkTask == null) |
| | | { |
| | | throw new UserFriendlyException($"æ¾ä¸å°ä½ä¸è®¡å"); |
| | | } |
| | | //ç©æåæ°å表 |
| | | var firstWorkPlan = await workPlanAppService.GetSingleByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode && x.ProcessName == "è£
é
å·¥åº"); |
| | | if (firstWorkPlan == null) |
| | | { |
| | | throw new UserFriendlyException($"æ¾ä¸å°ä½ä¸è®¡å"); |
| | | } |
| | | |
| | | await CompleteHandleOutStoreFinish(_serviceProvider, processName, true); |
| | | |
| | | //æ ¹æ®å·¥åºåè·åå·¥åºå¯¹è±¡ |
| | | var workSection = await _workSectionManager.GetByNameAsync($"{processName}å·¥åº"); |
| | | var workStation = await _workStationManager.GetByNameAsync($"{processName}å·¥ä½"); |
| | | //åå
¥è¿½æº¯æ¥è¡¨ |
| | | var finishTime = DateTime.Now; |
| | | TraceModel traceModel = new TraceModel() |
| | | { |
| | | SerialNumber = input.PipeSpecCode, |
| | | WorkSectionId = workSection.Id, |
| | | WorkSectionName = workSection.Name, |
| | | WorkStationName = workStation.Name, |
| | | |
| | | FinishTime = finishTime, |
| | | IsQualified = true, |
| | | UnqualifiedReason = "", |
| | | ProductModel = "", |
| | | ProductName = "", |
| | | |
| | | }; |
| | | traceModel.Params = new List<TraceParamModel>(); |
| | | foreach (var item in workSection.ProcessParameters) |
| | | { |
| | | var value = "ssss"; |
| | | traceModel.Params.Add(new TraceParamModel() |
| | | { |
| | | Key = item.Key, |
| | | Value = value.SafeString() |
| | | }); |
| | | } |
| | | |
| | | firstWorkTask.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.已宿; |
| | | await workTaskRepository.UpdateAsync(firstWorkTask); |
| | | |
| | | //è¿ä¸ªå°æ¹ä¸æ¹æ°æ® |
| | | //firstWorkPlan.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.已宿; |
| | | //await workPlanRepository.UpdateAsync(firstWorkPlan); |
| | | |
| | | var callMaterialOrder = await callMaterialOrderAppService.GetSingleByFilterAsync(x => x.DataIdentifier == firstWorkPlan.DataIdentifier); |
| | | |
| | | var rawPipe_DataIdentifier = await materialProvider.FindByNameAsync("åæç®¡æ è¯"); |
| | | var rawPipe_MaterialMode = await materialProvider.FindByNameAsync("åæç®¡åå·"); |
| | | var rawPipe_Batch = await materialProvider.FindByNameAsync("åæç®¡æ¹æ¬¡"); |
| | | var rawPipe_ProjectNumber = await materialProvider.FindByNameAsync("项ç®å·"); |
| | | var rawPipe_ShipNumber = await materialProvider.FindByNameAsync("è¹å·"); |
| | | List<TraceMaterialModel> _MaterialParams = new List<TraceMaterialModel>(); |
| | | foreach (var item in workSection.MaterialParameters) |
| | | { |
| | | if (item.Name == "åæç®¡åå·") |
| | | { |
| | | _MaterialParams.Add(new TraceMaterialModel() |
| | | { |
| | | Key = item.Key, |
| | | Quantity = 1, |
| | | MaterialId = rawPipe_MaterialMode.MaterialId, |
| | | MaterialDetailId = rawPipe_MaterialMode.MaterialDetails.First().Id, |
| | | Value = firstWorkPlan.MaterialMode |
| | | |
| | | }); |
| | | } |
| | | if (item.Name == "åæç®¡æ è¯") |
| | | { |
| | | _MaterialParams.Add(new TraceMaterialModel() |
| | | { |
| | | Key = item.Key, |
| | | Quantity = 1, |
| | | MaterialId = rawPipe_DataIdentifier.MaterialId, |
| | | MaterialDetailId = rawPipe_DataIdentifier.MaterialDetails.First().Id, |
| | | Value = firstWorkPlan.DataIdentifier, |
| | | |
| | | }); |
| | | } |
| | | if (item.Name == "åæç®¡æ¹æ¬¡") |
| | | { |
| | | _MaterialParams.Add(new TraceMaterialModel() |
| | | { |
| | | Key = item.Key, |
| | | Quantity = 1, |
| | | MaterialId = rawPipe_Batch.MaterialId, |
| | | MaterialDetailId = rawPipe_Batch.MaterialDetails.First().Id, |
| | | Value = callMaterialOrder.MaterialBatch,//æ¹æ¬¡ææ¶åæ» |
| | | |
| | | }); |
| | | } |
| | | if (item.Name == "项ç®å·") |
| | | { |
| | | _MaterialParams.Add(new TraceMaterialModel() |
| | | { |
| | | Key = item.Key, |
| | | Quantity = 1, |
| | | MaterialId = rawPipe_ProjectNumber.MaterialId, |
| | | MaterialDetailId = rawPipe_ProjectNumber.MaterialDetails.First().Id, |
| | | Value = firstWorkPlan.ProjectNumber, |
| | | |
| | | }); |
| | | } |
| | | if (item.Name == "è¹å·") |
| | | { |
| | | _MaterialParams.Add(new TraceMaterialModel() |
| | | { |
| | | Key = item.Key, |
| | | Quantity = 1, |
| | | MaterialId = rawPipe_ShipNumber.MaterialId, |
| | | MaterialDetailId = rawPipe_ShipNumber.MaterialDetails.First().Id, |
| | | Value = firstWorkPlan.ShipNumber, |
| | | |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | //é
ç½®è¿ç¨åæ°(ééåæ°ãé
æ¹åæ°) |
| | | traceModel.Params = new List<TraceParamModel>(); |
| | | foreach (var item in workSection.ProcessParameters) |
| | | { |
| | | string _value = ""; |
| | | |
| | | //ééåæ° |
| | | if (item.Name == $"{processName}åå") |
| | | { |
| | | var _getValue = await _variableService.ReadValueAsync($"{processName}åå"); |
| | | _value = _getValue.Content.Value.SafeString().ToString(); |
| | | } |
| | | if (item.Name == $"{processName}ä½ç½®") |
| | | { |
| | | var _getValue = await _variableService.ReadValueAsync($"{processName}ä½ç½®"); |
| | | _value = _getValue.Content.Value.SafeString().ToString(); |
| | | } |
| | | if (item.Name == $"{processName}é度") |
| | | { |
| | | var _getValue = await _variableService.ReadValueAsync($"{processName}é度"); |
| | | _value = _getValue.Content.Value.SafeString().ToString(); |
| | | } |
| | | |
| | | if (item.Name == $"{processName}é´é") |
| | | { |
| | | _value = "15mm"; |
| | | } |
| | | if (item.Name == $"{processName}人") |
| | | { |
| | | _value = myCurrentUser.UserAccount; |
| | | } |
| | | //item.Key |
| | | TraceParamModel traceParamModel = new TraceParamModel() |
| | | { |
| | | Key = item.Key, |
| | | Value = _value |
| | | }; |
| | | traceModel.Params.Add(traceParamModel); |
| | | }; |
| | | foreach (var item in workSection.FormulaParameters) |
| | | { |
| | | string _value = ""; |
| | | |
| | | //ééåæ° |
| | | if (item.Name == $"{processName}åå") |
| | | { |
| | | var _getValue = await _variableService.ReadValueAsync($"{processName}åå"); |
| | | _value = _getValue.Content.Value.SafeString().ToString(); |
| | | } |
| | | if (item.Name == $"{processName}ä½ç½®") |
| | | { |
| | | var _getValue = await _variableService.ReadValueAsync($"{processName}ä½ç½®"); |
| | | _value = _getValue.Content.Value.SafeString().ToString(); |
| | | } |
| | | if (item.Name == $"{processName}é度") |
| | | { |
| | | var _getValue = await _variableService.ReadValueAsync($"{processName}é度"); |
| | | _value = _getValue.Content.Value.SafeString().ToString(); |
| | | } |
| | | if (item.Name == $"{processName}å
容") |
| | | { |
| | | var _getValue = await _variableService.ReadValueAsync($"{processName}å
容"); |
| | | _value = _getValue.Content.Value.SafeString().ToString(); |
| | | } |
| | | |
| | | if (item.Name == $"{processName}é´é") |
| | | { |
| | | _value = "15mm"; |
| | | } |
| | | if (item.Name == $"{processName}人") |
| | | { |
| | | _value = myCurrentUser.UserAccount; |
| | | } |
| | | //item.Key |
| | | TraceParamModel traceParamModel = new TraceParamModel() |
| | | { |
| | | Key = item.Key, |
| | | Value = _value |
| | | }; |
| | | traceModel.Params.Add(traceParamModel); |
| | | }; |
| | | |
| | | traceModel.MaterialParams = _MaterialParams; |
| | | |
| | | await traceProvider.CreateTraceAsync(traceModel); |
| | | |
| | | |
| | | |
| | | #endregion |
| | | |
| | | await uow.CompleteAsync(); |
| | | |
| | | var response = new MesOrderResponse |
| | | { |
| | | Code = "200", |
| | | Data = "", |
| | | Message = "å¤çæå", |
| | | Time = DateTime.UtcNow |
| | | }; |
| | | return response; |
| | | } |
| | | catch (Exception) |
| | | { |
| | | await uow.RollbackAsync(); |
| | | throw; |
| | | } |
| | | finally |
| | | { |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | #endregion |
| | | |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |
| | | /// <summary> |
| | | /// å
Œ
±å¤ç ååºåºç«å®æä¿¡å· |