EveryDB2のデータベースを読み込んでWinFormでGUI表示するサンプル
修訂 | 209dd036e6fa669ec8e1fa9b84679ecdc19fad6a (tree) |
---|---|
時間 | 2021-05-30 13:26:06 |
作者 | yoshy <yoshy@user...> |
Commiter | yoshy |
temp_20210530_1325
@@ -8,13 +8,13 @@ using UmaTest.Infra.Helper; | ||
8 | 8 | |
9 | 9 | namespace UmaTest.App.Adaptor.Gateway.ViewModel.Dto |
10 | 10 | { |
11 | - public class UmaRaceRowDto : NUmaRaceWithNRace | |
11 | + public class UmaRaceRowDto : NUmaRaceInfo | |
12 | 12 | { |
13 | 13 | public UmaRaceRowDto() |
14 | 14 | { |
15 | 15 | } |
16 | 16 | |
17 | - public UmaRaceRowDto(NUmaRaceWithNRace umaRace) | |
17 | + public UmaRaceRowDto(NUmaRaceInfo umaRace) | |
18 | 18 | { |
19 | 19 | BeanHelper.Copy(this, umaRace); |
20 | 20 | } |
@@ -35,6 +35,8 @@ namespace UmaTest.App.Adaptor.Gateway.ViewModel.Dto | ||
35 | 35 | public string Wakuban { get; set; } |
36 | 36 | public string Umaban { get; set; } |
37 | 37 | |
38 | + public string SenSuu { get; set; } | |
39 | + | |
38 | 40 | public string SexAge |
39 | 41 | { |
40 | 42 | get |
@@ -140,7 +140,7 @@ namespace UmaTest.App.Gateway.Presenter | ||
140 | 140 | |
141 | 141 | umaSummaryList.Add(summaryDto); |
142 | 142 | |
143 | - if (!res.Races.TryGetValue(kettoNum, out IEnumerable<NUmaRaceWithNRace> umaRaces) || (umaRaces.Count() == 0)) | |
143 | + if (!res.Races.TryGetValue(kettoNum, out IEnumerable<NUmaRaceInfo> umaRaces) || (umaRaces.Count() == 0)) | |
144 | 144 | { |
145 | 145 | Logger.Warn($"血統登録番号: {kettoNum} の馬レース情報が見つかりませんでした"); |
146 | 146 | continue; |
@@ -148,7 +148,7 @@ namespace UmaTest.App.Gateway.Presenter | ||
148 | 148 | |
149 | 149 | List<UmaRaceRowDto> umaRaceList = new List<UmaRaceRowDto>(); |
150 | 150 | |
151 | - foreach (NUmaRaceWithNRace umaRace in umaRaces) | |
151 | + foreach (NUmaRaceInfo umaRace in umaRaces) | |
152 | 152 | { |
153 | 153 | NRace detail = umaRace.Race; |
154 | 154 | Logger.Debug($"{detail.Year}/{detail.Monthday.Substring(0, 2)}/{detail.Monthday.Substring(2, 2)} - {detail.Hondai} - {detail.Kyori} - {detail.Gradecd} - {detail.Jyokencd1} - {umaRace.Nyusenjyuni} - {umaRace.Kakuteijyuni}"); |
@@ -123,7 +123,7 @@ namespace UmaTest.App.Gateway.Presenter | ||
123 | 123 | |
124 | 124 | umaSummaryList.Add(summaryDto); |
125 | 125 | |
126 | - if (!res.Races.TryGetValue(kettoNum, out IEnumerable<NUmaRaceWithNRace> umaRaces)) // || (umaRaces.Count() == 0)) | |
126 | + if (!res.Races.TryGetValue(kettoNum, out IEnumerable<NUmaRaceInfo> umaRaces)) // || (umaRaces.Count() == 0)) | |
127 | 127 | { |
128 | 128 | Logger.Warn($"血統登録番号: {kettoNum} の馬レース情報が見つかりませんでした"); |
129 | 129 | continue; |
@@ -131,7 +131,7 @@ namespace UmaTest.App.Gateway.Presenter | ||
131 | 131 | |
132 | 132 | List<UmaRaceRowDto> umaRaceList = new List<UmaRaceRowDto>(); |
133 | 133 | |
134 | - foreach (NUmaRaceWithNRace umaRace in umaRaces) | |
134 | + foreach (NUmaRaceInfo umaRace in umaRaces) | |
135 | 135 | { |
136 | 136 | NRace detail = umaRace.Race; |
137 | 137 | Logger.Debug($"{detail.Year}/{detail.Monthday.Substring(0, 2)}/{detail.Monthday.Substring(2, 2)} - {detail.Hondai} - {detail.Kyori} - {detail.Gradecd} - {detail.Jyokencd1} - {umaRace.Nyusenjyuni} - {umaRace.Kakuteijyuni}"); |
@@ -139,6 +139,8 @@ namespace UmaTest.App.Gateway.Presenter | ||
139 | 139 | umaRaceList.Add(new UmaRaceRowDto(umaRace)); |
140 | 140 | } |
141 | 141 | |
142 | + summaryDto.SenSuu = umaRaceList.Count.ToString(); | |
143 | + | |
142 | 144 | umaRaceMap.Add(kettoNum, umaRaceList); |
143 | 145 | } |
144 | 146 |
@@ -129,7 +129,7 @@ namespace UmaTest.App.Gateway.Presenter | ||
129 | 129 | |
130 | 130 | umaSummaryList.Add(summaryDto); |
131 | 131 | |
132 | - if (!res.Races.TryGetValue(kettoNum, out IEnumerable<NUmaRaceWithNRace> umaRaces) || (umaRaces.Count() == 0)) | |
132 | + if (!res.Races.TryGetValue(kettoNum, out IEnumerable<NUmaRaceInfo> umaRaces) || (umaRaces.Count() == 0)) | |
133 | 133 | { |
134 | 134 | Logger.Warn($"血統登録番号: {kettoNum} の馬レース情報が見つかりませんでした"); |
135 | 135 | continue; |
@@ -137,7 +137,7 @@ namespace UmaTest.App.Gateway.Presenter | ||
137 | 137 | |
138 | 138 | List<UmaRaceRowDto> umaRaceList = new List<UmaRaceRowDto>(); |
139 | 139 | |
140 | - foreach (NUmaRaceWithNRace umaRace in umaRaces) | |
140 | + foreach (NUmaRaceInfo umaRace in umaRaces) | |
141 | 141 | { |
142 | 142 | NRace detail = umaRace.Race; |
143 | 143 | Logger.Debug($"{detail.Year}/{detail.Monthday.Substring(0, 2)}/{detail.Monthday.Substring(2, 2)} - {detail.Hondai} - {detail.Kyori} - {detail.Gradecd} - {detail.Jyokencd1} - {umaRace.Nyusenjyuni} - {umaRace.Kakuteijyuni}"); |
@@ -117,7 +117,7 @@ namespace UmaTest.App.Gateway.Presenter | ||
117 | 117 | |
118 | 118 | umaSummaryList.Add(summaryDto); |
119 | 119 | |
120 | - if (!res.Races.TryGetValue(kettoNum, out IEnumerable<NUmaRaceWithNRace> umaRaces) || (umaRaces.Count() == 0)) | |
120 | + if (!res.Races.TryGetValue(kettoNum, out IEnumerable<NUmaRaceInfo> umaRaces) || (umaRaces.Count() == 0)) | |
121 | 121 | { |
122 | 122 | Logger.Warn($"血統登録番号: {kettoNum} の馬レース情報が見つかりませんでした"); |
123 | 123 | return res; |
@@ -125,7 +125,7 @@ namespace UmaTest.App.Gateway.Presenter | ||
125 | 125 | |
126 | 126 | List<UmaRaceRowDto> umaRaceList = new List<UmaRaceRowDto>(); |
127 | 127 | |
128 | - foreach (NUmaRaceWithNRace umaRace in umaRaces) | |
128 | + foreach (NUmaRaceInfo umaRace in umaRaces) | |
129 | 129 | { |
130 | 130 | NRace detail = umaRace.Race; |
131 | 131 | Logger.Debug($"{detail.Year}/{detail.Monthday.Substring(0, 2)}/{detail.Monthday.Substring(2, 2)} - {detail.Hondai} - {detail.Kyori} - {detail.Gradecd} - {detail.Jyokencd1} - {umaRace.Nyusenjyuni} - {umaRace.Kakuteijyuni}"); |
@@ -8,9 +8,9 @@ namespace UmaTest.App.Domain.Model.Logic | ||
8 | 8 | public interface IUmaRaceLogic |
9 | 9 | { |
10 | 10 | Dictionary<string, IEnumerable<ChakudosuuSummary>> LoadChakudosuuSummaries(List<string> kettoNumList); |
11 | - Dictionary<string, IEnumerable<NUmaRaceWithNRace>> LoadRacesByKettoNumList(List<string> kettoNumList); | |
11 | + Dictionary<string, IEnumerable<NUmaRaceInfo>> LoadRacesByKettoNumList(List<string> kettoNumList); | |
12 | 12 | Task<Dictionary<string, IEnumerable<ChakudosuuSummary>>> LoadChakudosuuSummariesAsync(List<string> kettoNumList); |
13 | - Task<Dictionary<string, IEnumerable<NUmaRaceWithNRace>>> LoadRacesByKettoNumListAsync(List<string> kettoNumList); | |
13 | + Task<Dictionary<string, IEnumerable<NUmaRaceInfo>>> LoadRacesByKettoNumListAsync(List<string> kettoNumList); | |
14 | 14 | Task<IEnumerable<NUmaRace>> LoadHorsesBySelectedRaceAsync(NRace race); |
15 | 15 | } |
16 | 16 | } |
\ No newline at end of file |
@@ -23,15 +23,16 @@ namespace UmaTest.App.Domain.Model.Logic | ||
23 | 23 | this.statusBar = statusBar; |
24 | 24 | } |
25 | 25 | |
26 | - public Dictionary<string, IEnumerable<NUmaRaceWithNRace>> LoadRacesByKettoNumList(List<string> kettoNumList) | |
26 | + public Dictionary<string, IEnumerable<NUmaRaceInfo>> LoadRacesByKettoNumList(List<string> kettoNumList) | |
27 | 27 | { |
28 | 28 | return TaskHelper.WaitSingle(LoadRacesByKettoNumListAsync(kettoNumList)); |
29 | 29 | } |
30 | 30 | |
31 | - public async Task<Dictionary<string, IEnumerable<NUmaRaceWithNRace>>> LoadRacesByKettoNumListAsync(List<string> kettoNumList) | |
31 | + public async Task<Dictionary<string, IEnumerable<NUmaRaceInfo>>> LoadRacesByKettoNumListAsync(List<string> kettoNumList) | |
32 | 32 | { |
33 | 33 | return await LogicHelper.tryLogic(() => |
34 | 34 | { |
35 | + statusBar.SetStatusText($"レース情報を読み込み中です..."); | |
35 | 36 | return dao.FindAllRacesByKettoNumListAsync(kettoNumList); |
36 | 37 | }); |
37 | 38 | } |
@@ -45,18 +46,21 @@ namespace UmaTest.App.Domain.Model.Logic | ||
45 | 46 | { |
46 | 47 | return Task.Run<Dictionary<string, IEnumerable<ChakudosuuSummary>>>(() => |
47 | 48 | { |
48 | - return LogicHelper.tryLogic(async () => | |
49 | + return LogicHelper.tryLogic(() => | |
49 | 50 | { |
50 | - Dictionary<string, IEnumerable<ChakudosuuSummary>> res = new Dictionary<string, IEnumerable<ChakudosuuSummary>>(); | |
51 | + //Dictionary<string, IEnumerable<ChakudosuuSummary>> res = new Dictionary<string, IEnumerable<ChakudosuuSummary>>(); | |
51 | 52 | |
52 | - foreach (string kettoNum in kettoNumList) | |
53 | - { | |
54 | - statusBar.SetStatusText($"血統登録番号: {kettoNum} に紐付くレース着度数情報を集約中です..."); | |
55 | - IEnumerable<ChakudosuuSummary> summaries = await dao.FindChakudosuuSummaryAsync(kettoNum); | |
56 | - res.Add(kettoNum, summaries); | |
57 | - } | |
53 | + //foreach (string kettoNum in kettoNumList) | |
54 | + //{ | |
55 | + // statusBar.SetStatusText($"血統登録番号: {kettoNum} に紐付くレース着度数情報を集約中です..."); | |
56 | + // IEnumerable<ChakudosuuSummary> summaries = await dao.FindChakudosuuSummaryAsync(kettoNum); | |
57 | + // res.Add(kettoNum, summaries); | |
58 | + //} | |
58 | 59 | |
59 | - return res; | |
60 | + //return res; | |
61 | + | |
62 | + statusBar.SetStatusText("紐付くレース着度数情報を集約中です..."); | |
63 | + return dao.FindAllChakudosuuSummariesAsync(kettoNumList); | |
60 | 64 | }); |
61 | 65 | }); |
62 | 66 | } |
@@ -7,11 +7,12 @@ namespace UmaTest.App.Domain.Model.Repository.Database.Dao | ||
7 | 7 | { |
8 | 8 | public interface INUmaRaceDao |
9 | 9 | { |
10 | - Dictionary<string, IEnumerable<NUmaRaceWithNRace>> FindAllRacesByKettoNumList(List<string> kettoNumList); | |
10 | + Dictionary<string, IEnumerable<NUmaRaceInfo>> FindAllRacesByKettoNumList(List<string> kettoNumList); | |
11 | 11 | IEnumerable<ChakudosuuSummary> FindChakudosuuSummary(string kettoNum); |
12 | - Task<Dictionary<string, IEnumerable<NUmaRaceWithNRace>>> FindAllRacesByKettoNumListAsync(List<string> kettoNumList); | |
12 | + Task<Dictionary<string, IEnumerable<NUmaRaceInfo>>> FindAllRacesByKettoNumListAsync(List<string> kettoNumList); | |
13 | 13 | Task<IEnumerable<ChakudosuuSummary>> FindChakudosuuSummaryAsync(string kettoNum); |
14 | 14 | |
15 | 15 | Task<IEnumerable<NUmaRace>> FindAllRacesBySelectedRaceAsync(NRace race); |
16 | + Task<Dictionary<string, IEnumerable<ChakudosuuSummary>>> FindAllChakudosuuSummariesAsync(List<string> kettoNumList); | |
16 | 17 | } |
17 | 18 | } |
\ No newline at end of file |
@@ -32,9 +32,8 @@ namespace UmaTest.App.Domain.Model.Repository.Database.Dao | ||
32 | 32 | { |
33 | 33 | Dictionary<string, NUma> res = new Dictionary<string, NUma>(); |
34 | 34 | |
35 | - string[] bameis = bameiList.ToArray(); | |
36 | 35 | var sql = Sql.Builder |
37 | - .Where("bamei in (@bameis)", new { bameis = bameis }) | |
36 | + .Where("bamei in (@Bameis)", new { Bameis = bameiList.ToArray() }) | |
38 | 37 | .OrderBy("bamei, kettonum desc"); |
39 | 38 | |
40 | 39 | var horses = db.Query<NUma>(sql); |
@@ -19,30 +19,85 @@ namespace UmaTest.App.Domain.Model.Repository.Database.Dao | ||
19 | 19 | this.db = db; |
20 | 20 | } |
21 | 21 | |
22 | - public Dictionary<string, IEnumerable<NUmaRaceWithNRace>> FindAllRacesByKettoNumList(List<string> kettoNumList) | |
22 | + public Dictionary<string, IEnumerable<NUmaRaceInfo>> FindAllRacesByKettoNumList(List<string> kettoNumList) | |
23 | 23 | { |
24 | 24 | return TaskHelper.WaitSingle(FindAllRacesByKettoNumListAsync(kettoNumList)); |
25 | 25 | } |
26 | 26 | |
27 | - public Task<Dictionary<string, IEnumerable<NUmaRaceWithNRace>>> FindAllRacesByKettoNumListAsync(List<string> kettoNumList) | |
27 | + public Task<Dictionary<string, IEnumerable<NUmaRaceInfo>>> FindAllRacesByKettoNumListAsync(List<string> kettoNumList) | |
28 | 28 | { |
29 | - return Task.Run<Dictionary<string, IEnumerable<NUmaRaceWithNRace>>>(() => | |
29 | + return Task.Run<Dictionary<string, IEnumerable<NUmaRaceInfo>>>(() => | |
30 | 30 | { |
31 | 31 | return DbHelper.tryQuery(() => |
32 | 32 | { |
33 | - Dictionary<string, IEnumerable<NUmaRaceWithNRace>> res = new Dictionary<string, IEnumerable<NUmaRaceWithNRace>>(); | |
33 | + Dictionary<string, IEnumerable<NUmaRaceInfo>> res = new Dictionary<string, IEnumerable<NUmaRaceInfo>>(); | |
34 | 34 | |
35 | - foreach (string kettoNum in kettoNumList) | |
35 | + //foreach (string kettoNum in kettoNumList) | |
36 | + //{ | |
37 | + // var sql = Sql.Builder | |
38 | + // .Append("SELECT ur.*, r.*") | |
39 | + // .From("n_uma_race ur") | |
40 | + // .Append("INNER JOIN n_race r USING(year, jyocd, kaiji, nichiji, racenum)") | |
41 | + // .Where("ur.kettonum = @0", kettoNum) | |
42 | + // .OrderBy("ur.year desc, ur.monthday desc"); | |
43 | + | |
44 | + // var races = db.Query<NUmaRace, NRace, NUmaRaceInfo>((ur, r) => new NUmaRaceInfo(ur, r), sql); | |
45 | + // res.Add(kettoNum, races); | |
46 | + //} | |
47 | + | |
48 | + //foreach (string kettoNum in kettoNumList) | |
49 | + //{ | |
50 | + // string sql = "SELECT ur.*, r.*, k.*, c.*, u1.*, u2.* " | |
51 | + // + "FROM n_uma_race ur " | |
52 | + // + "INNER JOIN n_race r USING(year, jyocd, kaiji, nichiji, racenum) " | |
53 | + // + "LEFT JOIN n_kisyu k USING(kisyucode) " | |
54 | + // + "LEFT JOIN n_chokyo c ON ur.chokyosicode = c.chokyosicode " | |
55 | + // + "LEFT JOIN n_uma u1 ON ur.kettonum1 = u1.kettonum " | |
56 | + // + "LEFT JOIN n_uma u2 ON ur.kettonum2 = u2.kettonum " | |
57 | + // + "WHERE ur.kettonum = @0 " | |
58 | + // + "ORDER BY ur.kettonum, ur.year desc, ur.monthday desc"; | |
59 | + | |
60 | + // Func<NUmaRace, NRace, NKisyu, NChokyo, NUma, NUma, NUmaRaceInfo> mapper = | |
61 | + // (ur, r, k, c, u1, u2) => new NUmaRaceInfo(ur, r, k, c, u1, u2); | |
62 | + | |
63 | + // Type[] mapTypes = new Type[] { typeof(NUmaRace), typeof(NRace), typeof(NKisyu), | |
64 | + // typeof(NChokyo), typeof(NUma), typeof(NUma) }; | |
65 | + | |
66 | + // IEnumerable<NUmaRaceInfo> races = db.Query<NUmaRaceInfo>(mapTypes, mapper, sql, kettoNum); | |
67 | + | |
68 | + // res.Add(kettoNum, races.ToList()); | |
69 | + //} | |
70 | + | |
71 | + string sql = "SELECT ur.*, r.*, k.*, c.*, h1.*, h5.* " | |
72 | + + "FROM n_uma_race ur " | |
73 | + + "INNER JOIN n_uma u USING(kettonum) " | |
74 | + + "INNER JOIN n_race r USING(year, jyocd, kaiji, nichiji, racenum) " | |
75 | + + "LEFT JOIN n_kisyu k USING(kisyucode) " | |
76 | + + "LEFT JOIN n_chokyo c ON ur.chokyosicode = c.chokyosicode " | |
77 | + + "LEFT JOIN n_hansyoku h1 ON u.ketto3infohansyokunum1 = h1.hansyokunum " | |
78 | + + "LEFT JOIN n_hansyoku h5 ON u.ketto3infohansyokunum5 = h5.hansyokunum " | |
79 | + + "WHERE ur.kettonum in (@KettoNums) " | |
80 | + + "ORDER BY ur.kettonum, ur.year desc, ur.monthday desc"; | |
81 | + | |
82 | + Func<NUmaRace, NRace, NKisyu, NChokyo, NHansyoku, NHansyoku, NUmaRaceInfo> mapper = | |
83 | + (ur, r, k, c, h1, h5) => new NUmaRaceInfo(ur, r, k, c, h1, h5); | |
84 | + | |
85 | + Type[] mapTypes = new Type[] { typeof(NUmaRace), typeof(NRace), typeof(NKisyu), | |
86 | + typeof(NChokyo), typeof(NHansyoku), typeof(NHansyoku) }; | |
87 | + | |
88 | + IEnumerable<NUmaRaceInfo> races = db.Query<NUmaRaceInfo>( | |
89 | + mapTypes, mapper, sql, new { KettoNums = kettoNumList.ToArray() }); | |
90 | + | |
91 | + foreach (NUmaRaceInfo race in races) | |
36 | 92 | { |
37 | - var sql = Sql.Builder | |
38 | - .Append("SELECT ur.*, r.*") | |
39 | - .From("n_uma_race ur") | |
40 | - .Append("INNER JOIN n_race r USING(year, jyocd, kaiji, nichiji, racenum)") | |
41 | - .Where("ur.kettonum = @0", kettoNum) | |
42 | - .OrderBy("ur.year desc, ur.monthday desc"); | |
43 | - | |
44 | - var races = db.Query<NUmaRace, NRace, NUmaRaceWithNRace>((ur, r) => new NUmaRaceWithNRace(ur, r), sql); | |
45 | - res.Add(kettoNum, races); | |
93 | + string kettoNum = race.Kettonum; | |
94 | + if (!res.TryGetValue(kettoNum, out IEnumerable<NUmaRaceInfo> splitRaces)) | |
95 | + { | |
96 | + splitRaces = new List<NUmaRaceInfo>(); | |
97 | + res.Add(kettoNum, splitRaces); | |
98 | + } | |
99 | + | |
100 | + ((List<NUmaRaceInfo>)splitRaces).Add(race); | |
46 | 101 | } |
47 | 102 | |
48 | 103 | return res; |
@@ -83,5 +138,37 @@ namespace UmaTest.App.Domain.Model.Repository.Database.Dao | ||
83 | 138 | }); |
84 | 139 | }); |
85 | 140 | } |
141 | + | |
142 | + public Task<Dictionary<string, IEnumerable<ChakudosuuSummary>>> FindAllChakudosuuSummariesAsync(List<string> kettoNumList) | |
143 | + { | |
144 | + return Task.Run<Dictionary<string, IEnumerable<ChakudosuuSummary>>>(() => | |
145 | + { | |
146 | + return DbHelper.tryQuery(() => | |
147 | + { | |
148 | + Dictionary<string, IEnumerable<ChakudosuuSummary>> res = new Dictionary<string, IEnumerable<ChakudosuuSummary>>(); | |
149 | + | |
150 | + string sql = DbHelper.GetResourceSQLFile(this); | |
151 | + | |
152 | + IEnumerable<ChakudosuuSummary> summaries = db.Query<ChakudosuuSummary>(sql, new { KettoNums = kettoNumList.ToArray() }); | |
153 | + | |
154 | + foreach (ChakudosuuSummary summary in summaries) | |
155 | + { | |
156 | + string kettoNum = summary.KettoNum; | |
157 | + | |
158 | + //statusBar.SetStatusText($"血統登録番号: {kettoNum} に紐付くレース着度数情報を集約中です..."); | |
159 | + | |
160 | + if (!res.TryGetValue(kettoNum, out IEnumerable<ChakudosuuSummary> splitSummary)) | |
161 | + { | |
162 | + splitSummary = new List<ChakudosuuSummary>(); | |
163 | + res.Add(kettoNum, splitSummary); | |
164 | + } | |
165 | + | |
166 | + ((List<ChakudosuuSummary>)splitSummary).Add(summary); | |
167 | + } | |
168 | + | |
169 | + return res; | |
170 | + }); | |
171 | + }); | |
172 | + } | |
86 | 173 | } |
87 | 174 | } |
@@ -9,6 +9,9 @@ namespace UmaTest.App.Domain.Model.Repository.Database.Dto | ||
9 | 9 | { |
10 | 10 | public class ChakudosuuSummary |
11 | 11 | { |
12 | + [Column(Name = "kettonum")] | |
13 | + public String KettoNum { get; set; } | |
14 | + | |
12 | 15 | [Column(Name = "key1")] |
13 | 16 | public String Key1 { get; set; } |
14 | 17 |
@@ -26,7 +29,7 @@ namespace UmaTest.App.Domain.Model.Repository.Database.Dto | ||
26 | 29 | |
27 | 30 | public override string ToString() |
28 | 31 | { |
29 | - return $"ChakudosuuSummary[key1={Key1}, key2={Key2}, key3={Key3}, chakudosuu={Chakudosuu}, ijou={Ijou}]"; | |
32 | + return $"ChakudosuuSummary[kettonum={KettoNum}, key1={Key1}, key2={Key2}, key3={Key3}, chakudosuu={Chakudosuu}, ijou={Ijou}]"; | |
30 | 33 | } |
31 | 34 | } |
32 | 35 | } |
\ No newline at end of file |
@@ -9,13 +9,13 @@ using UmaTest.App.Domain.Model.Repository.Database.Entity.EveryDB2; | ||
9 | 9 | |
10 | 10 | namespace UmaTest.App.Domain.Model.Repository.Database.Dto |
11 | 11 | { |
12 | - public class NUmaRaceWithNRace : NUmaRace | |
12 | + public class NUmaRaceInfo : NUmaRace | |
13 | 13 | { |
14 | - public NUmaRaceWithNRace() | |
14 | + public NUmaRaceInfo() | |
15 | 15 | { |
16 | 16 | } |
17 | 17 | |
18 | - public NUmaRaceWithNRace(NUmaRace ur, NRace r) | |
18 | + public NUmaRaceInfo(NUmaRace ur, NRace r, NKisyu kisyu, NChokyo chokyo, NHansyoku chichi, NHansyoku hahachichi) | |
19 | 19 | { |
20 | 20 | BeanHelper.Copy(this, ur); |
21 | 21 | Race = r; |
@@ -12,7 +12,7 @@ namespace UmaTest.App.Domain.Translator | ||
12 | 12 | LoadManualUmaListResponse res, LoadManualUmaListRequest req, |
13 | 13 | List<string> kettoNums, |
14 | 14 | Dictionary<string, NUma> horses, |
15 | - Dictionary<string, IEnumerable<NUmaRaceWithNRace>> races, | |
15 | + Dictionary<string, IEnumerable<NUmaRaceInfo>> races, | |
16 | 16 | Dictionary<string, IEnumerable<ChakudosuuSummary>> summaries); |
17 | 17 | } |
18 | 18 | } |
\ No newline at end of file |
@@ -14,7 +14,7 @@ namespace UmaTest.App.Domain.Translator | ||
14 | 14 | AsyncLoadSelectedRaceUmaListRequest req, |
15 | 15 | List<string> kettoNums, |
16 | 16 | IEnumerable<NUmaRace> horses, |
17 | - Dictionary<string, IEnumerable<NUmaRaceWithNRace>> races, | |
17 | + Dictionary<string, IEnumerable<NUmaRaceInfo>> races, | |
18 | 18 | Dictionary<string, IEnumerable<ChakudosuuSummary>> summaries); |
19 | 19 | } |
20 | 20 | } |
\ No newline at end of file |
@@ -12,7 +12,7 @@ namespace UmaTest.App.Domain.Translator | ||
12 | 12 | AsyncLoadTokuUmaListResponse res, AsyncLoadTokuUmaListRequest req, |
13 | 13 | List<string> kettoNums, |
14 | 14 | Dictionary<string, NToku> horses, |
15 | - Dictionary<string, IEnumerable<NUmaRaceWithNRace>> races, | |
15 | + Dictionary<string, IEnumerable<NUmaRaceInfo>> races, | |
16 | 16 | Dictionary<string, IEnumerable<ChakudosuuSummary>> summaries); |
17 | 17 | } |
18 | 18 | } |
\ No newline at end of file |
@@ -17,7 +17,7 @@ namespace UmaTest.App.Domain.Translator | ||
17 | 17 | LoadManualUmaListResponse res, LoadManualUmaListRequest req, |
18 | 18 | List<string> kettoNums, |
19 | 19 | Dictionary<string, NUma> horses, |
20 | - Dictionary<string, IEnumerable<NUmaRaceWithNRace>> races, | |
20 | + Dictionary<string, IEnumerable<NUmaRaceInfo>> races, | |
21 | 21 | Dictionary<string, IEnumerable<ChakudosuuSummary>> summaries) |
22 | 22 | { |
23 | 23 |
@@ -18,7 +18,7 @@ namespace UmaTest.App.Domain.Translator | ||
18 | 18 | AsyncLoadSelectedRaceUmaListRequest req, |
19 | 19 | List<string> kettoNums, |
20 | 20 | IEnumerable<NUmaRace> horses, |
21 | - Dictionary<string, IEnumerable<NUmaRaceWithNRace>> races, | |
21 | + Dictionary<string, IEnumerable<NUmaRaceInfo>> races, | |
22 | 22 | Dictionary<string, IEnumerable<ChakudosuuSummary>> summaries) |
23 | 23 | { |
24 | 24 | res.KettoNums = kettoNums; |
@@ -17,7 +17,7 @@ namespace UmaTest.App.Domain.Translator | ||
17 | 17 | AsyncLoadTokuUmaListResponse res, AsyncLoadTokuUmaListRequest req, |
18 | 18 | List<string> kettoNums, |
19 | 19 | Dictionary<string, NToku> horses, |
20 | - Dictionary<string, IEnumerable<NUmaRaceWithNRace>> races, | |
20 | + Dictionary<string, IEnumerable<NUmaRaceInfo>> races, | |
21 | 21 | Dictionary<string, IEnumerable<ChakudosuuSummary>> summaries) |
22 | 22 | { |
23 | 23 |
@@ -65,7 +65,7 @@ namespace UmaTest.App.Domain.UseCase.Interactor | ||
65 | 65 | |
66 | 66 | statusBarProxy.SetStatusText("馬に紐付くレース情報を読み込んでいます..."); |
67 | 67 | |
68 | - Dictionary<string, IEnumerable<NUmaRaceWithNRace>> races = await logicUmaRace.LoadRacesByKettoNumListAsync(kettoNums); | |
68 | + Dictionary<string, IEnumerable<NUmaRaceInfo>> races = await logicUmaRace.LoadRacesByKettoNumListAsync(kettoNums); | |
69 | 69 | |
70 | 70 | statusBarProxy.SetStatusText("馬に紐付く着度数情報を読み込んでいます..."); |
71 | 71 |
@@ -41,7 +41,7 @@ namespace UmaTest.App.Domain.UseCase.Interactor | ||
41 | 41 | |
42 | 42 | statusBarProxy.SetStatusText("馬に紐付くレース情報を読み込んでいます..."); |
43 | 43 | |
44 | - Dictionary<string, IEnumerable<NUmaRaceWithNRace>> races = await logicUmaRace.LoadRacesByKettoNumListAsync(kettoNums); | |
44 | + Dictionary<string, IEnumerable<NUmaRaceInfo>> races = await logicUmaRace.LoadRacesByKettoNumListAsync(kettoNums); | |
45 | 45 | |
46 | 46 | statusBarProxy.SetStatusText("馬に紐付く着度数情報を読み込んでいます..."); |
47 | 47 |
@@ -43,7 +43,7 @@ namespace UmaTest.App.Domain.UseCase.Interactor | ||
43 | 43 | |
44 | 44 | statusBarProxy.SetStatusText("馬に紐付くレース情報を読み込んでいます..."); |
45 | 45 | |
46 | - Dictionary<string, IEnumerable<NUmaRaceWithNRace>> races = await logicUmaRace.LoadRacesByKettoNumListAsync(kettoNums); | |
46 | + Dictionary<string, IEnumerable<NUmaRaceInfo>> races = await logicUmaRace.LoadRacesByKettoNumListAsync(kettoNums); | |
47 | 47 | |
48 | 48 | statusBarProxy.SetStatusText("馬に紐付く着度数情報を読み込んでいます..."); |
49 | 49 |
@@ -41,7 +41,7 @@ namespace UmaTest.App.Domain.UseCase.Interactor | ||
41 | 41 | |
42 | 42 | List<string> kettoNums = horses.Select(h => h.Value.Kettonum).OrderBy(k => k).ToList(); |
43 | 43 | |
44 | - Dictionary<string, IEnumerable<NUmaRaceWithNRace>> races = logicUmaRace.LoadRacesByKettoNumList(kettoNums); | |
44 | + Dictionary<string, IEnumerable<NUmaRaceInfo>> races = logicUmaRace.LoadRacesByKettoNumList(kettoNums); | |
45 | 45 | Dictionary<string, IEnumerable<ChakudosuuSummary>> summaries = logicUmaRace.LoadChakudosuuSummaries(kettoNums); |
46 | 46 | |
47 | 47 | return translator.Translate(res, req, kettoNums, horses, races, summaries); |
@@ -18,7 +18,7 @@ namespace UmaTest.App.Domain.UseCase.Response | ||
18 | 18 | |
19 | 19 | public List<string> KettoNums { get; set; } |
20 | 20 | public IEnumerable<NUmaRace> Horses { get; set; } |
21 | - public Dictionary<string, IEnumerable<NUmaRaceWithNRace>> Races { get; set; } | |
21 | + public Dictionary<string, IEnumerable<NUmaRaceInfo>> Races { get; set; } | |
22 | 22 | public Dictionary<string, IEnumerable<ChakudosuuSummary>> Summaries { get; set; } |
23 | 23 | } |
24 | 24 | } |
@@ -18,7 +18,7 @@ namespace UmaTest.App.Domain.UseCase.Response | ||
18 | 18 | |
19 | 19 | public List<string> KettoNums { get; set; } |
20 | 20 | public Dictionary<string, NToku> Horses { get; set; } |
21 | - public Dictionary<string, IEnumerable<NUmaRaceWithNRace>> Races { get; set; } | |
21 | + public Dictionary<string, IEnumerable<NUmaRaceInfo>> Races { get; set; } | |
22 | 22 | public Dictionary<string, IEnumerable<ChakudosuuSummary>> Summaries { get; set; } |
23 | 23 | } |
24 | 24 | } |
@@ -17,7 +17,7 @@ namespace UmaTest.App.Domain.UseCase.Response | ||
17 | 17 | |
18 | 18 | public List<string> KettoNums { get; set; } |
19 | 19 | public Dictionary<string, NUma> Horses { get; set; } |
20 | - public Dictionary<string, IEnumerable<NUmaRaceWithNRace>> Races { get; set; } | |
20 | + public Dictionary<string, IEnumerable<NUmaRaceInfo>> Races { get; set; } | |
21 | 21 | public Dictionary<string, IEnumerable<ChakudosuuSummary>> Summaries { get; set; } |
22 | 22 | } |
23 | 23 | } |
@@ -94,6 +94,11 @@ namespace UmaTest.App.Presentation.View | ||
94 | 94 | }, |
95 | 95 | new DataGridViewTextBoxColumn |
96 | 96 | { |
97 | + DataPropertyName = "SenSuu", | |
98 | + Name = "戦数", | |
99 | + }, | |
100 | + new DataGridViewTextBoxColumn | |
101 | + { | |
97 | 102 | DataPropertyName = "Short.G1", |
98 | 103 | Name = "短G1", |
99 | 104 | }, |
@@ -285,8 +290,8 @@ namespace UmaTest.App.Presentation.View | ||
285 | 290 | typeof(UmaSummaryRowDto) |
286 | 291 | ); |
287 | 292 | TypeDescriptor.AddProvider( |
288 | - new NestedTypeDescriptionProvider<NRace>(TypeDescriptor.GetProvider(typeof(NUmaRaceWithNRace))), | |
289 | - typeof(NUmaRaceWithNRace) | |
293 | + new NestedTypeDescriptionProvider<NRace>(TypeDescriptor.GetProvider(typeof(NUmaRaceInfo))), | |
294 | + typeof(NUmaRaceInfo) | |
290 | 295 | ); |
291 | 296 | |
292 | 297 | // |
@@ -62,6 +62,31 @@ namespace UmaTest.Properties { | ||
62 | 62 | |
63 | 63 | /// <summary> |
64 | 64 | /// select |
65 | + /// kettonum | |
66 | + /// , kyori as key1 | |
67 | + /// , gradecd as key2 | |
68 | + /// , to_char(sum(jyuni1), 'FM99') || '.' || to_char(sum(jyuni2), 'FM99') || '.' | |
69 | + /// || to_char(sum(jyuni3), 'FM99') || '.' || to_char(sum(jyuni4ika), 'FM99') as chakudosuu | |
70 | + /// , sum(ijou) as ijou | |
71 | + ///from ( | |
72 | + ///select | |
73 | + /// kettonum | |
74 | + /// , case | |
75 | + /// when r.kyori >= '2800' then '5LONG' | |
76 | + /// when r.kyori >= '2200' then '4MIDDLELONG' | |
77 | + /// when r.kyori >= '1800' then '3MIDDLE' | |
78 | + /// when r.kyori >= '1400' then '2MILE' | |
79 | + /// else '1SHORT' | |
80 | + /// end as kyori [残りの文字列は切り詰められました]"; に類似しているローカライズされた文字列を検索します。 | |
81 | + /// </summary> | |
82 | + internal static string NUmaRaceDao_FindAllChakudosuuSummariesAsync { | |
83 | + get { | |
84 | + return ResourceManager.GetString("NUmaRaceDao_FindAllChakudosuuSummariesAsync", resourceCulture); | |
85 | + } | |
86 | + } | |
87 | + | |
88 | + /// <summary> | |
89 | + /// select | |
65 | 90 | /// kyori as key1 |
66 | 91 | /// , gradecd as key2 |
67 | 92 | /// , to_char(sum(jyuni1), 'FM99') || '.' || to_char(sum(jyuni2), 'FM99') || '.' |
@@ -118,6 +118,9 @@ | ||
118 | 118 | <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
119 | 119 | </resheader> |
120 | 120 | <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> |
121 | + <data name="NUmaRaceDao_FindAllChakudosuuSummariesAsync" type="System.Resources.ResXFileRef, System.Windows.Forms"> | |
122 | + <value>..\resources\sql\numaracedao_findallchakudosuusummariesasync.sql;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;shift_jis</value> | |
123 | + </data> | |
121 | 124 | <data name="NUmaRaceDao_FindChakudosuuSummary" type="System.Resources.ResXFileRef, System.Windows.Forms"> |
122 | 125 | <value>..\resources\sql\numaracedao_findchakudosuusummary.sql;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;shift_jis</value> |
123 | 126 | </data> |
@@ -0,0 +1,35 @@ | ||
1 | +select | |
2 | + kettonum | |
3 | + , kyori as key1 | |
4 | + , gradecd as key2 | |
5 | + , to_char(sum(jyuni1), 'FM99') || '.' || to_char(sum(jyuni2), 'FM99') || '.' | |
6 | + || to_char(sum(jyuni3), 'FM99') || '.' || to_char(sum(jyuni4ika), 'FM99') as chakudosuu | |
7 | + , sum(ijou) as ijou | |
8 | +from ( | |
9 | +select | |
10 | + kettonum | |
11 | + , case | |
12 | + when r.kyori >= '2800' then '5LONG' | |
13 | + when r.kyori >= '2200' then '4MIDDLELONG' | |
14 | + when r.kyori >= '1800' then '3MIDDLE' | |
15 | + when r.kyori >= '1400' then '2MILE' | |
16 | + else '1SHORT' | |
17 | + end as kyori | |
18 | + , case r.gradecd when 'A' then 'G1' when 'B' then 'G2' when 'C' then 'G3' else 'ZZ' end as gradecd | |
19 | + , case when ur.kakuteijyuni = '01' then 1 else 0 end as jyuni1 | |
20 | + , case when ur.kakuteijyuni = '02' then 1 else 0 end as jyuni2 | |
21 | + , case when ur.kakuteijyuni = '03' then 1 else 0 end as jyuni3 | |
22 | + , case when ur.kakuteijyuni > '03' then 1 else 0 end as jyuni4ika | |
23 | + , case when ur.kakuteijyuni = '00' then 1 else 0 end as ijou | |
24 | +from | |
25 | + n_uma_race ur | |
26 | + inner join n_race r | |
27 | + using (year, jyocd, kaiji, nichiji, racenum) | |
28 | +where | |
29 | + ur.kettonum in (@KettoNums) | |
30 | + /* and to_date(ur.year || ur.monthday, 'YYYYMMDD') > (select max(to_date(ur2.year || ur2.monthday, 'YYYYMMDD')) from n_uma_race ur2 where ur.bamei = ur2.bamei) - INTERVAL '1 year' */ | |
31 | +) v | |
32 | +group by | |
33 | + kettonum, kyori, gradecd | |
34 | +order by | |
35 | + kettonum, kyori, gradecd |
@@ -1,2 +1,3 @@ | ||
1 | 1 | Controller→InfraとAppで分割、Abstract化? |
2 | 2 | requestにrequestScope用のdictionaryを追加、translatorに個別引数で渡す方法から変更 |
3 | +daoでdictionaryを生成している処理をlogicかtranslatorまでpullup | |
\ No newline at end of file |
@@ -231,7 +231,7 @@ | ||
231 | 231 | <Compile Include="Infra\Domain\DaoException.cs" /> |
232 | 232 | <Compile Include="App\Domain\Model\Repository\Database\Dao\NUmaRaceDao.cs" /> |
233 | 233 | <Compile Include="App\Domain\Model\Repository\Database\Dto\ChakudosuuSummary.cs" /> |
234 | - <Compile Include="App\Domain\Model\Repository\Database\Dto\NUmaRaceWithNRace.cs" /> | |
234 | + <Compile Include="App\Domain\Model\Repository\Database\Dto\NUmaRaceInfo.cs" /> | |
235 | 235 | <Compile Include="App\Domain\Model\Repository\Database\Entity\EveryDB2.cs" /> |
236 | 236 | <Compile Include="Infra\Adaptor\Gateway\UI\DlgInfo.cs" /> |
237 | 237 | <Compile Include="Infra\Adaptor\Gateway\UI\IUserDialogProxy.cs" /> |
@@ -317,6 +317,7 @@ | ||
317 | 317 | <Content Include="Infra\Adaptor\Command\README.txt" /> |
318 | 318 | <EmbeddedResource Include="Resources\Sql\NUmaRaceDao_FindChakudosuuSummary.sql" /> |
319 | 319 | <EmbeddedResource Include="Resources\Sql\NUmaRaceDao_FindChakudosuuSummaryAsync.sql" /> |
320 | + <EmbeddedResource Include="Resources\Sql\NUmaRaceDao_FindAllChakudosuuSummariesAsync.sql" /> | |
320 | 321 | <Content Include="ToDo.txt" /> |
321 | 322 | </ItemGroup> |
322 | 323 | <ItemGroup /> |