Пример #1
0
        public void SavModJournal()
        {
            if (models == null || models.Count < 1)
            {
                Msg.F("ModJournal internal error");
            }
            models.Sort();
            Docs doc = Docs.getDoc(Decl.MODELS);

            doc.Reset("Now");
            doc.wrDocSetForm("FORM_Models_in_TSmatch.xlsx");
            foreach (var mod in models)
            {
                string dt     = mod.date.ToString("d.MM.yy H:mm");
                string sPhase = "'" + mod.phase;
                doc.wrDocForm(dt, mod.name, mod.dir, ifcPath,
                              mod.made, sPhase, mod.MD5, mod.strListRules);
            }
            doc.isChanged = true;
            doc.saveDoc();
        }
Пример #2
0
        public void wrModel(string doc_name)
        {
            Log.set("Model.wrModel(" + doc_name + ")");
            DateTime t0  = DateTime.Now;
            Docs     doc = Docs.getDoc(doc_name);

            switch (doc_name)
            {
            case WR_MODEL_INFO:         // общая информация о модели: имя, директория, MD5 и др
                doc.wrDocSetForm("HDR_ModelINFO", 1, AutoFit: true);
                doc.wrDocForm(name, dir, "фаза?", date, MD5, Elm.Elements.Count);
                break;

            case WR_MODEL_RAW:          // элементы с атрибутами, как они прочитаны из модели
                doc.wrDocSetForm("FORM_RawLine", 2, AutoFit: true);
                foreach (var elm in elements)
                {
                    double w = elm.weight;     // elm.weight - weight [kg];
                    double v = elm.volume;     // / 1000 / 1000 / 1000;     // elm.volume [mm3] -> [m3]
                    doc.wrDocForm(elm.guid, elm.mat, elm.mat_type, elm.prf, elm.length, w, v);
                }
                break;

            case WR_MODEL_MATERIALS:        // сводка по материалам, их типам (бетон, сталь и др)
                doc.wrDocSetForm("FORM_Materials", 3, AutoFit: true);
                foreach (var mGr in elmMgroups)
                {
                    doc.wrDocForm(mGr.mat, mGr.totalVolume, mGr.totalWeight, mGr.totalPrice);
                }
                break;

            case WR_MODEL_SUPPLIERS:        // сводка по поставщикам проекта (контакты, URL прайс-листа, закупки)
                doc.wrDocSetForm("FORM_ModSupplierLine", 4, AutoFit: true);
                foreach (var s in Suppliers)
                {
                    doc.wrDocForm(s.name, s.Url, s.City, s.index, s.street, s.telephone);
                }
                break;

            case WR_MODEL_RULES:            // перечень Правил, используемых для обработки модели
                doc.wrDocSetForm("HDR_ModRules", 1, AutoFit: true);
                doc.wrDocForm(strListRules);
                doc.wrDocSetForm("FORM_ModRuleLine");
                foreach (var rule in Rules)
                {
                    doc.wrDocForm(rule.Supplier.name, rule.CompSet.name, rule.text);
                }
                break;

            case WR_MODEL_REPORT:           // отчет по сопоставлению групп <материал, профиль> c прайс-листами поставщиков
                doc.wrDocSetForm("FORM_Report", AutoFit: true);
                int n = 1;
                foreach (var gr in elmGroups)
                {
                    var    comp      = gr.match.component;
                    string compDescr = comp.fps[SType.Description].pars[0].par.ToString();
                    doc.wrDocForm(n++, gr.mat, gr.prf
                                  , gr.totalLength, gr.totalWeight, gr.totalVolume
                                  , compDescr, 0, 0, 0, gr.totalPrice);
                }
                //--- string - Summary
                double sumWgh = 0, sumPrice = 0;
                int    iGr = doc.i0;
                foreach (var gr in elmGroups)
                {
                    double?w = doc.Body.Double(iGr, Decl.REPORT_SUPL_WGT);
                    double?p = doc.Body.Double(iGr++, Decl.REPORT_SUPL_PRICE);
                    sumWgh   += (w == null) ? 0 : (double)w;
                    sumPrice += (p == null) ? 0 : (double)p;
                }
                doc.wrDocSetForm("FORM_Report_Sum", AutoFit: true);
                doc.wrDocForm(sumWgh, sumPrice);
                break;
            }
            doc.isChanged = true;
            doc.saveDoc();
            log.Info("Время записи в файл \"" + doc_name + "\"\t t= " + (DateTime.Now - t0).ToString() + " сек");
            Log.exit();
        }
