添加项目文件。
This commit is contained in:
309
src/BarCode.Web.Api/Controllers/SerialNumberController.cs
Normal file
309
src/BarCode.Web.Api/Controllers/SerialNumberController.cs
Normal file
@@ -0,0 +1,309 @@
|
||||
using AutoMapper;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using BarCode.Web.Core.Internal.Results;
|
||||
using BarCode.Web.Domain.Infrastructure;
|
||||
using BarCode.Web.Domain.IService.Public;
|
||||
using BarCode.Web.Domain.Values;
|
||||
using BarCode.Web.Core.Dto.SerialNumbers;
|
||||
using BarCode.Web.Repositories;
|
||||
using BarCode.Web.Core.Dto;
|
||||
using BarCode.Web.Domain.IService;
|
||||
using BarCode.Web.Core.Help;
|
||||
using BarCode.Web.Core;
|
||||
using BarCode.Web.Domain.Services;
|
||||
using BarCode.Web.Domain.Options;
|
||||
using Microsoft.Extensions.Options;
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using System.Diagnostics.Eventing.Reader;
|
||||
using BarCode.Web.Core.Dto.Box;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace BarCode.Web.Api.Controllers
|
||||
{
|
||||
/// <summary>
|
||||
/// 序列号
|
||||
/// </summary>
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
public class SerialNumberController : ControllerBase
|
||||
{
|
||||
private readonly IMapper _mapper;
|
||||
private readonly ILoginService _loginService;
|
||||
private readonly ISerialNumbersRepositories _serialNumbersRepositories;
|
||||
private readonly ISerialNumberService _serialNumberService;
|
||||
private readonly IExportExcelService _exportExcelService;
|
||||
private readonly QiniuOptions _option;
|
||||
private readonly ISGenerateRecordRepositories _sGenerateRecordRepositories;
|
||||
public SerialNumberController(IMapper mapper, ILoginService loginService, ISerialNumbersRepositories serialNumbersRepositories,
|
||||
ISerialNumberService serialNumberService, IExportExcelService exportExcelService,
|
||||
IOptions<QiniuOptions> option, ISGenerateRecordRepositories sGenerateRecordRepositories)
|
||||
{
|
||||
_mapper = mapper;
|
||||
_loginService = loginService;
|
||||
_serialNumbersRepositories = serialNumbersRepositories;
|
||||
_serialNumberService = serialNumberService;
|
||||
_exportExcelService = exportExcelService;
|
||||
_option = option?.Value;
|
||||
_sGenerateRecordRepositories = sGenerateRecordRepositories;
|
||||
}
|
||||
/// <summary>
|
||||
/// 序列码生成记录列表
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("GetGenerateRecordList")]
|
||||
public async Task<ResultPagedList<SGenerateRecordInfoResponse>> GetGenerateRecordList([FromBody] SGenerateRecordQueryRequest dto)
|
||||
{
|
||||
var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
|
||||
if (loginInfo == null || loginInfo.UserInfo == null)
|
||||
return ResultPagedList<SGenerateRecordInfoResponse>.ReFailure(ResultCodes.Token_Invalid_Error);
|
||||
|
||||
var (list, count) = await _sGenerateRecordRepositories.GetListAsync(dto, loginInfo);
|
||||
var result = ResultPagedList<SGenerateRecordInfoResponse>.ReSuccess(list, count);
|
||||
return result;
|
||||
}
|
||||
/// <summary>
|
||||
/// 序列码列表
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("GetList")]
|
||||
public async Task<ResultPagedList<SerialNumberInfoResponse>> GetPagedList([FromBody] SerialNumberQueryRequest dto)
|
||||
{
|
||||
var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
|
||||
if (loginInfo == null || loginInfo.UserInfo == null)
|
||||
return ResultPagedList<SerialNumberInfoResponse>.ReFailure(ResultCodes.Token_Invalid_Error);
|
||||
|
||||
if (!string.IsNullOrEmpty(dto.NumberCodeBegin)
|
||||
&& (!Regex.Match(dto.NumberCodeBegin, "^[0-9]*$").Success || dto.NumberCodeBegin.Length < 12))
|
||||
return ResultPagedList<SerialNumberInfoResponse>.ReFailure(ResultCodes.NumberCode_Invalid_Error);
|
||||
if (!string.IsNullOrEmpty(dto.NumberCodeEnd)
|
||||
&& (!Regex.Match(dto.NumberCodeEnd, "^[0-9]*$").Success || dto.NumberCodeEnd.Length < 12))
|
||||
return ResultPagedList<SerialNumberInfoResponse>.ReFailure(ResultCodes.NumberCode_Invalid_Error);
|
||||
|
||||
var (list, count) = await _serialNumbersRepositories.GetListAsync(dto, loginInfo);
|
||||
var result = ResultPagedList<SerialNumberInfoResponse>.ReSuccess(list, count);
|
||||
return result;
|
||||
}
|
||||
/// <summary>
|
||||
/// 条码生成记录页面-下载条码
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("ExportAll")]
|
||||
public Task<Result<string>> ExportAll(OperateRequest dto)
|
||||
{
|
||||
var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
|
||||
if (loginInfo == null)
|
||||
return Task.FromResult(Result<string>.ReFailure(ResultCodes.Token_Invalid_Error));
|
||||
|
||||
var entityList = _sGenerateRecordRepositories.GetEntityList(dto.Ids).GetAwaiter().GetResult();
|
||||
if (entityList.Count < 0) return Task.FromResult(Result<string>.ReFailure(ResultCodes.NoDateError));
|
||||
string orgCode = entityList.First().OrgCode;
|
||||
|
||||
//反写下载数据
|
||||
var resSuccess = this.DownLoad(new OperateSerialNumberRequest() { GenerateRecordIds = dto.Ids, IsAll = true }).GetAwaiter().GetResult();
|
||||
if (!resSuccess.IsSuccess) Task.FromResult(Result<string>.ReFailure(resSuccess.Message, resSuccess.Status));
|
||||
|
||||
string fileName = FileDownLoadOrderType.SerialNumbers.GetRemark() + DateTime.Now.DateToStringSecondsNoSpace() + ".xlsx";
|
||||
string res = _option.Url + fileName;
|
||||
|
||||
SerialNumbersExportRequest request = new SerialNumbersExportRequest();
|
||||
request.Ids = dto.Ids;
|
||||
|
||||
Task.Run(async () =>
|
||||
{
|
||||
await _exportExcelService.ExportList<SerialNumbersExportReponse, SerialNumbersExportRequest>(request, fileName, loginInfo.UserInfo.UcId, loginInfo, FileDownLoadOrderType.SerialNumbers, orgCode);
|
||||
});
|
||||
|
||||
return Task.FromResult(Result<string>.ReSuccess(res));
|
||||
}
|
||||
/// <summary>
|
||||
/// 序列码页面-条码下载
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("Export")]
|
||||
public Task<Result<string>> Export([FromBody] SerialNumberQueryRequest dto)
|
||||
{
|
||||
var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
|
||||
if (loginInfo == null)
|
||||
return Task.FromResult(Result<string>.ReFailure(ResultCodes.Token_Invalid_Error));
|
||||
|
||||
var entity = _sGenerateRecordRepositories.GetEntity(dto.GenerateRecordId).GetAwaiter().GetResult();
|
||||
if (entity == null) return Task.FromResult(Result<string>.ReFailure(ResultCodes.NoDateError));
|
||||
string orgCode = entity.OrgCode;
|
||||
|
||||
//反写下载数据
|
||||
Result resSuccess;
|
||||
if (dto.SerialNumbers.Count() > 0)
|
||||
{
|
||||
resSuccess = this.DownLoad(new OperateSerialNumberRequest()
|
||||
{
|
||||
GenerateRecordIds = new List<int>() { dto.GenerateRecordId },
|
||||
IsAll = false,
|
||||
SerialNumbers = dto.SerialNumbers
|
||||
}).GetAwaiter().GetResult();
|
||||
}
|
||||
else
|
||||
{
|
||||
resSuccess = this.DownLoad(new OperateSerialNumberRequest()
|
||||
{
|
||||
GenerateRecordIds = new List<int>() { dto.GenerateRecordId },
|
||||
IsAll = true
|
||||
}).GetAwaiter().GetResult();
|
||||
}
|
||||
if (!resSuccess.IsSuccess) return Task.FromResult(Result<string>.ReFailure(resSuccess.Message, resSuccess.Status));
|
||||
|
||||
string fileName = FileDownLoadOrderType.SerialNumberInfo.GetRemark() + DateTime.Now.DateToStringSecondsNoSpace() + ".xlsx";
|
||||
string res = _option.Url + fileName;
|
||||
|
||||
Task.Run(async () =>
|
||||
{
|
||||
await _exportExcelService.ExportList<SerialNumberInfoResponse, SerialNumberQueryRequest>(dto, fileName, loginInfo.UserInfo.UcId, loginInfo, FileDownLoadOrderType.SerialNumberInfo, orgCode);
|
||||
});
|
||||
|
||||
return Task.FromResult(Result<string>.ReSuccess(res));
|
||||
}
|
||||
/// <summary>
|
||||
/// 生成序列号
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("Generate")]
|
||||
public async Task<Result> Generate(GenerateSerialNumberRequest dto)
|
||||
{
|
||||
var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
|
||||
if (loginInfo == null || loginInfo.UserInfo == null)
|
||||
return Result.ReFailure(ResultCodes.Token_Invalid_Error);
|
||||
return await _serialNumberService.Generate(dto, loginInfo);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 打印
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("Print")]
|
||||
public async Task<Result> Print(OperateSerialNumberRequest dto)
|
||||
{
|
||||
var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
|
||||
if (loginInfo == null || loginInfo.UserInfo == null)
|
||||
return Result.ReFailure(ResultCodes.Token_Invalid_Error);
|
||||
return await _serialNumberService.Print(dto);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 下载(一般后端内部调用)
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("DownLoad")]
|
||||
public async Task<Result> DownLoad(OperateSerialNumberRequest dto)
|
||||
{
|
||||
var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
|
||||
if (loginInfo == null || loginInfo.UserInfo == null)
|
||||
return Result.ReFailure(ResultCodes.Token_Invalid_Error);
|
||||
return await _serialNumberService.DownLoad(dto);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取序列号信息
|
||||
/// </summary>
|
||||
/// <param name="boxId">箱Id</param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("GetByBoxId")]
|
||||
public async Task<ResultPagedList<SerialNumbersResponse>> GetByBoxId(SerialNumberByBoxIdQueryRequest dto)
|
||||
{
|
||||
var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
|
||||
if (loginInfo == null || loginInfo.UserInfo == null)
|
||||
return ResultPagedList<SerialNumbersResponse>.ReFailure(ResultCodes.Token_Invalid_Error);
|
||||
if (dto.BoxId == 0)
|
||||
return ResultPagedList<SerialNumbersResponse>.ReFailure(ResultCodes.NoDateError);
|
||||
|
||||
var (list, count) = await _serialNumbersRepositories.GetEntityListByBoxId(dto);
|
||||
var result = ResultPagedList<SerialNumbersResponse>.ReSuccess(list, count);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
///// <summary>
|
||||
///// 获取序列号信息
|
||||
///// </summary>
|
||||
///// <param name="serialNumber">序列号</param>
|
||||
///// <param name="orgCode">组织或供应商编码</param>
|
||||
///// <returns></returns>
|
||||
//[HttpGet]
|
||||
//[Route("Get")]
|
||||
//public async Task<ResultList<SerialNumbersResponse>> Get([FromQuery] string serialNumber, [FromQuery] string orgCode)
|
||||
//{
|
||||
// var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
|
||||
// if (loginInfo == null || loginInfo.UserInfo == null)
|
||||
// return ResultList<SerialNumbersResponse>.ReFailure(ResultCodes.Token_Invalid_Error);
|
||||
// if (string.IsNullOrEmpty(orgCode))
|
||||
// return ResultList<SerialNumbersResponse>.ReFailure(ResultCodes.NoOrgError);
|
||||
|
||||
// var res = await _serialNumbersRepositories.GetEntityList(serialNumber, orgCode, loginInfo);
|
||||
// // var res = await _serialNumbersRepositories.GetEntityList(serialNumber, orgCode, loginInfo);
|
||||
// if (res == null) return ResultList<SerialNumbersResponse>.ReFailure(ResultCodes.SerialNumberNoData);
|
||||
|
||||
// // return ResultList<SerialNumbersResponse>.ReSuccess(res);
|
||||
// return ResultList<SerialNumbersResponse>.ReSuccess(res.ToList());
|
||||
//}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取序列号信息
|
||||
/// </summary>
|
||||
/// <param name="serialNumber">序列号</param>
|
||||
/// <param name="orgCode">组织或供应商编码</param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("Get")]
|
||||
public async Task<Result<SerialNumbersResponse>> Get([FromQuery] string serialNumber, [FromQuery] string orgCode)
|
||||
{
|
||||
var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
|
||||
if (loginInfo == null || loginInfo.UserInfo == null)
|
||||
return Result<SerialNumbersResponse>.ReFailure(ResultCodes.Token_Invalid_Error);
|
||||
if (string.IsNullOrEmpty(orgCode))
|
||||
return Result<SerialNumbersResponse>.ReFailure(ResultCodes.NoOrgError);
|
||||
|
||||
var res = await _serialNumbersRepositories.GetEntity(serialNumber, orgCode, loginInfo);
|
||||
// var res = await _serialNumbersRepositories.GetEntityList(serialNumber, orgCode, loginInfo);
|
||||
if (res == null) return Result<SerialNumbersResponse>.ReFailure(ResultCodes.SerialNumberNoData);
|
||||
|
||||
// return ResultList<SerialNumbersResponse>.ReSuccess(res);
|
||||
return Result<SerialNumbersResponse>.ReSuccess(res);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 修改序列码物料
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("UpdateMaterial")]
|
||||
public async Task<Result> UpdateMaterial(UpdateMaterialRequest dto)
|
||||
{
|
||||
var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
|
||||
if (loginInfo == null || loginInfo.UserInfo == null)
|
||||
return Result.ReFailure(ResultCodes.Token_Invalid_Error);
|
||||
return await _serialNumberService.UpdateMaterial(dto);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user