const mysql = require("../utils/mysql_db");
|
const dbhandle = require("../utils/handle_db");
|
const stringutil = require("../utils/stringUtil");
|
const httputil = require("../utils/httpcall");
|
const uuid = require("node-uuid");
|
const { forEach } = require("async");
|
const { array } = require("../utils/upload");
|
const { JSONParser } = require("formidable");
|
const covers = require("../kriging/caculate_cover");
|
const json = require("koa-json");
|
const { JsonWebTokenError } = require("jsonwebtoken");
|
|
|
module.exports = {
|
async getNoTokenData(params) {
|
let sql = `select * from t_sys_business_config where id_='${params.bid}'`;
|
let obj_ = await mysql.query(sql);
|
if(!obj_[0]) { return '';}
|
let sqls = dbhandle.create_sql(obj_[0]);
|
let result = stringutil.replaceParams(sqls,params);
|
let result_obj ;
|
if(result.status == 1) {
|
result_obj = await mysql.query_data(result.sql, obj_[0].musterdb);
|
}
|
if(obj_[0].parent_id) {
|
result_obj = this.getParentData(params,obj_[0].parent_id);
|
}
|
//result['result'] = result_obj;
|
let resultMap = {};
|
var rs_ass_map = {};
|
if(obj_[0].table_name == 'rs_associate') {
|
let rs_associate_str = JSON.stringify(result_obj[0]);
|
var rs_ass_array = JSON.parse(rs_associate_str);
|
for (let index = 0; index < rs_ass_array.length; index++) {
|
let rsname_ = rs_ass_array[index].rsname;
|
rs_ass_map[rsname_] = rs_ass_array[index];
|
let rs_index = rs_ass_map[rsname_].rsindex;
|
let rs_associate_str = JSON.stringify(result_obj[rs_index]);
|
resultMap[rsname_] = JSON.parse(rs_associate_str);
|
}
|
result['result'] = parseResults(rs_ass_map,resultMap);
|
} else {
|
result['result'] = result_obj;
|
}
|
delete result.sql_count;
|
delete result.sql;
|
return result;
|
},
|
async bdata(params) {
|
let sql = `select * from t_sys_business_config where id_='${params.bid}'`;
|
let obj_ = await mysql.query(sql);
|
if(!obj_[0]) { return '';}
|
let sqls = [];
|
if(!params.pagesize) {
|
sqls = dbhandle.create_sql(obj_[0]);
|
} else {
|
sqls = dbhandle.create_sql(obj_[0],params.pagesize,params.pageno);
|
}
|
let result = stringutil.replaceParams(sqls,params);
|
let retObj_ = [];
|
let retObj_counter_ = [];
|
if(result.status == 1) {
|
retObj_ = await mysql.query_data(result.sql, obj_[0].musterdb);
|
retObj_counter_ = await mysql.query_data(result.sql_count, obj_[0].musterdb);
|
}
|
if(obj_[0].parent_id) {
|
retObj_ = this.getParentData(params,obj_[0].parent_id);
|
}
|
result['result'] = retObj_;
|
result['counter'] = retObj_counter_[0];
|
delete result.sql_count;
|
delete result.sql;
|
return result;
|
},
|
async getParentData(params,parent_id) {
|
let sql = `select * from t_sys_business_config where id_='${parent_id}'`;
|
let obj_ = await mysql.query(sql);
|
if(!obj_[0]) { return '';}
|
let sqls = dbhandle.create_sql(obj_[0]);
|
let result = stringutil.replaceParams(sqls,params);
|
let result_obj ;
|
if(result.status == 1) {
|
result_obj = await mysql.query_data(result.sql, obj_[0].musterdb);
|
}
|
if(obj_[0].parent_id) {
|
result_obj = await this.getParentData(params,obj_[0].parent_id);
|
}
|
result['result'] = result_obj;
|
delete result.sql_count;
|
delete result.sql;
|
return result;
|
},
|
async syncData(params) {
|
let sql = `select * from t_sys_syscdata_config where id_='${params.bid}'`;
|
let obj_ = await mysql.query(sql);
|
if(!obj_[0]) { return '';}
|
let sqls = dbhandle.create_sync_sql(obj_[0]);
|
let result = stringutil.replaceSyncParams(sqls[0],params);
|
if(result.status == 1) {
|
result['result'] = await mysql.query_data(result.sql, obj_[0].musterdb);
|
}
|
var res = JSON.stringify(result['data']);
|
res = JSON.parse(res);
|
for (let rowindex in res) {
|
let row_ = res[rowindex];
|
let result_ = stringutil.replaceSyncParams(sqls[1],row_);
|
if(result_.status == 1) {
|
result['updateres'] = await mysql.query_data(result_.sql, obj_[0].clusterdb);
|
}
|
}
|
return result;
|
},
|
async recordMonitorOpt(params) {
|
let sql = `select * from t_sys_business_config where id_='${params.bid}'`;
|
let obj_ = await mysql.query(sql);
|
if(!obj_[0]) { return '';}
|
let sqls = dbhandle.create_sql(obj_[0]);
|
let result = stringutil.replaceParams(sqls,params);
|
let result_obj ;
|
if(result.status == 1) {
|
result_obj = await mysql.query_data(result.sql, obj_[0].musterdb);
|
}
|
if(obj_[0].parent_id) {
|
result_obj = await this.getParentData(params,obj_[0].parent_id);
|
}
|
result['result'] = result_obj;
|
// let send_params = JSON.stringify(result['data'].data[0][0]);
|
let send_params = result['data'].data[0][0];
|
dealRecordTrans(params,send_params,60000);
|
delete result.sql_count;
|
delete result.sql;
|
return result;
|
},
|
async calculateCoverRate(params) {
|
//'getAssessValue',"&frequencystr=",getQueryString("frequencystr"),"&wdate=",getQueryString("wdate"),"&whour=",getQueryString("whour")
|
params = {"bid":"getCoverFreqsByHour","frequencystr":"1557","wdate":"2021-08-17","whour":"21"};
|
let result = await this.dealData(params);
|
for (let index = 0; index < result.freqs.length; index++) {
|
let element = result.freqs[index];
|
console.log(element);
|
let lngs = [121.456344, 121.983627, 122.657344, 120.635689, 121.446533, 121.336544, 121.346534, 121.4268344, 121.983344, 121.763344]
|
let lats = [31.456344, 31.983627, 31.657344, 31.635689, 31.446533, 31.336544, 31.346534, 31.4268344, 31.983344, 31.763344]
|
let values = [1, 3, 5, 5, 3, 5, 3, 2, 2, 1]
|
for (let i = 0; i < element.assess.length; i++) {
|
lngs[i] = element.assess[i].regionLong;
|
lats[i] = element.assess[i].regionLat;
|
values[i] = element.assess[i].paramvalue;
|
}
|
let ret = covers.caculaterCoverRate(values, lngs, lats);
|
for( key in ret) {
|
let parameters = {bid:"insertCoverRate","areacode":key,"numerator":ret[key].numerator,"denominator":ret[key].denominator,"freq":element.frequency}
|
let r = await this.dealData(parameters);
|
}
|
|
}
|
// let url_ = 'http://localhost/k3/caculater.html?frequencystr=1557&wdate=2021-08-16&whour=21';
|
// await httputil.getHttpRequest_(url_);
|
|
return result;
|
},
|
async recordCoverRate(params) {
|
console.log(params);
|
|
return ;
|
},
|
async dealData(params) {
|
let sql = `select * from t_sys_business_config where id_='${params.bid}'`;
|
let obj_ = await mysql.query(sql);
|
if(!obj_[0]) { return '';}
|
let sqls = dbhandle.create_sql(obj_[0]);
|
let result = stringutil.replaceParams(sqls,params);
|
let result_obj ;
|
if(result.status == 1) {
|
result_obj = await mysql.query_data(result.sql, obj_[0].musterdb);
|
}
|
//result['result'] = result_obj;
|
let resultMap = {};
|
var rs_ass_map = {};
|
if(obj_[0].table_name == 'rs_associate') {
|
let rs_associate_str = JSON.stringify(result_obj[0]);
|
var rs_ass_array = JSON.parse(rs_associate_str);
|
for (let index = 0; index < rs_ass_array.length; index++) {
|
let rsname_ = rs_ass_array[index].rsname;
|
rs_ass_map[rsname_] = rs_ass_array[index];
|
let rs_index = rs_ass_map[rsname_].rsindex;
|
let rs_associate_str = JSON.stringify(result_obj[rs_index]);
|
resultMap[rsname_] = JSON.parse(rs_associate_str);
|
}
|
result['result'] = parseResults(rs_ass_map,resultMap);
|
} else {
|
result['result'] = result_obj;
|
}
|
return result['data']
|
},
|
async autoRecording(params) {
|
let sql = `select * from t_sys_business_config where id_='${params.bid}'`;
|
let obj_ = await mysql.query(sql);
|
if(!obj_[0]) { return '';}
|
let sqls = dbhandle.create_sql(obj_[0]);
|
let result = stringutil.replaceParams(sqls,params);
|
let result_obj ;
|
let recordTemp_id =0;
|
if(result.status == 1) {
|
let rs_ids = await mysql.query_data(result.sql, obj_[0].musterdb);
|
recordTemp_id = rs_ids[0][0].id;
|
}
|
if(obj_[0].parent_id) {
|
result_obj = await this.getParentData(params,obj_[0].parent_id);
|
}
|
let send_params = result_obj.data[0][0];
|
dealRecordTrans(params,send_params,60000);
|
|
return result;
|
},
|
|
};
|
|
function parseResults(rs_ass_map,resultMap) {
|
var ret_map = {};
|
for (const key in resultMap) {
|
var sub_rs_map = getSubRs(key,rs_ass_map);
|
if(sub_rs_map != null && rs_ass_map[key].parent == null) {
|
ret_map[key] = new Array();
|
let key_ = sub_rs_map != null ? sub_rs_map.rsname : null;
|
resultMap[key].forEach(function (p_row, p_index, p_array) {
|
p_row[key_] = setSubMaps(p_row,key_,rs_ass_map,resultMap);
|
ret_map[key].push(p_row);
|
// resultMap[key].splice(p_index,1);
|
});
|
} else {
|
// ret_map[key] = resultMap[key];
|
console.log('------------');
|
}
|
}
|
return ret_map;
|
}
|
|
function setSubMaps(p_row,sub_key,rs_ass_map,resultMap) {
|
let sub_arr = new Array();
|
let parentfield_ = rs_ass_map[sub_key].parentfield;
|
let subfield_ = rs_ass_map[sub_key].subfield;
|
var sub_rs_map = getSubRs(sub_key,rs_ass_map);
|
resultMap[sub_key].forEach(function (sub_row, sub_index, sub_array) {
|
if (sub_row[subfield_] == p_row[parentfield_]) {
|
if(sub_rs_map != null) {
|
let key_ = sub_rs_map != null ? sub_rs_map.rsname : null;
|
sub_row[key_] = setSubMaps(sub_row,key_,rs_ass_map,resultMap);
|
}
|
sub_arr.push(sub_row);
|
// sub_array.splice(sub_index,1);
|
}
|
});
|
return sub_arr;
|
}
|
|
function getSubRs(rsname,rs_ass_map) {
|
for (var key_ in rs_ass_map) {
|
if(rs_ass_map[key_].parent == rsname && key_ != rsname) {
|
return rs_ass_map[key_];
|
}
|
}
|
return null;
|
}
|
|
async function dealRecordTrans(params, send_params, millonSeconds) {
|
let responseBody = "";
|
if (send_params.frequencyValue) {//停止当前录音A
|
let url_ = 'http://wiibox.xicp.io:19868/FRP/TNewrecordtask.do?method=delete&key=123456&frequencyValue='
|
+ send_params.frequencyValue + '&monitorpointId=' + send_params.monitorpointId;
|
//&frequencyValue=1233&monitorpointId=22
|
responseBody = await httputil.getHttpRequest_(url_);
|
await httputil.wait(2000);
|
//下发新的录音指令B
|
url_ = 'http://wiibox.xicp.io:19868/FRP/TNewrecordtask.do?method=record&key=123456&frequencyValue='
|
+ params.frequency + '&monitorpointId=' + send_params.monitorpointId
|
+ '&recordTimeLength=1';
|
responseBody = await httputil.getHttpRequest_(url_);
|
await httputil.wait(millonSeconds);
|
await httputil.wait(2000);
|
//恢复录音A
|
if (send_params.frequencyValue && send_params.minutes && send_params.minutes > 0) {
|
url_ = 'http://wiibox.xicp.io:19868/FRP/TNewrecordtask.do?method=record&key=123456&frequencyValue='
|
+ send_params.frequencyValue + '&monitorpointId=' + send_params.monitorpointId
|
+ '&recordTimeLength=' + send_params.minutes;
|
responseBody = await httputil.getHttpRequest_(url_);
|
}
|
} else {
|
//下发新的录音指令B
|
let url_ = 'http://wiibox.xicp.io:19868/FRP/TNewrecordtask.do?method=record&key=123456&frequencyValue='
|
+ params.frequency + '&monitorpointId=' + send_params.monitorpointId
|
+ '&recordTimeLength=1';
|
responseBody = await httputil.getHttpRequest_(url_).then((result)=> {
|
console.log(result);
|
}).then((response) => {
|
httputil.wait(millonSeconds);
|
});
|
|
}
|
|
}
|