1
zrg
2025-10-17 82de67c48acaf472a6f8bb8b53f3f4feec9f5e54
WebAPI/Controllers/²Ö´æ¹ÜÀí/ÌõÂëÉú³É/Sc_BarCodeController.cs
@@ -909,6 +909,8 @@
            string HSupNumber = ""; // ä¾›åº”商编码
            string HPOInStockBillNo = ""; // æ”¶æ–™é€šçŸ¥å•号
            string HPOOrderBillNo = ""; // é‡‡è´­è®¢å•号
            DataSet Ds;
            msg2 = msg2.Replace("\\", "");
            msg2 = msg2.Replace("\n", "");  //\n
@@ -959,6 +961,8 @@
                    
                    HPOInStockBillNo = DBUtility.ClsPub.isStrNull(ordrlist[j].HBillNo); // æ”¶æ–™é€šçŸ¥å•号 å…´è¾¾æ¡ç 
                    HSupNumber = DBUtility.ClsPub.isStrNull(ordrlist[j].HSupNumber);// ä¾›åº”商编号 å…´è¾¾æ¡ç 
                    HPOOrderBillNo = DBUtility.ClsPub.isStrNull(ordrlist[j].HBillNo); // é‡‡è´­è®¢å•号 å°å«ç”µå™¨
                    //
                    sYear = ClsPub.isDate(sDate).Year.ToString().Substring(2, 2);
                    sPeriod = "0" + ClsPub.isDate(sDate).Month.ToString();
