LEIYI пре 7 месеци
родитељ
комит
7a03519eda
1 измењених фајлова са 85 додато и 62 уклоњено
  1. 85 62
      OASystem/OASystem.Api/Controllers/StatisticsController.cs

+ 85 - 62
OASystem/OASystem.Api/Controllers/StatisticsController.cs

@@ -237,7 +237,7 @@ namespace OASystem.API.Controllers
                                                 Left Join Sys_SetData sd2 On ccp.PayDId = sd2.Id 
                                                 Left Join Sys_SetData sd3 On ccp.CTDId = sd3.Id
                                                 Left Join Sys_Users u On ccp.CreateUserId = u.Id
-												Where ccp.IsDel = 0 And ccp.CTable = 1015 {1} And ccp.DiId = {0} Order By CreateTime", _dto.DiId ,_dto.isAudit ? "And ccp.IsAuditGM = 1 And ccp.IsPay = 1 " : " ");
+												Where ccp.IsDel = 0 And ccp.CTable = 1015 {1} And ccp.DiId = {0} Order By CreateTime", _dto.DiId, _dto.isAudit ? "And ccp.IsAuditGM = 1 And ccp.IsPay = 1 " : " ");
 
                 List<Gsd_ExtraCostsView> _ExtraCostsViews = await _sqlSugar.SqlQueryable<Gsd_ExtraCostsView>(_ecSql).ToListAsync();
 
@@ -426,7 +426,7 @@ namespace OASystem.API.Controllers
                                                      Left Join Sys_SetData sd5 On hr.GovernmentRentCurrency = sd5.Id
                                                      Left Join Sys_SetData sd6 On hr.CityTaxCurrency = sd6.Id
                                                      Where hr.IsDel = 0 And ccp.IsDel = 0 And ccp.CTable = 76 {1} And ccp.PayMoney<> 0 And hr.DiId = {0} 
-                                                     Order By CheckInDate Asc", _dto.DiId , _dto.isAudit ? "And ccp.IsAuditGM = 1" : " ");
+                                                     Order By CheckInDate Asc", _dto.DiId, _dto.isAudit ? "And ccp.IsAuditGM = 1" : " ");
 
                 groupHotelFeeViews = await _sqlSugar.SqlQueryable<GroupHotelFeeView>(hotelFeeSql).ToListAsync();
 
@@ -463,7 +463,7 @@ namespace OASystem.API.Controllers
                                            是否由地接支付:{isFeeMark1} <br/>";
 
                         }
-                        
+
                         var breakfastData = groupHotelContentFeeViews.Find(it => it.HrId == item.HrId && it.PriceType == 2); //早餐 
 
                         item.BreakfastPrice = breakfastData?.Price ?? 0.00M;
@@ -501,7 +501,7 @@ namespace OASystem.API.Controllers
                                                  卡类型:{_setDatas.Find(it => it.Id == landTaxData?.CTDId)?.Name} <br/>
                                                  是否由地接支付:{isFeeMark3} <br/>";
                         }
-                        
+
                         var cityTaxData = groupHotelContentFeeViews.Find(it => it.HrId == item.HrId && it.PriceType == 4); //城市税 
 
                         item.CityTax = cityTaxData?.Price ?? 0.00M;
@@ -537,7 +537,7 @@ namespace OASystem.API.Controllers
                         //item.RoomPrice = item.CardPrice;
                         item.RoomPriceCurrency = item.PaymentCurrency;
                     }
-                    
+
                     HotelCNYTotalPrice += item.CNYPrice;
                     item.PayMoney = item.PayMoney.ConvertToDecimal1();
                     item.CNYPrice = item.CNYPrice.ConvertToDecimal1();
@@ -2157,7 +2157,7 @@ namespace OASystem.API.Controllers
             List<int> companyIds = companyData.Select(it => it.id).ToList();
 
             List<int> pickGroupUserIds = _sqlSugar.Queryable<Grp_DelegationInfo>().Where(it => it.IsDel == 0)
