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