diff --git a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2
index 1959d1d6..b697c442 100644
Binary files a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 and b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 differ
diff --git a/src/WMS.Web.Api/Controllers/BarCodeController.cs b/src/WMS.Web.Api/Controllers/BarCodeController.cs
new file mode 100644
index 00000000..9db6976a
--- /dev/null
+++ b/src/WMS.Web.Api/Controllers/BarCodeController.cs
@@ -0,0 +1,92 @@
+using AutoMapper;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
+using WMS.Web.Domain.Infrastructure;
+using WMS.Web.Domain.IService.Public;
+using WMS.Web.Domain.IService;
+using WMS.Web.Domain.Options;
+using System.Threading.Tasks;
+using System;
+using WMS.Web.Core.Dto.OutStock;
+using WMS.Web.Core.Internal.Results;
+using WMS.Web.Domain.Values;
+using Newtonsoft.Json;
+using WMS.Web.Core.Dto;
+using System.Linq;
+using System.Collections.Generic;
+using WMS.Web.Repositories;
+using Microsoft.EntityFrameworkCore.Storage;
+
+namespace WMS.Web.Api.Controllers
+{
+ ///
+ /// 条码系统重置箱信息
+ ///
+ [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;
+ }
}
}