/// <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());
            }
        }
Example #4
0
        /// <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("参数错误!");
            }
        }
Example #5
0
        /// <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);
        }
Example #6
0
        /// <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);
        }
Example #7
0
        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);
        }
Example #8
0
        /// <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);
        }
Example #9
0
        /// <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);
        }