From 2905c63ec884f531152a4e97a4d67034e8149d6d Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周二, 17 12月 2024 10:28:43 +0800
Subject: [PATCH] 22

---
 LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs |  198 ++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 185 insertions(+), 13 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 1f00b00..05fade2 100644
--- a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs
+++ b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs
@@ -27,6 +27,7 @@
     private readonly SqlSugarRepository<WmsRecordUpiProcess> _wmsRecordUpiProcessRep;
     private readonly SqlSugarRepository<WmsRecordPackageProcess> _wmsRecordPackageProcessRep;
     private readonly SqlSugarRepository<Mes_Upi_LineQueue> _mes_Upi_LineQueueRep;
+    private readonly SqlSugarRepository<Mes_Package_LineQueue> _mes_Package_LineQueueRep;
     private readonly SqlSugarRepository<WmsRecordUpiNg> _wmsRecordUpiNgRep;
     private readonly WmsCommonnQueryService _wmsCommonnQueryService;
 
@@ -41,8 +42,10 @@
         , SqlSugarRepository<WmsRecordPackageProcess> wmsRecordPackageProcessRep
         , SqlSugarRepository<WmsRecordUpiNg> wmsRecordUpiNgRep
         , WmsCommonnQueryService wmsCommonnQueryService
+        , SqlSugarRepository<Mes_Package_LineQueue> mes_Package_LineQueueRep
         )
     {
+        _mes_Package_LineQueueRep = mes_Package_LineQueueRep;
         _wmsCommonnQueryService = wmsCommonnQueryService;
         _wmsRecordUpiNgRep = wmsRecordUpiNgRep;
         _sysConfigRep = sysConfigRep;
@@ -106,6 +109,31 @@
                 quan.OperReason = "浜哄伐寮哄埗寰呭嚭搴�";
             }
             updateQuanList.AddRange(quanList);
+
+            var packageObj = await _mesPackageGatherRep.GetFirstAsync(x => x.PackageCode == item);
+            packageObj.UpiFlag = UpiFlagEnum.NG;
+            packageObj.UpiStatus = UpiStatusEnum.宸蹭笅绾�;
+            await _mesPackageGatherRep.UpdateAsync(packageObj);
+
+
+            //涓嬬嚎鏇存柊 璁㈠崟琛ㄦ暟鎹� _mesOrderGatherRep
+            await UpdateOrderGather(packageObj, true);
+
+            foreach (var quan in quanList)
+            {
+                //娓呯悊 闃熷垪琛�
+                var removeUpiList = await _mes_Upi_LineQueueRep.AsQueryable().Where(x => x.Upi == quan.Upi).ToListAsync();
+                if (removeUpiList?.Count > 0)
+                {
+                    await _mes_Upi_LineQueueRep.DeleteAsync(removeUpiList);
+                }
+
+                var removePackageList = await _mes_Package_LineQueueRep.AsQueryable().Where(x => x.PackageCode == quan.PackageCode).ToListAsync();
+                if (removePackageList?.Count > 0)
+                {
+                    await _mes_Package_LineQueueRep.DeleteAsync(removePackageList);
+                }
+            }
         }
 
         //妯″紡鍒ゆ柇
@@ -168,6 +196,11 @@
                 quan.OperReason = "浜哄伐榻愬寘鍑哄簱";
             }
             updateQuanList.AddRange(quanList);
+
+            var packageObj = await _mesPackageGatherRep.GetFirstAsync(x => x.PackageCode == item);
+            packageObj.UpiStatus = UpiStatusEnum.宸查綈鍖�;
+            packageObj.IsQiBao = true;
+            await _mesPackageGatherRep.UpdateAsync(packageObj);
         }
 
         //妯″紡鍒ゆ柇
@@ -222,18 +255,57 @@
 
         var setValue = "";
         var _QiTaoReuslt = "";
