From 379c6a99e950e644647fcdb21afb5c5d31638e33 Mon Sep 17 00:00:00 2001
From: kyy <3283105747@qq.com>
Date: 星期六, 25 十月 2025 14:02:08 +0800
Subject: [PATCH] 1、条码拆分优化

---
 service/base/MesPrintMangeer.cs                  |  187 +++++++++++++++++++++++++++++++++++++++++++++-
 service/Warehouse/MesInvItemInCDetailsManager.cs |    2 
 Controllers/Warehouse/MesBarCFController.cs      |    6 +
 3 files changed, 188 insertions(+), 7 deletions(-)

diff --git a/Controllers/Warehouse/MesBarCFController.cs b/Controllers/Warehouse/MesBarCFController.cs
index 272c09e..a36ca45 100644
--- a/Controllers/Warehouse/MesBarCFController.cs
+++ b/Controllers/Warehouse/MesBarCFController.cs
@@ -56,7 +56,8 @@
             resultInfos.tbBillList = new ExpandoObject();
             resultInfos.tbBillList.printInfo = _mCf.getPrintInfo(unity);
             var scanResult = m.BarCF(unity);
-            resultInfos.tbBillList.cfBarInfo = _mCf.getCfInfo(scanResult);
+            //resultInfos.tbBillList.cfBarInfo = _mCf.getCfInfo(scanResult);
+            resultInfos.tbBillList.cfBarInfo = _mCf.getCfInfo(scanResult, unity);
             return new ResponseResult
             {
                 status = 0,
@@ -108,7 +109,8 @@
             resultInfos.tbBillList = new ExpandoObject();
             resultInfos.tbBillList.printInfo = _mCf.getPrintInfo(unity);
             var scanResult = m.BarCfBefore(unity);
-            resultInfos.tbBillList.cfBarInfo = _mCf.getCfBeforeInfo(scanResult);
+            //resultInfos.tbBillList.cfBarInfo = _mCf.getCfBeforeInfo(scanResult);
+            resultInfos.tbBillList.cfBarInfo = _mCf.getCfBeforeInfo(scanResult, unity);
             return new ResponseResult
             {
                 status = 0,
diff --git a/service/Warehouse/MesInvItemInCDetailsManager.cs b/service/Warehouse/MesInvItemInCDetailsManager.cs
index c09294b..b34e621 100644
--- a/service/Warehouse/MesInvItemInCDetailsManager.cs
+++ b/service/Warehouse/MesInvItemInCDetailsManager.cs
@@ -135,6 +135,8 @@
         }
     }
    
+
+
     
     
     //public ItemInBaseModel SaveBarCodes(WarehouseQuery entity)
diff --git a/service/base/MesPrintMangeer.cs b/service/base/MesPrintMangeer.cs
index dd0a641..303177b 100644
--- a/service/base/MesPrintMangeer.cs
+++ b/service/base/MesPrintMangeer.cs
@@ -21,9 +21,9 @@
             var sqlParams = new List<SugarParameter> { new("@userAccount", query.userName) };
 
             var sql1 = @"SELECT TOP 1 ip,port fROM print_info A
-         left join SYS_USER_BIND B on A.guid = B.aboutGuid
-         left join SYS_USER C ON C.GUID = B.userGuid
-WHERE C.ACCOUNT = @userAccount AND B.fType = '鎵撳嵃鏈�'";
+                           left join SYS_USER_BIND B on A.guid = B.aboutGuid
+                           left join SYS_USER C ON C.GUID = B.userGuid
+                          WHERE C.ACCOUNT = @userAccount AND B.fType = '鎵撳嵃鏈�'";
 
             var printInfo = Db.Ado.SqlQuery<dynamic>(sql1, sqlParams);
 
@@ -107,8 +107,185 @@
 
             return mergedData;
         }
