diff --git a/.gitignore b/.gitignore index f83526d13..934d3d589 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -**/node_modules/ \ No newline at end of file +**/node_modules/ +/be/Hosts/Wms.Host/Win_in.Sfs.Wms.Store.HttpApi.Host/Properties/PublishProfiles/FolderProfile3.pubxml diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingRequestReader.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingRequestReader.cs index bc27da7ad..537f6ec81 100644 --- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingRequestReader.cs +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingRequestReader.cs @@ -19,16 +19,13 @@ using Win_in.Sfs.Wms.Store.Application.Contracts; using System.Text.Json.Serialization; using System.IdentityModel.Tokens.Jwt; using Volo.Abp; - namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent.Incoming; - public class InjectionMoldingRequestReader : IReader { private readonly IInjectionIssueRequestAppService _injectionRequest; private readonly IItemBasicAppService _itemService; private readonly ILocationAppService _locService; - private readonly ILogger _logger; private readonly IOptions _options; private readonly IHttpClientFactory _httpClientFactory; @@ -53,15 +50,6 @@ public class InjectionMoldingRequestReader : IReader _locService = locService; } - - - - - - - - - /// /// 读取注塑叫料任务 /// @@ -127,7 +115,6 @@ public class InjectionMoldingRequestReader : IReader _logger.LogInformation(error); } return new List(); - } // 创建新的注塑请求并将数据写入数据库 await _injectionRequest.CreateAsync(input).ConfigureAwait(false); @@ -194,27 +181,37 @@ public class InjectionMoldingRequestReader : IReader /// public async Task ReaderCameraApi() { - // 从配置中获取远程摄像头的地址、用户名、密码和令牌 - var address = _options.Value.AutoRemote.IpAddress; - var username = _options.Value.AutoRemote.UserName; - var password = _options.Value.AutoRemote.Password; - var token = _options.Value.AutoRemote.Token; - - // 创建一个HttpClient实例 - var client = _httpClientFactory.CreateClient(); - - // 将用户名和密码转换为Base64编码的凭据,并设置请求的身份验证信息 - var credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{username}:{password}")); - client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", credentials); - - // 发送GET请求到远程摄像头地址并等待响应 - var response = await client.GetAsync(address).ConfigureAwait(false); + try + { + + // 从配置中获取远程摄像头的地址、用户名、密码和令牌 + var address = _options.Value.AutoRemote.IpAddress; + var username = _options.Value.AutoRemote.UserName; + var password = _options.Value.AutoRemote.Password; + var token = _options.Value.AutoRemote.Token; + + // 创建一个HttpClient实例 + var client = _httpClientFactory.CreateClient(); + + // 将用户名和密码转换为Base64编码的凭据,并设置请求的身份验证信息 + var credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{username}:{password}")); + client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", credentials); - // 如果请求成功,则返回响应内容,否则返回错误信息 - if (response.IsSuccessStatusCode) + + // 发送GET请求到远程摄像头地址并等待响应 + var response = await client.GetAsync(address).ConfigureAwait(false); + + // 如果请求成功,则返回响应内容,否则返回错误信息 + if (response.IsSuccessStatusCode) + { + return await response.Content.ReadAsStringAsync().ConfigureAwait(false); + } + } + catch (HttpRequestException ex) { - return await response.Content.ReadAsStringAsync().ConfigureAwait(false); + _logger.LogInformation("远程摄像头连接失败:" + ex.Message); + } return "Error occurred"; diff --git a/be/Hosts/Basedata.Host/Win_in.Sfs.Basedata.HttpApi.Host/BasedataHttpApiHostModule.cs b/be/Hosts/Basedata.Host/Win_in.Sfs.Basedata.HttpApi.Host/BasedataHttpApiHostModule.cs index 3f5af902b..adb390a0c 100644 --- a/be/Hosts/Basedata.Host/Win_in.Sfs.Basedata.HttpApi.Host/BasedataHttpApiHostModule.cs +++ b/be/Hosts/Basedata.Host/Win_in.Sfs.Basedata.HttpApi.Host/BasedataHttpApiHostModule.cs @@ -20,6 +20,7 @@ using Volo.Abp.Modularity; using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.SettingManagement.EntityFrameworkCore; using Volo.Abp.Swashbuckle; +using Volo.Abp.Threading; using Volo.Abp.Timing; using Volo.Abp.Users; using Win_in.Sfs.Basedata.Application; @@ -67,19 +68,14 @@ public class BasedataHttpApiHostModule : ModuleBase { public override void ConfigureServices(ServiceConfigurationContext context) { - //base.ConfigureServices(context); - //ConfigureAuditing(); - //// - //ConfigureBlobStoring(); - //Configure(options => - //{ - // options.Kind = DateTimeKind.Local; - //}); + base.ConfigureServices(context); ConfigureAuditing(); // ConfigureBlobStoring(); + + } public override void PostConfigureServices(ServiceConfigurationContext context) @@ -120,7 +116,20 @@ public class BasedataHttpApiHostModule : ModuleBase public override void OnApplicationInitialization(ApplicationInitializationContext context) { + + CreateDatabase(context); base.OnApplicationInitialization(context); + + //AsyncHelper.RunSync(async () => + //{ + // using (var scope = context.ServiceProvider.CreateScope()) + // { + // await scope.ServiceProvider + // .GetRequiredService().StartAsync().ConfigureAwait(false); + + // } + //}); + } } diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionRequestController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionRequestController.cs index bdcb4dd23..4a67b9616 100644 --- a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionRequestController.cs +++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionRequestController.cs @@ -1,6 +1,8 @@ +using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc; +using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Pda.Controllers.Stores; @@ -48,4 +50,17 @@ public class InjectionIssueRequestController : AbpController return Ok(result); } + /// + /// 获取物品类别列表 + /// + /// + /// + [HttpGet("list/item-category")] + public virtual async Task> GetItemCategoryListAsync() + { + var entities = await _injectionRequestAppService.GetItemCategoryListAsync().ConfigureAwait(false); + + return entities; + } + } diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/TransferLibJobController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/TransferLibJobController.cs index 0fcbb8ffa..c8084e7d7 100644 --- a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/TransferLibJobController.cs +++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/TransferLibJobController.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Text.Json; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Volo.Abp.Application.Dtos; @@ -99,4 +100,38 @@ public class TransferLibJobController : AbpController { await _transferLibJobAppService.CancelAcceptAsync(id).ConfigureAwait(false); } + + /// + /// 获取列表 + /// + /// + /// + /// + [HttpGet("list")] + public virtual async Task> GetListAsync(int pageSize, int pageIndex) + { + //var wlgCodes = await _userWorkGroupAppService.GetCodsOfCurrentUserAsync().ConfigureAwait(false); + //var jsonCodes = JsonSerializer.Serialize(wlgCodes); + + var status = new List() { (int)EnumJobStatus.Open, (int)EnumJobStatus.Doing }; + var jsonStatus = JsonSerializer.Serialize(status); + + var request = new SfsJobRequestInputBase + { + MaxResultCount = pageSize, + SkipCount = (pageIndex - 1) * pageSize, + Sorting = $"{nameof(TransferLibJobDTO.Priority)} ASC", + Condition = new Condition + { + Filters = new List + { + //new(nameof(TransferLibJobDTO.WorkGroupCode),jsonCodes,"In"), + new(nameof(TransferLibJobDTO.JobStatus),jsonStatus,"In") + } + } + }; + + var list = await _transferLibJobAppService.GetPagedListByFilterAsync(request, true).ConfigureAwait(false); + return list; + } } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ItemBasics/IItemBasicAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ItemBasics/IItemBasicAppService.cs index e44da0e5f..da616e239 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ItemBasics/IItemBasicAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ItemBasics/IItemBasicAppService.cs @@ -17,6 +17,7 @@ public interface IItemBasicAppService void CheckItemIsAvailable(ItemBasicDTO itemBasicDTO); Task> GetListByNameAsync(string name); + Task> GetCategoryListAsync(); Task GetOrAddAsync(ItemBasicEditInput input); diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/BasedataApplicationModule.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/BasedataApplicationModule.cs index f41b7119e..769302ef0 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/BasedataApplicationModule.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/BasedataApplicationModule.cs @@ -3,6 +3,7 @@ using Volo.Abp.Application; using Volo.Abp.AutoMapper; using Volo.Abp.Modularity; using Win_in.Sfs.Basedata.Application.Contracts; + using Win_in.Sfs.Basedata.Domain; using Win_in.Sfs.Shared.Application; @@ -19,10 +20,16 @@ public class BasedataApplicationModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { + context.Services.AddAutoMapperObjectMapper(); Configure(options => { options.AddMaps(validate: true); }); + + + + + } } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs index 41e51c39a..175c29344 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs @@ -22,34 +22,27 @@ public class BomAppService : SfsBaseDataAppServiceBase, IBomAppService { + + private new readonly IBomRepository _repository; private readonly IBomManager _bomManager; - List _bomList=new List(); + public BomAppService(IBomRepository repository , IBomManager bomManager , IDistributedCache cache + ) : base(repository, cache) { _repository = repository; _bomManager = bomManager; base.CreatePolicyName = BomPermissions.Create; base.UpdatePolicyName = BomPermissions.Update; - base.DeletePolicyName = BomPermissions.Delete; - + base.DeletePolicyName = BomPermissions.Delete; } - - - - - - - - - #region Get [HttpGet("get-by-productitemcode")] diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Caches/CacheAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Caches/CacheAppService.cs new file mode 100644 index 000000000..0ea409cf5 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Caches/CacheAppService.cs @@ -0,0 +1,141 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using DocumentFormat.OpenXml.Office2010.Drawing; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using Volo.Abp.Application.Services; +using Volo.Abp.Caching; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Repositories; +using Win_in.Sfs.Basedata.Application.Contracts; +using Win_in.Sfs.Basedata.Domain; +using Win_in.Sfs.Basedata.Domain.Caches; +using Win_in.Sfs.Basedata.Domain.Shared; + +namespace Win_in.Sfs.Basedata.Application; + + +public class TaskQueue +{ + private readonly List _tasks = new List(); + + public void Enqueue(string name, Action action) + { + _tasks.Add(new TaskItem { Name = name, Action = action }); + } + + public async Task StartAsync() + { + foreach (var task in _tasks) + { + await Task.Run(task.Action).ConfigureAwait(false); + } + } +} +public class TaskItem +{ + public string Name { get; set; } + public Action Action { get; set; } +} + + + + + + + + + + +public class CycleOptions +{ + /// + /// Boms缓存生命周期(秒) + /// + public int BomsCycle { get; set; } + +} +/// +/// 提供缓存服务的类(堵塞以后修改再用) +/// +public class CacheService:ISingletonDependency +{ + private readonly IServiceProvider _serviceProvider; + private readonly IOptions _options; + public CacheService(IServiceProvider serviceProvider, IOptions options) + { + _serviceProvider = serviceProvider; + _options = options; + } + + /// + /// 生命周期操作 + /// + private async Task BomsCycle() + { + + //Task.Run(async () => + //{ + var reassigner = new Reassigner(DateTime.Now, new TimeSpan(0, 0, _options.Value.BomsCycle == 0 ? 60 : _options.Value.BomsCycle)); + await reassigner.RunAsync(async () => + { + using var serviceScope = _serviceProvider.CreateScope(); + var repository = serviceScope.ServiceProvider.GetRequiredService(); + Cache.Boms.Clear(); + Cache.Boms = await repository.GetListAsync().ConfigureAwait(false); + + }).ConfigureAwait(false); + //}); + ; + } + + /// + /// 异步开始生命周期操作不能堵塞 + /// + public async Task StartAsync() + { + BomsCycle();//异步处理不能堵塞主任务 + + } + + +} + + +public class Reassigner +{ + private readonly TimeSpan _interval; + private DateTime _lasttime; + public Reassigner(DateTime lasttime, TimeSpan interval) + { + _lasttime = lasttime; + _interval = interval; + } + + public async Task RunAsync(Action p_action) + { + while (true) + { + // 获取当前时间 + var currentTime = DateTime.Now; + // 计算上次重新赋值到现在的时间间隔 + var elapsed = currentTime - _lasttime; + // 检查时间间隔是否满足条件 + if (elapsed >= _interval) + { + p_action(); + // 重新赋值 + //_value = await GetValueAsync(); + // 更新最后更新时间 + _lasttime = currentTime; + } + + // 等待下一刻钟 + await Task.Delay(_interval).ConfigureAwait(false); + } + } + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Items/ItemBasicAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Items/ItemBasicAppService.cs index 710271fd8..fc7d9b96d 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Items/ItemBasicAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Items/ItemBasicAppService.cs @@ -122,6 +122,14 @@ public class ItemBasicAppService return dtos; } + [HttpGet("list-item-category")] + public virtual async Task> GetCategoryListAsync() + { + var entities = await _repository.GetListAsync(c => !string.IsNullOrEmpty(c.Category)).ConfigureAwait(false); + var dtos = ObjectMapper.Map, List>(entities); + return dtos; + } + [HttpGet("get-manage-type")] public virtual async Task GetManageTypeAsync(string itemCode) { diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Boms/BomManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Boms/BomManager.cs index 692ce3ef0..bd83d5143 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Boms/BomManager.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Boms/BomManager.cs @@ -10,7 +10,8 @@ using Volo.Abp; using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Services; using Win_in.Sfs.Basedata.Boms; -using Win_in.Sfs.Basedata.Caches; + +using Win_in.Sfs.Basedata.Domain.Caches; using Win_in.Sfs.Basedata.Domain.Shared; using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain.Shared; @@ -22,6 +23,7 @@ public class BomManager : DomainService, IBomManager private readonly IBomRepository _repository; private readonly IItemBasicRepository _itemBasicRepository; + public BomManager(IBomRepository repository, IItemBasicRepository itemBasicRepository) { _repository = repository; @@ -143,6 +145,13 @@ public class BomManager : DomainService, IBomManager return await _repository.GetListAsync(p => p.Product == product).ConfigureAwait(false); } + public virtual async Task> GetListAsync() + { + return await _repository.GetListAsync().ConfigureAwait(false); + } + + + public virtual async Task> GetListWithPhantomItemAsync(string productItemCode, string mfgOp, DateTime validTime, bool onlyFromProductionPlan) { var where = BuildExpression(productItemCode, mfgOp, validTime, onlyFromProductionPlan); diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Caches/Cache.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Caches/Cache.cs index 4beb6e0d7..9a44f6986 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Caches/Cache.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Caches/Cache.cs @@ -1,59 +1,28 @@ using System; using System.Collections.Generic; +using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Repositories; using Win_in.Sfs.Basedata.Domain; -namespace Win_in.Sfs.Basedata.Caches; +namespace Win_in.Sfs.Basedata.Domain.Caches; public static class Cache { + public static List Boms = new List(); - public static async void BomsLifeCycle(int lifetime) + public static void Clear() { - var reassigner = new Reassigner(DateTime.Now,new TimeSpan(0,5,0)); - await reassigner.RunAsync(() => { - Boms.Clear(); - }).ConfigureAwait(false); + Boms.Clear(); } } -public class Reassigner -{ - private readonly TimeSpan _interval; - private DateTime _lasttime; - public Reassigner(DateTime lasttime, TimeSpan interval) - { - _lasttime = lasttime; - _interval = interval; - } - public async Task RunAsync(Action p_action) - { - while (true) - { - // 获取当前时间 - var currentTime = DateTime.Now; - // 计算上次重新赋值到现在的时间间隔 - var elapsed = currentTime - _lasttime; - // 检查时间间隔是否满足条件 - if (elapsed >= _interval) - { - p_action(); - // 重新赋值 - //_value = await GetValueAsync(); - // 更新最后更新时间 - _lasttime = currentTime; - } - - // 等待下一刻钟 - await Task.Delay(_interval); - } - } - -} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/InjectionIssueRequests/IInjectionIssueRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/InjectionIssueRequests/IInjectionIssueRequestAppService.cs index 09159fa09..8eb902d1d 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/InjectionIssueRequests/IInjectionIssueRequestAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/InjectionIssueRequests/IInjectionIssueRequestAppService.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Volo.Abp.Application.Dtos; +using Win_in.Sfs.Basedata.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts; @@ -16,4 +17,10 @@ public interface IInjectionIssueRequestAppService /// /// Task GetCountAsync(); + + /// + /// 获取物品类别列表 + /// + /// + Task> GetItemCategoryListAsync(); } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/InjectionIssueJobs/InjectionIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/InjectionIssueJobs/InjectionIssueJobAppService.cs index 7a599cb67..416005a4a 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/InjectionIssueJobs/InjectionIssueJobAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/InjectionIssueJobs/InjectionIssueJobAppService.cs @@ -21,8 +21,11 @@ using Win_in.Sfs.Wms.Store.Notes; namespace Win_in.Sfs.Wms.Store.Application; +/// +/// 注塑发料任务 +/// [Authorize] -[Route($"{StoreConsts.RootPath}injection-job")] +[Route($"{StoreConsts.RootPath}injection-issue-job")] public class InjectionIssueJobAppService : SfsJobAppServiceBase, diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/InjectionIssueNotes/InjectionIssueNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/InjectionIssueNotes/InjectionIssueNoteAppService.cs index e172732a7..5bddd6b32 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/InjectionIssueNotes/InjectionIssueNoteAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/InjectionIssueNotes/InjectionIssueNoteAppService.cs @@ -17,8 +17,11 @@ using Win_in.Sfs.Wms.Store.Domain.Shared; namespace Win_in.Sfs.Wms.Store.Application; +/// +/// 注塑发料记录 +/// [Authorize] -[Route($"{StoreConsts.RootPath}injection-note")] +[Route($"{StoreConsts.RootPath}injection-issue-note")] public class InjectionIssueNoteAppService : SfsStoreWithDetailsAppServiceBase, diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAppService.cs index 88a708606..8a87550c5 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAppService.cs @@ -28,10 +28,10 @@ using Win_in.Sfs.Wms.Store.Domain.Shared; namespace Win_in.Sfs.Wms.Store.Application; /// -/// 注塑叫料 +/// 注塑发料申请 /// [Authorize] -[Route($"{StoreConsts.RootPath}injection-request")] +[Route($"{StoreConsts.RootPath}injection-issue-request")] public class InjectionIssueRequestAppService : SfsStoreRequestAppServiceBase, @@ -150,6 +150,19 @@ public class InjectionIssueRequestAppService : SfsStoreRequestAppServiceBase + /// 获取物品类别列表 + /// + /// + /// + [HttpGet("list/item-category")] + public virtual async Task> GetItemCategoryListAsync() + { + var entities = await _itemBasicAppService.GetCategoryListAsync().ConfigureAwait(false); + + return entities; + } + #endregion #region 导入 diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InjectionIssueRequestEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InjectionIssueRequestEventHandler.cs index faf8ef288..deb859cb5 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InjectionIssueRequestEventHandler.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InjectionIssueRequestEventHandler.cs @@ -388,7 +388,7 @@ public class InjectionIssueRequestEventHandler .RawLocationCodeListJson) }; var usableList = await _balanceAppService.GetUsableListAsync(input).ConfigureAwait(false); - usableList = usableList.Where(p => !useBalanceList.Contains(p.PackingCode)).ToList(); + usableList = usableList.Where(p => !useBalanceList.Contains(p.PackingCode) && p.Qty!=0).ToList(); if (usableList.Any()) { for (var i = 0; i < sumBoxQty; i++) @@ -462,6 +462,7 @@ public class InjectionIssueRequestEventHandler detail.ItemName=injectionRequestDetail.ItemName; detail.ItemDesc1=injectionRequestDetail.ItemDesc1; detail.ItemDesc2 = injectionRequestDetail.ItemDesc2; + detail.StdPackQty = injectionRequestDetail.StdPackQty; detail.Status = EnumInventoryStatus.OK; detail.Uom = balance.Uom;