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 _logger; private readonly ISerialNumbersRepositories _serialNumbersRepositories; private readonly ISingleDataService _singleDataService; public WmsBoxController(IMapper mapper, ILoginService loginService, IBoxRepositories boxRepositories, IBoxService boxService, ILogger logger, ISerialNumbersRepositories serialNumbersRepositories, ISingleDataService singleDataService) { _boxRepositories = boxRepositories; _mapper = mapper; _loginService = loginService; _boxService = boxService; _logger = logger; _serialNumbersRepositories = serialNumbersRepositories; _singleDataService = singleDataService; } /// /// Wms获取箱信息-列表 /// /// /// [HttpPost] [Route("GetList")] public async Task GetList(WmsBoxRequest dto) { _logger.LogInformation($"请求消息:{JsonConvert.SerializeObject(dto)}"); List list = new List(); 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; } /// /// Wms获取序列号信息 /// /// /// [HttpPost] [Route("GetSerialNumber")] public async Task> GetSerialNumber(SerialNumbersWmsRequest dto) { _logger.LogInformation($"wms获取序列码:{JsonConvert.SerializeObject(dto)}"); var entity = await _serialNumbersRepositories.GetEntityWms(dto.SerialNumber); if (entity == null) return Result.ReFailure(ResultCodes.SerialNumberNoData); if (entity.BoxId > 0) return Result.ReFailure(ResultCodes.SerialNumberBindBox); if (entity.IsUse == true) return Result.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(); list.Add(entity); var res = await _serialNumbersRepositories.EditEntityList(list); if (!res) return Result.ReFailure(ResultCodes.DateWriteError); _logger.LogInformation($"wms获取序列码返回序列码信息:{JsonConvert.SerializeObject(response)}"); return Result.ReSuccess(response); } /// /// 获取序列号信息 /// /// 序列号 /// [HttpGet] [Route("Get/{serialNumber}")] public async Task> Get([FromRoute] string serialNumber) { if (string.IsNullOrEmpty(serialNumber)) return Result.ReFailure(ResultCodes.SerialNumbersNoData); var serial = await _serialNumbersRepositories.GetExternal(serialNumber); if (serial == null) return Result.ReFailure(ResultCodes.SerialNumbersNoData); return Result.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; } } }