@@ -1069,6 +1073,14 @@
                            Ds = oCN.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                            LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                            LSHlen = 3; // ä¸‰ä½æµæ°´å·
                        }
                        else if (CampanyName.Contains("小卫"))
                        {
                            // å°å«ç”µå™¨
                            // æ¡ç å‰ç¼€ = å•据号 + ç‰©æ–™ç¼–码 + æ‰¹æ¬¡å·
                            sTMNumber = HPOOrderBillNo + "@" + HMaterNumber + "@" + HBatchNo;
                            Ds = oCN.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                            LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        }
                        else  //通用方法
                        {
@@ -1892,12 +1904,12 @@
        #region [获取标签打印指令 CPCL指令]
        [Route("Sc_BarCode/Get_BarCodePrintCode_CPCL")]
        [HttpGet]
        public object Get_BarCodePrintCode_CPCL(string HOrginationName, string HViewName, string HBillSubType, int HInterID, int HItemID)
        public object Get_BarCodePrintCode_CPCL(string HOrginationName, string HBillSubType, int HInterID, int HItemID)
        {
            try
            {
                ds = oCN.RunProcReturn("exec h_p_getHBarCodePrintCode_CPCL N'" + HOrginationName + "'" +
                   ",N'" + HViewName + "',N'" + HBillSubType + "'," + HInterID + "," + HItemID, "h_p_getHBarCodePrintCode_CPCL");
                   ",N'" + HBillSubType + "'," + HInterID + "," + HItemID, "h_p_getHBarCodePrintCode_CPCL");
                if((int)ds.Tables[0].Rows[0]["resultType"] == 1)
                {
                    string resultMesg = ds.Tables[0].Rows[0]["payload"].ToString().Replace("\\r\\n", "\r\n");
@@ -2525,64 +2537,86 @@
        {
            try
            {
                SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
                //查询条码信息
                if (HBarCodeNo != null)
                if (string.IsNullOrWhiteSpace(HBarCodeNo))
                {
                    string prefix = HBarCodeNo.Trim() + "-";
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "请输入条码编号";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                    ds = oCn.RunProcReturn("SELECT * FROM h_v_Gy_SplitBarCode WITH(NOLOCK) WHERE HBarCode LIKE '" + prefix + "' + '%' AND HBarCode NOT LIKE  '" + prefix + "'  + '%-%' AND ISNUMERIC(RIGHT(HBarCode, LEN(HBarCode) - LEN( '" + prefix + "' ))) = 1  AND TRY_CAST(RIGHT(HBarCode, LEN(HBarCode) - LEN( '" + prefix + "' )) AS INT) IS NOT NULL ", "Gy_BarCodeBill");
                    if (ds != null || ds.Tables[0].Rows.Count >= 0)
                // åŽ»ç©ºæ ¼
                string cleanBarCode = HBarCodeNo.Trim();
                string prefix = cleanBarCode + "-"; // ç”¨äºŽæŸ¥å­ç 
                SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
                // 1. å…ˆæŸ¥ç›´æŽ¥å­ç ï¼ˆä¸€çº§å­ç ï¼šxxx-1, xxx-2, ...)
                string sqlSub = @"SELECT * FROM h_v_Gy_SplitBarCode WITH(NOLOCK) WHERE HBarCode LIKE '" + prefix + @"%'
                AND HBarCode NOT LIKE '" + prefix + @"%-%'
                AND ISNUMERIC(RIGHT(HBarCode, LEN(HBarCode) - LEN('" + prefix + @"'))) = 1
                AND TRY_CAST(RIGHT(HBarCode, LEN(HBarCode) - LEN('" + prefix + @"')) AS INT) IS NOT NULL";
                DataSet ds = oCn.RunProcReturn(sqlSub, "Gy_BarCodeBill");
                // 2. å¦‚果有子码 â†’ è¿”回子码 + ä¸‹ä¸€ä¸ªç¼–号
                if (ds != null && ds.Tables[0].Rows.Count > 0)
                {
                    int maxSuffix = 0;
                    foreach (DataRow row in ds.Tables[0].Rows)
                    {
                        // æ‰¾å‡ºæœ€å¤§åŽç¼€æ•°å­—,用于生成下一个编号
                        int maxSuffix = 0;
                        foreach (DataRow row in ds.Tables[0].Rows)
                        {
                            string barCode = row["HBarCode"].ToString();
                            string suffixPart = barCode.Substring(prefix.Length); // å– - åŽçš„部分
                            if (int.TryParse(suffixPart, out int num))
                            {
                                if (num > maxSuffix) maxSuffix = num;
                            }
                        }
                        string barCode = row["HBarCode"].ToString();
                        string suffix = barCode.Substring(prefix.Length);
                        if (int.TryParse(suffix, out int num) && num > maxSuffix)
                            maxSuffix = num;
                    }
                        // ç”Ÿæˆä¸‹ä¸€ä¸ªå­ç ç¼–号
                        string nextBarCode = $"{HBarCodeNo}-{maxSuffix + 1}";
                    string nextBarCode = $"{cleanBarCode}-{maxSuffix + 1}";
                    objJsonResult.code = "1";
                    objJsonResult.count = ds.Tables[0].Rows.Count;
                    objJsonResult.Message = "查询成功,返回直接子码";
                    objJsonResult.data = new
                    {
                        SubBarCodes = ds.Tables[0],
                        NextBarCode = nextBarCode
                    };
                }
                else
                {
                    // 3. æ²¡æœ‰å­ç  â†’ æŸ¥è‡ªå·±
                    string sqlSelf = @"SELECT * FROM h_v_Gy_SplitBarCode WITH(NOLOCK)  WHERE HBarCode = '" + cleanBarCode.Replace("'", "''") + "'";
                    DataSet dsSelf = oCn.RunProcReturn(sqlSelf, "Gy_BarCodeBill");
                    if (dsSelf != null && dsSelf.Tables[0].Rows.Count > 0)
                    {
                        objJsonResult.code = "1";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "Sucess!";
                        objJsonResult.Message = "该条码无子码,返回自身";
                        objJsonResult.data = new
                        {
                            SubBarCodes = ds.Tables[0],        // æ¡ç åŸºç¡€ä¿¡æ¯
                            NextBarCode = nextBarCode          // ä¸‹ä¸€ä¸ªç”Ÿæˆçš„æ¡ç 
                            SubBarCodes = dsSelf.Tables[0],
                            NextBarCode = $"{cleanBarCode}-1"  // å»ºè®®ä»Ž -1 å¼€å§‹
                        };
                        return objJsonResult;
                    }
                    else
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "条码编号不存在, æç¤º";
                        objJsonResult.Message = "条码不存在,请检查";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    }
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "请输入条码编号或拆分条码数";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                return objJsonResult;
            }
            catch (Exception e) //抛出异常
            catch (Exception ex)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.Message = "异常:" + ex.Message;
                objJsonResult.data = null;
                return objJsonResult;
            }
@@ -2715,6 +2749,42 @@
        }
        #endregion
        #region [条码生成接口_小卫镭雕码]
        [Route("Sc_BarCode/GetSNByICMO_XW")]
        [HttpGet]
        public object GetSNByICMO(String HBillNo,int HSeq)
        {
            try
            {
                ds = oCN.RunProcReturn("exec h_p_WMS_GetSNByICMO_XW '" + HBillNo + "', "+ HSeq, "h_p_WMS_GetSNByICMO_XW");
                if (ds.Tables[0].Rows.Count > 0)
                {
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "[0000-1-037]条码生成成功!";
                    objJsonResult.data = ds.Tables[0];
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "[0000-2-020]没有返回任何结果,条码生成失败!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "[3899-2-006]条码生成失败!" + e.Message;
                return objJsonResult;
            }
        }
        #endregion
        #endregion
    }
}