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 response = new SerialNumbersWmsResponse(); var list = new List(); 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); if (entity.IsTwo > 1) { //把查询到的序列码修改成使用 string[] s = entity.TwoSerialNumber.Split(','); string[] y = entity.TwoNumberCode.Split(','); bool isNumberCode = false; if (entity.TwoNumberCode.IndexOf(dto.SerialNumber, 0) >= 0) { isNumberCode = true;//说明是此次查的为数字序列号 } if (isNumberCode) { for (int i = 0; i < s.Length; i++) { response = new SerialNumbersWmsResponse() { SerialNumber = y[i],//entity.SerialNumber.Equals(dto.SerialNumber) ? s[i] : sy[i], // SerialNumber= entity.SerialNumber.Equals(dto.SerialNumber) ? entity.SerialNumber : entity.NumberCode, MaterialNumber = entity.MaterialNumber, CreateTime = entity.CreateTime, Creator = _singleDataService.GetSingleData(SingleAction.Users, 1, entity.CreatorId), IsTwo = entity.IsTwo, TwoSerialNumber = entity.TwoSerialNumber, TwoNumberCode = entity.TwoNumberCode, IsNotCount = entity.IsNotCount }; var entity2 = await _serialNumbersRepositories.GetEntityWms(y[i]); entity2.WmsGet(s[i]); list.Add(entity2); } } else { // string[] sy = entity.TwoNumberCode.Split(','); for (int i = 0; i < s.Length; i++) { response = new SerialNumbersWmsResponse() { SerialNumber = s[i],//entity.SerialNumber.Equals(dto.SerialNumber) ? s[i] : sy[i], // SerialNumber= entity.SerialNumber.Equals(dto.SerialNumber) ? entity.SerialNumber : entity.NumberCode, MaterialNumber = entity.MaterialNumber, CreateTime = entity.CreateTime, Creator = _singleDataService.GetSingleData(SingleAction.Users, 1, entity.CreatorId), IsTwo = entity.IsTwo, TwoSerialNumber = entity.TwoSerialNumber, TwoNumberCode = entity.TwoNumberCode, IsNotCount = entity.IsNotCount }; var entity2 = await _serialNumbersRepositories.GetEntityWms(s[i]); entity2.WmsGet(s[i]); list.Add(entity2); } } } else { response = new SerialNumbersWmsResponse() { SerialNumber = entity.SerialNumber.Equals(dto.SerialNumber) ? entity.SerialNumber : entity.NumberCode, // SerialNumber = entity.SerialNumber.Equals(dto.SerialNumber) ? entity.SerialNumber : entity.NumberCode, MaterialNumber = entity.MaterialNumber, CreateTime = entity.CreateTime, Creator = _singleDataService.GetSingleData(SingleAction.Users, 1, entity.CreatorId), IsTwo = entity.IsTwo, TwoSerialNumber = entity.TwoSerialNumber, TwoNumberCode = entity.TwoNumberCode, IsNotCount = entity.IsNotCount }; entity.WmsGet(dto.SerialNumber); 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); //_logger.LogInformation($"wms获取序列码:{JsonConvert.SerializeObject(dto)}"); //var entity = await _serialNumbersRepositories.GetEntityWms(dto.SerialNumber); //if (entity.IsTwo > 1)//说明是两件装 //{ //} //else //{ // var list = new List(); // var response = new SerialNumbersWmsResponse(); // 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); // 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), // IsTwo = entity.IsTwo, // TwoSerialNumber = entity.TwoSerialNumber, // TwoNumberCode = entity.TwoNumberCode, // IsNotCount = entity.IsNotCount // }; // entity.WmsGet(entityList.SerialNumber); //} //// var entityList = await _serialNumbersRepositories.GetEntityWmsBySuitNumber(dto.SerialNumber); //var list = new List(); //var response = new SerialNumbersWmsResponse(); //for (int i = 0; i < entityList.Count; i++) //{ // var entity = entityList[i]; // 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); // 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), // IsTwo = entity.IsTwo, // TwoSerialNumber = entity.TwoSerialNumber, // TwoNumberCode = entity.TwoNumberCode, // IsNotCount = entity.IsNotCount // }; // //把查询到的序列码修改成使用 // //if(entity.IsTwo>1)//说明是两件装 // //{ // // string[] s = entity.TwoSerialNumber.Split(','); // // for (int i = 0; i < s.Length; i++) // // { // // entity.WmsGet(s[i]); // // } // //} // //else // //{ // entity.WmsGet(entityList[i].SerialNumber); // //} // 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); } ///// ///// 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); // //以前是之前的 // var entity = await _serialNumbersRepositories.GetEntityListBySuitNumber(dto.SerialNumber); // if (entity == null) return Result>.ReFailure(ResultCodes.SerialNumberNoData); // var response2 = new List(); // for (int i = 0; i < entity.Count; i++) // { // if (entity[i].BoxId > 0) // return Result< List>.ReFailure(ResultCodes.SerialNumberBindBox); // if (entity[i].IsUse == true) // return Result< List>.ReFailure(ResultCodes.SerialNumberIsUse); // SerialNumbersWmsResponse response = new SerialNumbersWmsResponse() // { // // SerialNumber = entity[i].SerialNumber.Equals(dto.SerialNumber) ? entity[i].SerialNumber : entity[i].NumberCode, // SerialNumber = entity[i].SerialNumber, // MaterialNumber = entity[i].MaterialNumber, // CreateTime = entity[i].CreateTime, // Creator = _singleDataService.GetSingleData(SingleAction.Users, 1, entity[i].CreatorId), // IsTwo=entity[i].IsTwo, // TwoSerialNumber=entity[i].TwoSerialNumber, // TwoNumberCode= entity[i].TwoNumberCode, // IsNotCount = entity[i].IsNotCount // }; // response2.Add(response); // //把查询到的序列码修改成使用 // entity[i].WmsGet(dto.SerialNumber); // var list = new List(); // list.Add(entity[i]); // var res = await _serialNumbersRepositories.EditEntityList(list); // if (!res) return Result< List>.ReFailure(ResultCodes.DateWriteError); // _logger.LogInformation($"wms获取序列码返回序列码信息:{JsonConvert.SerializeObject(response)}"); // } // return Result>.ReSuccess(response2); //} /// /// 获取序列号信息 /// /// 序列号 /// [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; } } }