From 164f2cf0a8d85a2ebd2955f8f322d5f6bb4d3857 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周一, 23 12月 2024 09:23:58 +0800
Subject: [PATCH] 22

---
 LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs |  279 +++++++++++++++++++++++++++++--------------------------
 1 files changed, 147 insertions(+), 132 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 3c5ca8b..e8c37cd 100644
--- a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs
+++ b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs
@@ -19,6 +19,7 @@
 public class WmsOperationTaskService : IDynamicApiController, ITransient
 {
     private static readonly SemaphoreSlim semaphore = new SemaphoreSlim(1, 1);
+    private static readonly SemaphoreSlim semaphore2 = new SemaphoreSlim(1, 1);
 
     private readonly SqlSugarRepository<WmsRbLineTask> _rep;
     private readonly SqlSugarRepository<WmsStockQuan> _wmsStockQuanRep;
@@ -231,161 +232,175 @@
     [UnitOfWork]
     public async Task<ValidateQiTaoOutput> ValdateQiTao(ValidateQiTaoInput input)
     {
-        ValidateQiTaoOutput output = new ValidateQiTaoOutput();
-        if (input == null || input.PackageCode == null)
+        await semaphore2.WaitAsync();
+        try
         {
-            throw Oops.Oh("鍙傛暟涓嶈兘涓虹┖");
-        }
+            ValidateQiTaoOutput output = new ValidateQiTaoOutput();
+            if (input == null || input.PackageCode == null)
+            {
+                throw Oops.Oh("鍙傛暟涓嶈兘涓虹┖");
+            }
 
-        var package = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync();
-        if (package == null)
-        {
-            throw Oops.Oh($"娌℃湁鎵惧埌鍖呭彿{input.PackageCode}鐨勬眹鎬绘暟鎹�");
-        }
+            var package = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync();
+            if (package == null)
+            {
+                throw Oops.Oh($"娌℃湁鎵惧埌鍖呭彿{input.PackageCode}鐨勬眹鎬绘暟鎹�");
+            }
 
-        if (package.UpiStatus == UpiStatusEnum.宸蹭笅绾�)
-        {
-            throw Oops.Oh($"鍖厈input.PackageCode}宸蹭笅绾�");
-        }
+            if (package.UpiStatus == UpiStatusEnum.宸蹭笅绾�)
+            {
+                throw Oops.Oh($"鍖厈input.PackageCode}宸蹭笅绾�");
+            }
 
-        var unlineObj = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync();
-        if (unlineObj != null)
-        {
-            throw Oops.Oh($"鍖呭彿{input.PackageCode}宸茬粡涓嬬嚎");
-        }
+            var unlineObj = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync();
+            if (unlineObj != null)
+            {
+                throw Oops.Oh($"鍖呭彿{input.PackageCode}宸茬粡涓嬬嚎");
+            }
 
-        //鍒ゆ柇鏄惁鏄柊鐢熶骇璁㈠崟
-        var _QiTaoReuslt = "";
-        bool isNewOrder = false;
-        string _location = "BZ-33";
-        var lastPackageUnline = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.UpiFlag == UpiFlagEnum.姝e父 && x.Location != "浜哄伐").OrderByDescending(x => x.Id).FirstAsync();
-        if (lastPackageUnline == null)
-        {//璁や负鏄柊鐢熶骇璁㈠崟
-            isNewOrder = true;
-        }
-        else
-        {
-            if (lastPackageUnline.Info5 != package.Info5)
+            //鍒ゆ柇鏄惁鏄柊鐢熶骇璁㈠崟
+            var _QiTaoReuslt = "";
+            bool isNewOrder = false;
+            string _location = "BZ-33";
+            var lastPackageUnline = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.UpiFlag == UpiFlagEnum.姝e父 && x.Location != "浜哄伐").OrderByDescending(x => x.Id).FirstAsync();
+            if (lastPackageUnline == null)
             {//璁や负鏄柊鐢熶骇璁㈠崟
                 isNewOrder = true;
-                if (lastPackageUnline.Location == "BZ-33")
-                {
-                    _location = "BZ-32";
-                }
-                else
-                {
-                    _location = "BZ-33";
-                }
             }
             else
             {
-                _location = lastPackageUnline.Location;
+                if (lastPackageUnline.Info5 != package.Info5)
+                {//璁や负鏄柊鐢熶骇璁㈠崟
+                    isNewOrder = true;
+                    if (lastPackageUnline.Location == "BZ-33")
+                    {
+                        _location = "BZ-32";
+                    }
+                    else
+                    {
+                        _location = "BZ-33";
+                    }
+                }
+                else
+                {
+                    _location = lastPackageUnline.Location;
+                }
             }
-        }
-        if (string.IsNullOrEmpty(_location))
-        {//榛樿
-            _location = "BZ-33";
-        }
+            if (string.IsNullOrEmpty(_location))
+            {//榛樿
+                _location = "BZ-33";
+            }
 
