using System.Text; using StressClient.Common; using Vbdsm.Common; using Vbdsm.Model; namespace Vbdsm.Gen { public class GenData { public GenData(string terminalIds, string? companyId) { TerminalIds = terminalIds; CompanyId = companyId; } public string TerminalIds { get; set; } public string? CompanyId { get; set; } public string GenTerminals(long date) { //date = date ?? $"{DateTime.Now:yyyyMMddHH}{(DateTime.Now.Minute - DateTime.Now.Minute % 15):D2}00"; var str = $"st=01;cn={CompanyId};datatime={date};cphh=&&"; var tidList = TerminalIds.Split(','); foreach (var tid in tidList) { var terminalStr = GenTerminal(tid, date); if (string.IsNullOrEmpty(terminalStr)) { return ""; } str += terminalStr + "$"; } str = str.TrimEnd('$'); byte[] bytes = StrHexHelper.HexStrToArray(StrHexHelper.StrToHexStr(str, Encoding.Default)); var result = $"##{str.Length:D6}{str}{StrHexHelper.do_CRC(bytes)}\r\n"; return result; } // public long GetGenDateTime(string terminalId) // { // string fileName = $"{CompanyId}@{terminalId}"; // TerminalData terminalData = FileHelper.ReadFileInfo(fileName) ?? new TerminalData(CompanyId, terminalId); // return terminalData.GenDateTime; // } private string GenTerminal(string terminalId, long date) { string fileName = $"{CompanyId}@{terminalId}"; TerminalData terminalData = FileHelper.ReadFileInfo(fileName) ?? new TerminalData(CompanyId, terminalId); var genDate = terminalData.GenDateTime; if (genDate != 0 && genDate >= date) { return ""; } var str = $"tid={terminalId}"; var power = new PowerEnergy(); var dp = Helper.GetRan(22000, 3000, 100); var de = Helper.GetRan(6600, 600, 100); var pe = terminalData.GetCurMonthTotal_P() == 0 ? 0 : terminalData.GetCurMonthTotal_P() + dp; var qe = terminalData.GetCurMonthTotal_E() == 0 ? 0 : terminalData.GetCurMonthTotal_E() + de; var ps = terminalData.Total_P + dp; var qs = terminalData.Total_E + de; power.SetEngine(pe, qe, ps, ps); terminalData.SetMouthTotal_P(pe == 0 ? (decimal)0.01 : pe).SetMouthTotal_E(qe == 0 ? (decimal)0.01 : qe).SetTotal_P(ps).SetTotal_E(qs).SetGenDateTime(date).Save(); str += "&" + power.GetStr(); var hia = new Harmonic("a").SetI(power.ia); str += "&" + hia.GetStr_I(); var hib = new Harmonic("b").SetI(power.ib); str += "&" + hib.GetStr_I(); var hic = new Harmonic("c").SetI(power.ic); str += "&" + hic.GetStr_I(); var hua = new Harmonic("a").SetU(power.ua); str += "&" + hua.GetStr_U(); var hub = new Harmonic("b").SetU(power.ub); str += "&" + hub.GetStr_U(); var huc = new Harmonic("c").SetU(power.uc); str += "&" + huc.GetStr_U(); return str; } } }