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 System.IO; using WIDESEA_Model.Models; using System; using Newtonsoft.Json; 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; } [HttpPost, Route("CallMateriel"), AllowAnonymous] public WebResponseContent CallMateriel([FromBody] string endPoint) { return _taskService.CallMateriel(endPoint); } [HttpPost, Route("MaterielCarry"), AllowAnonymous] public WebResponseContent MaterielCarry([FromBody] string startPoint) { return _taskService.MaterielCarry(startPoint); } [HttpPost, Route("QueryOrderInfo")] public WebResponseContent QueryOrderInfo(int pageNo, string orderNo) { return _inboundService.InbounOrderService.QueryOrderInfo(pageNo, orderNo); } [HttpPost, HttpGet, Route("UploadApp"), AllowAnonymous] public async Task UploadApk(IEnumerable fileInput) { // 检查是否有文件上传 if (fileInput == null || !fileInput.Any()) { return WebResponseContent.Instance.Error("文件未上传"); } var formFile = fileInput.First(); var uploadFolder = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "Upload"); Directory.CreateDirectory(uploadFolder); var fileName = $"WMS-PDA.apk"; var filePath = Path.Combine(uploadFolder, fileName); using (var stream = new FileStream(filePath, FileMode.Create)) { await formFile.CopyToAsync(stream); } return WebResponseContent.Instance.OK("文件上传成功"); ; } [HttpPost, HttpGet, Route("GetPDAVersion"), AllowAnonymous] public WebResponseContent GetPDAVersion(string version) { try { string versionPDA = AppSettings.Configuration["PDAVersion"]; if (Convert.ToInt32(versionPDA) > 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, HttpGet, Route("DownLoadApp"), AllowAnonymous] public virtual ActionResult DownLoadApp() { var filename = "WMS-PDA.apk"; var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/Upload", filename); var memory = new MemoryStream(); using (var stream = new FileStream(filePath, FileMode.Open)) { stream.CopyTo(memory); } memory.Position = 0; var ext = Path.GetExtension(filePath).ToLowerInvariant(); return File(memory, new Dictionary{{ ".apk", "application/vnd.android.package-archive" }}[ext], Path.GetFileName(filePath)); } /// /// 空托入库 /// /// 托盘号 /// [HttpPost, Route("EmptyInBound"), AllowAnonymous] public WebResponseContent EmptyInBound(string PalletCode) { return _taskService.PalletInboundRequest("R01-001-023-001",PalletCode); } /// /// 空托出库 /// /// 托盘号 /// 托盘类型,1,小托盘 2,大托盘 /// [HttpGet, Route("EmptyOutBound"), AllowAnonymous] public WebResponseContent EmptyOutBound(string trayType) { return _taskService.PalletOutboundTask("R01", "R01-001-023-001",trayType); } /// /// 组盘 /// /// /// [HttpPost, Route("MaterielGroup"), AllowAnonymous] public WebResponseContent MaterielGroup([FromBody] SaveModel saveModel) { string PalletCode = saveModel.MainData["PalletCode"].ToString(); string ReceviveSN = saveModel.MainData["SerialNumbers"].ToString(); List OldSerialNumbers = JsonConvert.DeserializeObject>(ReceviveSN); List SerialNumbers = new List(); foreach (var number in OldSerialNumbers) { if (number.Contains("S:")) { List nums = number.Split(';').ToList(); foreach (var item in nums) { if(item.Contains("S:")) { string SerialNumber = item.Replace("S:", ""); if (!string.IsNullOrEmpty(SerialNumber)) { SerialNumbers.Add(SerialNumber); } } } } else { SerialNumbers.Add(number); } } MaterielGroupDTO materielGroupDTO = new MaterielGroupDTO(); materielGroupDTO.SerialNumbers = SerialNumbers; materielGroupDTO.OrderNo = ""; materielGroupDTO.PalletCode = PalletCode; return _inboundService.InbounOrderService.MaterielGroup(materielGroupDTO); } /// /// 原料入库确认 /// /// 托盘号 /// [HttpGet, Route("MaterielInBoundConfirm"), AllowAnonymous] public WebResponseContent MaterielInBoundConfirm(string palletCode) { return _taskService.InboundRequest("R01-001-023-001", palletCode); } /// /// 组盘撤销 /// /// 托盘号 /// [HttpGet, Route("MaterielGroupRevoke"), AllowAnonymous] public WebResponseContent MaterielGroupRevoke(string PalletCode) { return _inboundService.InbounOrderService.MaterielGroupRevoke(PalletCode); } /// /// 余料回退入库确认 /// /// 托盘号 /// [HttpGet, Route("MaterielInBoundReturnConfirm"), AllowAnonymous] public WebResponseContent MaterielInBoundReturnConfirm( string PalletCode) { return _taskService.ReturnInboundRequest("R01-001-023-001", PalletCode); } } }