From de8fa9c9602c4e905b9f2819bebf460f53bf7409 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周一, 23 12月 2024 09:22:14 +0800
Subject: [PATCH] 人工能重复记录下线记录?

---
 LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs |  238 +++++++++++++++++++++++++++++++----------------------------
 1 files changed, 126 insertions(+), 112 deletions(-)

diff --git a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs
index 9d27214..3c5ca8b 100644
--- a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs
+++ b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs
@@ -18,6 +18,8 @@
 [ApiDescriptionSettings(ApplicationConst.WmsTaskGroupName, Order = 100)]
 public class WmsOperationTaskService : IDynamicApiController, ITransient
 {
+    private static readonly SemaphoreSlim semaphore = new SemaphoreSlim(1, 1);
+
     private readonly SqlSugarRepository<WmsRbLineTask> _rep;
     private readonly SqlSugarRepository<WmsStockQuan> _wmsStockQuanRep;
     private readonly SqlSugarRepository<Mes_Package_Gather> _mesPackageGatherRep;
@@ -454,128 +456,140 @@
     [UnitOfWork]
     public async Task UnlineForNGPackage(UnlineForNGPackageInput input)
     {
-        if (input == null)
+        await semaphore.WaitAsync();
+        try
         {
-            throw Oops.Oh("鍙傛暟涓嶈兘涓虹┖");
-        }
-        if (string.IsNullOrEmpty(input.PackageCode))
-        {
-            throw Oops.Oh("鍖呭彿涓嶈兘涓虹┖");
-        }
-        //if (string.IsNullOrEmpty(input.Reason))
-        //{
-        //    throw Oops.Oh("鍘熷洜涓嶈兘涓虹┖");
-        //}
-        string _OperRemark = "姝e父浜哄伐涓嬬嚎";
-        UpiFlagEnum upiFlagEnum = UpiFlagEnum.姝e父;
-        if (input.IsNG)
-        {
-            upiFlagEnum = UpiFlagEnum.NG;
-            _OperRemark = "NG涓嬬嚎";
-        }
-
-        var singlePackage = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync();
-        if (singlePackage == null)
-        {
-            throw Oops.Oh($"娌℃湁鎵惧埌鍖呭彿{input.PackageCode}鐨勬眹鎬绘暟鎹�");
-        }
-
-        if (singlePackage.UpiStatus == UpiStatusEnum.宸蹭笅绾�)
-        {
-            throw Oops.Oh($"鍖呭彿{input.PackageCode}宸茬粡涓嬬嚎");
-        }
-
-        singlePackage.UpiFlag = upiFlagEnum;
-        singlePackage.UpdateTime = DateTime.Now;
-        singlePackage.UpiStatus = UpiStatusEnum.宸蹭笅绾�;
-        singlePackage.AreaCode = AreaCodeEnum.涓嬬嚎鍖哄煙;
-
-        var upiLineQueueList = await _mes_Upi_LineQueueRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).ToListAsync();
-        if (upiLineQueueList?.Count > 0)
-        {
-            await _mes_Upi_LineQueueRep.DeleteAsync(upiLineQueueList);
-        }
-
-        var upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).ToListAsync();
-        if (upiList == null)
-        {
-            throw Oops.Oh($"娌℃湁鎵惧埌鍖呭彿{input.PackageCode}鐨勬澘浠舵暟鎹�");
-        }
-        var _cretaorName = App.User.FindFirst(ClaimConst.RealName)?.Value;
-
-        foreach (var item in upiList)
-        {
-            item.UpiFlag = UpiFlagEnum.NG;
-            item.UpdateTime = DateTime.Now;
-            item.UpiStatus = UpiStatusEnum.宸蹭笅绾�;
-            item.AreaCode = AreaCodeEnum.涓嬬嚎鍖哄煙;
-
-            WmsRecordUpiProcess wmsRecordUpi = new WmsRecordUpiProcess();
-            wmsRecordUpi = item.Adapt<WmsRecordUpiProcess>();
-            wmsRecordUpi.Id = Yitter.IdGenerator.YitIdHelper.NextId();
-            wmsRecordUpi.CreateTime = DateTime.Now;
-            wmsRecordUpi.CreateUserName = _cretaorName;
-            wmsRecordUpi.Location = "";
-            wmsRecordUpi.OperRemark = _OperRemark;
-            await _wmsRecordUpiProcessRep.InsertAsync(wmsRecordUpi);
-
-            WmsRecordUpiNg wmsRecordUpiNg = new WmsRecordUpiNg();
-            wmsRecordUpiNg = item.Adapt<WmsRecordUpiNg>();
-            wmsRecordUpiNg.Id = Yitter.IdGenerator.YitIdHelper.NextId();
-            wmsRecordUpiNg.CreateTime = DateTime.Now;
-            wmsRecordUpiNg.CreateUserName = _cretaorName;
-            wmsRecordUpiNg.OperRemark = _OperRemark;
-            await _wmsRecordUpiNgRep.InsertAsync(wmsRecordUpiNg);
-
-
-
-            //娓呯悊 闃熷垪琛�
-            var removeUpiList = await _mes_Upi_LineQueueRep.AsQueryable().Where(x => x.Upi == item.UPI).ToListAsync();
-            if (removeUpiList?.Count > 0)
+            if (input == null)
             {
-                await _mes_Upi_LineQueueRep.DeleteAsync(removeUpiList);
+                throw Oops.Oh("鍙傛暟涓嶈兘涓虹┖");
+            }
+            if (string.IsNullOrEmpty(input.PackageCode))
+            {
+                throw Oops.Oh("鍖呭彿涓嶈兘涓虹┖");
+            }
+            //if (string.IsNullOrEmpty(input.Reason))
+            //{
+            //    throw Oops.Oh("鍘熷洜涓嶈兘涓虹┖");
+            //}
+            string _OperRemark = "姝e父浜哄伐涓嬬嚎";
+            UpiFlagEnum upiFlagEnum = UpiFlagEnum.姝e父;
+            if (input.IsNG)
+            {
+                upiFlagEnum = UpiFlagEnum.NG;
+                _OperRemark = "NG涓嬬嚎";
             }
 
-            var removePackageList = await _mes_Package_LineQueueRep.AsQueryable().Where(x => x.PackageCode == item.PackageCode).ToListAsync();
-            if (removePackageList?.Count > 0)
+            var singlePackage = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync();
+            if (singlePackage == null)
             {
-                await _mes_Package_LineQueueRep.DeleteAsync(removePackageList);
+                throw Oops.Oh($"娌℃湁鎵惧埌鍖呭彿{input.PackageCode}鐨勬眹鎬绘暟鎹�");
             }
 
+            if (singlePackage.UpiStatus == UpiStatusEnum.宸蹭笅绾�)
+            {
+                throw Oops.Oh($"鍖呭彿{input.PackageCode}宸茬粡涓嬬嚎");
+            }
 
+            singlePackage.UpiFlag = upiFlagEnum;
+            singlePackage.UpdateTime = DateTime.Now;
+            singlePackage.UpiStatus = UpiStatusEnum.宸蹭笅绾�;
+            singlePackage.AreaCode = AreaCodeEnum.涓嬬嚎鍖哄煙;
+
+            var upiLineQueueList = await _mes_Upi_LineQueueRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).ToListAsync();
+            if (upiLineQueueList?.Count > 0)
+            {
+                await _mes_Upi_LineQueueRep.DeleteAsync(upiLineQueueList);
+            }
+
+            var upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).ToListAsync();
+            if (upiList == null)
+            {
+                throw Oops.Oh($"娌℃湁鎵惧埌鍖呭彿{input.PackageCode}鐨勬澘浠舵暟鎹�");
+            }
+            var _cretaorName = App.User.FindFirst(ClaimConst.RealName)?.Value;
+
+            foreach (var item in upiList)
+            {
+                item.UpiFlag = UpiFlagEnum.NG;
+                item.UpdateTime = DateTime.Now;
+                item.UpiStatus = UpiStatusEnum.宸蹭笅绾�;
+                item.AreaCode = AreaCodeEnum.涓嬬嚎鍖哄煙;
+
+                WmsRecordUpiProcess wmsRecordUpi = new WmsRecordUpiProcess();
+                wmsRecordUpi = item.Adapt<WmsRecordUpiProcess>();
+                wmsRecordUpi.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+                wmsRecordUpi.CreateTime = DateTime.Now;
+                wmsRecordUpi.CreateUserName = _cretaorName;
+                wmsRecordUpi.Location = "";
+                wmsRecordUpi.OperRemark = _OperRemark;
+                await _wmsRecordUpiProcessRep.InsertAsync(wmsRecordUpi);
+
+                WmsRecordUpiNg wmsRecordUpiNg = new WmsRecordUpiNg();
+                wmsRecordUpiNg = item.Adapt<WmsRecordUpiNg>();
+                wmsRecordUpiNg.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+                wmsRecordUpiNg.CreateTime = DateTime.Now;
+                wmsRecordUpiNg.CreateUserName = _cretaorName;
+                wmsRecordUpiNg.OperRemark = _OperRemark;
+                await _wmsRecordUpiNgRep.InsertAsync(wmsRecordUpiNg);
+
+
+
+                //娓呯悊 闃熷垪琛�
+                var removeUpiList = await _mes_Upi_LineQueueRep.AsQueryable().Where(x => x.Upi == item.UPI).ToListAsync();
+                if (removeUpiList?.Count > 0)
+                {
+                    await _mes_Upi_LineQueueRep.DeleteAsync(removeUpiList);
+                }
+
+                var removePackageList = await _mes_Package_LineQueueRep.AsQueryable().Where(x => x.PackageCode == item.PackageCode).ToListAsync();
+                if (removePackageList?.Count > 0)
+                {
+                    await _mes_Package_LineQueueRep.DeleteAsync(removePackageList);
+                }
+
+
+            }
+
+            //涓嬬嚎鏇存柊 璁㈠崟琛ㄦ暟鎹� _mesOrderGatherRep
+            await UpdateOrderGather(singlePackage, input.IsNG);
+
+
+            WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess();
+            wmsRecordPackage = singlePackage.Adapt<WmsRecordPackageProcess>();
+            wmsRecordPackage.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+            wmsRecordPackage.Location = "";
+            wmsRecordPackage.OperRemark = _OperRemark;
+            wmsRecordPackage.CreateTime = DateTime.Now;
+            wmsRecordPackage.CreateUserName = _cretaorName;
+            await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage);
+
+
+            //鏂板涓嬬嚎璁板綍琛�
+            var all_upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.Info5 == singlePackage.Info5).ToListAsync();
+            var all_unlineList = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.Info5 == singlePackage.Info5).ToListAsync();
+            Mes_Package_UnLine_Record record = new Mes_Package_UnLine_Record();
+            record = singlePackage.Adapt<Mes_Package_UnLine_Record>();
+            record.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+            record.Location = "浜哄伐";
+            record.AllPackageNum = all_upiList.GroupBy(x => x.PackageCode).Count();
+            record.CurUnlineIndexPackageNum = all_unlineList.GroupBy(x => x.PackageCode).Count() + 1;
+            record.CreateTime = DateTime.Now;
+            record.CreateUserName = _cretaorName;
+            await _mes_Package_UnLine_RecordRep.InsertAsync(record);
+
+
+            await _mesPackageGatherRep.UpdateAsync(singlePackage);
+            await _mesBatchOrderUpiRep.UpdateRangeAsync(upiList);
         }
