From 0aa54059b26e6641196e9953490dd18616e916e3 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期三, 10 九月 2025 17:26:47 +0800
Subject: [PATCH] 精简修正代码

---
 service/Warehouse/MesItemQtManager.cs |  315 ++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 240 insertions(+), 75 deletions(-)

diff --git a/service/Warehouse/MesItemQtManager.cs b/service/Warehouse/MesItemQtManager.cs
index 50c0199..2ee0c44 100644
--- a/service/Warehouse/MesItemQtManager.cs
+++ b/service/Warehouse/MesItemQtManager.cs
@@ -1,7 +1,9 @@
-锘縰sing NewPdaSqlServer.DB;
+锘縰sing System.Data;
+using System.Data.SqlClient;
+using Masuit.Tools;
+using NewPdaSqlServer.DB;
 using NewPdaSqlServer.Dto.service;
 using NewPdaSqlServer.entity;
-using NewPdaSqlServer.entity.Base;
 using NewPdaSqlServer.util;
 using SqlSugar;
 
@@ -14,17 +16,34 @@
     ///     鑾峰彇鏈畬鎴愮殑閫�鏂欏崟鍙峰垪琛�
     /// </summary>
     /// <returns>閫�鏂欏崟鍙峰垪琛�</returns>
-    public List<string> GetPendingQtList()
+    public dynamic GetPendingQtList(dynamic RequestInfo)
     {
-        const string sql = @"SELECT qtck 
-                        FROM MES_ITEM_QT 
-                        WHERE qt015 = 1 
-                          AND qt026 = 1 
-                          AND QT029 = 1 
-                          AND qt032 = 1
-                          AND QT014 = 0  ";
+        var orgId = RequestInfo.OrgId;
 
-        return Db.Ado.SqlQuery<string>(sql);
+        if (orgId == null)
+            throw new Exception("缁勭粐涓嶅瓨鍦紒");
+
+        // 鑾峰彇鏈畬鎴愮殑閫�鏂欏崟鍙峰垪琛�
+        var parameters = new[]
+        {
+            new SugarParameter("@pi_orgId", orgId),
+            new SugarParameter("@inP1", null),
+            new SugarParameter("@inP2", null),
+            new SugarParameter("@inP3", null),
+            new SugarParameter("@inP4", null)
+        };
+        try
+        {
+            // 杩斿洖鍗曞彿瀛楃涓插垪琛�
+            var blDetails = Db.Ado.SqlQuery<string>(
+                "EXEC prc_pda_qtck_list @pi_orgId,@inP1,@inP2,@inP3,@inP4",
+                parameters);
+            return blDetails;
+        }
+        catch (Exception ex)
+        {
+            throw new Exception($"{ex.Message}");
+        }
     }
 
     /// <summary>
@@ -32,61 +51,49 @@
     /// </summary>
     /// <param name="query">浠撳簱鏌ヨ鍙傛暟锛屽寘鍚敤鎴峰悕鍜屽崟鎹彿</param>
     /// <returns>寰呭鐞嗙殑閫�鏂欏崟鏄庣粏鍒楄〃</returns>
