Ejemplo n.º 1
0
        private static bool SaveGroupDelivery(Entity.券商 groupItem, DateTime date)
        {
            var saveResult = false;

            var data = DataHelper.QueryHisDelivery(date, date, groupItem);

            if (data != null)
            {
                if (data.Rows.Count > 0)
                {
                    DataHelper.StandardDeliveryDataTable(data, date);
                    using (var db = new DataComparisionDataset())
                    {
                        var oldData = db.交割单ds.Where(_ => _.交割日期 == date && _.组合号 == groupItem.称);
                        if (oldData.Count() > 0)
                        {
                            db.交割单ds.RemoveRange(oldData);
                            db.SaveChanges();
                        }
                    }
                    saveResult = DataHelper.WriteToDB(data, "交割单");
                }
                else
                {
                    saveResult = true;
                }
            }
            return(saveResult);
        }
Ejemplo n.º 2
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                using (var db = new DataComparisionDataset())
                {
                    if (IsCreateNew)
                    {
                        var item = SetEntityFromPage(Entity);

                        db.软件委托ds.Add(item);
                        db.SaveChanges();
                    }
                    else
                    {
                        var list = db.软件委托ds.Where(_ => _.组合号 == Entity.组合号 && _.成交日期 == Entity.成交日期).ToList();
                        if (list.Count > 0)
                        {
                            var item = list.FirstOrDefault(_ => _.IsSame(Entity));
                            if (item != null)
                            {
                                SetEntityFromPage(item);
                                db.SaveChanges();
                            }
                            else
                            {
                                CommonUtils.ShowMsg("未找到数据对应项");
                            }
                        }
                        else
                        {
                            CommonUtils.ShowMsg("未找到数据对应项");
                        }
                    }
                }
                if (OnEditComplete != null)
                {
                    OnEditComplete.Invoke();
                }
                this.Close();
            }
            catch (Exception ex)
            {
                CommonUtils.ShowMsg("保存失败!" + ex.Message);
            }
        }
Ejemplo n.º 3
0
        private void Button_Save_Click(object sender, RoutedEventArgs e)
        {
            if (cbHisType.SelectedIndex != 0)
            {
                return;
            }

            var o  = cmbGroup.SelectedItem as 券商;
            var dt = ExportData;
            var sd = dpStart.SelectedDate.Value;
            var ed = dpEnd.SelectedDate.Value;

            bool saveResult = false;

            this.loading.ShowLoading();
            Dispatcher.RunAsync(() =>
            {
                try
                {
                    DataHelper.StandardDeliveryDataTable(dt);
                    using (var db = new DataComparisionDataset())
                    {
                        var oldData = db.交割单ds.Where(_ => _.交割日期 >= sd && _.交割日期 <= ed);
                        if (oldData.Count() > 0)
                        {
                            db.交割单ds.RemoveRange(oldData);
                            db.SaveChanges();
                        }
                    }
                    saveResult = DataHelper.WriteToDB(dt, "交割单");
                }
                catch (Exception ex)
                {
                    Dispatcher.ShowMsg("保存出错:" + ex.Message);
                }
            }, null, null,
                                () => {
                this.dgDelivery.ItemsSource = null;
                this.loading.HideLoading();
                if (saveResult)
                {
                    CommonUtils.ShowMsg("保存完毕!");
                }
                else
                {
                    CommonUtils.ShowMsg("保存失败!");
                }
            });
        }