+        catch (Exception)
+        {
 
-        //涓嬬嚎鏇存柊 璁㈠崟琛ㄦ暟鎹� _mesOrderGatherRep
-        await UpdateOrderGather(singlePackage, input.IsNG);
-
-
-        WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess();
-        wmsRecordPackage = singlePackage.Adapt<WmsRecordPackageProcess>();
-        wmsRecordPackage.Id = Yitter.IdGenerator.YitIdHelper.NextId();
-        wmsRecordPackage.Location = "";
-        wmsRecordPackage.OperRemark = _OperRemark;
-        wmsRecordPackage.CreateTime = DateTime.Now;
-        wmsRecordPackage.CreateUserName = _cretaorName;
-        await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage);
-
-
-        //鏂板涓嬬嚎璁板綍琛�
-        var all_upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.Info5 == singlePackage.Info5).ToListAsync();
-        var all_unlineList = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.Info5 == singlePackage.Info5).ToListAsync();
-        Mes_Package_UnLine_Record record = new Mes_Package_UnLine_Record();
-        record = singlePackage.Adapt<Mes_Package_UnLine_Record>();
-        record.Id = Yitter.IdGenerator.YitIdHelper.NextId();
-        record.Location = "浜哄伐";
-        record.AllPackageNum = all_upiList.GroupBy(x => x.PackageCode).Count();
-        record.CurUnlineIndexPackageNum = all_unlineList.GroupBy(x => x.PackageCode).Count() + 1;
-        record.CreateTime = DateTime.Now;
-        record.CreateUserName = _cretaorName;
-        await _mes_Package_UnLine_RecordRep.InsertAsync(record);
-
-
-        await _mesPackageGatherRep.UpdateAsync(singlePackage);
-        await _mesBatchOrderUpiRep.UpdateRangeAsync(upiList);
-
+            throw;
+        }
+        finally
+        {
+            semaphore.Release();
+        }
     }
 
     /// <summary>

--
Gitblit v1.9.3