/// <summary> /// NNG04010 車輌月別売上合計表 /// </summary> /// <param name="車輌ID">車輌コード</param> /// <returns>S02</returns> public List <NNG04010_Member> NNG04010_GetDataHinList(string s車輌From, string s車輌To, int?[] i車輌List, int i表示区分, int i表示順序, bool 前年前々年, string s作成年月度1, string s作成年月度2, int[] d開始年月日, int[] d前年開始年月日, int[] d前々年開始年月日) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { List <NNG04010_Member> retList = new List <NNG04010_Member>(); context.Connection.Open(); string 車輌ピックアップ指定 = string.Empty; #region 時間定義 int 開始年月日1 = d開始年月日[0]; int 開始年月日2 = d開始年月日[1]; int 開始年月日3 = d開始年月日[2]; int 開始年月日4 = d開始年月日[3]; int 開始年月日5 = d開始年月日[4]; int 開始年月日6 = d開始年月日[5]; int 開始年月日7 = d開始年月日[6]; int 開始年月日8 = d開始年月日[7]; int 開始年月日9 = d開始年月日[8]; int 開始年月日10 = d開始年月日[9]; int 開始年月日11 = d開始年月日[10]; int 開始年月日12 = d開始年月日[11]; //前年 int 前年開始年月日1 = d前年開始年月日[0]; int 前年開始年月日2 = d前年開始年月日[1]; int 前年開始年月日3 = d前年開始年月日[2]; int 前年開始年月日4 = d前年開始年月日[3]; int 前年開始年月日5 = d前年開始年月日[4]; int 前年開始年月日6 = d前年開始年月日[5]; int 前年開始年月日7 = d前年開始年月日[6]; int 前年開始年月日8 = d前年開始年月日[7]; int 前年開始年月日9 = d前年開始年月日[8]; int 前年開始年月日10 = d前年開始年月日[9]; int 前年開始年月日11 = d前年開始年月日[10]; int 前年開始年月日12 = d前年開始年月日[11]; //前々年 int 前々年開始年月日1 = d前々年開始年月日[0]; int 前々年開始年月日2 = d前々年開始年月日[1]; int 前々年開始年月日3 = d前々年開始年月日[2]; int 前々年開始年月日4 = d前々年開始年月日[3]; int 前々年開始年月日5 = d前々年開始年月日[4]; int 前々年開始年月日6 = d前々年開始年月日[5]; int 前々年開始年月日7 = d前々年開始年月日[6]; int 前々年開始年月日8 = d前々年開始年月日[7]; int 前々年開始年月日9 = d前々年開始年月日[8]; int 前々年開始年月日10 = d前々年開始年月日[9]; int 前々年開始年月日11 = d前々年開始年月日[10]; int 前々年開始年月日12 = d前々年開始年月日[11]; //月名 //DateTime d年月日 = DateTime.Parse(開始年月日1.ToString().Substring(0, 4) + "/" + 開始年月日1.ToString().Substring(4, 2) + "/" + "01"); DateTime d年月日; DateTime.TryParse(開始年月日1.ToString().Substring(0, 4) + "/" + 開始年月日1.ToString().Substring(4, 2) + "/" + "01", out d年月日); string s月名1 = d年月日.Month + "月"; string s月名2 = d年月日.AddMonths(1).Month + "月"; string s月名3 = d年月日.AddMonths(2).Month + "月"; string s月名4 = d年月日.AddMonths(3).Month + "月"; string s月名5 = d年月日.AddMonths(4).Month + "月"; string s月名6 = d年月日.AddMonths(5).Month + "月"; string s月名7 = d年月日.AddMonths(6).Month + "月"; string s月名8 = d年月日.AddMonths(7).Month + "月"; string s月名9 = d年月日.AddMonths(8).Month + "月"; string s月名10 = d年月日.AddMonths(9).Month + "月"; string s月名11 = d年月日.AddMonths(10).Month + "月"; string s月名12 = d年月日.AddMonths(11).Month + "月"; #endregion #region 当年データ var query = (from m06 in context.M06_SYA.Where(c => c.削除日付 == null) from m05 in context.M05_CAR.Where(c => c.車種ID == m06.車種ID && c.廃車区分 == 0 && c.削除日付 == null) join V01 in context.V_車輌月別売上合計表 on m05.車輌ID equals V01.車輌ID into V01Group select new NNG04010_Member { 作成年度1 = s作成年月度1, 作成年度2 = s作成年月度2, 車輌コード = m05.車輌ID, 車番 = m05.車輌番号, 車種名 = m06.車種名, 区分 = 前年前々年 == false ? "" : "当年", 月1 = V01Group.Where(c => c.集計年月 == 開始年月日1).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日1).Sum(c => c.運送収入), 月2 = V01Group.Where(c => c.集計年月 == 開始年月日2).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日2).Sum(c => c.運送収入), 月3 = V01Group.Where(c => c.集計年月 == 開始年月日3).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日3).Sum(c => c.運送収入), 月4 = V01Group.Where(c => c.集計年月 == 開始年月日4).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日4).Sum(c => c.運送収入), 月5 = V01Group.Where(c => c.集計年月 == 開始年月日5).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日5).Sum(c => c.運送収入), 月6 = V01Group.Where(c => c.集計年月 == 開始年月日6).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日6).Sum(c => c.運送収入), 月7 = V01Group.Where(c => c.集計年月 == 開始年月日7).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日7).Sum(c => c.運送収入), 月8 = V01Group.Where(c => c.集計年月 == 開始年月日8).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日8).Sum(c => c.運送収入), 月9 = V01Group.Where(c => c.集計年月 == 開始年月日9).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日9).Sum(c => c.運送収入), 月10 = V01Group.Where(c => c.集計年月 == 開始年月日10).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日10).Sum(c => c.運送収入), 月11 = V01Group.Where(c => c.集計年月 == 開始年月日11).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日11).Sum(c => c.運送収入), 月12 = V01Group.Where(c => c.集計年月 == 開始年月日12).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日12).Sum(c => c.運送収入), 月名1 = s月名1, 月名2 = s月名2, 月名3 = s月名3, 月名4 = s月名4, 月名5 = s月名5, 月名6 = s月名6, 月名7 = s月名7, 月名8 = s月名8, 月名9 = s月名9, 月名10 = s月名10, 月名11 = s月名11, 月名12 = s月名12, 表示区分 = i表示区分 == 0 ? "(売上あり乗務員のみ)" : "(売上無し乗務員含む)", 表示順序 = i表示順序 == 0 ? "車輌ID" : i表示順序 == 1 ? "合計金額" : "", 年間合計 = V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.運送収入), 平均 = V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Count(c => c.運送収入 != 0) == 0 ? 0 : V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.運送収入) / V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Count(c => c.運送収入 != 0), 構成比 = V01Group.Where(v01 => v01.集計年月 >= 開始年月日1 && v01.集計年月 <= 開始年月日12).Sum(c => c.運送収入) / context.V_車輌月別売上合計表.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.運送収入) * 100 == null ? 0 : V01Group.Where(v01 => v01.集計年月 >= 開始年月日1 && v01.集計年月 <= 開始年月日12).Sum(c => c.運送収入) / context.V_車輌月別売上合計表.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.運送収入) * 100, 当年売上 = V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.運送収入), 売上順位データ = 前年前々年 == false ? V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 >= 前々年開始年月日12 && c.集計年月 <= 開始年月日12).Sum(c => c.運送収入) : V01Group.Where(c => c.集計年月 >= 前々年開始年月日12 && c.集計年月 <= 開始年月日12).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 >= 前々年開始年月日12 && c.集計年月 <= 開始年月日12).Sum(c => c.運送収入), 車輌指定 = s車輌From + "~" + s車輌To, 車輌ピックアップ = 車輌ピックアップ指定 == "" ? "無" : 車輌ピックアップ指定, 総年合計 = 0, }).AsQueryable(); //車輌指定の表示 if (i車輌List.Length > 0) { for (int i = 0; i < query.Count(); i++) { 車輌ピックアップ指定 = 車輌ピックアップ指定 + i車輌List[i].ToString(); if (i < i車輌List.Length) { if (i == i車輌List.Length - 1) { break; } 車輌ピックアップ指定 = 車輌ピックアップ指定 + ","; } if (i車輌List.Length == 1) { break; } } } #endregion #region 前年データ //<<<前年データ集計>>> if (前年前々年 == true) { query = query.Union(from m06 in context.M06_SYA.Where(c => c.削除日付 == null) from m05 in context.M05_CAR.Where(c => c.車種ID == m06.車種ID && c.廃車区分 == 0 && c.削除日付 == null) join V01 in context.V_車輌月別売上合計表 on m05.車輌ID equals V01.車輌ID into V01Group select new NNG04010_Member { 作成年度1 = s作成年月度1, 作成年度2 = s作成年月度2, 車輌コード = m05.車輌ID, 車番 = m05.車輌番号, 車種名 = m06.車種名, 区分 = 前年前々年 == false ? "" : "前年", 月1 = V01Group.Where(c => c.集計年月 == 前年開始年月日1).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日1).Sum(c => c.運送収入), 月2 = V01Group.Where(c => c.集計年月 == 前年開始年月日2).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日2).Sum(c => c.運送収入), 月3 = V01Group.Where(c => c.集計年月 == 前年開始年月日3).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日3).Sum(c => c.運送収入), 月4 = V01Group.Where(c => c.集計年月 == 前年開始年月日4).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日4).Sum(c => c.運送収入), 月5 = V01Group.Where(c => c.集計年月 == 前年開始年月日5).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日5).Sum(c => c.運送収入), 月6 = V01Group.Where(c => c.集計年月 == 前年開始年月日6).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日6).Sum(c => c.運送収入), 月7 = V01Group.Where(c => c.集計年月 == 前年開始年月日7).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日7).Sum(c => c.運送収入), 月8 = V01Group.Where(c => c.集計年月 == 前年開始年月日8).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日8).Sum(c => c.運送収入), 月9 = V01Group.Where(c => c.集計年月 == 前年開始年月日9).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日9).Sum(c => c.運送収入), 月10 = V01Group.Where(c => c.集計年月 == 前年開始年月日10).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日10).Sum(c => c.運送収入), 月11 = V01Group.Where(c => c.集計年月 == 前年開始年月日11).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日11).Sum(c => c.運送収入), 月12 = V01Group.Where(c => c.集計年月 == 前年開始年月日12).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日12).Sum(c => c.運送収入), 月名1 = s月名1, 月名2 = s月名2, 月名3 = s月名3, 月名4 = s月名4, 月名5 = s月名5, 月名6 = s月名6, 月名7 = s月名7, 月名8 = s月名8, 月名9 = s月名9, 月名10 = s月名10, 月名11 = s月名11, 月名12 = s月名12, 表示区分 = i表示区分 == 0 ? "(売上あり乗務員のみ)" : "(売上無し乗務員含む)", 表示順序 = i表示順序 == 0 ? "車輌ID" : i表示順序 == 1 ? "合計金額" : "", 年間合計 = V01Group.Where(c => c.集計年月 >= 前年開始年月日1 && c.集計年月 <= 前年開始年月日12).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 >= 前年開始年月日1 && c.集計年月 <= 前年開始年月日12).Sum(c => c.運送収入), 平均 = V01Group.Where(c => c.集計年月 >= 前年開始年月日1 && c.集計年月 <= 前年開始年月日12).Count(c => c.運送収入 != 0) == 0 ? 0 : V01Group.Where(c => c.集計年月 >= 前年開始年月日1 && c.集計年月 <= 前年開始年月日12).Sum(c => c.運送収入) / V01Group.Where(c => c.集計年月 >= 前年開始年月日1 && c.集計年月 <= 前年開始年月日12).Count(c => c.運送収入 != 0), 構成比 = V01Group.Where(v01 => v01.集計年月 >= 前年開始年月日1 && v01.集計年月 <= 前年開始年月日12).Sum(c => c.運送収入) / context.V_車輌月別売上合計表.Where(c => c.集計年月 >= 前年開始年月日1 && c.集計年月 <= 前年開始年月日12).Sum(c => c.運送収入) * 100 == null ? 0 : V01Group.Where(v01 => v01.集計年月 >= 前年開始年月日1 && v01.集計年月 <= 前年開始年月日12).Sum(c => c.運送収入) / context.V_車輌月別売上合計表.Where(c => c.集計年月 >= 前年開始年月日1 && c.集計年月 <= 前年開始年月日12).Sum(c => c.運送収入) * 100, 当年売上 = V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.運送収入), 売上順位データ = V01Group.Where(v01 => v01.集計年月 >= 前々年開始年月日12 && v01.集計年月 <= 開始年月日12).Sum(v01 => v01.運送収入) == null ? 0 : V01Group.Where(v01 => v01.集計年月 >= 前々年開始年月日12 && v01.集計年月 <= 開始年月日12).Sum(v01 => v01.運送収入), 車輌指定 = s車輌From + "~" + s車輌To, 車輌ピックアップ = 車輌ピックアップ指定 == "" ? "無" : 車輌ピックアップ指定, 総年合計 = 0, }).AsQueryable(); #endregion #region 前々年データ //<<<前々年のデータ>>> query = query.Union(from m06 in context.M06_SYA.Where(c => c.削除日付 == null) from m05 in context.M05_CAR.Where(c => c.車種ID == m06.車種ID && c.廃車区分 == 0 && c.削除日付 == null) join V01 in context.V_車輌月別売上合計表 on m05.車輌ID equals V01.車輌ID into V01Group select new NNG04010_Member { 作成年度1 = s作成年月度1, 作成年度2 = s作成年月度2, 車輌コード = m05.車輌ID, 車番 = m05.車輌番号, 車種名 = m06.車種名, 区分 = 前年前々年 == false ? "" : "前々年", 月1 = V01Group.Where(c => c.集計年月 == 前々年開始年月日1).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日1).Sum(c => c.運送収入), 月2 = V01Group.Where(c => c.集計年月 == 前々年開始年月日2).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日2).Sum(c => c.運送収入), 月3 = V01Group.Where(c => c.集計年月 == 前々年開始年月日3).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日3).Sum(c => c.運送収入), 月4 = V01Group.Where(c => c.集計年月 == 前々年開始年月日4).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日4).Sum(c => c.運送収入), 月5 = V01Group.Where(c => c.集計年月 == 前々年開始年月日5).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日5).Sum(c => c.運送収入), 月6 = V01Group.Where(c => c.集計年月 == 前々年開始年月日6).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日6).Sum(c => c.運送収入), 月7 = V01Group.Where(c => c.集計年月 == 前々年開始年月日7).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日7).Sum(c => c.運送収入), 月8 = V01Group.Where(c => c.集計年月 == 前々年開始年月日8).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日8).Sum(c => c.運送収入), 月9 = V01Group.Where(c => c.集計年月 == 前々年開始年月日9).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日9).Sum(c => c.運送収入), 月10 = V01Group.Where(c => c.集計年月 == 前々年開始年月日10).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日10).Sum(c => c.運送収入), 月11 = V01Group.Where(c => c.集計年月 == 前々年開始年月日11).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日11).Sum(c => c.運送収入), 月12 = V01Group.Where(c => c.集計年月 == 前々年開始年月日12).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日12).Sum(c => c.運送収入), 月名1 = s月名1, 月名2 = s月名2, 月名3 = s月名3, 月名4 = s月名4, 月名5 = s月名5, 月名6 = s月名6, 月名7 = s月名7, 月名8 = s月名8, 月名9 = s月名9, 月名10 = s月名10, 月名11 = s月名11, 月名12 = s月名12, 表示区分 = i表示区分 == 0 ? "(売上あり乗務員のみ)" : "(売上無し乗務員含む)", 表示順序 = i表示順序 == 0 ? "車輌ID" : i表示順序 == 1 ? "合計金額" : "", 年間合計 = V01Group.Where(c => c.集計年月 >= 前々年開始年月日1 && c.集計年月 <= 前々年開始年月日12).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 >= 前々年開始年月日1 && c.集計年月 <= 前々年開始年月日12).Sum(c => c.運送収入), 平均 = V01Group.Where(c => c.集計年月 >= 前々年開始年月日1 && c.集計年月 <= 前々年開始年月日12).Count(c => c.運送収入 != 0) == 0 ? 0 : V01Group.Where(c => c.集計年月 >= 前々年開始年月日1 && c.集計年月 <= 前々年開始年月日12).Sum(c => c.運送収入) / V01Group.Where(c => c.集計年月 >= 前々年開始年月日1 && c.集計年月 <= 前々年開始年月日12).Count(c => c.運送収入 != 0), 構成比 = V01Group.Where(v01 => v01.集計年月 >= 前々年開始年月日1 && v01.集計年月 <= 前々年開始年月日12).Sum(c => c.運送収入) / context.V_車輌月別売上合計表.Where(c => c.集計年月 >= 前々年開始年月日1 && c.集計年月 <= 前々年開始年月日12).Sum(c => c.運送収入) * 100 == null ? 0 : V01Group.Where(v01 => v01.集計年月 >= 前々年開始年月日1 && v01.集計年月 <= 前々年開始年月日12).Sum(c => c.運送収入) / context.V_車輌月別売上合計表.Where(c => c.集計年月 >= 前々年開始年月日1 && c.集計年月 <= 前々年開始年月日12).Sum(c => c.運送収入) * 100, 当年売上 = V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.運送収入) == null ? 0 : V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.運送収入), 売上順位データ = 前年前々年 == false ? V01Group.Where(v01 => v01.集計年月 >= 開始年月日1 && v01.集計年月 <= 開始年月日12).Sum(v01 => v01.運送収入) == null ? 0 : V01Group.Where(v01 => v01.集計年月 >= 前々年開始年月日12 && v01.集計年月 <= 前々年開始年月日12).Sum(v01 => v01.運送収入) : V01Group.Where(v01 => v01.集計年月 >= 前々年開始年月日12 && v01.集計年月 <= 開始年月日12).Sum(v01 => v01.運送収入) == null ? 0 : V01Group.Where(v01 => v01.集計年月 >= 前々年開始年月日12 && v01.集計年月 <= 開始年月日12).Sum(v01 => v01.運送収入), 車輌指定 = s車輌From + "~" + s車輌To, 車輌ピックアップ = 車輌ピックアップ指定 == "" ? "無" : 車輌ピックアップ指定, 総年合計 = 0, }).AsQueryable(); } #endregion #region データ条件項目 //表示順序 switch (i表示順序) { case 0: query = query.OrderBy(c => c.車輌コード).ThenByDescending(c => c.区分); break; case 1: query = query.OrderByDescending(c => c.売上順位データ).ThenBy(c => c.車輌コード).ThenByDescending(c => c.区分); break; } //表示区分 if (i表示区分 == 0) { query = query.Where(c => c.当年売上 > 0); } else { query = query.Where(c => c.当年売上 >= 0); } var intCause = i車輌List; decimal?p合計 = 0; decimal?T当年合計 = 0; decimal?Z前年合計 = 0; decimal?Z前々年合計 = 0; //ピックアップ処理 if (string.IsNullOrEmpty(s車輌From + s車輌To)) { if (i車輌List.Length > 0) { query = query.Where(c => intCause.Contains(c.車輌コード)); } //前年全前年 if (前年前々年 == true) { //総年合計計算 retList = query.ToList(); for (int i = 0; i < retList.Count; i++) { if (retList[i].区分 == "当年") { p合計 = retList[i].年間合計; T当年合計 = p合計 + T当年合計; } if (retList[i].区分 == "前年") { p合計 = retList[i].年間合計; Z前年合計 = p合計 + Z前年合計; } if (retList[i].区分 == "前々年") { p合計 = retList[i].年間合計; Z前々年合計 = p合計 + Z前々年合計; } } //構成比計算 for (int j = 0; j < retList.Count; j++) { if (retList[j].区分 == "当年") { retList[j].総年合計 = T当年合計; } if (retList[j].区分 == "前年") { retList[j].総年合計 = Z前年合計; } if (retList[j].区分 == "前々年") { retList[j].総年合計 = Z前々年合計; } //0除算処理 //構成比計算 if (retList[j].総年合計 == 0) { retList[j].構成比 = (retList[j].年間合計 / 1) * 100; Math.Round((decimal)retList[j].構成比, 0); } else { retList[j].構成比 = (retList[j].年間合計 / retList[j].総年合計) * 100; Math.Round((decimal)retList[j].構成比, 0); } } } else { //当年処理 //総年合計計算 retList = query.ToList(); for (int i = 0; i < retList.Count; i++) { p合計 = retList[i].年間合計; T当年合計 = p合計 + T当年合計; } //構成比計算 for (int j = 0; j < retList.Count; j++) { retList[j].総年合計 = T当年合計; //0除算処理 //構成比計算 if (retList[j].総年合計 == 0) { retList[j].構成比 = (retList[j].年間合計 / 1) * 100; Math.Round((decimal)retList[j].構成比, 0); } else { retList[j].構成比 = (retList[j].年間合計 / retList[j].総年合計) * 100; Math.Round((decimal)retList[j].構成比, 0); } } } } else { //From、To、ピックアップ指定を入力された場合 int iFrom = 1; int iTo = 999999999; iFrom = AppCommon.IntParse(s車輌From); iTo = AppCommon.IntParse(s車輌To); if (i車輌List.Length > 0) { query = query.Where(c => intCause.Contains(c.車輌コード) || (c.車輌コード >= iFrom && c.車輌コード <= iTo)); //前年全前年 if (前年前々年 == true) { //総年合計計算 retList = query.ToList(); for (int i = 0; i < retList.Count; i++) { if (retList[i].区分 == "当年") { p合計 = retList[i].年間合計; T当年合計 = p合計 + T当年合計; } if (retList[i].区分 == "前年") { p合計 = retList[i].年間合計; Z前年合計 = p合計 + Z前年合計; } if (retList[i].区分 == "前々年") { p合計 = retList[i].年間合計; Z前々年合計 = p合計 + Z前々年合計; } } //構成比計算 for (int j = 0; j < retList.Count; j++) { if (retList[j].区分 == "当年") { retList[j].総年合計 = T当年合計; } if (retList[j].区分 == "前年") { retList[j].総年合計 = Z前年合計; } if (retList[j].区分 == "前々年") { retList[j].総年合計 = Z前々年合計; } //0除算処理 //構成比計算 if (retList[j].総年合計 == 0) { retList[j].構成比 = (retList[j].年間合計 / 1) * 100; Math.Round((decimal)retList[j].構成比, 0); } else { retList[j].構成比 = (retList[j].年間合計 / retList[j].総年合計) * 100; Math.Round((decimal)retList[j].構成比, 0); } } } else { //前年全前年 if (前年前々年 == true) { //総年合計計算 retList = query.ToList(); for (int i = 0; i < retList.Count; i++) { if (retList[i].区分 == "当年") { p合計 = retList[i].年間合計; T当年合計 = p合計 + T当年合計; } if (retList[i].区分 == "前年") { p合計 = retList[i].年間合計; Z前年合計 = p合計 + Z前年合計; } if (retList[i].区分 == "前々年") { p合計 = retList[i].年間合計; Z前々年合計 = p合計 + Z前々年合計; } } //構成比計算 for (int j = 0; j < retList.Count; j++) { if (retList[j].区分 == "当年") { retList[j].総年合計 = T当年合計; } if (retList[j].区分 == "前年") { retList[j].総年合計 = Z前年合計; } if (retList[j].区分 == "前々年") { retList[j].総年合計 = Z前々年合計; } //0除算処理 //構成比計算 if (retList[j].総年合計 == 0) { retList[j].構成比 = (retList[j].年間合計 / 1) * 100; Math.Round((decimal)retList[j].構成比, 0); } else { retList[j].構成比 = (retList[j].年間合計 / retList[j].総年合計) * 100; Math.Round((decimal)retList[j].構成比, 0); } } } else { //当年処理 //総年合計計算 retList = query.ToList(); for (int i = 0; i < retList.Count; i++) { p合計 = retList[i].年間合計; T当年合計 = p合計 + T当年合計; } //構成比計算 for (int j = 0; j < retList.Count; j++) { retList[j].総年合計 = T当年合計; //0除算処理 //構成比計算 if (retList[j].総年合計 == 0) { retList[j].構成比 = (retList[j].年間合計 / 1) * 100; Math.Round((decimal)retList[j].構成比, 0); } else { retList[j].構成比 = (retList[j].年間合計 / retList[j].総年合計) * 100; Math.Round((decimal)retList[j].構成比, 0); } } } } } else { query = query.Where(c => (c.車輌コード >= iFrom && c.車輌コード <= iTo)); //前年全前年 if (前年前々年 == true) { //総年合計計算 retList = query.ToList(); for (int i = 0; i < retList.Count; i++) { if (retList[i].区分 == "当年") { p合計 = retList[i].年間合計; T当年合計 = p合計 + T当年合計; } if (retList[i].区分 == "前年") { p合計 = retList[i].年間合計; Z前年合計 = p合計 + Z前年合計; } if (retList[i].区分 == "前々年") { p合計 = retList[i].年間合計; Z前々年合計 = p合計 + Z前々年合計; } } //構成比計算 for (int j = 0; j < retList.Count; j++) { if (retList[j].区分 == "当年") { retList[j].総年合計 = T当年合計; } if (retList[j].区分 == "前年") { retList[j].総年合計 = Z前年合計; } if (retList[j].区分 == "前々年") { retList[j].総年合計 = Z前々年合計; } //0除算処理 //構成比計算 if (retList[j].総年合計 == 0) { retList[j].構成比 = (retList[j].年間合計 / 1) * 100; Math.Round((decimal)retList[j].構成比, 0); } else { retList[j].構成比 = (retList[j].年間合計 / retList[j].総年合計) * 100; Math.Round((decimal)retList[j].構成比, 0); } } } else { //前年全前年 if (前年前々年 == true) { //総年合計計算 retList = query.ToList(); for (int i = 0; i < retList.Count; i++) { if (retList[i].区分 == "当年") { p合計 = retList[i].年間合計; T当年合計 = p合計 + T当年合計; } if (retList[i].区分 == "前年") { p合計 = retList[i].年間合計; Z前年合計 = p合計 + Z前年合計; } if (retList[i].区分 == "前々年") { p合計 = retList[i].年間合計; Z前々年合計 = p合計 + Z前々年合計; } } //構成比計算 for (int j = 0; j < retList.Count; j++) { if (retList[j].区分 == "当年") { retList[j].総年合計 = T当年合計; } if (retList[j].区分 == "前年") { retList[j].総年合計 = Z前年合計; } if (retList[j].区分 == "前々年") { retList[j].総年合計 = Z前々年合計; } //0除算処理 //構成比計算 if (retList[j].総年合計 == 0) { retList[j].構成比 = (retList[j].年間合計 / 1) * 100; Math.Round((decimal)retList[j].構成比, 0); } else { retList[j].構成比 = (retList[j].年間合計 / retList[j].総年合計) * 100; Math.Round((decimal)retList[j].構成比, 0); } } } else { //当年処理 //総年合計計算 retList = query.ToList(); for (int i = 0; i < retList.Count; i++) { p合計 = retList[i].年間合計; T当年合計 = p合計 + T当年合計; } //構成比計算 for (int j = 0; j < retList.Count; j++) { retList[j].総年合計 = T当年合計; //0除算処理 //構成比計算 if (retList[j].総年合計 == 0) { retList[j].構成比 = (retList[j].年間合計 / 1) * 100; Math.Round((decimal)retList[j].構成比, 0); } else { retList[j].構成比 = (retList[j].年間合計 / retList[j].総年合計) * 100; Math.Round((decimal)retList[j].構成比, 0); } } } } } } return(retList); #endregion } }
/// <summary> /// NNG03010 乗務員月別売上合計表 /// </summary> /// <param name="p商品ID">部門コード</param> /// <returns>S02</returns> public List <NNG03010_Member> NNG03010_GetDataHinList(string s乗務員From, string s乗務員To, int?[] i乗務員List, int i表示区分, int i表示順序, bool 前年前々年, string s作成年月度1, string s作成年月度2, int[] d開始年月日, int[] d前年開始年月日, int[] d前々年開始年月日) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { List <NNG03010_Member> retList = new List <NNG03010_Member>(); context.Connection.Open(); string 乗務員ピックアップ指定 = string.Empty; #region 数定義 int 開始年月日1 = d開始年月日[0]; int 開始年月日2 = d開始年月日[1]; int 開始年月日3 = d開始年月日[2]; int 開始年月日4 = d開始年月日[3]; int 開始年月日5 = d開始年月日[4]; int 開始年月日6 = d開始年月日[5]; int 開始年月日7 = d開始年月日[6]; int 開始年月日8 = d開始年月日[7]; int 開始年月日9 = d開始年月日[8]; int 開始年月日10 = d開始年月日[9]; int 開始年月日11 = d開始年月日[10]; int 開始年月日12 = d開始年月日[11]; //前年 int 前年開始年月日1 = d前年開始年月日[0]; int 前年開始年月日2 = d前年開始年月日[1]; int 前年開始年月日3 = d前年開始年月日[2]; int 前年開始年月日4 = d前年開始年月日[3]; int 前年開始年月日5 = d前年開始年月日[4]; int 前年開始年月日6 = d前年開始年月日[5]; int 前年開始年月日7 = d前年開始年月日[6]; int 前年開始年月日8 = d前年開始年月日[7]; int 前年開始年月日9 = d前年開始年月日[8]; int 前年開始年月日10 = d前年開始年月日[9]; int 前年開始年月日11 = d前年開始年月日[10]; int 前年開始年月日12 = d前年開始年月日[11]; //前々年 int 前々年開始年月日1 = d前々年開始年月日[0]; int 前々年開始年月日2 = d前々年開始年月日[1]; int 前々年開始年月日3 = d前々年開始年月日[2]; int 前々年開始年月日4 = d前々年開始年月日[3]; int 前々年開始年月日5 = d前々年開始年月日[4]; int 前々年開始年月日6 = d前々年開始年月日[5]; int 前々年開始年月日7 = d前々年開始年月日[6]; int 前々年開始年月日8 = d前々年開始年月日[7]; int 前々年開始年月日9 = d前々年開始年月日[8]; int 前々年開始年月日10 = d前々年開始年月日[9]; int 前々年開始年月日11 = d前々年開始年月日[10]; int 前々年開始年月日12 = d前々年開始年月日[11]; //月名 //DateTime d年月日 = DateTime.Parse(開始年月日1.ToString().Substring(0, 4) + "/" + 開始年月日1.ToString().Substring(4, 2) + "/" + "01"); DateTime d年月日; DateTime.TryParse(開始年月日1.ToString().Substring(0, 4) + "/" + 開始年月日1.ToString().Substring(4, 2) + "/" + "01", out d年月日); string s月名1 = d年月日.Month + "月"; string s月名2 = d年月日.AddMonths(1).Month + "月"; string s月名3 = d年月日.AddMonths(2).Month + "月"; string s月名4 = d年月日.AddMonths(3).Month + "月"; string s月名5 = d年月日.AddMonths(4).Month + "月"; string s月名6 = d年月日.AddMonths(5).Month + "月"; string s月名7 = d年月日.AddMonths(6).Month + "月"; string s月名8 = d年月日.AddMonths(7).Month + "月"; string s月名9 = d年月日.AddMonths(8).Month + "月"; string s月名10 = d年月日.AddMonths(9).Month + "月"; string s月名11 = d年月日.AddMonths(10).Month + "月"; string s月名12 = d年月日.AddMonths(11).Month + "月"; #endregion #region 当年 var Goukei = (from m04 in context.M04_DRV.Where(c => c.削除日付 == null) join v01 in context.V_乗務員月別売上合計表 on m04.乗務員ID equals v01.乗務員ID into V01Group select new NNG03010g { 乗務員コード = m04.乗務員ID, 当年合計 = V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.売上金額), 前年合計 = V01Group.Where(c => c.集計年月 >= 前年開始年月日1 && c.集計年月 <= 前年開始年月日12).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 >= 前年開始年月日1 && c.集計年月 <= 前年開始年月日12).Sum(c => c.売上金額), 前々年合計 = V01Group.Where(c => c.集計年月 >= 前々年開始年月日1 && c.集計年月 <= 前々年開始年月日12).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 >= 前々年開始年月日1 && c.集計年月 <= 前々年開始年月日12).Sum(c => c.売上金額), }).AsQueryable(); if (!(string.IsNullOrEmpty(s乗務員From + s乗務員To)) && i乗務員List.Length == 0) { if (!string.IsNullOrEmpty(s乗務員From)) { int i乗務員From = AppCommon.IntParse(s乗務員From); Goukei = Goukei.Where(c => c.乗務員コード >= i乗務員From); } if (!string.IsNullOrEmpty(s乗務員To)) { int i乗務員To = AppCommon.IntParse(s乗務員To); Goukei = Goukei.Where(c => c.乗務員コード <= i乗務員To); } if (i乗務員List.Length > 0) { var OutSide = i乗務員List; Goukei = Goukei.Union(from m04 in context.M04_DRV.Where(c => c.削除日付 == null) join v01 in context.V_乗務員月別売上合計表 on m04.乗務員ID equals v01.乗務員ID into V01Group where OutSide.Contains(m04.乗務員ID) select new NNG03010g { 乗務員コード = m04.乗務員ID, 当年合計 = V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.売上金額), 前年合計 = V01Group.Where(c => c.集計年月 >= 前年開始年月日1 && c.集計年月 <= 前年開始年月日12).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 >= 前年開始年月日1 && c.集計年月 <= 前年開始年月日12).Sum(c => c.売上金額), 前々年合計 = V01Group.Where(c => c.集計年月 >= 前々年開始年月日1 && c.集計年月 <= 前々年開始年月日12).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 >= 前々年開始年月日1 && c.集計年月 <= 前々年開始年月日12).Sum(c => c.売上金額), }); } } else { Goukei = Goukei.Where(c => c.乗務員コード >= int.MinValue && c.乗務員コード <= int.MaxValue); } var Item = (from gok in Goukei select new Total { 当年合計 = Goukei.Sum(c => c.当年合計), 前年合計 = Goukei.Sum(c => c.前年合計), 前々年合計 = Goukei.Sum(c => c.前々年合計), }).Distinct().AsQueryable(); var query = (from m04 in context.M04_DRV.Where(c => c.削除日付 == null) join v01 in context.V_乗務員月別売上合計表 on m04.乗務員ID equals v01.乗務員ID into V01Group select new NNG03010_Member { 作成年度1 = s作成年月度1, 作成年度2 = s作成年月度2, 乗務員コード = m04.乗務員ID, 運転者名 = m04.乗務員名, 区分 = 前年前々年 == false ? "" : "当年", 月1 = V01Group.Where(c => c.集計年月 == 開始年月日1).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日1).Sum(c => c.売上金額), 月2 = V01Group.Where(c => c.集計年月 == 開始年月日2).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日2).Sum(c => c.売上金額), 月3 = V01Group.Where(c => c.集計年月 == 開始年月日3).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日3).Sum(c => c.売上金額), 月4 = V01Group.Where(c => c.集計年月 == 開始年月日4).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日4).Sum(c => c.売上金額), 月5 = V01Group.Where(c => c.集計年月 == 開始年月日5).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日5).Sum(c => c.売上金額), 月6 = V01Group.Where(c => c.集計年月 == 開始年月日6).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日6).Sum(c => c.売上金額), 月7 = V01Group.Where(c => c.集計年月 == 開始年月日7).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日7).Sum(c => c.売上金額), 月8 = V01Group.Where(c => c.集計年月 == 開始年月日8).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日8).Sum(c => c.売上金額), 月9 = V01Group.Where(c => c.集計年月 == 開始年月日9).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日9).Sum(c => c.売上金額), 月10 = V01Group.Where(c => c.集計年月 == 開始年月日10).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日10).Sum(c => c.売上金額), 月11 = V01Group.Where(c => c.集計年月 == 開始年月日11).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日11).Sum(c => c.売上金額), 月12 = V01Group.Where(c => c.集計年月 == 開始年月日12).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 開始年月日12).Sum(c => c.売上金額), 表示区分 = i表示区分 == 0 ? "(売上有り乗務員のみ)" : "(売上無し乗務員含む)", 表示順序 = i表示順序 == 0 ? "乗務員ID" : i表示順序 == 1 ? "乗務員名" : "合計金額", 年合計 = V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.売上金額), 平均 = V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Count(c => c.売上金額 != 0) == 0 ? 0 : V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.売上金額) / V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Count(c => c.売上金額 != 0), 構成比 = Math.Round((decimal)V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.売上金額 * 100 / Item.Sum(d => d.当年合計))) == null ? 0 : Math.Round((decimal)V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.売上金額 * 100 / Item.Sum(d => d.当年合計))), 月名1 = s月名1, 月名2 = s月名2, 月名3 = s月名3, 月名4 = s月名4, 月名5 = s月名5, 月名6 = s月名6, 月名7 = s月名7, 月名8 = s月名8, 月名9 = s月名9, 月名10 = s月名10, 月名11 = s月名11, 月名12 = s月名12, 当年売上 = V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.売上金額), 売上順位データ = 前年前々年 == false ? V01Group.Where(v01 => v01.集計年月 >= 開始年月日1 && v01.集計年月 <= 開始年月日12).Sum(v01 => v01.売上金額) == null ? 0 : V01Group.Where(v01 => v01.集計年月 >= 前々年開始年月日12 && v01.集計年月 <= 前々年開始年月日12).Sum(v01 => v01.売上金額) : V01Group.Where(v01 => v01.集計年月 >= 前々年開始年月日12 && v01.集計年月 <= 開始年月日12).Sum(v01 => v01.売上金額) == null ? 0 : V01Group.Where(v01 => v01.集計年月 >= 前々年開始年月日12 && v01.集計年月 <= 開始年月日12).Sum(v01 => v01.売上金額), 乗務員指定 = s乗務員From + "~" + s乗務員To, 乗務員ピックアップ = 乗務員ピックアップ指定 == "" ? "無" : 乗務員ピックアップ指定, 総年合計 = 0, }).AsQueryable(); //ピックアップ if (i乗務員List.Length > 0) { for (int i = 0; i < query.Count(); i++) { 乗務員ピックアップ指定 = 乗務員ピックアップ指定 + i乗務員List[i].ToString(); if (i < i乗務員List.Length) { if (i == i乗務員List.Length - 1) { break; } 乗務員ピックアップ指定 = 乗務員ピックアップ指定 + ","; } if (i乗務員List.Length == 1) { break; } } } #endregion #region 前年 //<<<前年データ集計>>> if (前年前々年 == true) { query = query.Union(from m04 in context.M04_DRV.Where(c => c.削除日付 == null) join v01 in context.V_乗務員月別売上合計表 on m04.乗務員ID equals v01.乗務員ID into V01Group select new NNG03010_Member { 作成年度1 = s作成年月度1, 作成年度2 = s作成年月度2, 乗務員コード = m04.乗務員ID, 運転者名 = m04.乗務員名, 区分 = 前年前々年 == false ? "" : "前年", 月1 = V01Group.Where(c => c.集計年月 == 前年開始年月日1).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日1).Sum(c => c.売上金額), 月2 = V01Group.Where(c => c.集計年月 == 前年開始年月日2).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日2).Sum(c => c.売上金額), 月3 = V01Group.Where(c => c.集計年月 == 前年開始年月日3).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日3).Sum(c => c.売上金額), 月4 = V01Group.Where(c => c.集計年月 == 前年開始年月日4).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日4).Sum(c => c.売上金額), 月5 = V01Group.Where(c => c.集計年月 == 前年開始年月日5).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日5).Sum(c => c.売上金額), 月6 = V01Group.Where(c => c.集計年月 == 前年開始年月日6).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日6).Sum(c => c.売上金額), 月7 = V01Group.Where(c => c.集計年月 == 前年開始年月日7).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日7).Sum(c => c.売上金額), 月8 = V01Group.Where(c => c.集計年月 == 前年開始年月日8).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日8).Sum(c => c.売上金額), 月9 = V01Group.Where(c => c.集計年月 == 前年開始年月日9).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日9).Sum(c => c.売上金額), 月10 = V01Group.Where(c => c.集計年月 == 前年開始年月日10).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日10).Sum(c => c.売上金額), 月11 = V01Group.Where(c => c.集計年月 == 前年開始年月日11).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日11).Sum(c => c.売上金額), 月12 = V01Group.Where(c => c.集計年月 == 前年開始年月日12).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前年開始年月日12).Sum(c => c.売上金額), 表示区分 = i表示区分 == 0 ? "(売上有り乗務員のみ)" : "(売上無し乗務員含む)", 表示順序 = i表示順序 == 0 ? "乗務員ID" : i表示順序 == 1 ? "乗務員名" : "合計金額", 年合計 = V01Group.Where(c => c.集計年月 >= 前年開始年月日1 && c.集計年月 <= 前年開始年月日12).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 >= 前年開始年月日1 && c.集計年月 <= 前年開始年月日12).Sum(c => c.売上金額), 平均 = V01Group.Where(c => c.集計年月 >= 前年開始年月日1 && c.集計年月 <= 前年開始年月日12).Count(c => c.売上金額 != 0) == 0 ? 0 : V01Group.Where(c => c.集計年月 >= 前年開始年月日1 && c.集計年月 <= 前年開始年月日12).Sum(c => c.売上金額) / V01Group.Where(c => c.集計年月 >= 前年開始年月日1 && c.集計年月 <= 前年開始年月日12).Count(c => c.売上金額 != 0), 構成比 = Math.Round((decimal)V01Group.Where(c => c.集計年月 >= 前年開始年月日1 && c.集計年月 <= 前年開始年月日12).Sum(c => c.売上金額 * 100 / Item.Sum(d => d.前年合計))) == null ? 0 : Math.Round((decimal)V01Group.Where(c => c.集計年月 >= 前年開始年月日1 && c.集計年月 <= 前年開始年月日12).Sum(c => c.売上金額 * 100 / Item.Sum(d => d.前年合計))), 月名1 = s月名1, 月名2 = s月名2, 月名3 = s月名3, 月名4 = s月名4, 月名5 = s月名5, 月名6 = s月名6, 月名7 = s月名7, 月名8 = s月名8, 月名9 = s月名9, 月名10 = s月名10, 月名11 = s月名11, 月名12 = s月名12, 当年売上 = V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.売上金額), 売上順位データ = V01Group.Where(v01 => v01.集計年月 >= 前々年開始年月日12 && v01.集計年月 <= 開始年月日12).Sum(v01 => v01.売上金額) == null ? 0 : V01Group.Where(v01 => v01.集計年月 >= 前々年開始年月日12 && v01.集計年月 <= 開始年月日12).Sum(v01 => v01.売上金額), 乗務員指定 = s乗務員From + "~" + s乗務員To, 乗務員ピックアップ = 乗務員ピックアップ指定 == "" ? "無" : 乗務員ピックアップ指定, 総年合計 = 0, }).AsQueryable(); #endregion #region 前々年 //<<<前々年のデータ>>> query = query.Union(from m04 in context.M04_DRV.Where(c => c.削除日付 == null) join v01 in context.V_乗務員月別売上合計表 on m04.乗務員ID equals v01.乗務員ID into V01Group select new NNG03010_Member { 作成年度1 = s作成年月度1, 作成年度2 = s作成年月度2, 乗務員コード = m04.乗務員ID, 運転者名 = m04.乗務員名, 区分 = 前年前々年 == false ? "" : "前々年", 月1 = V01Group.Where(c => c.集計年月 == 前々年開始年月日1).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日1).Sum(c => c.売上金額), 月2 = V01Group.Where(c => c.集計年月 == 前々年開始年月日2).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日2).Sum(c => c.売上金額), 月3 = V01Group.Where(c => c.集計年月 == 前々年開始年月日3).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日3).Sum(c => c.売上金額), 月4 = V01Group.Where(c => c.集計年月 == 前々年開始年月日4).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日4).Sum(c => c.売上金額), 月5 = V01Group.Where(c => c.集計年月 == 前々年開始年月日5).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日5).Sum(c => c.売上金額), 月6 = V01Group.Where(c => c.集計年月 == 前々年開始年月日6).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日6).Sum(c => c.売上金額), 月7 = V01Group.Where(c => c.集計年月 == 前々年開始年月日7).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日7).Sum(c => c.売上金額), 月8 = V01Group.Where(c => c.集計年月 == 前々年開始年月日8).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日8).Sum(c => c.売上金額), 月9 = V01Group.Where(c => c.集計年月 == 前々年開始年月日9).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日9).Sum(c => c.売上金額), 月10 = V01Group.Where(c => c.集計年月 == 前々年開始年月日10).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日10).Sum(c => c.売上金額), 月11 = V01Group.Where(c => c.集計年月 == 前々年開始年月日11).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日11).Sum(c => c.売上金額), 月12 = V01Group.Where(c => c.集計年月 == 前々年開始年月日12).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 == 前々年開始年月日12).Sum(c => c.売上金額), 表示区分 = i表示区分 == 0 ? "(売上有り乗務員のみ)" : "(売上無し乗務員含む)", 表示順序 = i表示順序 == 0 ? "乗務員ID" : i表示順序 == 1 ? "乗務員名" : "合計金額", 年合計 = V01Group.Where(c => c.集計年月 >= 前々年開始年月日1 && c.集計年月 <= 前々年開始年月日12).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 >= 前々年開始年月日1 && c.集計年月 <= 前々年開始年月日12).Sum(c => c.売上金額), 平均 = V01Group.Where(c => c.集計年月 >= 前々年開始年月日1 && c.集計年月 <= 前々年開始年月日12).Count(c => c.売上金額 != 0) == 0 ? 0 : V01Group.Where(c => c.集計年月 >= 前々年開始年月日1 && c.集計年月 <= 前々年開始年月日12).Sum(c => c.売上金額) / V01Group.Where(c => c.集計年月 >= 前々年開始年月日1 && c.集計年月 <= 前々年開始年月日12).Count(c => c.売上金額 != 0), 構成比 = Math.Round((decimal)V01Group.Where(c => c.集計年月 >= 前々年開始年月日1 && c.集計年月 <= 前々年開始年月日12).Sum(c => c.売上金額 * 100 / Item.Sum(d => d.前々年合計))) == null ? 0 : Math.Round((decimal)V01Group.Where(c => c.集計年月 >= 前々年開始年月日1 && c.集計年月 <= 前々年開始年月日12).Sum(c => c.売上金額 * 100 / Item.Sum(d => d.前々年合計))), 月名1 = s月名1, 月名2 = s月名2, 月名3 = s月名3, 月名4 = s月名4, 月名5 = s月名5, 月名6 = s月名6, 月名7 = s月名7, 月名8 = s月名8, 月名9 = s月名9, 月名10 = s月名10, 月名11 = s月名11, 月名12 = s月名12, 当年売上 = V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.売上金額) == null ? 0 : V01Group.Where(c => c.集計年月 >= 開始年月日1 && c.集計年月 <= 開始年月日12).Sum(c => c.売上金額), 売上順位データ = V01Group.Where(v01 => v01.集計年月 >= 前々年開始年月日12 && v01.集計年月 <= 開始年月日12).Sum(v01 => v01.売上金額) == null ? 0 : V01Group.Where(v01 => v01.集計年月 >= 前々年開始年月日12 && v01.集計年月 <= 開始年月日12).Sum(v01 => v01.売上金額), 乗務員指定 = s乗務員From + "~" + s乗務員To, 乗務員ピックアップ = 乗務員ピックアップ指定 == "" ? "無" : 乗務員ピックアップ指定, 総年合計 = 0, }).AsQueryable(); query = query.Distinct(); } #endregion #region データ条件項目 //表示順序 switch (i表示順序) { case 0: query = query.OrderBy(c => c.乗務員コード).ThenByDescending(c => c.区分); break; case 1: query = query.OrderBy(c => c.運転者名).ThenBy(c => c.乗務員コード).ThenByDescending(c => c.区分); break; case 2: query = query.OrderByDescending(c => c.売上順位データ).ThenBy(c => c.乗務員コード).ThenByDescending(c => c.区分); break; } //表示区分 if (i表示区分 == 0) { query = query.Where(c => c.当年売上 > 0); } else { query = query.Where(c => c.当年売上 >= 0); } var intCause = i乗務員List; decimal?p合計 = 0; decimal?T当年合計 = 0; decimal?Z前年合計 = 0; decimal?Z前々年合計 = 0; //ピックアップ処理 if (string.IsNullOrEmpty(s乗務員From + s乗務員To)) { if (i乗務員List.Length > 0) { query = query.Where(c => intCause.Contains(c.乗務員コード)); } //前年全前年 if (前年前々年 == true) { //総年合計計算 retList = query.ToList(); for (int i = 0; i < retList.Count; i++) { if (retList[i].区分 == "当年") { p合計 = retList[i].年合計; T当年合計 = p合計 + T当年合計; } if (retList[i].区分 == "前年") { p合計 = retList[i].年合計; Z前年合計 = p合計 + Z前年合計; } if (retList[i].区分 == "前々年") { p合計 = retList[i].年合計; Z前々年合計 = p合計 + Z前々年合計; } } //構成比計算 for (int j = 0; j < retList.Count; j++) { if (retList[j].区分 == "当年") { retList[j].総年合計 = T当年合計; } if (retList[j].区分 == "前年") { retList[j].総年合計 = Z前年合計; } if (retList[j].区分 == "前々年") { retList[j].総年合計 = Z前々年合計; } //0除算処理 //構成比計算 if (retList[j].総年合計 == 0) { retList[j].構成比 = (retList[j].年合計 / 1) * 100; Math.Round((decimal)retList[j].構成比, 0); } else { retList[j].構成比 = (retList[j].年合計 / retList[j].総年合計) * 100; Math.Round((decimal)retList[j].構成比, 0); } } } else { //当年処理 //総年合計計算 retList = query.ToList(); for (int i = 0; i < retList.Count; i++) { p合計 = retList[i].年合計; T当年合計 = p合計 + T当年合計; } //構成比計算 for (int j = 0; j < retList.Count; j++) { retList[j].総年合計 = T当年合計; //0除算処理 //構成比計算 if (retList[j].総年合計 == 0) { retList[j].構成比 = (retList[j].年合計 / 1) * 100; Math.Round((decimal)retList[j].構成比, 0); } else { retList[j].構成比 = (retList[j].年合計 / retList[j].総年合計) * 100; Math.Round((decimal)retList[j].構成比, 0); } } } } else { //From、To、ピックアップ指定を入力された場合 int iFrom = 1; int iTo = 999999999; iFrom = AppCommon.IntParse(s乗務員From); iTo = AppCommon.IntParse(s乗務員To); if (i乗務員List.Length > 0) { query = query.Where(c => intCause.Contains(c.乗務員コード) || (c.乗務員コード >= iFrom && c.乗務員コード <= iTo)); //前年全前年 if (前年前々年 == true) { //総年合計計算 retList = query.ToList(); for (int i = 0; i < retList.Count; i++) { if (retList[i].区分 == "当年") { p合計 = retList[i].年合計; T当年合計 = p合計 + T当年合計; } if (retList[i].区分 == "前年") { p合計 = retList[i].年合計; Z前年合計 = p合計 + Z前年合計; } if (retList[i].区分 == "前々年") { p合計 = retList[i].年合計; Z前々年合計 = p合計 + Z前々年合計; } } //構成比計算 for (int j = 0; j < retList.Count; j++) { if (retList[j].区分 == "当年") { retList[j].総年合計 = T当年合計; } if (retList[j].区分 == "前年") { retList[j].総年合計 = Z前年合計; } if (retList[j].区分 == "前々年") { retList[j].総年合計 = Z前々年合計; } //0除算処理 //構成比計算 if (retList[j].総年合計 == 0) { retList[j].構成比 = (retList[j].年合計 / 1) * 100; Math.Round((decimal)retList[j].構成比, 0); } else { retList[j].構成比 = (retList[j].年合計 / retList[j].総年合計) * 100; Math.Round((decimal)retList[j].構成比, 0); } } } else { //前年全前年 if (前年前々年 == true) { //総年合計計算 retList = query.ToList(); for (int i = 0; i < retList.Count; i++) { if (retList[i].区分 == "当年") { p合計 = retList[i].年合計; T当年合計 = p合計 + T当年合計; } if (retList[i].区分 == "前年") { p合計 = retList[i].年合計; Z前年合計 = p合計 + Z前年合計; } if (retList[i].区分 == "前々年") { p合計 = retList[i].年合計; Z前々年合計 = p合計 + Z前々年合計; } } //構成比計算 for (int j = 0; j < retList.Count; j++) { if (retList[j].区分 == "当年") { retList[j].総年合計 = T当年合計; } if (retList[j].区分 == "前年") { retList[j].総年合計 = Z前年合計; } if (retList[j].区分 == "前々年") { retList[j].総年合計 = Z前々年合計; } //0除算処理 //構成比計算 if (retList[j].総年合計 == 0) { retList[j].構成比 = (retList[j].年合計 / 1) * 100; Math.Round((decimal)retList[j].構成比, 0); } else { retList[j].構成比 = (retList[j].年合計 / retList[j].総年合計) * 100; Math.Round((decimal)retList[j].構成比, 0); } } } else { //当年処理 //総年合計計算 retList = query.ToList(); for (int i = 0; i < retList.Count; i++) { p合計 = retList[i].年合計; T当年合計 = p合計 + T当年合計; } //構成比計算 for (int j = 0; j < retList.Count; j++) { retList[j].総年合計 = T当年合計; //0除算処理 //構成比計算 if (retList[j].総年合計 == 0) { retList[j].構成比 = (retList[j].年合計 / 1) * 100; Math.Round((decimal)retList[j].構成比, 0); } else { retList[j].構成比 = (retList[j].年合計 / retList[j].総年合計) * 100; Math.Round((decimal)retList[j].構成比, 0); } } } } } else { query = query.Where(c => (c.乗務員コード >= iFrom && c.乗務員コード <= iTo)); //前年全前年 if (前年前々年 == true) { //総年合計計算 retList = query.ToList(); for (int i = 0; i < retList.Count; i++) { if (retList[i].区分 == "当年") { p合計 = retList[i].年合計; T当年合計 = p合計 + T当年合計; } if (retList[i].区分 == "前年") { p合計 = retList[i].年合計; Z前年合計 = p合計 + Z前年合計; } if (retList[i].区分 == "前々年") { p合計 = retList[i].年合計; Z前々年合計 = p合計 + Z前々年合計; } } //構成比計算 for (int j = 0; j < retList.Count; j++) { if (retList[j].区分 == "当年") { retList[j].総年合計 = T当年合計; } if (retList[j].区分 == "前年") { retList[j].総年合計 = Z前年合計; } if (retList[j].区分 == "前々年") { retList[j].総年合計 = Z前々年合計; } //0除算処理 //構成比計算 if (retList[j].総年合計 == 0) { retList[j].構成比 = (retList[j].年合計 / 1) * 100; Math.Round((decimal)retList[j].構成比, 0); } else { retList[j].構成比 = (retList[j].年合計 / retList[j].総年合計) * 100; Math.Round((decimal)retList[j].構成比, 0); } } } else { //前年全前年 if (前年前々年 == true) { //総年合計計算 retList = query.ToList(); for (int i = 0; i < retList.Count; i++) { if (retList[i].区分 == "当年") { p合計 = retList[i].年合計; T当年合計 = p合計 + T当年合計; } if (retList[i].区分 == "前年") { p合計 = retList[i].年合計; Z前年合計 = p合計 + Z前年合計; } if (retList[i].区分 == "前々年") { p合計 = retList[i].年合計; Z前々年合計 = p合計 + Z前々年合計; } } //構成比計算 for (int j = 0; j < retList.Count; j++) { if (retList[j].区分 == "当年") { retList[j].総年合計 = T当年合計; } if (retList[j].区分 == "前年") { retList[j].総年合計 = Z前年合計; } if (retList[j].区分 == "前々年") { retList[j].総年合計 = Z前々年合計; } //0除算処理 //構成比計算 if (retList[j].総年合計 == 0) { retList[j].構成比 = (retList[j].年合計 / 1) * 100; Math.Round((decimal)retList[j].構成比, 0); } else { retList[j].構成比 = (retList[j].年合計 / retList[j].総年合計) * 100; Math.Round((decimal)retList[j].構成比, 0); } } } else { //当年処理 //総年合計計算 retList = query.ToList(); for (int i = 0; i < retList.Count; i++) { p合計 = retList[i].年合計; T当年合計 = p合計 + T当年合計; } //構成比計算 for (int j = 0; j < retList.Count; j++) { retList[j].総年合計 = T当年合計; //0除算処理 //構成比計算 if (retList[j].総年合計 == 0) { retList[j].構成比 = (retList[j].年合計 / 1) * 100; Math.Round((decimal)retList[j].構成比, 0); } else { retList[j].構成比 = (retList[j].年合計 / retList[j].総年合計) * 100; Math.Round((decimal)retList[j].構成比, 0); } } } } } } //出力 return(retList); } }