151 lines
5.9 KiB
C#
151 lines
5.9 KiB
C#
using AutoMapper;
|
|
using BarCode.Web.Domain.Infrastructure;
|
|
using BarCode.Web.Domain.IService.Public;
|
|
using BarCode.Web.Domain.IService;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using BarCode.Web.Core.Dto.Box;
|
|
using BarCode.Web.Core.Internal.Results;
|
|
using BarCode.Web.Domain.Values;
|
|
using System.Text.RegularExpressions;
|
|
using NPOI.SS.Formula.Functions;
|
|
using System.Collections.Generic;
|
|
using Newtonsoft.Json;
|
|
using BarCode.Web.Core.Dto.SerialNumbers;
|
|
using BarCode.Web.Domain.Services.Public;
|
|
using BarCode.Web.Domain.Values.Single;
|
|
using System.ComponentModel.Design;
|
|
|
|
namespace BarCode.Web.Api.Controllers
|
|
{
|
|
[Route("api/[controller]")]
|
|
[ApiController]
|
|
public class WmsBoxController : ControllerBase
|
|
{
|
|
private readonly IBoxRepositories _boxRepositories;
|
|
private readonly IMapper _mapper;
|
|
private readonly ILoginService _loginService;
|
|
private readonly IBoxService _boxService;
|
|
private readonly ILogger<WmsBoxController> _logger;
|
|
private readonly ISerialNumbersRepositories _serialNumbersRepositories;
|
|
private readonly ISingleDataService _singleDataService;
|
|
public WmsBoxController(IMapper mapper, ILoginService loginService, IBoxRepositories boxRepositories,
|
|
IBoxService boxService, ILogger<WmsBoxController> logger,
|
|
ISerialNumbersRepositories serialNumbersRepositories, ISingleDataService singleDataService)
|
|
{
|
|
_boxRepositories = boxRepositories;
|
|
_mapper = mapper;
|
|
_loginService = loginService;
|
|
_boxService = boxService;
|
|
_logger = logger;
|
|
_serialNumbersRepositories = serialNumbersRepositories;
|
|
_singleDataService = singleDataService;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Wms获取箱信息-列表
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[Route("GetList")]
|
|
public async Task<OpsReponse> GetList(WmsBoxRequest dto)
|
|
{
|
|
_logger.LogInformation($"请求消息:{JsonConvert.SerializeObject(dto)}");
|
|
List<WmsBoxResponse> list = new List<WmsBoxResponse>();
|
|
int count = 0;
|
|
try
|
|
{
|
|
(list, count) = await _boxService.GetCartonListAsync(dto);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogError($"wms系统获取箱信息异常:{ex.Message}");
|
|
return new OpsReponse()
|
|
{
|
|
succeeded = false
|
|
};
|
|
}
|
|
OpsInfo info = new OpsInfo()
|
|
{
|
|
date = JsonConvert.SerializeObject(list)
|
|
};
|
|
OpsReponse reponse = new OpsReponse()
|
|
{
|
|
succeeded = true,
|
|
data = info
|
|
};
|
|
return reponse;
|
|
}
|
|
/// <summary>
|
|
/// Wms获取序列号信息
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[Route("GetSerialNumber")]
|
|
public async Task<Result<SerialNumbersWmsResponse>> GetSerialNumber(SerialNumbersWmsRequest dto)
|
|
{
|
|
_logger.LogInformation($"wms获取序列码:{JsonConvert.SerializeObject(dto)}");
|
|
|
|
var entity = await _serialNumbersRepositories.GetEntityWms(dto.SerialNumber);
|
|
if (entity == null) return Result<SerialNumbersWmsResponse>.ReFailure(ResultCodes.SerialNumberNoData);
|
|
if (entity.BoxId > 0)
|
|
return Result<SerialNumbersWmsResponse>.ReFailure(ResultCodes.SerialNumberBindBox);
|
|
if (entity.IsUse == true)
|
|
return Result<SerialNumbersWmsResponse>.ReFailure(ResultCodes.SerialNumberIsUse);
|
|
var response = new SerialNumbersWmsResponse()
|
|
{
|
|
SerialNumber = entity.SerialNumber.Equals(dto.SerialNumber) ? entity.SerialNumber : entity.NumberCode,
|
|
MaterialNumber = entity.MaterialNumber,
|
|
CreateTime = entity.CreateTime,
|
|
Creator = _singleDataService.GetSingleData(SingleAction.Users, 1, entity.CreatorId)
|
|
};
|
|
//把查询到的序列码修改成使用
|
|
entity.WmsGet(dto.SerialNumber);
|
|
var list = new List<Domain.Entitys.SerialNumbers>();
|
|
list.Add(entity);
|
|
var res = await _serialNumbersRepositories.EditEntityList(list);
|
|
if (!res) return Result<SerialNumbersWmsResponse>.ReFailure(ResultCodes.DateWriteError);
|
|
|
|
_logger.LogInformation($"wms获取序列码返回序列码信息:{JsonConvert.SerializeObject(response)}");
|
|
|
|
return Result<SerialNumbersWmsResponse>.ReSuccess(response);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取序列号信息
|
|
/// </summary>
|
|
/// <param name="serialNumber">序列号</param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[Route("Get/{serialNumber}")]
|
|
public async Task<Result<SerialNumbersExternalResponse>> Get([FromRoute] string serialNumber)
|
|
{
|
|
if (string.IsNullOrEmpty(serialNumber))
|
|
return Result<SerialNumbersExternalResponse>.ReFailure(ResultCodes.SerialNumbersNoData);
|
|
|
|
var serial = await _serialNumbersRepositories.GetExternal(serialNumber);
|
|
if (serial == null) return Result<SerialNumbersExternalResponse>.ReFailure(ResultCodes.SerialNumbersNoData);
|
|
return Result<SerialNumbersExternalResponse>.ReSuccess(serial);
|
|
}
|
|
}
|
|
|
|
public class OpsInfo
|
|
{
|
|
public int code { get; set; }
|
|
public string message { get; set; }
|
|
public string date { get; set; }
|
|
public string token { get; set; }
|
|
}
|
|
public class OpsReponse
|
|
{
|
|
public int statusCode { get; set; }
|
|
public bool succeeded { get; set; }
|
|
public string errors { get; set; }
|
|
public string extras { get; set; }
|
|
|
|
public OpsInfo data { get; set; }
|
|
}
|
|
}
|