Browse Source

修改 装配操作中实物图片的存储方式

SunYaLong 1 year ago
parent
commit
c3680ea665

+ 27 - 8
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/Controllers/OutStore/OutAssembleRecordController.cs

@@ -19,6 +19,8 @@ using Aliyun.OSS;
 using ZR.Model.Dto.InStore;
 using ZR.Model.Models.InStore;
 using NLog;
+using ZR.Model.System;
+using ZR.Service.System.IService;
 
 namespace ZR.Admin.WebApi.Controllers.OutStore
 {
@@ -40,14 +42,20 @@ namespace ZR.Admin.WebApi.Controllers.OutStore
         private readonly IOutAssembleRecordService _OutAssembleRecordService;
         private readonly IStkBalanceDtlService _StkBalanceDtlService;
         private readonly ISapBomRecordService _SapBomRecordService;
+        private readonly ISysFileService FileService;
+        private IWebHostEnvironment _HostEnvironment;
 
         public OutAssembleRecordController(IOutAssembleRecordService OutAssembleRecordService,
                                             IStkBalanceDtlService StkBalanceDtlService,
-                                            ISapBomRecordService SapBomRecordService)
+                                            ISapBomRecordService SapBomRecordService,
+                                            ISysFileService sysFileService,
+                                            IWebHostEnvironment hostEnvironment)
         {
             _OutAssembleRecordService = OutAssembleRecordService;
             _StkBalanceDtlService = StkBalanceDtlService;
             _SapBomRecordService = SapBomRecordService;
+            FileService = sysFileService;
+            _HostEnvironment = hostEnvironment;
         }
 
         /// <summary>
@@ -61,7 +69,7 @@ namespace ZR.Admin.WebApi.Controllers.OutStore
         {
             bool isPDA = false;
             ClientInfo clientInfo = HttpContext.GetClientInfo();
-            if (clientInfo.OS.ToString().Contains("Android 10"))
+            if (clientInfo.OS.ToString().Contains("Android 10") || clientInfo.OS.ToString().Contains("Android 9"))
             {
                 isPDA = true;
             }
@@ -181,13 +189,19 @@ namespace ZR.Admin.WebApi.Controllers.OutStore
         }
 
         #region 2023 0524 孙亚龙 新增
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="assembleDataDto"></param>
+        /// <returns></returns>
+        /// <exception cref="CustomException"></exception>
         [HttpPost("AddOutAssembleRecordForFile")]
         [ActionPermissionFilter(Permission = "AddOutAssembleRecordForFile")]