-    public ProductionPickDto GetPendingQtList(WarehouseQuery query)
+    public dynamic GetPendingQtDetailList(dynamic query, dynamic RequestInfo)
     {
-        // 浠庢煡璇㈠弬鏁颁腑鑾峰彇鐢ㄦ埛鍚嶅拰鍗曟嵁鍙�
-        var c_User = query.userName;
-        var p_bill_no = query.billNo;
+        var orgId = RequestInfo.OrgId;
 
-        // 鏍规嵁鍗曟嵁鍙锋煡璇㈤��鏂欏崟涓昏〃淇℃伅
-        var mesItemQt = Db.Queryable<MesItemQt>()
-            .Where(it => it.Qtck == p_bill_no)
-            .First();
+        if (orgId == null)
+            throw new Exception("缁勭粐涓嶅瓨鍦紒");
 
-        // 濡傛灉鏈壘鍒伴��鏂欏崟锛屾姏鍑哄紓甯�
-        if (mesItemQt == null) throw new Exception($"鏈煡璇㈠埌姝ゅ叾浠栧叆搴撶敵璇峰崟 {p_bill_no}");
-
-        //// 妫�鏌ラ��鏂欏崟鐨勫鏍哥姸鎬�(Qt015)锛屾湭瀹℃牳鍒欐姏鍑哄紓甯�
-        //if (mesItemQt.Qt015 == false)
-        //    throw new Exception($"鍏朵粬鍑哄簱鐢宠鍗� {p_bill_no} 鏈鏍革紝璇风‘璁わ紒");
-
-        // 妫�鏌ラ��鏂欏崟鐨勫畬缁撶姸鎬�(Qt014)锛屽凡瀹岀粨鍒欐姏鍑哄紓甯�
-        if (mesItemQt.Qt014 == true)
-            throw new Exception($"鍏朵粬鍑哄簱鐢宠鍗� {p_bill_no} 宸插畬缁擄紝璇风‘璁わ紒");
-
-        var sql = @"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,
-                    ISNULL(A.qd007,0)  FQty,ISNULL(A.qd008,0) SQty,ISNULL(A.qd007,0) - ISNULL(A.qd008,0) DSQty,
-                    dbo.F_QX_GETRECODEPOTSE(A.itemId,'','','') as RecoKw
-                    FROM MES_ITEM_QT_DATALL A
-                    LEFT JOIN MES_ITEM_QT B ON A.qtGuid = B.guid
-                    LEFT JOIN MES_ITEMS C ON A.itemId = C.item_id
-                    WHERE B.qtck = @billNo AND (qt015 = 1 AND qt026 =1 AND QT029 = 1 AND qt032 = 1)";
-
-        var sqlParams = new List<SugarParameter> {
-            new("@billNo", query.billNo)
-        };
-
-        var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql, sqlParams);
-
-        // 妫�鏌ラ��鏂欏崟鐨勫畬缁撶姸鎬�(Qt014)锛屽凡瀹岀粨鍒欐姏鍑哄紓甯�
-        if (womdabs.Count < 1)
-            throw new Exception($"璇ュ叾浠栧嚭搴撶敵璇峰崟 {p_bill_no} 鏈叏閮ㄥ鏍革紝璇风‘璁わ紒");
-
-        var DS_list = womdabs.Where(s => s.DSQty > 0).ToList();
-
-        var YS_list = womdabs.Where(s => s.SQty > 0).ToList();
-
-        var dto = new ProductionPickDto
+        var parameters = new[]
         {
-            //daa001 = womdaa.Daa001,
-            //PlanNo = womcaa.Caa020,
-            items = DS_list,
-            Ysitems = YS_list
+            new SugarParameter("@billNo", query.billNo),
+            new SugarParameter("@pi_orgId", orgId),
+            new SugarParameter("@inP1", null),
+            new SugarParameter("@inP2", null),
+            new SugarParameter("@inP3", null),
+            new SugarParameter("@inP4", null)
         };
-
-        return dto;
+        try
+        {
+            var blDetails = Db.Ado.SqlQuery<dynamic>(
+                "EXEC prc_pda_qtck_detailList @billNo,@pi_orgId,@inP1,@inP2,@inP3,@inP4",
+                parameters);
+            var items = blDetails.Where(x => x.DSQty > 0).ToList(); // 寰呮壂鐗╂枡
+            var ysitems = blDetails.Where(x => x.SQty > 0).ToList(); // 宸叉壂鐗╂枡
+            return new
+            {
+                items,
+                ysitems,
+                allList = blDetails
+            };
+        }
+        catch (Exception ex)
+        {
+            // 淇濈暀鍘熸湁寮傚父澶勭悊閫昏緫
+            throw new Exception($"{ex.Message}");
+        }
     }
 
+    /// <summary>
+    ///     鎵爜鍑哄簱
+    /// </summary>
+    /// <param name="query"></param>
+    /// <returns></returns>
+    /// <exception cref="Exception"></exception>
     public (WarehouseQuery form, List<MesItemQtDatall> item, string message)
         OutScanBarcode(
             WarehouseQuery query)
@@ -116,6 +123,7 @@
         if (barcode == null)
             throw new Exception($"mes涓笉瀛樺湪姝ゆ潯鐮�,璇锋牳瀵癸紒{p_item_barcode}");
 
