5648a24be5fa8b8981c399c09a5d5a306bae1d5e..c8a9ab01f01ffdf522a5f174d684aff7722a9679
2025-07-17 xwt
来料检获取附件信息
c8a9ab 对比 | 目录
2025-07-17 xwt
来料检获取附件信息
ff9829 对比 | 目录
已修改5个文件
已添加3个文件
228 ■■■■■ 文件已修改
StandardInterface/MES.Service/Dto/service/RKJDaa001.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/Modes/MesQamftp.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/Modes/QamftpDto.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/service/QC/LljService.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/service/QC/RKJService.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MESApplication/Controllers/AttachmentController.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MESApplication/Controllers/QC/LljController.cs 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MESApplication/appsettings.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/Dto/service/RKJDaa001.cs
@@ -13,7 +13,8 @@
    public decimal? ItemInId { get; set; }
    // ä»»åŠ¡å•å·
    [SugarColumn(ColumnName = "ITEM_NO")] public string? ItemNo { get; set; }
    [SugarColumn(ColumnName = "ITEM_NO")]
    public string? ItemNo { get; set; }
    [SugarColumn(ColumnName = "ITEM_NAME")]
    public string? ItemName { get; set; }
@@ -21,4 +22,17 @@
    // è®¢å•数量
    [SugarColumn(ColumnName = "QUANTITY")]
    public decimal? Quantity { get; set; }
    //产线编码
    [SugarColumn(ColumnName = "DAA015")]
    public string? Daa015 { get; set; }
    //产线编码
    [SugarColumn(ColumnName = "DAA015")]
    public string? Daa020 { get; set; }
    //申请单号
    [SugarColumn(ColumnName = "BILL_NO")]
    public string? billNo { get; set; }
}
StandardInterface/MES.Service/Modes/MesQamftp.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
using System;
using SqlSugar;
namespace MES.Service.Modes
{
    [SugarTable("MES_QAMFTP")]
    public class MesQamftp
    {
        [SugarColumn(ColumnName = "ID")]
        public decimal Id { get; set; }
        [SugarColumn(ColumnName = "ITEM_NO")]
        public string ItemNo { get; set; }
        [SugarColumn(ColumnName = "FTYPE")]
        public string Ftype { get; set; }
        [SugarColumn(ColumnName = "FATTACH")]
        public string Fattach { get; set; }
        [SugarColumn(ColumnName = "FVERSION")]
        public string Fversion { get; set; }
        [SugarColumn(ColumnName = "FDATE")]
        public string Fdate { get; set; }
        [SugarColumn(ColumnName = "CREATE_BY")]
        public string CreateBy { get; set; }
        [SugarColumn(ColumnName = "CREATE_DATE")]
        public string CreateDate { get; set; }
        [SugarColumn(ColumnName = "COMPANY")]
        public string Company { get; set; }
        [SugarColumn(ColumnName = "FACTORY")]
        public string Factory { get; set; }
        [SugarColumn(ColumnName = "RELEASE_NO")]
        public string ReleaseNo { get; set; }
        [SugarColumn(ColumnName = "F_TYPE")]
        public int? F_type { get; set; }
        [SugarColumn(ColumnName = "LASTUPDATE_BY")]
        public string LastupdateBy { get; set; }
        [SugarColumn(ColumnName = "LASTUPDATE_DATE")]
        public DateTime? LastupdateDate { get; set; }
        [SugarColumn(ColumnName = "ITEM_ID")]
        public decimal? ItemId { get; set; }
    }
}
StandardInterface/MES.Service/Modes/QamftpDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
using System;
namespace MES.Service.Modes
{
    public class QamftpDto
    {
        public decimal Id { get; set; }
        public string ItemNo { get; set; }
        public string Ftype { get; set; }
        public string Fattach { get; set; }
        public string Fversion { get; set; }
        public string Fdate { get; set; }
        public string CreateBy { get; set; }
        public string CreateDate { get; set; }
        public string Company { get; set; }
        public string Factory { get; set; }
        public string ReleaseNo { get; set; }
        public int? F_type { get; set; }
        public string LastupdateBy { get; set; }
        public DateTime? LastupdateDate { get; set; }
        public decimal? ItemId { get; set; }
    }
}
StandardInterface/MES.Service/service/QC/LljService.cs
@@ -311,6 +311,31 @@
        return input.Substring(startIndex + 1, length);
    }
    public List<QamftpDto> GetAttachments(string releaseNo)
    {
        var db = SqlSugarHelper.GetInstance();
        return db.Queryable<MesQamftp>()
            .Where(x => x.ReleaseNo == releaseNo)
            .OrderBy(x => x.Fdate, OrderByType.Desc)
            .Select(x => new QamftpDto
            {
                Id = x.Id,
                ItemNo = x.ItemNo,
                Ftype = x.Ftype,
                Fattach = x.Fattach,
                Fversion = x.Fversion,
                Fdate = x.Fdate,
                CreateBy = x.CreateBy,
                CreateDate = x.CreateDate,
                Company = x.Company,
                Factory = x.Factory,
                ReleaseNo = x.ReleaseNo,
                F_type = x.F_type,
                LastupdateBy = x.LastupdateBy,
                LastupdateDate = x.LastupdateDate,
                ItemId = x.ItemId
            }).ToList();
    }
    public int saveItem(LLJDto rkjDto)
    {
        var items = rkjDto.items;
StandardInterface/MES.Service/service/QC/RKJService.cs
@@ -50,14 +50,14 @@
    //获取工单号
    public List<RkDaa002> GetDaa001s(string lineNo)
    public List<RKJDaa001> GetDaa001s(string lineNo)
    {
        var db = SqlSugarHelper.GetInstance();
        // return db.Queryable<RKJDaa001>()
        //     .Where(t => t.LineNo == lineNo)
        //     .OrderBy(t => t.BillNo, OrderByType.Desc)
        //     .ToList();
        return null;
        return db.Queryable<RKJDaa001>()
            .Where(t => t.Daa020 == lineNo)
            .OrderBy(t => t.ItemInId, OrderByType.Desc)
            .ToList();
        //return null;
    }
    //根据检验标准来计算检验个数
StandardInterface/MESApplication/Controllers/AttachmentController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
using Microsoft.AspNetCore.Mvc;
using System.IO;
namespace MESApplication.Controllers
{
    [ApiController]
    [Route("Attachment")]
    public class AttachmentController : ControllerBase
    {
        // æ ¹ç›®å½•
        private readonly string ftpRootPath = @"D:\MES_FTP\IQC";
        [HttpGet("Download")]
        public IActionResult Download([FromQuery] string itemNo, [FromQuery] string fileName)
        {
            if (string.IsNullOrWhiteSpace(itemNo) || string.IsNullOrWhiteSpace(fileName))
                return BadRequest("物料编码和文件名不能为空");
            // é˜²æ­¢è·¯å¾„穿越攻击
            var safeItemNo = Path.GetFileName(itemNo.Trim());
            var safeFileName = Path.GetFileName(fileName.Trim());
            var filePath = Path.Combine(ftpRootPath, safeItemNo, safeFileName);
            if (!System.IO.File.Exists(filePath))
                return NotFound("文件不存在");
            var contentType = "application/octet-stream";
            return PhysicalFile(filePath, contentType, safeFileName);
        }
    }
}
StandardInterface/MESApplication/Controllers/QC/LljController.cs
@@ -316,4 +316,68 @@
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("getAttachments")]
    public ResponseResult GetAttachments([FromBody] JObject data)
    {
        var releaseNo = data["releaseNo"]?.ToString();
        try
        {
            dynamic resultInfos = new System.Dynamic.ExpandoObject();
            var tbBillList = new LljService().GetAttachments(releaseNo);
            if (tbBillList == null || tbBillList.Count == 0)
            {
                return new ResponseResult
                {
                    status = 1,
                    message = "该检验单未上传附件信息!",
                    data = null
                };
            }
            resultInfos.tbBillList = tbBillList;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpGet("DownloadFtpFile")]
    public IActionResult DownloadFtpFile([FromQuery] string itemNo, [FromQuery] string fileName)
    {
        // FTP服务器信息(请替换为实际信息)
        string ftpServer = "ftp://36.26.21.214";
        string ftpUser = "hm_ftp";
        string ftpPwd = "dell_123"; // å·²æ›´æ–°ä¸ºçœŸå®žå¯†ç 
        string ftpPath = $"{ftpServer}/IQC/{itemNo}/{fileName}";
        try
        {
            var request = (System.Net.FtpWebRequest)System.Net.WebRequest.Create(ftpPath);
            request.Method = System.Net.WebRequestMethods.Ftp.DownloadFile;
            request.Credentials = new System.Net.NetworkCredential(ftpUser, ftpPwd);
            request.UseBinary = true;
            request.UsePassive = true;
            using (var response = (System.Net.FtpWebResponse)request.GetResponse())
            using (var ftpStream = response.GetResponseStream())
            using (var ms = new System.IO.MemoryStream())
            {
                ftpStream.CopyTo(ms);
                ms.Position = 0;
                string contentType = "application/octet-stream";
                // é˜²å¾¡æ€§å¤„理,去除fileName中的回车换行和空格
                fileName = fileName?.Trim().Replace("\r", "").Replace("\n", "");
                return File(ms.ToArray(), contentType, fileName);
            }
        }
        catch (Exception ex)
        {
            return BadRequest($"FTP下载失败:{ex.Message},ftpPath={ftpPath},fileName={fileName}");
        }
    }
}
StandardInterface/MESApplication/appsettings.json
@@ -10,6 +10,6 @@
  "AppSettings": {
    "TestErpUrl": "http://192.168.11.120:8098/WebService1.asmx/mesToErpinfo",
    "ProductionErpUrl": "http://192.168.11.120:8098/WebService1.asmx/mesToErpinfoFormal",
    "DataBaseConn": "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.22)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME = ORCL))); Persist Security Info=True;User ID = hm_prd; Password=hmprd"
    "DataBaseConn": "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.22)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME = ORCL))); Persist Security Info=True;User ID = test_dev; Password=hmprd"
  }
}