Exemplo n.º 1
0
 public bool Start(out ErrInfo err)
 {
     err = new ErrInfo("FF01", "");
     try
     {
         Flag_Listen  = true;
         ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
         IPEndPoint localEP = new IPEndPoint(IPAddress.Any, port);
         try
         {
             ServerSocket.Bind(localEP);
         }
         catch (Exception ex)
         {
             err = new ErrInfo("FF01", ex.Message);
             Log.Fatal("TcpServer:" + ex.Message);
             return(false);
         }
         ServerSocket.Listen(20);
         Thread thread = new Thread(ListenConnecting);
         thread.IsBackground = true;
         thread.Start();
         return(true);
     }
     catch (Exception ex2)
     {
         err = new ErrInfo("FF01", ex2.Message);
         Log.Fatal("TcpServer:" + ex2.Message);
         return(false);
     }
 }
Exemplo n.º 2
0
        }         // get

        /*
        ** Name: get
        **
        ** Description:
        **	Generate an SqlEx exception from an ErrInfo constant
        **	and another SqlEx exception.  The existing SqlEx
        **	exception is chained to the SqlEx exception created
        **	from the error information.
        **
        ** Input:
        **	err	    ErrInfo constant.
        **	ex	    Associated exception,
        **
        ** Output:
        **	None.
        **
        ** Returns:
        **	SqlEx	    The new exception object.
        **
        ** History:
        **	20-Apr-00 (gordy)
        **	    Created.
        **	11-Sep-02 (gordy)
        **	    Renamed class to remove specific product reference.
        */

        public static SqlEx get(ErrInfo err, SqlEx ex)
        {
            SqlEx ex_list = get(err);

            ex_list.setNextException(ex);
            return(ex_list);
        }         // get
Exemplo n.º 3
0
        public bool Start(out ErrInfo err)
        {
            err = new ErrInfo("FF01", "");
            if (CommPort == null)
            {
                err = new ErrInfo("FF01", "端口类型错误");
                return(false);
            }
            PortType port     = CommPort.Port;
            PortType portType = port;

            if (portType == PortType.TcpServer)
            {
                tcpServer              = new TcpServer(int.Parse(CommPort.ConnStr));
                tcpServer.OnAddSocket += TcpServer_OnAddSocket;
                tcpServer.OnDelSocket += TcpServer_OnDelSocket;
                IsConnected            = tcpServer.Start(out err);
                if (!IsConnected)
                {
                    tcpServer.Stop();
                    tcpServer = null;
                }
            }
            else
            {
                err = new ErrInfo("FF01", "端口类型错误");
            }
            return(IsConnected);
        }
Exemplo n.º 4
0
 protected internal static void TrigerApiException(string senderName, ErrInfo e)
 {
     if (AbstractReader.OnApiException != null)
     {
         AbstractReader.OnApiException(senderName, e);
     }
 }
Exemplo n.º 5
0
 void apierrMethod(ErrInfo e)
 {
     if (e.Ei.ErrCode == "FF22")
     {
         TreeNode[] tns = tvReaders.Nodes.Find(e.ReaderName, true);
         if (tns.Length > 0)
         {
             if (tns[0].Parent.Parent.Name == "Server")
             {
                 tvReaders.Nodes.Remove(tns[0]);
             }
             else
             {
                 tns[0].ImageIndex = 4;
                 tvReaders.SelectedNode.SelectedImageIndex = tvReaders.ImageIndex;
             }
             txtMsg.AppendText(e.ReaderName + "断开连接");
         }
     }
     else if (e.Ei.ErrCode == "FF24")//发现连接作废
     {
         TreeNode[] tns = tvReaders.Nodes.Find(e.ReaderName, true);
         if (tns.Length > 0)
         {
             if (tns[0].Parent.Parent.Name != "Server")
             {
                 tns[0].ImageIndex = 4;
                 tvReaders.SelectedNode.SelectedImageIndex = tvReaders.ImageIndex;
             }
             txtMsg.AppendText(e.ReaderName + "断开连接");
         }
     }
 }
Exemplo n.º 6
0
 private void Reader_OnApiException(string senderName, ErrInfo e)
 {
     if (e.ErrCode == "FF02" && this.OnBrokenNetwork != null)
     {
         this.OnBrokenNetwork(senderName, e);
     }
 }
Exemplo n.º 7
0
 private void threadKeepAliveMethod()
 {
     while (true)
     {
         if (!isEnableKeepAlive)
         {
             return;
         }
         for (int i = 0; i < keepAliveInterval * 10; i++)
         {
             Thread.Sleep(100);
             if (!isEnableKeepAlive)
             {
                 break;
             }
         }
         Thread.Sleep(200);
         if (isEnableKeepAlive)
         {
             int num = (int)DateTime.Now.Subtract(dtKeepAlive).TotalMilliseconds;
             if (num > keepAliveInterval * 1000)
             {
                 break;
             }
         }
     }
     setIsConnected(isConnected: false);
     if (this.OnBrokenNetwork != null)
     {
         ErrInfo e = new ErrInfo("FF02", ErrInfoList.ErrDictionary["FF02"]);
         this.OnBrokenNetwork(ReaderName, e);
         Disconnect();
     }
 }
Exemplo n.º 8
0
        public static ErrInfo saveImage(HttpPostedFile file, string filePath)
        {
            ErrInfo err = new ErrInfo();

            try
            {
                string path = Config.webPath + filePath + System.DateTime.Now.ToString("yyyy-MM") + "/";
                if (!System.IO.Directory.Exists(HttpContext.Current.Server.MapPath(path)))
                {
                    System.IO.Directory.CreateDirectory(HttpContext.Current.Server.MapPath(path));
                }
                string kzm = "";
                if (file.FileName.LastIndexOf(".") > -1)
                {
                    kzm = file.FileName.Substring(file.FileName.LastIndexOf(".") + 1).ToLower();
                }
                if (!Regex.IsMatch(kzm, "(jpg|gif|png)"))
                {
                    err.errNo  = -1;
                    err.errMsg = "文件类型不合法,只能上传jpg,gif,png";
                    return(err);
                }
                string fileName = API.GetId() + "." + kzm;
                file.SaveAs(HttpContext.Current.Server.MapPath(path + fileName));
                err.userData = path + fileName;
                return(err);
            }
            catch (Exception ex)
            {
                err.errNo  = -1;
                err.errMsg = ex.Message;
                return(err);
            }
        }