-                                                  .Select(it => it.JietuanOperator )
+                                                  .Select(it => it.JietuanOperator)
                                                   .ToList();
 
             //var jobData = _sqlSugar.Queryable<Sys_JobPost>().Where(it => it.IsDel == 0 && companyIds.Contains(it.CompanyId) && (it.JobName.Contains("经理") || it.JobName.Contains("主管")))
@@ -2177,7 +2177,7 @@ namespace OASystem.API.Controllers
 
             var dtData = new List<dynamic>();
             int dt = DateTime.Now.Year;
-            for (int y = dt; y >= dt-4; y--)
+            for (int y = dt; y >= dt - 4; y--)
             {
                 //季度
                 var quarterDatas = new List<dynamic>();
@@ -2208,7 +2208,7 @@ namespace OASystem.API.Controllers
                         }
 
                         //quarterData = new { name = "第二季度", beginDt = $"{y}-04-01", endDt = $"{y}-06-30", monthData = monthDatas };
-                        quarterData = new { name = "第二季度",  monthData = monthDatas };
+                        quarterData = new { name = "第二季度", monthData = monthDatas };
                     }
                     else if (q == 2)
                     {
@@ -2234,7 +2234,7 @@ namespace OASystem.API.Controllers
                         //quarterData = new { name = "第四季度", beginDt = $"{y}-10-01", endDt = $"{y}-12-31", monthData = monthDatas }; 
                         quarterData = new { name = "第四季度", monthData = monthDatas };
                     }
-                    quarterDatas.Add(quarterData); 
+                    quarterDatas.Add(quarterData);
                 }
 
                 dtData.Add(new
@@ -2294,8 +2294,8 @@ namespace OASystem.API.Controllers
 
             #endregion
 
-            string beginDt = $"{_dto.BeginDt} 00:00:00",endDt = $"{_dto.EndDt} 23:59:59";
-            
+            string beginDt = $"{_dto.BeginDt} 00:00:00", endDt = $"{_dto.EndDt} 23:59:59";
+
             return Ok(JsonView(true, "操作成功!", await GroupSales(_dto.CompanyId, _dto.GroupPickupUserId, beginDt, endDt)));
         }
 
@@ -2308,7 +2308,7 @@ namespace OASystem.API.Controllers
             List<int> userIds = new List<int>();
             var userDatas = await _sqlSugar.Queryable<Sys_Users>()
                                            .InnerJoin<Sys_Company>((u, c) => u.CompanyId == c.Id)
-                                           .Where((u, c) => u.IsDel == 0 && pickGroupIds.Contains( u.Id))
+                                           .Where((u, c) => u.IsDel == 0 && pickGroupIds.Contains(u.Id))
                                            .Select((u, c) => new { u.Id, u.CompanyId, u.CnName })
                                            .ToListAsync();
 
@@ -2333,7 +2333,7 @@ namespace OASystem.API.Controllers
         /// <param name="beginDt"></param>
         /// <param name="endDt"></param>
         /// <returns></returns>
