2024-03-19 17:45:12 +08:00
|
|
|
|
#include "ScannerControlCfgDao.h"
|
|
|
|
|
#include "../ConfigManager.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ScannerControlCfgDao::ScannerControlCfgDao(SQLite::Database* pdb) :BaseDao(pdb)
|
|
|
|
|
{
|
|
|
|
|
m_ScanCfgDao = new ScanCfgDao(pdb);
|
|
|
|
|
m_PowerCompensateDao = new PowerCompensateDao(pdb);
|
|
|
|
|
m_TimePowerCompensateDao = new TimePowerCompensateDao(pdb);
|
|
|
|
|
m_FixPointDao = new FixPointDao(pdb);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ScannerControlCfgDao::~ScannerControlCfgDao()
|
|
|
|
|
{
|
|
|
|
|
if (m_ScanCfgDao)delete m_ScanCfgDao;
|
|
|
|
|
if (m_PowerCompensateDao)delete m_PowerCompensateDao;
|
|
|
|
|
if (m_TimePowerCompensateDao)delete m_TimePowerCompensateDao;
|
|
|
|
|
if (m_FixPointDao)delete m_FixPointDao;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void ScannerControlCfgDao::CreateTable()
|
|
|
|
|
{
|
|
|
|
|
if (!m_pDB->tableExists(ScannerControlCfg::TABLE_NAME))
|
|
|
|
|
{
|
|
|
|
|
char buffer[1024];
|
|
|
|
|
string str = "CREATE TABLE %s(%s INTEGER PRIMARY KEY,%s INTEGER,%s INTEGER,%s INTEGER, %s VARCHAR(50),%s VARCHAR(50),%s INTEGER)";
|
|
|
|
|
sprintf_s(buffer, sizeof(buffer), str.c_str(),
|
|
|
|
|
ScannerControlCfg::TABLE_NAME.c_str(), ScannerControlCfg::FIELD_SEQ_NO.c_str(),
|
|
|
|
|
ScannerControlCfg::FIELD_CONTROL_NO.c_str(),ScannerControlCfg::FIELD_SERIAL_NO.c_str(),
|
|
|
|
|
ScannerControlCfg::FIELD_CONTROL_TYPE.c_str(),ScannerControlCfg::FIELD_CARD_NAME.c_str(),
|
|
|
|
|
ScannerControlCfg::FIELD_CARD_IP.c_str(),ScannerControlCfg::FIELD_IS_ENABLE.c_str());
|
|
|
|
|
m_pDB->exec(buffer);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!m_pDB->tableExists(ScanCfg::TABLE_NAME)) {
|
|
|
|
|
m_ScanCfgDao->CreateTable();
|
|
|
|
|
}
|
|
|
|
|
if (!m_pDB->tableExists(PowerCompensate::TABLE_NAME)) {
|
|
|
|
|
m_PowerCompensateDao->CreateTable();
|
|
|
|
|
}
|
|
|
|
|
if (!m_pDB->tableExists(TimePowerCompensate::TABLE_NAME)) {
|
|
|
|
|
m_TimePowerCompensateDao->CreateTable();
|
|
|
|
|
}
|
|
|
|
|
if (!m_pDB->tableExists(FixPointCfg::TABLE_NAME)) {
|
|
|
|
|
m_FixPointDao->CreateTable();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ScannerControlCfgDao::Save()
|
|
|
|
|
{
|
|
|
|
|
for (size_t i = 0; i < m_MatchCfg.size(); ++i) {
|
|
|
|
|
ScannerControlCfg* pcfg = m_MatchCfg[i];
|
|
|
|
|
if (pcfg == NULL)continue;
|
|
|
|
|
m_pDB->exec(pcfg->GetUpdateSql());
|
2024-06-27 10:56:50 +08:00
|
|
|
|
m_ScanCfgDao->Save(pcfg->m_SeqNo , pcfg->m_ScanCfgWrapper);
|
|
|
|
|
m_PowerCompensateDao->Save(pcfg->m_SeqNo , pcfg->m_ScanCfgWrapper.m_PowerCompensateCfg);
|
|
|
|
|
m_TimePowerCompensateDao->Save(pcfg->m_SeqNo , pcfg->m_ScanCfgWrapper.m_TimePowerCompensateCfg);
|
|
|
|
|
m_FixPointDao->Save(pcfg->m_SeqNo , pcfg->m_FixPointWrapper);
|
2024-03-19 17:45:12 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ScannerControlCfgDao::FindCfg() {
|
|
|
|
|
FindMain();
|
|
|
|
|
Machine* machine = ConfigManager::GetInstance()->GetMachine();
|
|
|
|
|
for (size_t i = 0; i < m_ScannerControlCfgs.size(); ++i)
|
|
|
|
|
{
|
|
|
|
|
ScannerControlCfg* cfg = m_ScannerControlCfgs[i];
|
|
|
|
|
//machine->InitScanParamBeforeFind(&cfg->m_ScanCfgWrapper);
|
2024-06-27 10:56:50 +08:00
|
|
|
|
m_ScanCfgDao->Find(cfg->m_SeqNo , cfg->m_ScanCfgWrapper);
|
|
|
|
|
m_PowerCompensateDao->Find(cfg->m_SeqNo , cfg->m_ScanCfgWrapper.m_PowerCompensateCfg);
|
2024-03-19 17:45:12 +08:00
|
|
|
|
if (cfg->m_ScanCfgWrapper.m_PowerCompensateCfg.m_pcs.empty()) {
|
|
|
|
|
for (int pcIndex = 5; pcIndex <= 100; pcIndex += 5) {
|
|
|
|
|
PowerCompensate* pc = new PowerCompensate();
|
2024-06-27 10:56:50 +08:00
|
|
|
|
pc->m_cno = cfg->m_SeqNo ;
|
2024-03-19 17:45:12 +08:00
|
|
|
|
pc->m_percent = pcIndex;
|
|
|
|
|
pc->m_value = 1.0f;
|
|
|
|
|
pc->m_value_min = 0.0f;
|
|
|
|
|
pc->m_value_max = 3.0f;
|
|
|
|
|
cfg->m_ScanCfgWrapper.m_PowerCompensateCfg.m_pcs.push_back(pc);
|
2024-06-27 10:56:50 +08:00
|
|
|
|
m_PowerCompensateDao->Add(cfg->m_SeqNo , pc);
|
2024-03-19 17:45:12 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2024-06-27 10:56:50 +08:00
|
|
|
|
m_TimePowerCompensateDao->Find(cfg->m_SeqNo , cfg->m_ScanCfgWrapper.m_TimePowerCompensateCfg);
|
|
|
|
|
m_FixPointDao->Find(cfg->m_SeqNo , cfg->m_FixPointWrapper);
|
2024-03-19 17:45:12 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ScannerControlCfgDao::FindMain()
|
|
|
|
|
{
|
|
|
|
|
char buffer[1024];
|
|
|
|
|
string str = "SELECT * FROM %s";
|
|
|
|
|
sprintf_s(buffer, sizeof(buffer), str.c_str(),ScannerControlCfg::TABLE_NAME.c_str());
|
|
|
|
|
SQLite::Statement query(*m_pDB, buffer);
|
|
|
|
|
while (query.executeStep()) {
|
|
|
|
|
ScannerControlCfg* cfg = new ScannerControlCfg();
|
2024-06-27 10:56:50 +08:00
|
|
|
|
cfg->m_SeqNo=query.getColumn(ScannerControlCfg::FIELD_SEQ_NO.c_str()).getInt();
|
|
|
|
|
cfg->m_ControlNo =query.getColumn(ScannerControlCfg::FIELD_CONTROL_NO.c_str()).getInt();
|
|
|
|
|
cfg->m_SerialNo =query.getColumn(ScannerControlCfg::FIELD_SERIAL_NO.c_str()).getInt();
|
|
|
|
|
cfg->m_ControlType =query.getColumn(ScannerControlCfg::FIELD_CONTROL_TYPE.c_str()).getInt();
|
|
|
|
|
cfg->m_CardName =query.getColumn(ScannerControlCfg::FIELD_CARD_NAME.c_str()).getString();
|
|
|
|
|
cfg->m_CardIP =query.getColumn(ScannerControlCfg::FIELD_CARD_IP.c_str()).getString();
|
|
|
|
|
cfg->m_IsEnable =query.getColumn(ScannerControlCfg::FIELD_IS_ENABLE.c_str()).getInt() > 0 ? true : false;
|
2024-03-19 17:45:12 +08:00
|
|
|
|
m_ScannerControlCfgs.push_back(cfg);
|
2024-06-27 10:56:50 +08:00
|
|
|
|
m_ScannerControlCfgMap[cfg->m_SeqNo ] = cfg;
|
2024-03-19 17:45:12 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ScannerControlCfgDao::Export(stringstream& ss)
|
|
|
|
|
{
|
|
|
|
|
for (size_t i = 0; i < m_MatchCfg.size(); ++i) {
|
|
|
|
|
ScannerControlCfg* pcfg = m_MatchCfg[i];
|
|
|
|
|
if (pcfg == NULL)continue;
|
|
|
|
|
ss << pcfg->GetUpdateSql() << "\n";
|
2024-06-27 10:56:50 +08:00
|
|
|
|
m_ScanCfgDao->Export(pcfg->m_SeqNo , pcfg->m_ScanCfgWrapper, ss);
|
|
|
|
|
m_PowerCompensateDao->Export(pcfg->m_SeqNo , pcfg->m_ScanCfgWrapper.m_PowerCompensateCfg, ss);
|
|
|
|
|
m_TimePowerCompensateDao->Export(pcfg->m_SeqNo , pcfg->m_ScanCfgWrapper.m_TimePowerCompensateCfg, ss);
|
2024-03-19 17:45:12 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ScannerControlCfgDao::ExportAllPC(stringstream& ss)
|
|
|
|
|
{
|
|
|
|
|
for (size_t i = 0; i < m_MatchCfg.size(); ++i) {
|
|
|
|
|
ScannerControlCfg* pcfg = m_MatchCfg[i];
|
2024-06-27 10:56:50 +08:00
|
|
|
|
m_PowerCompensateDao->Export(pcfg->m_SeqNo , pcfg->m_ScanCfgWrapper.m_PowerCompensateCfg, ss);
|
2024-03-19 17:45:12 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ScannerControlCfgDao::ImportAllPc(std::string &sql)
|
|
|
|
|
{
|
|
|
|
|
std::stringstream ss(sql);
|
|
|
|
|
string cmd;
|
|
|
|
|
getline(ss, cmd);
|
|
|
|
|
if (cmd.find(PowerCompensate::TABLE_NAME) == string::npos)
|
|
|
|
|
return;
|
|
|
|
|
do {
|
|
|
|
|
m_pDB->exec(cmd);
|
|
|
|
|
} while (getline(ss, cmd));
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0; i < m_ScannerControlCfgs.size(); ++i) {
|
|
|
|
|
ScannerControlCfg* pcfg = m_ScannerControlCfgMap[i];
|
2024-06-27 10:56:50 +08:00
|
|
|
|
m_PowerCompensateDao->Find(pcfg->m_SeqNo , pcfg->m_ScanCfgWrapper.m_PowerCompensateCfg);
|
2024-03-19 17:45:12 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ScannerControlCfgDao::Add(ScannerControlCfg* cfg)
|
|
|
|
|
{
|
|
|
|
|
char buffer[1024];
|
|
|
|
|
string str = "INSERT INTO %s(%s,%s,%s,%s) VALUES()";
|
|
|
|
|
sprintf_s(buffer, sizeof(buffer), "INSERT INTO %s(%s,%s,%s,%s,%s,%s,%s) VALUES(%d,%d,%d,%d,'%s','%s',%d)",
|
|
|
|
|
ScannerControlCfg::TABLE_NAME.c_str(),
|
|
|
|
|
ScannerControlCfg::FIELD_SEQ_NO.c_str(),
|
|
|
|
|
ScannerControlCfg::FIELD_CONTROL_NO.c_str(),
|
|
|
|
|
ScannerControlCfg::FIELD_SERIAL_NO.c_str(),
|
|
|
|
|
ScannerControlCfg::FIELD_CONTROL_TYPE.c_str(),
|
|
|
|
|
ScannerControlCfg::FIELD_CARD_NAME.c_str(),
|
|
|
|
|
ScannerControlCfg::FIELD_CARD_IP.c_str(),
|
|
|
|
|
ScannerControlCfg::FIELD_IS_ENABLE.c_str(),
|
2024-06-27 10:56:50 +08:00
|
|
|
|
cfg->m_SeqNo , cfg->m_ControlNo , cfg->m_SerialNo , cfg->m_ControlType , cfg->m_CardName.c_str(), "", cfg->m_IsEnable ? 1 : 0);
|
2024-03-19 17:45:12 +08:00
|
|
|
|
m_pDB->exec(buffer);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ScannerControlCfgDao::Delete(int seq)
|
|
|
|
|
{
|
|
|
|
|
char buffer[1024];
|
|
|
|
|
sprintf_s(buffer, sizeof(buffer), "DELETE FROM %s WHERE %s=%d", ScannerControlCfg::TABLE_NAME.c_str(), ScannerControlCfg::FIELD_SEQ_NO.c_str(), seq);
|
|
|
|
|
m_pDB->exec(buffer);
|
|
|
|
|
|
|
|
|
|
for (vector<ScannerControlCfg*>::iterator it = m_ScannerControlCfgs.begin(); it != m_ScannerControlCfgs.end();) {
|
2024-06-27 10:56:50 +08:00
|
|
|
|
if ((*it)->m_SeqNo == seq)
|
2024-03-19 17:45:12 +08:00
|
|
|
|
{
|
|
|
|
|
it = m_ScannerControlCfgs.erase(it);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
it++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (vector<ScannerControlCfg*>::iterator it = m_MatchCfg.begin(); it != m_MatchCfg.end();) {
|
2024-06-27 10:56:50 +08:00
|
|
|
|
if ((*it)->m_SeqNo == seq)
|
2024-03-19 17:45:12 +08:00
|
|
|
|
{
|
|
|
|
|
it = m_MatchCfg.erase(it);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
it++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (std::map<int, ScannerControlCfg*>::iterator it = m_ScannerControlCfgMap.begin(); it != m_ScannerControlCfgMap.end();) {
|
|
|
|
|
if (it->first == seq) {
|
|
|
|
|
ScannerControlCfg* cfg = it->second;
|
|
|
|
|
delete cfg;
|
|
|
|
|
cfg = NULL;
|
|
|
|
|
it = m_ScannerControlCfgMap.erase(it);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
it++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ScannerControlCfgDao::Maintain(ScannerControlCfg* cfg)
|
|
|
|
|
{
|
2024-06-27 10:56:50 +08:00
|
|
|
|
m_ScanCfgDao->Find(cfg->m_SeqNo , cfg->m_ScanCfgWrapper);
|
|
|
|
|
m_PowerCompensateDao->Find(cfg->m_SeqNo , cfg->m_ScanCfgWrapper.m_PowerCompensateCfg);
|
2024-03-19 17:45:12 +08:00
|
|
|
|
if (cfg->m_ScanCfgWrapper.m_PowerCompensateCfg.m_pcs.empty()) {
|
|
|
|
|
for (int pcIndex = 5; pcIndex <= 100; pcIndex += 5) {
|
|
|
|
|
PowerCompensate* pc = new PowerCompensate();
|
2024-06-27 10:56:50 +08:00
|
|
|
|
pc->m_cno = cfg->m_SeqNo ;
|
2024-03-19 17:45:12 +08:00
|
|
|
|
pc->m_percent = pcIndex;
|
|
|
|
|
pc->m_value = 1.0f;
|
|
|
|
|
pc->m_value_min = 0.0f;
|
|
|
|
|
pc->m_value_max = 3.0f;
|
|
|
|
|
cfg->m_ScanCfgWrapper.m_PowerCompensateCfg.m_pcs.push_back(pc);
|
2024-06-27 10:56:50 +08:00
|
|
|
|
m_PowerCompensateDao->Add(cfg->m_SeqNo , pc);
|
2024-03-19 17:45:12 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2024-06-27 10:56:50 +08:00
|
|
|
|
m_TimePowerCompensateDao->Find(cfg->m_SeqNo , cfg->m_ScanCfgWrapper.m_TimePowerCompensateCfg);
|
|
|
|
|
m_FixPointDao->Find(cfg->m_SeqNo , cfg->m_FixPointWrapper);
|
2024-03-19 17:45:12 +08:00
|
|
|
|
}
|