Exemplo n.º 9
0
 /// <summary>
 /// 获取错误代码和错误信息
 /// </summary>
 /// <returns></returns>
 internal ErrInfo GetErrInfo()
 {
     HuiShouYin.Domain.ErrInfo err = new ErrInfo()
     {
         error_code = Tools.GetJosnValue(Body, "error_code"),
         error_msg  = Tools.GetJosnValue(Body, "error_msg")
     };
     return(err);
 }
Exemplo n.º 10
0
        get(ErrInfo err)
        {
            String msg;

            try { msg = ErrRsrc.getResource().getString(err.id); }
            catch (Exception) { msg = err.name; }

            return(new SqlEx(msg, err.sqlState, err.code));
        }         // Get
Exemplo n.º 11
0
 /// <summary>
 /// 获取错误代码和错误信息
 /// </summary>
 /// <returns></returns>
 internal ErrInfo GetErrInfo()
 {
     // {"errcode":40013,"errmsg":"invalid appid"}
     WeiXin.Domain.ErrInfo err = new ErrInfo()
     {
         ErrCode = Convert.ToInt64(Tools.GetJosnValue(Body, "errcode")),
         ErrMsg  = Tools.GetJosnValue(Body, "errmsg")
     };
     return(err);
 }
Exemplo n.º 12
0
        /// <summary>
        /// 获取错误代码和错误信息
        /// </summary>
        /// <returns></returns>
        internal ErrInfo GetErrInfo()
        {
            var err = new ErrInfo()
            {
                ErrCode = Convert.ToInt64(Tools.GetJosnValue(Body, "errcode")),
                ErrMsg  = Tools.GetJosnValue(Body, "errmsg")
            };

            return(err);
        }
Exemplo n.º 13
0
        }         // get

        /*
        ** Name: get
        **
        ** Description:
        **	Generate an SqlEx exception from an ErrInfo constant
        **	and a general exception.  The general exception is
        **	converted into an SqlEx exception and chained to the
        **	SqlEx exception created from the error information.
        **
        ** Input:
        **	err	    ErrInfo constant
        **	ex	    Associated exception.
        **
        ** Ouptut:
        **	None.
        **
        ** Returns:
        **	SqlEx	    The new exception object.
        **
        ** History:
        **	20-Apr-00 (gordy)
        **	    Created.
        **	11-Sep-02 (gordy)
        **	    Renamed class to remove specific product reference.
        */

        public static SqlEx get(ErrInfo err, Exception ex)
        {
            SqlEx  sqlEx;
            String msg = ex.Message;

            if (msg == null)
            {
                msg = ex.ToString();
            }
            sqlEx = (msg == null) ? get(err) : get(err, new SqlEx(msg));

            return(sqlEx);
        }         // Get
Exemplo n.º 14
0
        public RecFileInfoAppend(RecFileInfo info, bool isValid = true)
        {
            if (isValid == true)
            {
                ProgramInfo = info._ProgramInfo;
                ErrInfo     = info._ErrInfo;
            }

            if (string.IsNullOrEmpty(ErrInfo) == false)
            {
                try
                {
                    DropsCritical     = 0;
                    ScramblesCritical = 0;
                    var newInfo = new StringBuilder("");

                    string[] lines = ErrInfo.Split(new char[] { '\n' });
                    foreach (string line1 in lines)
                    {
                        string line_new = line1;
                        if (line1.StartsWith("PID:") == true)
                        {
                            string[] words = line1.Split(new char[] { ' ', ':' }, StringSplitOptions.RemoveEmptyEntries);
                            //デフォルト { "EIT", "NIT", "CAT", "SDT", "SDTT", "TOT", "ECM", "EMM" }
                            if (Settings.Instance.RecInfoDropExclude.FirstOrDefault(s => words[8].Contains(s)) == null)
                            {
                                DropsCritical     += (Int64)Convert.ToUInt64(words[5]);
                                ScramblesCritical += (Int64)Convert.ToUInt64(words[7]);
                                line_new           = line1.Replace(" " + words[8], "*" + words[8]);
                            }
                        }
                        newInfo.Append(line_new.TrimEnd('\r') + "\r\n");//単に\n付けるだけでも良いが、一応"\r\n"に確定させる
                    }

                    newInfo.AppendFormat("                              * = Critical Drop/Scramble Parameter.\r\n");
                    newInfo.AppendFormat("                              Drop:{0,9}  Scramble:{1,10}  Total\r\n", info.Drops, info.Scrambles);
                    newInfo.AppendFormat("                             *Drop:{0,9} *Scramble:{1,10} *Critical\r\n", DropsCritical, ScramblesCritical);
                    ErrInfo = newInfo.ToString();

                    return;
                }
                catch { }//エラーがあったときは、ラストへ
            }

            DropsCritical     = info.Drops;
            ScramblesCritical = info.Scrambles;
        }
Exemplo n.º 15
0
        void apierr(ErrInfo e)
        {
            if (this.InvokeRequired)
            {
                MethodInvoker invoker = new MethodInvoker(
                    delegate()
                {
                    apierrMethod(e);
                });

                this.BeginInvoke(invoker, e);
            }
            else
            {
                apierrMethod(e);
            }
        }
Exemplo n.º 16
0
        public static User GetUserInfo(string openid, string accessToken, out ErrInfo err)
        {
            err = null;
            IMpClient mpClient = new MpClient();

            GetUserInfoRequest request2 = new GetUserInfoRequest()
            {
                AccessToken = accessToken,
                OpenId      = openid,
            };
            var response2 = mpClient.Execute(request2);

            if (response2.IsError)
            {
                err = response2.ErrInfo;
                LogHelper.WriteError("Foresight.Winxin", "获取用户基本信息失败,错误信息为:" + response2.ErrInfo.ErrCode + "-" + response2.ErrInfo.ErrMsg, null);
                return(null);
            }
            else
            {
                return(response2.UserInfo);
            }
        }