-        private async Task<SalesYOYView> GroupSales(int companyId, int groupPickupUserId,string beginDt, string endDt)
+        private async Task<SalesYOYView> GroupSales(int companyId, int groupPickupUserId, string beginDt, string endDt)
         {
             decimal thisSales = 0.00M, lastSales = 0.00M, yoy = 1.00M;
 
@@ -2392,10 +2392,10 @@ FROM
 
             var salesData = await _sqlSugar.SqlQueryable<SalesView>(salesSql).ToListAsync();
 
-             thisSales = salesData.Where(x => x.Name.Equals("ThisSales")).First()?.Sales ?? 0;
-             lastSales = salesData.Where(x => x.Name.Equals("LastSales")).First()?.Sales ?? 0;
+            thisSales = salesData.Where(x => x.Name.Equals("ThisSales")).First()?.Sales ?? 0;
+            lastSales = salesData.Where(x => x.Name.Equals("LastSales")).First()?.Sales ?? 0;
 
-                if (lastSales != 0 && thisSales != 0) yoy = (thisSales - lastSales) / lastSales;
+            if (lastSales != 0 && thisSales != 0) yoy = (thisSales - lastSales) / lastSales;
 
             return new SalesYOYView() {
                 thisYearSales = thisSales.ToString("#0.00"),
@@ -2554,7 +2554,7 @@ FROM
             string userSql = "";
             if (userIds.Count > 0)
             {
-                userSql = string.Format(@$" AND JietuanOperator IN ({string.Join(",",userIds)})");
+                userSql = string.Format(@$" AND JietuanOperator IN ({string.Join(",", userIds)})");
             }
             else
             {
@@ -2574,7 +2574,7 @@ FROM
 
             string sql = "";
 
-            if (_dto.StatisticsType == 1 )
+            if (_dto.StatisticsType == 1)
             {
                 sql = string.Format(@$"Select 
 	sd.[Name],
@@ -2629,7 +2629,7 @@ Group By [Name]
 Order By Count Desc");
                 var clientGradeData = await _sqlSugar.SqlQueryable<MarketingSalesGroupStatisticsView>(sql2).ToListAsync();
                 return Ok(JsonView(true, "操作成功!", new {
-                    customerTypeData= customerTypeData,
+                    customerTypeData = customerTypeData,
                     clientGradeData = clientGradeData
                 }));
 
@@ -2681,7 +2681,7 @@ Order By Count Desc");
             if (userIds.Count > 0)
             {
                 userSql = string.Format(@$" AND JietuanOperator IN ({string.Join(",", userIds)})");
-            }else return Ok(JsonView(true, "操作成功!", new List<object> { }, 0));
+            } else return Ok(JsonView(true, "操作成功!", new List<object> { }, 0));
 
             string sql = string.Format(@$"Select 
 	ROW_NUMBER() Over(Order By Count(*) Desc) As RowNumber,
@@ -2886,7 +2886,7 @@ Order By Count Desc");
             if (pageFunAuthView.CheckAuth == 0) return Ok(JsonView(false, MsgTips.CheckAuth));
             #endregion
             #endregion
-            return Ok(await _visitingClientsRep._List(_dto.PortType,_dto.PageIndex,_dto.PageSize,_dto.DiId,_dto.Search));
+            return Ok(await _visitingClientsRep._List(_dto.PortType, _dto.PageIndex, _dto.PageSize, _dto.DiId, _dto.Search));
         }
 
         /// <summary>
@@ -2930,8 +2930,8 @@ Order By Count Desc");
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> PostMarketingSalesVCDel(MarketingSalesVCDelDto _dto)
         {
-            
-            return Ok(await _visitingClientsRep._Del(_dto.Id,_dto.UserId));
+
+            return Ok(await _visitingClientsRep._Del(_dto.Id, _dto.UserId));
         }
 
         /// <summary>
@@ -2979,7 +2979,7 @@ Order By Count Desc");
         public async Task<IActionResult> DailypaymentTypeInit(DailypaymentTypeInitDto _dto)
         {
             #region  参数验证
-            if (_dto.PortType < 1 || _dto.PortType > 3) return Ok(JsonView(false, msg:MsgTips.Port));
+            if (_dto.PortType < 1 || _dto.PortType > 3) return Ok(JsonView(false, msg: MsgTips.Port));
 
             PageFunAuthViewBase pageFunAuthView = new PageFunAuthViewBase();
             #region 页面操作权限验证
@@ -3057,9 +3057,9 @@ Order By Count Desc");
                 var res = await RedisRepository.RedisFactory
                                                .CreateRedisRepository()
                                                .StringSetAsync(
-                                                    key:"DailypaymentTypeData",
+                                                    key: "DailypaymentTypeData",
                                                     _dto.TypeIds,
-                                                    timeout:null );
+                                                    timeout: null);
 
                 if (!res) return Ok(JsonView(false, "操作失败"));
 
@@ -3092,7 +3092,7 @@ Order By Count Desc");
                 }
                 return Ok(JsonView(false, sb.ToString()));
             }
-           
+
 
             PageFunAuthViewBase pageFunAuthView = new PageFunAuthViewBase();
             #region 页面操作权限验证
@@ -3107,12 +3107,12 @@ Order By Count Desc");
                 DateTime _beginDt = Convert.ToDateTime($"{_dto.BeginDt} 00:00:00"),
                          _endDt = Convert.ToDateTime($"{_dto.EndDt} 23:59:59");
 
-                string sqlWhere = string.Format(@" And dfp.CreateTime Between '{0}' And '{1}'",_beginDt,_endDt);
+                string sqlWhere = string.Format(@" And dfp.CreateTime Between '{0}' And '{1}'", _beginDt, _endDt);
 
                 var dailypaymentTypeData = await RedisRepository.RedisFactory
                                                                 .CreateRedisRepository()
                                                                 .StringGetAsync<List<int>>("DailypaymentTypeData") ?? new List<int>();
-              
+
                 string sql = string.Format(@"
 Select 
 	dfp.Id,
@@ -3138,7 +3138,7 @@ Left Join Sys_SetData sd2 On dfp.PriceTypeId = sd2.Id
 Where dfp.IsDel = 0 And dfp.IsPay = 1
 ", sqlWhere);//--Order By dfp.CreateTime Desc
 
-                
+
                 if (_dto.Type == 1) //data
                 {
                     RefAsync<int> total = 0;
@@ -3178,7 +3178,7 @@ Where dfp.IsDel = 0 And dfp.IsPay = 1
                                                .ToPageListAsync(
                                                     pageNumber: 1,
                                                     pageSize: 99999
-                                                    ) ;
+                                                    );
 
                     _sqlSugar.ThenMapper(_view, x =>
                     {
@@ -3199,10 +3199,10 @@ Where dfp.IsDel = 0 And dfp.IsPay = 1
                         x.ContentStr = str;
                     });
 
-                    if (_view.Count > 0 )
+                    if (_view.Count > 0)
                     {
                         //DataTable dt = GeneralMethod.
-                        DataTable dt = CommonFun.GetDataTableFromIList(_view );
+                        DataTable dt = CommonFun.GetDataTableFromIList(_view);
                         dt.TableName = $"_view";
                         decimal total = _view.Sum(x => x.SumPrice);
                         WorkbookDesigner designer = new WorkbookDesigner();
@@ -3213,10 +3213,10 @@ Where dfp.IsDel = 0 And dfp.IsPay = 1
 
                         designer.Process();
 
-                        string fileName = $"DailyPayment/日付报表{ DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx";
+                        string fileName = $"DailyPayment/日付报表{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx";
                         designer.Workbook.Save(AppSettingsHelper.Get("ExcelBasePath") + fileName);
                         string rst = AppSettingsHelper.Get("ExcelBaseUrl") + AppSettingsHelper.Get("ExcelFtpPath") + fileName;
-                        return Ok(JsonView(true, "操作成功", new { url = rst })) ;
+                        return Ok(JsonView(true, "操作成功", new { url = rst }));
                     }
 
                     return Ok(JsonView(true, ",暂无数据"));
@@ -3232,7 +3232,7 @@ Where dfp.IsDel = 0 And dfp.IsPay = 1
         #endregion
 
         #region 统计模块
-      
+
         /// <summary>
         ///  同比
         ///  营业额(今年和去年的)、成本支出(今年和去年的)、毛利润(今年和去年的)
@@ -3244,10 +3244,10 @@ Where dfp.IsDel = 0 And dfp.IsPay = 1
         public async Task<IActionResult> StatisticsYOY(YOYDto _dto)
         {
             //同比增长率 = (本期 - 同期) / 同期 * 100%;
-            if (_dto.Year < 1) return Ok(JsonView(false,"操作失败"));
+            if (_dto.Year < 1) return Ok(JsonView(false, "操作失败"));
 
 
-            string beginDt = $"{_dto.Year-1}-01-01 00:00:00",
+            string beginDt = $"{_dto.Year - 1}-01-01 00:00:00",
                    endDt = $"{_dto.Year}-12-31 23:59:59";
 
             string sql = string.Format(@"
@@ -3439,7 +3439,7 @@ WHERE
   AND di.VisitDate BETWEEN '{0}' AND '{1}'
 ORDER BY
   di.VisitDate
-", beginDt,endDt);
+", beginDt, endDt);
 
             var data = await _sqlSugar.SqlQueryable<StatisticsYOYView>(sql).ToListAsync();
 
@@ -3475,7 +3475,7 @@ ORDER BY
             grossProfitYOYData = grossProfitYOYData.OrderBy(x => x.Month).ToList();
 
 
-            return Ok(JsonView(true,"操作成功!", new { salesYOYData = salesYOYData, costYOYData = costYOYData, grossProfitYOYData = grossProfitYOYData }));
+            return Ok(JsonView(true, "操作成功!", new { salesYOYData = salesYOYData, costYOYData = costYOYData, grossProfitYOYData = grossProfitYOYData }));
         }
 
         /// <summary>
@@ -3550,7 +3550,7 @@ WHERE
 
                             if (!string.IsNullOrEmpty(code))
                             {
-                                if (i == cityNum-1)
+                                if (i == cityNum - 1)
                                 {
                                     cityName += threeCodeData.Find(x => x.Three.Equals(code))?.City ?? "";
                                 }
@@ -3582,7 +3582,7 @@ WHERE
                 foreach (var item in monthData)
                 {
                     string groupName = groupNames.Find(x => item.DIId == x.Id)?.GroupName ?? "";
-                    aitTicketInfos.Add(new AitTicketInfo(item.DIId,groupName,item.ClientNum));
+                    aitTicketInfos.Add(new AitTicketInfo(item.DIId, groupName, item.ClientNum));
                 }
                 var aitTicketInfosGroupBy = aitTicketInfos.GroupBy(x => x.Id);
 
@@ -3598,7 +3598,7 @@ WHERE
 
                 linkGroupIds = linkGroupIds.Distinct().ToList();
 
-                airTicketNumData.Add(new AirTicketReturnView(_dto.Year, monthIndex, airticket_quantity, aitTicketInfos1,linkGroupIds));
+                airTicketNumData.Add(new AirTicketReturnView(_dto.Year, monthIndex, airticket_quantity, aitTicketInfos1, linkGroupIds));
 
                 //机票城市处理
                 //城市处理
@@ -3712,7 +3712,7 @@ WHERE
   AND hr.CheckInDate BETWEEN CONVERT(datetime,'{0}') AND CONVERT(datetime,'{1}')
 ORDER BY
   hr.CheckInDate
-", beginDt,endDt);
+", beginDt, endDt);
 
             var data = await _sqlSugar.SqlQueryable<StatisticsHotelView>(sql).ToListAsync();
 
@@ -3734,9 +3734,9 @@ ORDER BY
                                                                  otherRoomCount = g1.Sum(x => x.OtherRoomCount),
                                                              })
                                                              .ToList(),
-                                                 linkGroupIds = g.Select(x => x.DIId).Distinct().ToList()
+                                                linkGroupIds = g.Select(x => x.DIId).Distinct().ToList()
 
-                                             })
+                                            })
                                              .OrderByDescending(x => x.BookingRoomNum)
                                              .Take(10)
                                              .ToList();
