using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using WIDESEA_Core;
using WIDESEA_Core.BaseController;
using WIDESEA_Core.Helper;
using WIDESEA_DTO.Inbound;
using WIDESEA_IInboundService;
using WIDESEA_IOutboundService;
using WIDESEA_ITaskInfoService;
using WIDESEA_Model.Models;
namespace WIDESEA_WMSServer.Controllers
{
[Route("api/PDA")]
[Authorize, ApiController]
public class PDAController : Controller
{
private readonly IInboundService _inboundService;
private readonly IOutboundService _outboundService;
private readonly ITaskService _taskService;
public PDAController(ITaskService taskService, IInboundService inboundService, IOutboundService outboundService)
{
_inboundService = inboundService;
_outboundService = outboundService;
_taskService = taskService;
}
///
/// 下载PDA
///
///
[HttpPost, HttpGet, Route("DownLoadApp"), AllowAnonymous]
public virtual ActionResult DownLoadApp()
{
string path = $"{AppDomain.CurrentDomain.BaseDirectory}Upload/App/";
if (!Directory.Exists(path)) Directory.CreateDirectory(path);
path += "WMS-PDA.apk";
if (System.IO.File.Exists(path))
{
byte[] fileBytes = System.IO.File.ReadAllBytes(path);
return File(
fileBytes,
System.Net.Mime.MediaTypeNames.Application.Octet,
System.IO.Path.GetFileName(path)
);
}
else
{
return Json(WebResponseContent.Instance.Error($"未找到安装包"));
}
}
///
/// 上传PDA
///
///
///
[HttpPost, HttpGet, Route("UploadApp"), AllowAnonymous]
[Consumes("multipart/form-data")]
public WebResponseContent UploadApp(IEnumerable fileInput)
{
try
{
List files = fileInput.ToList();
if (files == null || files.Count() == 0)
return new WebResponseContent { Status = true, Message = "请选择上传的文件" };
IFormFile formFile = files[0];
string dicPath = $"{AppDomain.CurrentDomain.BaseDirectory}Upload/App/";
if (!Directory.Exists(dicPath)) Directory.CreateDirectory(dicPath);
string path = $"{dicPath}WMS-PDA{DateTime.Now:yyyyMMddhhmmss}.apk";
dicPath = $"{dicPath}WMS-PDA.apk";
if (System.IO.File.Exists(dicPath))
System.IO.File.Move(dicPath, path);
using (var stream = new FileStream(dicPath, FileMode.Create))
{
formFile.CopyTo(stream);
}
return new WebResponseContent { Status = true, Message = "文件上传成功" };
}
catch (Exception ex)
{
return WebResponseContent.Instance.Error(ex.Message);
}
}
///
/// PDA版本
///
///
///
[HttpPost, HttpGet, Route("GetPDAVersion"), AllowAnonymous]
public WebResponseContent GetPDAVersion(string version)
{
try
{
string PDAVersion = AppSettings.Configuration[nameof(PDAVersion)];
if (Convert.ToInt32(PDAVersion) > Convert.ToInt32(version))
return WebResponseContent.Instance.OK(data: true);
else return WebResponseContent.Instance.OK(data: false);
}
catch (Exception ex)
{
return WebResponseContent.Instance.Error(ex.Message);
}
}
[HttpPost, Route("CallMateriel")]
public WebResponseContent CallMateriel(string endPoint)
{
return _taskService.CallMateriel(endPoint);
}
[HttpPost, Route("MaterielCarry")]
public WebResponseContent MaterielCarry(string startPoint)
{
return _taskService.MaterielCarry(startPoint);
}
[HttpPost, Route("MaterielGroup")]
public WebResponseContent MaterielGroup([FromBody] MaterielGroupDTO materielGroupDTO)
{
return _inboundService.InbounOrderService.MaterielGroup(materielGroupDTO);
}
[HttpPost, Route("PdaAddStockInfo")]
public WebResponseContent PdaAddStockInfo([FromBody] PdaMaterielGroupDTO materielGroupDTO)
{
return _inboundService.InbounOrderService.PdaAddStockInfo(materielGroupDTO);
}
///
/// 修改托盘号
///
///
///
[HttpPost, Route("ModifyBarcode")]
public WebResponseContent ModifyBarcode(string barcode,string newBarcode)
{
return _taskService.ModifyBarcode(barcode,newBarcode);
}
///
/// 空托入库
///
///
///
[HttpPost, Route("InEmpty")]
public WebResponseContent InEmpty(string barcode,string station)
{
return _inboundService.InbounOrderService.PdaAddEmptyStockInfo(barcode,station);
}
///
/// 空托出库
///
///
///
[HttpPost, Route("OutEmpty")]
public WebResponseContent OutEmpty()
{
return _outboundService.OutboundOrderService.PdaOutEmpty();
}
[HttpPost, Route("QueryOrderInfo")]
public WebResponseContent QueryOrderInfo(int pageNo, string orderNo)
{
return _inboundService.InbounOrderService.QueryOrderInfo(pageNo, orderNo);
}
}
}