Exemplo n.º 17
0
        /// <summary>
        /// 检测数据合法性
        /// </summary>
        /// <param name="ds"></param>
        /// <param name="tableName"></param>
        /// <param name="errInfos"></param>
        /// <param name="errmessage">错误记录</param>
        /// <param name="fromImportItemsDT"></param>
        /// <param name="fromDefaulValueItemsDT"></param>
        /// <param name="inImportFileButNotImportDT"></param>
        /// <returns></returns>
        virtual public bool CheckDataValid(DataSet ds, string tableName, ref List <ErrInfo> errInfos, ref string errmessage, ref DataTable fromImportItemsDT, ref DataTable fromDefaulValueItemsDT, ref DataTable inImportFileButNotImportDT)
        {
            if (ds.Tables != null && ds.Tables.Count > 0)
            {
                DataTable dt = ds.Tables[0];

                int rowNo = 1;

                #region 检测导入文件中字段是否为有效字段(字段名是否存在)
                foreach (DataColumn dc in dt.Columns)
                {
                    bool hasExist = false;          //是否存在该列字段

                    //Import需要导入部分是否包含该字段
                    foreach (DataRow dr in fromImportItemsDT.Rows)
                    {
                        if (dc.ColumnName.ToLower().Trim().Equals(dr["CName"].ToString().ToLower().Trim()))
                        {
                            hasExist = true;
                            break;
                        }
                    }
                    if (hasExist)
                    {
                        continue;
                    }
                    //Import不需要导入部分是否包含该字段
                    foreach (DataRow dr in inImportFileButNotImportDT.Rows)
                    {
                        if (dc.ColumnName.ToLower().Trim().Equals(dr["CName"].ToString().ToLower().Trim()))
                        {
                            hasExist = true;
                            break;
                        }
                    }
                    if (hasExist)
                    {
                        continue;
                    }

                    //默认值中是否包含该字段
                    foreach (DataRow dr in fromDefaulValueItemsDT.Rows)
                    {
                        if (dc.ColumnName.ToLower().Trim().Equals(dr["CName"].ToString().ToLower().Trim()))
                        {
                            hasExist = true;
                            break;
                        }
                    }
                    //该字段不存在,不能导入
                    if (hasExist == false)
                    {
                        var err = new ErrInfo
                        {
                            ErrRowNo = "所有行",
                            ErrType  = PageConst.ImportDataErrorType.ItemNotExist,
                            ErrData  = dc.ColumnName
                        };
                        var paras = new List <string> {
                            dc.ColumnName
                        };
                        err.ErrMsg = GetMessage("700003", paras);
                        errInfos.Add(err);
                    }
                }
                #endregion

                #region 字段个数不对应

                //if (fromImportItemsDT != null && fromImportItemsDT.Rows.Count > 0)
                //{
                //    DataRow importTemplateInfoDR = new ImportTemplateRule().GetImportTemplateDr(fromImportItemsDT.Rows[0]["ObjName"].ToString());
                //    if (importTemplateInfoDR != null &&
                //        dt.Columns.Count != ConvertHelper.ConvertInt(importTemplateInfoDR["ItemsCount"]))
                //    {
                //        var err = new ErrInfo
                //                      {
                //                          ErrRowNo = "所有行",
                //                          ErrType = PageConst.ImportDataErrorType.ItemNumNotMatch,
                //                          ErrData = "所有行"
                //                      };
                //        var paras = new List<string> {importTemplateInfoDR["ItemsCount"].ToString()};
                //        err.ErrMsg = GetMessage("700001", paras);
                //    }
                //}

                #endregion

                #region 检测数据的合法性
                bool success = true;    //是否检验通过

                foreach (DataRow dr in dt.Rows)
                {
                    //检测每行数据的合法性

                    if (CheckRowData(dr, tableName, fromImportItemsDT, fromDefaulValueItemsDT, rowNo.ToString(), ref errInfos, ref errmessage))
                    {
                        continue;
                    }
                    rowNo++;
                    success = false;
                }
                #endregion

                return(success);
            }
            return(false);
        }
Exemplo n.º 18
0
 /*
 ** Name: get
 **
 ** Description:
 **	Generate an SqlEx exception from an ErrInfo constant
 **	and another SqlEx exception.  The existing SqlEx
 **	exception is chained to the SqlEx exception created
 **	from the error information.
 **
 ** Input:
 **	err	    ErrInfo constant.
 **	ex	    Associated exception,
 **
 ** Output:
 **	None.
 **
 ** Returns:
 **	SqlEx	    The new exception object.
 **
 ** History:
 **	20-Apr-00 (gordy)
 **	    Created.
 **	11-Sep-02 (gordy)
 **	    Renamed class to remove specific product reference.
 */
 public static SqlEx get( ErrInfo err, SqlEx ex )
 {
     SqlEx ex_list = get( err );
     ex_list.setNextException( ex );
     return( ex_list );
 }
Exemplo n.º 19
0
        /*
        ** Name: get
        **
        ** Description:
        **	Generate an SqlEx exception from an ErrInfo constant
        **	and a general exception.  The general exception is
        **	converted into an SqlEx exception and chained to the
        **	SqlEx exception created from the error information.
        **
        ** Input:
        **	err	    ErrInfo constant
        **	ex	    Associated exception.
        **
        ** Ouptut:
        **	None.
        **
        ** Returns:
        **	SqlEx	    The new exception object.
        **
        ** History:
        **	20-Apr-00 (gordy)
        **	    Created.
        **	11-Sep-02 (gordy)
        **	    Renamed class to remove specific product reference.
        */
        public static SqlEx get( ErrInfo err, Exception ex )
        {
            SqlEx   sqlEx;
            String  msg = ex.Message;

            if ( msg == null )  msg = ex.ToString();
            sqlEx = (msg == null) ? get( err ) : get( err, new SqlEx( msg ) );

            return( sqlEx );
        }
Exemplo n.º 20
0
        /*
        ** Name: get
        **
        ** Description:
        **	Generate an SqlEx exception from an ErrInfo constant.
        **
        ** Input:
        **	err	    ErrInfo constant.
        **
        ** Output:
        **	None.
        **
        ** Returns:
        **	SqlEx	    The new exception object.
        **
        ** History:
        **	20-Apr-00 (gordy)
        **	    Created.
        **	11-Sep-02 (gordy)
        **	    Renamed class to remove specific product reference.
        */
        public static SqlEx get( ErrInfo err )
        {
            String msg;
            try { msg = ErrRsrc.getResource().getString( err.id ); }
            catch( Exception ){ msg = err.name; }

            return( new SqlEx( msg, err.sqlState, err.code ) );
        }
