From 553f3c9b01cd40792595b98096ec9c4639b19287 Mon Sep 17 00:00:00 2001 From: 18923810322 <1666941798@qq.com> Date: Fri, 16 May 2025 14:51:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/SerialNumberController.cs | 18 +++- src/BarCode.Web.Api/appsettings.json | 2 +- .../wwwroot/BarCode.Web.Api.xml | 7 ++ .../wwwroot/BarCode.Web.Domain.xml | 39 +++++++- .../Entitys/SerialNumbers.cs | 14 ++- .../IService/ISerialNumberService.cs | 7 ++ .../ISGenerateRecordRepositories.cs | 2 +- .../ISerialNumbersRepositories.cs | 14 +++ .../Services/SerialNumberService.cs | 89 ++++++++++++++++++- .../SGenerateRecordRepositories.cs | 18 +++- .../SerialNumbersRepositories.cs | 17 ++++ 11 files changed, 215 insertions(+), 12 deletions(-) diff --git a/src/BarCode.Web.Api/Controllers/SerialNumberController.cs b/src/BarCode.Web.Api/Controllers/SerialNumberController.cs index e003ac8..394f7da 100644 --- a/src/BarCode.Web.Api/Controllers/SerialNumberController.cs +++ b/src/BarCode.Web.Api/Controllers/SerialNumberController.cs @@ -105,7 +105,7 @@ namespace BarCode.Web.Api.Controllers if (loginInfo == null) return Task.FromResult(Result.ReFailure(ResultCodes.Token_Invalid_Error)); - var entityList = _sGenerateRecordRepositories.GetEntityList(dto.Ids).GetAwaiter().GetResult(); + var entityList = _sGenerateRecordRepositories.GetEntityList(dto.Ids, "").GetAwaiter().GetResult(); if (entityList.Count < 0) return Task.FromResult(Result.ReFailure(ResultCodes.NoDateError)); string orgCode = entityList.First().OrgCode; @@ -220,6 +220,22 @@ namespace BarCode.Web.Api.Controllers } + /// + /// 下载(一般后端内部调用) + /// + /// + /// + [HttpPost] + [Route("UpdateSn")] + public async Task UpdateSn(OperateSerialNumberRequest dto) + { + var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); + if (loginInfo == null || loginInfo.UserInfo == null) + return Result.ReFailure(ResultCodes.Token_Invalid_Error); + return await _serialNumberService.UpdateSn(dto); + } + + /// /// 获取序列号信息 /// diff --git a/src/BarCode.Web.Api/appsettings.json b/src/BarCode.Web.Api/appsettings.json index 0a82c14..a86d550 100644 --- a/src/BarCode.Web.Api/appsettings.json +++ b/src/BarCode.Web.Api/appsettings.json @@ -10,7 +10,7 @@ "AllowedCores": "localhost,http://localhost:8080,http://192.168.1.188:8080",//跨域 "AppOptions": { "DBConnectionString": "Server=rm-wz9215skklas0287pwo.mysql.rds.aliyuncs.com; Database=test_barcode_db;User Id=orico_erp;password=Orico2023;port=3306;CharSet=gb2312;Connect Timeout=150;", //数据库连接地址 - "RedisConnectionString": "47.106.232.90:6379,password=orico.2020,DefaultDatabase=7", //redis连接地址 + "RedisConnectionString": "47.106.232.90:6379,password=orico.2020,DefaultDatabase=7", //redis连接地址test_barcode_db "RedisIpRateLimitingConnectionString": "47.110.156.96:16379,password=123456,DefaultDatabase=3", //redis连接地址 "SingleBaseUrl": "http://127.0.0.1:8066/api", //单点服务连接地址 "DBType": "Mysql", //数据库类型 diff --git a/src/BarCode.Web.Api/wwwroot/BarCode.Web.Api.xml b/src/BarCode.Web.Api/wwwroot/BarCode.Web.Api.xml index 7dcd7a8..71fd92d 100644 --- a/src/BarCode.Web.Api/wwwroot/BarCode.Web.Api.xml +++ b/src/BarCode.Web.Api/wwwroot/BarCode.Web.Api.xml @@ -316,6 +316,13 @@ + + + 下载(一般后端内部调用) + + + + 获取序列号信息 diff --git a/src/BarCode.Web.Api/wwwroot/BarCode.Web.Domain.xml b/src/BarCode.Web.Api/wwwroot/BarCode.Web.Domain.xml index 45a0b9c..e51bde0 100644 --- a/src/BarCode.Web.Api/wwwroot/BarCode.Web.Domain.xml +++ b/src/BarCode.Web.Api/wwwroot/BarCode.Web.Domain.xml @@ -883,6 +883,12 @@ + + + 设置thisNumber + + + 产生第二个序列号 @@ -1350,6 +1356,22 @@ + + + 得到两件装 + + + + + + + + 得到数字两件装 + + + + + 批量添加 @@ -1361,7 +1383,7 @@ 修改实体集合 - + 查询实体集合 @@ -1553,6 +1575,13 @@ + + + 更新错的序列号(内部使用) + + + + 装箱后反写使用数 @@ -3391,6 +3420,14 @@ + + + 更新错的Sn + + + + + 打印 diff --git a/src/BarCode.Web.Domain/Entitys/SerialNumbers.cs b/src/BarCode.Web.Domain/Entitys/SerialNumbers.cs index c24306a..a9fc37f 100644 --- a/src/BarCode.Web.Domain/Entitys/SerialNumbers.cs +++ b/src/BarCode.Web.Domain/Entitys/SerialNumbers.cs @@ -56,7 +56,7 @@ namespace BarCode.Web.Domain.Entitys ///当次序号,用来记录当次所产生时所处的序列号 /// [Column("thisNumber")] - public int thisNumber { get; set; } = 1; + public int? thisNumber { get; set; } = 1; /// /// 序列号 @@ -210,6 +210,18 @@ namespace BarCode.Web.Domain.Entitys this.SuitNumber = sn; } + + /// + /// 设置thisNumber + /// + /// + + public void SetThisNumber(int sn) + { + this.thisNumber = sn; + + } + /// /// 产生第二个序列号 /// diff --git a/src/BarCode.Web.Domain/IService/ISerialNumberService.cs b/src/BarCode.Web.Domain/IService/ISerialNumberService.cs index 170b40c..f0a7e86 100644 --- a/src/BarCode.Web.Domain/IService/ISerialNumberService.cs +++ b/src/BarCode.Web.Domain/IService/ISerialNumberService.cs @@ -34,6 +34,13 @@ namespace BarCode.Web.Domain.IService /// /// Task DownLoad(OperateSerialNumberRequest dto); + /// + /// 更新错的序列号(内部使用) + /// + /// + /// + Task UpdateSn(OperateSerialNumberRequest dto); + /// /// 装箱后反写使用数 /// diff --git a/src/BarCode.Web.Domain/Infrastructure/ISGenerateRecordRepositories.cs b/src/BarCode.Web.Domain/Infrastructure/ISGenerateRecordRepositories.cs index 5fb4e19..eb34e43 100644 --- a/src/BarCode.Web.Domain/Infrastructure/ISGenerateRecordRepositories.cs +++ b/src/BarCode.Web.Domain/Infrastructure/ISGenerateRecordRepositories.cs @@ -27,7 +27,7 @@ namespace BarCode.Web.Domain.Infrastructure /// 修改实体集合 Task EditEntityList(List entitys, bool isTransaction = true); /// 查询实体集合 - Task> GetEntityList(List ids); + Task> GetEntityList(List ids,string strUpdate); /// 查询实体 Task GetEntity(int id); } diff --git a/src/BarCode.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs b/src/BarCode.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs index 295ec68..f73440d 100644 --- a/src/BarCode.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs +++ b/src/BarCode.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs @@ -62,5 +62,19 @@ namespace BarCode.Web.Domain.Infrastructure /// /// Task GetExternal(string serialNumber); + /// + /// 得到两件装 + /// + /// + /// + /// + public string GetTwoSerialNumber(List entitys, string SuitNumber); + /// + /// 得到数字两件装 + /// + /// + /// + /// + public string GetTwoNumberCode(List entitys, string SuitNumber); } } diff --git a/src/BarCode.Web.Domain/Services/SerialNumberService.cs b/src/BarCode.Web.Domain/Services/SerialNumberService.cs index ddbc339..fc1e61a 100644 --- a/src/BarCode.Web.Domain/Services/SerialNumberService.cs +++ b/src/BarCode.Web.Domain/Services/SerialNumberService.cs @@ -10,11 +10,14 @@ using BarCode.Web.Domain.IService.Public; using BarCode.Web.Domain.Services.Public; using BarCode.Web.Domain.Values; using BarCode.Web.Domain.Values.Single; +using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Storage; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using NPOI.HPSF; +using NPOI.OpenXmlFormats.Wordprocessing; +using Org.BouncyCastle.Crypto; using System; using System.Collections; using System.Collections.Generic; @@ -280,7 +283,7 @@ namespace BarCode.Web.Domain.Services public async Task DownLoad(OperateSerialNumberRequest dto) { //取出所有的生成记录 - var generateRecords = await _sGenerateRecordRepositories.GetEntityList(dto.GenerateRecordIds); + var generateRecords = await _sGenerateRecordRepositories.GetEntityList(dto.GenerateRecordIds,"0"); if (generateRecords.Count() != dto.GenerateRecordIds.Count()) return Result.ReFailure(ResultCodes.NoDateError); var snGRList = await _serialNumbersRepositories.GetEntityListByGRIds(dto.GenerateRecordIds); @@ -315,6 +318,86 @@ namespace BarCode.Web.Domain.Services if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); return Result.ReSuccess(); } + + + /// + /// 更新错的Sn + /// + /// + /// + /// + public async Task UpdateSn(OperateSerialNumberRequest dto) + { + //取出所有的生成记录 + var generateRecords = await _sGenerateRecordRepositories.GetEntityList(dto.GenerateRecordIds,"1"); + List olist = new List(); + bool res_Rollback = false; + + for (int i=0;i< generateRecords.Count;i++) + { + List s = []; + string newSuitNumber = ""; + string oldSuitNumber = ""; + + int ids = generateRecords[i].Id; + s.Add(ids); + olist = await _serialNumbersRepositories.GetEntityListByGRIds(s); + //修改序列号下载数 + int m=0; + foreach (var item in olist) + { + m++; + //自动生成序列码 + string sn = item.SerialNumber; + + if (m % 2 == 0) + { + newSuitNumber = oldSuitNumber; + } + else + { + oldSuitNumber = sn; + newSuitNumber = sn; + } + + item.GenerateSuitNumber(newSuitNumber); + // item.GenerateTwoSerialNumber(newSuitNumber); + item.SetThisNumber(m); + item.IsTwo = 2; + } + foreach (var item in olist) + { + + string ss = _serialNumbersRepositories.GetTwoSerialNumber(olist, item.SuitNumber); + item.GenerateTwoSerialNumber(ss); + + + string sNumberCode = _serialNumbersRepositories.GetTwoNumberCode(olist, item.SuitNumber); + item.GenerateTwoNumberCode(sNumberCode); + } + + IDbContextTransaction _transaction = _transactionRepositories.GetTransaction(); + + var isSuccess = await _serialNumbersRepositories.EditEntityList(olist, false); + if (!isSuccess) res_Rollback = true; + + generateRecords[i].IsTwo = 2; + + + isSuccess = _transactionRepositories.CommitTransaction(res_Rollback, _transaction); + if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); + //return Result.ReSuccess(); + } + if (!res_Rollback) + { + var res = await _sGenerateRecordRepositories.EditEntityList(generateRecords, false); + if (!res) res_Rollback = true; + } + return Result.ReSuccess(); + } + + + /// /// 打印 /// @@ -324,7 +407,7 @@ namespace BarCode.Web.Domain.Services public async Task Print(OperateSerialNumberRequest dto) { //取出所有的生成记录 - var generateRecords = await _sGenerateRecordRepositories.GetEntityList(dto.GenerateRecordIds); + var generateRecords = await _sGenerateRecordRepositories.GetEntityList(dto.GenerateRecordIds,""); if (generateRecords.Count() != dto.GenerateRecordIds.Count()) return Result.ReFailure(ResultCodes.NoDateError); var snGRList = await _serialNumbersRepositories.GetEntityListByGRIds(dto.GenerateRecordIds); @@ -366,7 +449,7 @@ namespace BarCode.Web.Domain.Services /// public async Task Use(List sGIds) { - var sGList = await _sGenerateRecordRepositories.GetEntityList(sGIds); + var sGList = await _sGenerateRecordRepositories.GetEntityList(sGIds,""); var sGSNumberList = await _serialNumbersRepositories.GetEntityListByGRIds(sGIds); foreach (var sg in sGList) diff --git a/src/BarCode.Web.Repositories/SGenerateRecordRepositories.cs b/src/BarCode.Web.Repositories/SGenerateRecordRepositories.cs index 84a417d..200f76b 100644 --- a/src/BarCode.Web.Repositories/SGenerateRecordRepositories.cs +++ b/src/BarCode.Web.Repositories/SGenerateRecordRepositories.cs @@ -161,13 +161,23 @@ namespace BarCode.Web.Repositories /// 获取集合 /// /// + /// 更新而使用的 /// /// - public async Task> GetEntityList(List ids) + public async Task> GetEntityList(List ids,string strUpdate) { - return await _context.SerialNumberGenerateRecord.AsNoTracking() - .Where(f => ids.Contains(f.Id)) - .ToListAsync(); + if(strUpdate=="1") + { + return await _context.SerialNumberGenerateRecord.AsNoTracking() + .Where(f => f.IsTwo==3) + .ToListAsync(); + } + else + { + return await _context.SerialNumberGenerateRecord.AsNoTracking() + .Where(f => ids.Contains(f.Id)) + .ToListAsync(); + } } /// diff --git a/src/BarCode.Web.Repositories/SerialNumbersRepositories.cs b/src/BarCode.Web.Repositories/SerialNumbersRepositories.cs index 99ff90d..0ce227f 100644 --- a/src/BarCode.Web.Repositories/SerialNumbersRepositories.cs +++ b/src/BarCode.Web.Repositories/SerialNumbersRepositories.cs @@ -16,6 +16,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Storage; using Microsoft.Extensions.Logging; using Npoi.Mapper; +using NPOI.OpenXmlFormats.Wordprocessing; using NPOI.POIFS.FileSystem; using Quartz.Logging; using System; @@ -250,6 +251,8 @@ namespace BarCode.Web.Repositories if (materials_result.IsSuccess) materials = materials_result.Data.ToList(); + //var queery2= _context.ser + var query = _context.SerialNumbers.AsNoTracking() .GroupJoin(_context.Box, serial => serial.BoxId, box => box.Id, (serial, box) => new { serial, box }) .SelectMany(x => x.box.DefaultIfEmpty(), (p, box) => new { p.serial, box }) @@ -704,6 +707,20 @@ namespace BarCode.Web.Repositories .ToListAsync(); } + + ///// + ///// 跟据特定条件得到产生的序列号列表(主要是内部使用) + ///// + ///// + ///// + //public async Task> GetEntityListBySuitNumber(string suitNumber) + //{ + // return await _context.SerialNumbers.AsNoTracking() + // .Where(f => f.TwoSerialNumber.Contains(suitNumber)) + // .ToListAsync(); + //} + + /// /// wms系统查询序列码 支持数字序列码 ///