From e4dea40c01449ca28e64731cfe2f1352841a407c Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Wed, 15 May 2024 15:17:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=87=8D=E7=BD=AE=E7=AE=B1?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 | Bin 258836 -> 274420 bytes .../Controllers/BarCodeController.cs | 92 ++++++++++++++++++ src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml | 12 +++ .../Infrastructure/IBoxRepositories.cs | 2 + .../ISerialNumbersRepositories.cs | 2 + src/WMS.Web.Repositories/BoxRepositories.cs | 32 ++++++ .../AuthorizationTokenSecurityPolicy.cs | 10 +- .../SerialNumbersRepositories.cs | 29 ++++++ 8 files changed, 174 insertions(+), 5 deletions(-) create mode 100644 src/WMS.Web.Api/Controllers/BarCodeController.cs diff --git a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 index 1959d1d687aa6db9b5b70fdc8cd904e4d2a734c5..b697c44225d81fdad176f5fc985ab6e85c6d270e 100644 GIT binary patch delta 44771 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 G#s3efq=6Fv delta 29272 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 + /// 条码系统重置箱信息 + /// + [Route("api/[controller]")] + [ApiController] + public class BarCodeController : ControllerBase + { + private readonly IMapper _mapper; + private readonly ILoginService _loginService; + private readonly IBoxRepositories _boxRepositories; + private readonly IInStockTaskBoxRepositories _inStockTaskBoxRepositories; + private readonly ISerialNumbersRepositories _serialNumbersRepositories; + private IBasicsRepositories _transactionRepositories; + private readonly ILogger _logger; + public BarCodeController(IMapper mapper, ILoginService loginService, + IBoxRepositories boxRepositories, IInStockTaskBoxRepositories inStockTaskBoxRepositories, + ILogger logger, ISerialNumbersRepositories serialNumbersRepositorie, + IBasicsRepositories transactionRepositories) + { + _mapper = mapper; + _loginService = loginService; + _boxRepositories = boxRepositories; + _inStockTaskBoxRepositories = inStockTaskBoxRepositories; + _serialNumbersRepositories = serialNumbersRepositorie; + _transactionRepositories = transactionRepositories; + _logger = logger; + } + + /// + /// 导出 + /// + /// + /// + [HttpPost] + [Route("Restart")] + public async Task>> Restart([FromBody] OperateStrRequest dto) + { + _logger.LogInformation($"重置箱信息:{JsonConvert.SerializeObject(dto)}"); + var boxs = await _boxRepositories.GetEntityListByNos(dto.Ids); + var boxIds = boxs.Select(s => s.Id).ToList(); + //查出已经入库的箱子 + var inStockList = await _inStockTaskBoxRepositories.GetListBy(boxIds); + //已经入库的箱子 + var inBoxBillNo = inStockList.Select(s => s.BoxBillNo).ToList(); + //找到需要删除的箱子 + var deleteBoxIds = boxs.Where(w => !inBoxBillNo.Contains(w.BoxBillNo)).Select(s => s.Id).ToList(); + if (deleteBoxIds.Count() == 0) return Result>.ReSuccess(inBoxBillNo); + var deleteBoxBillNos = boxs.Where(w => deleteBoxIds.Contains(w.Id)).Select(s => s.BoxBillNo).ToList(); + _logger.LogInformation($"重置的箱号:{JsonConvert.SerializeObject(deleteBoxBillNos)}"); + //执行数据库 + IDbContextTransaction _transaction = _transactionRepositories.GetTransaction(); + bool res_Rollback = false; + //删除序列号 + var isSuccess = await _serialNumbersRepositories.DeleteEntityList(deleteBoxIds, false); + if (!isSuccess) res_Rollback = true; + + if (!res_Rollback) + { + //删除箱信息 + isSuccess = await _boxRepositories.DeleteEntityList(deleteBoxIds, false); + if (!isSuccess) res_Rollback = true; + } + isSuccess = _transactionRepositories.CommitTransaction(res_Rollback, _transaction); + if (!isSuccess) return Result>.ReFailure(ResultCodes.DateWriteError); + + return Result>.ReSuccess(inBoxBillNo); + } + } +} diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml index 56d984d6..b3df29a9 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml @@ -37,6 +37,18 @@ + + + 条码系统重置箱信息 + + + + + 导出 + + + + 箱唛-接口 diff --git a/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs index 1dfa9cc2..f654243f 100644 --- a/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs @@ -31,5 +31,7 @@ namespace WMS.Web.Domain.Infrastructure Task> GetEntityList(List ids); Task> GetEntityListByNos(List billNos); + //批量删除 + Task DeleteEntityList(List boxIds, bool isTransaction = true); } } diff --git a/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs b/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs index e6de0271..6362769a 100644 --- a/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs @@ -32,5 +32,7 @@ namespace WMS.Web.Domain.Infrastructure Task> GetEntityListByBoxIds(List boxIds); /// 修改实体集合 Task EditEntityList(List entitys, bool isTransaction = true); + //批量删除 + Task DeleteEntityList(List boxIds, bool isTransaction = true); } } diff --git a/src/WMS.Web.Repositories/BoxRepositories.cs b/src/WMS.Web.Repositories/BoxRepositories.cs index 7f1efa92..2d81a8d4 100644 --- a/src/WMS.Web.Repositories/BoxRepositories.cs +++ b/src/WMS.Web.Repositories/BoxRepositories.cs @@ -1,6 +1,7 @@ using AutoMapper; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Storage; +using NPOI.OpenXmlFormats.Spreadsheet; using System; using System.Collections.Generic; using System.Linq; @@ -177,5 +178,36 @@ namespace WMS.Web.Repositories return res.Clone(); } + /// + /// 批量删除 + /// + /// + /// + /// + /// + public async Task DeleteEntityList(List boxIds, bool isTransaction = true) + { + IDbContextTransaction _transaction = null; + if (isTransaction) + _transaction = _context.Database.BeginTransaction(); + try + { + var res = await _context.Box + .Include(s => s.Details) + .Where(f => boxIds.Contains(f.Id)).ToListAsync(); + + _context.Box.RemoveRange(res); + await _context.SaveChangesAsync(); + if (_transaction != null) + _transaction.Commit(); + } + catch (Exception ex) + { + if (_transaction != null) + _transaction.Rollback(); + return false; + } + return true; + } } } diff --git a/src/WMS.Web.Repositories/DependencyInjection/AuthorizationTokenSecurityPolicy.cs b/src/WMS.Web.Repositories/DependencyInjection/AuthorizationTokenSecurityPolicy.cs index b3bb52e9..9f26812d 100644 --- a/src/WMS.Web.Repositories/DependencyInjection/AuthorizationTokenSecurityPolicy.cs +++ b/src/WMS.Web.Repositories/DependencyInjection/AuthorizationTokenSecurityPolicy.cs @@ -47,7 +47,7 @@ namespace WMS.Web.Repositories.DependencyInjection string authorization = context.Request.Headers["Authorization"]; string path = context.Request.Path.Value.ToLower(); string[] pathlist = path.Split('/'); - bool isLogin = pathlist.Where(x => x == "login" || x.ToLower() == "heart" || x.ToLower() == "test" || x.ToLower() == "serialnumber").Any(); + bool isLogin = pathlist.Where(x => x == "login" || x.ToLower() == "heart" || x.ToLower() == "test" || x.ToLower() == "serialnumber" || x.ToLower() == "barcode").Any(); if (isLogin) { context.Response.StatusCode = 200; @@ -121,14 +121,14 @@ namespace WMS.Web.Repositories.DependencyInjection { jiange_timespan = now - logininfo.TokenInfo.Expired; var info = _redisClientService.GetStringKey($"wms_login_{token}"); - + if (info != null) { //超过16个小时的,就要移除缓存 if (jiange_timespan.TotalHours >= 16) _redisClientService.RemoveStringKey($"wms_login_{token}"); //超过1个小时的,就要刷新token - else if (!string.IsNullOrEmpty(logininfo.TokenInfo.Token) && jiange_timespan.TotalHours>=1) + else if (!string.IsNullOrEmpty(logininfo.TokenInfo.Token) && jiange_timespan.TotalHours >= 1) this.RefreshToken(logininfo.TokenInfo.Token, logininfo.TokenInfo.RefreshToken, loginService); } @@ -140,7 +140,7 @@ namespace WMS.Web.Repositories.DependencyInjection // if (!string.IsNullOrEmpty(logininfo.TokenInfo.Token) && jiange_timespan.TotalMinutes<=10) // this.RefreshToken(logininfo.TokenInfo.Token, logininfo.TokenInfo.RefreshToken, loginService); //} - + //3.验证检查是否有黑名单的token缓存 string blacktoken = _redisClientService.GetStringKey($"wms_black_token_{logininfo.UserInfo.UcId}"); if (string.IsNullOrEmpty(blacktoken)) @@ -157,7 +157,7 @@ namespace WMS.Web.Repositories.DependencyInjection await context.Response.WriteAsync(result); } } - + } } diff --git a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs index 31c0bbb7..40192e5d 100644 --- a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs +++ b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs @@ -379,5 +379,34 @@ namespace WMS.Web.Repositories return _mapper.Map>(res.Clone()); } + /// + /// 根据箱id批量删除 + /// + /// + /// + /// + public async Task DeleteEntityList(List boxIds, bool isTransaction = true) + { + IDbContextTransaction _transaction = null; + if (isTransaction) + _transaction = _context.Database.BeginTransaction(); + try + { + var res = await _context.SerialNumbers + .Where(f => boxIds.Contains(f.BoxId)).ToListAsync(); + + _context.SerialNumbers.RemoveRange(res); + await _context.SaveChangesAsync(); + if (_transaction != null) + _transaction.Commit(); + } + catch (Exception ex) + { + if (_transaction != null) + _transaction.Rollback(); + return false; + } + return true; + } } }