Beispiel #1
0
        public static string SaveImage(byte[] p_ImgData, string p_Exe)
        {
            string outstr = string.Empty;

            string filename = GetTempFileName("pic", p_Exe);//临时文件

            if (filename == "")
            {
                SysFile.WriteFrameworkLog("导出临时图片生成失败,请重新导出");
                return(outstr);
            }
            try
            {
                if (p_ImgData.Length != 0)//有图片内容
                {
                    System.IO.MemoryStream ms    = new System.IO.MemoryStream(p_ImgData);
                    System.Drawing.Image   image = System.Drawing.Image.FromStream(ms);
                    image.Save(filename);
                }
            }
            catch
            {
                return(outstr);
            }
            return(filename);
        }
Beispiel #2
0
        /// <summary>
        /// 数据初始化
        /// </summary>
        public void IniData()
        {
            try
            {
                lblError.Visible = false;


                string sql = string.Empty;
                if (OrderTypeID == 1)//订单
                {
                    sql = "exec USP1_GetSaleOrderRelInfo " + SysString.ToDBString(OrderNo);
                }
                else//采购单
                {
                    sql = "exec USP1_GetBuyOrderRelInfo " + SysString.ToDBString(OrderNo);
                }
                DataTable dt = SysUtils.Fill(sql);
                gridView1.GridControl.DataSource = dt;
                gridView1.GridControl.Show();

                if (OrderNo != string.Empty)
                {
                    gridControlDetail.Visible = true;
                }
                else
                {
                    gridControlDetail.Visible = false;
                    lblError.Text             = "无单号";
                    lblError.Visible          = true;
                }
            }
            catch (Exception E)
            {
                lblError.Text             = "数据处理异常";
                lblError.Visible          = true;
                gridControlDetail.Visible = false;
                SysFile.WriteFrameworkLog(E.Message);
            }
        }
Beispiel #3
0
        void comm_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            lock (locker)
            {
                if (Closing)
                {
                    return;         //如果正在关闭,忽略操作,直接返回,尽快的完成串口监听线程的一次循环
                }
                try
                {
                    Listening = true;                    //设置标记,说明我已经开始处理数据,一会儿要使用系统UI的。
                    int    n   = comm.BytesToRead;       //先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致
                    byte[] buf = new byte[n];            //声明一个临时数组存储当前来的串口数据
                    received_count += n;                 //增加接收计数
                    comm.Read(buf, 0, comm.BytesToRead); //读取缓冲数据


                    //如果需要别的协议,只要扩展这个data_n_catched就可以了。往往我们协议多的情况下,还会包含数据编号,给来的数据进行
                    //编号,协议优化后就是: 头+编号+长度+数据+校验
                    //</协议解析>
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////

                    SysFile.WriteFrameworkLog("A1 " + builder.ToString());

                    builder.Remove(0, builder.Length);//清除字符串构造器的内容
                    //因为要访问ui资源,所以需要使用invoke方式同步ui。
                    this.Invoke((EventHandler)(delegate
                    {
                        ////判断是否是显示为16禁止
                        //if (checkBoxHexView.Checked)
                        //{
                        //    //依次的拼接出16进制字符串
                        //foreach (byte b in buf)
                        //{
                        //    builder.Append(b.ToString("X2") + " ");
                        //}
                        //}
                        //else
                        //{
                        ////直接按ASCII规则转换成字符串
                        SysFile.WriteFrameworkLog("A2 " + builder.ToString());

                        builder.Append(Encoding.ASCII.GetString(buf));
                        //}



                        SysFile.WriteFrameworkLog("A3 " + builder.ToString());


                        string Outstr = SysConvert.ToString(Encoding.ASCII.GetString(buf)).Substring(1, SysConvert.ToString(Encoding.ASCII.GetString(buf)).Length - 1);
                        //txtQty.Text = SysConvert.ToString(Encoding.ASCII.GetString(buf)).Substring(1, SysConvert.ToString(Encoding.ASCII.GetString(buf)).Length - 1);
                        //txtQty.Text = SysConvert.ToDecimal(SysConvert.ToDecimal(Outstr)+SysConvert.ToDecimal( 0.05), 1).ToString();
                        txtQty.Text = SysConvert.ToString(Math.Round(SysConvert.ToDecimal(Outstr), 1));

                        SysFile.WriteFrameworkLog("A4 " + builder.ToString());
                        try
                        {
                        }
                        catch (Exception E)
                        {
                            this.ShowMessage(E.Message);
                        }
                        //SysConvert.ToString(SysConvert.ToDecimal(Convert.ToInt32(builder.ToString().Substring(15, 6), 16).ToString()) / 10m);//builder.ToString();//
                    }));
                }
                finally
                {
                    Listening = false;//我用完了,ui可以关闭串口了。
                }
            }
        }