-        public IActionResult AddOutAssembleRecordForFile([FromForm] SapBomRecordAssembleExtDto assembleDataDto)
+        public async Task<IActionResult> AddOutAssembleRecordForFile([FromForm] SapBomRecordAssembleExtDto assembleDataDto)
         {
             IFormFile? formFile;
             ClientInfo clientInfo = HttpContext.GetClientInfo();
-            if (clientInfo.OS.ToString().Contains("Android 10"))
+            if (clientInfo.OS.ToString().Contains("Android 10") || clientInfo.OS.ToString().Contains("Android 9"))
             {
                 var file11 = HttpContext.Request.Form.Files[0];
                 formFile = file11;
@@ -207,10 +221,15 @@ namespace ZR.Admin.WebApi.Controllers.OutStore
                 sapBomRecordMd.Result = 99;
             }
             OutAssembleRecord assembleRecordMd = assembleDataDto.Adapt<OutAssembleRecord>();
-            using var stream = formFile.OpenReadStream();
-            BinaryReader br = new(stream);
-            byte[] byData = br.ReadBytes((int)stream.Length);
-            assembleRecordMd.Picture = byData;
+            // 把图片转换为二进制数据
+            //using var stream = formFile.OpenReadStream();
+            //BinaryReader br = new(stream);
+            //byte[] byData = br.ReadBytes((int)stream.Length);
+
+            // 20240131 孙亚龙修改  装配的实物图片直接存储在服务器固定路径的文件夹里,不再使用数据库存储。
+            SysFile file = await FileService.SaveFileToLocal(_HostEnvironment.WebRootPath, $"{assembleDataDto.MaterialSpec}__{assembleDataDto.BnSnCode}", "OutAssemblePicture", HttpContext.GetName(), formFile);
+            assembleRecordMd.FileId = file.Id;
+            assembleRecordMd.Picture = file.AccessUrl;
             assembleRecordMd.BnSnCode = assembleDataDto.BnSnCode;
             assembleRecordMd.AssembleQty = assembleDataDto.AssembleNum;
             assembleRecordMd.CreateBy = HttpContext.GetName();

+ 16 - 0
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/DataProtection/key-84e8cc37-bdc0-4bf3-9af0-d17d8a05ec52.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<key id="84e8cc37-bdc0-4bf3-9af0-d17d8a05ec52" version="1">
+  <creationDate>2023-10-10T06:47:16.929258Z</creationDate>
+  <activationDate>2023-10-10T06:47:16.8424043Z</activationDate>
+  <expirationDate>2024-01-08T06:47:16.8424043Z</expirationDate>
+  <descriptor deserializerType="Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.AuthenticatedEncryptorDescriptorDeserializer, Microsoft.AspNetCore.DataProtection, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60">
+    <descriptor>
+      <encryption algorithm="AES_256_CBC" />
+      <validation algorithm="HMACSHA256" />
+      <masterKey p4:requiresEncryption="true" xmlns:p4="http://schemas.asp.net/2015/03/dataProtection">
+        <!-- Warning: the key below is in an unencrypted form. -->
+        <value>EwH7f6mSs1hT0mTy/w/S+W1+UTX5Kc2D2kKvWJINyMWrPs0dNvYym/+crtePNc4g/lprcMWxMRWoBJFW1vq/Tw==</value>
+      </masterKey>
+    </descriptor>
+  </descriptor>
+</key>

+ 6 - 1
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/ZRModel.xml

@@ -992,9 +992,14 @@
             装配数量 
             </summary>
         </member>
+        <member name="P:ZR.Model.Models.OutStore.OutAssembleRecord.FileId">
+            <summary>
+            实物图片地址
+            </summary>
+        </member>
         <member name="P:ZR.Model.Models.OutStore.OutAssembleRecord.Picture">
             <summary>
-            实物图片 
+            实物图片地址
             </summary>
         </member>
         <member name="P:ZR.Model.Models.OutStore.OutAssembleRecord.Result">

+ 1 - 1
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/appsettings.json

@@ -12,7 +12,7 @@
     //"conn_db": "Data Source=192.168.0.1;port=3306;User ID=sa;Password=123456;Database=mytest_db;CharSet=utf8;sslmode=none;",
     "conn_db_type": "0" //数据库类型 MySql = 0, SqlServer = 1, Oracle = 3
   },
-  "urls": "http://localhost:8888;http://192.168.137.1:8888", //项目启动url,如果改动端口前端对应devServer也需要进行修改
+  "urls": "http://localhost:8888;http://192.168.137.1:8888", // 项目启动url,如果改动端口前端对应devServer也需要进行修改 ;http://192.168.137.1:8888
   "corsUrls": "http://localhost:8887", //跨域地址(前端启动项目,前后端分离单独部署需要设置),多个用","隔开
   "JwtSettings": {
     "Issuer": "ZRAdmin.NET",

BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/OutAssemblePicture/20240131/BME22-01010-13__20240131_0001.jpg


BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/OutAssemblePicture/20240131/BME22-01010-13__BME22-01010-13.jpg


+ 1 - 1
ZrAdminNetCore-net7.0/ZR.Model/Dto/BaseSet/BasRegionDto.cs

@@ -24,7 +24,7 @@ namespace ZR.Model.Dto.BaseSet
     public class BasRegionDto
     {
         [Required(ErrorMessage = "库区Id 系统主键不能为空")]
-        [JsonConverter(typeof(ValueToStringConverter))]
+        //[JsonConverter(typeof(ValueToStringConverter))]
         public long RegionId { get; set; }
 
         [Required(ErrorMessage = "库区编码不能为空")]

+ 8 - 3
ZrAdminNetCore-net7.0/ZR.Model/Models/OutStore/OutAssembleRecord.cs

@@ -17,7 +17,7 @@ namespace ZR.Model.Models.OutStore
         /// 装配记录Id 
         /// </summary>
         [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
-        public int AssembleId { get; set; }
+        public long AssembleId { get; set; }
 
         /// <summary>
         /// 生产令号 
@@ -55,9 +55,14 @@ namespace ZR.Model.Models.OutStore
         public int AssembleQty { get; set; }
 
         /// <summary>
-        /// 实物图片 
+        /// 实物图片地址
         /// </summary>
-        public byte[] Picture { get; set; }
+        public long FileId { get; set; }
+
+        /// <summary>
+        /// 实物图片地址
+        /// </summary>
+        public string Picture { get; set; }
 
         /// <summary>
         /// 装配结果