Ejemplo n.º 1
0
        /// <summary>
        /// 消息发送
        /// </summary>
        /// <param name="data">数据</param>
        /// <param name="e">通道</param>
        /// <returns></returns>
        private WebSocketResult Web_SendText(string data)
        {
            Message_Web_SendText model = JsonExtensions.DeserializeJson <Message_Web_SendText>(data);

            if (model == null || model.FormUserID.IsNullOrEmpty() || model.ToUserID.IsNullOrEmpty() || model.Content.IsNullOrEmpty() || model.RecordID.IsNullOrEmpty() || model.RecordID.Length != 32)
            {
                return(SocketResult(ErrorCode.sys_param_format_error));
            }
            else
            {
                using (var db = new DbRepository())
                {
                    Record record = new Record();
                    record.ID          = model.RecordID;
                    record.ID          = model.RecordID;
                    record.FormUserID  = model.FormUserID;
                    record.RecordCode  = RecordCode.Text;
                    record.Content     = model.Content;
                    record.SendCode    = RecordSendCode.Sending;
                    record.SendTime    = null;
                    record.CreatedTime = DateTime.Now;
                    record.UpdatedTime = DateTime.Now;
                    db.Record.Add(record);
                    db.SaveChanges();
                    return(SocketResult(record.ID));
                }
            }
        }
