From 874ddf20325b535872488905caa648beaf9ff024 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周三, 14 5月 2025 14:07:17 +0800 Subject: [PATCH] 管件提交 --- PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Services/IWorkPlanAppService.cs | 21 ++++ PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs | 85 ++++++++++++++-- PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs | 60 ++++++++--- PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/WorkPlan/IWorkPlanRepository.cs | 21 ++++ PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/MesOrderResponse.cs | 12 +- PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Repositories/EfCoreWorkPlanRepository.cs | 52 ++++++++++ 6 files changed, 215 insertions(+), 36 deletions(-) diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/MesOrderResponse.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/MesOrderResponse.cs index a2f5666..02fc481 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/MesOrderResponse.cs +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/MesOrderResponse.cs @@ -15,14 +15,14 @@ [JsonPropertyName("data")] public object Data { get; set; } - [JsonPropertyName("fail")] - public bool Fail { get; set; } + //[JsonPropertyName("fail")] + //public bool Fail { get; set; } - [JsonPropertyName("mesg")] - public string Mesg { get; set; } + [JsonPropertyName("message")] + public string Message { get; set; } - [JsonPropertyName("success")] - public bool Success { get; set; } + //[JsonPropertyName("success")] + //public bool Success { get; set; } [JsonPropertyName("time")] public DateTime Time { get; set; } diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Services/IWorkPlanAppService.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Services/IWorkPlanAppService.cs index 513b7bd..6a731e7 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Services/IWorkPlanAppService.cs +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Services/IWorkPlanAppService.cs @@ -1,5 +1,7 @@ using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan; using CMS.Plugin.PipeLineLems.Domain.WorkPlan; +using System.Linq.Expressions; +using Volo.Abp; using Volo.Abp.Application.Services; using Volo.Abp.Users; @@ -54,4 +56,23 @@ /// <param name="input"></param> /// <returns></returns> Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWorkPlanInput input); + + /// <summary> + /// 鏍规嵁鏉′欢鑾峰彇浣滀笟璁″垝琛ㄥ垪琛� + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + Task<List<WorkPlan>> GetListByFilterAsync(Expression<Func<WorkPlan, bool>> whereConditions, CancellationToken cancellationToken = default); + + + /// <summary> + /// 鏍规嵁鏉′欢鑾峰彇鍗曚釜浣滀笟璁″垝琛� + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="isMultipleThrowException">鏄惁鏌ヨ鍑哄鏉″氨鎶ラ敊</param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + /// <exception cref="UserFriendlyException"></exception> + Task<WorkPlan> GetSingleByFilterAsync(Expression<Func<WorkPlan, bool>> whereConditions, bool is鈥婱ultipleThrowException = false, CancellationToken cancellationToken = default); } diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs index 7211e3f..acd549a 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs @@ -19,6 +19,12 @@ using CmsQueryExtensions.Entitys; using CMS.Unit.RuntimeValue.Abstractions; using CMS.Extensions.Variable; +using CMS.Plugin.TraceManagement.Abstractions.Models.Traces; +using CMS.Plugin.ProcessManagement.Abstractions; +using KissUtil.Extensions; +using CMS.Plugin.TraceManagement.Abstractions; +using CMS.Plugin.ProductManagement.Abstractions.Models; +using CMS.Plugin.MaterialManagement.Abstractions; namespace CMS.Plugin.PipeLineLems.Application.Implements; @@ -36,6 +42,11 @@ //3銆佸啓鍏� 鍒嗘嫞鍙橀噺 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>(); Dictionary<string, object?> keyValuePairs = new Dictionary<string, object?> { @@ -44,13 +55,69 @@ { "鍒嗘嫞浜�", myCurrentUser.UserAccount } }; _variableService.WriteValueAsync(keyValuePairs); + + //鏍规嵁宸ュ簭鍚嶈幏鍙栧伐搴忓璞� + var workSection = await _workSectionManager.GetByNameAsync("鍒嗘嫞宸ュ簭"); + var workStation = await _workStationManager.GetByNameAsync("鍒嗘嫞宸ヤ綅"); + //鍐欏叆杩芥函鎶ヨ〃 + 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() + }); + } + //鐗╂枡鍙傛暟鍒楄〃 + var firstWorkPlans = await workPlanAppService.GetListByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode); + + var firstWorkPlan = await workPlanAppService.GetSingleByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode); + var rawPipe_DataIdentifier = await materialProvider.FindByNameAsync("鍒嗘嫞鍘熸枡绠℃爣璇�"); + var rawPipe_MaterialMode = await materialProvider.FindByNameAsync("鍒嗘嫞鍘熸枡绠″瀷鍙�"); + List<TraceMaterialModel> _MaterialParams = new List<TraceMaterialModel>(); + _MaterialParams.Add(new TraceMaterialModel() + { + Key = "鍒嗘嫞鍘熸枡绠℃爣璇�", + Quantity = 1, + MaterialId = rawPipe_DataIdentifier.MaterialId, + MaterialDetailId = rawPipe_DataIdentifier.MaterialDetails.First().Id, + Value = firstWorkPlan.DataIdentifier, + + }); + _MaterialParams.Add(new TraceMaterialModel() + { + Key = "鍒嗘嫞鍘熸枡绠″瀷鍙�", + Quantity = 1, + MaterialId = rawPipe_MaterialMode.MaterialId, + MaterialDetailId = rawPipe_MaterialMode.MaterialDetails.First().Id, + Value = firstWorkPlan.MaterialMode + }); + traceModel.MaterialParams = _MaterialParams; + + await traceProvider.CreateTraceAsync(traceModel); + var response = new MesOrderResponse { - Code = "000000", + Code = "200", Data = "", - Fail = false, - Mesg = "澶勭悊鎴愬姛", - Success = true, + Message = "澶勭悊鎴愬姛", Time = DateTime.UtcNow }; return response; @@ -262,9 +329,7 @@ { Code = "000000", Data = orderModels, - Fail = false, - Mesg = "澶勭悊鎴愬姛", - Success = true, + Message = "澶勭悊鎴愬姛", Time = DateTime.UtcNow }; return response; @@ -387,10 +452,8 @@ // 杩斿洖缁撴灉 var response = new MesOrderResponse { - Code = "000000", - Fail = false, - Mesg = "鍙枡鎴愬姛", - Success = true, + Code = "200", + Message = "鍙枡鎴愬姛", Time = DateTime.UtcNow }; return response; diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs index b85d09c..af37ddd 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs @@ -19,16 +19,16 @@ /// </summary> public class WorkPlanAppService : CMSPluginAppService, IWorkPlanAppService { - private readonly IWorkPlanRepository workPlanRepository; + private readonly IWorkPlanRepository _workPlanRepository; private readonly SharedService _sharedService; private readonly IServiceProvider _serviceProvider; /// <summary> /// Initializes a new instance of the <see cref="WorkPlanAppService"/> class. /// </summary> /// <param name="WorkPlanRepository">The task job repository.</param> - public WorkPlanAppService(IWorkPlanRepository _WorkPlanRepository, SharedService sharedService, IServiceProvider serviceProvider) + public WorkPlanAppService(IWorkPlanRepository workPlanRepository, SharedService sharedService, IServiceProvider serviceProvider) { - workPlanRepository = _WorkPlanRepository; + _workPlanRepository = workPlanRepository; _sharedService = sharedService; _serviceProvider = serviceProvider; } @@ -40,7 +40,7 @@ /// <returns></returns> public virtual async Task<WorkPlanDto> GetAsync(Guid id) { - return ObjectMapper.Map<WorkPlan, WorkPlanDto>(await workPlanRepository.GetAsync(id)); + return ObjectMapper.Map<WorkPlan, WorkPlanDto>(await _workPlanRepository.GetAsync(id)); } /// <summary> @@ -51,7 +51,7 @@ /// <returns></returns> public virtual async Task<List<WorkPlan>> FindByDataIdentifierAsync(string dataIdentifier) { - return await workPlanRepository.FindByDataIdentifierAsync(dataIdentifier); + return await _workPlanRepository.FindByDataIdentifierAsync(dataIdentifier); } /// <summary> @@ -75,8 +75,8 @@ #endregion - var count = await workPlanRepository.GetCountAsync(whereConditions); - var list = await workPlanRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount); + var count = await _workPlanRepository.GetCountAsync(whereConditions); + var list = await _workPlanRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount); return new PagedResultDto<WorkPlanDto>(count, ObjectMapper.Map<List<WorkPlan>, List<WorkPlanDto>>(list)); } @@ -114,13 +114,13 @@ { await CheckCreateOrUpdateDtoAsync(input); - var exist = await workPlanRepository.NameExistAsync(input.TaskCode); + var exist = await _workPlanRepository.NameExistAsync(input.TaskCode); if (exist) { throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.TaskCode]); } - var maxSort = await workPlanRepository.GetMaxSortAsync(); + var maxSort = await _workPlanRepository.GetMaxSortAsync(); var sort = input.Sort ?? maxSort; var insertObj = ObjectMapper.Map<WorkPlanCreateDto, WorkPlan>(input); @@ -128,7 +128,7 @@ insertObj.CreatorName = "SuperAdmin"; input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None); - await workPlanRepository.InsertAsync(insertObj); + await _workPlanRepository.InsertAsync(insertObj); //if (input.Sort.HasValue && insertObj.Sort != maxSort) //{ @@ -149,8 +149,8 @@ { await CheckCreateOrUpdateDtoAsync(input); - var updateObj = await workPlanRepository.GetAsync(id); - var exist = await workPlanRepository.NameExistAsync(input.TaskCode, updateObj.Id); + var updateObj = await _workPlanRepository.GetAsync(id); + var exist = await _workPlanRepository.NameExistAsync(input.TaskCode, updateObj.Id); if (exist) { throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.TaskCode]); @@ -196,7 +196,7 @@ updateObj.Remark = input.Remark; - await workPlanRepository.UpdateAsync(updateObj); + await _workPlanRepository.UpdateAsync(updateObj); return ObjectMapper.Map<WorkPlan, WorkPlanDto>(updateObj); } @@ -248,7 +248,7 @@ /// <returns></returns> public virtual Task DeleteAsync(Guid id) { - return workPlanRepository.DeleteAsync(id); + return _workPlanRepository.DeleteAsync(id); } /// <summary> @@ -272,7 +272,7 @@ /// <returns></returns> public virtual async Task AdjustSortAsync(Guid id, int sort) { - var list = await workPlanRepository.GetListAsync(null, nameof(WorkPlan.Sort)); + var list = await _workPlanRepository.GetListAsync(null, nameof(WorkPlan.Sort)); if (list != null && list.Any()) { var initSort = 1; @@ -299,7 +299,7 @@ } } - await workPlanRepository.UpdateManyAsync(list); + await _workPlanRepository.UpdateManyAsync(list); } /// <summary> @@ -308,7 +308,7 @@ /// <param name="input"></param> /// <returns></returns> /// <exception cref="UserFriendlyException"></exception> - public async Task ImportAsync(WorkPlansImportModel input, string userId,string userAccount) + public async Task ImportAsync(WorkPlansImportModel input, string userId, string userAccount) { //杞崲鏁版嵁 var result = ObjectMapper.Map<List<WorkPlansImportModel.WorkPlanImportModel>, List<WorkPlanInput>>(input.WorkPlans); @@ -492,7 +492,7 @@ #endregion - var list = await workPlanRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true); + var list = await _workPlanRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true); var result = ObjectMapper.Map<List<WorkPlan>, List<WorkPlanDto>>(list); var sheets = new Dictionary<string, object> @@ -528,4 +528,28 @@ return Task.CompletedTask; } + + /// <summary> + /// 鏍规嵁鏉′欢鑾峰彇浣滀笟璁″垝琛ㄥ垪琛� + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<List<WorkPlan>> GetListByFilterAsync(Expression<Func<WorkPlan, bool>> whereConditions, CancellationToken cancellationToken = default) + { + return await _workPlanRepository.GetListByFilterAsync(whereConditions); + } + + /// <summary> + /// 鏍规嵁鏉′欢鑾峰彇鍗曚釜浣滀笟璁″垝琛� + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="isMultipleThrowException">鏄惁鏌ヨ鍑哄鏉″氨鎶ラ敊</param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + /// <exception cref="UserFriendlyException"></exception> + public async Task<WorkPlan> GetSingleByFilterAsync(Expression<Func<WorkPlan, bool>> whereConditions, bool is鈥婱ultipleThrowException = false, CancellationToken cancellationToken = default) + { + return await _workPlanRepository.GetSingleByFilterAsync(whereConditions, is鈥婱ultipleThrowException); + } } diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/WorkPlan/IWorkPlanRepository.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/WorkPlan/IWorkPlanRepository.cs index 1380e17..a97ad25 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/WorkPlan/IWorkPlanRepository.cs +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/WorkPlan/IWorkPlanRepository.cs @@ -58,5 +58,24 @@ /// <param name="whereConditions"></param> /// <param name="cancellationToken"></param> /// <returns></returns> - Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<WorkPlan, bool>>> whereConditions, CancellationToken cancellationToken = default); + Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<WorkPlan, bool>>> whereConditions, CancellationToken cancellationToken = default); + + + /// <summary> + /// 鏍规嵁鏉′欢鑾峰彇浣滀笟璁″垝琛ㄥ垪琛� + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + Task<List<WorkPlan>> GetListByFilterAsync(Expression<Func<WorkPlan, bool>> whereConditions, CancellationToken cancellationToken = default); + + /// <summary> + /// 鏍规嵁鏉′欢鑾峰彇鍗曚釜浣滀笟璁″垝琛� + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="isMultipleThrowException">鏄惁鏌ヨ鍑哄鏉″氨鎶ラ敊</param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + /// <exception cref="UserFriendlyException"></exception> + Task<WorkPlan> GetSingleByFilterAsync(Expression<Func<WorkPlan, bool>> whereConditions, bool is鈥婱ultipleThrowException = false, CancellationToken cancellationToken = default); } diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Repositories/EfCoreWorkPlanRepository.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Repositories/EfCoreWorkPlanRepository.cs index caade5e..bc81213 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Repositories/EfCoreWorkPlanRepository.cs +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Repositories/EfCoreWorkPlanRepository.cs @@ -4,6 +4,7 @@ using Microsoft.EntityFrameworkCore; using System.Linq.Dynamic.Core; using System.Linq.Expressions; +using Volo.Abp; using Volo.Abp.Domain.Repositories.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore; @@ -127,4 +128,55 @@ return (await GetQueryableAsync()) .Where(x => !x.IsDeleted).IncludeDetails(); } + + /// <summary> + /// 鏍规嵁鏉′欢鑾峰彇浣滀笟璁″垝琛ㄥ垪琛� + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<List<WorkPlan>> GetListByFilterAsync(Expression<Func<WorkPlan, bool>> whereConditions, CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()) + .IncludeDetails() + .WhereIf(whereConditions != null, whereConditions) + .Where(x => !x.IsDeleted) + .OrderByDescending(x => x.CreationTime) + .ToListAsync(GetCancellationToken(cancellationToken)); + } + + /// <summary> + /// 鏍规嵁鏉′欢鑾峰彇鍗曚釜浣滀笟璁″垝琛� + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="isMultipleThrowException">鏄惁鏌ヨ鍑哄鏉″氨鎶ラ敊</param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + /// <exception cref="UserFriendlyException"></exception> + public async Task<WorkPlan> GetSingleByFilterAsync(Expression<Func<WorkPlan, bool>> whereConditions, bool is鈥婱ultipleThrowException = false, CancellationToken cancellationToken = default) + { + if (is鈥婱ultipleThrowException) + { + var entitys = await (await GetDbSetAsync()) + .IncludeDetails() + .WhereIf(whereConditions != null, whereConditions) + .Where(x => !x.IsDeleted) + .OrderByDescending(x => x.CreationTime) + .ToListAsync(GetCancellationToken(cancellationToken)); + if (entitys?.Count > 1) + { + throw new UserFriendlyException("鏌ヨ鍒板鏉¤褰�"); + } + return entitys?.FirstOrDefault(); + } + else + { + return await (await GetDbSetAsync()) + .IncludeDetails() + .WhereIf(whereConditions != null, whereConditions) + .Where(x => !x.IsDeleted) + .OrderByDescending(x => x.CreationTime) + .FirstOrDefaultAsync(GetCancellationToken(cancellationToken)); + } + } } -- Gitblit v1.9.3