+
         // 鑾峰彇搴撳瓨淇℃伅
         var stock = Db.Queryable<MesInvItemStocks>()
             .Where(it => it.ItemBarcode == p_item_barcode && it.Quantity > 0)
@@ -143,16 +151,13 @@
 
         // 鑾峰彇鍏朵粬鍑哄簱鍗曚俊鎭�
         var mesItemQt = Db.Queryable<MesItemQt>()
-            .Where(it => it.Qtck == p_bill_no && it.Qt015 == true && it.Qt026 == true && it.Qt029 == true && it.Qt032 == true)
+            .Where(it =>
+                it.Qtck == p_bill_no && it.Qt015 == true && it.Qt026 == true &&
+                it.Qt029 == true && it.Qt032 == true)
             .First();
 
         if (mesItemQt == null)
             throw new Exception($"鍏朵粬鍑哄簱鐢宠鍗� {p_bill_no} 涓嶅瓨鍦紝璇风‘璁わ紒");
-
-        // 妫�鏌ヤ粨搴撴槸鍚︿竴鑷�
-        if (Convert.ToInt32(mesItemQt.Qt008)  != stock.DepotId)
-            throw new Exception(
-                $"鎵爜鍑鸿揣浠撳簱id{mesItemQt.Qt008}涓庡叾浠栧嚭搴撶敵璇蜂粨搴搟stock.DepotId}涓嶄竴鑷达紝璇锋牳瀵癸紒");
 
         // 鑾峰彇鍑哄簱鍗曟槑缁�
         var qtDetail = Db.Queryable<MesItemQtDatall>()
@@ -163,6 +168,16 @@
 
         if (qtDetail == null) throw new Exception("鎵爜鐗╂枡闈炴湰娆″嚭搴撶敵璇风墿鏂欙紝璇锋牳瀵癸紒");
 
+
+        if (mesItemQt.Qt014)
+            throw new Exception($"鍏朵粬鍑哄簱鐢宠鍗� {p_bill_no} 宸插畬缁擄紝璇风‘璁わ紒");
+
+        // 妫�鏌ヤ粨搴撴槸鍚︿竴鑷�
+        if (qtDetail.DepotId != stock.DepotId)
+            throw new Exception(
+                $"鎵爜鍑鸿揣浠撳簱id{qtDetail.DepotId}涓庡叾浠栧嚭搴撶敵璇蜂粨搴搟stock.DepotId}涓嶄竴鑷达紝璇锋牳瀵癸紒");
+
+
         // 妫�鏌ュ墿浣欐暟閲�
         var remainingQty = (qtDetail.Qd007 ?? 0) - (qtDetail.Qd008 ?? 0);
         if (remainingQty <= 0)
