Files
BarCode-Api/src/BarCode.Web.Api/Controllers/WmsBoxController.cs

371 lines
17 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 response = new SerialNumbersWmsResponse();
var list = new List<Domain.Entitys.SerialNumbers>();
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);
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,
TwoSerialNumber = entity.TwoNumberCode,
TwoNumberCode = entity.TwoNumberCode,
IsNotCount = entity.IsNotCount,
NumberCode=entity.NumberCode
};
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,
NumberCode = entity.NumberCode
};
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,
NumberCode = entity.NumberCode
};
entity.WmsGet(dto.SerialNumber);
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);
//_logger.LogInformation($"wms获取序列码:{JsonConvert.SerializeObject(dto)}");
//var entity = await _serialNumbersRepositories.GetEntityWms(dto.SerialNumber);
//if (entity.IsTwo > 1)//说明是两件装
//{
//}
//else
//{
// var list = new List<Domain.Entitys.SerialNumbers>();
// var response = new SerialNumbersWmsResponse();
// 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);
// 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<Domain.Entitys.SerialNumbers>();
//var response = new SerialNumbersWmsResponse();
//for (int i = 0; i < entityList.Count; i++)
//{
// var entity = entityList[i];
// 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);
// 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<SerialNumbersWmsResponse>.ReFailure(ResultCodes.DateWriteError);
// _logger.LogInformation($"wms获取序列码返回序列码信息:{JsonConvert.SerializeObject(response)}");
//return Result<SerialNumbersWmsResponse>.ReSuccess(response);
}
///// <summary>
///// Wms获取序列号信息
///// </summary>
///// <param name="dto"></param>
///// <returns></returns>
//[HttpPost]
//[Route("GetSerialNumber")]
//public async Task<Result<List<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);
// //以前是之前的
// var entity = await _serialNumbersRepositories.GetEntityListBySuitNumber(dto.SerialNumber);
// if (entity == null) return Result<List<SerialNumbersWmsResponse>>.ReFailure(ResultCodes.SerialNumberNoData);
// var response2 = new List<SerialNumbersWmsResponse>();
// for (int i = 0; i < entity.Count; i++)
// {
// if (entity[i].BoxId > 0)
// return Result< List<SerialNumbersWmsResponse>>.ReFailure(ResultCodes.SerialNumberBindBox);
// if (entity[i].IsUse == true)
// return Result< List<SerialNumbersWmsResponse>>.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<Domain.Entitys.SerialNumbers>();
// list.Add(entity[i]);
// var res = await _serialNumbersRepositories.EditEntityList(list);
// if (!res) return Result< List<SerialNumbersWmsResponse>>.ReFailure(ResultCodes.DateWriteError);
// _logger.LogInformation($"wms获取序列码返回序列码信息:{JsonConvert.SerializeObject(response)}");
// }
// return Result<List<SerialNumbersWmsResponse>>.ReSuccess(response2);
//}
/// <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; }
}
}