GrpcPrint/PrintS/Config/dao/TimePowerCompensateDao.cpp
2024-03-19 17:45:12 +08:00

98 lines
4.2 KiB
C++

#include "TimePowerCompensateDao.h"
TimePowerCompensateDao::TimePowerCompensateDao(SQLite::Database* pdb) :BaseDao(pdb)
{
}
TimePowerCompensateDao::~TimePowerCompensateDao()
{
}
void TimePowerCompensateDao::CreateTable()
{
if (m_pDB->tableExists(TimePowerCompensate::TABLE_NAME))return;
char buffer[1024];
string createsql = "CREATE TABLE %s(%s INTEGER PRIMARY KEY,%s INTEGER,%s INTEGER,%s INTEGER,%s FLOAT)";
sprintf_s(buffer, sizeof(buffer), createsql.c_str(), TimePowerCompensate::TABLE_NAME.c_str(),
TimePowerCompensate::FIELD_ID.c_str(),TimePowerCompensate::FIELD_CNO.c_str(), TimePowerCompensate::FIELD_START_MINUTE.c_str(),
TimePowerCompensate::FIELD_END_MINUTE.c_str(), TimePowerCompensate::FIELD_COMPENSATE.c_str());
m_pDB->exec(buffer);
}
void TimePowerCompensateDao::Find(int cno, TimePowerCompensateCfg& tps)
{
char buffer[1024];
string selectSql = "SELECT %s,%s,%s,%s,%s FROM %s WHERE %s=%d ORDER BY %s";
sprintf_s(buffer, sizeof(buffer), selectSql.c_str(), TimePowerCompensate::FIELD_ID.c_str(),TimePowerCompensate::FIELD_CNO.c_str(), TimePowerCompensate::FIELD_START_MINUTE.c_str(),
TimePowerCompensate::FIELD_END_MINUTE.c_str(), TimePowerCompensate::FIELD_COMPENSATE.c_str(), TimePowerCompensate::TABLE_NAME.c_str(),
TimePowerCompensate::FIELD_CNO.c_str(),cno,TimePowerCompensate::FIELD_START_MINUTE.c_str());
SQLite::Statement mtcquery(*m_pDB, buffer);
while (mtcquery.executeStep()) {
TimePowerCompensate* tpc = new TimePowerCompensate();
tpc->m_ID = mtcquery.getColumn(TimePowerCompensate::FIELD_ID.c_str()).getInt();
tpc->m_Cno = mtcquery.getColumn(TimePowerCompensate::FIELD_CNO.c_str()).getInt();
tpc->m_StartMinute = mtcquery.getColumn(TimePowerCompensate::FIELD_START_MINUTE.c_str()).getUInt();
tpc->m_EndMinute = mtcquery.getColumn(TimePowerCompensate::FIELD_END_MINUTE.c_str()).getUInt();
tpc->m_Compensate =(float) mtcquery.getColumn(TimePowerCompensate::FIELD_COMPENSATE.c_str()).getDouble();
tps.m_TimePowerCompensates.push_back(tpc);
}
}
void TimePowerCompensateDao::Save(int cno,TimePowerCompensateCfg& tps)
{
char buffer[512];
sprintf_s(buffer, sizeof(buffer), "DELETE FROM %s WHERE %s=%d", TimePowerCompensate::TABLE_NAME.c_str(),TimePowerCompensate::FIELD_CNO.c_str(),cno);
m_pDB->exec(string(buffer));
string strtemp = "INSERT INTO %s(%s,%s,%s,%s) VALUES(";
sprintf_s(buffer, sizeof(buffer), strtemp.c_str(),
TimePowerCompensate::TABLE_NAME.c_str(),
TimePowerCompensate::FIELD_CNO.c_str(),
TimePowerCompensate::FIELD_START_MINUTE.c_str(),
TimePowerCompensate::FIELD_END_MINUTE.c_str(),
TimePowerCompensate::FIELD_COMPENSATE.c_str()
);
string strsql = string(buffer) + "%d,%u,%u,%f)";
for (size_t i = 0; i < tps.m_TimePowerCompensates.size(); ++i) {
sprintf_s(buffer, sizeof(buffer), strsql.c_str(),cno, tps.m_TimePowerCompensates[i]->m_StartMinute, tps.m_TimePowerCompensates[i]->m_EndMinute, tps.m_TimePowerCompensates[i]->m_Compensate);
m_pDB->exec(string(buffer));
}
}
void TimePowerCompensateDao::Export(int cno, TimePowerCompensateCfg& cfg, std::stringstream &sql)
{
char buffer[512];
sprintf_s(buffer, sizeof(buffer), "DELETE FROM %s WHERE %s=%d", TimePowerCompensate::TABLE_NAME.c_str(), TimePowerCompensate::FIELD_CNO.c_str(), cno);
sql << string(buffer) + "\n";
string strtemp = "INSERT INTO %s(%s,%s,%s,%s) VALUES(";
sprintf_s(buffer, sizeof(buffer), strtemp.c_str(),
TimePowerCompensate::TABLE_NAME.c_str(),
TimePowerCompensate::TABLE_NAME.c_str(),
TimePowerCompensate::FIELD_CNO.c_str(),
TimePowerCompensate::FIELD_START_MINUTE.c_str(),
TimePowerCompensate::FIELD_END_MINUTE.c_str(),
TimePowerCompensate::FIELD_COMPENSATE.c_str()
);
string strsql = string(buffer) + "%d,%u,%u,%f)";
for (size_t i = 0; i < cfg.m_TimePowerCompensates.size(); ++i) {
sprintf_s(buffer, sizeof(buffer), strsql.c_str(), cno, cfg.m_TimePowerCompensates[i]->m_StartMinute, cfg.m_TimePowerCompensates[i]->m_EndMinute, cfg.m_TimePowerCompensates[i]->m_Compensate);
sql << string(buffer) + "\n";
}
}
void TimePowerCompensateDao::Import(std::string &sql)
{
std::stringstream ss(sql);
string cmd;
getline(ss, cmd);
if (cmd.find(TimePowerCompensate::TABLE_NAME) == string::npos)
return;
do {
m_pDB->exec(cmd);
} while (getline(ss, cmd));
}