增加重置箱接口
This commit is contained in:
92
src/WMS.Web.Api/Controllers/BarCodeController.cs
Normal file
92
src/WMS.Web.Api/Controllers/BarCodeController.cs
Normal file
@@ -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
|
||||
{
|
||||
/// <summary>
|
||||
/// 条码系统重置箱信息
|
||||
/// </summary>
|
||||
[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<TakeStockController> _logger;
|
||||
public BarCodeController(IMapper mapper, ILoginService loginService,
|
||||
IBoxRepositories boxRepositories, IInStockTaskBoxRepositories inStockTaskBoxRepositories,
|
||||
ILogger<TakeStockController> logger, ISerialNumbersRepositories serialNumbersRepositorie,
|
||||
IBasicsRepositories transactionRepositories)
|
||||
{
|
||||
_mapper = mapper;
|
||||
_loginService = loginService;
|
||||
_boxRepositories = boxRepositories;
|
||||
_inStockTaskBoxRepositories = inStockTaskBoxRepositories;
|
||||
_serialNumbersRepositories = serialNumbersRepositorie;
|
||||
_transactionRepositories = transactionRepositories;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 导出
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("Restart")]
|
||||
public async Task<Result<List<string>>> 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<List<string>>.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<List<string>>.ReFailure(ResultCodes.DateWriteError);
|
||||
|
||||
return Result<List<string>>.ReSuccess(inBoxBillNo);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -37,6 +37,18 @@
|
||||
<param name="dto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Api.Controllers.BarCodeController">
|
||||
<summary>
|
||||
条码系统重置箱信息
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Api.Controllers.BarCodeController.Restart(WMS.Web.Core.Dto.OperateStrRequest)">
|
||||
<summary>
|
||||
导出
|
||||
</summary>
|
||||
<param name="dto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Api.Controllers.BoxMarkController">
|
||||
<summary>
|
||||
箱唛-接口
|
||||
|
||||
@@ -31,5 +31,7 @@ namespace WMS.Web.Domain.Infrastructure
|
||||
Task<List<Box>> GetEntityList(List<int> ids);
|
||||
|
||||
Task<List<Box>> GetEntityListByNos(List<string> billNos);
|
||||
//批量删除
|
||||
Task<bool> DeleteEntityList(List<int> boxIds, bool isTransaction = true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,5 +32,7 @@ namespace WMS.Web.Domain.Infrastructure
|
||||
Task<List<SerialNumbers>> GetEntityListByBoxIds(List<int> boxIds);
|
||||
/// 修改实体集合
|
||||
Task<bool> EditEntityList(List<SerialNumbers> entitys, bool isTransaction = true);
|
||||
//批量删除
|
||||
Task<bool> DeleteEntityList(List<int> boxIds, bool isTransaction = true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
/// <summary>
|
||||
/// 批量删除
|
||||
/// </summary>
|
||||
/// <param name="billNos"></param>
|
||||
/// <param name="isTransaction"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="NotImplementedException"></exception>
|
||||
public async Task<bool> DeleteEntityList(List<int> 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<LoginInDto>($"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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -379,5 +379,34 @@ namespace WMS.Web.Repositories
|
||||
|
||||
return _mapper.Map<List<SerialNumbers>>(res.Clone());
|
||||
}
|
||||
/// <summary>
|
||||
/// 根据箱id批量删除
|
||||
/// </summary>
|
||||
/// <param name="boxIds"></param>
|
||||
/// <param name="isTransaction"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<bool> DeleteEntityList(List<int> 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user