annotate src/kaigo/Porori/src2/porori.go @ 41:34a474fb83c3

add perori/porori/nk.
author pyon@macmini
date Wed, 04 Mar 2020 23:46:59 +0900
parents
children 0369656be06c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
41
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
1 package main
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
2
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
3 import (
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
4 "encoding/csv"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
5 "encoding/json"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
6 "fmt"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
7 "io/ioutil"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
8 "log"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
9 "os"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
10 "sort"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
11 "strings"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
12 "time"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
13
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
14 "golang.org/x/text/encoding/japanese"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
15 "golang.org/x/text/transform"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
16 )
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
17
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
18 const jsonfile = "porori.json"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
19
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
20 type Sinsei struct {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
21 No string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
22 Name string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
23 Ymd string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
24 Kbn string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
25 Ccn string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
26 Bgn string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
27 End string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
28 Term string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
29 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
30
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
31 func (s Sinsei) String() string {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
32 return strings.Join([]string{s.No, s.Name, s.Ymd, s.Kbn, s.Bgn, s.End, s.Term, s.Ccn}, ",")
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
33 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
34
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
35 func (s Sinsei) TransDate (ymd string) (time.Time, string) {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
36 zero := time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
37 if !strings.HasPrefix(ymd, "20") {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
38 return zero, "" // it's dummy
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
39 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
40 t, _ := time.Parse("20060102", ymd)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
41 return t, t.Format(" 2006-01-02")
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
42 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
43
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
44 func (s Sinsei) CountMonth(bgn, end time.Time) int {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
45 if bgn.IsZero() {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
46 return 0
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
47 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
48
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
49 m := (end.Year() * 12 + int(end.Month())) - (bgn.Year() * 12 + int(bgn.Month()))
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
50 if bgn.Day() == 1 {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
51 m++
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
52 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
53 return m
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
54 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
55
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
56 func (s *Sinsei) ChangeExpression() {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
57 s.No = "=\"" + strings.TrimSpace(s.No) + "\""
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
58
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
59 switch s.Kbn {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
60 case "01":
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
61 s.Kbn = "新規"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
62 case "02":
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
63 s.Kbn = "更新"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
64 case "10":
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
65 s.Kbn = "支介"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
66 case "05":
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
67 s.Kbn = "区変"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
68 case "03":
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
69 s.Kbn = "転入"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
70 case "09":
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
71 s.Kbn = "証交"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
72 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
73 s.Kbn, _, _ = transform.String(japanese.ShiftJIS.NewEncoder(), s.Kbn)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
74
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
75 var bgn, end time.Time
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
76 _, s.Ymd = s.TransDate(s.Ymd)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
77 _, s.Ccn = s.TransDate(s.Ccn)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
78 bgn, s.Bgn = s.TransDate(s.Bgn)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
79 end, s.End = s.TransDate(s.End)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
80
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
81 s.Term = fmt.Sprintf("%d", s.CountMonth(bgn, end))
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
82 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
83
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
84 func main() {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
85
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
86 if len(os.Args) != 2 {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
87 fmt.Fprint(os.Stderr, "bat input.")
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
88 os.Exit(1)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
89 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
90
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
91 // Filter Setting
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
92 type YF struct {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
93 From string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
94 To string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
95 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
96 var yf YF
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
97
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
98 content, err := ioutil.ReadFile(jsonfile)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
99 if err != nil {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
100 log.Fatal(err)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
101 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
102 if err := json.Unmarshal(content, &yf); err != nil {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
103 log.Fatal(err)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
104 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
105
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
106 // Read CSV
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
107 content, err = ioutil.ReadFile(os.Args[1])
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
108 if err != nil {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
109 log.Fatal(err)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
110 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
111
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
112 r := csv.NewReader(strings.NewReader(string(content)))
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
113
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
114 records, err := r.ReadAll()
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
115 if err != nil {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
116 log.Fatal(err)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
117 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
118
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
119 // Main Proccess
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
120 var sinsei []Sinsei
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
121
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
122 for _, record := range records {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
123 if record[4] < yf.From || record[4] > yf.To {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
124 continue
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
125 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
126
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
127 ss := Sinsei{
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
128 No: record[0],
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
129 Name: record[1],
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
130 Ymd: record[2],
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
131 Kbn: record[3],
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
132 Ccn: record[4],
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
133 Bgn: record[5],
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
134 End: record[6],
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
135 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
136 ss.ChangeExpression()
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
137
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
138 sinsei = append(sinsei, ss)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
139 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
140
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
141 sort.Slice(sinsei, func(i, j int) bool {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
142 return sinsei[i].Ymd < sinsei[j].Ymd
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
143 })
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
144
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
145 // Output
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
146 header := strings.Join([]string{"被保番", "氏名", "申請日", "区分", "開始日", "終了日", "期間", "審査会"}, ",")
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
147 header, _, _ = transform.String(japanese.ShiftJIS.NewEncoder(), header)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
148 fmt.Println(header)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
149
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
150 for _, s := range sinsei {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
151 fmt.Println(s)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
152 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
153 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
154