diff 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
line wrap: on
line diff
--- a/Porori/src2/porori.go	Thu May 27 22:01:27 2021 +0900
+++ b/Porori/src2/porori.go	Sat May 29 10:07:57 2021 +0900
@@ -1,6 +1,11 @@
+/*
+ Last Change: 2021-05-29 Sat 10:07:37.
+*/
 package main
 
 import (
+	_ "embed"
+
 	"encoding/csv"
 	"encoding/json"
 	"fmt"
@@ -15,6 +20,9 @@
 	"golang.org/x/text/transform"
 )
 
+//go:embed porori.go
+var go_source string
+
 const jsonfile = "porori.json"
 
 type Sinsei struct {
@@ -26,10 +34,11 @@
 	Bgn string
 	End string
 	Term string
+	Kaigo string
 }
 
 func (s Sinsei) String() string {
-	return strings.Join([]string{s.No, s.Name, s.Ymd, s.Kbn, s.Bgn, s.End, s.Term, s.Ccn}, ",")
+	return strings.Join([]string{s.No, s.Name, s.Ymd, s.Kbn, s.Kaigo, s.Bgn, s.End, s.Term, s.Ccn}, ",")
 }
 
 func (s Sinsei) TransDate (ymd string) (time.Time, string) {
@@ -79,12 +88,34 @@
 	end, s.End = s.TransDate(s.End)
 
 	s.Term = fmt.Sprintf("%d", s.CountMonth(bgn, end))
+
+	s.Kaigo = strings.TrimSpace(s.Kaigo)
+	switch s.Kaigo {
+	case "21":
+		s.Kaigo = "介1"
+	case "22":
+		s.Kaigo = "介2"
+	case "23":
+		s.Kaigo = "介3"
+	case "24":
+		s.Kaigo = "介4"
+	case "25":
+		s.Kaigo = "介5"
+	case "12":
+		s.Kaigo = "支1"
+	case "13":
+		s.Kaigo = "支2"
+	case "01":
+		s.Kaigo = ""
+	}
+	s.Kaigo, _, _ = transform.String(japanese.ShiftJIS.NewEncoder(), s.Kaigo)
 }
 
 func main() {
 
 	if len(os.Args) != 2 {
-		fmt.Fprint(os.Stderr, "bat input.")
+		//fmt.Fprint(os.Stderr, "bat input.")
+		fmt.Fprint(os.Stderr, go_source)
 		os.Exit(1)
 	}
 
@@ -111,13 +142,14 @@
 
 	r := csv.NewReader(strings.NewReader(string(content)))
 
-	records, err := r.ReadAll()
+	records, err := r.ReadAll()	// sorted by Ymd (on MS-Access Query)
 	if err != nil {
 		log.Fatal(err)
 	}
 
 	// Main Proccess
 	var sinsei []Sinsei
+	var seen = make(map[string]bool)
 
 	for _, record := range records {
 		if record[4] < yf.From || record[4] > yf.To {
@@ -132,10 +164,31 @@
 			Ccn: record[4],
 			Bgn: record[5],
 			End: record[6],
+			Kaigo: record[7],
 		}
-		ss.ChangeExpression()
+		sinsei = append(sinsei, ss)
+
+		if record[3] == "02" {
+			seen[record[0]] = true
+		}
+	}
+
+	var prev_sinsei []Sinsei
+	for _, record := range records {
+		if record[4] < yf.From && seen[record[0]] {
 
-		sinsei = append(sinsei, ss)
+			ss := Sinsei{
+				No: record[0],
+				Name: record[1],
+				Ymd: record[2],
+				Kbn: record[3],
+				Ccn: record[4],
+				Bgn: record[5],
+				End: record[6],
+				Kaigo: record[7],
+			}
+			prev_sinsei = append(prev_sinsei, ss)
+		}
 	}
 
 	sort.Slice(sinsei, func(i, j int) bool {
@@ -143,12 +196,20 @@
 	})
 
 	// Output
-	header := strings.Join([]string{"被保番", "氏名", "申請日", "区分", "開始日", "終了日", "期間", "審査会"}, ",")
+	header := strings.Join([]string{"被保番", "氏名", "申請日", "区分", "要介護度", "開始日", "終了日", "期間", "審査会"}, ",")
 	header, _, _ = transform.String(japanese.ShiftJIS.NewEncoder(), header)
 	fmt.Println(header)
 
 	for _, s := range sinsei {
-		fmt.Println(s)
+		var renew string
+		for _, p := range prev_sinsei {
+			if s.No == p.No {
+				p.ChangeExpression()
+				renew = strings.Join(strings.Split(p.String(), ",")[3:], ",")
+			}
+		}
+		s.ChangeExpression()
+		fmt.Println(s, ",", renew)
 	}
 }