|
|
@@ -11,6 +11,11 @@
|
|
|
#define TOTAL_COUNT 60//统计总数
|
|
|
|
|
|
|
|
|
+enum{
|
|
|
+ DB_MIN=0,
|
|
|
+ DB_MAX,
|
|
|
+};
|
|
|
+
|
|
|
typedef struct {
|
|
|
sqlite3 *db;
|
|
|
pthread_mutex_t mutex;
|
|
|
@@ -19,6 +24,8 @@ static sql_handle_t sqlHandle={0};
|
|
|
|
|
|
|
|
|
|
|
|
+static int overwrite_flag=0;
|
|
|
+
|
|
|
static int get_count(sqlite3 *db, char *table)
|
|
|
{
|
|
|
int r;
|
|
|
@@ -41,6 +48,34 @@ static int get_count(sqlite3 *db, char *table)
|
|
|
return count;
|
|
|
}
|
|
|
|
|
|
+static int get_key(sqlite3 *db, char *table, char *key, int mm)
|
|
|
+{
|
|
|
+ int r,id=-1;
|
|
|
+ char temp[1024];
|
|
|
+ sqlite3_stmt *stmt=NULL;
|
|
|
+
|
|
|
+ if(mm==DB_MIN) {
|
|
|
+ sprintf(temp, "SELECT MIN(%s) FROM %s;", key, table);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ sprintf(temp, "SELECT MAX(%s) FROM %s;", key, table);
|
|
|
+ }
|
|
|
+
|
|
|
+ r = sqlite3_prepare_v2(db, temp, -1, &stmt, 0);
|
|
|
+ if (r != SQLITE_OK) {
|
|
|
+ log_e("___get_extr_key, sqlite3_prepare_v2 failed, %s\n", sqlite3_errmsg(db));
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ while (sqlite3_step(stmt) == SQLITE_ROW) {
|
|
|
+ id = sqlite3_column_int(stmt, 0);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ sqlite3_finalize(stmt);
|
|
|
+
|
|
|
+ return id;
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
|
|
|
/// @brief 初始化SQLite数据库
|
|
|
@@ -332,19 +367,44 @@ int dev_insert_power_info(sqlite3 *db,GlobalPowerInfo* _globalPowerChnInfo,int*
|
|
|
int ncolumn = 0; //每条记录包含的字段数据
|
|
|
char** pResult = NULL; //用来指向sql执行结果的指针
|
|
|
char* err_msg=NULL;
|
|
|
+ char *table="Table_PowerInfo";
|
|
|
+ GlobalPowerInfo *pInfo=_globalPowerChnInfo;
|
|
|
+
|
|
|
+ if(overwrite_flag) {
|
|
|
+ sprintf(select_sql,"UPDATE %s SET product_Index=%d,product_id=%d,product_ch_id=%d,product_ch_status=%d,"
|
|
|
+ "product_ch_voltage=%.2f,product_ch_current=%.2f,product_ch_power=%.2f,product_ch_power_freq=%.2f,"
|
|
|
+ "product_ch_consumption=%.2f,product_ch_power_factor=%.2f,product_samp_time='%s' "
|
|
|
+ "WHERE product_Index=(SELECT MIN(product_Index) FROM %s);",
|
|
|
+ table,
|
|
|
+ *nIndex,
|
|
|
+ pInfo->product_id,
|
|
|
+ pInfo->product_ch_id,
|
|
|
+ pInfo->product_status,
|
|
|
+ pInfo->_power_info.voltage,
|
|
|
+ pInfo->_power_info.current,
|
|
|
+ pInfo->_power_info.power,
|
|
|
+ pInfo->_power_info.freq,
|
|
|
+ pInfo->_power_info.consumption,
|
|
|
+ pInfo->_power_info.factor,
|
|
|
+ pInfo->samp_time,
|
|
|
+ table
|
|
|
+ );
|
|
|
+ printf("power update!!!!\n");
|
|
|
+ }else {
|
|
|
|
|
|
- sprintf(select_sql,"INSERT INTO Table_PowerInfo VALUES ('%s',%d,%d,%d,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%d);",
|
|
|
- _globalPowerChnInfo->samp_time,
|
|
|
- _globalPowerChnInfo->product_id,
|
|
|
- _globalPowerChnInfo->product_ch_id,
|
|
|
- _globalPowerChnInfo->product_status,
|
|
|
- _globalPowerChnInfo->_power_info.voltage,
|
|
|
- _globalPowerChnInfo->_power_info.current,
|
|
|
- _globalPowerChnInfo->_power_info.power,
|
|
|
- _globalPowerChnInfo->_power_info.freq,
|
|
|
- _globalPowerChnInfo->_power_info.consumption,
|
|
|
- _globalPowerChnInfo->_power_info.factor,
|
|
|
- *nIndex);
|
|
|
+ sprintf(select_sql,"INSERT INTO Table_PowerInfo VALUES ('%s',%d,%d,%d,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%d);",
|
|
|
+ _globalPowerChnInfo->samp_time,
|
|
|
+ _globalPowerChnInfo->product_id,
|
|
|
+ _globalPowerChnInfo->product_ch_id,
|
|
|
+ _globalPowerChnInfo->product_status,
|
|
|
+ _globalPowerChnInfo->_power_info.voltage,
|
|
|
+ _globalPowerChnInfo->_power_info.current,
|
|
|
+ _globalPowerChnInfo->_power_info.power,
|
|
|
+ _globalPowerChnInfo->_power_info.freq,
|
|
|
+ _globalPowerChnInfo->_power_info.consumption,
|
|
|
+ _globalPowerChnInfo->_power_info.factor,
|
|
|
+ *nIndex);
|
|
|
+ }
|
|
|
(*nIndex)+=1;
|
|
|
// if(_globalPowerChnInfo->product_ch_id==0)
|
|
|
//log_d(select_sql);
|
|
|
@@ -2505,12 +2565,32 @@ int dev_insert_alarm_info(sqlite3* db,int product_id,int alarm_type,char* date_t
|
|
|
char** pResult = NULL; //用来指向sql执行结果的指针
|
|
|
char* err_msg=NULL;
|
|
|
char select_sql[1024] = {0};
|
|
|
+ char *table="Table_AlarmManage";
|
|
|
+ if(overwrite_flag) {
|
|
|
+ int alarmNumber=get_key(db, table, "alarmNumber", DB_MAX);
|
|
|
+ if(alarmNumber<0) {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ alarmNumber++;
|
|
|
|
|
|
- sprintf(select_sql,"INSERT INTO Table_AlarmManage (alarmDate,alarmType,product_id,alarmContent) VALUES ('%s',%d,%d,'%s');",
|
|
|
- date_time,
|
|
|
- alarm_type,
|
|
|
- product_id,
|
|
|
- alarm_content);
|
|
|
+ sprintf(select_sql,"UPDATE %s SET alarmNumber=%d,alarmDate='%s',alarmType=%d,product_id=%d,alarmContent='%s' "
|
|
|
+ "WHERE alarmNumber=(SELECT MIN(alarmNumber) FROM %s);",
|
|
|
+ table,
|
|
|
+ alarmNumber,
|
|
|
+ date_time,
|
|
|
+ alarm_type,
|
|
|
+ product_id,
|
|
|
+ alarm_content,
|
|
|
+ table);
|
|
|
+ printf("alarm update!!\n");
|
|
|
+ }else{
|
|
|
+
|
|
|
+ sprintf(select_sql,"INSERT INTO Table_AlarmManage (alarmDate,alarmType,product_id,alarmContent) VALUES ('%s',%d,%d,'%s');",
|
|
|
+ date_time,
|
|
|
+ alarm_type,
|
|
|
+ product_id,
|
|
|
+ alarm_content);
|
|
|
+ }
|
|
|
res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
|
|
|
if(res != SQLITE_OK) {
|
|
|
log_e("sqlite handle error: %s\n%s\n", err_msg,select_sql); sqlite3_free(err_msg);
|
|
|
@@ -4304,3 +4384,11 @@ int dev_sql_VACCUM(sqlite3 *db)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+int dev_sql_set_overwrite(int flag)
|
|
|
+{
|
|
|
+ overwrite_flag = flag;
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|