Ejemplo n.º 4
0
        private bool SaveAsSoftwareData(DataTable dt, DataComparisionDataset db, Dictionary <string, string> pageConfig, bool isSaveFromPage, out string msg)
        {
            msg = string.Empty;
            try
            {
                var fileName = dt.TableName.GetFileName();
                var date     = fileName.GetDate();
                var group    = fileName.GetGroupName();
                if (date == DateTime.MinValue)
                {
                    msg = string.Format("软件委托文件名中必须包含交易日期,文件{0}未符合条件。", fileName);
                    return(false);
                }

                var dict    = (isSaveFromPage || string.IsNullOrEmpty(group)) ? pageConfig : CommonUtils.GetConfig(group + "软件委托").FromJson <Dictionary <string, string> >();
                var lstSoft = GetSoftList(date, dt, dict);
                if (lstSoft.Count == 0)
                {
                    msg = "符合条件的数据条数为0,将跳过此文件:" + fileName;
                    return(false);
                }

                var groupList  = lstSoft.Select(_ => _.组合号).Distinct().ToList();
                var formatData = db.软件委托ds.Where(_ => _.成交日期 == date && groupList.Contains(_.组合号));
                if (formatData.Count() > 0)
                {
                    if (isSaveFromPage && MessageBox.Show("已存在对应软件委托数据,是否删除并保存?", "Save", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel)
                    {
                        return(false);
                    }
                    db.软件委托ds.RemoveRange(formatData);
                }

                db.软件委托ds.AddRange(lstSoft);
                db.SaveChanges();
                if (isSaveFromPage)
                {
                    CommonUtils.SetConfig(group + "软件委托", dict.ToJson());
                }
            }
            catch (Exception ex)
            {
                CommonUtils.Log(string.Format("软件委托导入失败, 关联文件名{0}!", dt.TableName), ex);
                msg = "保存软件委托失败,详情请查看日志!";
                return(false);
            }
            return(true);
        }
Ejemplo n.º 5
0
        private bool SaveAsDeliveryData(DataTable dt, DataComparisionDataset db, Dictionary <string, string> pageConfig, bool isSaveFromPage, out string msg)
        {
            msg = string.Empty;
            try
            {
                var fileName = dt.TableName.GetFileName();
                var group    = fileName.GetGroupName();
                var date     = fileName.GetDate();
                if (date == DateTime.MinValue || string.IsNullOrEmpty(group))
                {
                    msg = string.Format("交割单文件名中必须同时包含组合号及交易日期,文件{0}未符合条件。", fileName);
                    return(false);
                }

                var dict = isSaveFromPage ? pageConfig : CommonUtils.GetConfig(group + "交割单").FromJson <Dictionary <string, string> >();
                var list = GetDeliveryList(dt, group, dict);
                if (list.Count == 0)
                {
                    msg = "符合条件的数据条数为0,交割单默认保存条件为发生金额大于0,将跳过此文件:" + fileName;
                    return(false);
                }

                var groupList  = list.Select(_ => _.组合号).ToList();
                var formatData = db.交割单ds.Where(_ => _.交割日期 == date && groupList.Contains(_.组合号));
                if (formatData.Count() > 0)
                {
                    if (isSaveFromPage && MessageBox.Show("已存在对应交割单数据,是否删除旧数据并保存?", "交割单保存", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel)
                    {
                        return(false);
                    }
                    db.交割单ds.RemoveRange(formatData);
                }

                db.交割单ds.AddRange(list);
                db.SaveChanges();
                if (isSaveFromPage)
                {
                    CommonUtils.SetConfig(group + "交割单", dict.ToJson());
                }
            }
            catch (Exception ex)
            {
                CommonUtils.Log(string.Format("交割单导入失败, 关联文件名{0}!", dt.TableName), ex);
                msg = "保存交割单失败,详情请查看日志!";
                return(false);
            }
            return(true);
        }
Ejemplo n.º 6
0
        private void Button_Delete_Click(object sender, RoutedEventArgs e)
        {
            var o = (sender as Button).DataContext as 券商;

            using (var db = new DataComparisionDataset())
            {
                var item = db.券商ds.FirstOrDefault(_ => _.称 == o.称);
                if (item != null)
                {
                    db.券商ds.Remove(item);
                    db.SaveChanges();
                    Init();
                    MessageBox.Show("删除成功!");
                }
            }
        }
Ejemplo n.º 7
0
        private void CalculateAsync(DateTime dtStart, DateTime dtEnd, string groupName = null)
        {
            ControlUtils.ShowLoading(this.loading);
            Task t = new Task(() =>
            {
                try
                {
                    using (var db = new DataComparisionDataset())
                    {
                        var lstTotalExists = db.合计表ds.Where(_ => _.日期 >= dtStart && _.日期 <= dtEnd);
                        var lstDeli        = db.交割单ds.Where(_ => _.交割日期 >= dtStart && _.交割日期 <= dtEnd).OrderBy(_ => _.组合号).ThenBy(_ => _.SortSequence).ToList();
                        var lstSoft        = db.软件委托ds.Where(_ => _.成交日期 >= dtStart && _.成交日期 <= dtEnd).OrderBy(_ => _.组合号).ThenBy(_ => _.SortSequence).ToList();

                        if (!string.IsNullOrEmpty(groupName))
                        {
                            lstTotalExists = lstTotalExists.Where(_ => _.账户 == groupName);
                            lstDeli        = lstDeli.Where(_ => _.组合号 == groupName).ToList();
                            lstSoft        = lstSoft.Where(_ => _.组合号 == groupName).ToList();
                        }

                        var list = Entity.EntityCompareUtil.CompareData(lstDeli, lstSoft);

                        db.合计表ds.RemoveRange(lstTotalExists);
                        db.合计表ds.AddRange(list);
                        db.SaveChanges();

                        Dispatcher.HideLoading(this.loading);
                        Dispatcher.RunAsync(null, () => { RefreshPage(); });
                    }
                }
                catch (Exception ex)
                {
                    CommonUtils.Log(DateTime.Now.ToShortTimeString() + " 计算合并信息时出错 ", ex);
                    Dispatcher.ShowMsg("运行异常,计算合并信息时出错,详情请查看日志!");
                    Dispatcher.HideLoading(this.loading);
                }
            });

            t.Start();

            //var thread = new Thread(new ThreadStart(() =>
            //{

            //}));
            //thread.Start();
        }
Ejemplo n.º 8
0
        //static bool? _isExists = null;
        ///// <summary>
        ///// 是否存在本机AAS数据库
        ///// </summary>
        //public static bool IsExistsAAS
        //{
        //    get
        //    {
        //        if (_isExists == null)
        //        {
        //            try
        //            {
        //                using (var conn = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=AAS;Integrated Security=True;"))
        //                {
        //                    conn.Open();
        //                    if (conn.State == ConnectionState.Open)
        //                    {
        //                        conn.Close();
        //                        _isExists = true;
        //                    }
        //                    else
        //                    {
        //                        _isExists = false;
        //                    }
        //                }
        //            }
        //            catch
        //            {
        //                _isExists = false;
        //            }
        //        }

        //        return _isExists == true;
        //    }
        //}
        #endregion

        public static bool ImportGroupFromAAS(bool isCover)
        {
            bool isImportSuccess = false;

            var           dt         = new DataTable();
            string        cmd        = "SELECT [名称] ,[启用] ,[交易服务器] ,[版本号] ,[营业部代码] ,[登录帐号] ,[交易帐号] ,[交易密码] ,[通讯密码] FROM [AAS].[dbo].[券商帐户]";
            List <string> groupNames = new List <string>();

            using (var adapter = new SqlDataAdapter(cmd, "Data Source=.\\SQLEXPRESS;Initial Catalog=AAS;Integrated Security=True;"))
            {
                adapter.Fill(dt);
                dt.Columns.Add("IP");
                dt.Columns.Add("Port");
                for (int i = dt.Rows.Count - 1; i > -1; i--)
                {
                    var item   = dt.Rows[i];
                    var ipInfo = item["交易服务器"].ToString().Split(':');
                    item["IP"]   = ipInfo[1];
                    item["Port"] = ipInfo[2];

                    if (isCover)
                    {
                        groupNames.Add(item["名称"].ToString());
                    }
                    else
                    {
                        dt.Rows.RemoveAt(i);
                    }
                }
            }

            using (var db = new DataComparisionDataset())
            {
                var old = db.券商ds.Where(_ => groupNames.Contains(_.称)).ToList();
                db.券商ds.RemoveRange(old);
                db.SaveChanges();
            }


            isImportSuccess = WriteToDB(dt, "券商");
            return(isImportSuccess);
        }
Ejemplo n.º 9
0
        private void Button_Save_Click(object sender, RoutedEventArgs e)
        {
            if (Validate())
            {
                try
                {
                    券商            o       = GetPageEntity();
                    StringBuilder ErrInfo = new StringBuilder(256);
                    //int clientID = TdxApi.Logon(o.IP, o.Port, o.版本号, o.营业部代码, o.登录帐号, o.交易帐号, o.TradePsw, o.CommunicatePsw, ErrInfo);
                    //if (clientID > -1)
                    //{

                    //    TdxApi.Logoff(clientID);
                    //}
                    //else
                    //{
                    //    MessageBox.Show("登录验证失败, 错误信息:" + ErrInfo.ToString());
                    //}
                    using (var db = new DataComparisionDataset())
                    {
                        var oldEntity = db.券商ds.FirstOrDefault(_ => _.称 == o.称);
                        if (oldEntity != null)
                        {
                            db.券商ds.Remove(oldEntity);
                        }


                        db.券商ds.Add(o);
                        db.SaveChanges();
                        MessageBox.Show("保存完毕", "组合号编辑");
                        this.Close();
                    }
                }
                catch (Exception ex)
                {
                    CommonUtils.ShowMsg(ex.Message);
                }
            }
        }
Ejemplo n.º 10
0
        private void Button_DeliveryNotMatched_SetSpecal_Click(object sender, RoutedEventArgs e)
        {
            var item = (sender as Button).DataContext as 交割单;

            if (item != null)
            {
                var result = MessageBox.Show("确认强制保留此交割单吗?", "交割单编辑", MessageBoxButton.OKCancel);
                if (result == MessageBoxResult.OK)
                {
                    using (var db = new DataComparisionDataset())
                    {
                        var lst      = db.交割单ds.ToList();
                        var editItem = lst.FirstOrDefault(_ => EntityCompareUtil.IsSame(item, _));
                        if (editItem != null)
                        {
                            editItem.备注 = "强制保留";
                            db.SaveChanges();
                        }
                    }
                    RefreshWindow(false);
                }
            }
        }
Ejemplo n.º 11
0
        private void Button_Soft_Delete_Click(object sender, RoutedEventArgs e)
        {
            var item = (sender as Button).DataContext as 软件委托;

            if (item != null)
            {
                var result = MessageBox.Show("确认删除此委托吗?", "委托删除", MessageBoxButton.OKCancel);
                if (result == MessageBoxResult.OK)
                {
                    using (var db = new DataComparisionDataset())
                    {
                        var lst        = db.软件委托ds.ToList();
                        var deleteItem = lst.FirstOrDefault(_ => EntityCompareUtil.IsSame(item, _));
                        if (deleteItem != null)
                        {
                            db.软件委托ds.Remove(deleteItem);
                            db.SaveChanges();
                        }
                    }
                    RefreshWindow(false);
                }
            }
        }
Ejemplo n.º 12
0
        public static void StandardDeliveryDataTable(DataTable dt, DateTime?importDate = null)
        {
            DateTime st = DateTime.Today;
            DateTime et = DateTime.MinValue;

            //1.修正列名
            StandardColumnName(dt);

            //2. 修正数据列
            for (int i = dt.Columns.Count - 1; i > -1; i--)
            {
                if (!DataHelper.DeliveryCol.Contains(dt.Columns[i].ColumnName))
                {
                    dt.Columns.RemoveAt(i);
                }
            }
            for (int i = DataHelper.DeliveryCol.Length - 1; i > -1; i--)
            {
                if (!dt.Columns.Contains(DataHelper.DeliveryCol[i]))
                {
                    dt.Columns.Add(DataHelper.DeliveryCol[i]);
                }
            }
            dt.Columns.Add("OrderID");
            dt.Columns.Add("SortSequence");


            //3. 修正数据类型,已对应当前数据库,将数字列进行转换
            List <string> colDec = new List <string>()
            {
                "成交数量", "成交价格", "成交金额", "发生金额", "手续费", "印花税", "过户费", "其他费"
            };
            List <string> groupList = new List <string>();

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                var groupName = dt.Rows[i]["组合号"].ToString();
                if (!groupList.Contains(groupName))
                {
                    groupList.Add(groupName);
                }

                var date = CommonUtils.GetDate(dt.Rows[i]["交割日期"]);
                if (date == DateTime.MinValue && importDate != null)
                {
                    date = importDate.Value;
                }
                if (st > date)
                {
                    st = date;
                }
                if (et < date)
                {
                    et = date;
                }

                dt.Rows[i]["OrderID"]      = Guid.NewGuid().ToString();
                dt.Rows[i]["SortSequence"] = i;
                dt.Rows[i]["证券代码"]         = dt.Rows[i]["证券代码"].ToString().FixStockCode();
                dt.Rows[i]["交割日期"]         = date;

                foreach (var colName in colDec)
                {
                    dt.Rows[i][colName] = CommonUtils.GetDecimal(dt.Rows[i][colName]);
                }
            }

            //4.保存数据库
            using (var db = new DataComparisionDataset())
            {
                var oldData = db.交割单ds.Where(_ => _.交割日期 >= st && _.交割日期 < et && groupList.Contains(_.组合号));

                db.交割单ds.RemoveRange(oldData);
                db.SaveChanges();
            }
        }
Ejemplo n.º 13
0
        private void Button_FileImport_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog()
            {
                CheckFileExists = true, Multiselect = false, Filter = "文本文件|*.txt"
            };

            if (true == dialog.ShowDialog())
            {
                try
                {
                    var arr = File.ReadAllLines(dialog.FileName);

                    List <Entity.券商> listImport = new List <券商>();
                    foreach (var item in arr)
                    {
                        if (item.StartsWith("名称") || string.IsNullOrWhiteSpace(item))
                        {
                            continue;
                        }
                        var info = item.Split(new[] { ',', '\t' });
                        var o    = new Entity.券商()
                        {
                            称     = info[0],
                            启用    = bool.Parse(info[1]),
                            交易服务器 = info[2],
                            IP    = info[3],
                            Port  = short.Parse(info[4]),
                            版本号   = info[5],
                            营业部代码 = short.Parse(info[6]),
                            登录帐号  = info[7],
                            交易帐号  = info[8],
                            交易密码  = info[9],
                        };
                        if (info.Length >= 11)
                        {
                            o.通讯密码 = info[10];
                        }
                        listImport.Add(o);
                    }
                    if (listImport.Count > 0)
                    {
                        using (var db = new DataComparisionDataset())
                        {
                            var listName = listImport.Select(_ => _.称);
                            var old      = db.券商ds.Where(_ => listName.Contains(_.称)).ToList();
                            if (old.Count > 0)
                            {
                                db.券商ds.RemoveRange(old);
                            }
                            db.券商ds.AddRange(listImport);
                            db.SaveChanges();
                            MessageBox.Show(string.Format("导入完成,导入{0}个券商信息,覆盖{1}个,新增{2}个!", listImport.Count, old.Count, listImport.Count - old.Count));
                        }

                        Init();
                    }
                    else
                    {
                        MessageBox.Show("导入失败!");
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }