00001 #ifndef REPORTER_INCLUDED 00002 #define REPORTER_INCLUDED 00003 00004 #include <odem.h> 00005 #include <string> 00006 #include <fstream> 00007 #include <list> 00008 00009 #include "CustomerRequest.h" 00010 00011 struct ReportLine { 00012 int rNnumber; 00013 double startT; 00014 double endT; 00015 Treatment *treat; 00016 std::string material; 00017 int rings; 00018 int doneRings; 00019 00020 ReportLine(const CustomerRequest& r): 00021 treat(r.treatment), 00022 rNnumber(r.getNumber()), 00023 startT(r.startTime), 00024 material(r.material), 00025 rings(r.getNumberOfRings()), 00026 doneRings(r.getNumberOfRings()-r.getOpenNumberOfRings()), 00027 endT(r.isDone()?r.endTime:0.0) 00028 {} 00029 00030 }; 00031 00032 bool operator <(const ReportLine& first, const ReportLine& second); 00033 00034 class Reporter : public Discrete { 00035 public: 00036 Buff_head *requestQ; // Sequenz bisher realisierter Aufträge 00037 Histo *profile[6]; // profil[0] - GesamtAufragsDauer 00038 // für Veredelungstypen V,T,QT,TQT, // Variante 1 00039 // profil[1] - GesamtAuftragsDauer 00040 // für Veredelungstypen VE,NVE, // Variante 2 00041 // profil[2] - GesamtAuftragsDauer 00042 // für Veredelungstypen NT, // Variante 3 00043 // profil[3] - GesamtAuftragsDauer 00044 // für Veredelungstypen N,TN, // Variante 4 00045 // profil[4] - GesamtAuftragsDauer 00046 // für Veredelungstypen GA, // Variante 5 00047 // profil[5] - GesamtAuftragsDauer 00048 // für alle anderen Veredelungstypen (Unknown, Other) 00049 virtual int main(); 00050 00051 Reporter(char *n, Buff_head *r); 00052 00053 void generateReport(std::ofstream& os); 00054 void allTreatments(std::ofstream& os); 00055 00056 private: 00057 std::list<ReportLine> table; 00058 }; 00059 00060 00061 #endif 00062