Mercurial > mercurial > hgweb_kaigo.hg.cgi
comparison Porori/src2/porori.go @ 2:65b8529196d5 draft
Porori: add comment.
| author | pyon <pyon@macmini> |
|---|---|
| date | Sat, 29 May 2021 10:07:57 +0900 |
| parents | aaaa401818a1 |
| children | bbeb834023e3 |
comparison
equal
deleted
inserted
replaced
| 1:743a122cae47 | 2:65b8529196d5 |
|---|---|
| 1 /* | |
| 2 Last Change: 2021-05-29 Sat 10:07:37. | |
| 3 */ | |
| 1 package main | 4 package main |
| 2 | 5 |
| 3 import ( | 6 import ( |
| 7 _ "embed" | |
| 8 | |
| 4 "encoding/csv" | 9 "encoding/csv" |
| 5 "encoding/json" | 10 "encoding/json" |
| 6 "fmt" | 11 "fmt" |
| 7 "io/ioutil" | 12 "io/ioutil" |
| 8 "log" | 13 "log" |
| 13 | 18 |
| 14 "golang.org/x/text/encoding/japanese" | 19 "golang.org/x/text/encoding/japanese" |
| 15 "golang.org/x/text/transform" | 20 "golang.org/x/text/transform" |
| 16 ) | 21 ) |
| 17 | 22 |
| 23 //go:embed porori.go | |
| 24 var go_source string | |
| 25 | |
| 18 const jsonfile = "porori.json" | 26 const jsonfile = "porori.json" |
| 19 | 27 |
| 20 type Sinsei struct { | 28 type Sinsei struct { |
| 21 No string | 29 No string |
| 22 Name string | 30 Name string |
| 24 Kbn string | 32 Kbn string |
| 25 Ccn string | 33 Ccn string |
| 26 Bgn string | 34 Bgn string |
| 27 End string | 35 End string |
| 28 Term string | 36 Term string |
| 37 Kaigo string | |
| 29 } | 38 } |
| 30 | 39 |
| 31 func (s Sinsei) String() string { | 40 func (s Sinsei) String() string { |
| 32 return strings.Join([]string{s.No, s.Name, s.Ymd, s.Kbn, s.Bgn, s.End, s.Term, s.Ccn}, ",") | 41 return strings.Join([]string{s.No, s.Name, s.Ymd, s.Kbn, s.Kaigo, s.Bgn, s.End, s.Term, s.Ccn}, ",") |
| 33 } | 42 } |
| 34 | 43 |
| 35 func (s Sinsei) TransDate (ymd string) (time.Time, string) { | 44 func (s Sinsei) TransDate (ymd string) (time.Time, string) { |
| 36 zero := time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC) | 45 zero := time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC) |
| 37 if !strings.HasPrefix(ymd, "20") { | 46 if !strings.HasPrefix(ymd, "20") { |
| 77 _, s.Ccn = s.TransDate(s.Ccn) | 86 _, s.Ccn = s.TransDate(s.Ccn) |
| 78 bgn, s.Bgn = s.TransDate(s.Bgn) | 87 bgn, s.Bgn = s.TransDate(s.Bgn) |
| 79 end, s.End = s.TransDate(s.End) | 88 end, s.End = s.TransDate(s.End) |
| 80 | 89 |
| 81 s.Term = fmt.Sprintf("%d", s.CountMonth(bgn, end)) | 90 s.Term = fmt.Sprintf("%d", s.CountMonth(bgn, end)) |
| 91 | |
| 92 s.Kaigo = strings.TrimSpace(s.Kaigo) | |
| 93 switch s.Kaigo { | |
| 94 case "21": | |
| 95 s.Kaigo = "介1" | |
| 96 case "22": | |
| 97 s.Kaigo = "介2" | |
| 98 case "23": | |
| 99 s.Kaigo = "介3" | |
| 100 case "24": | |
| 101 s.Kaigo = "介4" | |
| 102 case "25": | |
| 103 s.Kaigo = "介5" | |
| 104 case "12": | |
| 105 s.Kaigo = "支1" | |
| 106 case "13": | |
| 107 s.Kaigo = "支2" | |
| 108 case "01": | |
| 109 s.Kaigo = "" | |
| 110 } | |
| 111 s.Kaigo, _, _ = transform.String(japanese.ShiftJIS.NewEncoder(), s.Kaigo) | |
| 82 } | 112 } |
| 83 | 113 |
| 84 func main() { | 114 func main() { |
| 85 | 115 |
| 86 if len(os.Args) != 2 { | 116 if len(os.Args) != 2 { |
| 87 fmt.Fprint(os.Stderr, "bat input.") | 117 //fmt.Fprint(os.Stderr, "bat input.") |
| 118 fmt.Fprint(os.Stderr, go_source) | |
| 88 os.Exit(1) | 119 os.Exit(1) |
| 89 } | 120 } |
| 90 | 121 |
| 91 // Filter Setting | 122 // Filter Setting |
| 92 type YF struct { | 123 type YF struct { |
| 109 log.Fatal(err) | 140 log.Fatal(err) |
| 110 } | 141 } |
| 111 | 142 |
| 112 r := csv.NewReader(strings.NewReader(string(content))) | 143 r := csv.NewReader(strings.NewReader(string(content))) |
| 113 | 144 |
| 114 records, err := r.ReadAll() | 145 records, err := r.ReadAll() // sorted by Ymd (on MS-Access Query) |
| 115 if err != nil { | 146 if err != nil { |
| 116 log.Fatal(err) | 147 log.Fatal(err) |
| 117 } | 148 } |
| 118 | 149 |
| 119 // Main Proccess | 150 // Main Proccess |
| 120 var sinsei []Sinsei | 151 var sinsei []Sinsei |
| 152 var seen = make(map[string]bool) | |
| 121 | 153 |
| 122 for _, record := range records { | 154 for _, record := range records { |
| 123 if record[4] < yf.From || record[4] > yf.To { | 155 if record[4] < yf.From || record[4] > yf.To { |
| 124 continue | 156 continue |
| 125 } | 157 } |
| 130 Ymd: record[2], | 162 Ymd: record[2], |
| 131 Kbn: record[3], | 163 Kbn: record[3], |
| 132 Ccn: record[4], | 164 Ccn: record[4], |
| 133 Bgn: record[5], | 165 Bgn: record[5], |
| 134 End: record[6], | 166 End: record[6], |
| 135 } | 167 Kaigo: record[7], |
| 136 ss.ChangeExpression() | 168 } |
| 137 | |
| 138 sinsei = append(sinsei, ss) | 169 sinsei = append(sinsei, ss) |
| 170 | |
| 171 if record[3] == "02" { | |
| 172 seen[record[0]] = true | |
| 173 } | |
| 174 } | |
| 175 | |
| 176 var prev_sinsei []Sinsei | |
| 177 for _, record := range records { | |
| 178 if record[4] < yf.From && seen[record[0]] { | |
| 179 | |
| 180 ss := Sinsei{ | |
| 181 No: record[0], | |
| 182 Name: record[1], | |
| 183 Ymd: record[2], | |
| 184 Kbn: record[3], | |
| 185 Ccn: record[4], | |
| 186 Bgn: record[5], | |
| 187 End: record[6], | |
| 188 Kaigo: record[7], | |
| 189 } | |
| 190 prev_sinsei = append(prev_sinsei, ss) | |
| 191 } | |
| 139 } | 192 } |
| 140 | 193 |
| 141 sort.Slice(sinsei, func(i, j int) bool { | 194 sort.Slice(sinsei, func(i, j int) bool { |
| 142 return sinsei[i].Ymd < sinsei[j].Ymd | 195 return sinsei[i].Ymd < sinsei[j].Ymd |
| 143 }) | 196 }) |
| 144 | 197 |
| 145 // Output | 198 // Output |
| 146 header := strings.Join([]string{"被保番", "氏名", "申請日", "区分", "開始日", "終了日", "期間", "審査会"}, ",") | 199 header := strings.Join([]string{"被保番", "氏名", "申請日", "区分", "要介護度", "開始日", "終了日", "期間", "審査会"}, ",") |
| 147 header, _, _ = transform.String(japanese.ShiftJIS.NewEncoder(), header) | 200 header, _, _ = transform.String(japanese.ShiftJIS.NewEncoder(), header) |
| 148 fmt.Println(header) | 201 fmt.Println(header) |
| 149 | 202 |
| 150 for _, s := range sinsei { | 203 for _, s := range sinsei { |
| 151 fmt.Println(s) | 204 var renew string |
| 152 } | 205 for _, p := range prev_sinsei { |
| 153 } | 206 if s.No == p.No { |
| 154 | 207 p.ChangeExpression() |
| 208 renew = strings.Join(strings.Split(p.String(), ",")[3:], ",") | |
| 209 } | |
| 210 } | |
| 211 s.ChangeExpression() | |
| 212 fmt.Println(s, ",", renew) | |
| 213 } | |
| 214 } | |
| 215 |