@@ -172,8 +187,8 @@
         if (stock.Quantity > remainingQty)
         {
             var pendingList = Db
-                .Queryable<MesItemQt, MesItemQtDatall, MesItems>(
-                    (a, b, c) => new JoinQueryInfos(
+                .Queryable<MesItemQt, MesItemQtDatall, MesItems>((a, b, c) =>
+                    new JoinQueryInfos(
                         JoinType.Left, a.Guid == b.QtGuid,
                         JoinType.Left, b.ItemId == c.Id.ToString()))
                 .Where((a, b, c) => a.Qtck == p_bill_no &&
@@ -191,6 +206,8 @@
 
             var message =
                 $"璇风‘璁ゅ彂鏂欐暟閲忥紒锛佸凡甯﹀嚭婊¤冻鍏朵粬鍑哄簱鍗曠殑鍙戞枡鏁伴噺 {remainingQty} 纭鍚庤鐐瑰嚮鏉$爜鎷嗗垎";
+
+            throw new Exception("鏉$爜鏁伴噺瓒呭嚭鍙戞枡鏁伴噺锛岃鎷嗗垎鍚庡啀鎵弿锛�");
 
             query.itemNo = stock.ItemNo;
             query.Num = stock.Quantity;
@@ -278,7 +295,8 @@
             // 妫�鏌ユ槸鍚﹀凡瀛樺湪鍑哄簱鐗╂枡璁板綍
             var existingOutItem = Db.Queryable<MesInvItemOutItems>()
                 .Where(it =>
-                    it.ItemOutId == outId && it.ItemId == barcode.ItemId && it.ItemDabid == qtDetail.Guid)
+                    it.ItemOutId == outId && it.ItemId == barcode.ItemId &&
+                    it.ItemDabid == qtDetail.Guid)
                 .First();
 
             if (existingOutItem == null)
@@ -320,7 +338,9 @@
                 commit += db.Updateable<MesInvItemOutItems>()
                     .SetColumns(it =>
                         it.TlQty == (it.TlQty ?? 0) + stock.Quantity)
-                    .Where(it => it.ItemOutId == outId && it.ItemId == barcode.ItemId && it.ItemDabid == qtDetail.Guid)
+                    .Where(it =>
+                        it.ItemOutId == outId && it.ItemId == barcode.ItemId &&
+                        it.ItemDabid == qtDetail.Guid)
                     .ExecuteCommand();
             }
 
@@ -411,8 +431,8 @@
                     .ExecuteCommand();
 
             mesItemQtDatalls = Db
-                .Queryable<MesItemQt, MesItemQtDatall, MesItems>(
-                    (a, b, c) => new JoinQueryInfos(
+                .Queryable<MesItemQt, MesItemQtDatall, MesItems>((a, b, c) =>
+                    new JoinQueryInfos(
                         JoinType.Left, a.Guid == b.QtGuid,
                         JoinType.Left, b.ItemId == c.Id.ToString()))
                 .Where((a, b, c) => a.Qtck == p_bill_no &&
@@ -445,8 +465,10 @@
 
             // 鍒涘缓 鎻掑叆鏃ュ織
             var logService = new LogService();
-            var LogMsg = "銆怭DA銆戝叾浠栧嚭搴撱�傛潯鐮併��" + query.barcode + "銆戞暟閲忋��"+ stock.Quantity.ToString() + "銆� 鍑哄簱鍗曞彿銆�" + outNo + "銆�";
-            logService.CreateLog(db, query.userName, mesItemQt.Guid.ToString(), "MES_ITEM_QT", LogMsg, mesItemQt.Qtck);
+            var LogMsg = "銆怭DA銆戝叾浠栧嚭搴撱�傛潯鐮併��" + query.barcode + "銆戞暟閲忋��" +
+                         stock.Quantity + "銆� 鍑哄簱鍗曞彿銆�" + outNo + "銆�";
+            logService.CreateLog(db, query.userName, mesItemQt.Guid.ToString(),
+                "MES_ITEM_QT", LogMsg, mesItemQt.Qtck);
 
             if (commit < 5) throw new Exception("鏇存柊澶辫触");
 
@@ -456,6 +478,12 @@
         return (query, mesItemQtDatalls, mess);
     }
 
+    /// <summary>
+    ///     鎷嗗垎鏉$爜骞跺嚭搴�
+    /// </summary>
+    /// <param name="query"></param>
+    /// <returns></returns>
+    /// <exception cref="Exception"></exception>
     public (WarehouseQuery form, List<MesItemQtDatall> item, string message)
         PrintQtckBarcode(
             WarehouseQuery query)
@@ -836,8 +864,8 @@
 
             // 鑾峰彇鍓╀綑寰呭鐞嗘槑缁�
             mesItemQtDatalls = db
-                .Queryable<MesItemQt, MesItemQtDatall, MesItems>(
-                    (a, b, c) => new JoinQueryInfos(
+                .Queryable<MesItemQt, MesItemQtDatall, MesItems>((a, b, c) =>
+                    new JoinQueryInfos(
                         JoinType.Left, a.Guid == b.QtGuid,
                         JoinType.Left, b.ItemId == c.Id.ToString()))
                 .Where((a, b, c) => a.Qtck == p_bill_no &&
@@ -859,4 +887,141 @@
         });
         return (query, mesItemQtDatalls, message);
     }
+
+
+    /// <summary>
+    ///     鍏朵粬鍑哄簱锛堟柊锛夊瓨鍌ㄨ繃绋�
+    /// </summary>
+    /// <param name="query"></param>
+    /// <returns></returns>
+    /// <exception cref="Exception"></exception>
+    public ProductionPickDto ScanCode(WarehouseQuery query)
+    {
+        var _strMsg = "";
+        var _intSum = "";
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            if (query.userName.IsNullOrEmpty()) throw new Exception("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖");
+            if (query.billNo.IsNullOrEmpty()) throw new Exception("鐢宠鍗曞彿涓嶅厑璁镐负绌�");
+            if (query.barcode.IsNullOrEmpty()) throw new Exception("鏉$爜涓嶅厑璁镐负绌�");
+
+            using (var cmd = new SqlCommand("[prc_pda_QTCK]", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    SqlParameter[] parameters =
+                    {
+                        new("@outMsg", SqlDbType.NVarChar, 300),
+                        new("@outSum", SqlDbType.NVarChar, 300),
+                        new("@barcode_num", SqlDbType.NVarChar, 300),
+                        new("@split_num", SqlDbType.NVarChar, 300),
+                        new("@c_User", query.userName),
+                        new("@p_biLL_no", query.billNo),
+                        new("@p_item_barcode", query.barcode)
+                    };
+                    parameters[0].Direction = ParameterDirection.Output;
+                    parameters[1].Direction = ParameterDirection.Output;
+                    parameters[2].Direction = ParameterDirection.Output;
+                    parameters[3].Direction = ParameterDirection.Output;
+                    foreach (var parameter in parameters)
+                        cmd.Parameters.Add(parameter);
+                    cmd.ExecuteNonQuery();
+                    _strMsg = parameters[0].Value.ToString();
+                    _intSum = parameters[1].Value.ToString();
+
+                    var barcodeNum = parameters[2].Value.ToString();
+                    var splitNum = parameters[3].Value.ToString();
+
+                    var result = Convert.ToInt32(_intSum);
+                    if (result <= 0) throw new Exception(_strMsg);
+
+                    var dto = new ProductionPickDto
+                    {
+                        daa001 = query.billNo,
+                        barcodeNum = barcodeNum,
+                        splitNum = splitNum,
+                        barcode = query.barcode,
+                        result = result.ToString()
+                    };
+
+                    return dto;
+                }
+                catch (Exception ex)
+                {
+                    throw new Exception(ex.Message);
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+    }
+
+
+    public ProductionPickDto ScanCodeCF(WarehouseQuery query)
+    {
+        if (query.userName.IsNullOrEmpty()) throw new Exception("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖");
+        if (query.billNo.IsNullOrEmpty()) throw new Exception("鐢宠鍗曞彿涓嶅厑璁镐负绌�");
+        if (query.barcode.IsNullOrEmpty()) throw new Exception("鏉$爜涓嶅厑璁镐负绌�");
+
+        if (query.Num is null or 0) throw new Exception("鏉$爜鎷嗗垎鏁颁笉鍏佽涓虹┖鎴栬�呬负0");
+
+        var _strMsg = "";
+        var _intSum = "";
+        var _cfBar = ""; //鎷嗗垎鍚庢潯鐮�
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            using (var cmd = new SqlCommand("[prc_pda_QTCK_CF]", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    SqlParameter[] parameters =
+                    {
+                        new("@outMsg", SqlDbType.NVarChar, 2000),
+                        new("@outSum", SqlDbType.NVarChar, 300),
+                        new("@outCfBar", SqlDbType.NVarChar, 300),
+                        new("@c_User", query.userName),
+                        new("@p_biLL_no", query.billNo),
+                        new("@p_item_barcode", query.barcode),
+                        new("@num", query.Num)
+                    };
+                    parameters[0].Direction = ParameterDirection.Output;
+                    parameters[1].Direction = ParameterDirection.Output;
+                    parameters[2].Direction = ParameterDirection.Output;
+                    foreach (var parameter in parameters)
+                        cmd.Parameters.Add(parameter);
+                    cmd.ExecuteNonQuery();
+                    _strMsg = parameters[0].Value.ToString();
+                    _intSum = parameters[1].Value.ToString();
+                    _cfBar = parameters[2].Value.ToString();
+
+
+                    var result = Convert.ToInt32(_intSum);
+                    if (result <= 0) throw new Exception(_strMsg);
+
+                    var dto = new ProductionPickDto
+                    {
+                        daa001 = query.billNo,
+                        barcode = query.barcode, //鍘熸潯鐮�
+                        cfBarcode = _cfBar //鎷嗗垎鍚庢潯鐮�
+                    };
+
+                    return dto;
+                }
+                catch (Exception ex)
+                {
+                    throw new Exception(ex.Message);
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3