Beispiel #4
0
        bool THAddOneFlag = false;//2010/12月处理系统调号异常 标志是否已经自动跳过一次了

        /// <summary>
        /// 获得流水号处理
        /// </summary>
        /// <param name="fncEntity">单号控制表</param>
        /// <param name="p_VendorID">客户</param>
        /// <param name="sqlTrans">事务</param>
        /// <returns></returns>
        public string RGetFormNo(FormNoControl fncEntity, int p_FNCVID, string p_VendorID, IDBTransAccess sqlTrans)
        {
            string outstr = string.Empty;
            string sql    = "";

            //先期处理获得客户流水号实体BEGIN
            sql = "SELECT ID FROM Data_FormNCVendor WHERE VendorID=" + SysString.ToDBString(p_VendorID) + " AND FNCVID=" + p_FNCVID;
            DataTable    dt     = sqlTrans.Fill(sql);
            FormNCVendor entity = new FormNCVendor(sqlTrans);

            if (dt.Rows.Count != 0)
            {
                entity.ID = SysConvert.ToInt32(dt.Rows[0]["ID"]);
                entity.SelectByID();
            }
            else//如果没找到,新增一笔进去
            {
                entity.VendorID = p_VendorID;
                entity.FNCVID   = p_FNCVID;
                this.RAdd(entity, sqlTrans);
            }
            //先期处理获得客户流水号实体END

            #region 开始取号
            sql = "SELECT getdate() AS ServerTime";
            DateTime dtserver = SysConvert.ToDateTime(sqlTrans.Fill(sql).Rows[0][0].ToString());

            bool UpdFlag = false;
            if (fncEntity.CurYear != 0 && entity.CurYear != dtserver.Year)//判断年
            {
                entity.CurYear = dtserver.Year;
                UpdFlag        = true;
            }
            if (fncEntity.CurMonth != 0 && entity.CurMonth != dtserver.Month)//判断月
            {
                entity.CurMonth = dtserver.Month;
                UpdFlag         = true;
            }
            if (fncEntity.CurDay != 0 && entity.CurDay != dtserver.Day)//判断日
            {
                entity.CurDay = dtserver.Day;
                UpdFlag       = true;
            }
            if (UpdFlag)//需要更新
            {
                entity.CurSort = 0;
                this.RUpdate(entity, sqlTrans);
            }
            outstr = fncEntity.FormRulePre;

            if (entity.CurYear != 0)                                        //替换年
            {
                outstr = outstr.Replace("YYYY", entity.CurYear.ToString()); //如果是4位 陈加海2010/3/26日修改
                outstr = outstr.Replace("YY", entity.CurYear.ToString().Substring(2));
            }
            if (entity.CurMonth != 0)//替换月
            {
                outstr = outstr.Replace("MM", SysString.IntToStr(entity.CurMonth, 2));
            }
            if (entity.CurDay != 0)//替换日
            {
                outstr = outstr.Replace("DD", SysString.IntToStr(entity.CurDay, 2));
            }
            if (fncEntity.FormRuleSpecial == "V4")
            {
                string spstr = p_VendorID;
                if (p_VendorID.Length > 4)
                {
                    spstr = p_VendorID.Substring(p_VendorID.Length - 4);
                }
                outstr = outstr.Replace("X", spstr);
            }
            else if (fncEntity.FormRuleSpecial != "")//替换特殊符号
            {
                outstr = outstr.Replace("X", fncEntity.FormRuleSpecial);
            }
            outstr += SysString.IntToStr(entity.CurSort + 1, fncEntity.FormRuleSort.Length);//获得序号

            #endregion

            #region 多跳一个号处理
            if (!THAddOneFlag) //没有调号过,防止死循环
            {
                try            //跳号验证是否存在处理,存在则加1
                {
                    sql = "SELECT DTableName,DFieldName FROM Enum_FormNoControl WHERE ID=" + fncEntity.ID;
                    DataTable dtL = sqlTrans.Fill(sql);
                    if (dtL.Rows.Count != 0)
                    {
                        if (dtL.Rows[0]["DTableName"].ToString() != string.Empty && dtL.Rows[0]["DFieldName"].ToString() != string.Empty)
                        {
                            sql = "SELECT " + dtL.Rows[0]["DFieldName"].ToString() + " FROM " + dtL.Rows[0]["DTableName"].ToString() + " WHERE " + dtL.Rows[0]["DFieldName"].ToString() + "=" + SysString.ToDBString(outstr);
                            if (sqlTrans.Fill(sql).Rows.Count != 0)//产生的号码系统中已存在,则序号跳号
                            {
                                THAddOneFlag = true;
                                this.RAddSort(fncEntity.ID, p_FNCVID, p_VendorID, sqlTrans);
                                outstr = RGetFormNo(fncEntity, p_FNCVID, p_VendorID, sqlTrans);//循环调用一次
                            }
                        }
                    }
                }
                catch (Exception EL)//异常情况下填写临时信息
                {
                    SysFile.WriteFrameworkLog(EL.Message);
                }
            }
            #endregion
            return(outstr);
        }
