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); } } }