+        /*-------------------------------2025-10-25 閲嶅啓鎷嗗垎鏉$爜杩斿洖淇℃伅鏂板鎵撳嵃浜轰俊鎭繑鍥�----------------------------------*/
 
 
-    
-}
+        public dynamic getCfInfo(dynamic query, dynamic unity) // 浣跨敤鍏蜂綋绫诲瀷鏇夸唬dynamic
+        {
+            // 鍙傛暟鏍¢獙
+            if (string.IsNullOrEmpty(query?.cfBarcode))
+                throw new ArgumentException("鎷嗗垎鏉$爜涓嶈兘涓虹┖");
+            if (string.IsNullOrEmpty(query?.barcode))
+                throw new ArgumentException("鍘熷鏉$爜涓嶈兘涓虹┖");
+
+            var printUser = GetPrinterUserNameByAccount(unity.userName.Trim());
+      
+            // 浣跨敤寮虹被鍨嬪弬鏁�
+            var sqlParams = new List<SugarParameter> {
+                new("@cfBar", query.cfBarcode.Trim()),
+                new("@oldBar", query.barcode.Trim()),
+                new("@printBy", printUser)
+            };
+
+            // 3. 鎵цSQL鏌ヨ锛堥�氳繃UNION ALL鍚堝苟鍘熷鏉$爜涓庢媶鍒嗗悗鏉$爜鐨勪俊鎭級
+            var sql = @"SELECT TOP 1 
+                    C.ITEM_NO,
+                    C.item_name,
+                    C.item_model,
+                    @printBy AS printBy,
+                    B.OLDQTY AS QUANTITY,
+                    B.CREATE_DATE,
+                    '鎷嗗垎鏉$爜' AS barType,
+                    B.ITEM_BARCODE,
+                    u.fname AS unit,
+                    GETDATE() AS print_date
+                FROM MES_INV_ITEM_BARCODES B
+                LEFT JOIN MES_ITEMS C ON C.item_id = B.ITEM_ID
+                LEFT JOIN MES_UNIT u ON u.id = C.storeunit 
+               WHERE B.ITEM_BARCODE = @cfBar
+
+                UNION ALL
+
+                SELECT TOP 1 
+                    C.ITEM_NO,
+                    C.item_name,
+                    C.item_model,
+                    @printBy AS printBy,
+                    B.QUANTITY AS QUANTITY,
+                    B.CREATE_DATE,
+                    '鍘熷鏉$爜' AS barType,
+                    B.ITEM_BARCODE,
+                    u.fname AS unit,
+                    GETDATE() AS print_date
+                FROM MES_INV_ITEM_BARCODES B
+                LEFT JOIN MES_ITEMS C ON C.item_id = B.ITEM_ID
+                LEFT JOIN MES_UNIT u ON u.id = C.storeunit
+                WHERE B.ITEM_BARCODE = @oldBar";
+
+            var mergedData = Db.Ado.SqlQuery<dynamic>(sql, sqlParams);
+
+            if (mergedData.Count < 2) throw new Exception("鏉$爜淇℃伅瀛樺湪寮傚父锛岃鑱旂郴绠$悊鍛橈紒");
+
+            return mergedData;
+        }
+
+
+
+
+
+        /// <summary>
+        /// 鑾峰彇鍏ュ簱鍓嶆媶鍒嗙殑鏉$爜淇℃伅锛堝惈鍘熷鏉$爜涓庢媶鍒嗗悗鏉$爜鐨勭墿鏂欍�佹墦鍗扮浉鍏虫暟鎹級
+        /// </summary>
+        /// <param name="query">鎷嗗垎缁撴灉瀵硅薄锛堥渶鍖呭惈鍘熷鏉$爜barcode銆佹媶鍒嗗悗鏉$爜cfBarcode锛�</param>
+        /// <param name="unity">鏌ヨ鍙傛暟瀵硅薄锛堥渶鍖呭惈鎵撳嵃浜簎serName锛�</param>
+        /// <returns>鍚堝苟鍚庣殑鏉$爜淇℃伅鍒楄〃锛堝師濮嬫潯鐮�+鎷嗗垎鍚庢潯鐮侊紝鍏�2鏉℃暟鎹級</returns>
+        /// <exception cref="ArgumentException">鍙傛暟涓虹┖鏃舵姏鍑�</exception>
+        /// <exception cref="Exception">鏉$爜淇℃伅寮傚父鏃舵姏鍑�</exception>
+        public dynamic getCfBeforeInfo(dynamic query, dynamic unity) // 娉細寤鸿鍚庣画鏇挎崲涓哄叿浣撳疄浣撶被鍨嬶紙濡侭arSplitResult銆乄arehouseQuery锛�
+        {
+            // 1. 鍙傛暟鍚堟硶鎬ф牎楠岋紙纭繚鏍稿績鏉$爜鍜屾墦鍗颁汉淇℃伅涓嶄负绌猴級
+            if (string.IsNullOrEmpty(query?.cfBarcode?.Trim()))
+                throw new ArgumentException("鎷嗗垎鍚庢潯鐮佷笉鑳戒负绌�");
+
+            if (string.IsNullOrEmpty(query?.barcode?.Trim()))
+                throw new ArgumentException("鍘熷鏉$爜涓嶈兘涓虹┖");
+
+            if (string.IsNullOrEmpty(unity?.userName?.Trim()))
+                throw new ArgumentException("鎵撳嵃浜猴紙userName锛変笉鑳戒负绌�");
+            
+             var printUser = GetPrinterUserNameByAccount(unity.userName.Trim());
+            // 2. 鏋勫缓SQL鍙傛暟锛堥伩鍏峉QL娉ㄥ叆锛岀粺涓�澶勭悊鍙傛暟绌烘牸锛�
+            var sqlParams = new List<SugarParameter>
+            {
+            new("@cfBar", query.cfBarcode.Trim()),    // 鎷嗗垎鍚庣殑鏂版潯鐮�
+            new("@oldBar", query.barcode.Trim()),    // 鎷嗗垎鍓嶇殑鍘熷鏉$爜
+            new("@printBy", printUser)   // 鎵ц鎵撳嵃鎿嶄綔鐨勭敤鎴�
+           };
+
+            // 3. 鎵цSQL鏌ヨ锛堥�氳繃UNION ALL鍚堝苟鍘熷鏉$爜涓庢媶鍒嗗悗鏉$爜鐨勪俊鎭級
+            var sql = @"SELECT TOP 1 
+                    C.ITEM_NO,
+                    C.item_name,
+                    C.item_model,
+                    @printBy AS printBy,
+                    B.OLDQTY AS QUANTITY,
+                    B.CREATE_DATE,
+                    '鎷嗗垎鏉$爜' AS barType,
+                    B.ITEM_BARCODE,
+                    u.fname AS unit,
+                    GETDATE() AS print_date
+                FROM MES_INV_ITEM_BARCODES B
+                LEFT JOIN MES_ITEMS C ON C.item_id = B.ITEM_ID
+                LEFT JOIN MES_UNIT u ON u.id = C.storeunit 
+               WHERE B.ITEM_BARCODE = @cfBar
+
+                UNION ALL
+
+                SELECT TOP 1 
+                    C.ITEM_NO,
+                    C.item_name,
+                    C.item_model,
+                    @printBy AS printBy,
+                    B.QUANTITY AS QUANTITY,
+                    B.CREATE_DATE,
+                    '鍘熷鏉$爜' AS barType,
+                    B.ITEM_BARCODE,
+                    u.fname AS unit,
+                    GETDATE() AS print_date
+                FROM MES_INV_ITEM_BARCODES B
+                LEFT JOIN MES_ITEMS C ON C.item_id = B.ITEM_ID
+                LEFT JOIN MES_UNIT u ON u.id = C.storeunit
+                WHERE B.ITEM_BARCODE = @oldBar";
+
+            // 4. 鎵ц鏌ヨ骞跺鐞嗙粨鏋�
+            var mergedData = Db.Ado.SqlQuery<dynamic>(sql, sqlParams);
+
+            // 鏍¢獙缁撴灉锛氶渶鍚屾椂鑾峰彇鍒板師濮嬫潯鐮佸拰鎷嗗垎鍚庢潯鐮佺殑淇℃伅锛堝叡2鏉℃暟鎹級
+            if (mergedData?.Count != 2)
+                throw new Exception("鏉$爜淇℃伅瀛樺湪寮傚父锛堟湭鏌ヨ鍒板畬鏁寸殑鍘熷/鎷嗗垎鏉$爜鏁版嵁锛夛紝璇疯仈绯荤鐞嗗憳锛�");
+
+            return mergedData;
+        }
+
+
+
+        /// <summary>
+        /// 鍏叡鏂规硶锛氭牴鎹敤鎴疯处鍙锋煡璇㈠搴旂殑鎵撳嵃鏈虹敤鎴峰悕
+        /// </summary>
+        /// <param name="userAccount">鐢ㄦ埛璐﹀彿锛堝嵆鍘焨nity.userName锛�</param>
+        /// <param name="userPrinterMainTable">鐢ㄦ埛-鎵撳嵃鏈哄叧鑱旇〃鍚嶏紙榛樿鍊煎彲鏍规嵁瀹為檯琛ㄥ悕閰嶇疆锛�</param>
+        /// <returns>鍖归厤鐨勬墦鍗版満鐢ㄦ埛鍚�</returns>
+        /// <exception cref="ArgumentException">鍏ュ弬涓虹┖鏃舵姏鍑�</exception>
+        /// <exception cref="Exception">鏈煡璇㈠埌鏁版嵁鎴栫粨鏋滀负绌烘椂鎶涘嚭</exception>
+        public string GetPrinterUserNameByAccount(string userAccount)
+        {
+            // 1. 鍏ュ弬鏍¢獙
+            if (string.IsNullOrEmpty(userAccount?.Trim()))
+                throw new ArgumentException("鏌ヨ鎵撳嵃鏈虹敤鎴风殑鍏ュ弬銆恥serAccount銆戜笉鑳戒负绌�");
+ 
+
+            // 2. 鏋勫缓鍙傛暟鍖栨煡璇紙闃睸QL娉ㄥ叆锛�
+            var userParams = new List<SugarParameter>
+    {
+        new("@userAccount", userAccount.Trim())
+        
+    };
+
+            // 3. 鍔ㄦ�佽〃鍚嶇殑SQL锛堥�傞厤涓嶅悓琛ㄥ悕鍦烘櫙锛�
+            var userSql = @"SELECT C.USER_NAME FROM SYS_USER C WHERE C.ACCOUNT = @userAccount ";
+
+            // 4. 鎵ц鏌ヨ
+            var printUsers = Db.Ado.SqlQuery<dynamic>(userSql, userParams);
+            if (printUsers == null || printUsers.Count == 0)
+                throw new Exception($"鏈煡璇㈠埌璐﹀彿銆恵userAccount}銆戝搴旂殑鎵撳嵃鏈虹敤鎴蜂俊鎭�");
+
+            // 5. 鎻愬彇骞舵牎楠岀粨鏋滐紙鍙栫涓�涓尮閰嶅�硷紝鍙牴鎹笟鍔¤皟鏁翠负澶氬�煎鐞嗭級
+            var printUser = printUsers.First()?.USER_NAME?.Trim();
+            if (string.IsNullOrEmpty(printUser))
+                throw new Exception($"璐﹀彿銆恵userAccount}銆戞煡璇㈠埌鐨勬墦鍗版満鐢ㄦ埛鍚嶄负绌�");
+
+            return printUser;
+        }
+
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3