public List <SRY09010_Member> SRY09010_GetDataHinList(string s車輌From, string s車輌To, int?[] i車輌List, string p集計期間From, string p集計期間To, int i表示順序) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { string s集計期間From, s集計期間To; s集計期間From = p集計期間From.ToString().Substring(0, 4) + "年" + p集計期間From.ToString().Substring(4, 2) + "月度"; s集計期間To = p集計期間To.ToString().Substring(0, 4) + "年" + p集計期間To.ToString().Substring(4, 2) + "月度"; int i集計期間From, i集計期間To; i集計期間From = Convert.ToInt32(p集計期間From); i集計期間To = Convert.ToInt32(p集計期間To); List <SRY09010_Member> retList = new List <SRY09010_Member>(); context.Connection.Open(); try { string 車輌ピックアップ指定 = string.Empty; var goukei = (from s14c in context.S14_CARSB where s14c.集計年月 >= i集計期間From && s14c.集計年月 <= i集計期間To group s14c by s14c.車輌KEY into Group select new SRY09010g_Member { 車輌Key = Group.Key, 合計 = Group.Sum(c => c.金額), }).AsQueryable(); var query = (from m05 in context.M05_CAR.Where(c => c.削除日付 == null) join s14 in context.S14_CAR.Where(c => c.集計年月 >= i集計期間From && c.集計年月 <= i集計期間To) on m05.車輌KEY equals s14.車輌KEY into Group from s14Group in Group join s14g in goukei on s14Group.車輌KEY equals s14g.車輌Key into sg14Group from sgg14Group in sg14Group group new { m05, s14Group, sgg14Group } by new { m05.車輌ID, m05.車輌番号, sgg14Group.合計 } into grGroup select new SRY09010_Member { 車輌ID = grGroup.Key.車輌ID, 車輌番号 = grGroup.Key.車輌番号, 日数 = grGroup.Sum(c => c.s14Group.稼動日数) == null ? 0 : grGroup.Sum(c => c.s14Group.稼動日数), 拘束H = grGroup.Sum(c => c.s14Group.拘束時間) == null ? 0 : grGroup.Sum(c => c.s14Group.拘束時間), 運転H = grGroup.Sum(c => c.s14Group.運転時間) == null ? 0 : grGroup.Sum(c => c.s14Group.運転時間), 高速H = grGroup.Sum(c => c.s14Group.高速時間) == null ? 0 : grGroup.Sum(c => c.s14Group.高速時間), 作業H = grGroup.Sum(c => c.s14Group.作業時間) == null ? 0 : grGroup.Sum(c => c.s14Group.作業時間), 休憩H = grGroup.Sum(c => c.s14Group.休憩時間) == null ? 0 : grGroup.Sum(c => c.s14Group.休憩時間), 残業H = grGroup.Sum(c => c.s14Group.残業時間) == null ? 0 : grGroup.Sum(c => c.s14Group.残業時間), 深夜H = grGroup.Sum(c => c.s14Group.深夜時間) == null ? 0 : grGroup.Sum(c => c.s14Group.深夜時間), 走行KM = grGroup.Sum(c => c.s14Group.走行KM) == null ? 0 : grGroup.Sum(c => c.s14Group.走行KM), 実車KM = grGroup.Sum(c => c.s14Group.実車KM) == null ? 0 : grGroup.Sum(c => c.s14Group.実車KM), 輸送屯数 = grGroup.Sum(c => c.s14Group.輸送屯数) == null ? 0 : grGroup.Sum(c => c.s14Group.輸送屯数), 運送収入 = grGroup.Sum(c => c.s14Group.運送収入) == null ? 0 : grGroup.Sum(c => c.s14Group.運送収入), 燃料L = grGroup.Sum(c => c.s14Group.燃料L) == null ? 0 : grGroup.Sum(c => c.s14Group.燃料L), 経費合計 = grGroup.Key.合計, 集計年月From = s集計期間From, 集計年月To = s集計期間To, 表示順序 = i表示順序 == 0 ? "ID順" : i表示順序 == 1 ? "車種順" : "運送収入順", 車輌指定 = s車輌From + "~" + s車輌To, 車輌ピックアップ = 車輌ピックアップ指定 == "" ? "無" : 車輌ピックアップ指定, }).AsQueryable(); //***検索条件***// if (!(string.IsNullOrEmpty(s車輌From + s車輌To) && i車輌List.Length == 0)) { //From & ToがNULLだった場合 if (string.IsNullOrEmpty(s車輌From + s車輌To)) { query = query.Where(c => c.車輌ID >= int.MaxValue); } //車輌From処理 Min値 if (!string.IsNullOrEmpty(s車輌From)) { int i車輌From = AppCommon.IntParse(s車輌From); query = query.Where(c => c.車輌ID >= i車輌From); } //車輌To処理 Max値 if (!string.IsNullOrEmpty(s車輌To)) { int i車輌TO = AppCommon.IntParse(s車輌To); query = query.Where(c => c.車輌ID <= i車輌TO); } if (i車輌List.Length > 0) { var intCause = i車輌List; query = query.Union(from m05 in context.M05_CAR.Where(c => c.削除日付 == null) join s14 in context.S14_CAR.Where(c => c.集計年月 >= i集計期間From && c.集計年月 <= i集計期間To) on m05.車輌KEY equals s14.車輌KEY into Group from s14Group in Group join s14g in goukei on s14Group.車輌KEY equals s14g.車輌Key into sg14Group from sgg14Group in sg14Group group new { m05, s14Group, sgg14Group } by new { m05.車輌ID, m05.車輌番号, sgg14Group.合計 } into grGroup where intCause.Contains(grGroup.Key.車輌ID) select new SRY09010_Member { 車輌ID = grGroup.Key.車輌ID, 車輌番号 = grGroup.Key.車輌番号, 日数 = grGroup.Sum(c => c.s14Group.稼動日数) == null ? 0 : grGroup.Sum(c => c.s14Group.稼動日数), 拘束H = grGroup.Sum(c => c.s14Group.拘束時間) == null ? 0 : grGroup.Sum(c => c.s14Group.拘束時間), 運転H = grGroup.Sum(c => c.s14Group.運転時間) == null ? 0 : grGroup.Sum(c => c.s14Group.運転時間), 高速H = grGroup.Sum(c => c.s14Group.高速時間) == null ? 0 : grGroup.Sum(c => c.s14Group.高速時間), 作業H = grGroup.Sum(c => c.s14Group.作業時間) == null ? 0 : grGroup.Sum(c => c.s14Group.作業時間), 休憩H = grGroup.Sum(c => c.s14Group.休憩時間) == null ? 0 : grGroup.Sum(c => c.s14Group.休憩時間), 残業H = grGroup.Sum(c => c.s14Group.残業時間) == null ? 0 : grGroup.Sum(c => c.s14Group.残業時間), 深夜H = grGroup.Sum(c => c.s14Group.深夜時間) == null ? 0 : grGroup.Sum(c => c.s14Group.深夜時間), 走行KM = grGroup.Sum(c => c.s14Group.走行KM) == null ? 0 : grGroup.Sum(c => c.s14Group.走行KM), 実車KM = grGroup.Sum(c => c.s14Group.実車KM) == null ? 0 : grGroup.Sum(c => c.s14Group.実車KM), 輸送屯数 = grGroup.Sum(c => c.s14Group.輸送屯数) == null ? 0 : grGroup.Sum(c => c.s14Group.輸送屯数), 運送収入 = grGroup.Sum(c => c.s14Group.運送収入) == null ? 0 : grGroup.Sum(c => c.s14Group.運送収入), 燃料L = grGroup.Sum(c => c.s14Group.燃料L) == null ? 0 : grGroup.Sum(c => c.s14Group.燃料L), 経費合計 = grGroup.Key.合計, 集計年月From = s集計期間From, 集計年月To = s集計期間To, 表示順序 = i表示順序 == 0 ? "ID順" : i表示順序 == 1 ? "車種順" : "運送収入順", 車輌指定 = s車輌From + "~" + s車輌To, 車輌ピックアップ = 車輌ピックアップ指定 == "" ? "無" : 車輌ピックアップ指定, }); } } else { //車輌FromがNullだった場合 if (string.IsNullOrEmpty(s車輌From)) { query = query.Where(c => c.車輌ID >= int.MinValue); } //車輌ToがNullだった場合 if (string.IsNullOrEmpty(s車輌To)) { query = query.Where(c => c.車輌ID <= int.MaxValue); } } //乗務員指定の表示 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; } } } //表示順序変更 switch (i表示順序) { case 0: //車輌番号昇順 query = query.OrderBy(c => c.車輌ID); break; case 1: query = query.OrderBy(c => c.車輌番号); break; case 2: //運送収入降順 query = query.OrderByDescending(c => c.運送収入); break; } query = query.Where(c => c.経費合計 != 0 || c.日数 != 0 || c.運送収入 != 0); //retList = query.ToList(); foreach (var rec in query) { // 各時間項目の時分を、分に変換する。 rec.拘束H = (decimal)LinqSub.時間TO分(rec.拘束H); rec.運転H = (decimal)LinqSub.時間TO分(rec.運転H); rec.高速H = (decimal)LinqSub.時間TO分(rec.高速H); rec.作業H = (decimal)LinqSub.時間TO分(rec.作業H); //rec.待機H = (decimal)LinqSub.時間TO分(rec.待機H); rec.休憩H = (decimal)LinqSub.時間TO分(rec.休憩H); rec.残業H = (decimal)LinqSub.時間TO分(rec.残業H); rec.深夜H = (decimal)LinqSub.時間TO分(rec.深夜H); retList.Add(rec); } return(retList); } catch (Exception ex) { throw ex; } } }
/// <summary> /// SRY01010 印刷 /// </summary> /// <param name="p商品ID">車輌コード</param> /// <returns>T01</returns> public List <SRY01010_Member> GetDataList(string p車輌From, string p車輌To, int?[] i車輌List, int p作成締日, DateTime d集計期間From, DateTime d集計期間To, string p作成年度, string sIDList) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { List <SRY01010_Member> retList = new List <SRY01010_Member>(); context.Connection.Open(); var query = (from t02 in context.T02_UTRN.Where(t02 => t02.労務日 >= d集計期間From && t02.労務日 <= d集計期間To) join t03 in context.T03_KTRN on t02.明細番号 equals t03.明細番号 into t03Group join t01 in context.T01_TRN.Where(t01 => (t01.入力区分 != 3) || (t01.入力区分 == 3 && t01.明細行 != 1)) on t02.明細番号 equals t01.明細番号 into t01Group join m04 in context.M04_DRV on t02.乗務員KEY equals m04.乗務員KEY into m04Group from m04g in m04Group.DefaultIfEmpty() join m78 in context.M78_SYK on t02.出勤区分ID equals m78.出勤区分ID into m78Group from m78g in m78Group.DefaultIfEmpty() join m05 in context.M05_CAR on t02.車輌KEY equals m05.車輌KEY into m05Group from m05g in m05Group.DefaultIfEmpty() where m05g.車輌KEY != null select new SRY01010_Member { 出庫日 = t02.実運行日開始, 帰庫日 = t02.実運行日終了, 出庫H = t02.出庫時間, 帰庫H = t02.帰庫時間, 乗務員名 = m04g.乗務員名, 出庫区分 = m78g.出勤区分名, 水揚金額 = t01Group.Sum(s => s.水揚金額), 経費1 = t03Group.Where(w => w.経費項目ID == 601).Sum(s => s.金額), 経費2 = t03Group.Where(w => w.経費項目ID == 602).Sum(s => s.金額), 経費3 = t03Group.Where(w => w.経費項目ID == 603).Sum(s => s.金額), 経費4 = t03Group.Where(w => w.経費項目ID == 604).Sum(s => s.金額), 経費5 = t03Group.Where(w => w.経費項目ID == 605).Sum(s => s.金額), 経費6 = t03Group.Where(w => w.経費項目ID == 606).Sum(s => s.金額), 経費7 = t03Group.Where(w => w.経費項目ID == 607).Sum(s => s.金額), その他経費 = t03Group.Where(w => w.経費項目ID != 601 && w.経費項目ID != 602 && w.経費項目ID != 603 && w.経費項目ID != 604 && w.経費項目ID != 605 && w.経費項目ID != 606 && w.経費項目ID != 607 && w.経費項目ID != 401).Sum(s => s.金額), 経費名1 = (from m07 in context.M07_KEI.Where(c => c.経費項目ID == 601) select m07.経費項目名).FirstOrDefault(), 経費名2 = (from m07 in context.M07_KEI.Where(c => c.経費項目ID == 602) select m07.経費項目名).FirstOrDefault(), 経費名3 = (from m07 in context.M07_KEI.Where(c => c.経費項目ID == 603) select m07.経費項目名).FirstOrDefault(), 経費名4 = (from m07 in context.M07_KEI.Where(c => c.経費項目ID == 604) select m07.経費項目名).FirstOrDefault(), 経費名5 = (from m07 in context.M07_KEI.Where(c => c.経費項目ID == 605) select m07.経費項目名).FirstOrDefault(), 経費名6 = (from m07 in context.M07_KEI.Where(c => c.経費項目ID == 606) select m07.経費項目名).FirstOrDefault(), 経費名7 = (from m07 in context.M07_KEI.Where(c => c.経費項目ID == 607) select m07.経費項目名).FirstOrDefault(), 拘束H = t02.拘束時間, 運転H = t02.運転時間, 高速H = t02.高速時間, 作業H = t02.作業時間, 待機H = t02.待機時間, 休憩H = t02.休憩時間, 残業H = t02.残業時間, 深夜H = t02.深夜時間, 燃料L数 = t03Group.Where(w => w.経費項目ID == 401).Sum(s => s.数量), 燃料代 = t03Group.Where(w => w.経費項目ID == 401).Sum(s => s.金額), 走行KM = t02.走行KM, 実車KM = t02.実車KM, 輸送屯数 = t02.輸送屯数, コード = m05g.車輌ID, 車輌番号 = m05g.車輌番号, 期間From = d集計期間From, 期間To = d集計期間To, IDFrom = p車輌From, IDTo = p車輌To, IDList = sIDList, }).AsQueryable(); if (!(string.IsNullOrEmpty(p車輌From + p車輌To) && i車輌List.Length == 0)) { //車輌が検索対象に入っていない時全データ取得 if (string.IsNullOrEmpty(p車輌From + p車輌To)) { query = query.Where(c => c.コード >= int.MaxValue); } //車輌From処理 Min値 if (!string.IsNullOrEmpty(p車輌From)) { int i車輌FROM = AppCommon.IntParse(p車輌From); query = query.Where(c => c.コード >= i車輌FROM); } //車輌To処理 Max値 if (!string.IsNullOrEmpty(p車輌To)) { int i車輌TO = AppCommon.IntParse(p車輌To); query = query.Where(c => c.コード <= i車輌TO); } if (i車輌List.Length > 0) { var intCause = i車輌List; query = query.Union(from t02 in context.T02_UTRN.Where(t02 => t02.労務日 >= d集計期間From && t02.労務日 <= d集計期間To && t02.車輌KEY != null) join t03 in context.T03_KTRN on t02.明細番号 equals t03.明細番号 into t03Group join t01 in context.T01_TRN.Where(t01 => (t01.入力区分 != 3) || (t01.入力区分 == 3 && t01.明細行 != 1)) on t02.明細番号 equals t01.明細番号 into t01Group join m04 in context.M04_DRV on t02.乗務員KEY equals m04.乗務員KEY into m04Group from m04g in m04Group.DefaultIfEmpty() join m78 in context.M78_SYK on t02.出勤区分ID equals m78.出勤区分ID into m78Group from m78g in m78Group.DefaultIfEmpty() join m05 in context.M05_CAR on t02.車輌KEY equals m05.車輌KEY into m05Group from m05g in m05Group.DefaultIfEmpty() where intCause.Contains(m05g.車輌ID) && m05g.車輌KEY != null select new SRY01010_Member { 出庫日 = t02.実運行日開始, 帰庫日 = t02.実運行日終了, 出庫H = t02.出庫時間, 帰庫H = t02.帰庫時間, 乗務員名 = m04g.乗務員名, 出庫区分 = m78g.出勤区分名, 水揚金額 = t01Group.Sum(s => s.水揚金額), 経費1 = t03Group.Where(w => w.経費項目ID == 601).Sum(s => s.金額), 経費2 = t03Group.Where(w => w.経費項目ID == 602).Sum(s => s.金額), 経費3 = t03Group.Where(w => w.経費項目ID == 603).Sum(s => s.金額), 経費4 = t03Group.Where(w => w.経費項目ID == 604).Sum(s => s.金額), 経費5 = t03Group.Where(w => w.経費項目ID == 605).Sum(s => s.金額), 経費6 = t03Group.Where(w => w.経費項目ID == 606).Sum(s => s.金額), 経費7 = t03Group.Where(w => w.経費項目ID == 607).Sum(s => s.金額), その他経費 = t03Group.Where(w => w.経費項目ID != 601 && w.経費項目ID != 602 && w.経費項目ID != 603 && w.経費項目ID != 604 && w.経費項目ID != 605 && w.経費項目ID != 606 && w.経費項目ID != 607 && w.経費項目ID != 401).Sum(s => s.金額), 経費名1 = (from m07 in context.M07_KEI.Where(c => c.経費項目ID == 601) select m07.経費項目名).FirstOrDefault(), 経費名2 = (from m07 in context.M07_KEI.Where(c => c.経費項目ID == 602) select m07.経費項目名).FirstOrDefault(), 経費名3 = (from m07 in context.M07_KEI.Where(c => c.経費項目ID == 603) select m07.経費項目名).FirstOrDefault(), 経費名4 = (from m07 in context.M07_KEI.Where(c => c.経費項目ID == 604) select m07.経費項目名).FirstOrDefault(), 経費名5 = (from m07 in context.M07_KEI.Where(c => c.経費項目ID == 605) select m07.経費項目名).FirstOrDefault(), 経費名6 = (from m07 in context.M07_KEI.Where(c => c.経費項目ID == 606) select m07.経費項目名).FirstOrDefault(), 経費名7 = (from m07 in context.M07_KEI.Where(c => c.経費項目ID == 607) select m07.経費項目名).FirstOrDefault(), 拘束H = t02.拘束時間, 運転H = t02.運転時間, 高速H = t02.高速時間, 作業H = t02.作業時間, 待機H = t02.待機時間, 休憩H = t02.休憩時間, 残業H = t02.残業時間, 深夜H = t02.深夜時間, 燃料L数 = t03Group.Where(w => w.経費項目ID == 401).Sum(s => s.数量), 燃料代 = t03Group.Where(w => w.経費項目ID == 401).Sum(s => s.金額), 走行KM = t02.走行KM, 実車KM = t02.実車KM, 輸送屯数 = t02.輸送屯数, コード = m05g.車輌ID, 車輌番号 = m05g.車輌番号, 期間From = d集計期間From, 期間To = d集計期間To, IDFrom = p車輌From, IDTo = p車輌To, IDList = sIDList, }); } } query = query.Distinct(); //結果をリスト化 query = query.OrderBy(c => c.コード).ThenBy(c => c.出庫日); //retList = query.ToList(); foreach (var rec in query) { // 各時間項目の時分を、分に変換する。 rec.拘束H = LinqSub.時間TO分(rec.拘束H); rec.運転H = LinqSub.時間TO分(rec.運転H); rec.高速H = LinqSub.時間TO分(rec.高速H); rec.作業H = LinqSub.時間TO分(rec.作業H); rec.待機H = LinqSub.時間TO分(rec.待機H); rec.休憩H = LinqSub.時間TO分(rec.休憩H); rec.残業H = LinqSub.時間TO分(rec.残業H); rec.深夜H = LinqSub.時間TO分(rec.深夜H); retList.Add(rec); } return(retList); } }
public List <SRY12010_Member> SRY12010_GetData_CSV(string s車種From, string s車種To, int?[] i車種List, string p集計期間From, string p集計期間To, int i表示順序) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { string s集計期間From, s集計期間To; s集計期間From = p集計期間From.ToString().Substring(0, 4) + "年" + p集計期間From.ToString().Substring(4, 2) + "月度"; s集計期間To = p集計期間To.ToString().Substring(0, 4) + "年" + p集計期間To.ToString().Substring(4, 2) + "月度"; int i集計期間From, i集計期間To; i集計期間From = Convert.ToInt32(p集計期間From); i集計期間To = Convert.ToInt32(p集計期間To); List <SRY12010_Member> retList = new List <SRY12010_Member>(); context.Connection.Open(); string 車種ピックアップ指定 = string.Empty; //車種別経費合計 var goukei = (from s14 in context.S14_CAR.Where(c => c.集計年月 >= i集計期間From && c.集計年月 <= i集計期間To) join s14c in context.S14_CARSB.Where(c => c.集計年月 >= i集計期間From && c.集計年月 <= i集計期間To) on new { s14.車輌KEY, s14.集計年月 } equals new { s14c.車輌KEY, s14c.集計年月 } into Group from s14Group in Group group new { s14, s14Group } by s14.車種ID into Group select new SRY12010g_Member { 車種ID = Group.Key, 経費合計 = Group.Sum(c => c.s14Group.金額), }).AsQueryable(); var query = (from m06 in context.M06_SYA.Where(c => c.削除日付 == null) join s14 in context.S14_CAR.Where(c => c.集計年月 >= i集計期間From && c.集計年月 <= i集計期間To) on m06.車種ID equals s14.車種ID into Group from s14Group in Group join s14g in goukei on s14Group.車種ID equals s14g.車種ID into s14gGroup from s14GGroup in s14gGroup group new { m06, s14Group, s14GGroup } by new { m06.車種ID, m06.車種名, s14GGroup.経費合計 } into grGroup select new SRY12010_Member { 車種ID = grGroup.Key.車種ID, 車種名 = grGroup.Key.車種名, 台数 = grGroup.Count(), 拘束H = grGroup.Sum(c => c.s14Group.拘束時間) == null ? 0 : grGroup.Sum(c => c.s14Group.拘束時間), 運転H = grGroup.Sum(c => c.s14Group.運転時間) == null ? 0 : grGroup.Sum(c => c.s14Group.運転時間), 高速H = grGroup.Sum(c => c.s14Group.高速時間) == null ? 0 : grGroup.Sum(c => c.s14Group.高速時間), 作業H = grGroup.Sum(c => c.s14Group.作業時間) == null ? 0 : grGroup.Sum(c => c.s14Group.作業時間), 待機H = grGroup.Sum(c => c.s14Group.待機時間) == null ? 0 : grGroup.Sum(c => c.s14Group.待機時間), 休憩H = grGroup.Sum(c => c.s14Group.休憩時間) == null ? 0 : grGroup.Sum(c => c.s14Group.休憩時間), 残業H = grGroup.Sum(c => c.s14Group.残業時間) == null ? 0 : grGroup.Sum(c => c.s14Group.残業時間), 深夜H = grGroup.Sum(c => c.s14Group.深夜時間) == null ? 0 : grGroup.Sum(c => c.s14Group.深夜時間), 走行KM = grGroup.Sum(c => c.s14Group.走行KM) == null ? 0 : grGroup.Sum(c => c.s14Group.走行KM), 実車KM = grGroup.Sum(c => c.s14Group.実車KM) == null ? 0 : grGroup.Sum(c => c.s14Group.実車KM), 輸送屯数 = grGroup.Sum(c => c.s14Group.輸送屯数) == null ? 0 : grGroup.Sum(c => c.s14Group.輸送屯数), 運送収入 = grGroup.Sum(c => c.s14Group.運送収入) == null ? 0 : grGroup.Sum(c => c.s14Group.運送収入), 燃料L = grGroup.Sum(c => c.s14Group.燃料L) == null ? 0 : grGroup.Sum(c => c.s14Group.燃料L), 経費合計 = grGroup.Key.経費合計, 集計年月From = s集計期間From, 集計年月To = s集計期間To, 車種指定 = s車種From + "~" + s車種To, 車種ピックアップ = 車種ピックアップ指定 == "" ? "無" : 車種ピックアップ指定, 表示順序 = i表示順序 == 0 ? "ID順" : i表示順序 == 1 ? "車種名順" : "運送収入順", }).AsQueryable(); if (!string.IsNullOrEmpty(s車種From + s車種To) && i車種List.Length == 0) { //車種Fromで絞込み if (!string.IsNullOrEmpty(s車種From)) { int i車種From = AppCommon.IntParse(s車種From); query = query.Where(c => c.車種ID >= i車種From); } //車種Toで絞込み if (!string.IsNullOrEmpty(s車種To)) { int i車種To = AppCommon.IntParse(s車種To); query = query.Where(c => c.車種ID <= i車種To); } //車種ピックアップ if (i車種List.Length > 0) { var intCause = i車種List; query = query.Union(from m06 in context.M06_SYA.Where(c => c.削除日付 == null) join s14 in context.S14_CAR.Where(c => c.集計年月 >= i集計期間From && c.集計年月 <= i集計期間To) on m06.車種ID equals s14.車種ID into Group from s14Group in Group join s14g in goukei on s14Group.車種ID equals s14g.車種ID into s14gGroup from s14GGroup in s14gGroup group new { m06, s14Group, s14GGroup } by new { m06.車種ID, m06.車種名, s14GGroup.経費合計 } into grGroup where intCause.Contains(grGroup.Key.車種ID) select new SRY12010_Member { 車種ID = grGroup.Key.車種ID, 車種名 = grGroup.Key.車種名, 台数 = grGroup.Count(), 拘束H = grGroup.Sum(c => c.s14Group.拘束時間) == null ? 0 : grGroup.Sum(c => c.s14Group.拘束時間), 運転H = grGroup.Sum(c => c.s14Group.運転時間) == null ? 0 : grGroup.Sum(c => c.s14Group.運転時間), 高速H = grGroup.Sum(c => c.s14Group.高速時間) == null ? 0 : grGroup.Sum(c => c.s14Group.高速時間), 作業H = grGroup.Sum(c => c.s14Group.作業時間) == null ? 0 : grGroup.Sum(c => c.s14Group.作業時間), 待機H = grGroup.Sum(c => c.s14Group.待機時間) == null ? 0 : grGroup.Sum(c => c.s14Group.待機時間), 休憩H = grGroup.Sum(c => c.s14Group.休憩時間) == null ? 0 : grGroup.Sum(c => c.s14Group.休憩時間), 残業H = grGroup.Sum(c => c.s14Group.残業時間) == null ? 0 : grGroup.Sum(c => c.s14Group.残業時間), 深夜H = grGroup.Sum(c => c.s14Group.深夜時間) == null ? 0 : grGroup.Sum(c => c.s14Group.深夜時間), 走行KM = grGroup.Sum(c => c.s14Group.走行KM) == null ? 0 : grGroup.Sum(c => c.s14Group.走行KM), 実車KM = grGroup.Sum(c => c.s14Group.実車KM) == null ? 0 : grGroup.Sum(c => c.s14Group.実車KM), 輸送屯数 = grGroup.Sum(c => c.s14Group.輸送屯数) == null ? 0 : grGroup.Sum(c => c.s14Group.輸送屯数), 運送収入 = grGroup.Sum(c => c.s14Group.運送収入) == null ? 0 : grGroup.Sum(c => c.s14Group.運送収入), 燃料L = grGroup.Sum(c => c.s14Group.燃料L) == null ? 0 : grGroup.Sum(c => c.s14Group.燃料L), 経費合計 = grGroup.Key.経費合計, 集計年月From = s集計期間From, 集計年月To = s集計期間To, 表示順序 = i表示順序 == 0 ? "ID順" : i表示順序 == 1 ? "車種名順" : "運送収入順", 車種指定 = s車種From + "~" + s車種To, 車種ピックアップ = 車種ピックアップ指定 == "" ? "無" : 車種ピックアップ指定, }); } } else { //** From,To,ピックアップがNullの場合全件出力**// query = query.Where(c => c.車種ID >= int.MinValue && c.車種ID <= int.MaxValue); } //乗務員指定の表示 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; } } } //表示順序 switch (i表示順序) { case 0: //車種IDを昇順 query = query.OrderBy(c => c.車種ID); break; case 1: //車種名を昇順 query = query.OrderBy(c => c.車種名); break; case 2: //運送収入を降順 query = query.OrderByDescending(c => c.運送収入); break; } //retList = query.ToList(); foreach (var rec in query) { // 各時間項目の時分を、分に変換する。 rec.拘束H = (decimal)LinqSub.時間TO分(rec.拘束H); rec.運転H = (decimal)LinqSub.時間TO分(rec.運転H); rec.高速H = (decimal)LinqSub.時間TO分(rec.高速H); rec.作業H = (decimal)LinqSub.時間TO分(rec.作業H); rec.待機H = (decimal)LinqSub.時間TO分(rec.待機H); rec.休憩H = (decimal)LinqSub.時間TO分(rec.休憩H); rec.残業H = (decimal)LinqSub.時間TO分(rec.残業H); rec.深夜H = (decimal)LinqSub.時間TO分(rec.深夜H); retList.Add(rec); } return(retList); } }
/// <summary> /// JMI03010 印刷 /// </summary> /// <param name="p商品ID">乗務員コード</param> /// <returns>T01</returns> public List <JMI03010_Member> GetDataList(string p乗務員From, string p乗務員To, int?[] i乗務員List, int p作成締日, DateTime d集計期間From, DateTime d集計期間To, string p作成年度) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { List <JMI03010_Member> retList = new List <JMI03010_Member>(); context.Connection.Open(); var query = (from t02 in context.T02_UTRN.Where(x => x.勤務開始日 >= d集計期間From && x.勤務開始日 <= d集計期間To) join m04 in context.M04_DRV on t02.乗務員KEY equals m04.乗務員KEY join m78 in context.M78_SYK on t02.出勤区分ID equals m78.出勤区分ID into sm78 from m78Group in sm78.DefaultIfEmpty() join t01 in context.T01_TRN.Where(t01 => (t01.入力区分 != 3) || (t01.入力区分 == 3 && t01.明細行 != 1)) on t02.明細番号 equals t01.明細番号 into t01Group join t03 in context.T03_KTRN on t02.明細番号 equals t03.明細番号 into t03Group select new JMI03010_Member { 出庫 = t02.勤務開始日, 帰庫 = t02.勤務終了日, 車番 = t02.車輌番号, 出区 = m78Group.出勤区分名, 出社H = t02.出庫時間, 退社H = t02.帰庫時間, 拘束H = t02.拘束時間 == null ? 0 : t02.拘束時間, 運転H = t02.運転時間 == null ? 0 : t02.運転時間, 高速H = t02.高速時間 == null ? 0 : t02.高速時間, 作業H = t02.作業時間 == null ? 0 : t02.作業時間, 待機H = t02.待機時間 == null ? 0 : t02.待機時間, 休憩H = t02.休憩時間 == null ? 0 : t02.休憩時間, 残業H = t02.残業時間 == null ? 0 : t02.残業時間, 深夜H = t02.深夜時間 == null ? 0 : t02.深夜時間, 走行KM = t02.走行KM, 実車KM = t02.実車KM, 輸送屯数 = t02.輸送屯数, 経費合計 = t03Group.Sum(t03 => t03.金額) == null ? 0 : t03Group.Sum(t03 => t03.金額), 明細番号 = t02.明細番号, コード = m04.乗務員ID, 乗務員名 = m04.乗務員名, 期間From = d集計期間From, 期間To = d集計期間To, }).AsQueryable(); if (!(string.IsNullOrEmpty(p乗務員From + p乗務員To) && i乗務員List.Length == 0)) { //乗務員が検索対象に入っていない時全データ取得 if (string.IsNullOrEmpty(p乗務員From + p乗務員To)) { query = query.Where(c => c.コード >= int.MaxValue); } //乗務員From処理 Min値 if (!string.IsNullOrEmpty(p乗務員From)) { int i乗務員FROM = AppCommon.IntParse(p乗務員From); query = query.Where(c => c.コード >= i乗務員FROM); } //乗務員To処理 Max値 if (!string.IsNullOrEmpty(p乗務員To)) { int i乗務員TO = AppCommon.IntParse(p乗務員To); query = query.Where(c => c.コード <= i乗務員TO); } if (i乗務員List.Length > 0) { var intCause = i乗務員List; query = query.Union(from t02 in context.T02_UTRN.Where(x => x.勤務開始日 >= d集計期間From && x.勤務開始日 <= d集計期間To) join m04 in context.M04_DRV on t02.乗務員KEY equals m04.乗務員KEY join m78 in context.M78_SYK on t02.出勤区分ID equals m78.出勤区分ID into sm78 from m78Group in sm78.DefaultIfEmpty() join t01 in context.T01_TRN.Where(t01 => (t01.入力区分 != 3) || (t01.入力区分 == 3 && t01.明細行 != 1)) on t02.明細番号 equals t01.明細番号 into t01Group join t03 in context.T03_KTRN on t02.明細番号 equals t03.明細番号 into t03Group where intCause.Contains(m04.乗務員ID) select new JMI03010_Member { 出庫 = t02.勤務開始日, 帰庫 = t02.勤務終了日, 車番 = t02.車輌番号, 出区 = m78Group.出勤区分名, 出社H = t02.出庫時間, 退社H = t02.帰庫時間, 拘束H = t02.拘束時間 == null ? 0 : t02.拘束時間, 運転H = t02.運転時間 == null ? 0 : t02.運転時間, 高速H = t02.高速時間 == null ? 0 : t02.高速時間, 作業H = t02.作業時間 == null ? 0 : t02.作業時間, 待機H = t02.待機時間 == null ? 0 : t02.待機時間, 休憩H = t02.休憩時間 == null ? 0 : t02.休憩時間, 残業H = t02.残業時間 == null ? 0 : t02.残業時間, 深夜H = t02.深夜時間 == null ? 0 : t02.深夜時間, 走行KM = t02.走行KM, 実車KM = t02.実車KM, 輸送屯数 = t02.輸送屯数, 経費合計 = t03Group.Sum(t03 => t03.金額) == null ? 0 : t03Group.Sum(t03 => t03.金額), 明細番号 = t02.明細番号, コード = m04.乗務員ID, 乗務員名 = m04.乗務員名, 期間From = d集計期間From, 期間To = d集計期間To, }); } else { query = query.Where(c => c.コード > int.MinValue && c.コード < int.MaxValue); } } query = query.Distinct(); //結果をリスト化 //retList = query.ToList(); foreach (var rec in query) { // 各時間項目の時分を、分に変換する。 rec.拘束H = LinqSub.時間TO分(rec.拘束H); rec.運転H = LinqSub.時間TO分(rec.運転H); rec.高速H = LinqSub.時間TO分(rec.高速H); rec.作業H = LinqSub.時間TO分(rec.作業H); rec.待機H = LinqSub.時間TO分(rec.待機H); rec.休憩H = LinqSub.時間TO分(rec.休憩H); rec.残業H = LinqSub.時間TO分(rec.残業H); rec.深夜H = LinqSub.時間TO分(rec.深夜H); retList.Add(rec); } retList = (retList.OrderBy(c => c.コード).ThenBy(c => c.出庫)).ToList(); return(retList); } }