annotate src/kaigo/Perori/perori.go @ 42:c58172a59534

bug fix.
author pyon@macmini
date Tue, 10 Mar 2020 21:12:29 +0900
parents 34a474fb83c3
children 77dd877929f5
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 "flag"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
5 "compress/gzip"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
6 "encoding/csv"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
7 "fmt"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
8 "html/template"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
9 "io/ioutil"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
10 "log"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
11 "os"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
12 "strings"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
13 "sort"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
14 "time"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
15
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
16 "golang.org/x/text/encoding/japanese"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
17 "golang.org/x/text/transform"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
18 )
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
19
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
20 var debug_log bool
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
21
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
22 // Constants
42
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
23 const version = "0.3"
41
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
24 const default_dbfile = "ikenshoirai.db"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
25 const default_csvfile = "ikenshoirai.csv"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
26
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
27 const tpl = `
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
28 <!DOCTYPE html> <html>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
29 <head>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
30 <style type="text/css">
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
31 body { font-size: 9pt; margin-left: 0px;}
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
32 h2 { font-size: 11pt; margin-bottom: 1px; background-color: #ccccff; padding-left: 5px; }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
33 h3 { font-size: 11pt; margin-bottom: 1px; background-color: #f0a8a8; padding-left: 10px; }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
34 table, th, td { border: 0.3px #c0c0c0 solid; border-collapse:collapse; }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
35 table { margin-bottom: 5px; margin-left: 15px; }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
36 th { background-color: #ccffcc; }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
37 hr { page-break-before: always; }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
38 </style>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
39 <title> - </title>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
40 </head>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
41 <body>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
42
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
43 <h2> List <small>( Date = {{.Ymd}} / N = {{.NHhs}} / Dr = {{.NDr}} )</small> </h2>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
44 {{range .Doctors}}
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
45 <h3>{{.Name}}<small> ..... {{.Hp}}:{{.Senmon}}</small></h3>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
46 {{range .Clients}}
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
47 <table>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
48 <tr>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
49 <td width=140 style="background-color: #98f0f0; padding-left: 10px;">{{.Name}}</td>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
50 <td width=120 align=center>{{.Kubun}} {{.Ymd}}</td>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
51 <td width=480 style="padding-left: 10px;">
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
52
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
53 {{if .Prev.Ymd}}
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
54 {{if eq .DrId .Prev.DrId}}
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
55 {{str2cp932 "★ 継続 -"}} {{.Prev.Ymd}}
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
56 {{else}}
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
57 {{.Prev.Dr}} {{.Prev.Ymd}}
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
58 {{end}}
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
59 {{else}}
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
60 New !
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
61 {{end}}
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
62
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
63 </td>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
64 <td width=80 align=center>{{.Hhsno}}</td>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
65 </tr>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
66 <tr>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
67 <td colspan=4 style="font-family: serif; font-size: 8pt; padding-left: 10px;">{{.Biko}}</td>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
68 </tr>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
69
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
70 </table>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
71 {{end}}
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
72 {{end}}
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
73
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
74 <hr />
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
75 {{$hpno := 0}}
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
76 <h2> N by Hp </h2>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
77 <table>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
78 <tr> <th> no </th> <th> hp </th> <th width=60> n </th> </tr>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
79 {{range $hp, $n := .Hp}}
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
80 <tr>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
81 {{$hpno = add1 $hpno}}
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
82 <td align=right style="padding-right: 5px;"> {{$hpno}} </td>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
83 <td style="padding-left: 5px;"> {{$hp}} </td>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
84 <td align=right style="padding-right: 5px;"> {{$n}} </td>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
85 </tr>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
86 {{end}}
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
87 <tr> <td></td> <td align=right> sum &gt &gt &gt</td> <td align=right style="padding-right: 5px;"> <b> {{.HpSum}} </b> </td> </tr>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
88 </table>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
89 </body>
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
90 </html>`
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
91
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
92
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
93 // Define Types
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
94 type PrevSinsei struct {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
95 Biko string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
96 DrId string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
97 Dr string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
98 IraiYmd string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
99 Ymd string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
100 Kubun string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
101 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
102
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
103 type Sinsei struct {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
104 Hhsno string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
105 Name string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
106 Biko string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
107 DrId string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
108 Dr string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
109 DrKana string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
110 Hp string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
111 IraiYmd string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
112 Ymd string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
113 Kubun string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
114 Senmon string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
115 Prev PrevSinsei
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
116 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
117
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
118 func (s *Sinsei) SetPrev(prev PrevSinsei) {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
119 s.Prev = prev
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
120 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
121
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
122 func (s Sinsei) String() string {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
123 return strings.Join([]string{s.Hhsno, s.Name, s.Ymd, s.Kubun, s.Dr, s.Hp, s.Senmon, s.IraiYmd, s.Biko}, ",")
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
124 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
125
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
126 func (s *Sinsei) Humanize() {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
127 var buf string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
128
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
129 switch s.Kubun {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
130 case "01":
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
131 buf = "新規"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
132 case "02":
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
133 buf = "更新"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
134 case "10":
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
135 buf = "支介"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
136 case "05":
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
137 buf = "区変"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
138 case "03":
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
139 buf = "転入"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
140 case "09":
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
141 buf = "証交"
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
142 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
143 s.Kubun, _, _ = transform.String(japanese.ShiftJIS.NewEncoder(), buf)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
144
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
145 s.Ymd = strings.Join([]string{s.Ymd[4:6], s.Ymd[6:8]}, ".")
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
146 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
147
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
148 type Doctor struct {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
149 Id string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
150 Name string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
151 Kana string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
152 Hp string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
153 Senmon string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
154 Clients []Sinsei
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
155 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
156
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
157 func (d *Doctor) AddClient(sinsei Sinsei) {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
158 d.Clients = append(d.Clients, sinsei)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
159 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
160
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
161 func (d Doctor) String() string {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
162 return d.Name
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
163 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
164
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
165 // Main
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
166 func main() {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
167 var csvfile, dbfile, date string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
168
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
169 today := time.Now().Format("20060102")
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
170
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
171 flag.StringVar(&csvfile, "c", default_csvfile, "csv file")
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
172 flag.StringVar(&dbfile, "b", default_dbfile, "db file")
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
173 flag.StringVar(&date, "r", today, "Ikensho Irai YMD")
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
174 flag.BoolVar(&debug_log, "d", false, "print debug-log (stderr)")
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
175 flag.Parse()
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
176
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
177 csvdata, hhshash, err := getdata_fromCSV(csvfile, date)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
178 if err != nil {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
179 log.Fatal(err)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
180 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
181 print_debug_log(fmt.Sprintf("csvdata: n=%d", len(csvdata))) //
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
182 print_debug_log(fmt.Sprintf("hhshash: n=%d", len(hhshash))) //
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
183
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
184 dbdata, err := getdata_fromDB(dbfile, hhshash)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
185 if err != nil {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
186 log.Fatal(err)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
187 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
188 print_debug_log(fmt.Sprintf("dbdata: n=%d", len(dbdata))) //
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
189
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
190 dbdata = append(dbdata, csvdata...)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
191 print_debug_log(fmt.Sprintf("dbdata: n=%d", len(dbdata))) //
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
192
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
193 sort.Slice(dbdata, func(i, j int) bool {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
194 if dbdata[i].Hhsno != dbdata[j].Hhsno {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
195 return dbdata[i].Hhsno < dbdata[j].Hhsno
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
196 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
197 if dbdata[i].Ymd != dbdata[j].Ymd {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
198 return dbdata[i].Ymd > dbdata[j].Ymd
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
199 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
200 return false
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
201 })
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
202
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
203 var recentdata []Sinsei
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
204 prevhash := make(map[string]PrevSinsei)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
205 hhscnt := make(map[string]int)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
206 for _, ss := range dbdata {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
207 ss.Humanize()
42
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
208 switch hhscnt[ss.Hhsno] {
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
209 case 0:
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
210 recentdata = append(recentdata, ss)
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
211 hhscnt[ss.Hhsno]++;
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
212 case 1:
41
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
213 prevhash[ss.Hhsno] = PrevSinsei{
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
214 Biko: ss.Biko,
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
215 DrId: ss.DrId,
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
216 Dr: ss.Dr + "(" + ss.Hp + ":" + ss.Senmon + ")",
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
217 IraiYmd: ss.IraiYmd,
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
218 Ymd: ss.Ymd,
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
219 Kubun: ss.Kubun,
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
220 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
221 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
222 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
223 print_debug_log(fmt.Sprintf("recentdata: n=%d", len(recentdata))) //
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
224
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
225 doctorhash := make(map[string]Doctor)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
226 hpcnt := make(map[string]int)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
227 var hpcntsum int
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
228 for _, ss := range recentdata {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
229 ss.SetPrev(prevhash[ss.Hhsno])
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
230 if d, ok := doctorhash[ss.DrId]; !ok {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
231 doctorhash[ss.DrId] = Doctor{
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
232 Id: ss.DrId,
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
233 Name: ss.Dr,
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
234 Kana: ss.DrKana,
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
235 Hp: ss.Hp,
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
236 Senmon: ss.Senmon,
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
237 Clients: []Sinsei{ss},
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
238 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
239 } else {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
240 d.AddClient(ss)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
241 doctorhash[ss.DrId] = d
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
242 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
243 hpcnt[ss.Hp]++
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
244 hpcntsum++
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
245 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
246
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
247 var doctors []Doctor
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
248 for _, dr := range doctorhash {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
249 doctors = append(doctors, dr)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
250 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
251 sort.Slice(doctors, func(i, j int) bool {
42
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
252 if doctors[i].Kana != doctors[j].Kana {
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
253 return doctors[i].Kana < doctors[j].Kana
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
254 }
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
255 if doctors[i].Id != doctors[j].Id {
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
256 return doctors[i].Id < doctors[j].Id
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
257 }
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
258 return false
41
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
259 })
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
260
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
261 irai := struct {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
262 Ymd string
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
263 NHhs int
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
264 NSinsei int
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
265 NDr int
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
266 Doctors []Doctor
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
267 Hp map[string]int
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
268 HpSum int
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
269 }{
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
270 Ymd: strings.Join([]string{date[0:4], date[4:6], date[6:8]}, "."),
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
271 NHhs: len(hhshash),
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
272 NSinsei: len(dbdata),
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
273 NDr: len(doctors),
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
274 Doctors: doctors,
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
275 Hp: hpcnt,
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
276 HpSum: hpcntsum,
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
277 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
278
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
279 funcmap := template.FuncMap{
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
280 "shorten": shorten,
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
281 "str2cp932": str2cp932,
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
282 "add1": func(a int) int { return a + 1 },
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
283 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
284
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
285 t, err := template.New("webpage").Funcs(funcmap).Parse(tpl)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
286 if err != nil {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
287 log.Fatal(err)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
288 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
289
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
290 err = t.Execute(os.Stdout, irai)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
291 if err != nil {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
292 log.Fatal(err)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
293 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
294 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
295
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
296 // Utility functions
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
297 func csv2sinsei(record []string) Sinsei {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
298 return Sinsei{
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
299 Hhsno: strings.TrimSpace(record[0]),
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
300 Name: strings.TrimSpace(record[1]),
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
301 Biko: strings.TrimSpace(record[2]),
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
302 DrId: strings.TrimSpace(record[3]),
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
303 Dr: strings.TrimSpace(record[4]),
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
304 DrKana: strings.TrimSpace(record[5]),
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
305 Hp: strings.TrimSpace(record[6]),
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
306 IraiYmd: strings.TrimSpace(record[7]),
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
307 Ymd: strings.TrimSpace(record[8]),
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
308 Kubun: strings.TrimSpace(record[9]),
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
309 Senmon: strings.TrimSpace(record[10]),
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
310 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
311 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
312
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
313 func getdata_fromCSV(file, date string) (sinsei []Sinsei, hhshash map[string]bool, err error) {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
314 hhshash = make(map[string]bool)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
315
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
316 data, err := ioutil.ReadFile(file)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
317 if err != nil {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
318 return sinsei, hhshash, err
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
319 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
320
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
321 r := csv.NewReader(strings.NewReader(string(data)))
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
322 records, err := r.ReadAll()
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
323 if err != nil {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
324 return sinsei, hhshash, err
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
325 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
326
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
327 for _, record := range records {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
328 ss := csv2sinsei(record)
42
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
329 if ss.IraiYmd == date {
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
330 hhshash[ss.Hhsno] = true
41
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
331 }
42
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
332 }
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
333
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
334 for _, record := range records {
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
335 ss := csv2sinsei(record)
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
336 if _, ok := hhshash[ss.Hhsno]; ok {
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
337 sinsei = append(sinsei, ss)
c58172a59534 bug fix.
pyon@macmini
parents: 41
diff changeset
338 }
41
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
339 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
340
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
341 return sinsei, hhshash, nil
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
342 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
343
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
344 func getdata_fromDB(file string, hhshash map[string]bool) (sinsei []Sinsei, err error) {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
345 f, err := os.Open(file)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
346 if err != nil {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
347 return sinsei, err
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
348 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
349 defer f.Close()
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
350
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
351 zr, err := gzip.NewReader(f)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
352 if err != nil {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
353 return sinsei, err
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
354 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
355
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
356 data, err := ioutil.ReadAll(zr)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
357 if err != nil {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
358 return sinsei, err
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
359 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
360
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
361 if err := zr.Close(); err != nil {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
362 return sinsei, err
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
363 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
364
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
365 r := csv.NewReader(strings.NewReader(string(data)))
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
366 records, err := r.ReadAll()
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
367 if err != nil {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
368 return sinsei, err
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
369 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
370
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
371 for _, record := range records {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
372 hno := strings.TrimSpace(record[0])
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
373 if _, ok := hhshash[hno]; ok {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
374 sinsei = append(sinsei, csv2sinsei(record))
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
375 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
376 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
377
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
378 return sinsei, nil
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
379 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
380
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
381 func shorten(msg string, length int) string {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
382 if len(msg) > length {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
383 msg = msg[0:length] + "..."
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
384 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
385 return msg
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
386 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
387
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
388 func str2cp932(s string) string {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
389 s, _, _ = transform.String(japanese.ShiftJIS.NewEncoder(), s)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
390 return s
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
391 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
392
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
393 func print_debug_log(msg string) {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
394 if debug_log {
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
395 fmt.Fprintf(os.Stderr, "%s\n", msg)
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
396 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
397 }
34a474fb83c3 add perori/porori/nk.
pyon@macmini
parents:
diff changeset
398