GrpcPrint/PrintS/Config/dao/IOVersionDao.cpp

253 lines
8.8 KiB
C++
Raw Normal View History

2024-03-19 17:45:12 +08:00
#include "IOVersionDao.h"
#include "../bean/SystemBase.h"
#include "../../Machine/HBD1000.h"
#include "../../Machine/HBD1500.h"
#include "../../Machine/HBD1200OLD.h"
#include "../../Machine/HBD1200.h"
IOVersionDao::IOVersionDao(SQLite::Database* pdb) :BaseDao(pdb)
{
}
IOVersionDao::~IOVersionDao()
{
}
void IOVersionDao::CreateTable()
{
if (m_pDB->tableExists(IOVersion::TABLE_NAME))return;
char buffer[1024];
string createsql = "CREATE TABLE %s(%s INTEGER PRIMARY KEY AUTOINCREMENT,%s INTEGER,%s INTEGER,%s TEXT)";
sprintf_s(buffer, sizeof(buffer), createsql.c_str(),
IOVersion::TABLE_NAME.c_str(),
IOVersion::FIELD_ID.c_str(),
IOVersion::FIELD_MACHINE_ID.c_str(),
IOVersion::FIELD_VERSION_ID.c_str(),
IOVersion::FIELD_VERSION_CODE.c_str()
);
m_pDB->exec(buffer);
}
void IOVersionDao::Find(map<int, vector<IOVersion*>*>& cfg)
{
char buffer[1024];
string selectStr = "SELECT * FROM %s ORDER BY %s,%s";
sprintf_s(buffer, sizeof(buffer), selectStr.c_str(),IOVersion::TABLE_NAME.c_str(), IOVersion::FIELD_MACHINE_ID.c_str(),IOVersion::FIELD_VERSION_ID.c_str());
SQLite::Statement query(*m_pDB, buffer);
while (query.executeStep()) {
int id = query.getColumn(IOVersion::FIELD_ID.c_str()).getInt();
int mid = query.getColumn(IOVersion::FIELD_MACHINE_ID.c_str()).getInt();
int vid = query.getColumn(IOVersion::FIELD_VERSION_ID.c_str()).getInt();
string vcode = query.getColumn(IOVersion::FIELD_VERSION_CODE.c_str()).getString();
IOVersion* iov = new IOVersion(id,mid,vid,vcode);
if (cfg.find(mid) == cfg.end()) {
vector<IOVersion*>* iovs = new vector<IOVersion *>();
iovs->push_back(iov);
cfg[mid] = iovs;
}
else {
cfg[mid]->push_back(iov);
}
}
string strhead = "INSERT INTO %s (%s,%s,%s) VALUES(";
sprintf_s(buffer, sizeof(buffer), strhead.c_str(), IOVersion::TABLE_NAME.c_str(),
IOVersion::FIELD_MACHINE_ID.c_str(),IOVersion::FIELD_VERSION_ID.c_str(),IOVersion::FIELD_VERSION_CODE.c_str());
string strin = string(buffer) + "%d,%d,'%s')";
vector<string>ins;
if (cfg.find(MachineTypeCfg::HBD_1000)==cfg.end()) {
sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1000, HBD1000::IO_V0,"V0");
ins.push_back(buffer);
vector<IOVersion*>* iovs = new vector<IOVersion *>();
iovs->push_back(new IOVersion(0,MachineTypeCfg::HBD_1000, HBD1000::IO_V0,"V0"));
cfg[MachineTypeCfg::HBD_1000] = iovs;
}
else {
vector<IOVersion*>* iovs = cfg[MachineTypeCfg::HBD_1000];
bool isfind = false;
for (size_t i = 0; i < iovs->size(); i++) {
IOVersion* iov = (*iovs)[i];
if (iov->m_VersionId== HBD1000::IO_V0) {
isfind = true;
}
}
if (!isfind) {
sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1000, HBD1000::IO_V0, "V0");
ins.push_back(buffer);
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V0, "V0"));
}
}
if (cfg.find(MachineTypeCfg::HBD_1000) == cfg.end()) {
sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1000, HBD1000::IO_V1, "V1");
ins.push_back(buffer);
vector<IOVersion*>* iovs = new vector<IOVersion *>();
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V1, "V1"));
cfg[MachineTypeCfg::HBD_1000] = iovs;
}
else {
vector<IOVersion*>* iovs = cfg[MachineTypeCfg::HBD_1000];
bool isfind = false;
for (size_t i = 0; i < iovs->size(); i++) {
IOVersion* iov = (*iovs)[i];
if (iov->m_VersionId == HBD1000::IO_V1) {
isfind = true;
}
}
if (!isfind) {
sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1000, HBD1000::IO_V1, "V1");
ins.push_back(buffer);
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V1, "V1"));
}
}
if (cfg.find(MachineTypeCfg::HBD_1000) == cfg.end()) {
sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1000, HBD1000::IO_V2, "V2");
ins.push_back(buffer);
vector<IOVersion*>* iovs = new vector<IOVersion *>();
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V2, "V2"));
cfg[MachineTypeCfg::HBD_1000] = iovs;
}
else {
vector<IOVersion*>* iovs = cfg[MachineTypeCfg::HBD_1000];
bool isfind = false;
for (size_t i = 0; i < iovs->size(); i++) {
IOVersion* iov = (*iovs)[i];
if (iov->m_VersionId == HBD1000::IO_V2) {
isfind = true;
}
}
if (!isfind) {
sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1000, HBD1000::IO_V2, "V2");
ins.push_back(buffer);
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V2, "V2"));
}
}
if (cfg.find(MachineTypeCfg::HBD_1000) == cfg.end()) {
sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1000, HBD1000::IO_V3, "V3");
ins.push_back(buffer);
vector<IOVersion*>* iovs = new vector<IOVersion *>();
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V3, "V3"));
cfg[MachineTypeCfg::HBD_1000] = iovs;
}
else {
vector<IOVersion*>* iovs = cfg[MachineTypeCfg::HBD_1000];
bool isfind = false;
for (size_t i = 0; i < iovs->size(); i++) {
IOVersion* iov = (*iovs)[i];
if (iov->m_VersionId == HBD1000::IO_V3) {
isfind = true;
}
}
if (!isfind) {
sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1000, HBD1000::IO_V3, "V3");
ins.push_back(buffer);
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V3, "V3"));
}
}
if (cfg.find(MachineTypeCfg::HBD_1000) == cfg.end()) {
sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1000, HBD1000::IO_V4, "V4");
ins.push_back(buffer);
vector<IOVersion*>* iovs = new vector<IOVersion*>();
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V4, "V4"));
cfg[MachineTypeCfg::HBD_1000] = iovs;
}
else {
vector<IOVersion*>* iovs = cfg[MachineTypeCfg::HBD_1000];
bool isfind = false;
for (size_t i = 0; i < iovs->size(); i++) {
IOVersion* iov = (*iovs)[i];
if (iov->m_VersionId == HBD1000::IO_V4) {
isfind = true;
}
}
if (!isfind) {
sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1000, HBD1000::IO_V4, "V4");
ins.push_back(buffer);
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1000, HBD1000::IO_V4, "V4"));
}
}
if (cfg.find(MachineTypeCfg::HBD_1500) == cfg.end()) {
sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1500, HBD1500::IO_V0, "V0");
ins.push_back(buffer);
vector<IOVersion*>* iovs = new vector<IOVersion *>();
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1500, HBD1500::IO_V0, "V0"));
cfg[MachineTypeCfg::HBD_1500] = iovs;
}
else {
vector<IOVersion*>* iovs = cfg[MachineTypeCfg::HBD_1500];
bool isfind = false;
for (size_t i = 0; i < iovs->size(); i++) {
IOVersion* iov = (*iovs)[i];
if (iov->m_VersionId == HBD1500::IO_V0) {
isfind = true;
}
}
if (!isfind) {
sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1500, HBD1500::IO_V0, "V0");
ins.push_back(buffer);
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1500, HBD1500::IO_V0, "V0"));
}
}
if (cfg.find(MachineTypeCfg::HBD_1200_OLD) == cfg.end()) {
sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1200_OLD, HBD1200OLD::IO_V0, "V0");
ins.push_back(buffer);
vector<IOVersion*>* iovs = new vector<IOVersion *>();
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1200_OLD, HBD1200OLD::IO_V0, "V0"));
cfg[MachineTypeCfg::HBD_1200_OLD] = iovs;
}
else {
vector<IOVersion*>* iovs = cfg[MachineTypeCfg::HBD_1200_OLD];
bool isfind = false;
for (size_t i = 0; i < iovs->size(); i++) {
IOVersion* iov = (*iovs)[i];
if (iov->m_VersionId == HBD1200OLD::IO_V0) {
isfind = true;
}
}
if (!isfind) {
sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1200_OLD, HBD1200OLD::IO_V0, "V0");
ins.push_back(buffer);
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1200_OLD, HBD1200OLD::IO_V0, "V0"));
}
}
if (cfg.find(MachineTypeCfg::HBD_1200) == cfg.end()) {
sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1200, HBD1200::IO_V0, "V0");
ins.push_back(buffer);
vector<IOVersion*>* iovs = new vector<IOVersion *>();
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1200, HBD1200::IO_V0, "V0"));
cfg[MachineTypeCfg::HBD_1200] = iovs;
}
else {
vector<IOVersion*>* iovs = cfg[MachineTypeCfg::HBD_1200];
bool isfind = false;
for (size_t i = 0; i < iovs->size(); i++) {
IOVersion* iov = (*iovs)[i];
if (iov->m_VersionId == HBD1200::IO_V0) {
isfind = true;
}
}
if (!isfind) {
sprintf_s(buffer, sizeof(buffer), strin.c_str(), MachineTypeCfg::HBD_1200, HBD1200::IO_V0, "V0");
ins.push_back(buffer);
iovs->push_back(new IOVersion(0, MachineTypeCfg::HBD_1200, HBD1200::IO_V0, "V0"));
}
}
if (!ins.empty()) {
SQLite::Transaction transaction(*m_pDB);
for (size_t insIndex = 0; insIndex < ins.size(); insIndex++) {
m_pDB->exec(ins[insIndex]);
}
transaction.commit();
}
}