-        _QiTaoReuslt = (bool)isNewOrder ? "鏂拌鍗�" : "褰撳墠璁㈠崟";
+            _QiTaoReuslt = (bool)isNewOrder ? "鏂拌鍗�" : "褰撳墠璁㈠崟";
 
 
-        //璁板綍宸ヤ綔鏃堕棿鍜屽伐浣滀汉
-        var curUserName = App.User.FindFirst(ClaimConst.RealName)?.Value;
+            //璁板綍宸ヤ綔鏃堕棿鍜屽伐浣滀汉
+            var curUserName = App.User.FindFirst(ClaimConst.RealName)?.Value;
 
-        var sysConfig_wms_unline_oper = await _sysConfigRep.GetFirstAsync(x => x.Code == CommonConst.wms_unline_oper);
-        if (sysConfig_wms_unline_oper == null)
-        {
-            throw Oops.Oh($"娌℃湁閰嶇疆 鍖呰涓嬬嚎鎿嶄綔浜� 鍊�");
-        }
-        if (sysConfig_wms_unline_oper.Value != curUserName)
-        {
-            sysConfig_wms_unline_oper.Value = curUserName;
-            await _sysConfigRep.UpdateAsync(sysConfig_wms_unline_oper);
-
-            var sysConfig_wms_unline_time = await _sysConfigRep.GetFirstAsync(x => x.Code == CommonConst.wms_unline_time);
-            if (sysConfig_wms_unline_time == null)
+            var sysConfig_wms_unline_oper = await _sysConfigRep.GetFirstAsync(x => x.Code == CommonConst.wms_unline_oper);
+            if (sysConfig_wms_unline_oper == null)
             {
-                throw Oops.Oh($"娌℃湁閰嶇疆 鍖呰涓嬬嚎鐧婚檰鏃堕棿 鍊�");
+                throw Oops.Oh($"娌℃湁閰嶇疆 鍖呰涓嬬嚎鎿嶄綔浜� 鍊�");
             }
-            sysConfig_wms_unline_time.Value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
-            await _sysConfigRep.UpdateAsync(sysConfig_wms_unline_time);
+            if (sysConfig_wms_unline_oper.Value != curUserName)
+            {
+                sysConfig_wms_unline_oper.Value = curUserName;
+                await _sysConfigRep.UpdateAsync(sysConfig_wms_unline_oper);
+
+                var sysConfig_wms_unline_time = await _sysConfigRep.GetFirstAsync(x => x.Code == CommonConst.wms_unline_time);
+                if (sysConfig_wms_unline_time == null)
+                {
+                    throw Oops.Oh($"娌℃湁閰嶇疆 鍖呰涓嬬嚎鐧婚檰鏃堕棿 鍊�");
+                }
+                sysConfig_wms_unline_time.Value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+                await _sysConfigRep.UpdateAsync(sysConfig_wms_unline_time);
+            }
+
+
+
+            //璇锋眰PLC
+            //鍒ゆ柇鏂瑰悜
+            bool myLocation = false;
+            if (_location == "BZ-33")
+            {
+                myLocation = false;
+            }
+            else
+            {
+                myLocation = true;
+            }
+            var client = await WCFServiceHelper.GetWCFService_SAPCC_Client(_sysConfigRep);
+            var res = await client.WriteQiTaoInfoAsync(myLocation);
+            if (res.result == false)
+            {
+                throw Oops.Oh(res.resMsg);
+            }
+
+
+            //鏇存柊鏁版嵁
+            package.UpiStatus = UpiStatusEnum.宸蹭笅绾�;
+            package.AreaCode = AreaCodeEnum.涓嬬嚎鍖哄煙;
+            await _mesPackageGatherRep.UpdateAsync(package);
+
+            var upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).ToListAsync();
+            foreach (var item in upiList)
+            {
+                item.UpiStatus = UpiStatusEnum.宸蹭笅绾�;
+                item.AreaCode = AreaCodeEnum.涓嬬嚎鍖哄煙;
+                item.UpdateTime = DateTime.Now;
+            }
+            await _mesBatchOrderUpiRep.UpdateRangeAsync(upiList);
+            //鍒犻櫎闃熷垪淇℃伅
+            var lineQueue = await _mes_Package_LineQueueRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync();
+            if (lineQueue != null)
+            {
+                await _mes_Package_LineQueueRep.DeleteAsync(lineQueue);
+            }
+            //澶勭悊琛�  mes_order_gather
+            await UpdateOrderGather(package, false);
+
+            var _cretaorName = App.User.FindFirst(ClaimConst.RealName)?.Value;
+
+            //鏂板涓嬬嚎璁板綍琛�
+            var all_upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.Info5 == package.Info5).ToListAsync();
+            var all_unlineList = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.Info5 == package.Info5).ToListAsync();
+            Mes_Package_UnLine_Record record = new Mes_Package_UnLine_Record();
+            record = package.Adapt<Mes_Package_UnLine_Record>();
+            record.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+            record.Location = _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);
+
+            //璁板綍鍖呭饱鍘�
+            WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess();
+            wmsRecordPackage = package.Adapt<WmsRecordPackageProcess>();
+            wmsRecordPackage.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+            wmsRecordPackage.Location = "";
+            wmsRecordPackage.OperRemark = "姝e父涓嬬嚎";
+            wmsRecordPackage.CreateTime = DateTime.Now;
+            wmsRecordPackage.CreateUserName = _cretaorName;
+            await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage);
+
+
+            output = package.Adapt<ValidateQiTaoOutput>();
+            output.QiTaoReuslt = _QiTaoReuslt + $",绗瑊record.CurUnlineIndexPackageNum}鍖呬笅绾�,鍏眥record.AllPackageNum}鍖�";
+            output.IsNewOrder = isNewOrder;
+            //output.IsNewOrder = false;
+            return output;
         }
