using Dm; using Npgsql.Replication.PgOutput; using OASystem.Domain.Entities.Financial; using OASystem.Domain.ViewModels.System; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace OASystem.Domain.ViewModels.Financial { /// <summary> /// 日付申请 View /// </summary> public class Fin_DailyFeePaymentView : Fin_DailyFeePayment { } public class Fin_DailyFeePaymentPageCount { /// <summary> /// 总条数 /// </summary> public int Count { get; set; } } /// <summary> /// 日付申请 分页查询View /// </summary> public class Fin_DailyFeePaymentPageListView { /// <summary> /// 是否选中 /// </summary> public bool IsChecked { get; set; } /// <summary> /// 行号 /// </summary> public int RowNumber { get; set; } /// <summary> /// Id /// </summary> public int Id { get; set; } /// <summary> /// 公司Id /// </summary> public int CompanyId { get; set; } /// <summary> /// 公司名称 /// </summary> public string? CompanyName { get; set; } /// <summary> /// 费用描述 /// </summary> public string? Instructions { get; set; } /// <summary> /// 费用总计 /// </summary> public decimal? SumPrice { get; set; } /// <summary> /// 申请人Id /// </summary> public int CreateUserId { get; set; } /// <summary> /// 申请人姓名 /// </summary> public string? CreateUser { get; set; } /// <summary> /// 申请时间 /// </summary> public DateTime CreateTime { get; set; } /// <summary> /// 财务审核 /// </summary> public int FAudit { get; set; } /// <summary> /// 财务 审核状态 /// </summary> public string? FAuditDesc { get { string str = "未审核"; if (FAudit == 0) str = "未审核"; else if (FAudit == 1) { str = "已通过"; FAuditName = "朱成梅"; } else if (FAudit == 2) { str = "未通过"; FAuditName = "朱成梅"; } return str; } } /// <summary> /// 财务审核人姓名 /// </summary> public string? FAuditName { get; set; } = "无"; /// <summary> /// 总经理审核 /// </summary> public int MAudit { get; set; } /// <summary> /// 总经理 审核状态 /// </summary> public string? MAuditDesc { get { string str = "未审核"; if (MAudit == 0) str = "未审核"; else if (MAudit == 1) { str = "已通过"; MAuditName = "张海麟"; } else if (MAudit == 2) { str = "未通过"; MAuditName = "张海麟"; } return str; } } /// <summary> /// 总经理审核姓名 /// </summary> public string? MAuditName { get; set; } = "无"; /// <summary> /// 费用类型 /// </summary> public int PriceTypeId { get; set; } /// <summary> /// 支付标识 0,1 /// </summary> public int IsPay { get; set; } } /// <summary> /// 日服申请 分页 /// </summary> public class Fin_DailyFeePaymentPage { /// <summary> /// 总条数 /// </summary> public int? Rows { get; set; } public List<Fin_DailyFeePaymentPageListView> Data { get; set; } } /// <summary> /// 日付申请费用明细 /// </summary> public class Fin_DailyFeePaymentContentInfolView { public int Id { get; set; } /// <summary> /// 费用名称 /// </summary> public string PriceName { get; set; } /// <summary> /// 数量单价 /// </summary> public decimal Quantity { get; set; } /// <summary> /// 费用单价 /// </summary> public decimal Price { get; set; } /// <summary> /// 当前总计 /// </summary> public decimal ItemTotal { get; set; } /// <summary> /// 备注 /// </summary> public string Remark { get; set; } /// <summary> /// 备注描述 /// </summary> public string RemaksDescription { get; set; } /// <summary> /// Excel备注描述 /// </summary> public string ExcelRemaksDescription { get; set; } } public class Fin_DailyFeePaymentInfolView { public int Id { get; set; } public int CompanyId { get; set; } public int TransferTypeId { get; set; } public int PriceTypeId { get; set; } public string Instructions { get; set; } public decimal SumPrice { get; set; } public int CreateUserId { get; set; } /// <summary> /// 财务审核 /// </summary> public int FAudit { get; set; } public string FAuditDesc { get { string str = "未审核"; if (FAudit == 0) str = "未审核"; else if (FAudit == 1) str = "已通过"; else if (FAudit == 2) str = "未通过"; return str; } } /// <summary> /// 总经理审核 /// </summary> public int MAudit { get; set; } public string MAuditDesc { get { string str = "未审核"; if (MAudit == 0) str = "未审核"; else if (MAudit == 1) str = "已通过"; else if (MAudit == 2) str = "未通过"; return str; } } public DateTime CreateTime { get; set; } public List<Fin_DailyFeePaymentContentInfolView> FeeContents { get; set; } } /// <summary> /// android 详情 /// </summary> public class Fin_DailyFeePaymentInfoAndroidlView { public int Id { get; set; } public int CompanyId { get; set; } public int TransferTypeId { get; set; } public int PriceTypeId { get; set; } public string Instructions { get; set; } public decimal SumPrice { get; set; } public int CreateUserId { get; set; } public List<Fin_DailyFeePaymentContentInfolView> FeeContents { get; set; } } /// <summary> /// 费用类型 /// </summary> public class Fin_DailyFeePaymentPagePriceTypeView { /// <summary> /// 类型Id /// </summary> public int Id { get; set; } /// <summary> /// 名称 /// </summary> public string Name { get; set; } } /// <summary> /// 费用子类型 /// </summary> public class Fin_DailyFeePaymentPagePriceSubTypeView { /// <summary> /// 费用类型Id /// </summary> public int STid { get; set; } /// <summary> /// 子类型Id /// </summary> public int Id { get; set; } /// <summary> /// 子类型名称 /// </summary> public string Name { get; set; } } /// <summary> /// 费用类型数据源 /// </summary> public class Fin_DailyFeePaymentPagePriceTypeDataView { /// <summary> /// 费用类型 /// </summary> public List<Fin_DailyFeePaymentPagePriceTypeView>? FeeTypeData { get; set; } /// <summary> /// 费用子类型 /// </summary> public List<Fin_DailyFeePaymentPagePriceSubTypeView>? FeeSubTypeData { get; set; } /// <summary> /// 用户名称 /// </summary> public List<UserNameView>? UserNameData { get; set; } /// <summary> /// 费用标识类型 /// </summary> public List<Fin_DailyFeePaymentPagePriceTypeView>? FeeMarkTypeData { get; set; } /// <summary> /// 费用子类型 /// </summary> public List<Fin_DailyFeePaymentPagePriceSubTypeView>? FeeMarkSubTypeData { get; set; } /// <summary> /// 公司名称 /// </summary> public List<CompanyNameView>? CompanyNameData { get; set; } } /// <summary> /// 类型数据源 /// </summary> public class DailyFeePaymentDataSourceView : Fin_DailyFeePaymentPagePriceTypeView { public List<Fin_DailyFeePaymentPagePriceSubTypeView> SubDatas { get; set; } } public class tree_Fin_DailyFeePaymentPageListView : Fin_DailyFeePaymentPageListView { public List<Fin_DailyFeePaymentContentInfolView> childList { get; set; } public string priceTypeStr { get; set; } public int transferTypeId { get; set; } public string transferTypeIdStr { get; set; } /// <summary> /// 公转:62,私转:63 --2024年4月9日 16:49:46 0,1 /// </summary> public int transferParentId { get; set; } public string transferParentIdStr { get; set; } } public class tree_Fin_DailyFeePaymentResult : tree_Fin_DailyFeePaymentPageListView { public decimal gz { get; set; } = 0M; public decimal sz { get; set; } = 0M; public List<tree_Fin_DailyFeePaymentPageListView> dataList { get; set; } } /// <summary> /// 团组相关费用 /// </summary> public class tree_Group_DailyFeePaymentResult { public decimal gz { get; set; } = 0M; public decimal sz { get; set; } = 0M; public List<tree_Group_DailyFeePaymentPageListView> dataList { get; set; } } /// <summary> /// 团组相关费用 List /// </summary> public class tree_Group_DailyFeePaymentPageListView { public string Id { get; set; } public string GroupName { get; set; } /// <summary> /// 费用所属公司Id /// </summary> public int CompanyId { get; set; } /// <summary> /// 费用所属公司 /// </summary> public string ConpanyName { get; set; } /// <summary> /// 团组总计金额 /// </summary> public decimal CNYTotalAmount { get; set; } public List<Group_DailyFeePaymentContentInfolView> ChildList { get; set; } } public class CompanyInfo { public int Id { get; set; } public string ConpanyName { get; set; } } public class Group_DailyFeePaymentContentInfolView { /// <summary> /// 是否选中 /// </summary> public bool IsChecked { get; set; } public int Id { get; set; } /// <summary> /// 酒店费用子类 Id /// </summary> public int HotelSubId { get; set; } = -1; /// <summary> /// 支付方式 /// </summary> public string PayType { get; set; } /// <summary> /// 转账标识 /// </summary> public string TransferMark { get; set; } /// <summary> /// 序号 /// </summary> public int RowNumber { get; set; } /// <summary> /// 申请人 /// </summary> public string Applicant { get; set; } /// <summary> /// 申请时间 /// </summary> public string ApplicantDt { get; set; } /// <summary> /// 收款方 /// </summary> public string Payee { get; set; } /// <summary> /// 费用名称 /// </summary> public string PriceName { get; set; } /// <summary> /// 费用所属模块 /// </summary> public string ModuleName { get; set; } /// <summary> /// 付款币种 /// </summary> public string PayCurrCode { get; set; } /// <summary> /// 付款金额 /// </summary> public decimal PaymentAmount { get; set; } /// <summary> /// 付款汇率 /// </summary> public decimal PayRate { get; set; } /// <summary> /// 小计人民币金额 /// </summary> public decimal CNYSubTotalAmount { get; set; } /// <summary> /// 费用描述 /// </summary> public string RemaksDescription { get; set; } /// <summary> /// 审核状态 /// 0 未审核 1已通过 2未通过 3 自动审核 /// </summary> public int AuditStatus { get; set; } } public class PaymentRequestCheckedView { public List<int> GroupIds { get; set; } public List<int> DailyPaymentIds { get; set; } public List<int> HotelSubIds { get; set; } } #region 日付报表 [SqlSugar.SugarTable("Fin_DailyFeePayment")] public class DailyFeePaymentRangeView { //public string ViewStr //{ // get // { // return $"{RowIndex}、【{CompanyName}】【{TransferType}】【{FeeType}】【{Instructions}】【{SumPrice.ToString("#0.00")}】【申请人:{Applicant} 申请时间:{ApplicantDt.ToString("yyyy-MM-dd HH:mm:ss")}】"; // } //} public string ViewStr { get { return $"【{CompanyName}】【{TransferType}】【{FeeType}】【{Instructions}】【{SumPrice.ToString("#0.00")}】【申请人:{Applicant} 申请时间:{ApplicantDt.ToString("yyyy-MM-dd HH:mm:ss")}】"; } } [SugarColumn(IsIgnore = true)]//需要加上 public int RowIndex { get; set; } //行号 序号 [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] public int Id { get; set; } public string Instructions { get; set; } public int PriceTypeId { get; set; } public string FeeType { get; set; } public int TransferTypeId { get; set; } public string TransferType { get; set; } public decimal SumPrice { get; set; } public DateTime FAuditDate { get; set; } public DateTime MAuditDate { get; set; } public int CompanyId { get; set; } public string CompanyName { get; set; } public int ApplicantId { get; set; } public string Applicant { get; set; } public DateTime ApplicantDt { get; set; } [Navigate(NavigateType.OneToMany, nameof(DailyFeePaymentContentView.DFPId))]//BookA表中的studenId public List<DailyFeePaymentContentView> Contents { get; set; } //public string ContentStr { get; set; } } [SqlSugar.SugarTable("Fin_DailyFeePaymentContent")] public class DailyFeePaymentContentView { //[SugarColumn(IsIgnore = true)]//需要加上 //public int RowIndex { get; set; } //行号 序号 [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] public int Id { get; set; } public int DFPId { get; set; } public string PriceName { get; set; } public int Quantity { get; set; } public decimal Price { get; set; } public decimal ItemTotal { get; set; } public string Remark { get; set; } //public int IsDel { get; set; } /// <summary> /// 示例:费用名称:[2024.07.11招商信用卡还款] 单价:[20000.00] 数量:[1.00] 小计:[20000.00] 备注:[] /// </summary> //public string ViewStr //{ // get // { // return $"费用名称:[{PriceName}] 单价:[{Price.ToString("#0.00")}] 数量:[{Quantity.ToString("#0.00")}] 小计:[{ItemTotal.ToString("#0.00")}] 备注:[{Remark}]"; // } //} //public string ViewSubStr { get; set; } } public class ExcelView : DailyFeePaymentRangeView { public string ContentStr { get; set; } } #endregion #region 统计模块 #region YOY public class StatisticsYOYView { public int Id { get; set; } public DateTime VisitDate { get; set; } public int Year { get; set; } public int Month { get; set; } /// <summary> /// 销售额金额 /// </summary> public decimal SaleAmount { get; set; } /// <summary> /// 机票金额 /// </summary> public decimal AirTicketAmount { get; set; } /// <summary> /// op金额 /// </summary> public decimal OPAmount { get; set; } /// <summary> /// 其他费用金额 /// </summary> public decimal OtherCostAmount { get; set; } /// <summary> /// 签证金额 /// </summary> public decimal VisaAmount { get; set; } /// <summary> /// 邀请公务金额 /// </summary> public decimal OAAmount { get; set; } /// <summary> /// 保险金额 /// </summary> public decimal InsureAmount { get; set; } /// <summary> /// 酒店金额 /// </summary> public decimal HotelAmount { get; set; } /// <summary> /// 超支金额 /// </summary> public decimal ExcessAmount { get; set; } /// <summary> /// 收款退还金额 /// </summary> public decimal SKTHAmount { get; set; } /// <summary> /// 成本金额 /// </summary> public decimal CostAmount { get { return AirTicketAmount + HotelAmount + InsureAmount + OAAmount + VisaAmount + OtherCostAmount + OPAmount + ExcessAmount; } } /// <summary> /// 毛利润 /// </summary> public decimal GrossProfitAmount { get { return SaleAmount - SKTHAmount - CostAmount; } } } public class YOYReturnView { public int Year { get; set; } public int Month { get; set; } public decimal ThisAmount { get; set; } public decimal LastAmount { get; set; } public string Yoy { get; set; } public List<int> ThisIds { get; set; } public List<int> LastIds { get; set; } /// <summary> /// 构造函数 /// </summary> /// <param name="year"></param> /// <param name="month"></param> /// <param name="thisAmount"></param> /// <param name="lastAmount"></param> /// <param name="thisIds"></param> /// <param name="lastIds"></param> public YOYReturnView(int year, int month, decimal thisAmount, decimal lastAmount, List<int> thisIds, List<int> lastIds) { this.Year = year; this.Month = month; this.ThisAmount = thisAmount; this.LastAmount = lastAmount; string _yoy = "0.00%"; if (lastAmount != 0) { _yoy = ((thisAmount - lastAmount) / lastAmount).ToString("#0.00") + "%"; } this.Yoy = _yoy; this.ThisIds = thisIds; this.LastIds = lastIds; } } #endregion #region 国交数据统计 - 机票 public class StatisticsAirTicketView { public int DIId { get; set; } public DmDateTime FlightsDate { get; set; } public int Year { get; set; } public int Month { get; set; } public int CType { get; set; } public string CTypeName { get; set; } public string FlightsCity { get; set; } public string FlightsCityName { get; set; } public int ClientNum { get; set; } } public class AirTicketReturnView { public int Year { get; set; } public int Month { get; set; } /// <summary> /// 票数 /// </summary> public int Quantity { get; set; } public List<AitTicketInfo> AitTicketInfos { get; set; } public List<int> LinkGroupIds { get; set; } /// <summary> /// 构造函数 /// </summary> /// <param name="year"></param> /// <param name="month"></param> /// <param name="quantity"></param> /// <param name="linkGroupIds"></param> public AirTicketReturnView(int year, int month, int quantity, List<AitTicketInfo> aitTicketInfos, List<int> linkGroupIds) { this.Year = year; this.Month = month; this.Quantity = quantity; this.AitTicketInfos = aitTicketInfos; this.LinkGroupIds = linkGroupIds; } /// <summary> /// 构造函数 /// </summary> /// <param name="year"></param> /// <param name="month"></param> /// <param name="quantity"></param> /// <param name="linkGroupIds"></param> public AirTicketReturnView(int year, int month, int quantity, List<int> linkGroupIds) { this.Year = year; this.Month = month; this.Quantity = quantity; this.LinkGroupIds = linkGroupIds; } } public class AirTicketCityReturnView : AirTicketReturnView { public List<AirTicketCityInfo> CityData { get; set; } /// <summary> /// 构造函数 /// </summary> /// <param name="year"></param> /// <param name="month"></param> /// <param name="quantity"></param> /// <param name="linkGroupIds"></param> public AirTicketCityReturnView(int year, int month, int quantity, List<AirTicketCityInfo> cityData, List<int> linkGroupIds) : base(year, month, quantity, linkGroupIds) { this.Year = year; this.Month = month; this.Quantity = quantity; this.CityData = cityData; this.LinkGroupIds = linkGroupIds; } } public class AitTicketInfo { public int Id { get; set; } public string GroupName { get; set; } public int Quantity { get; set; } public AitTicketInfo(int id, string groupName, int quantity) { this.Id = id; this.GroupName = groupName; this.Quantity = quantity; } } public class AirTicketCityInfo { public string City { get; set; } public int Quantity { get; set; } public AirTicketCityInfo(string city, int quantity = 0) { City = city; Quantity = quantity; } } #endregion #region 酒店 public class StatisticsHotelView { public int DIId { get; set; } public string City { get; set; } public string CityStr { get { return City.Replace(" ", "").ToUpper(); } } public string HotelName { get; set; } public string BookinSite { get; set; } public string CheckInDate { get; set; } //public int Year { get; set; } //public int Month { get; set; } public string CheckOutDate { get; set; } public int SingleRoomCount { get; set; } public int DoubleRoomCount { get; set; } public int SuiteRoomCount { get; set; } public int OtherRoomCount { get; set; } public int RoomNights { get { int nights = 0; if (!string.IsNullOrEmpty(CheckInDate) && !string.IsNullOrEmpty(CheckOutDate)) { DateTime checkin, checkout; bool checkInBool = DateTime.TryParse(CheckInDate, out checkin); bool checkOutBool = DateTime.TryParse(CheckOutDate, out checkout); if (checkInBool && checkOutBool) { nights = (checkout - checkin).Days * RoomTotal; } } return nights; } } public int RoomTotal { get { return SingleRoomCount + DoubleRoomCount + SuiteRoomCount + OtherRoomCount; } } public StatisticsHotelView() { } public StatisticsHotelView(int diid, string city, string hotelName, string bookingSite, string checkIn, string checkOut, int singleRoom, int doubleRoomCount, int suiteRoomCount, int otherRoomCount) { DIId = diid; City = city; BookinSite = bookingSite; CheckInDate = checkIn; CheckOutDate = checkOut; SingleRoomCount = singleRoom; DoubleRoomCount = doubleRoomCount; SuiteRoomCount = suiteRoomCount; OtherRoomCount = otherRoomCount; } } public class HotelReturnView { } #endregion #region 商邀邀请 public class StatisticsInvitation { public int DIId { get; set; } public string Country { get; set; } } #endregion #region 团组相关 public class StatisticsGroupInfoEntity { public int Id { get; set; } public DateTime VisitDate { get; set; } public int Month { get; set; } public string MonthName { get { return VisitDate.ToString("MMM", CultureInfo.GetCultureInfo("zh-CN")); } } 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 string QuarterName { get { string quarterName = "-"; if (Month < 1 || Month > 12) return quarterName; if (Month >= 1 && Month <= 3) quarterName = "第一季度"; else if (Month >= 4 && Month <= 6) quarterName = "第二季度"; else if (Month >= 7 && Month <= 9) quarterName = "第三季度"; else if (Month >= 10 && Month <= 12) quarterName = "第四季度"; return quarterName; } } public int VisitPNumber { get; set; } } #endregion #region OP public class StatisticsOP { /* * OP统计图(实际成本同比年/月) *分块:如车费/导游费/导游交通/接送机费/司机工资/翻译费 *用于判断实际成本是否有增长【真实使用的时候估计是2025年和2024年对比,2023年的数据格式和数据量有问题】 * * 车费:91 车费 982 车超时费 * 导游费:92 导游费 985 导游交通 1059 导游超时费用 * 司机费:979 司机工资 * 小费:980 司机小费 95 导游小费 * 接送机费:96 接送机费 * 餐费:93 客户午餐费用 981 司机餐补 983 导游餐补 988 客户早餐费用 989 客户晚餐费用 * 1074 早餐超支费用 1075 午餐超支费用 1076 晚餐超支费用 * 住补费:992 住补费用 984 导游房补 * 景点费:94 导游景点费 990 景点门票费 1085 景点门票超支费用 * 翻译费:994 翻译费 1073 翻译超时费 * 饮料/零食/水果费:991 饮料/零食/水果 * 其他费:97 其他费用 1071 其他额外费用 */ //车费 private static int[] _carFeeIds = new int[] { 91, //车费 982, //车超时费 }; //导游费 private static int[] _guideFeeIds = new int[] { 92, //导游费 985, //导游交通 1059, //导游超时费用 }; //司机费 private static int[] _driverFeeIds = new int[]{ 979, //司机工资 }; //小费 private static int[] _tipsFeeIds = new int[] { 980, //司机小费 95, //导游小费 }; //接送机费 private static int[] _airportTransferFeeIds = new int[] { 96, //接送机费 }; //餐费 private static int[] _mealFeeIds = new[] { 93, //客户午餐费用 981, //司机餐补 983, //导游餐补 988, //客户早餐费用 989, //客户晚餐费用 1074,//早餐超支费用 1075,//午餐超支费用 1076,//晚餐超支费用 }; //住补费 private static int[] _sububoFeeIds = new[] { 992, //住补费用 984, //导游房补 }; //景点费 private static int[] _scenicSpotFeeIds = new[] { 94, //导游景点费 990, //景点门票费 1085,//景点门票超支费用 }; //翻译费 private static int[] _translationFeeIds = new[] { 994, //翻译费 1073, //翻译超时费 }; //饮料/零食/水果费 private static int[] _DSFFeeIds = new int[] { 991, //饮料/零食/水果 }; //其他费 private static int[] _otherFeeIds = new int[] { 97, //其他费用 1071,//其他额外费用 }; public int Id { get; set; } public int DiId { get; set; } public DateTime PaymentTime { get; set; } public int Year { get; set; } public int Quarter { get; set; } public int Month { get; set; } public string Area { get; set; } public string Country { get; set; } public string City { get; set; } public int ParentFeeId { get { return int.TryParse(GetFeeParentInfo(FeeSubType, 1), out int id) ? id : 0; } } public string ParentFeeName { get { return GetFeeParentInfo(FeeSubType, 2); } } public string ParentFeeRemark { get; set; } public int FeeType { get; set; } public string FeeTypeName { get; set; } public int FeeSubType { get; set; } public string FeeSubTypeName { get; set; } public decimal Price { get; set; } /// <summary> /// /// </summary> /// <param name="subFee"></param> /// <param name="type">1 id 2 name 3 备注 </param> /// <returns></returns> private static string GetFeeParentInfo(int subFee,int type) { int id = -1; string name =string.Empty; string remark = string.Empty; // 车费:91 车费 982 车超时费 if (_carFeeIds.Contains(subFee)) { id = 1; name = "车费"; remark = "费用组成:车费、车超时费"; } // 导游费:92 导游费 985 导游交通 1059 导游超时费用 if (_guideFeeIds.Contains(subFee)) { id = 2; remark = "费用组成:导游费、导游交通、导游超时费用"; name = "导游费"; } // 司机费:979 司机工资 if (_driverFeeIds.Contains(subFee)) { id = 3; remark = "费用组成:司机工资"; name = "司机费"; } // 小费:980 司机小费 95 导游小费 if (_tipsFeeIds.Contains(subFee)) { id = 4; remark = "费用组成:司机小费、导游小费"; name = "小费"; } // 接送机费:96 接送机费 if (_airportTransferFeeIds.Contains(subFee)) { id = 5; remark = "费用组成:接送机费"; name = "接送机费"; } // 餐费:93 客户午餐费用 981 司机餐补 983 导游餐补 988 客户早餐费用 989 客户晚餐费用 // 1074 早餐超支费用 1075 午餐超支费用 1076 晚餐超支费用 if (_mealFeeIds.Contains(subFee)) { id = 6; remark = "费用组成:客户早餐费用、客户午餐费用、客户晚餐费用、司机餐补、导游餐补、早餐超支费用、午餐超支费用、晚餐超支费用"; name = "餐费"; } // 住补费:992 住补费用 984 导游房补 if (_sububoFeeIds.Contains(subFee)) { id = 7; remark = "费用组成:住补费用、导游房补"; name = "住补费"; } // 景点费:94 导游景点费 990 景点门票费 1085 景点门票超支费用 if (_scenicSpotFeeIds.Contains(subFee)) { id = 8; remark = "费用组成:导游景点费、景点门票费、景点门票超支费用"; name = "景点费"; } // 翻译费:994 翻译费 1073 翻译超时费 if (_translationFeeIds.Contains(subFee)) { id = 9; remark = "费用组成:翻译费、翻译超时费"; name = "翻译费"; } // 饮料/ 零食 / 水果费:991 饮料 / 零食 / 水果 if (_DSFFeeIds.Contains(subFee)) { id = 10; remark = "费用组成:饮料/零食/水果费"; name = "饮料/零食/水果费"; } // 其他费用:97 其他费用 1071 其他额外费用 if (_otherFeeIds.Contains(subFee)) { id = 11; remark = "费用组成:其他费用、其他额外费用"; name = "其他费用"; } string returnStr = string.Empty; if (type == 1) returnStr = id.ToString(); else if (type == 2) returnStr = name; else if (type == 3) returnStr = remark; return returnStr; } } public class StatisticsOPYOY { public int FeeId { get; set; } public string FeeName { get; set; } /// <summary> /// 本期 /// </summary> public decimal CurrPeriodFee { get; set; } /// <summary> /// 同期 /// </summary> public decimal SamePeriodFee { get; set; } public decimal Yoy { get; set; } public int CurrPeriodGroupTotal { get; set; } public int SamePeriodGroupTotal { get; set; } public StatisticsOPSubFeeYOY[] SubFeeData { get; set; } public StatisticsOPYOY() { } /// <summary> /// 构造函数 /// </summary> /// <param name="year"></param> /// <param name="month"></param> /// <param name="thisAmount"></param> /// <param name="lastAmount"></param> /// <param name="thisIds"></param> /// <param name="lastIds"></param> public StatisticsOPYOY(int feeId, string feeName, decimal currPeriodFee, decimal samePeriodFee, int currPeriodGroupTotal ,int samePeriodGroupTotal, StatisticsOPSubFeeYOY[] subFeeData) { this.FeeId = feeId; this.FeeName = feeName; this.CurrPeriodFee = currPeriodFee; this.SamePeriodFee = samePeriodFee; decimal _yoy = 0.00M; if (samePeriodFee != 0.00M) { _yoy = (currPeriodFee - samePeriodFee) / samePeriodFee; } this.Yoy = decimal.Parse(_yoy.ToString("0.##")); this.CurrPeriodGroupTotal = currPeriodGroupTotal; this.SamePeriodGroupTotal = samePeriodGroupTotal; this.SubFeeData = subFeeData; } } public class StatisticsOPSubFeeYOY : StatisticsOPYOY { public StatisticsOPCityYOY[] CityData { get; set; } public StatisticsOPSubFeeYOY() { } /// <summary> /// 构造函数 /// </summary> /// <param name="year"></param> /// <param name="month"></param> /// <param name="thisAmount"></param> /// <param name="lastAmount"></param> /// <param name="thisIds"></param> /// <param name="lastIds"></param> public StatisticsOPSubFeeYOY(int feeId, string feeName, decimal currPeriodFee, decimal samePeriodFee, int currPeriodGroupTotal, int samePeriodGroupTotal, StatisticsOPCityYOY[] cityData) { this.FeeId = feeId; this.FeeName = feeName; this.CurrPeriodFee = currPeriodFee; this.SamePeriodFee = samePeriodFee; decimal _yoy = 0.00M; if (samePeriodFee != 0.00M) { _yoy = (currPeriodFee - samePeriodFee) / samePeriodFee; } this.Yoy = decimal.Parse(_yoy.ToString("0.##")); this.CurrPeriodGroupTotal = currPeriodGroupTotal; this.SamePeriodGroupTotal = samePeriodGroupTotal; this.CityData = cityData; } } public class StatisticsOPCityYOY { public string CityName { get; set; } public int CurrPeriodGroupTotal { get; set; } public int SamePeriodGroupTotal { get; set; } /// <summary> /// 本期 /// </summary> public decimal CurrPeriodFee { get; set; } /// <summary> /// 同期 /// </summary> public decimal SamePeriodFee { get; set; } public decimal Yoy { get; set; } public StatisticsOPCityYOY() { } public StatisticsOPCityYOY(string cityName, decimal currPeriodFee, decimal samePeriodFee, int currPeriodGroupTotal,int samePeriodGroupTotal) { this.CityName = cityName; this.CurrPeriodGroupTotal = currPeriodGroupTotal; this.SamePeriodGroupTotal = samePeriodGroupTotal; this.CurrPeriodFee = currPeriodFee; this.SamePeriodFee = samePeriodFee; string _yoy = "0.00"; if (samePeriodFee != 0) { _yoy = ((currPeriodFee - samePeriodFee) / samePeriodFee).ToString("0.##"); } this.Yoy = decimal.TryParse(_yoy, out decimal yoy1) ? yoy1 : 0.00M; } } public class StatisticsOPMonthYOY { public int MonthId { get; set; } public string MonthName { get; set; } public StatisticsOPYOY[] FeeDatas { get; set; } public StatisticsOPMonthYOY() { } public StatisticsOPMonthYOY(int monthId, string monthName, StatisticsOPYOY[] feeDatas) { MonthId = monthId; MonthName = monthName; FeeDatas = feeDatas; } } #endregion #endregion }