Exemplo n.º 21
0
 protected bool Connect(out ErrInfo err)
 {
     err = new ErrInfo("FF01", "");
     if (iComm == null)
     {
         try
         {
             string text = CommPort.Port.ToString();
             if (text == "RS232" || text == "RS485")
             {
                 //text = "COM";
                 iComm = new COM();
             }
             else
             {
                 iComm = new NetAPI.Communication.TcpClient();
             }
             //Type type = Type.GetType("NetAPI.Communication." + text, throwOnError: true);
             //iComm = (ICommunication)Activator.CreateInstance(type);
             iComm.readerName = ReaderName;
         }
         catch (Exception ex)
         {
             err = new ErrInfo("FF01", ex.Message);
             Log.Fatal(CommPort.Port.ToString() + ":" + ex.Message);
             return(false);
         }
     }
     if (iComm != null)
     {
         //Assembly assembly = Assembly.LoadFrom(APIPath.folderName + "\\API.dll");
         //Type type2 = assembly.GetType("NetAPI.Protocol.VRP.Decode", throwOnError: true);
         //iComm.iProcess = (IProcess)Activator.CreateInstance(type2);
         iComm.iProcess = new Decode();
         try
         {
             if (iComm.Open(CommPort.ConnStr))
             {
                 iComm.OnMsgReceived  += iConn_OnMsgReceived;
                 iComm.OnBuffReceived += iConn_OnBuffReceived;
                 iComm.threadProcess   = new Thread(iComm.process);
                 iComm.threadProcess.Start();
                 if (ConnectMessage != null && !(CommPort is UdpPort))
                 {
                     bool flag = false;
                     for (int i = 0; i < 2; i++)
                     {
                         IHostMessage connectMessage = ConnectMessage;
                         bool         flag2          = Send(connectMessage);
                         if (connectMessage.Status != MsgStatus.Timeout)
                         {
                             flag = true;
                             break;
                         }
                     }
                     if (!flag)
                     {
                         err = new ErrInfo("FF01", "协议消息测试失败");
                         Disconnect();
                         return(false);
                     }
                 }
                 return(true);
             }
         }
         catch (Exception ex2)
         {
             err = new ErrInfo("FF01", ex2.Message);
             Log.Error("iComm:" + ex2.Message);
             return(false);
         }
     }
     return(false);
 }
Exemplo n.º 22
0
        private void getuserinfo(HttpContext context)
        {
            string OpenID = GetOpenID(context);

            if (string.IsNullOrEmpty(OpenID))
            {
                WebUtil.WriteJsonError(context, ErrorCode.InvalideRequest, "获取用户OpenID失败");
                return;
            }
            ErrInfo err         = new ErrInfo();
            string  accesstoken = WeixinHelper.GetAccessToken(null);
            var     wechatuser  = WeixinHelper.GetUserInfo(OpenID, accesstoken, out err);

            if (wechatuser == null)
            {
                if (err.ErrCode == 40001)//invalid credential
                {
                    accesstoken = WeixinHelper.GetAccessToken(accesstoken);
                    wechatuser  = WeixinHelper.GetUserInfo(OpenID, accesstoken, out err);
                }
            }
            if (wechatuser == null)
            {
                WebUtil.WriteJsonError(context, ErrorCode.InvalideRequest, err.ErrMsg);
                return;
            }
            Foresight.DataAccess.Wechat_User user = Foresight.DataAccess.Wechat_User.GetWechat_UserByUserOpenID(OpenID);
            if (user == null)
            {
                user = new Foresight.DataAccess.Wechat_User()
                {
                    OpenId = OpenID,
                };
            }
            if (!string.IsNullOrEmpty(wechatuser.NickName))
            {
                user.NickName = wechatuser.NickName;
            }

            if (!string.IsNullOrEmpty(wechatuser.HeadImgUrl))
            {
                user.HeadImgUrl = wechatuser.HeadImgUrl.Replace("\\", "");
            }

            if (!string.IsNullOrEmpty(wechatuser.Sex))
            {
                user.Sex = int.Parse(wechatuser.Sex);
            }

            if (!string.IsNullOrEmpty(wechatuser.City))
            {
                user.City = wechatuser.City;
            }

            if (!string.IsNullOrEmpty(wechatuser.Country))
            {
                user.Country = wechatuser.Country;
            }

            if (!string.IsNullOrEmpty(wechatuser.Province))
            {
                user.Province = wechatuser.Province;
            }

            if (!string.IsNullOrEmpty(wechatuser.Language))
            {
                user.Language = wechatuser.Language;
            }

            if (!string.IsNullOrEmpty(wechatuser.SubScribe))
            {
                user.SubScribe = int.Parse(wechatuser.SubScribe);
            }

            if (!string.IsNullOrEmpty(wechatuser.SubscribeTime))
            {
                user.SubscribeTime = ConvertDate(wechatuser.SubscribeTime);
            }
            if (user.SubScribe != 0)
            {
                user.UnSubscribeTime = DateTime.MinValue;
            }
            else
            {
                if (user.UnSubscribeTime == DateTime.MinValue)
                {
                    user.UnSubscribeTime = DateTime.Now;
                }
            }
            if (user.FirstSubScribeTime == DateTime.MinValue)
            {
                user.FirstSubScribeTime = user.SubscribeTime;
            }
            user.Save();
            WebUtil.WriteJsonResult(context, new { status = true, HeadImgUrl = user.HeadImgUrl, NickName = user.NickName });
        }
Exemplo n.º 23
0
 void Reader_OnApiException(ErrInfo e)
 {
     apierr(e);
 }