@@ -3783,9 +3783,9 @@ WHERE
             var groupByData = data.GroupBy(x => x.Country)
                                   .Select(g => new
                                   {
-                                        Country = g.Key,
-                                        TimeNum = g.Count(),
-                                        LinkGroupIds = g.Select(x => x.DIId).ToList()
+                                      Country = g.Key,
+                                      TimeNum = g.Count(),
+                                      LinkGroupIds = g.Select(x => x.DIId).ToList()
 
                                   })
                                   .OrderByDescending(x => x.TimeNum)
@@ -3873,11 +3873,11 @@ WHERE
 
             var groupInfos1 = groupInfos.GroupBy(x => x.ClientName);
 
-            var view = groupInfos1.Select(x => 
-                                            new { 
-                                                clienName = x.Key, 
-                                                clientUnit = x.FirstOrDefault()?.ClientUnit ?? "", 
-                                                visitsNum = x.Count() 
+            var view = groupInfos1.Select(x =>
+                                            new {
+                                                clienName = x.Key,
+                                                clientUnit = x.FirstOrDefault()?.ClientUnit ?? "",
+                                                visitsNum = x.Count()
                                             }
                                          )
                                   .OrderByDescending(x => x.visitsNum)
@@ -3906,10 +3906,10 @@ WHERE
                      _endDt = Convert.ToDateTime(endDt);
 
             var groupInfos = await _sqlSugar.Queryable<Grp_DelegationInfo>()
-                                            .LeftJoin<Sys_SetData>((di,sd) => di.TeamDid == sd.Id)
+                                            .LeftJoin<Sys_SetData>((di, sd) => di.TeamDid == sd.Id)
                                             .Where((di, sd) => di.IsDel == 0)
                                             .Where((di, sd) => di.VisitDate >= _beginDt && di.VisitDate <= _endDt)
-                                            .Select((di, sd) => new { 
+                                            .Select((di, sd) => new {
                                                 Id = di.Id,
                                                 GroupTypeId = di.TeamDid,
                                                 GroupTypeName = sd.Name,
@@ -3938,14 +3938,12 @@ WHERE
         /// </summary>
         /// <param name="_dto"></param>
         /// <returns></returns>
-        [HttpPost("StatisticsCooperativeCustomerType")]
+        [HttpPost("StatisticsGroupInfo")]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> StatisticsGroupInfo(YOYDto _dto)
         {
-
             if (_dto.Year < 1) return Ok(JsonView(false, "操作失败"));
 
-
             string beginDt = $"{_dto.Year}-01-01 00:00:00",
                    endDt = $"{_dto.Year}-12-31 23:59:59";
             DateTime _beginDt = Convert.ToDateTime(beginDt),
@@ -3954,12 +3952,15 @@ WHERE
             var groupInfos = await _sqlSugar.Queryable<Grp_DelegationInfo>()
                                             .Where(x => x.IsDel == 0)
                                             .Where(x => x.VisitDate >= _beginDt && x.VisitDate <= _endDt)
-                                            .Select(x => new {
+                                            .Select(x => new StatisticsGroupInfoEntity
+                                            {
                                                 Id = x.Id,
-                                                x.VisitDate,
+                                                VisitDate = x.VisitDate,
                                                 Month = x.VisitDate.Month,
-                                                x.VisitPNumber
+                                                VisitPNumber = x.VisitPNumber
                                             })
+                                            .MergeTable()
+                                            .OrderBy(x => new { x.Month })
                                             .ToListAsync();
 
 
@@ -3976,6 +3977,28 @@ WHERE
                                   .ToList();
             return Ok(JsonView(true, "操作成功!", view));
         }
+
+        public class StatisticsGroupInfoEntity
+        {
+            public int Id { get; set; }
+            public DateTime VisitDate { get; set; }
+            public int Month { get; set; }
+            public int Quarter
+            {
+                get
+                {
+                    int quarter = 0;
+                    if (Month < 1 || Month > 12) return quarter;
+                    if (Month >= 1 && Month <= 3) quarter = 1;
+                    else if (Month >= 4 && Month <= 6) quarter = 2;
+                    else if (Month >= 7 && Month <= 9) quarter = 3;
+                    else if (Month >= 10 && Month <= 12) quarter = 4;
+                    return quarter;
+                }
+            }
+            public int VisitPNumber { get; set; }
+        }
+
         #endregion
     }
 }