Ejemplo n.º 2
0
        public void TestMethod1()
        {
            using (DbRepository entities = new DbRepository())
            {
                var query = entities.Order.AsQueryable().AsNoTracking().Where(x => (x.Flag & (long)GlobalFlag.Removed) == 0);
                //var time = DateTime.Now.Date;
                //var endTime = DateTime.Now.AddDays(1).Date;
                //query = query.Where(x => x.CreatedTime >= time && x.CreatedTime < endTime);

                var payDic     = entities.Pay.ToDictionary(x => x.ID);
                var userDic    = entities.User.ToDictionary(x => x.ID);
                var storeDic   = entities.Store.ToDictionary(x => x.ID);
                var themeDic   = entities.Theme.ToDictionary(x => x.ID);
                var drinkDic   = entities.Drink.ToDictionary(x => x.ID);
                var companyDic = entities.User.Where(x => x.MenuFlag == -1).ToDictionary(x => x.CompanyId);

                var list = query.ToList();

                var newList   = new List <OrderExecle>();
                var drinkList = new List <DrinkExecle>();
                list.ForEach(x =>
                {
                    Pay payItem = new Pay();
                    if (!string.IsNullOrEmpty(x.PayId))
                    {
                        payDic.TryGetValue(x.PayId, out payItem);
                        x.PayName = payItem?.Name;
                    }
                    Pay secondPayItem = new Pay();
                    if (!string.IsNullOrEmpty(x.SecondPayId))
                    {
                        payDic.TryGetValue(x.SecondPayId, out secondPayItem);
                        x.SecondPayName = secondPayItem?.Name;
                    }
                    User userItem;
                    userDic.TryGetValue(x.CreaterId, out userItem);
                    Store storeItem;
                    storeDic.TryGetValue(x.StoreId, out storeItem);
                    User companyItem = new User();
                    if (userItem != null)
                    {
                        companyDic.TryGetValue(userItem.CompanyId, out companyItem);
                    }
                    Theme themeItem;
                    themeDic.TryGetValue(x.ThemeId, out themeItem);
                    x.CreaterName = userItem?.Name;
                    x.CompanyName = companyItem?.Name;
                    x.StoreName   = storeItem?.Name;
                    x.ThemeName   = themeItem?.Name;

                    newList.Add(new OrderExecle()
                    {
                        CompanyName     = x.CompanyName,
                        StoreName       = x.StoreName,
                        ThemeName       = x.ThemeName,
                        AppointmentTime = x.AppointmentTime,
                        PayName         = x.PayName,
                        SecondPayName   = x.SecondPayName,
                        Money           = x.Money,
                        DrinkMoney      = x.DrinkMoney,
                        AllMoney        = x.AllMoney,
                        PeopleCount     = x.PeopleCount,
                        Mobile          = x.Mobile,
                        IsPlay          = x.IsPlay == YesOrNoCode.Yes?"已玩过":"未玩过",
                        StartTime       = x.StartTime,
                        OverTime        = x.OverTime,
                    });
                    if (!string.IsNullOrEmpty(x.DrinkJsonStr) && !x.DrinkJsonStr.Equals("[]"))
                    {
                        var orderDrinkList = JsonExtensions.DeserializeJson <List <DrinkExecle> >(x.DrinkJsonStr);
                        orderDrinkList.ForEach(y =>
                        {
                            y.CompanyId   = x.CompanyId;
                            y.CompanyName = x.CompanyName;
                        });
                        drinkList.AddRange(orderDrinkList);
                    }
                });
                IWorkbook workbook  = new HSSFWorkbook();
                ISheet    sheet     = workbook.CreateSheet();
                IRow      headerRow = sheet.CreateRow(0);
                int       rowIndex  = 1;
                headerRow.CreateCell(0).SetCellValue("公司名称");
                headerRow.CreateCell(1).SetCellValue("密室名称");
                headerRow.CreateCell(2).SetCellValue("主题名称");
                headerRow.CreateCell(3).SetCellValue("预约时间");
                headerRow.CreateCell(4).SetCellValue("支付名称");
                headerRow.CreateCell(5).SetCellValue("第二支付名称");
                headerRow.CreateCell(6).SetCellValue("补差额");
                headerRow.CreateCell(7).SetCellValue("饮料消费");
                headerRow.CreateCell(8).SetCellValue("总额");
                headerRow.CreateCell(9).SetCellValue("人数");
                headerRow.CreateCell(10).SetCellValue("手机号");
                headerRow.CreateCell(11).SetCellValue("是否玩过");
                headerRow.CreateCell(12).SetCellValue("游戏开始时间");
                headerRow.CreateCell(13).SetCellValue("游戏结束时间");

                newList.ForEach(x =>
                {
                    IRow dataRow = sheet.CreateRow(rowIndex);

                    dataRow.CreateCell(0).SetCellValue(x.CompanyName);
                    dataRow.CreateCell(1).SetCellValue(x.StoreName);
                    dataRow.CreateCell(2).SetCellValue(x.ThemeName);
                    dataRow.CreateCell(3).SetCellValue(x.AppointmentTime);
                    dataRow.CreateCell(4).SetCellValue(x.PayName);
                    dataRow.CreateCell(5).SetCellValue(x.SecondPayName);
                    dataRow.CreateCell(6).SetCellValue(x.Money != null ? x.Money.ToString() : "");
                    dataRow.CreateCell(7).SetCellValue(x.DrinkMoney != null ? x.DrinkMoney.ToString() : "");
                    dataRow.CreateCell(8).SetCellValue(x.AllMoney.ToString());
                    dataRow.CreateCell(9).SetCellValue(x.PeopleCount);
                    dataRow.CreateCell(10).SetCellValue(x.Mobile);
                    dataRow.CreateCell(11).SetCellValue(x.IsPlay);
                    dataRow.CreateCell(12).SetCellValue(x.StartTime != null ? x.StartTime.ToString() : "");
                    dataRow.CreateCell(13).SetCellValue(x.OverTime != null ? x.OverTime.ToString() : "");

                    rowIndex++;
                });

                MemoryStream ms = new MemoryStream();
                workbook.Write(ms);
                ms.Flush();
                ms.Position = 0;
                FileStream fs   = new FileStream(@"C:\root\crm\OrderExecle\订单统计-" + DateTime.Now.ToString("yyyy-MM-dd") + ".xlsx", FileMode.Create, FileAccess.Write);
                byte[]     data = ms.ToArray();
                fs.Write(data, 0, data.Length);
                fs.Flush();
                fs.Close();
                data = null;
                ms   = null;
                fs   = null;


                var companyIdList = companyDic.Keys.ToList();

                workbook = new HSSFWorkbook();
                sheet    = workbook.CreateSheet();
                rowIndex = 0;

                companyIdList.ForEach(x =>
                {
                    decimal allMoneySum = 0;
                    int allCount        = 0;
                    var companyName     = companyDic[x].Name;

                    //卖出去的饮料名集合
                    var nameList      = drinkList.Where(y => y.CompanyId.Equals(x)).ToList();
                    var drinkInfoList = nameList.GroupBy(y => y.ID).Select(y => {
                        var count    = y.Sum(z => z.Count);
                        var money    = y.FirstOrDefault().Money;
                        var allMoney = count * money;
                        allMoneySum += allMoney;
                        allCount    += count;
                        return(new Tuple <string, int, decimal>(y.Key, count, allMoney));
                    }).ToList();

                    headerRow = sheet.CreateRow(rowIndex);
                    headerRow.CreateCell(0).SetCellValue("公司名称");
                    sheet.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 1, drinkInfoList.Count + 1));
                    headerRow.CreateCell(1).SetCellValue(companyName);
                    rowIndex++;
                    IRow namedataRow = sheet.CreateRow(rowIndex);
                    rowIndex++;
                    IRow moneydataRow = sheet.CreateRow(rowIndex);
                    rowIndex++;
                    IRow countdataRow = sheet.CreateRow(rowIndex);
                    rowIndex++;
                    IRow AllMoneydataRow = sheet.CreateRow(rowIndex);
                    rowIndex++;


                    namedataRow.CreateCell(0).SetCellValue("饮料名称");
                    moneydataRow.CreateCell(0).SetCellValue("单价(元)");
                    countdataRow.CreateCell(0).SetCellValue("数量");
                    AllMoneydataRow.CreateCell(0).SetCellValue("总计");

                    var drinkIdList = entities.Drink.Where(y => y.CompanyId.Equals(x)).ToList();
                    int index       = 1;
                    if (drinkInfoList != null && drinkInfoList.Count != 0)
                    {
                        drinkIdList.ForEach(y =>
                        {
                            namedataRow.CreateCell(index).SetCellValue(y.Name);
                            moneydataRow.CreateCell(index).SetCellValue(y.Money.ToString());
                            var item = drinkInfoList.Where(z => z.Item1.Equals(y.ID)).FirstOrDefault();
                            if (item != null)
                            {
                                countdataRow.CreateCell(index).SetCellValue(item.Item2.ToString());
                                AllMoneydataRow.CreateCell(index).SetCellValue(item.Item3.ToString());
                            }
                            else
                            {
                                countdataRow.CreateCell(index).SetCellValue("0");
                                AllMoneydataRow.CreateCell(index).SetCellValue("0");
                            }
                            index++;
                        });
                        namedataRow.CreateCell(index).SetCellValue("总额");
                        moneydataRow.CreateCell(index).SetCellValue("");
                        countdataRow.CreateCell(index).SetCellValue(allCount.ToString());
                        AllMoneydataRow.CreateCell(index).SetCellValue(allMoneySum.ToString());
                    }
                    IRow emptydataRow = sheet.CreateRow(rowIndex);
                    rowIndex++;
                });

                ms = new MemoryStream();
                workbook.Write(ms);
                ms.Flush();
                ms.Position = 0;
                sheet       = null;
                headerRow   = null;
                workbook    = null;
                fs          = new FileStream(@"C:\root\crm\DrinkExecle\饮料统计-" + DateTime.Now.ToString("yyyy-MM-dd") + ".xlsx", FileMode.Create, FileAccess.Write);
                data        = ms.ToArray();
                fs.Write(data, 0, data.Length);
                fs.Flush();
                fs.Close();
                data = null;
                ms   = null;
                fs   = null;
            }

            SendMail(Params.EmailAccount, "1", "22", @"C:\root\crm\OrderExecle\订单统计-" + DateTime.Now.ToString("yyyy-MM-dd") + @".xlsx,C:\root\crm\DrinkExecle\饮料统计-" + DateTime.Now.ToString("yyyy-MM-dd") + ".xlsx");
        }