Пример #3
0
 public void wrModel(WrMod mode, Mod mod)
 {
     string doc_name = mode.ToString();
     Log.set("Model.wrModel(" + doc_name + ")");
     DateTime t0 = DateTime.Now;
     Docs doc = Docs.getDoc(doc_name, create_if_notexist: true, reset: true);
     doc.Reset();
     switch (mode)
     {
         case WrMod.ModelINFO:   // общая информация о модели: имя, директория, MD5 и др
             doc.wrDocSetForm("HDR_ModelINFO", 1, AutoFit: true);
             string adr = mod.adrCity;
             if (mod.adrStreet != string.Empty) adr += ", " + mod.adrStreet;
             doc.wrDocForm(mod.name, adr, mod.dir, mod.phase
                 , sDat(mod.date), mod.MD5
                 , sInt(mod.elements.Count), sDat(mod.pricingDate), mod.pricingMD5);
             break;
         case WrMod.Materials:   // сводка по материалам, их типам (бетон, сталь и др)
             doc.wrDocSetForm("FORM_Materials", 3, AutoFit: true);
             foreach (var mGr in mod.elmMgroups)
             {
                 doc.wrDocForm(mGr.mat, mGr.totalVolume, mGr.totalWeight, mGr.totalPrice);
             }
             break;
         case WrMod.Suppliers:   // сводка по поставщикам проекта (контакты, URL прайс-листа, закупки)
             doc.wrDocSetForm("FORM_ModSupplierLine", 4, AutoFit: true);
             foreach (var s in mod.Suppliers)
             {
                 doc.wrDocForm(s.Name, s.Url, s.City, s.Index, s.Street, s.Telephone);
             }
             break;
         case WrMod.Rules:       // перечень Правил, используемых для обработки модели
             if (mod.Rules.Count == 0) Msg.F("Can't write TSmatchINFO.xlsx/Rules");
             doc.wrDocSetForm("FORM_RuleLine");
             foreach (var rule in mod.Rules)
             {
                 doc.wrDocForm(sDat(rule.date), rule.sSupl, rule.sCS, rule.text);
             }
             break;
         case WrMod.Report:      // отчет по сопоставлению групп <материал, профиль> c прайс-листами поставщиков
             doc.wrDocSetForm("FORM_Report", AutoFit: true);
             int n = 1;
             foreach (var gr in mod.elmGroups)
             {
                 string compDescription = "", suplName = "", csName = "";
                 if(!string.IsNullOrEmpty(gr.SupplierName))
                 {
                     suplName = gr.SupplierName;
                     csName = gr.CompSetName;
                     compDescription = gr.compDescription;
                 }
                 doc.wrDocForm(n++, gr.Mat, gr.Prf
                     , sDbl00(gr.totalLength), sDbl(gr.totalWeight), sDbl(gr.totalVolume)
                     , compDescription, suplName, csName
                     , sDbl(gr.totalWeight), sDbl(gr.totalPrice));
             }
             doc.isChanged = true;
             doc.saveDoc();
             //--- string - Summary
             double sumWgh = 0, sumPrice = 0;
             int iGr = doc.i0;
             foreach (var gr in mod.elmGroups)
             {
                 double? w = doc.Body.Double(iGr, Decl.REPORT_SUPL_WGT);
                 double? p = doc.Body.Double(iGr++, Decl.REPORT_SUPL_PRICE);
                 sumWgh += (w == null) ? 0 : (double)w;
                 sumPrice += (p == null) ? 0 : (double)p;
             }
             doc.wrDocSetForm("FORM_Report_Sum", AutoFit: true);
             doc.wrDocForm(sumWgh, sumPrice);
             break;
     }
     doc.isChanged = true;
     doc.saveDoc();
     log.Info("Время записи в файл \"" + doc_name + "\"\t t= " + (DateTime.Now - t0).ToString() + " сек");
     Log.exit();
 }