Exemplo n.º 24
0
        /// <summary>
        /// 检测数据是否合法
        /// </summary>
        /// <param name="csvDataDR"></param>
        /// <param name="tableName"></param>
        /// <param name="fromCsvItemsDT"></param>
        /// <param name="fromDefaulValueItemsDT"></param>
        /// <param name="rowNo"></param>
        /// <param name="listErrInfo"></param>
        /// <param name="msg"></param>zzzz
        /// <returns></returns>
        public static bool CheckRowData(DataRow csvDataDR, string tableName, DataTable fromCsvItemsDT, DataTable fromDefaulValueItemsDT, string rowNo, ref List <ErrInfo> listErrInfo, ref string msg)
        {
            bool retVal = true;

            #region 数据重复Check
            DataTable dt = new ImportItemsRule().GetImportItemsDtbyPk(fromCsvItemsDT.Rows[0]["ObjName"].ToString());

            string sql = string.Format("select * from {0} where ", tableName);

            bool sqlError = false;

            if (dt != null && dt.Rows.Count > 0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    if (dr["ColType"].ToString().Equals(((int)PageConst.ImportItemTypeEnum.FromImportFile).ToString()))
                    {
                        //导入文件中的数据
                        sql += string.Format("{0}='{1}' and ", dr["xColumn"].ToString().Trim(), csvDataDR[dr["CName"].ToString().Trim()]);
                    }
                    else
                    {
                        //默认值数据
                        string pDataSource = new ReplaceParaHelper.ImportCsvReplaceParameter().ReplaceSqlValue(dr["DataSource"].ToString().Replace("\"", "'"), csvDataDR);

                        try
                        {
                            DataTable pDT = DBAccess.DbHelperSQL.QueryBySQL(pDataSource);

                            if (pDT.Rows.Count > 0)
                            {
                                sql += string.Format("{0}='{1}' and ", dr["xColumn"].ToString().Trim(), pDT.Rows[0][0].ToString().Trim());
                            }
                            else
                            {
                                sqlError = true;
                            }
                        }
                        catch (Exception ex)
                        {
                            sqlError = true;
                            msg      = ex.Message;
                        }
                    }
                }

                if (sqlError == false)
                {
                    dt = DBAccess.DbHelperSQL.QueryBySQL(sql.Trim().Substring(0, sql.Length - 4));

                    if (dt.Rows.Count > 0)
                    {
                        var paras = new List <string>(1);
                        //主键重复
                        var er = new ErrInfo
                        {
                            ErrRowNo = rowNo,
                            ErrType  = PageConst.ImportDataErrorType.DataHasExist,
                            ErrMsg   = GetMessage("700002", paras),
                            ErrData  = GetImportFileRowData(csvDataDR)
                        };

                        listErrInfo.Add(er);
                        return(false);
                    }
                }
                else
                {
                    //SQL执行错误
                    var paras = new List <string>(1);
                    var er    = new ErrInfo
                    {
                        ErrRowNo = rowNo,
                        ErrType  = PageConst.ImportDataErrorType.DataIsValid,
                        ErrMsg   = GetMessage("700010", paras),
                        ErrData  = GetImportFileRowData(csvDataDR)
                    };
                    listErrInfo.Add(er);
                    retVal = false;
                }
            }

            #endregion

            //检测导入文件中的字段是否符合规范
            foreach (DataRow dr in fromCsvItemsDT.Rows)
            {
                #region 模板文件中不存在该列
                if (!CheckItemExist(dr["CName"].ToString(), csvDataDR))
                {
                    var paras = new List <string>(1)
                    {
                        dr["CName"].ToString()
                    };

                    var er = new ErrInfo
                    {
                        ErrRowNo = rowNo,
                        ErrType  = PageConst.ImportDataErrorType.ItemNotExist,
                        ErrMsg   = GetMessage("700011", paras),
                        ErrData  = dr["CName"].ToString()
                    };
                    listErrInfo.Add(er);
                    return(false);
                }
                #endregion

                #region 找不到符合条件的数据,一般出现在数据替换的时候
                if (!string.IsNullOrEmpty(dr["DataSource"].ToString()))
                {
                    string pDataSource = new ReplaceParaHelper.ImportCsvReplaceParameter().ReplaceSqlValue(dr["DataSource"].ToString().Replace("\"", "'"), csvDataDR);

                    DataTable dt2 = DBAccess.DbHelperSQL.QueryBySQL(pDataSource);

                    if (dt2.Rows.Count <= 0)
                    {
                        var paras = new List <string>(2)
                        {
                            csvDataDR[dr["CName"].ToString()].ToString(),
                            dr["CName"].ToString()
                        };

                        var er = new ErrInfo
                        {
                            ErrRowNo = rowNo,
                            ErrType  = PageConst.ImportDataErrorType.KeyDataNotExist,
                            ErrMsg   = GetMessage("700012", paras),
                            ErrData  = csvDataDR[dr["CName"].ToString()].ToString()
                        };
                        listErrInfo.Add(er);
                    }
                }
                #endregion

                #region 检测数据类型是否正确
                if (dr["DataType"].ToString().ToLower().StartsWith("varchar") ||
                    dr["DataType"].ToString().ToLower().StartsWith("char") ||
                    dr["DataType"].ToString().ToLower().StartsWith("nvarchar"))
                {
                    //获取长度
                    int left   = dr["DataType"].ToString().ToLower().IndexOf('(') + 1;
                    int right  = dr["DataType"].ToString().ToLower().IndexOf(')');
                    int length = Convert.ToInt32(dr["DataType"].ToString().ToLower().Substring(left, right - left));

                    #region Check字符窜长度是否超出范围
                    if (PageHelper.CheckCharIsLong(csvDataDR[dr["CName"].ToString()].ToString(), length))
                    {
                        var paras = new List <string>(2)
                        {
                            dr["CName"].ToString(), length.ToString()
                        };
                        int halfLength = length / 2;
                        paras.Add(halfLength.ToString());

                        var er = new ErrInfo
                        {
                            ErrRowNo = rowNo,
                            ErrType  = PageConst.ImportDataErrorType.DataIsTooLarge,
                            ErrMsg   = GetMessage("700004", paras),
                            ErrData  = csvDataDR[dr["CName"].ToString()].ToString()
                        };
                        listErrInfo.Add(er);
                        retVal = false;
                    }
                    #endregion
                }
                else if (dr["DataType"].ToString().ToLower().StartsWith("int"))
                {
                    #region Check整数
                    if (!PageHelper.CheckIsInteger(csvDataDR[dr["CName"].ToString()].ToString()))
                    {
                        //不是整数时
                        var paras = new List <string>(1)
                        {
                            dr["CName"].ToString()
                        };

                        var er = new ErrInfo
                        {
                            ErrRowNo = rowNo,
                            ErrType  = PageConst.ImportDataErrorType.DataTypeNotMatch,
                            ErrMsg   = GetMessage("700005", paras),
                            ErrData  = csvDataDR[dr["CName"].ToString()].ToString()
                        };
                        listErrInfo.Add(er);
                        retVal = false;
                    }
                    #endregion
                }
                else if (dr["DataType"].ToString().ToLower().StartsWith("decimal"))
                {
                    //Check高精度浮点数
                    string   subStr      = dr["DataType"].ToString().ToLower().Substring(dr["DataType"].ToString().ToLower().IndexOf("(") + 1).TrimEnd(')');
                    string[] strs        = subStr.Split(',');
                    int      decimalPart = Convert.ToInt32(strs[1]);
                    int      integerPart = Convert.ToInt32(strs[0]) - decimalPart;

                    #region Check是否为Decimal类型
                    if (!PageHelper.CheckIsDecimal(csvDataDR[dr["CName"].ToString()].ToString()))
                    {
                        //不是高精度浮点数类型
                        var paras = new List <string>(1)
                        {
                            dr["CName"].ToString()
                        };

                        var er = new ErrInfo
                        {
                            ErrRowNo = rowNo,
                            ErrType  = PageConst.ImportDataErrorType.DataTypeNotMatch,
                            ErrMsg   = GetMessage("700007", paras),
                            ErrData  = csvDataDR[dr["CName"].ToString()].ToString()
                        };
                        listErrInfo.Add(er);
                        retVal = false;
                    }
                    #endregion
                    #region Check高精度型的位数是否正确
                    else
                    {
                        //是高精度浮点数,但超出范围
                        if (PageHelper.CheckDecimalIsBigger(csvDataDR[dr["CName"].ToString()].ToString(), integerPart, decimalPart))
                        {
                            //不是高精度浮点数类型
                            var paras = new List <string>(3)
                            {
                                dr["CName"].ToString(),
                                integerPart.ToString(),
                                decimalPart.ToString()
                            };

                            var er = new ErrInfo
                            {
                                ErrRowNo = rowNo,
                                ErrType  = PageConst.ImportDataErrorType.DataTypeNotMatch,
                                ErrMsg   = GetMessage("700008", paras),
                                ErrData  = csvDataDR[dr["CName"].ToString()].ToString()
                            };
                            listErrInfo.Add(er);
                            retVal = false;
                        }
                    }
                    #endregion
                }
                else if (dr["DataType"].ToString().ToLower().StartsWith("datetime"))
                {
                    #region Check日期格式
                    if (!PageHelper.CheckIsDateTime(csvDataDR[dr["CName"].ToString()].ToString()))
                    {
                        var paras = new List <string>(1)
                        {
                            dr["CName"].ToString()
                        };

                        var er = new ErrInfo
                        {
                            ErrRowNo = rowNo,
                            ErrType  = PageConst.ImportDataErrorType.DataTypeNotMatch,
                            ErrMsg   = GetMessage("700009", paras),
                            ErrData  = csvDataDR[dr["CName"].ToString()].ToString()
                        };
                        listErrInfo.Add(er);
                        retVal = false;
                    }
                    #endregion
                }
                #endregion

                #region 检测是否符合某些验证规范
                if (!String.IsNullOrEmpty(dr["CheckMethod"].ToString()))
                {
                    string[] methods    = dr["CheckMethod"].ToString().Split(';');
                    bool     hasChecked = false;

                    foreach (string method in methods)
                    {
                        if (hasChecked)
                        {
                            break;
                        }

                        switch (method)
                        {
                            #region 检测是否不为空
                        case "CheckIsNotEmpty":
                            if (!PageHelper.CheckIsNotEmpty(csvDataDR[dr["CName"].ToString()].ToString()))
                            {
                                var paras = new List <string>(1)
                                {
                                    dr["CName"].ToString()
                                };

                                var er = new ErrInfo
                                {
                                    ErrRowNo = rowNo,
                                    ErrType  = PageConst.ImportDataErrorType.DataTypeNotMatch,
                                    ErrMsg   = GetMessage("700014", paras),
                                    ErrData  = csvDataDR[dr["CName"].ToString()].ToString()
                                };
                                listErrInfo.Add(er);
                                retVal     = false;
                                hasChecked = true;
                            }
                            break;

                            #endregion
                            #region 检测是否为整数
                        case "CheckIsInteger":
                            if (!PageHelper.CheckIsInteger(csvDataDR[dr["CName"].ToString()].ToString()))
                            {
                                var paras = new List <string>(1)
                                {
                                    dr["CName"].ToString()
                                };

                                var er = new ErrInfo
                                {
                                    ErrRowNo = rowNo,
                                    ErrType  = PageConst.ImportDataErrorType.DataTypeNotMatch,
                                    ErrMsg   = GetMessage("700005", paras),
                                    ErrData  = csvDataDR[dr["CName"].ToString()].ToString()
                                };
                                listErrInfo.Add(er);
                                retVal     = false;
                                hasChecked = true;
                            }
                            break;

                            #endregion
                            #region 检测是否为数字类型
                        case "CheckIsDecimal":
                            if (!PageHelper.CheckIsDecimal(csvDataDR[dr["CName"].ToString()].ToString()))
                            {
                                var paras = new List <string>(1)
                                {
                                    dr["CName"].ToString()
                                };

                                var er = new ErrInfo
                                {
                                    ErrRowNo = rowNo,
                                    ErrType  = PageConst.ImportDataErrorType.DataTypeNotMatch,
                                    ErrMsg   = GetMessage("700007", paras),
                                    ErrData  = csvDataDR[dr["CName"].ToString()].ToString()
                                };
                                listErrInfo.Add(er);
                                retVal     = false;
                                hasChecked = true;
                            }
                            break;

                            #endregion
                            #region 检测是否为字符类型
                        case "CheckIsChar":
                            if (!PageHelper.CheckIsChar(csvDataDR[dr["CName"].ToString()].ToString()))
                            {
                                var paras = new List <string>(1)
                                {
                                    dr["CName"].ToString()
                                };

                                var er = new ErrInfo
                                {
                                    ErrRowNo = rowNo,
                                    ErrType  = PageConst.ImportDataErrorType.DataTypeNotMatch,
                                    ErrMsg   = GetMessage("700015", paras),
                                    ErrData  = csvDataDR[dr["CName"].ToString()].ToString()
                                };
                                listErrInfo.Add(er);
                                retVal     = false;
                                hasChecked = true;
                            }
                            break;

                            #endregion
                            #region 检测是否为数字字母类型
                        case "CheckIsNumChar":
                            if (!PageHelper.CheckIsNumChar(csvDataDR[dr["CName"].ToString()].ToString()))
                            {
                                var paras = new List <string>(1)
                                {
                                    dr["CName"].ToString()
                                };

                                var er = new ErrInfo
                                {
                                    ErrRowNo = rowNo,
                                    ErrType  = PageConst.ImportDataErrorType.DataTypeNotMatch,
                                    ErrMsg   = GetMessage("700016", paras),
                                    ErrData  = csvDataDR[dr["CName"].ToString()].ToString()
                                };
                                listErrInfo.Add(er);
                                retVal     = false;
                                hasChecked = true;
                            }
                            break;

                            #endregion
                            #region 检测是否为邮件类型
                        case "CheckIsEmail":
                            if (!PageHelper.CheckIsEmail(csvDataDR[dr["CName"].ToString()].ToString()))
                            {
                                var paras = new List <string>(1)
                                {
                                    dr["CName"].ToString()
                                };

                                var er = new ErrInfo
                                {
                                    ErrRowNo = rowNo,
                                    ErrType  = PageConst.ImportDataErrorType.DataTypeNotMatch,
                                    ErrMsg   = GetMessage("700017", paras),
                                    ErrData  = csvDataDR[dr["CName"].ToString()].ToString()
                                };
                                listErrInfo.Add(er);
                                retVal     = false;
                                hasChecked = true;
                            }
                            break;

                            #endregion
                            #region 检测是否为日期类型
                        case "CheckIsDate":
                            if (!PageHelper.CheckIsDateTime(csvDataDR[dr["CName"].ToString()].ToString()))
                            {
                                var paras = new List <string>(1)
                                {
                                    dr["CName"].ToString()
                                };

                                var er = new ErrInfo
                                {
                                    ErrRowNo = rowNo,
                                    ErrType  = PageConst.ImportDataErrorType.DataTypeNotMatch,
                                    ErrMsg   = GetMessage("700009", paras),
                                    ErrData  = csvDataDR[dr["CName"].ToString()].ToString()
                                };
                                listErrInfo.Add(er);
                                retVal     = false;
                                hasChecked = true;
                            }
                            break;

                            #endregion
                            #region 检测是否为有效的身份证号码
                        case "CheckIsIdCardNo":
                            if (!PageHelper.CheckIsIdCardNo(csvDataDR[dr["CName"].ToString()].ToString()))
                            {
                                var paras = new List <string>(1)
                                {
                                    dr["CName"].ToString()
                                };

                                var er = new ErrInfo
                                {
                                    ErrRowNo = rowNo,
                                    ErrType  = PageConst.ImportDataErrorType.DataTypeNotMatch,
                                    ErrMsg   = GetMessage("700018", paras),
                                    ErrData  = csvDataDR[dr["CName"].ToString()].ToString()
                                };
                                listErrInfo.Add(er);
                                retVal     = false;
                                hasChecked = true;
                            }
                            break;

                            #endregion
                            #region 检测是否为正数
                        case "ChechIsSignless":
                            if (!PageHelper.ChechIsSignless(csvDataDR[dr["CName"].ToString()].ToString()))
                            {
                                var paras = new List <string>(1)
                                {
                                    dr["CName"].ToString()
                                };

                                var er = new ErrInfo
                                {
                                    ErrRowNo = rowNo,
                                    ErrType  = PageConst.ImportDataErrorType.DataTypeNotMatch,
                                    ErrMsg   = GetMessage("700019", paras),
                                    ErrData  = csvDataDR[dr["CName"].ToString()].ToString()
                                };
                                listErrInfo.Add(er);
                                retVal     = false;
                                hasChecked = true;
                            }
                            break;

                            #endregion
                            #region 检测是否为有效的手机号码
                        case "CheckIsMobile":
                            if (!PageHelper.CheckIsMobile(csvDataDR[dr["CName"].ToString()].ToString()))
                            {
                                var paras = new List <string>(1)
                                {
                                    dr["CName"].ToString()
                                };

                                var er = new ErrInfo
                                {
                                    ErrRowNo = rowNo,
                                    ErrType  = PageConst.ImportDataErrorType.DataTypeNotMatch,
                                    ErrMsg   = GetMessage("700020", paras),
                                    ErrData  = csvDataDR[dr["CName"].ToString()].ToString()
                                };
                                listErrInfo.Add(er);
                                retVal     = false;
                                hasChecked = true;
                            }
                            break;

                            #endregion
                            #region 检测是否为正整数类型
                        case "CheckIsSignlessInteger":
                            if (!PageHelper.CheckIsSignlessInteger(csvDataDR[dr["CName"].ToString()].ToString()))
                            {
                                var paras = new List <string>(1)
                                {
                                    dr["CName"].ToString()
                                };

                                var er = new ErrInfo
                                {
                                    ErrRowNo = rowNo,
                                    ErrType  = PageConst.ImportDataErrorType.DataTypeNotMatch,
                                    ErrMsg   = GetMessage("700021", paras),
                                    ErrData  = csvDataDR[dr["CName"].ToString()].ToString()
                                };
                                listErrInfo.Add(er);
                                retVal     = false;
                                hasChecked = true;
                            }
                            break;

                            #endregion
                            #region 检测是否为中文类型
                        case "isChinese":
                            if (!PageHelper.IsChinese(csvDataDR[dr["CName"].ToString()].ToString()))
                            {
                                var paras = new List <string>(1)
                                {
                                    dr["CName"].ToString()
                                };

                                var er = new ErrInfo
                                {
                                    ErrRowNo = rowNo,
                                    ErrType  = PageConst.ImportDataErrorType.DataTypeNotMatch,
                                    ErrMsg   = GetMessage("700023", paras),
                                    ErrData  = csvDataDR[dr["CName"].ToString()].ToString()
                                };
                                listErrInfo.Add(er);
                                retVal     = false;
                                hasChecked = true;
                            }
                            break;

                            #endregion
                            #region 检测是否为非负数
                        case "CheckIsNonnegativeInteger":
                            if (!PageHelper.CheckIsNonnegativeInteger(csvDataDR[dr["CName"].ToString()].ToString()))
                            {
                                var paras = new List <string>(1)
                                {
                                    dr["CName"].ToString()
                                };

                                var er = new ErrInfo
                                {
                                    ErrRowNo = rowNo,
                                    ErrType  = PageConst.ImportDataErrorType.DataTypeNotMatch,
                                    ErrMsg   = GetMessage("700022", paras),
                                    ErrData  = csvDataDR[dr["CName"].ToString()].ToString()
                                };
                                listErrInfo.Add(er);
                                retVal     = false;
                                hasChecked = true;
                            }
                            break;
                            #endregion
                        }
                    }
                }
                #endregion
            }
            return(retVal);
        }
