wanshenmean
2026-03-11 5af11cc200dd5ebe474b9c0475883b0e6d1e3759
Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDAController.cs
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.IO;
using WIDESEA_Core;
using WIDESEA_Core.BaseController;
using WIDESEA_Core.Helper;
@@ -8,14 +9,12 @@
using WIDESEA_IInboundService;
using WIDESEA_IOutboundService;
using WIDESEA_ITaskInfoService;
using System.IO;
using WIDESEA_Model.Models;
using System;
namespace WIDESEA_WMSServer.Controllers
{
    /// <summary>
    /// PDA
    /// PDA 控制器 - 提供PDA应用下载、上传和版本检查功能
    /// </summary>
    [Route("api/PDA")]
    [Authorize, ApiController]
@@ -25,6 +24,9 @@
        private readonly IOutboundService _outboundService;
        private readonly ITaskService _taskService;
        /// <summary>
        /// 构造函数
        /// </summary>
        public PDAController(ITaskService taskService, IInboundService inboundService, IOutboundService outboundService)
        {
            _inboundService = inboundService;
@@ -33,37 +35,30 @@
        }
        /// <summary>
        /// 下载PDA
        /// 下载PDA应用安装包
        /// </summary>
        /// <returns></returns>
        /// <returns>APK文件或错误信息</returns>
        [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";
            const string appDirectory = "Upload/App/";
            const string appFileName = "WMS-PDA.apk";
            string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, appDirectory, appFileName);
            if (System.IO.File.Exists(path))
            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($"未找到安装包"));
                return Json(WebResponseContent.Instance.Error("未找到安装包"));
            }
            byte[] fileBytes = System.IO.File.ReadAllBytes(path);
            return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, appFileName);
        }
        /// <summary>
        /// 上传PDA
        /// 上传PDA应用安装包
        /// </summary>
        /// <param name="fileInput"></param>
        /// <returns></returns>
        /// <param name="fileInput">上传的文件</param>
        /// <returns>上传结果</returns>
        [HttpPost, HttpGet, Route("UploadApp"), AllowAnonymous]
        [Consumes("multipart/form-data")]
        public WebResponseContent UploadApp(IEnumerable<IFormFile> fileInput)
@@ -71,43 +66,72 @@
            try
            {
                List<IFormFile> 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);
                if (files == null || files.Count == 0)
                {
                    return new WebResponseContent { Status = false, Message = "请选择上传的文件" };
                }
                using (var stream = new FileStream(dicPath, FileMode.Create))
                IFormFile formFile = files[0];
                const string appDirectory = "Upload/App/";
                const string appFileName = "WMS-PDA.apk";
                string directoryPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, appDirectory);
                if (!Directory.Exists(directoryPath))
                {
                    Directory.CreateDirectory(directoryPath);
                }
                string backupPath = Path.Combine(directoryPath, $"WMS-PDA{DateTime.Now:yyyyMMddhhmmss}.apk");
                string targetPath = Path.Combine(directoryPath, appFileName);
                // 备份现有文件
                if (System.IO.File.Exists(targetPath))
                {
                    System.IO.File.Move(targetPath, backupPath);
                }
                // 保存新文件
                using (var stream = new FileStream(targetPath, FileMode.Create))
                {
                    formFile.CopyTo(stream);
                }
                return new WebResponseContent { Status = true, Message = "文件上传成功" };
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error(ex.Message);
                return WebResponseContent.Instance.Error($"文件上传失败:{ex.Message}");
            }
        }
        /// <summary>
        /// 获取PDA版本号并检查是否需要更新
        /// </summary>
        /// <param name="version">当前PDA版本号</param>
        /// <returns>是否需要更新的标志</returns>
        [HttpPost, HttpGet, Route("GetPDAVersion"), AllowAnonymous]
        public WebResponseContent GetPDAVersion(string version)
        {
            try
            {
                string versionP = AppSettings.Get("PDAVersion");
                if (Convert.ToInt32(versionP) > Convert.ToInt32(version))
                    return WebResponseContent.Instance.OK(data: true);
                else return WebResponseContent.Instance.OK(data: false);
                if (string.IsNullOrEmpty(version))
                {
                    return WebResponseContent.Instance.Error("版本号不能为空");
                }
                string serverVersion = AppSettings.Get("PDAVersion");
                if (int.TryParse(serverVersion, out int serverVersionNum) && int.TryParse(version, out int clientVersionNum))
                {
                    bool needUpdate = serverVersionNum > clientVersionNum;
                    return WebResponseContent.Instance.OK(data: needUpdate);
                }
                return WebResponseContent.Instance.Error("版本号格式错误");
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error(ex.Message);
                return WebResponseContent.Instance.Error($"版本检查失败:{ex.Message}");
            }
        }
    }
}