Beispiel #5
0
        void comm_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            #region
            SysFile.WriteFrameworkLog("comm_DataReceived a" + builder.ToString());
            lock (locker)
            {
                //if (Closing) return;//如果正在关闭,忽略操作,直接返回,尽快的完成串口监听线程的一次循环

                if (!m_Frm.saveReadStartFlag)
                {
                    return;                          //如果正在关闭,忽略操作,直接返回,尽快的完成串口监听线程的一次循环
                }
                try
                {
                    Listening = true;//设置标记,说明我已经开始处理数据,一会儿要使用系统UI的。


                    SysFile.WriteFrameworkLog("comm_DataReceived b" + builder.ToString());
                    int    n   = comm.BytesToRead;     //先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致
                    byte[] buf = new byte[n];          //声明一个临时数组存储当前来的串口数据
                    received_count += n;               //增加接收计数
                    comm.Read(buf, 0, n);              //读取缓冲数据
                    builder.Remove(0, builder.Length); //清除字符串构造器的内容
                    if (m_Frm.IsHandleCreated)
                    {
                        //因为要访问ui资源,所以需要使用invoke方式同步ui。
                        m_Frm.Invoke((EventHandler)(delegate
                        {
                            //SysFile.WriteFrameworkLog("comm_DataReceived a" + builder.ToString());
                            ////判断是否是显示为16禁止
                            //if (false)//checkBoxHexView.Checked
                            //{
                            //    //依次的拼接出16进制字符串
                            //foreach (byte b in buf)
                            //{
                            //    builder.Append(b.ToString("X2") + " ");
                            //}
                            //}
                            //else
                            //{
                            //    //直接按ASCII规则转换成字符串
                            builder.Append(Encoding.ASCII.GetString(buf));
                            //}



                            ////直接按ASCII规则转换成字符串
                            //builder.Append(Encoding.ASCII.GetString(buf));
                            //SysFile.WriteFrameworkLog("comm_DataReceived b " + builder.ToString());

                            //if (builder.Length >= 16)
                            //{

                            //    string tempData1 = builder.ToString().Substring(3, 2);
                            //    string tempData2 = builder.ToString().Substring(6, 2);
                            //    string tempData3 = builder.ToString().Substring(9, 2);
                            //    string tempData4 = builder.ToString().Substring(12, 2);

                            //    string tempData5 = builder.ToString().Substring(18, 2);
                            //    string tempData6 = builder.ToString().Substring(21, 2);

                            //    int Num1 = SysConvert.ToInt32(tempData1);
                            //    int Num2 = SysConvert.ToInt32(tempData2);
                            //    int Num3 = SysConvert.ToInt32(tempData3);
                            //    int Num4 = SysConvert.ToInt32(tempData4);
                            //    int Num5 = SysConvert.ToInt32(tempData5);
                            //    int Num6 = SysConvert.ToInt32(tempData6);

                            //    //int Num1 = Convert.ToInt32(tempData1, 16);
                            //    //int Num2 = Convert.ToInt32(tempData2, 16);
                            //    //int Num3 = Convert.ToInt32(tempData3, 16);
                            //    //int Num4 = Convert.ToInt32(tempData4, 16);

                            //    //int Num5 = Convert.ToInt32(tempData5, 16);
                            //    //int Num6 = Convert.ToInt32(tempData6, 16);



                            //  string  ReadDateStr = SysConvert.ToString(Num1) + SysConvert.ToString(Num2) + SysConvert.ToString(Num3) + SysConvert.ToString(Num4) + "." + SysConvert.ToString(Num5) + SysConvert.ToString(Num6);

                            //    ReadData = SysConvert.ToDecimal(ReadDateStr);

                            //    SysFile.WriteFrameworkLog("comm_DataReceived B4 " + ReadData.ToString());
                            //}

                            SysFile.WriteFrameworkLog("comm_DataReceived A " + builder.ToString());
                            SysFile.WriteFrameworkLog("comm_DataReceived B " + builder.ToString().Length);

                            string tempData = builder.ToString();
                            if (ComPortID == 1)//码表
                            {
                                ReadData = SysConvert.ToDecimal(tempData.Substring(0, tempData.Length - 1));
                            }


                            if (ComPortID == 2)//称重
                            {
                                if (builder.Length == 8)
                                {
                                    Str1 = tempData.Substring(2, tempData.Length - 2);
                                }
                                if (builder.Length == 6)
                                {
                                    Str2 = tempData.Substring(0, 2);
                                }

                                SysFile.WriteFrameworkLog("comm_DataReceived C " + Str1.ToString());
                                SysFile.WriteFrameworkLog("comm_DataReceived D " + Str2.ToString());
                                SysFile.WriteFrameworkLog("comm_DataReceived E " + (Str1 + Str2).ToString());

                                if (Str1 != "" && Str2 != "")
                                {
                                    ReadData = SysConvert.ToDecimal(Str1 + Str2);

                                    Str1 = "";
                                    Str2 = "";
                                }
                            }


                            //ReadData = SysConvert.ToDecimal(tempData.Substring(0, tempData.Length - 1));

                            SysFile.WriteFrameworkLog("comm_DataReceived F " + ReadData.ToString());
                        }));
                    }
                }
                finally
                {
                    Listening = false;//我用完了,ui可以关闭串口了。
                }
                //catch (Exception E)
                //{
                //    m_Frm.ShowMessage(E.Message);
                //}


                //SysFile.WriteFrameworkLog("comm_DataReceived b" + builder.ToString());
                //string tempData = builder.ToString();
                //ReadData = SysConvert.ToDecimal(tempData.Substring(0, tempData.Length - 1));
                ////SysFile.WriteFile(tempData);
                ////追加的形式添加到文本框末端,并滚动到最后。
                ////this.txGet.AppendText(builder.ToString());
                ////修改接收计数
                ////labelGetCount.Text = "Get:" + received_count.ToString();



                #endregion
                #region
                //lock (locker)
                //{
                //    if (!m_Frm.saveReadStartFlag) return;//如果正在关闭,忽略操作,直接返回,尽快的完成串口监听线程的一次循环
                //    try
                //    {
                //        Listening = true;//设置标记,说明我已经开始处理数据,一会儿要使用系统UI的。
                //        int n = comm.BytesToRead;//先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致
                //        byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据
                //        received_count += n;//增加接收计数
                //        comm.Read(buf, 0, comm.BytesToRead);//读取缓冲数据

                //        /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                //        //<协议解析>
                //        bool data_1_catched = false;//缓存记录数据是否捕获到
                //        //1.缓存数据
                //        buffer.AddRange(buf);
                //        //2.完整性判断
                //        while (buffer.Count >= 4)//至少要包含头(2字节)+长度(1字节)+校验(1字节)
                //        {
                //            //请不要担心使用>=,因为>=已经和>,<,=一样,是独立操作符,并不是解析成>和=2个符号
                //            //2.1 查找数据头
                //            if (buffer[0] == 0xAA && buffer[1] == 0x44)
                //            {
                //                //2.2 探测缓存数据是否有一条数据的字节,如果不够,就不用费劲的做其他验证了
                //                //前面已经限定了剩余长度>=4,那我们这里一定能访问到buffer[2]这个长度
                //                int len = buffer[2];//数据长度
                //                //数据完整判断第一步,长度是否足够
                //                //len是数据段长度,4个字节是while行注释的3部分长度
                //                if (buffer.Count < len + 4) break;//数据不够的时候什么都不做
                //                //这里确保数据长度足够,数据头标志找到,我们开始计算校验
                //                //2.3 校验数据,确认数据正确
                //                //异或校验,逐个字节异或得到校验码
                //                byte checksum = 0;
                //                for (int i = 0; i < len + 3; i++)//len+3表示校验之前的位置
                //                {
                //                    checksum ^= buffer[i];
                //                }
                //                if (checksum != buffer[len + 3]) //如果数据校验失败,丢弃这一包数据
                //                {
                //                    buffer.RemoveRange(0, len + 4);//从缓存中删除错误数据
                //                    continue;//继续下一次循环
                //                }
                //                //至此,已经被找到了一条完整数据。我们将数据直接分析,或是缓存起来一起分析
                //                //我们这里采用的办法是缓存一次,好处就是如果你某种原因,数据堆积在缓存buffer中
                //                //已经很多了,那你需要循环的找到最后一组,只分析最新数据,过往数据你已经处理不及时
                //                //了,就不要浪费更多时间了,这也是考虑到系统负载能够降低。
                //                buffer.CopyTo(0, binary_data_1, 0, len + 4);//复制一条完整数据到具体的数据缓存
                //                data_1_catched = true;
                //                buffer.RemoveRange(0, len + 4);//正确分析一条数据,从缓存中移除数据。
                //            }
                //            else
                //            {
                //                //这里是很重要的,如果数据开始不是头,则删除数据
                //                buffer.RemoveAt(0);
                //            }
                //        }
                //        //分析数据
                //        if (data_1_catched)
                //        {
                //            //我们的数据都是定好格式的,所以当我们找到分析出的数据1,就知道固定位置一定是这些数据,我们只要显示就可以了
                //            string data = binary_data_1[3].ToString("X2") + " " + binary_data_1[4].ToString("X2") + " " +
                //                binary_data_1[5].ToString("X2") + " " + binary_data_1[6].ToString("X2") + " " +
                //                binary_data_1[7].ToString("X2");
                //            //更新界面
                //            m_Frm.Invoke((EventHandler)(delegate { }));//buttonOpenClose.Text = data;
                //        }

                //        //如果需要别的协议,只要扩展这个data_n_catched就可以了。往往我们协议多的情况下,还会包含数据编号,给来的数据进行
                //        //编号,协议优化后就是: 头+编号+长度+数据+校验
                //        //</协议解析>
                //        /////////////////////////////////////////////////////////////////////////////////////////////////////////////

                //        builder.Remove(0, builder.Length);//清除字符串构造器的内容
                //        //因为要访问ui资源,所以需要使用invoke方式同步ui。
                //        m_Frm.Invoke((EventHandler)(delegate
                //        {
                //            ////判断是否是显示为16禁止
                //            //if (checkBoxHexView.Checked)
                //            //{
                //            //    //依次的拼接出16进制字符串
                //            foreach (byte b in buf)
                //            {
                //                builder.Append(b.ToString("X2") + " ");
                //            }
                //            //}
                //            //else
                //            //{
                //            //直接按ASCII规则转换成字符串
                //            //  builder.Append(Encoding.ASCII.GetString(buf));
                //            //}
                //            try
                //            {

                //                //if (!showflag)
                //                //{
                //                // MessageBox.Show(builder.ToString());

                //                //SysFile.WriteFrameworkLog(builder.ToString());
                //                //SysFile.WriteFrameworkLog(Environment.NewLine + builder.ToString().Length.ToString());
                //                if (builder.ToString().Length >= 23)
                //                {
                //                    //追加的形式添加到文本框末端,并滚动到最后。
                //                    ReadData = SysConvert.ToDecimal(Convert.ToInt32(builder.ToString().Trim().Substring(15, 8).Replace(" ", ""), 16).ToString()) / 10m;
                //                    //if (ReadDate < 600m)
                //                    //{
                //                    //    decimal tz = 0m;// SysConvert.ToDecimal(txtTZQty.Text);
                //                    //    if (drpItemUnit.Text == "M")//计量单位是米
                //                    //    {
                //                    //        if (ReadDate > 0m)
                //                    //        {
                //                    //            txtItemM.Text = SysConvert.ToString(ReadDate + tz);
                //                    //            txtItemY.Text = SysConvert.ToDecimal(SysConvert.ToDecimal(ReadDate + tz) * 1.0936132983377m, 2).ToString();
                //                    //        }
                //                    //    }
                //                    //    if (drpItemUnit.Text == "Y")//计量单位是码
                //                    //    {
                //                    //        if (ReadDate > 0m)
                //                    //        {
                //                    //            txtItemM.Text = SysConvert.ToDecimal(SysConvert.ToDecimal(ReadDate + tz) * 0.9144m, 2).ToString();
                //                    //            txtItemY.Text = SysConvert.ToString(ReadDate + tz);
                //                    //        }
                //                    //    }
                //                    //}
                //                    //if (ReadDate == 0m)
                //                    //{
                //                    //    lblELength.Text = builder.ToString();
                //                    //}
                //                    //showflag = true;

                //                }
                //                //}
                //            }
                //            catch (Exception E)
                //            {
                //                m_Frm.ShowMessage(E.Message);
                //            }
                //            //SysConvert.ToString(SysConvert.ToDecimal(Convert.ToInt32(builder.ToString().Substring(15, 6), 16).ToString()) / 10m);//builder.ToString();//

                //        }));
                //    }
                //    finally
                //    {
                //        Listening = false;//我用完了,ui可以关闭串口了。
                //    }
                //}
                #endregion
            }
            #endregion
        }
        /// <summary>
        /// 获得单据号码
        /// </summary>
        /// <param name="p_FormNoID">单据ID</param>
        /// <param name="p_Num">第几个单据号码0,1,2,</param>
        /// <param name="sqlTrans">事务</param>
        public string RGetFormNo(int p_FormNoID, int p_Num, string p_WHID, IDBTransAccess sqlTrans)
        {
            try
            {
                string        outstr = "";
                FormNoControl entity = new FormNoControl(sqlTrans);
                entity.ID = p_FormNoID;
                entity.SelectByID();
                string   sql      = "SELECT getdate() AS ServerTime";
                DateTime dtserver = SysConvert.ToDateTime(sqlTrans.Fill(sql).Rows[0][0].ToString());

                bool UpdFlag = false;
                if (entity.CurYear != 0 && entity.CurYear != dtserver.Year)//判断年
                {
                    entity.CurYear = dtserver.Year;
                    UpdFlag        = true;
                }
                if (entity.CurMonth != 0 && entity.CurMonth != dtserver.Month)//判断月
                {
                    entity.CurMonth = dtserver.Month;
                    UpdFlag         = true;
                }
                if (entity.CurDay != 0 && entity.CurDay != dtserver.Day)//判断日
                {
                    entity.CurDay = dtserver.Day;
                    UpdFlag       = true;
                }
                if (UpdFlag)//需要更新
                {
                    entity.CurSort = 0;
                    this.RUpdate(entity, sqlTrans);
                }
                outstr = entity.FormRulePre;

                if (entity.CurYear != 0)//替换年
                {
                    outstr = outstr.Replace("YY", entity.CurYear.ToString().Substring(2));
                }
                if (entity.CurMonth != 0)//替换月
                {
                    outstr = outstr.Replace("MM", SysString.IntToStr(entity.CurMonth, 2));
                }
                if (entity.CurDay != 0)//替换日
                {
                    outstr = outstr.Replace("DD", SysString.IntToStr(entity.CurDay, 2));
                }

                if (entity.FormRuleSpecial != "")//替换特殊符号
                {
                    outstr = outstr.Replace("X", entity.FormRuleSpecial);
                }
                outstr += SysString.IntToStr(entity.CurSort + 1 + p_Num, entity.FormRuleSort.Length);//获得序号


                if (!THAddOneFlag) //没有调号过,防止死循环
                {
                    try            //跳号验证是否存在处理,存在则加1
                    {
                        sql = "SELECT DTableName,DFieldName FROM Enum_FormNoControl WHERE ID=" + p_FormNoID;
                        DataTable dtL = sqlTrans.Fill(sql);
                        if (dtL.Rows.Count != 0)
                        {
                            if (dtL.Rows[0]["DTableName"].ToString() != string.Empty && dtL.Rows[0]["DFieldName"].ToString() != string.Empty)
                            {
                                sql = "SELECT " + dtL.Rows[0]["DFieldName"].ToString() + " FROM " + dtL.Rows[0]["DTableName"].ToString() + " WHERE " + dtL.Rows[0]["DFieldName"].ToString() + "=" + SysString.ToDBString(outstr);
                                if (sqlTrans.Fill(sql).Rows.Count != 0)//产生的号码系统中已存在,则序号跳号
                                {
                                    THAddOneFlag = true;
                                    //this.RAddSort(p_FormNoID, sqlTrans);
                                    outstr = RGetFormNo(p_FormNoID, p_Num, p_WHID, sqlTrans);//循环调用一次
                                }
                            }
                        }
                    }
                    catch (Exception EL)//异常情况下填写临时信息
                    {
                        SysFile.WriteFrameworkLog(EL.Message);
                    }
                }
                return(outstr);
            }
            catch (BaseException)
            {
                throw;
            }
            catch (Exception E)
            {
                throw new BaseException(E.Message);
            }
        }