-        var other_orderList = await _mesPackageGatherRep.AsQueryable().Where(x => x.Info5 == package.Info5 && x.PackageCode != input.PackageCode).ToListAsync();
-        var num = other_orderList.Where(x => x.UpiStatus == UpiStatusEnum.鍒濆 || x.UpiStatus == UpiStatusEnum.涓嶉綈鍖�).Count();
-        if (num > 0)
+
+        bool isNeedQueryQiTao = true;
+        var order = await _mesOrderGatherRep.AsQueryable().Where(x => x.Info5 == package.Info5).FirstAsync();
+        if (order == null)
         {
-            //涓嶉綈濂�
-            setValue = $"{input.PackageCode}|涓嶉綈濂梶" + curUserName;
-            _QiTaoReuslt = "涓嶉綈濂�";
+
         }
         else
         {
-            setValue = $"{input.PackageCode}|榻愬|" + curUserName;
-            _QiTaoReuslt = "榻愬";
+            if (order.IsKitting != null)
+            {
+                _QiTaoReuslt = (bool)order.IsKitting ? "榻愬" : "涓嶉綈濂�";
+                isNeedQueryQiTao = false;
+            }
+        }
+        if (isNeedQueryQiTao)
+        {
+            var other_orderList = await _mesPackageGatherRep.AsQueryable().Where(x => x.Info5 == package.Info5 && x.PackageCode != input.PackageCode).ToListAsync();
+            var num = other_orderList.Where(x => x.UpiStatus == UpiStatusEnum.鍒濆).Count();
+            if (num > 0)
+            {
+                //涓嶉綈濂�
+                _QiTaoReuslt = "涓嶉綈濂�";
+            }
+            else
+            {
+                _QiTaoReuslt = "榻愬";
+            }
+        }
+        setValue = $"{input.PackageCode}|{_QiTaoReuslt}|" + curUserName;
+
+        if (package.UpiStatus == UpiStatusEnum.宸蹭笅绾�)
+        {
+            throw Oops.Oh($"鍖呭凡涓嬬嚎,榻愬缁撴灉[{_QiTaoReuslt}]");
+        }
+
+        if (order == null)
+        {
+            Mes_Order_Gather newOrder = new Mes_Order_Gather()
+            {
+                Info5 = package.Info5,
+                IsKitting = _QiTaoReuslt == "榻愬" ? true : false,
+                PlanNo = package.PlanNo,
+                OrderId = package.OrderId
+            };
+            await _mesOrderGatherRep.InsertAsync(newOrder);
+        }
+        else
+        {
+            order.IsKitting = _QiTaoReuslt == "榻愬" ? true : false;
+            await _mesOrderGatherRep.UpdateAsync(order);
         }
 
 
@@ -325,7 +397,7 @@
 
 
     /// <summary>
-    /// NG鍖呬笅绾�-鎵弿鍖呭彿
+    /// NG鍖呬笅绾挎垨 姝e父鍖� 涓嬬嚎 -鎵弿鍖呭彿
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
@@ -347,6 +419,13 @@
         //{
         //    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)
@@ -354,7 +433,12 @@
             throw Oops.Oh($"娌℃湁鎵惧埌鍖呭彿{input.PackageCode}鐨勬眹鎬绘暟鎹�");
         }
 
-        singlePackage.UpiFlag = UpiFlagEnum.NG;
+        if (singlePackage.UpiStatus == UpiStatusEnum.宸蹭笅绾�)
+        {
+            throw Oops.Oh($"鍖呭彿{input.PackageCode}宸茬粡涓嬬嚎");
+        }
+
+        singlePackage.UpiFlag = upiFlagEnum;
         singlePackage.UpdateTime = DateTime.Now;
         singlePackage.UpiStatus = UpiStatusEnum.宸蹭笅绾�;
         singlePackage.AreaCode = AreaCodeEnum.涓嬬嚎鍖哄煙;
@@ -385,7 +469,7 @@
             wmsRecordUpi.CreateTime = DateTime.Now;
             wmsRecordUpi.CreateUserName = _cretaorName;
             wmsRecordUpi.Location = "";
-            wmsRecordUpi.OperRemark = "NG涓嬬嚎";
+            wmsRecordUpi.OperRemark = _OperRemark;
             await _wmsRecordUpiProcessRep.InsertAsync(wmsRecordUpi);
 
             WmsRecordUpiNg wmsRecordUpiNg = new WmsRecordUpiNg();
