admin
3 天以前 f3bdc703bebd49d6149c5fd053cd8f57d50efc44
Wms/Wms/Controllers/BllQualityController.cs
@@ -1,14 +1,20 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Security.Claims;
using Microsoft.Extensions.Options;
using Model.ModelVm;
using Model.ModelVm.BllQualityVm;
using System;
using System.Collections.Generic;
using System.Drawing.Printing;
using System.IO;
using System.Linq;
using System.Security.Claims;
using System.Threading.Tasks;
using Wms.Tools;
using WMS.Entity.BllQualityEntity;
using WMS.IBLL.IBllQualityServer;
using Model.ModelVm.BllQualityVm;
using Model.ModelVm;
using Wms.Tools;
using Microsoft.Extensions.Options;
namespace Wms.Controllers
{
@@ -26,7 +32,7 @@
        /// 构造函数
        /// </summary>
        /// <param name="qualityServer">质检信息</param>
        public BllQualityController(IQualityInspectServer qualityServer,IInspectionRequest inspectionRequestServer, IOptions<ApiUrlConfig> setting)
        public BllQualityController(IQualityInspectServer qualityServer, IInspectionRequest inspectionRequestServer, IOptions<ApiUrlConfig> setting)
        {
            _qualityServer = qualityServer;
            _inspectionRequestServer = inspectionRequestServer;
@@ -49,6 +55,28 @@
                var bolls = _qualityServer.GetBllQualityList(model);
                return Ok(new { code = 0, msg = "质检信息", data = bolls });
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
        }
        /// <summary>
        /// 获取需要质检的批次号
        /// </summary>
        /// <param name="pageIndex">页码</param>
        /// <param name="pageSize">页大小</param>
        /// <returns></returns>
        [HttpGet]
        public IActionResult GetInspectLotNoList(int pageIndex, int pageSize)
        {
            try
            {
                var data = _qualityServer.GetInspectLotNoList(pageIndex, pageSize);
                return Ok(new { code = 0, msg = "需要质检的批次号", data = data });
            }
            catch (Exception e)
            {
@@ -99,7 +127,7 @@
        /// <param name="model">查询条件</param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult GetInspectionRequest(BllQualityInspectionRequestVm model)
        public IActionResult GetInspectionRequest(BllQualityInspectionRequestVm model)
        {
            try
            {
@@ -119,7 +147,7 @@
        /// <param name="model">查询条件</param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult GetSamplingDetails(BllSamplingDetailsVm model)
        public IActionResult GetSamplingDetails(BllSamplingDetailsVm model)
        {
            try
            {
@@ -139,7 +167,7 @@
        /// <param name="model">主键ID</param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult DelSamplingDetails(IdVm model)
        public IActionResult DelSamplingDetails(IdVm model)
        {
            try
            {
@@ -156,7 +184,7 @@
                var models = _inspectionRequestServer.DelSamplingDetails(model, int.Parse(userId));
                return Ok(new { code = 0, count=0, msg = "删除取样记录成功", data = models });
                return Ok(new { code = 0, count = 0, msg = "删除取样记录成功", data = models });
            }
            catch (Exception e)
            {
@@ -164,13 +192,8 @@
            }
        }
        /// <summary>
        /// 发送请验单据
        /// </summary>
        /// <param name="model">主键ID</param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult SendInspectionRequest(IdVm model)
        public IActionResult upLoadRequest(IdVm model)
        {
            try
            {
@@ -186,16 +209,16 @@
                }
                var userName = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier)?.Value;
                string url = _config.WcsHost + _config.IssueComApiUrl;
                var models = _inspectionRequestServer.SendInspectionRequest(model, int.Parse(userId),url,userName);
                return Ok(new { code = 0, count=0, msg = "向Limes请验成功!", data = models });
                return Ok(new { code = 0, count = 0, msg = "上传图片成功!" });
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
        }
        /// <summary>
        /// 删除请验单信息
@@ -220,7 +243,7 @@
                var models = _inspectionRequestServer.DelInspectionRequest(model, int.Parse(userId));
                return Ok(new { code = 0, count=0, msg = "删除请验单信息成功", data = models });
                return Ok(new { code = 0, count = 0, msg = "删除请验单信息成功", data = models });
            }
            catch (Exception e)
            {
@@ -244,7 +267,7 @@
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
                if (string.IsNullOrWhiteSpace(userId))
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
@@ -253,13 +276,13 @@
                string url = _config.WcsHost + _config.IssueComApiUrl;
                var models = _inspectionRequestServer.OutWhInspectionRequest(model, int.Parse(userId), url);
                return Ok(new { code = 0, count=0, msg = "取样出库操作成功!", data = models });
                return Ok(new { code = 0, count = 0, msg = "取样出库操作成功!", data = models });
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
        }
        }
        /// <summary>
        /// 完成请验单据
@@ -283,7 +306,7 @@
                }
                string url = _config.WcsHost + _config.IssueComApiUrl;
                var models = _inspectionRequestServer.ClossInspectionRequest(model, int.Parse(userId),url);
                var models = _inspectionRequestServer.ClossInspectionRequest(model, int.Parse(userId), url);
                return Ok(new { code = 0, msg = "完成请验单", data = models });
            }
@@ -292,6 +315,137 @@
                return Ok(new { code = 1, msg = e.Message });
            }
        }
        /// <summary>
        ///  图片上传
        /// </summary>
        /// <param name="file"></param>
        /// <param name="qualityId"></param>
        /// <returns></returns>
        [HttpPost]
        public async Task<IActionResult> UploadImage([FromForm] IFormFile file, [FromForm] int qualityId)
        {
            try
            {
                var claimsIdentity = this.User.Identity as ClaimsIdentity;
                var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
                if (file == null || file.Length == 0)
                    return BadRequest(new { code = 1, msg = "请选择上传文件" });
                // 验证文件类型
                var allowedExtensions = new[] { ".jpg", ".jpeg", ".png", ".gif" };
                var fileExtension = Path.GetExtension(file.FileName).ToLower();
                if (!allowedExtensions.Contains(fileExtension))
                    return BadRequest(new { code = 2, msg = "只允许上传图片文件" });
                // 限制文件大小 (5MB)
                if (file.Length > 5 * 1024 * 1024)
                    return BadRequest(new { code = 3, msg = "文件大小不能超过5MB" });
                // 创建质量相关的图片目录
                var uploadPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwRoot", "uploads", "quality", qualityId.ToString());
                if (!Directory.Exists(uploadPath))
                    Directory.CreateDirectory(uploadPath);
                // 生成唯一文件名
                var fileName = $"{DateTime.Now:yyyyMMddHHmmss}_{userId}{fileExtension}";
                var filePath = Path.Combine(uploadPath, fileName);
                // 保存文件
                using (var stream = new FileStream(filePath, FileMode.Create))
                {
                    await file.CopyToAsync(stream);
                }
                // 返回文件访问路径
                var fileUrl = $"/wwwRoot/uploads/quality/{qualityId}/{fileName}";
                // 这里可以添加数据库记录等操作
                // _qualityService.AddImageRecord(qualityId, userId, fileUrl, fileName);
                return Ok(new
                {
                    code = 0,
                    msg = "上传成功",
                    data = new
                    {
                        url = fileUrl,
                        fileName = fileName
                    }
                });
            }
            catch (Exception ex)
            {
                return StatusCode(500, new { code = 500, msg = $"上传失败: {ex.Message}" });
            }
        }
        /// <summary>
        /// 图片获取
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult GetImage(BllQualityInspect model)
        {
            try
            {
                var fullPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwRoot", "uploads", "quality", model.Id.ToString());
                if (!Directory.Exists(fullPath))
                {
                    return StatusCode(1, new { code = 1, msg = "图片不存在" });
                }
                var files = Directory.GetFiles(fullPath);
                if (files.Length <= 0)
                    return StatusCode(1, new { code = 1, msg = "图片不存在" });
                List<string> images = new List<string>();
                foreach (var file in files)
                {
                    images.Add($"{Request.Scheme}://{Request.Host}/uploads/quality/{model.Id.ToString()}/{Path.GetFileName(file)}");
                }
                return Ok(new
                {
                    code = 0,
                    msg = "图片" + files.Length + "张",
                    data = images
                });
            }
            catch (Exception ex)
            {
                return StatusCode(500, new { code = 500, msg = $"获取图片失败: {ex.Message}" });
            }
        }
        /// <summary>
        /// 删除图片
        /// </summary>
        /// <param name="data">图片信息</param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult DeleteImage(QualityImageVM data)
        {
            try
            {
                string fileName = Path.GetFileName(data.ImageUrl);
                var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwRoot", "uploads", "quality", data.QualityId.ToString(), fileName);
                if (System.IO.File.Exists(filePath))
                {
                    System.IO.File.Delete(filePath);
                    return Ok(new { code = 0, msg = "删除成功" });
                }
                else
                {
                    return Ok(new { code = 1, msg = "图片不存在" });
                }
            }
            catch (Exception ex)
            {
                return Ok(new { code = 1, msg = ex.Message });
            }
        }
        #endregion
    }
}