CommonDLL/CmsQueryExtensions.dllBinary files differ
PipeLineLems/pipelinelems_web/src/widgets/CallMaterialOrder/Views/Pages/CallMaterialOrder/CallMaterialOrder.tsx
@@ -297,7 +297,7 @@ 嫿 </IconButton> <el-divider direction="vertical" /> <el-upload {/* <el-upload v-permission="callMaterialOrder-import" name="file" accept=".xlsx,.xls,.csv" @@ -309,7 +309,7 @@ action="/api/v1/PipeLineLems/callMaterialOrder/import" > <IconButton icon="in">å¯¼å ¥</IconButton> </el-upload> </el-upload> */} <IconButton v-permission="callMaterialOrder-output" PipeLineLems/pipelinelems_web/src/widgets/CallMaterialOrderRecord/Views/Pages/CallMaterialOrderRecord/CallMaterialOrderRecord.tsx
@@ -271,7 +271,7 @@ <div class={styles.headerContent}> <div class={styles.header}> <IconButton {/* <IconButton v-permission="callMaterialOrderRecord-add" icon="add-p" onClick={onAddCallMaterialOrderRecord} @@ -281,8 +281,8 @@ </IconButton> <el-divider direction="vertical" /> <el-divider direction="vertical" /> <el-upload <el-divider direction="vertical" /> */} {/* <el-upload v-permission="callMaterialOrderRecord-import" name="file" accept=".xlsx,.xls,.csv" @@ -294,7 +294,7 @@ action="/api/v1/PipeLineLems/callMaterialOrderRecord/import" > <IconButton icon="in">å¯¼å ¥</IconButton> </el-upload> </el-upload> */} <IconButton v-permission="callMaterialOrderRecord-output" PipeLineLems/pipelinelems_web/src/widgets/WorkPlan/Views/Pages/WorkPlan/Config.ts
@@ -10,6 +10,21 @@ width:160, }, { field: 'processName', title: 'å·¥åºåç§°', width:160, }, { field: 'pipeSpecCode', title: '管段ç¼ç ', width:160, }, { field: 'pipeSectionName', title: '管段åç§°', width:160, }, { field: 'workPlanStatusDesc', title: '计åç¶æ', width:160, @@ -109,11 +124,7 @@ title: '工件åç§°', width:160, }, { field: 'processName', title: 'å·¥åºåç§°', width:160, }, { field: 'pipeFittingCode', title: '管件ç¼ç ', @@ -124,16 +135,7 @@ title: '顺åºå·', width:160, }, { field: 'pipeSpecCode', title: '管段ç¼ç ', width:160, }, { field: 'pipeSectionName', title: '管段åç§°', width:160, }, { field: 'outerDiameter', title: 'å¤å¾(mm)', PipeLineLems/pipelinelems_web/src/widgets/WorkPlan/Views/Pages/WorkPlan/WorkPlan.tsx
@@ -304,7 +304,7 @@ <div class={styles.headerContent}> <div class={styles.header}> <IconButton {/* <IconButton v-permission="workPlan-add" icon="add-p" onClick={onAddWorkPlan} @@ -313,7 +313,7 @@ æ·»å </IconButton> <el-divider direction="vertical" /> <el-divider direction="vertical" /> */} <el-upload v-permission="workPlan-import" name="file" PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/CallMaterialOrder/CallMaterialOrderCreateOrUpdateDtoBase.cs
@@ -29,10 +29,15 @@ /// </summary> public int Quantity { get; set; } /// <summary> /// WMSè¿åç»æ /// </summary> public string? WmsRetResult { get; set; } /// <summary> /// å建人 /// </summary> public string CreatorName { get; set; } /// <summary> /// WMSè¿åç»æ /// </summary> public string? WmsRetResult { get; set; } /// <summary> /// WMSä»»å¡å· PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/PickInput.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan { /// <summary> /// 忣è¾å ¥åæ°æ¨¡å /// </summary> [Serializable] public class PickInput { /// <summary> /// 管段ç¼ç /// </summary> public string PipeSpecCode { get; set; } } } PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanCreateOrUpdateDtoBase.cs
@@ -183,11 +183,16 @@ /// å建人ID /// </summary> public string? CreatorId { get; set; } /// <summary> /// å建人 /// </summary> public string CreatorName { get; set; } /// <summary> /// ä¿®æ¹äººID /// </summary> public string? LastModifierId { get; set; } /// <summary> /// ä¿®æ¹äººID /// </summary> public string? LastModifierId { get; set; } /// <summary> /// å 餿¶é´ PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Services/IMesAppService.cs
@@ -9,5 +9,6 @@ /// </summary> public interface IMesAppService { Task<MesOrderResponse> CreateAsync(List<WorkPlanInput> input); Task<MesOrderResponse> CreateAsync(List<WorkPlanInput> input, string userId, string userAccount); } PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Services/IWorkPlanAppService.cs
@@ -1,6 +1,7 @@ using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan; using CMS.Plugin.PipeLineLems.Domain.WorkPlan; using Volo.Abp.Application.Services; using Volo.Abp.Users; namespace CMS.Plugin.PipeLineLems.Application.Contracts.Services; @@ -45,7 +46,7 @@ /// </summary> /// <param name="input"></param> /// <returns></returns> Task ImportAsync(WorkPlansImportModel input); Task ImportAsync(WorkPlansImportModel input, string userId,string userAccount); /// <summary> /// 导åºä½ä¸è®¡å表 PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/MesAppService.cs
@@ -8,10 +8,11 @@ using CMS.Plugin.ProductManagement.Abstractions; using Microsoft.Extensions.DependencyInjection; using Volo.Abp; using Volo.Abp.Users; namespace CMS.Plugin.PipeLineLems.Application.Implements; public class MesAppService : CMSPluginAppService public class MesAppService : CMSPluginAppService,IMesAppService { private readonly IServiceProvider _serviceProvider; private readonly WorkPlanAppService _workPlanAppService; @@ -30,9 +31,9 @@ _sharedService = sharedService; } public async Task<MesOrderResponse> CreateAsync(List<WorkPlanInput> input) public async Task<MesOrderResponse> CreateAsync(List<WorkPlanInput> input, string userId, string userAccount) { var response = await _sharedService.CommonCreatebyApsAsync(input, _serviceProvider, _workPlanAppService); var response = await _sharedService.CommonCreatebyApsAsync(input, _serviceProvider, _workPlanAppService, userId, userAccount); return response; } PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs
@@ -15,6 +15,10 @@ using System.Text; using CMS.Plugin.PipeLineLems.Domain.WorkPlan; using CMS.Plugin.PipeLineLems.Domain.CallMaterialOrderRecord; using Volo.Abp.Users; using CmsQueryExtensions.Entitys; using CMS.Unit.RuntimeValue.Abstractions; using CMS.Extensions.Variable; namespace CMS.Plugin.PipeLineLems.Application.Implements; @@ -23,6 +27,34 @@ /// </summary> public class SharedService : CMSPluginAppService { public async Task<MesOrderResponse> CommonPick(IServiceProvider _serviceProvider, PickInput input, MyCurrentUser myCurrentUser) { //1ãè®°å½åæ£è®°å½è¡¨ //2ãæ´æ°ä½ä¸è®¡å表çç¶æ =已忣 //3ãåå ¥ 忣åé VariableService _variableService = _serviceProvider.GetRequiredService<VariableService>(); Dictionary<string, object?> keyValuePairs = new Dictionary<string, object?> { { "忣æçå·","æç1"}, { "忣æ¹å", "çç®¡è£ é "}, { "åæ£äºº", myCurrentUser.UserAccount } }; _variableService.WriteValueAsync(keyValuePairs); var response = new MesOrderResponse { Code = "000000", Data = "", Fail = false, Mesg = "å¤çæå", Success = true, Time = DateTime.UtcNow }; return response; } /// <summary> /// å建ä½ä¸è®¡å /// </summary> @@ -33,9 +65,11 @@ /// <exception cref="UserFriendlyException"></exception> public async Task<MesOrderResponse> CommonCreatebyApsAsync(List<WorkPlanInput> input, IServiceProvider _serviceProvider, WorkPlanAppService workPlanAppService ) WorkPlanAppService workPlanAppService, string userId, string userAccount ) { if (input == null) { throw new UserFriendlyException("è¾å ¥åæ°ä¸è½ä¸ºç©º"); @@ -62,6 +96,7 @@ var orderManager = _serviceProvider.GetRequiredService<IOrderManager>(); var productProvider = _serviceProvider.GetRequiredService<IProductProvider>(); var formulaProvider = _serviceProvider.GetRequiredService<IFormulaProvider>(); List<OrderModel> orderModels = new List<OrderModel>(); #region äºå¡ @@ -177,6 +212,7 @@ CallMaterialStatus = Domain.Shared.Enums.CallMaterialStatusEnum.æªæ§è¡, DataIdentifier = gTask.Key, MaterialMode = gTask.ToList().First().MaterialMode, CreatorName = userAccount, Quantity = 1 }; @@ -185,7 +221,7 @@ //throw new UserFriendlyException($"主å¨è§¦å失败"); //ä¿åå° scms_workplans è¡¨ä¸ foreach (var item in input) { @@ -194,6 +230,8 @@ insertObj.CallMaterialStatus = Domain.Shared.Enums.CallMaterialStatusEnum.æªæ§è¡; insertObj.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.æªç产; insertObj.Sort = 1; insertObj.CreatorName = userAccount; insertObj.Remark = "ç³»ç»å¯¼å ¥"; await workPlanAppService.CreateAsync(insertObj); } PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs
@@ -10,6 +10,7 @@ using Volo.Abp.Data; using Volo.Abp.ObjectExtending; using Volo.Abp.ObjectMapping; using Volo.Abp.Users; namespace CMS.Plugin.PipeLineLems.Application.Implements; @@ -307,13 +308,13 @@ /// <param name="input"></param> /// <returns></returns> /// <exception cref="UserFriendlyException"></exception> public async Task ImportAsync(WorkPlansImportModel input) public async Task ImportAsync(WorkPlansImportModel input, string userId,string userAccount) { //è½¬æ¢æ°æ® var result = ObjectMapper.Map<List<WorkPlansImportModel.WorkPlanImportModel>, List<WorkPlanInput>>(input.WorkPlans); //await CreatebyApsAsync(result); await _sharedService.CommonCreatebyApsAsync(result, _serviceProvider, this); await _sharedService.CommonCreatebyApsAsync(result, _serviceProvider, this, userId, userAccount); // Check.NotNull(input, nameof(input)); // var workPlanCreateDtos = new List<(int RowIndex, WorkPlanCreateDto Item)>(); PipeLineLems/server/src/CMS.Plugin.PipeLineLems/CMS.Plugin.PipeLineLems.csproj
@@ -56,6 +56,12 @@ </ItemGroup> <ItemGroup> <Reference Include="CmsQueryExtensions"> <HintPath>..\..\..\..\CommonDLL\CmsQueryExtensions.dll</HintPath> </Reference> </ItemGroup> <ItemGroup> <Resource Include="Flows\50001_1.pfd"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Resource> PipeLineLems/server/src/CMS.Plugin.PipeLineLems/CMSPluginEntry.cs
@@ -49,7 +49,7 @@ context.Services.AddScoped<IProjectRuntimeMigrator, CMSPluginRuntimeMigrator>(); context.Services.AddSingleton<IProjectService, PipeLineLemsProjectService>(); context.Services.AddScoped<IMesAppService, MesAppService>(); context.Services.AddScoped<IWorkPlanAppService, WorkPlanAppService>(); context.Services.AddScoped<IEFDataProvider>(p => PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs
@@ -1,75 +1,79 @@ using Ao.Lang; using CMS.Extensions.Abp.AspNetCore.Mvc.Filters; using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan; using CMS.Plugin.PipeLineLems.Application.Contracts.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using MiniExcelLibs; using System.Reflection; using Volo.Abp; using Volo.Abp.Application.Dtos; namespace CMS.Plugin.PipeLineLems.Controller { using Ao.Lang; using CMS.Extensions.Abp.AspNetCore.Mvc.Filters; using CMS.Framework.AspNetCore.Users; using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan; using CMS.Plugin.PipeLineLems.Application.Contracts.Services; using CmsQueryExtensions.Entitys; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using MiniExcelLibs; using System.Reflection; using Volo.Abp; using Volo.Abp.Application.Dtos; namespace CMS.Plugin.PipeLineLems.Controller { /// <summary> /// ä½ä¸è®¡å表æå¡ /// </summary> [ApiController] [TypeFilter(typeof(CMSLanguageFilter))] [TypeFilter(typeof(CMSUowActionFilter))] [TypeFilter(typeof(CMSAuditActionFilter))] [TypeFilter(typeof(CMSExceptionFilter))] [Route("api/v{version:apiVersion}/PipeLineLems/[controller]")] public class WorkPlanController : ControllerBase { private readonly IWorkPlanAppService _workPlanAppService; [ApiController] [TypeFilter(typeof(CMSLanguageFilter))] [TypeFilter(typeof(CMSUowActionFilter))] [TypeFilter(typeof(CMSAuditActionFilter))] [TypeFilter(typeof(CMSExceptionFilter))] [Route("api/v{version:apiVersion}/PipeLineLems/[controller]")] public class WorkPlanController : ControllerBase { private readonly IWorkPlanAppService _workPlanAppService; private readonly ICurrentUser _currentUser; /// <summary> /// Initializes a new instance of the <see cref="WorkPlanController"/> class. /// </summary> /// <param name="workPlanAppService">The workPlan application service.</param> public WorkPlanController(IWorkPlanAppService workPlanAppService) { _workPlanAppService = workPlanAppService; } public WorkPlanController(IWorkPlanAppService workPlanAppService, ICurrentUser currentUser) { _workPlanAppService = workPlanAppService; _currentUser = currentUser; } /// <summary> /// è·åä½ä¸è®¡å表 /// </summary> /// <param name="id">æ è¯ç¬¦.</param> /// <returns></returns> [HttpGet] [Route("{id}")] public virtual Task<WorkPlanDto> GetAsync(Guid id) { return _workPlanAppService.GetAsync(id); } [HttpGet] [Route("{id}")] public virtual Task<WorkPlanDto> GetAsync(Guid id) { return _workPlanAppService.GetAsync(id); } /// <summary> /// å页è·åä½ä¸è®¡å表çå表. /// </summary> /// <param name="input">è¾å ¥.</param> /// <returns></returns> [HttpGet] [Route("Page")] public virtual Task<PagedResultDto<WorkPlanDto>> GetListAsync([FromQuery] GetWorkPlanInput input) { return _workPlanAppService.GetListAsync(input); } [HttpGet] [Route("Page")] public virtual Task<PagedResultDto<WorkPlanDto>> GetListAsync([FromQuery] GetWorkPlanInput input) { return _workPlanAppService.GetListAsync(input); } /// <summary> /// å建ä½ä¸è®¡å表 /// </summary> /// <param name="input">è¾å ¥.</param> /// <returns></returns> //[Authorize] [HttpPost] public virtual Task<WorkPlanDto> CreateAsync(WorkPlanCreateDto input) { return _workPlanAppService.CreateAsync(input); } [HttpPost] public virtual Task<WorkPlanDto> CreateAsync(WorkPlanCreateDto input) { return _workPlanAppService.CreateAsync(input); } /// <summary> /// æ´æ°ä½ä¸è®¡å表 /// </summary> @@ -77,112 +81,120 @@ /// <param name="input">è¾å ¥.</param> /// <returns></returns> //[Authorize] [HttpPut] [Route("{id}")] public virtual Task<WorkPlanDto> UpdateAsync(Guid id, WorkPlanUpdateDto input) { return _workPlanAppService.UpdateAsync(id, input); } [HttpPut] [Route("{id}")] public virtual Task<WorkPlanDto> UpdateAsync(Guid id, WorkPlanUpdateDto input) { return _workPlanAppService.UpdateAsync(id, input); } /// <summary> /// å éä½ä¸è®¡å表 /// </summary> /// <param name="ids">Idéå.</param> /// <returns></returns> //[Authorize] [HttpPost] [Route("Clone")] public virtual Task<List<WorkPlanDto>> CloneAsync([FromBody] IEnumerable<Guid> ids) { return _workPlanAppService.CloneAsync(ids); } [HttpPost] [Route("Clone")] public virtual Task<List<WorkPlanDto>> CloneAsync([FromBody] IEnumerable<Guid> ids) { return _workPlanAppService.CloneAsync(ids); } /// <summary> /// å é¤ä½ä¸è®¡å表 /// </summary> /// <param name="id">æ è¯ç¬¦.</param> /// <returns></returns> //[Authorize] [HttpDelete] [Route("{id}")] public virtual Task DeleteAsync(Guid id) { return _workPlanAppService.DeleteAsync(id); } [HttpDelete] [Route("{id}")] public virtual Task DeleteAsync(Guid id) { return _workPlanAppService.DeleteAsync(id); } /// <summary> /// æ¹éå é¤ä½ä¸è®¡å表 /// </summary> /// <param name="ids">The ids.</param> /// <returns></returns> //[Authorize] [HttpDelete] public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids) { return _workPlanAppService.DeleteManyAsync(ids); } [HttpDelete] public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids) { return _workPlanAppService.DeleteManyAsync(ids); } /// <summary> /// è°æ´æåºä½ä¸è®¡å表 /// </summary> /// <param name="id">æ è¯ç¬¦.</param> /// <returns></returns> [HttpPut] [Route("{id}/AdjustSort/{sort}")] public virtual Task AdjustSortAsync(Guid id, int sort) { return _workPlanAppService.AdjustSortAsync(id, sort); } [HttpPut] [Route("{id}/AdjustSort/{sort}")] public virtual Task AdjustSortAsync(Guid id, int sort) { return _workPlanAppService.AdjustSortAsync(id, sort); } /// <summary> /// å¯¼å ¥ä½ä¸è®¡å表 /// </summary> /// <returns></returns> [Authorize] [HttpPost] [Route("Import")] public virtual async Task<IActionResult> ImportAsync(IFormFile file) { using var stream = new MemoryStream(); await file.CopyToAsync(stream); stream.Seek(0L, SeekOrigin.Begin); var sheetNames = stream.GetSheetNames(); var workPlanRows = sheetNames.Contains("é ç½®") ? MiniExcel.Query<WorkPlansImportModel.WorkPlanImportModel>(stream, sheetName: "é ç½®").ToList() : new(); if (!workPlanRows.Any()) { throw new UserFriendlyException("è¯·æ£æ¥å¯¼å ¥çè¡¨æ ¼"); } await _workPlanAppService.ImportAsync(new WorkPlansImportModel { WorkPlans = workPlanRows, }); return Ok(); } [Authorize] [HttpPost] [Route("Import")] public virtual async Task<IActionResult> ImportAsync(IFormFile file) { using var stream = new MemoryStream(); await file.CopyToAsync(stream); stream.Seek(0L, SeekOrigin.Begin); var userAccount = _currentUser.UserAccount; var userId = _currentUser.UserId; MyCurrentUser myCurrentUser = new MyCurrentUser() { UserAccount = _currentUser.UserAccount, UserId = _currentUser.UserId }; var sheetNames = stream.GetSheetNames(); var workPlanRows = sheetNames.Contains("é ç½®") ? MiniExcel.Query<WorkPlansImportModel.WorkPlanImportModel>(stream, sheetName: "é ç½®").ToList() : new(); if (!workPlanRows.Any()) { throw new UserFriendlyException("è¯·æ£æ¥å¯¼å ¥çè¡¨æ ¼"); } await _workPlanAppService.ImportAsync(new WorkPlansImportModel { WorkPlans = workPlanRows, }, userId, userAccount); return Ok(); } /// <summary> /// 导åºä½ä¸è®¡å表 /// </summary> /// <returns></returns> [HttpGet] [Route("Export")] public virtual async Task<IActionResult> ExportAsync([FromQuery] GetWorkPlanInput input) { input.MaxResultCount = int.MaxValue; var exportData = await _workPlanAppService.ExportAsync(input); var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources/Templates/WorkPlanå¯¼åºæ¨¡æ¿.xlsx"); if (!System.IO.File.Exists(templatePath)) { templatePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, $"Resources/Templates/WorkPlanå¯¼åºæ¨¡æ¿.xlsx"); } var memoryStream = new MemoryStream(); await memoryStream.SaveAsByTemplateAsync(templatePath, exportData.Sheets); memoryStream.Seek(0L, SeekOrigin.Begin); return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = $"{exportData.FileName}_{DateTime.Now:yyyyMMddhhmmss}.xlsx" }; } } } [HttpGet] [Route("Export")] public virtual async Task<IActionResult> ExportAsync([FromQuery] GetWorkPlanInput input) { input.MaxResultCount = int.MaxValue; var exportData = await _workPlanAppService.ExportAsync(input); var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources/Templates/WorkPlanå¯¼åºæ¨¡æ¿.xlsx"); if (!System.IO.File.Exists(templatePath)) { templatePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, $"Resources/Templates/WorkPlanå¯¼åºæ¨¡æ¿.xlsx"); } var memoryStream = new MemoryStream(); await memoryStream.SaveAsByTemplateAsync(templatePath, exportData.Sheets); memoryStream.Seek(0L, SeekOrigin.Begin); return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = $"{exportData.FileName}_{DateTime.Now:yyyyMMddhhmmss}.xlsx" }; } } } PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanPublicController.cs
@@ -1,6 +1,8 @@ using CMS.Extensions.Abp.AspNetCore.Mvc.Filters; using CMS.Framework.AspNetCore.Users; using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan; using CMS.Plugin.PipeLineLems.Application.Contracts.Services; using CmsQueryExtensions.Entitys; using Microsoft.AspNetCore.Mvc; using System.Reflection; @@ -19,13 +21,21 @@ { private readonly IMesAppService _mesAppService; private readonly ICurrentUser _currentUser; private readonly Application.Implements.SharedService sharedService; private IServiceProvider _serviceProvider; /// <summary> /// Initializes a new instance of the <see cref="TestEntityNameController"/> class. /// </summary> /// <param name="testentitynameAppService">The testentityname application service.</param> public WorkPlanPublicController(IMesAppService mesAppService) public WorkPlanPublicController(IMesAppService mesAppService, ICurrentUser currentUser, Application.Implements.SharedService _sharedService, IServiceProvider serviceProvider) { _mesAppService = mesAppService; _currentUser = currentUser; sharedService = _sharedService; _serviceProvider = serviceProvider; } /// <summary> @@ -36,9 +46,24 @@ [HttpPost] public virtual async Task<MesOrderResponse> GetWorkPlanAsync([FromBody] List<WorkPlanInput> input) { return await _mesAppService.CreateAsync(input); return await _mesAppService.CreateAsync(input,"",""); } /// <summary> /// 忣 /// </summary> /// <param name="input">æ è¯ç¬¦.</param> /// <returns></returns> [HttpPost] [Route("Pick")] public virtual async Task<MesOrderResponse> Pick([FromBody] PickInput input) { MyCurrentUser myCurrentUser = new MyCurrentUser() { UserAccount = _currentUser.UserAccount, UserId = _currentUser.UserId }; return await sharedService.CommonPick(_serviceProvider, input, myCurrentUser); } } } PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs
@@ -20,6 +20,7 @@ using CMS.Plugin.PipeLineLems.Domain.WorkPlan; using CMS.Plugin.PipeLineLems.Domain.CallMaterialOrder; using System.Collections.Generic; using CMS.Framework.AspNetCore.Users; namespace CMS.Plugin.PipeLineLems.ProjectService { @@ -31,6 +32,7 @@ private IServiceProvider _serviceProvider; private readonly ILogger<PipeLineLemsProjectService> _logger; private readonly IVariableDataCache _variableDataCache; /// <summary> /// åéæå¡ @@ -84,6 +86,8 @@ _monitorVariableNames = new Dictionary<string, string> { { "æç è¿ç«ä¿¡å·", "æç è¿ç«ä¿¡å·(æè¿°)" }, { "请æ±çææç 产åç ä¿¡å·", "请æ±çææç 产åç ä¿¡å·(æè¿°)" }, { "请æ±çæåå²äº§åç ä¿¡å·", "请æ±çæåå²äº§åç ä¿¡å·(æè¿°)" }, { "åå²è¿ç«ä¿¡å·", "åå²è¿ç«ä¿¡å·(æè¿°)" }, }; @@ -142,6 +146,30 @@ _logger.LogInformation($"{changed.Name} åéå¼åçååï¼æ§å¼{oldValue}=æ°å¼{newValue}ï¼TraceId={traceId}"); if (changed.Name == "请æ±çææç 产åç ä¿¡å·" && changed.New?.Value.SafeString().ToBool() == true) { // TODO: å¤çåéå¼åå // Tipsï¼https://cms-docs.shengyc.com/cms/api/%E5%90%8E%E7%AB%AF#3-%E5%8F%98%E9%87%8F%E6%A8%A1%E5%9D%97 /* 说æï¼éè¿è®¢é IVariableDataCache.TagChanged äºä»¶ï¼æ¨å¯ä»¥å®æ¶çæ§åéçååãæ¤äºä»¶ä¼ä¼ éææåéè³äºä»¶å¤ç彿°ï¼å æ¤ï¼ä¸å¡å±éå¨å½æ°ä¸çéå ³æ³¨çåéã æ³¨æäºé¡¹ï¼ ï¼1ï¼æ§è½å½±åï¼ åå¸äºä»¶æ¶ï¼äºä»¶çåéè å°é»å¡æµç¨ãå æ¤ï¼å¼ºç建议é¿å å¨äºä»¶å¤ç彿°ä¸æ§è¡ I/ O æä½ãHTTP æ¥å£è®¿é®æå ¶ä»èæ¶æä½ï¼ä»¥é²æ¢å¯¹ç³»ç»æ§è½äº§ç严éå½±åï¼å¯¼è´æ´ä¸ªç³»ç»ååºå»¶è¿ã ï¼2ï¼é«é¢ç触åï¼ ç±äºäºä»¶è®¢é äºå ¨éåéï¼è§¦åé¢çå¯è½é常é«ã ï¼3ï¼å¼æ¥å¤çï¼ é´äºäºä»¶è§¦åé¢çå¾é«ï¼å»ºè®®ä¸å¡å±å¨çéå ³æ³¨åéåï¼ä½¿ç¨ Task å¯å¨æ°çº¿ç¨å¤çä¸å¡é»è¾ï¼ä»¥é¿å é»å¡æ ¸å¿çåéçå¬åè½ï¼å®ç°ä¸å¡å±ä¸å¹³å°åºåº§çè§£è¦ã ï¼4ï¼å¹¶å管çï¼ å¦æä¸å¡å±å¹¶åé大ï¼å¿ é¡»ä¼å代ç 设计å宿½ï¼ä»¥åå°å¨é«å¹¶åæ åµä¸çç³»ç»èµæºæ¶èï¼é²æ¢ç³»ç»æ§è½é®é¢ã ï¼5ï¼ä»£ç å®å ¨ï¼ å®è£ å¹¶ä½¿ç¨ CMS.CodeAnalysis åæå¨æ¥åæ IVariableDataCache.TagChanged çä½¿ç¨æ åµãè¯¥å·¥å ·è½å¨ä½¿ç¨ä¸å½æ¶æä¾ç¼è¯é误ï¼å¸®å©æ¨æé«ä»£ç è´¨éã*/ _ = Task.Run(async () => { await HanlderForPringBarCodeByCreateProductAsync(); // ä¾1ï¼åæ¥å¤ç //await ProcessAsync(); // ä¾2ï¼è°ç¨å¤é¨API //await ExecuteExternalApiAsync(); }); } if (changed.Name == "æç è¿ç«ä¿¡å·" && changed.New?.Value.SafeString().ToBool() == true) { @@ -166,6 +194,8 @@ }); } if (changed.Name == "åå²è¿ç«ä¿¡å·" && changed.New?.Value.SafeString().ToBool() == true) { @@ -182,6 +212,31 @@ _ = Task.Run(async () => { await HanlderForCutAsync(); // ä¾1ï¼åæ¥å¤ç //await ProcessAsync(); // ä¾2ï¼è°ç¨å¤é¨API //await ExecuteExternalApiAsync(); }); } if (changed.Name == "请æ±çæåå²äº§åç ä¿¡å·" && changed.New?.Value.SafeString().ToBool() == true) { // TODO: å¤çåéå¼åå // Tipsï¼https://cms-docs.shengyc.com/cms/api/%E5%90%8E%E7%AB%AF#3-%E5%8F%98%E9%87%8F%E6%A8%A1%E5%9D%97 /* 说æï¼éè¿è®¢é IVariableDataCache.TagChanged äºä»¶ï¼æ¨å¯ä»¥å®æ¶çæ§åéçååãæ¤äºä»¶ä¼ä¼ éææåéè³äºä»¶å¤ç彿°ï¼å æ¤ï¼ä¸å¡å±éå¨å½æ°ä¸çéå ³æ³¨çåéã æ³¨æäºé¡¹ï¼ ï¼1ï¼æ§è½å½±åï¼ åå¸äºä»¶æ¶ï¼äºä»¶çåéè å°é»å¡æµç¨ãå æ¤ï¼å¼ºç建议é¿å å¨äºä»¶å¤ç彿°ä¸æ§è¡ I/ O æä½ãHTTP æ¥å£è®¿é®æå ¶ä»èæ¶æä½ï¼ä»¥é²æ¢å¯¹ç³»ç»æ§è½äº§ç严éå½±åï¼å¯¼è´æ´ä¸ªç³»ç»ååºå»¶è¿ã ï¼2ï¼é«é¢ç触åï¼ ç±äºäºä»¶è®¢é äºå ¨éåéï¼è§¦åé¢çå¯è½é常é«ã ï¼3ï¼å¼æ¥å¤çï¼ é´äºäºä»¶è§¦åé¢çå¾é«ï¼å»ºè®®ä¸å¡å±å¨çéå ³æ³¨åéåï¼ä½¿ç¨ Task å¯å¨æ°çº¿ç¨å¤çä¸å¡é»è¾ï¼ä»¥é¿å é»å¡æ ¸å¿çåéçå¬åè½ï¼å®ç°ä¸å¡å±ä¸å¹³å°åºåº§çè§£è¦ã ï¼4ï¼å¹¶å管çï¼ å¦æä¸å¡å±å¹¶åé大ï¼å¿ é¡»ä¼å代ç 设计å宿½ï¼ä»¥åå°å¨é«å¹¶åæ åµä¸çç³»ç»èµæºæ¶èï¼é²æ¢ç³»ç»æ§è½é®é¢ã ï¼5ï¼ä»£ç å®å ¨ï¼ å®è£ å¹¶ä½¿ç¨ CMS.CodeAnalysis åæå¨æ¥åæ IVariableDataCache.TagChanged çä½¿ç¨æ åµãè¯¥å·¥å ·è½å¨ä½¿ç¨ä¸å½æ¶æä¾ç¼è¯é误ï¼å¸®å©æ¨æé«ä»£ç è´¨éã*/ _ = Task.Run(async () => { await HanlderForCutByCreateProductAsync(); // ä¾1ï¼åæ¥å¤ç //await ProcessAsync(); @@ -229,7 +284,7 @@ } /// <summary> /// æç /// æç è¿ç«ä¿¡å· /// </summary> /// <returns></returns> private async Task HanlderForPringBarCodeAsync() @@ -268,40 +323,46 @@ 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); ////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); ////æ´æ°ä¸ºçäº§ä¸ //foreach (var item in workPlanList) //{ // item.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.ç产ä¸; //} //await workPlanRepository.UpdateManyAsync(workPlanList); //å¾å°ç å¼ var code1 = ""; var code2 = ""; var code3 = ""; var pipeSpecCode1 = ""; var pipeSpecCode2 = ""; var pipeSpecCode3 = ""; 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].MarkingContent; pipeSpecCode1 = new_workPlanList[i].PipeSpecCode; } if (i == 1) { code2 = new_workPlanList[i].MarkingContent; pipeSpecCode2 = new_workPlanList[i].PipeSpecCode; } if (i == 2) { code3 = new_workPlanList[i].MarkingContent; pipeSpecCode3 = new_workPlanList[i].PipeSpecCode; } } Dictionary<string, object?> keyValuePairs = new Dictionary<string, object?> @@ -309,6 +370,9 @@ { "æç 工件1",code1}, { "æç 工件2", code2}, { "æç 工件3", code3 }, { "æç 管段ç¼ç 1",pipeSpecCode1}, { "æç 管段ç¼ç 2", pipeSpecCode2}, { "æç 管段ç¼ç 3", pipeSpecCode3 }, { "æç 管段ç¼ç ", new_workPlanList.First().PipeSpecCode }, { "æç 管段åç§°", new_workPlanList.First().PipeSectionName }, { "æç åæç®¡åå·", new_workPlanList.First().MaterialMode }, @@ -325,6 +389,75 @@ var ret2 = _variableService.WriteValueAsync(keyValuePairs); uow.CompleteAsync(); } catch (Exception) { uow.RollbackAsync(); throw; } } } /// <summary> /// 请æ±çææç 产åç ä¿¡å· /// </summary> /// <returns></returns> private async Task HanlderForPringBarCodeByCreateProductAsync() { 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ä»»å¡å·"); if (string.IsNullOrEmpty(plcTaskNo?.Content?.Value.SafeString().ToString())) { } else { var myTaskNo = plcTaskNo.Content.Value.SafeString().ToString(); 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 = callMaterialOrder.DataIdentifier; Dictionary<string, object?> keyValuePairs_productID = new Dictionary<string, object?> { { "æç _ProductID", productID}, }; var ret = _variableService.WriteValueAsync(keyValuePairs_productID); //æ´æ°ä¸ºçäº§ä¸ var new_workPlanList = workPlanList.Where(x => x.ProcessRouteNumber == "åå²").ToList(); foreach (var item in new_workPlanList) { item.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.ç产ä¸; } await workPlanRepository.UpdateManyAsync(new_workPlanList); uow.CompleteAsync(); @@ -447,40 +580,46 @@ 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); ////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); ////æ´æ°ä¸ºçäº§ä¸ //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 pipeSpecCode1 = ""; var pipeSpecCode2 = ""; var pipeSpecCode3 = ""; 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; pipeSpecCode1 = new_workPlanList[i].PipeSpecCode; } if (i == 1) { code2 = new_workPlanList[i].CuttingPosition; pipeSpecCode2 = new_workPlanList[i].PipeSpecCode; } if (i == 2) { code3 = new_workPlanList[i].CuttingPosition; pipeSpecCode3 = new_workPlanList[i].PipeSpecCode; } } Dictionary<string, object?> keyValuePairs = new Dictionary<string, object?> @@ -488,6 +627,9 @@ { "åå²ä½ç½®1",code1}, { "åå²ä½ç½®2", code2}, { "åå²ä½ç½®3", code3 }, { "åå²ç®¡æ®µç¼ç 1",pipeSpecCode1}, { "åå²ç®¡æ®µç¼ç 2", pipeSpecCode2}, { "åå²ç®¡æ®µç¼ç 3", pipeSpecCode3 }, { "åå²ç®¡æ®µç¼ç ", new_workPlanList.First().PipeSpecCode }, { "åå²ç®¡æ®µåç§°", new_workPlanList.First().PipeSectionName }, { "åå²åæç®¡åå·", new_workPlanList.First().MaterialMode }, @@ -515,5 +657,82 @@ } } } /// <summary> /// 请æ±çæåå²äº§åç ä¿¡å· /// </summary> /// <returns></returns> private async Task HanlderForCutByCreateProductAsync() { 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ä»»å¡å·"); if (string.IsNullOrEmpty(plcTaskNo?.Content?.Value.SafeString().ToString())) { } else { var myTaskNo = plcTaskNo.Content.Value.SafeString().ToString(); 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 = callMaterialOrder.DataIdentifier; Dictionary<string, object?> keyValuePairs_productID = new Dictionary<string, object?> { { "åå²_ProductID", productID}, }; var ret = _variableService.WriteValueAsync(keyValuePairs_productID); var new_workPlanList = workPlanList.Where(x => x.ProcessRouteNumber == "è£ é ").ToList(); //æ´æ°ä¸ºçäº§ä¸ foreach (var item in new_workPlanList) { item.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.ç产ä¸; item.Remark = "æ´æ°ç产ä¸"; } await workPlanRepository.UpdateManyAsync(new_workPlanList); var new_workPlanList_printCode = workPlanList.Where(x => x.ProcessRouteNumber == "åå²").ToList(); foreach (var item in new_workPlanList_printCode) { item.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.已宿; item.Remark = "æ´æ°å·²å®æ"; } await workPlanRepository.UpdateManyAsync(new_workPlanList_printCode); uow.CompleteAsync(); } catch (Exception) { uow.RollbackAsync(); throw; } } } } } Weben_CMSרÓôúÂëÉú³ÉÆ÷/queryExtensions/CmsQueryExtensions/Entitys/MyCurrentUser.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,25 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CmsQueryExtensions.Entitys { /// <summary> /// å½åç»å½ç¨æ·å¯¹è±¡ /// </summary> [Serializable] public class MyCurrentUser { /// <summary> /// ç¨æ·ID /// </summary> public string? UserId { get; set; } /// <summary> /// ç¨æ·å /// </summary> public string? UserAccount { get; set; } } }