0
|
1 // Filename : index.cpp
|
8
|
2 // Last Change: 01-Nov-2013.
|
0
|
3 //
|
|
4
|
|
5 #include "index.h"
|
2
|
6 #include "db.h"
|
|
7 #include "wx/wxsqlite3.h"
|
0
|
8
|
|
9 IndexDialog::IndexDialog( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style )
|
|
10 : wxDialog( parent, id, title, pos, size, style )
|
|
11 {
|
|
12 this->SetSizeHints( wxDefaultSize, wxDefaultSize );
|
|
13
|
|
14 wxBoxSizer* bSizerTop = new wxBoxSizer( wxHORIZONTAL );
|
|
15
|
|
16 m_listCtrl = new wxListCtrl( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT );
|
|
17
|
|
18 wxListItem itemCol;
|
2
|
19 itemCol.SetText( wxT("通番") );
|
0
|
20 m_listCtrl->InsertColumn( 0, itemCol );
|
|
21 m_listCtrl->SetColumnWidth( 0, 50 );
|
|
22 itemCol.SetText( wxT("年月日") );
|
|
23 m_listCtrl->InsertColumn( 1, itemCol );
|
|
24 m_listCtrl->SetColumnWidth( 1, 80 );
|
|
25 itemCol.SetText( wxT("合議体") );
|
|
26 m_listCtrl->InsertColumn( 2, itemCol );
|
2
|
27 m_listCtrl->SetColumnWidth( 2, 60 );
|
0
|
28 itemCol.SetText( wxT("被保険者番号") );
|
|
29 m_listCtrl->InsertColumn( 3, itemCol );
|
|
30 m_listCtrl->SetColumnWidth( 3, 100 );
|
|
31 itemCol.SetText( wxT("氏名") );
|
|
32 m_listCtrl->InsertColumn( 4, itemCol );
|
2
|
33 m_listCtrl->SetColumnWidth( 4, 120 );
|
0
|
34
|
|
35 bSizerTop->Add( m_listCtrl, 1, wxALL|wxEXPAND, 5 );
|
|
36
|
|
37 wxBoxSizer* bSizerR = new wxBoxSizer( wxVERTICAL );
|
|
38
|
|
39 m_calendar = new wxCalendarCtrl( this, ID_CALNENDER, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxCAL_SHOW_HOLIDAYS );
|
|
40 bSizerR->Add( m_calendar, 0, wxALL, 5 );
|
|
41
|
|
42 m_buttonMake = new wxButton( this, ID_MKINDEX, wxT("作成"), wxDefaultPosition, wxDefaultSize, 0 );
|
2
|
43 bSizerR->Add( m_buttonMake, 0, wxALIGN_RIGHT|wxALL, 5 );
|
0
|
44
|
2
|
45 bSizerR->Add( 0, 300, 1, wxEXPAND, 5 );
|
|
46
|
|
47 m_richText = new wxRichTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( -1, 100 ), wxVSCROLL|wxBORDER_NONE|wxWANTS_CHARS );
|
|
48 bSizerR->Add( m_richText, 0, wxEXPAND|wxALL, 5 );
|
|
49
|
0
|
50 m_buttonClose = new wxButton( this, wxID_CANCEL, wxT("閉じる"), wxDefaultPosition, wxDefaultSize, 0 );
|
2
|
51 bSizerR->Add( m_buttonClose, 0, wxALIGN_RIGHT|wxALL, 5 );
|
0
|
52
|
|
53 bSizerTop->Add( bSizerR, 0, wxALIGN_RIGHT, 5 );
|
|
54
|
|
55 this->SetSizer( bSizerTop );
|
|
56 this->Layout();
|
|
57
|
|
58 this->Centre( wxBOTH );
|
2
|
59
|
|
60 CheckHhs();
|
0
|
61 }
|
|
62
|
|
63 IndexDialog::~IndexDialog()
|
|
64 {
|
|
65 }
|
|
66
|
|
67 // Event Table
|
|
68 BEGIN_EVENT_TABLE( IndexDialog, wxDialog )
|
2
|
69 EVT_CALENDAR_PAGE_CHANGED( ID_CALNENDER, IndexDialog::OnPage )
|
|
70 EVT_CALENDAR( ID_CALNENDER, IndexDialog::OnSelect )
|
|
71 EVT_BUTTON( ID_MKINDEX, IndexDialog::OnMakeIndex )
|
0
|
72 END_EVENT_TABLE()
|
|
73
|
2
|
74 // Event Handlers & Functions
|
|
75 void IndexDialog::OnSelect( wxCalendarEvent& WXUNUSED(event) )
|
|
76 {
|
|
77 UpdateList();
|
|
78 }
|
|
79
|
|
80 void IndexDialog::OnMakeIndex( wxCommandEvent& WXUNUSED(event) )
|
|
81 {
|
|
82 wxDateTime dt = m_calendar->GetDate();
|
|
83 wxString month = dt.Format( wxT("%m") );
|
|
84 wxString year = dt.Format( wxT("%Y") );
|
|
85 if ( month.IsSameAs( wxT("01") ) || month.IsSameAs( wxT("02") ) || month.IsSameAs( wxT("03") ) ) {
|
|
86 long y;
|
|
87 year.ToLong( &y, 10 );
|
|
88 y--;
|
|
89 year = wxString::Format( wxT("%d"), y );
|
|
90 }
|
|
91
|
|
92
|
|
93 wxString date = dt.Format( wxT("%Y%m%d") );
|
8
|
94 wxString datadir = m_rootdir + wxFILE_SEP_PATH + year + wxFILE_SEP_PATH + date;
|
|
95 if ( !wxDir::Exists( datadir ) ) {
|
|
96 wxMessageBox( wxT("フォルダが存在しません.") + datadir );
|
2
|
97 return;
|
|
98 }
|
|
99
|
8
|
100 UpdateIndex( datadir, date );
|
2
|
101
|
|
102 UpdateList();
|
|
103 wxMessageBox( wxT("インデックス作成が終了しました.") );
|
|
104 }
|
|
105
|
|
106 void IndexDialog::OnPage( wxCalendarEvent& WXUNUSED(event) ) {}
|
|
107
|
|
108 void IndexDialog::UpdateList( void )
|
|
109 {
|
|
110 wxDateTime dt = m_calendar->GetDate();
|
|
111 wxString ymd = dt.Format( wxT("%Y%m%d") );
|
|
112
|
|
113 wxArrayString ccn = GetCcnByDate( ymd );
|
|
114
|
|
115 m_listCtrl->DeleteAllItems();
|
|
116
|
|
117 wxString buf;
|
|
118 for ( int i = 0; i < ccn.GetCount(); i++ ) {
|
|
119 m_listCtrl->InsertItem( i, -1 );
|
|
120 buf.Printf( wxT("%02d"), i + 1 );
|
|
121 m_listCtrl->SetItem( i, 0, buf, -1 ); // No
|
|
122
|
|
123 wxArrayString ary = wxSplit( ccn[i], '_', '\\' ); // hhsno, path, date
|
|
124 buf = GetHhsInfoByHhsNo( ary[0] );
|
|
125 wxString name = buf.BeforeFirst( '_' );
|
|
126 wxString ccnn = ary[1].Mid( 17, 3 );
|
|
127
|
|
128 m_listCtrl->SetItem( i, 1, ary[2], -1 ); // date
|
|
129 m_listCtrl->SetItem( i, 2, ccnn, -1 ); // ccn
|
|
130 m_listCtrl->SetItem( i, 3, ary[0], -1 ); // hhsno
|
|
131 m_listCtrl->SetItem( i, 4, name, -1 ); // name
|
|
132
|
|
133 if ( i % 2 ) m_listCtrl->SetItemBackgroundColour( i, wxColour(wxT("WHEAT")) );
|
|
134 }
|
|
135 }
|
|
136
|
|
137 void IndexDialog::CheckHhs( void )
|
|
138 {
|
7
|
139 wxArrayString date = GetLastUpdate();
|
2
|
140 wxArrayString result = CheckDBs();
|
|
141
|
7
|
142 m_richText->BeginBold();
|
|
143 m_richText->WriteText( wxT("最終更新年月日") );
|
|
144 m_richText->EndBold();
|
|
145 m_richText->Newline();
|
|
146 m_richText->BeginTextColour( wxColour( 0, 0, 255 ) );
|
|
147 m_richText->WriteText( wxT("インデックス:") );
|
|
148 m_richText->EndTextColour();
|
|
149 m_richText->WriteText( date[0] );
|
|
150 m_richText->Newline();
|
|
151
|
|
152 m_richText->BeginTextColour( wxColour( 0, 0, 255 ) );
|
|
153 m_richText->WriteText( wxT("被保険者情報:") );
|
|
154 m_richText->EndTextColour();
|
|
155 m_richText->WriteText( date[1] );
|
|
156 m_richText->Newline();
|
|
157 m_richText->Newline();
|
|
158
|
2
|
159 for ( int i = 0; i < result.GetCount(); i++ ) {
|
|
160 m_richText->WriteText( wxT("チェック対象 : ") );
|
7
|
161 m_richText->BeginTextColour( wxColour( 255, 0, 0 ) );
|
2
|
162 m_richText->WriteText( result[i] );
|
7
|
163 m_richText->EndTextColour();
|
2
|
164 m_richText->Newline();
|
|
165 }
|
|
166 m_richText->SetEditable( false );
|
|
167 }
|
|
168
|