/// <summary> /// 创建链接及注册 /// </summary> private void TcpConnect() { try { lock (syncLock) { //1.断开现有TCP服务 DisTcpConnect(); //2.设定服务器IP地址 string tcpip = ConfigUtil.GetConfig("TCPServerIP"); int port = TryConvertUtil.ToInt(ConfigUtil.GetConfig("TCPServerPort"), 0); if (port <= 0) { LogUtil.Info("TCP服务端口为空!"); throw new MessageException("TCP服务端口不能为空!"); } else { IPAddress ip = IPAddress.Parse(tcpip); _clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); _clientSocket.Connect(new IPEndPoint(ip, port)); //配置服务器IP与端口 LogUtil.Info("连接TCP服务器成功!"); } //开始心跳检测 ChangeTimer(true); } } catch (Exception ex) { LogUtil.Error(string.Format("连接TCP服务器失败,参考信息:{0}!", ex)); } }
/// <summary> /// 校验终端是否存在于黑名单中 /// </summary> /// <param name="terminalCode"></param> /// <returns></returns> private bool IsExistVerifycodeBlackList(string appSign, string terminalCode) { string sql = "SELECT COUNT(black_id) FROM mcp_sys_blacklist WHERE app_sign=$app_sign$ AND terminal_code=$terminal_code$ AND lock_expire_date>CURRENT_TIMESTAMP() LIMIT 1;"; ParameterCollection pc = new ParameterCollection(); pc.Add("app_sign", appSign); pc.Add("terminal_code", terminalCode); object exist = DbUtil.DataManager.Current.IData.ExecuteScalar(sql, pc); return(TryConvertUtil.ToInt(exist, 0) > 0); }
public void CheckSocketAlive(object sender, ElapsedEventArgs e) { //N秒无心跳断开连接 var connections = GetConnetionList(); int timeOut = TryConvertUtil.ToInt(ConfigUtil.GetConfig("TcpDisconnectTime"), 0); if (connections != null && connections.Length > 0) { connections.Where(s => s.Active == false || (DateTime.Now - s.LatestActiveTime).TotalSeconds > timeOut) .ToList().ForEach(ss => ss.BeginDisconnect()); } }
/// <summary> /// 校验统计年月字符传 /// </summary> /// <param name="month">统计年月</param> public void CheckMonthIsValid(string month) { month = TryConvertUtil.ToString(month); CheckMonth(month); try { string yy = month.Substring(0, 4); string mm = month.Substring(4, 2); DateTime dt = new DateTime(TryConvertUtil.ToInt(yy), TryConvertUtil.ToInt(mm), 1); } catch { throw new MessageException("参数错误!"); } }
/// <summary> /// 读缓存 /// </summary> /// <param name="did"></param> /// <returns></returns> public int GetCache(string key) { var scode = 0; try { if (cache.Contains(key)) { scode = TryConvertUtil.ToInt(cache.Get(key)); } } catch (Exception ex) { LogUtil.Info(string.Format("读取key:{0}value发生异常,参考信息:{1}", key, ex.Message)); } return(scode); }
/// <summary> /// 校验统计月 /// </summary> /// <param name="month">统计月</param> public DateTime GetStatisMonth(string month) { DateTime statisDate = DateTime.MaxValue; CheckMonth(month); try { int yy = TryConvertUtil.ToInt(month.Substring(0, 4), DateTime.MaxValue.Year); int mm = TryConvertUtil.ToInt(month.Substring(4, 2), DateTime.MaxValue.Month); statisDate = new DateTime(yy, mm, 1); } catch (Exception ex) { LogUtil.Warn(string.Format("统计月份参数错误,参考信息:{0}。", ex.Message)); throw new MessageException(string.Format("统计月份参数错误!")); } return(statisDate); }
public static List <TResult> ToList <TResult>(this DataTable dt) where TResult : class, new() { if (dt == null) { return(null); } //创建一个属性的列表 List <PropertyInfo> prlist = new List <PropertyInfo>(); //获取TResult的类型实例 反射的入口 Type t = typeof(TResult); //获得TResult 的所有的Public 属性 并找出TResult属性和DataTable的列名称相同的属性(PropertyInfo) 并加入到属性列表 Array.ForEach <PropertyInfo>(t.GetProperties(), p => { if (dt.Columns.IndexOf(p.Name) != -1) { prlist.Add(p); } }); //创建返回的集合 List <TResult> oblist = new List <TResult>(); foreach (DataRow row in dt.Rows) { //创建TResult的实例 TResult ob = new TResult(); //找到对应的数据 并赋值 prlist.ForEach(p => { if (row[p.Name] != DBNull.Value) { Type dataType = row[p.Name].GetType(); switch (dataType.Name) { case "MySqlDateTime": p.SetValue(ob, TryConvertUtil.ToDateTime(row[p.Name]), null); break; case "Int64": case "Int32": { if (p.PropertyType == typeof(bool)) { p.SetValue(ob, TryConvertUtil.ToInt(row[p.Name]) == 1, null); } else { p.SetValue(ob, TryConvertUtil.ToInt(row[p.Name]), null); } break; } default: p.SetValue(ob, row[p.Name], null); break; } } }); //放入到返回的集合中. oblist.Add(ob); } return(oblist); }
/// <summary> /// 生成单据编号 /// </summary> /// <returns>单据编号</returns> private string GetNewBillCode() { int maxNum = 99999; ParameterCollection pc = new ParameterCollection(); string strCondition = OtherCondition; var newCode = string.Empty; var lastCode = string.Empty; var querySql = string.Format("SELECT `{0}` FROM {1} {2} ORDER BY `{0}` DESC LIMIT 0,1", CodeField, TableName, strCondition); lastCode = TryConvertUtil.ToString(DbUtil.DataManager.DataManagerMcp.IData.ExecuteScalar(querySql), string.Empty); var lastNum = -1; var prefixLength = 0; var billSerialCode = string.Empty; var day = CommonUtil.GetDBDateTime().Date.ToString("yyMMdd"); if (ConfigUtil.IsTestModel) { day = CommonUtil.GetDBDateTime().Date.AddYears(-10).ToString("yyMMdd");//测试环境使用 querySql = string.Format("SELECT `{0}` FROM {1} WHERE LEFT({0},{3})='{2}' ORDER BY `{0}` DESC LIMIT 0,1", CodeField, TableName, Prefix + day, Prefix.Length + day.Length); lastCode = TryConvertUtil.ToString(DbUtil.DataManager.DataManagerMcp.IData.ExecuteScalar(querySql), string.Empty); } if (lastCode != null && !string.IsNullOrWhiteSpace(lastCode.ToString())) { if (!string.IsNullOrWhiteSpace(Prefix)) { //单据号类似: T2013041100001 billSerialCode = lastCode.ToString().TrimStart(Prefix.ToCharArray()); prefixLength = Prefix.Length; } else { //单据号类似: 130411000001 billSerialCode = lastCode; } var dateLen = 6; //日期长度 if (billSerialCode.Length == dateLen + SerialLength) { //比较日期 var y = TryConvertUtil.ToInt(lastCode.Substring(prefixLength + 0, 2), 10); if (ConfigUtil.IsTestModel) { var temp = TryConvertUtil.ToInt(lastCode.Substring(prefixLength + 0, 2), 10); y = temp > 10 ? temp - 5 : temp;//测试环境使用 } var m = TryConvertUtil.ToInt(lastCode.Substring(prefixLength + 2, 2), 1); var d = TryConvertUtil.ToInt(lastCode.Substring(prefixLength + 4, 2), 1); var n = billSerialCode.Substring(6); //日期相等 if (day == (new DateTime(y, m, d)).ToString("yyMMdd")) { lastNum = TryConvertUtil.ToInt(n.TrimStart('0'), 1); } } } if (lastNum == -1) { lastNum = 0; } lastNum += 1; if (lastNum > maxNum) { throw new BusinessException("当日数据异常"); } newCode = string.Format("{0}{1}{2}", !string.IsNullOrWhiteSpace(Prefix) ? string.Format("{0}", Prefix) : string.Empty, day, lastNum.ToString().PadLeft(SerialLength, '0')); return(newCode); }
/// <summary> /// 检查版本信息 /// </summary> /// <param name="verModel">版本信息参数</param> /// <returns>版本信息结果</returns> public object CheckVersion(VerViewModel verModel) { //校验设备表示 bool isExist = SingleInstance <PrinterService> .Instance.CheckEquipmentIsExists(verModel.Mac); if (!isExist) { LogUtil.Info($"设备不存在-{JsonUtil.Serialize(verModel)}"); throw new MessageException("设备不存在!"); } //更改设备对应版本号 bool result = SingleInstance <PrinterService> .Instance.UpdatePrintVersion(verModel); if (!result) { throw new MessageException($"更新打印机{verModel.Mac}版本号失败,请重试"); } //获取版本 Dictionary <string, object> verDic = new Dictionary <string, object>(); ConditionCollection cc = new ConditionCollection(); cc.Add(new Condition("objec_type", TryConvertUtil.ToString(verModel.Type))); cc.Add(new Condition("status_code", StatusCodeType.Valid.GetHashCode())); int isNeed = 0; string newVer = string.Empty; string filePath = string.Empty; var lastVer = this.GetRepository <McpSysVersionInfo>().GetModel(cc); if (lastVer != null) { var isUpdate = false; var serVer = 0; var curVer = 0; var serVers = lastVer.ObjectVersion.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries); var curVers = verModel.Ver.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries); var maxLength = Math.Max(serVers.Length, curVers.Length); for (var i = 0; i < maxLength; i++) { serVer = i < serVers.Length ? TryConvertUtil.ToInt(serVers[i]) : 0; curVer = i < curVers.Length ? TryConvertUtil.ToInt(curVers[i]) : 0; if (serVer != curVer) { isUpdate = serVer > curVer; break; } else { continue; } } if (isUpdate) { isNeed = lastVer.IsForce > 0 ? 2 : 1; newVer = lastVer.ObjectVersion; filePath = lastVer.VersionFile; } } verDic.Add("IsNeedUpdate", isNeed); verDic.Add("NewVer", newVer); verDic.Add("UpdateFilePath", filePath); LogUtil.Info(string.Format("设备:{0},当前版本:{1},获取新版本...", verModel.Mac, verModel.Ver)); return(verDic); }