-
-
-
-        //璇锋眰PLC
-        //鍒ゆ柇鏂瑰悜
-        bool myLocation = false;
-        if (_location == "BZ-33")
+        catch (Exception)
         {
-            myLocation = false;
+
+            throw;
         }
-        else
+        finally
         {
-            myLocation = true;
-        }
-        var client = await WCFServiceHelper.GetWCFService_SAPCC_Client(_sysConfigRep);
-        var res = await client.WriteQiTaoInfoAsync(myLocation);
-        if (res.result == false)
-        {
-            throw Oops.Oh(res.resMsg);
+            semaphore2.Release();
         }
 
-
-        //鏇存柊鏁版嵁
-        package.UpiStatus = UpiStatusEnum.宸蹭笅绾�;
-        package.AreaCode = AreaCodeEnum.涓嬬嚎鍖哄煙;
-        await _mesPackageGatherRep.UpdateAsync(package);
-
-        var upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).ToListAsync();
-        foreach (var item in upiList)
-        {
-            item.UpiStatus = UpiStatusEnum.宸蹭笅绾�;
-            item.AreaCode = AreaCodeEnum.涓嬬嚎鍖哄煙;
-            item.UpdateTime = DateTime.Now;
-        }
-        await _mesBatchOrderUpiRep.UpdateRangeAsync(upiList);
-        //鍒犻櫎闃熷垪淇℃伅
-        var lineQueue = await _mes_Package_LineQueueRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync();
-        if (lineQueue != null)
-        {
-            await _mes_Package_LineQueueRep.DeleteAsync(lineQueue);
-        }
-        //澶勭悊琛�  mes_order_gather
-        await UpdateOrderGather(package, false);
-
-        var _cretaorName = App.User.FindFirst(ClaimConst.RealName)?.Value;
-
-        //鏂板涓嬬嚎璁板綍琛�
-        var all_upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.Info5 == package.Info5).ToListAsync();
-        var all_unlineList = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.Info5 == package.Info5).ToListAsync();
-        Mes_Package_UnLine_Record record = new Mes_Package_UnLine_Record();
-        record = package.Adapt<Mes_Package_UnLine_Record>();
-        record.Id = Yitter.IdGenerator.YitIdHelper.NextId();
-        record.Location = _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);
-
-        //璁板綍鍖呭饱鍘�
-        WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess();
-        wmsRecordPackage = package.Adapt<WmsRecordPackageProcess>();
-        wmsRecordPackage.Id = Yitter.IdGenerator.YitIdHelper.NextId();
-        wmsRecordPackage.Location = "";
-        wmsRecordPackage.OperRemark = "姝e父涓嬬嚎";
-        wmsRecordPackage.CreateTime = DateTime.Now;
-        wmsRecordPackage.CreateUserName = _cretaorName;
-        await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage);
-
-
-        output = package.Adapt<ValidateQiTaoOutput>();
-        output.QiTaoReuslt = _QiTaoReuslt + $",绗瑊record.CurUnlineIndexPackageNum}鍖呬笅绾�,鍏眥record.AllPackageNum}鍖�";
-        output.IsNewOrder = isNewOrder;
-        //output.IsNewOrder = false;
-        return output;
     }
 
 

--
Gitblit v1.9.3