@@ -393,18 +477,36 @@
             wmsRecordUpiNg.Id = Yitter.IdGenerator.YitIdHelper.NextId();
             wmsRecordUpiNg.CreateTime = DateTime.Now;
             wmsRecordUpiNg.CreateUserName = _cretaorName;
-            wmsRecordUpiNg.OperRemark = "NG涓嬬嚎";
+            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 = "NG涓嬬嚎";
+        wmsRecordPackage.OperRemark = _OperRemark;
         wmsRecordPackage.CreateTime = DateTime.Now;
         wmsRecordPackage.CreateUserName = _cretaorName;
         await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage);
@@ -413,6 +515,56 @@
         await _mesPackageGatherRep.UpdateAsync(singlePackage);
         await _mesBatchOrderUpiRep.UpdateRangeAsync(upiList);
 
+    }
+
+    /// <summary>
+    /// 涓嬬嚎鏇存柊 璁㈠崟琛ㄦ暟鎹�
+    /// </summary>
+    /// <param name="singlePackage"></param>
+    /// <returns></returns>
+    private async Task UpdateOrderGather(Mes_Package_Gather singlePackage, bool isNG)
+    {
+        //涓嬬嚎鏇存柊 璁㈠崟琛ㄦ暟鎹� _mesOrderGatherRep
+        bool isAdd = false;
+        var order = await _mesOrderGatherRep.AsQueryable().Where(x => x.Info5 == singlePackage.Info5).FirstAsync();
+        if (order == null)
+        {
+            isAdd = true;
+            order = new Mes_Order_Gather()
+            {
+                Info5 = singlePackage.Info5,
+                OrderId = singlePackage.OrderId,
+                PlanNo = singlePackage.PlanNo,
+            };
+        }
+        var packageList = await _mesPackageGatherRep.AsQueryable().Where(x => x.Info5 == singlePackage.Info5).ToListAsync();
+        order.PackageNum = packageList.Count();
+        order.UnLinePackageNum = packageList.Where(x => x.UpiStatus == UpiStatusEnum.宸蹭笅绾�).Count() + 1;
+
+        order.NgPackageNum = packageList.Where(x => x.UpiStatus == UpiStatusEnum.宸蹭笅绾� && x.UpiFlag == UpiFlagEnum.NG).Count();
+        if (isNG)
+        {
+            order.NgPackageNum = order.NgPackageNum + 1;
+        }
+
+        order.NoUnLinePackageNum = order.PackageNum - order.UnLinePackageNum;
+
+        order.AllPackageArea = packageList.Sum(x => Convert.ToDecimal(x.Info13));
+        order.ScanPackageArea = packageList.Where(x => x.UpiStatus == UpiStatusEnum.宸蹭笅绾� && x.UpiFlag == (int)UpiFlagEnum.姝e父).Sum(x => Convert.ToDecimal(x.Info13));
+        if (isNG == false)
+        {
+            order.ScanPackageArea = order.ScanPackageArea + Convert.ToDecimal(singlePackage.Info13);
+        }
+
+        order.NoScanPackageArea = order.AllPackageArea - order.ScanPackageArea;
+        if (isAdd)
+        {
+            await _mesOrderGatherRep.InsertAsync(order);
+        }
+        else
+        {
+            await _mesOrderGatherRep.UpdateAsync(order);
+        }
     }
 
     /// <summary>
@@ -590,5 +742,25 @@
 
     }
 
+
+    /// <summary>
+    /// 鎵爜璁板綍娓呴櫎
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    [HttpPost]
+    [ApiDescriptionSettings(Name = "PartClear")]
+    [Description("WmsOperationTask/PartClear")]
+    public async Task PartClear()
+    {
+        //妯″紡鍒ゆ柇
+        var client = await WCFServiceHelper.GetWCFService_SAPCC_Client(_sysConfigRep);
+        var res = await client.WriteStation_PartClearAsync();
+        if (res.result == false)
+        {
+            throw Oops.Oh(res.resMsg);
+        }
+    }
+
 }
 

--
Gitblit v1.9.3