Exemplo n.º 25
0
 public void Log(string msg, ErrInfo e)
 {
     Console.WriteLine(msg);
     Log(string.Format("ErrCode:{0}" +
                       "\r\nErrMsg:{1}", e.ErrCode, e.ErrMsg));
 }
Exemplo n.º 26
0
        /// <summary>
        /// 如果检测成功,则把数据导入到数据库
        /// </summary>
        /// <param name="tableName"></param>
        /// <param name="dt"></param>
        /// <param name="fromImportItemsDT"></param>
        /// <param name="fromDefaulValueItemsDT"></param>
        /// <param name="errInfos"></param>
        virtual public bool ImportDate(string tableName, DataTable dt, DataTable fromImportItemsDT, DataTable fromDefaulValueItemsDT, ref List <ErrInfo> errInfos)
        {
            string sql = string.Format("insert into {0}", tableName);
            string fields;
            string values;
            List <SqlParameter> paramList;
            int j = 0;

            foreach (DataRow dr in dt.Rows)
            {
                j++;
                fields    = "(";
                values    = "(";
                paramList = new List <SqlParameter>(dt.Rows.Count);

                //导入文件中的数据
                if (fromImportItemsDT != null && fromImportItemsDT.Rows.Count > 0)
                {
                    foreach (DataRow dr2 in fromImportItemsDT.Rows)
                    {
                        fields += string.Format("{0},", dr2["xColumn"].ToString().Trim());


                        string pDataSource = new ReplaceParaHelper.ImportCsvReplaceParameter().ReplaceSqlValue(
                            dr2["DataSource"].ToString().Replace("\"", "'"), dr);
                        if (!pDataSource.Equals(string.Empty))
                        {
                            DataTable pDataSourceDT = DBAccess.DbHelperSQL.Fill(pDataSource);
                            if (pDataSourceDT.Rows.Count > 0)
                            {
                                string value = pDataSourceDT.Rows[0][0].ToString();
                                paramList.Add(new SqlParameter(string.Format("@{0}", dr2["xColumn"].ToString().Trim()), value));
                                values += string.Format("@{0},", dr2["xColumn"].ToString().Trim());
                            }
                            else
                            {
                                paramList.Add(new SqlParameter(string.Format("@{0}", dr2["xColumn"].ToString().Trim()), DBNull.Value));
                                values += string.Format("@{0},", dr2["xColumn"].ToString().Trim());
                            }
                        }
                        else
                        {
                            paramList.Add(new SqlParameter(string.Format("@{0}", dr2["xColumn"].ToString().Trim()),
                                                           dr[dr2["CName"].ToString()].ToString()));
                            values += string.Format("@{0},", dr2["xColumn"].ToString().Trim());
                        }

                        //paramList.Add(new SqlParameter("@" + dr2["xColumn"].ToString(), dr[dr2["CName"].ToString()].ToString()));
                        //values += "@" + dr2["xColumn"].ToString() + ",";
                    }
                }

                //导入默认值的数据
                if (fromDefaulValueItemsDT.Rows.Count > 0)
                {
                    foreach (DataRow dr2 in fromDefaulValueItemsDT.Rows)
                    {
                        fields += string.Format("{0},", dr2["xColumn"].ToString().Trim());
                        string pDataSource = new ReplaceParaHelper.ImportCsvReplaceParameter().ReplaceSqlValue(dr2["DataSource"].ToString().Replace("\"", "'"), dr);
                        if (!pDataSource.Equals(string.Empty))
                        {
                            DataTable pDataSourceDT = DBAccess.DbHelperSQL.Query(pDataSource).Tables[0];
                            if (pDataSourceDT.Rows.Count > 0)
                            {
                                string value = pDataSourceDT.Rows[0][0].ToString();
                                paramList.Add(new SqlParameter(string.Format("@{0}", dr2["xColumn"].ToString().Trim()), value));
                                values += string.Format("@{0},", dr2["xColumn"].ToString().Trim());
                            }
                            else
                            {
                                paramList.Add(new SqlParameter(string.Format("@{0}", dr2["xColumn"].ToString().Trim()), DBNull.Value));
                                values += string.Format("@{0},", dr2["xColumn"].ToString().Trim());
                            }
                        }
                        else
                        {
                            paramList.Add(new SqlParameter(string.Format("@{0}", dr2["xColumn"].ToString().Trim()), DBNull.Value));
                            values += string.Format("@{0},", dr2["xColumn"].ToString().Trim());
                        }
                    }
                }

                fields  = fields.Substring(0, fields.Length - 1);
                values  = values.Substring(0, values.Length - 1);
                fields += (")");
                values += (")");
                string insertSql = string.Format("{0}{1} Values {2};SELECT @@identity AS 'id'", sql, fields, values);
                try
                {
                    DbHelper.ExecuteSql(insertSql, paramList);
                }
                catch (Exception exception)
                {
                    var err = new ErrInfo
                    {
                        ErrRowNo = j.ToString(),
                        ErrType  = "",
                        ErrData  = "",
                        ErrMsg   = exception.Message.Replace("'", "")
                    };
                    errInfos.Add(err);
                    return(false);
                }
            }
            return(true);
        }